Test the inputs to the `make_path_array` function and return `None` if there is a problem. Now the make function accepts as input a `"String"` which must be the `Label` of an object in the document, so it is easier to create arrays quickly from the Python console. Add the new parameters to the make function, `align_mode`, `tan_vector`, `force_vertical`, and `vertical_vector`. These properties were added to the proxy object in 0db11da9cf. Add message deprecating the older call `makePathArray`. Adjust the GuiCommand accordingly. Now it uses the commit mechanism of the parent `Modifier` class so that the executed functions are recorded in the Python console. Clean up the `PathArray` class as well.
General
2020 May
These files define the "GuiCommands", that is, classes called in a graphical way through either buttons, menu entries, or context actions. They don't define the graphical interfaces themselves, but set up the interactions that allow running Python functions when graphical data is provided, for example, when points or objects are selected in the 3D view.
There is no need to check for the existence of the graphical interface (GUI)
when loading these classes as these classes only work with the GUI
so we must assume the interface is already available.
These command classes are normally loaded by InitGui.py
during the initialization of the workbench.
These tools were previously defined in the DraftTools.py module,
which was very large. Now DraftTools.py is an auxiliary module
which just loads the individual tool classes; therefore, importing
DraftTools.py in InitGui.py is sufficient to make all commands
of the Draft Workbench accessible to the system.
Then the toolbars can be defined with the command names.
The classes defined here internally use the public functions provided
by Draft.py, which are ultimately defined in the modules
under draftutils/, draftfunctions/, and draftmake/.
Those GUI commands that launch a "task panel" set up the respective widgets in two different ways typically.
- "Old" commands set up the task panel from the
DraftGui.pymodule. - "New" commands call the respective class from a module in
drafttaskpanels/, which itself loads a.uifile (created with Qt Designer) fromResources/ui/.
For more information see the thread: [Discussion] Splitting Draft tools into their own modules
To do
In the future each tool should have its own individual task panel file,
and its own .ui file.
This should be done by breaking DraftGui.py, creating many .ui files,
and making sure these GUI commands use them properly.