- fixed issue #454; trigger signals for Editor Toolbars lost after changing the layout
This commit is contained in:
parent
fa7b965f63
commit
11f494a1d1
|
@ -15,6 +15,7 @@ CHANGELOG for FlatCAM beta
|
|||
- fixed and issue where the Tab color that was changed in various states of the app was reverted back to a default color 'black'. Now it reverts to whatever color had before therefore being compatible with an usage of black theme
|
||||
- fixed bug that did not allow joining of any object to a Geometry object
|
||||
- working on solving the lost triggered signals for the Editor Toolbars buttons after changing the layout
|
||||
- fixed issue #454; trigger signals for Editor Toolbars lost after changing the layout
|
||||
|
||||
29.10.2020
|
||||
|
||||
|
|
|
@ -1530,7 +1530,13 @@ class AppExcEditor(QtCore.QObject):
|
|||
|
||||
self.e_ui = AppExcEditorUI(app=self.app)
|
||||
|
||||
# SIGNALS
|
||||
# #############################################################################################################
|
||||
# ######################### Excellon Editor Signals ###########################################################
|
||||
# #############################################################################################################
|
||||
|
||||
# connect the toolbar signals
|
||||
self.connect_exc_toolbar_signals()
|
||||
|
||||
self.e_ui.convert_slots_btn.clicked.connect(self.on_slots_conversion)
|
||||
self.app.ui.delete_drill_btn.triggered.connect(self.on_delete_btn)
|
||||
self.e_ui.name_entry.returnPressed.connect(self.on_name_activate)
|
||||
|
@ -1564,16 +1570,7 @@ class AppExcEditor(QtCore.QObject):
|
|||
self.exc_obj = None
|
||||
|
||||
# ## Toolbar events and properties
|
||||
self.tools_exc = {
|
||||
"drill_select": {"button": self.app.ui.select_drill_btn, "constructor": FCDrillSelect},
|
||||
"drill_add": {"button": self.app.ui.add_drill_btn, "constructor": FCDrillAdd},
|
||||
"drill_array": {"button": self.app.ui.add_drill_array_btn, "constructor": FCDrillArray},
|
||||
"slot_add": {"button": self.app.ui.add_slot_btn, "constructor": FCSlot},
|
||||
"slot_array": {"button": self.app.ui.add_slot_array_btn, "constructor": FCSlotArray},
|
||||
"drill_resize": {"button": self.app.ui.resize_drill_btn, "constructor": FCDrillResize},
|
||||
"drill_copy": {"button": self.app.ui.copy_drill_btn, "constructor": FCDrillCopy},
|
||||
"drill_move": {"button": self.app.ui.move_drill_btn, "constructor": FCDrillMove},
|
||||
}
|
||||
self.tools_exc = {}
|
||||
|
||||
# ## Data
|
||||
self.active_tool = None
|
||||
|
@ -1650,15 +1647,6 @@ class AppExcEditor(QtCore.QObject):
|
|||
|
||||
self.complete = False
|
||||
|
||||
def make_callback(thetool):
|
||||
def f():
|
||||
self.on_tool_select(thetool)
|
||||
return f
|
||||
|
||||
for tool in self.tools_exc:
|
||||
self.tools_exc[tool]["button"].triggered.connect(make_callback(tool)) # Events
|
||||
self.tools_exc[tool]["button"].setCheckable(True) # Checkable
|
||||
|
||||
self.options = {
|
||||
"global_gridx": 0.1,
|
||||
"global_gridy": 0.1,
|
||||
|
@ -1706,6 +1694,28 @@ class AppExcEditor(QtCore.QObject):
|
|||
self.editor_active = False
|
||||
log.debug("Initialization of the Excellon Editor is finished ...")
|
||||
|
||||
def make_callback(self, thetool):
|
||||
def f():
|
||||
self.on_tool_select(thetool)
|
||||
|
||||
return f
|
||||
|
||||
def connect_exc_toolbar_signals(self):
|
||||
self.tools_exc.update({
|
||||
"drill_select": {"button": self.app.ui.select_drill_btn, "constructor": FCDrillSelect},
|
||||
"drill_add": {"button": self.app.ui.add_drill_btn, "constructor": FCDrillAdd},
|
||||
"drill_array": {"button": self.app.ui.add_drill_array_btn, "constructor": FCDrillArray},
|
||||
"slot_add": {"button": self.app.ui.add_slot_btn, "constructor": FCSlot},
|
||||
"slot_array": {"button": self.app.ui.add_slot_array_btn, "constructor": FCSlotArray},
|
||||
"drill_resize": {"button": self.app.ui.resize_drill_btn, "constructor": FCDrillResize},
|
||||
"drill_copy": {"button": self.app.ui.copy_drill_btn, "constructor": FCDrillCopy},
|
||||
"drill_move": {"button": self.app.ui.move_drill_btn, "constructor": FCDrillMove},
|
||||
})
|
||||
|
||||
for tool in self.tools_exc:
|
||||
self.tools_exc[tool]["button"].triggered.connect(self.make_callback(tool)) # Events
|
||||
self.tools_exc[tool]["button"].setCheckable(True) # Checkable
|
||||
|
||||
def pool_recreated(self, pool):
|
||||
self.shapes.pool = pool
|
||||
self.tool_shape.pool = pool
|
||||
|
|
|
@ -3317,22 +3317,7 @@ class AppGeoEditor(QtCore.QObject):
|
|||
self.exit_editor_button.clicked.connect(lambda: self.app.editor2object())
|
||||
|
||||
# ## Toolbar events and properties
|
||||
self.tools = {
|
||||
"select": {"button": self.app.ui.geo_select_btn, "constructor": FCSelect},
|
||||
"arc": {"button": self.app.ui.geo_add_arc_btn, "constructor": FCArc},
|
||||
"circle": {"button": self.app.ui.geo_add_circle_btn, "constructor": FCCircle},
|
||||
"path": {"button": self.app.ui.geo_add_path_btn, "constructor": FCPath},
|
||||
"rectangle": {"button": self.app.ui.geo_add_rectangle_btn, "constructor": FCRectangle},
|
||||
"polygon": {"button": self.app.ui.geo_add_polygon_btn, "constructor": FCPolygon},
|
||||
"text": {"button": self.app.ui.geo_add_text_btn, "constructor": FCText},
|
||||
"buffer": {"button": self.app.ui.geo_add_buffer_btn, "constructor": FCBuffer},
|
||||
"paint": {"button": self.app.ui.geo_add_paint_btn, "constructor": FCPaint},
|
||||
"eraser": {"button": self.app.ui.geo_eraser_btn, "constructor": FCEraser},
|
||||
"move": {"button": self.app.ui.geo_move_btn, "constructor": FCMove},
|
||||
"transform": {"button": self.app.ui.geo_transform_btn, "constructor": FCTransform},
|
||||
"copy": {"button": self.app.ui.geo_copy_btn, "constructor": FCCopy},
|
||||
"explode": {"button": self.app.ui.geo_explode_btn, "constructor": FCExplode}
|
||||
}
|
||||
self.tools = {}
|
||||
|
||||
# # ## Data
|
||||
self.active_tool = None
|
||||
|
@ -3388,15 +3373,6 @@ class AppGeoEditor(QtCore.QObject):
|
|||
# this will flag if the Editor "tools" are launched from key shortcuts (True) or from menu toolbar (False)
|
||||
self.launched_from_shortcuts = False
|
||||
|
||||
def make_callback(thetool):
|
||||
def f():
|
||||
self.on_tool_select(thetool)
|
||||
return f
|
||||
|
||||
for tool in self.tools:
|
||||
self.tools[tool]["button"].triggered.connect(make_callback(tool)) # Events
|
||||
self.tools[tool]["button"].setCheckable(True) # Checkable
|
||||
|
||||
self.app.ui.grid_snap_btn.triggered.connect(self.on_grid_toggled)
|
||||
self.app.ui.corner_snap_btn.setCheckable(True)
|
||||
self.app.ui.corner_snap_btn.triggered.connect(lambda: self.toolbar_tool_toggle("corner_snap"))
|
||||
|
@ -3438,6 +3414,14 @@ class AppGeoEditor(QtCore.QObject):
|
|||
self.paint_tool = PaintOptionsTool(self.app, self)
|
||||
self.transform_tool = TransformEditorTool(self.app, self)
|
||||
|
||||
# #############################################################################################################
|
||||
# ####################### GEOMETRY Editor Signals #############################################################
|
||||
# #############################################################################################################
|
||||
|
||||
# connect the toolbar signals
|
||||
self.connect_geo_toolbar_signals()
|
||||
|
||||
# connect Geometry Editor Menu signals
|
||||
self.app.ui.geo_add_circle_menuitem.triggered.connect(lambda: self.select_tool('circle'))
|
||||
self.app.ui.geo_add_arc_menuitem.triggered.connect(lambda: self.select_tool('arc'))
|
||||
self.app.ui.geo_add_rectangle_menuitem.triggered.connect(lambda: self.select_tool('rectangle'))
|
||||
|
@ -3475,6 +3459,34 @@ class AppGeoEditor(QtCore.QObject):
|
|||
self.editor_active = False
|
||||
log.debug("Initialization of the Geometry Editor is finished ...")
|
||||
|
||||
def make_callback(self, thetool):
|
||||
def f():
|
||||
self.on_tool_select(thetool)
|
||||
|
||||
return f
|
||||
|
||||
def connect_geo_toolbar_signals(self):
|
||||
self.tools.update({
|
||||
"select": {"button": self.app.ui.geo_select_btn, "constructor": FCSelect},
|
||||
"arc": {"button": self.app.ui.geo_add_arc_btn, "constructor": FCArc},
|
||||
"circle": {"button": self.app.ui.geo_add_circle_btn, "constructor": FCCircle},
|
||||
"path": {"button": self.app.ui.geo_add_path_btn, "constructor": FCPath},
|
||||
"rectangle": {"button": self.app.ui.geo_add_rectangle_btn, "constructor": FCRectangle},
|
||||
"polygon": {"button": self.app.ui.geo_add_polygon_btn, "constructor": FCPolygon},
|
||||
"text": {"button": self.app.ui.geo_add_text_btn, "constructor": FCText},
|
||||
"buffer": {"button": self.app.ui.geo_add_buffer_btn, "constructor": FCBuffer},
|
||||
"paint": {"button": self.app.ui.geo_add_paint_btn, "constructor": FCPaint},
|
||||
"eraser": {"button": self.app.ui.geo_eraser_btn, "constructor": FCEraser},
|
||||
"move": {"button": self.app.ui.geo_move_btn, "constructor": FCMove},
|
||||
"transform": {"button": self.app.ui.geo_transform_btn, "constructor": FCTransform},
|
||||
"copy": {"button": self.app.ui.geo_copy_btn, "constructor": FCCopy},
|
||||
"explode": {"button": self.app.ui.geo_explode_btn, "constructor": FCExplode}
|
||||
})
|
||||
|
||||
for tool in self.tools:
|
||||
self.tools[tool]["button"].triggered.connect(self.make_callback(tool)) # Events
|
||||
self.tools[tool]["button"].setCheckable(True) # Checkable
|
||||
|
||||
def pool_recreated(self, pool):
|
||||
self.shapes.pool = pool
|
||||
self.tool_shape.pool = pool
|
||||
|
|
|
@ -2912,38 +2912,7 @@ class AppGerberEditor(QtCore.QObject):
|
|||
self.exit_editor_button.clicked.connect(lambda: self.app.editor2object())
|
||||
|
||||
# Toolbar events and properties
|
||||
self.tools_gerber = {
|
||||
"select": {"button": self.app.ui.grb_select_btn,
|
||||
"constructor": FCApertureSelect},
|
||||
"pad": {"button": self.app.ui.grb_add_pad_btn,
|
||||
"constructor": FCPad},
|
||||
"array": {"button": self.app.ui.add_pad_ar_btn,
|
||||
"constructor": FCPadArray},
|
||||
"track": {"button": self.app.ui.grb_add_track_btn,
|
||||
"constructor": FCTrack},
|
||||
"region": {"button": self.app.ui.grb_add_region_btn,
|
||||
"constructor": FCRegion},
|
||||
"poligonize": {"button": self.app.ui.grb_convert_poly_btn,
|
||||
"constructor": FCPoligonize},
|
||||
"semidisc": {"button": self.app.ui.grb_add_semidisc_btn,
|
||||
"constructor": FCSemiDisc},
|
||||
"disc": {"button": self.app.ui.grb_add_disc_btn,
|
||||
"constructor": FCDisc},
|
||||
"buffer": {"button": self.app.ui.aperture_buffer_btn,
|
||||
"constructor": FCBuffer},
|
||||
"scale": {"button": self.app.ui.aperture_scale_btn,
|
||||
"constructor": FCScale},
|
||||
"markarea": {"button": self.app.ui.aperture_markarea_btn,
|
||||
"constructor": FCMarkArea},
|
||||
"eraser": {"button": self.app.ui.aperture_eraser_btn,
|
||||
"constructor": FCEraser},
|
||||
"copy": {"button": self.app.ui.aperture_copy_btn,
|
||||
"constructor": FCApertureCopy},
|
||||
"transform": {"button": self.app.ui.grb_transform_btn,
|
||||
"constructor": FCTransform},
|
||||
"move": {"button": self.app.ui.aperture_move_btn,
|
||||
"constructor": FCApertureMove},
|
||||
}
|
||||
self.tools_gerber = {}
|
||||
|
||||
# # ## Data
|
||||
self.active_tool = None
|
||||
|
@ -3034,15 +3003,6 @@ class AppGerberEditor(QtCore.QObject):
|
|||
def_tol_val = float(self.app.defaults["global_tolerance"])
|
||||
self.tolerance = def_tol_val if self.units == 'MM'else def_tol_val / 20
|
||||
|
||||
def make_callback(the_tool):
|
||||
def f():
|
||||
self.on_tool_select(the_tool)
|
||||
return f
|
||||
|
||||
for tool in self.tools_gerber:
|
||||
self.tools_gerber[tool]["button"].triggered.connect(make_callback(tool)) # Events
|
||||
self.tools_gerber[tool]["button"].setCheckable(True)
|
||||
|
||||
self.options = {
|
||||
"global_gridx": 0.1,
|
||||
"global_gridy": 0.1,
|
||||
|
@ -3082,7 +3042,13 @@ class AppGerberEditor(QtCore.QObject):
|
|||
|
||||
self.transform_tool = TransformEditorTool(self.app, self)
|
||||
|
||||
# Signals
|
||||
# #############################################################################################################
|
||||
# ######################### Gerber Editor Signals #############################################################
|
||||
# #############################################################################################################
|
||||
|
||||
# connect the toolbar signals
|
||||
self.connect_grb_toolbar_signals()
|
||||
|
||||
self.buffer_button.clicked.connect(self.on_buffer)
|
||||
self.scale_button.clicked.connect(self.on_scale)
|
||||
|
||||
|
@ -3136,6 +3102,35 @@ class AppGerberEditor(QtCore.QObject):
|
|||
self.set_ui()
|
||||
log.debug("Initialization of the Gerber Editor is finished ...")
|
||||
|
||||
def make_callback(self, the_tool):
|
||||
def f():
|
||||
self.on_tool_select(the_tool)
|
||||
|
||||
return f
|
||||
|
||||
def connect_grb_toolbar_signals(self):
|
||||
self.tools_gerber.update({
|
||||
"select": {"button": self.app.ui.grb_select_btn, "constructor": FCApertureSelect},
|
||||
"pad": {"button": self.app.ui.grb_add_pad_btn, "constructor": FCPad},
|
||||
"array": {"button": self.app.ui.add_pad_ar_btn, "constructor": FCPadArray},
|
||||
"track": {"button": self.app.ui.grb_add_track_btn, "constructor": FCTrack},
|
||||
"region": {"button": self.app.ui.grb_add_region_btn, "constructor": FCRegion},
|
||||
"poligonize": {"button": self.app.ui.grb_convert_poly_btn, "constructor": FCPoligonize},
|
||||
"semidisc": {"button": self.app.ui.grb_add_semidisc_btn, "constructor": FCSemiDisc},
|
||||
"disc": {"button": self.app.ui.grb_add_disc_btn, "constructor": FCDisc},
|
||||
"buffer": {"button": self.app.ui.aperture_buffer_btn, "constructor": FCBuffer},
|
||||
"scale": {"button": self.app.ui.aperture_scale_btn, "constructor": FCScale},
|
||||
"markarea": {"button": self.app.ui.aperture_markarea_btn, "constructor": FCMarkArea},
|
||||
"eraser": {"button": self.app.ui.aperture_eraser_btn, "constructor": FCEraser},
|
||||
"copy": {"button": self.app.ui.aperture_copy_btn, "constructor": FCApertureCopy},
|
||||
"transform": {"button": self.app.ui.grb_transform_btn, "constructor": FCTransform},
|
||||
"move": {"button": self.app.ui.aperture_move_btn, "constructor": FCApertureMove},
|
||||
})
|
||||
|
||||
for tool in self.tools_gerber:
|
||||
self.tools_gerber[tool]["button"].triggered.connect(self.make_callback(tool)) # Events
|
||||
self.tools_gerber[tool]["button"].setCheckable(True)
|
||||
|
||||
def pool_recreated(self, pool):
|
||||
self.shapes.pool = pool
|
||||
self.tool_shape.pool = pool
|
||||
|
|
|
@ -2131,7 +2131,7 @@ class MainGUI(QtWidgets.QMainWindow):
|
|||
self.app.log.debug(" -> Add actions to new Toolbars")
|
||||
|
||||
# ########################################################################
|
||||
# ## File Toolbar # ##
|
||||
# ##################### File Toolbar #####################################
|
||||
# ########################################################################
|
||||
self.file_open_gerber_btn = self.toolbarfile.addAction(
|
||||
QtGui.QIcon(self.app.resource_location + '/flatcam_icon32.png'), _("Open Gerber"))
|
||||
|
@ -2144,7 +2144,7 @@ class MainGUI(QtWidgets.QMainWindow):
|
|||
QtGui.QIcon(self.app.resource_location + '/project_save32.png'), _("Save project"))
|
||||
|
||||
# ########################################################################
|
||||
# ## Edit Toolbar # ##
|
||||
# ######################### Edit Toolbar #################################
|
||||
# ########################################################################
|
||||
self.editgeo_btn = self.toolbaredit.addAction(
|
||||
QtGui.QIcon(self.app.resource_location + '/edit32.png'), _("Editor"))
|
||||
|
@ -2258,7 +2258,7 @@ class MainGUI(QtWidgets.QMainWindow):
|
|||
QtGui.QIcon(self.app.resource_location + '/etch_32.png'), _("Etch Compensation Tool"))
|
||||
|
||||
# ########################################################################
|
||||
# ## Excellon Editor Toolbar # ##
|
||||
# ################### Excellon Editor Toolbar ############################
|
||||
# ########################################################################
|
||||
self.select_drill_btn = self.exc_edit_toolbar.addAction(
|
||||
QtGui.QIcon(self.app.resource_location + '/pointer32.png'), _("Select"))
|
||||
|
@ -2284,7 +2284,7 @@ class MainGUI(QtWidgets.QMainWindow):
|
|||
QtGui.QIcon(self.app.resource_location + '/move32.png'), _("Move Drill"))
|
||||
|
||||
# ########################################################################
|
||||
# ## Geometry Editor Toolbar # ##
|
||||
# ################### Geometry Editor Toolbar ############################
|
||||
# ########################################################################
|
||||
self.geo_select_btn = self.geo_edit_toolbar.addAction(
|
||||
QtGui.QIcon(self.app.resource_location + '/pointer32.png'), _("Select 'Esc'"))
|
||||
|
@ -2336,7 +2336,7 @@ class MainGUI(QtWidgets.QMainWindow):
|
|||
QtGui.QIcon(self.app.resource_location + '/move32.png'), _("Move Objects"))
|
||||
|
||||
# ########################################################################
|
||||
# ## Gerber Editor Toolbar # ##
|
||||
# ################### Gerber Editor Toolbar ##############################
|
||||
# ########################################################################
|
||||
self.grb_select_btn = self.grb_edit_toolbar.addAction(
|
||||
QtGui.QIcon(self.app.resource_location + '/pointer32.png'), _("Select"))
|
||||
|
|
28
app_Main.py
28
app_Main.py
|
@ -2136,23 +2136,17 @@ class App(QtCore.QObject):
|
|||
self.ui.corners_tool_btn.triggered.connect(lambda: self.corners_tool.run(toggle=True))
|
||||
self.ui.etch_btn.triggered.connect(lambda: self.etch_tool.run(toggle=True))
|
||||
|
||||
def connect_editors_signals_to_toolbar(self):
|
||||
def connect_editors_toolbar_signals(self):
|
||||
self.log.debug(" -> Connecting Editors Toolbar Signals")
|
||||
|
||||
# Geometry Editor Toolbar Signals
|
||||
for tool in self.geo_editor.tools:
|
||||
self.geo_editor.tools[tool]["button"].triggered.connect(lambda: self.geo_editor.on_tool_select(tool))
|
||||
self.geo_editor.tools[tool]["button"].setCheckable(True)
|
||||
self.geo_editor.connect_geo_toolbar_signals()
|
||||
|
||||
# Gerber Editor Toolbar Signals
|
||||
for tool in self.grb_editor.tools_gerber:
|
||||
self.grb_editor.tools_gerber[tool]["button"].triggered.connect(lambda: self.grb_editor.on_tool_select(tool))
|
||||
self.grb_editor.tools_gerber[tool]["button"].setCheckable(True)
|
||||
self.grb_editor.connect_grb_toolbar_signals()
|
||||
|
||||
# Excellon Editor Toolbar Signals
|
||||
for tool in self.exc_editor.tools_exc:
|
||||
self.exc_editor.tools_exc[tool]["button"].triggered.connect(lambda: self.exc_editor.on_tool_select(tool))
|
||||
self.exc_editor.tools_exc[tool]["button"].setCheckable(True)
|
||||
self.exc_editor.connect_exc_toolbar_signals()
|
||||
|
||||
def connect_toolbar_signals(self):
|
||||
"""
|
||||
|
@ -2204,12 +2198,6 @@ class App(QtCore.QObject):
|
|||
except Exception as err:
|
||||
self.log.debug("App.connect_toolbar_signals() tools signals -> %s" % str(err))
|
||||
|
||||
# Editor Toolbars Signals
|
||||
try:
|
||||
self.connect_editors_signals_to_toolbar()
|
||||
except Exception as err:
|
||||
self.log.debug("App.connect_toolbar_signals() editor signals -> %s" % str(err))
|
||||
|
||||
def on_layout(self, index=None, lay=None):
|
||||
"""
|
||||
Set the toolbars layout (location)
|
||||
|
@ -2268,7 +2256,6 @@ class App(QtCore.QObject):
|
|||
self.ui.addToolBar(Qt.LeftToolBarArea, self.ui.toolbartools)
|
||||
|
||||
self.ui.geo_edit_toolbar = QtWidgets.QToolBar('Geometry Editor Toolbar')
|
||||
# self.ui.geo_edit_toolbar.setVisible(False)
|
||||
self.ui.geo_edit_toolbar.setObjectName('GeoEditor_TB')
|
||||
self.ui.addToolBar(Qt.RightToolBarArea, self.ui.geo_edit_toolbar)
|
||||
|
||||
|
@ -2279,7 +2266,6 @@ class App(QtCore.QObject):
|
|||
self.ui.addToolBarBreak(area=Qt.RightToolBarArea)
|
||||
|
||||
self.ui.grb_edit_toolbar = QtWidgets.QToolBar('Gerber Editor Toolbar')
|
||||
# self.ui.grb_edit_toolbar.setVisible(False)
|
||||
self.ui.grb_edit_toolbar.setObjectName('GrbEditor_TB')
|
||||
self.ui.addToolBar(Qt.RightToolBarArea, self.ui.grb_edit_toolbar)
|
||||
|
||||
|
@ -2343,6 +2329,12 @@ class App(QtCore.QObject):
|
|||
self.log.debug(
|
||||
"App.on_layout() - connect toolbar signals -> %s" % str(e))
|
||||
|
||||
# Editor Toolbars Signals
|
||||
try:
|
||||
self.connect_editors_toolbar_signals()
|
||||
except Exception as err:
|
||||
self.log.debug("App.on_layout() - connect editor signals -> %s" % str(err))
|
||||
|
||||
self.ui.grid_snap_btn.setChecked(True)
|
||||
|
||||
self.ui.corner_snap_btn.setVisible(False)
|
||||
|
|
Loading…
Reference in New Issue