eed7e3d620
- added a new Tcl Command named SetPath which will set a path to be used by the Tcl commands. Once set will serve as a fallback path in case that the files fail to be opened first time. It will be persistent, saved in preferences. - added the GUI for the new Open Example in the FIle -> Scripting menu. - I am modifying all the open ... handlers to add a parameter that will flag if the method was launched from Tcl Shell. This way if the method will fail to open the filename (which include the path) it will try to open from a set fallback path. - fixed issue #406, bug introduced recently (leftover changes). - modified the ImportSVG Tcl command name to OpenSVG (open_svg alias) - added a new Tcl command named OpenDXF (open_dxf alias) - fixed some errors in Scripting features - added a new Tcl command named GetPath as a convenient way to get the current default path stored in App.defaults['global_tcl_path']
114 lines
4.1 KiB
Python
114 lines
4.1 KiB
Python
import pkgutil
|
|
import sys
|
|
|
|
# allowed command modules (please append them alphabetically ordered)
|
|
import tclCommands.TclCommandAddCircle
|
|
import tclCommands.TclCommandAddPolygon
|
|
import tclCommands.TclCommandAddPolyline
|
|
import tclCommands.TclCommandAddRectangle
|
|
import tclCommands.TclCommandAlignDrill
|
|
import tclCommands.TclCommandAlignDrillGrid
|
|
import tclCommands.TclCommandBbox
|
|
import tclCommands.TclCommandBounds
|
|
import tclCommands.TclCommandClearShell
|
|
import tclCommands.TclCommandCncjob
|
|
import tclCommands.TclCommandCopperClear
|
|
import tclCommands.TclCommandCutout
|
|
import tclCommands.TclCommandDelete
|
|
import tclCommands.TclCommandDrillcncjob
|
|
import tclCommands.TclCommandExportDXF
|
|
import tclCommands.TclCommandExportExcellon
|
|
import tclCommands.TclCommandExportGerber
|
|
import tclCommands.TclCommandExportGcode
|
|
import tclCommands.TclCommandExportSVG
|
|
import tclCommands.TclCommandExteriors
|
|
import tclCommands.TclCommandGeoCutout
|
|
import tclCommands.TclCommandGeoUnion
|
|
import tclCommands.TclCommandGetNames
|
|
import tclCommands.TclCommandGetPath
|
|
import tclCommands.TclCommandGetSys
|
|
import tclCommands.TclCommandHelp
|
|
import tclCommands.TclCommandInteriors
|
|
import tclCommands.TclCommandIsolate
|
|
import tclCommands.TclCommandFollow
|
|
import tclCommands.TclCommandJoinExcellon
|
|
import tclCommands.TclCommandJoinGeometry
|
|
import tclCommands.TclCommandListSys
|
|
import tclCommands.TclCommandMillDrills
|
|
import tclCommands.TclCommandMillSlots
|
|
import tclCommands.TclCommandMirror
|
|
import tclCommands.TclCommandNew
|
|
import tclCommands.TclCommandNregions
|
|
import tclCommands.TclCommandNewExcellon
|
|
import tclCommands.TclCommandNewGeometry
|
|
import tclCommands.TclCommandNewGerber
|
|
import tclCommands.TclCommandOffset
|
|
import tclCommands.TclCommandOpenDXF
|
|
import tclCommands.TclCommandOpenExcellon
|
|
import tclCommands.TclCommandOpenGCode
|
|
import tclCommands.TclCommandOpenGerber
|
|
import tclCommands.TclCommandOpenProject
|
|
import tclCommands.TclCommandOpenSVG
|
|
import tclCommands.TclCommandOptions
|
|
import tclCommands.TclCommandPaint
|
|
import tclCommands.TclCommandPanelize
|
|
import tclCommands.TclCommandPlotAll
|
|
import tclCommands.TclCommandPlotObjects
|
|
import tclCommands.TclCommandQuit
|
|
import tclCommands.TclCommandSaveProject
|
|
import tclCommands.TclCommandSaveSys
|
|
import tclCommands.TclCommandScale
|
|
import tclCommands.TclCommandSetActive
|
|
import tclCommands.TclCommandSetOrigin
|
|
import tclCommands.TclCommandSetPath
|
|
import tclCommands.TclCommandSetSys
|
|
import tclCommands.TclCommandSkew
|
|
import tclCommands.TclCommandSubtractPoly
|
|
import tclCommands.TclCommandSubtractRectangle
|
|
import tclCommands.TclCommandVersion
|
|
import tclCommands.TclCommandWriteGCode
|
|
|
|
|
|
__all__ = []
|
|
|
|
for loader, name, is_pkg in pkgutil.walk_packages(__path__):
|
|
module = loader.find_module(name).load_module(name)
|
|
__all__.append(name)
|
|
|
|
|
|
def register_all_commands(app, commands):
|
|
"""
|
|
Static method which registers all known commands.
|
|
|
|
Command should be for now in directory tclCommands and module should start with TCLCommand
|
|
Class have to follow same name as module.
|
|
|
|
we need import all modules in top section:
|
|
import tclCommands.TclCommandExteriors
|
|
at this stage we can include only wanted commands with this, auto loading may be implemented in future
|
|
I have no enough knowledge about python's anatomy. Would be nice to include all classes which are descendant etc.
|
|
|
|
:param app: FlatCAMApp
|
|
:param commands: List of commands being updated
|
|
:return: None
|
|
"""
|
|
|
|
tcl_modules = {k: v for k, v in list(sys.modules.items()) if k.startswith('tclCommands.TclCommand')}
|
|
|
|
for key, mod in list(tcl_modules.items()):
|
|
if key != 'tclCommands.TclCommand':
|
|
class_name = key.split('.')[1]
|
|
class_type = getattr(mod, class_name)
|
|
command_instance = class_type(app)
|
|
|
|
for alias in command_instance.aliases:
|
|
try:
|
|
description = command_instance.description
|
|
except AttributeError:
|
|
description = ''
|
|
commands[alias] = {
|
|
'fcn': command_instance.execute_wrapper,
|
|
'help': command_instance.get_decorated_help(),
|
|
'description': description
|
|
}
|