| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- # ########################################################## ##
- # FlatCAM: 2D Post-processing for Manufacturing #
- # http://flatcam.org #
- # Author: Juan Pablo Caram (c) #
- # Date: 2/5/2014 #
- # MIT Licence #
- # ########################################################## ##
- from PyQt5 import QtGui, QtCore, QtWidgets, QtWidgets
- from PyQt5.QtCore import Qt
- class FlatCAMTool(QtWidgets.QWidget):
- toolName = "FlatCAM Generic Tool"
- def __init__(self, app, parent=None):
- """
- :param app: The application this tool will run in.
- :type app: App
- :param parent: Qt Parent
- :return: FlatCAMTool
- """
- QtWidgets.QWidget.__init__(self, parent)
- # self.setSizePolicy(QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Maximum)
- self.layout = QtWidgets.QVBoxLayout()
- self.setLayout(self.layout)
- self.app = app
- self.menuAction = None
- def install(self, icon=None, separator=None, shortcut=None, **kwargs):
- before = None
- # 'pos' is the menu where the Action has to be installed
- # if no 'pos' kwarg is provided then by default our Action will be installed in the menutool
- # as it previously was
- if 'pos' in kwargs:
- pos = kwargs['pos']
- else:
- pos = self.app.ui.menutool
- # 'before' is the Action in the menu stated by 'pos' kwarg, before which we want our Action to be installed
- # if 'before' kwarg is not provided, by default our Action will be added in the last place.
- if 'before' in kwargs:
- before = (kwargs['before'])
- # create the new Action
- self.menuAction = QtWidgets.QAction(self)
- # if provided, add an icon to this Action
- if icon is not None:
- self.menuAction.setIcon(icon)
- # set the text name of the Action, which will be displayed in the menu
- if shortcut is None:
- self.menuAction.setText(self.toolName)
- else:
- self.menuAction.setText(self.toolName + '\t%s' % shortcut)
- # add a ToolTip to the new Action
- # self.menuAction.setToolTip(self.toolTip) # currently not available
- # insert the action in the position specified by 'before' and 'pos' kwargs
- pos.insertAction(before, self.menuAction)
- # if separator parameter is True add a Separator after the newly created Action
- if separator is True:
- pos.addSeparator()
- self.menuAction.triggered.connect(self.run)
- def run(self):
- if self.app.tool_tab_locked is True:
- return
- # Remove anything else in the GUI
- self.app.ui.tool_scroll_area.takeWidget()
- # Put ourself in the GUI
- self.app.ui.tool_scroll_area.setWidget(self)
- # Switch notebook to tool page
- self.app.ui.notebook.setCurrentWidget(self.app.ui.tool_tab)
- # Set the tool name as the widget object name
- self.app.ui.tool_scroll_area.widget().setObjectName(self.toolName)
- self.show()
|