| | |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | """Provide the grid observer for the Draft and BIM workbenches.""" |
| |
|
| | import FreeCAD |
| |
|
| |
|
| | |
| | |
| | |
| | if FreeCAD.GuiUp: |
| | import FreeCADGui |
| | from PySide import QtWidgets |
| | from draftutils import gui_utils |
| | from draftutils.todo import ToDo |
| |
|
| | def _update_grid_gui(): |
| | """Update function executed by the callback to refresh the Toggle Grid |
| | button state on all toolbars and menus. |
| | """ |
| |
|
| | try: |
| | |
| | view = gui_utils.get_3d_view() |
| |
|
| | |
| | if view is None: |
| | _set_grid_button_state(False) |
| | return |
| |
|
| | |
| |
|
| | |
| | |
| | |
| | view_idx = FreeCADGui.Snapper.trackers[0].index(view) |
| | grid = FreeCADGui.Snapper.trackers[1][view_idx] |
| | if grid.Visible: |
| | _set_grid_button_state(True) |
| | else: |
| | _set_grid_button_state(False) |
| |
|
| | except Exception: |
| | pass |
| |
|
| | def _view_observer_callback(): |
| | """Callback function to update the Toggle Grid button. |
| | |
| | The update will only happen if either the Draft or BIM |
| | workbenches are active. |
| | """ |
| |
|
| | ToDo.delay(_update_grid_gui, None) |
| |
|
| | _view_observer_active = False |
| |
|
| | def _view_observer_setup(): |
| | """Start or stop the grid observer. |
| | |
| | Start: it is intended to happen when either the Draft or BIM workbench |
| | are activated. The _view_observer_callback is connected to Qt's |
| | subWindowActivated signal. The MDI area emits the subWindowActivated() |
| | signal when the active window changes. |
| | |
| | Stop: This happens when either the Draft or BIM workbenches are |
| | deactivated and is the reverse of the start operation. |
| | """ |
| |
|
| | mw = FreeCADGui.getMainWindow() |
| | mdi = mw.findChild(QtWidgets.QMdiArea) |
| | global _view_observer_active |
| | if not _view_observer_active: |
| | |
| | mdi.subWindowActivated.connect(_view_observer_callback) |
| | _view_observer_active = True |
| | |
| | _view_observer_callback() |
| | else: |
| | mdi.subWindowActivated.disconnect(_view_observer_callback) |
| | _view_observer_active = False |
| |
|
| | def _set_grid_button_state(button_check): |
| | """Sets the checked state of the Draft_ToggleGrid command. |
| | This is then reflected on the associated "Toggle Grid" buttons of every |
| | toolbar and menu. |
| | |
| | Args: |
| | button_check (bool): if True, check the grid button. |
| | |
| | Returns: |
| | None |
| | """ |
| |
|
| | action = FreeCADGui.Command.get("Draft_ToggleGrid").getAction()[0] |
| | action.setCheckable(True) |
| | action.setChecked(button_check) |
| |
|