예제 #1
0
    def __init__(self, cmdargs, text=None, icon=None, parent=None, interactive=True):
        '''creator

        :param cmdargs: (list<str> or str) A list of strings to be passed to
                        :meth:`subprocess.Popen` for launching the external
                        application. It can also be a single string containing a
                        command. See :meth:`setCmdArgs`
        :param text: (str) see :class:`Qt.QAction`
        :param icon: (QIcon or any other object that can be passed to QIcon creator) see :class:`Qt.QAction`
        :param parent: (QObject) The parent object
        '''
        if isinstance(cmdargs, (basestring, Qt.QString)):
            import shlex
            cmdargs = shlex.split(str(cmdargs))
        self.path = os.path.realpath(cmdargs and cmdargs[0] or '')
        if text is None:
            text = os.path.basename(cmdargs and cmdargs[0] or '')
        if icon is None:
            icon = Qt.QIcon.fromTheme(self.DEFAULT_ICON_NAME)
        elif isinstance(icon, basestring):
            tmp = Qt.QIcon.fromTheme(icon)
            if not tmp.isNull():
                icon = tmp

        Qt.QAction.__init__(self, Qt.QIcon(icon), text, parent)
        BaseConfigurableClass.__init__(self)
        self.interactive = interactive
        self._process = []
        self.setCmdArgs(cmdargs)
        self.triggered.connect(self.actionTriggered)
        self.setToolTip("Launches %s (external application)" % text)
        self.registerConfigProperty(self.cmdArgs, self.setCmdArgs, 'cmdArgs')
예제 #2
0
    def __init__(self,
                 parent=None,
                 period=0,
                 text="Forced read",
                 autoconnect=True):
        BaseConfigurableClass.__init__(self)
        QtGui.QWidgetAction.__init__(self, parent)

        # defining the widget
        self._w = QtGui.QWidget()
        self._w.setLayout(QtGui.QHBoxLayout())
        tt = "Period between forced readings.\nSet to 0 to disable"
        self._w.setToolTip(tt)
        self._label = QtGui.QLabel(text)
        self._w.layout().addWidget(self._label)
        self._sb = QtGui.QSpinBox()
        self._w.layout().addWidget(self._sb)
        self._sb.setRange(0, 604800000)
        self._sb.setValue(period)
        self._sb.setSingleStep(500)
        self._sb.setSuffix(" ms")
        self._sb.setSpecialValueText("disabled")
        self._autoconnect = autoconnect

        self.setDefaultWidget(self._w)

        # register config properties
        self.registerConfigProperty(self.period, self.setPeriod, "period")
        self.registerConfigProperty(self.autoconnect, self.setAutoconnect,
                                    "autoconnect")

        # internal conections
        self._sb.valueChanged[int].connect(self._onValueChanged)
예제 #3
0
 def __init__(self, parent):
     Qt.QDialog.__init__(self, parent)
     BaseConfigurableClass.__init__(self)
     self._tabwidget = Qt.QTabWidget()
     self.setModal(True)
     self.externalAppsPage = None
     self.setLayout(Qt.QVBoxLayout())
     self.layout().addWidget(self._tabwidget)
예제 #4
0
 def __init__(self, manager, scrollFactor=0.2, toolbar_id=None):
     ToggleTool.__init__(self, manager, title='Auto Scroll', icon=None,
             tip='Force X scale to always show the last value',
             toolbar_id=toolbar_id)
     BaseConfigurableClass.__init__(self)
     self.scrollFactor = scrollFactor
     self.registerConfigProperty(self.action.isChecked,
                                 self.setChecked,
                                 'actionChecked')
예제 #5
0
파일: tools.py 프로젝트: cmft/taurus
 def __init__(self, manager, scrollFactor=0.2, toolbar_id=None):
     ToggleTool.__init__(self, manager, title='Auto Scroll', icon=None,
             tip='Force X scale to always show the last value',
             toolbar_id=toolbar_id)
     BaseConfigurableClass.__init__(self)
     self.scrollFactor = scrollFactor
     self.registerConfigProperty(self.action.isChecked,
                                 self.action.setChecked,
                                 'actionChecked')
예제 #6
0
파일: tools.py 프로젝트: vallsv/taurus
 def __init__(self, manager, axis, toolbar_id=None):
     ToggleTool.__init__(self,
                         manager,
                         title='Auto-scale %s axis' % axis,
                         icon=None,
                         tip='Auto-scale %s axis when data changes',
                         toolbar_id=toolbar_id)
     BaseConfigurableClass.__init__(self)
     self.axis = axis
     self.registerConfigProperty(self.action.isChecked, self.setChecked,
                                 'actionChecked')
예제 #7
0
 def __init__(self, parent=None, **kwargs):
     BaseConfigurableClass.__init__(self)
     QtGui.QWidgetAction.__init__(self, parent)
     self._cb = QtGui.QCheckBox()
     self._cb.setText("Show legend")
     self.setDefaultWidget(self._cb)
     self.registerConfigProperty(
         self._cb.isChecked, self._cb.setChecked, "checked"
     )
     # TODO: register config prop for legend position
     self._cb.toggled.connect(self._onToggled)
     self._legend = None
     self._legend_kwargs = kwargs
예제 #8
0
    def __init__(self, parent=None):
        BaseConfigurableClass.__init__(self)
        Qt.QWidgetAction.__init__(self, parent)
        self._cb = Qt.QCheckBox()
        self._cb.setText("Data Inspector")
        self._cb.toggled.connect(self._onToggled)
        self.setDefaultWidget(self._cb)

        self.plot_item = None
        self.enable = False
        self.data_inspector = DataInspectorLine()

        self.registerConfigProperty(self.isChecked, self.setChecked, "checked")
예제 #9
0
    def __init__(self, parent=None, itemClass=None, showX=True):
        BaseConfigurableClass.__init__(self)
        Qt.QAction.__init__(self, "Model selection", parent)
        self.triggered.connect(self._onTriggered)
        self.plot_item = None
        self.legend = None
        self._curveColors = None
        if itemClass is None:
            itemClass = TaurusPlotDataItem
        self.itemClass = itemClass
        self._showX = showX

        self.registerConfigProperty(self._getCurveInfo,
                                    self._restoreCurvesFromInfo, "CurveInfo")
예제 #10
0
    def __init__(self, parent=None, **kwargs):
        if Qt.QT_VERSION < 0x050000:
            # Workaround for issue when using super with pyqt<5
            BaseConfigurableClass.__init__(self)
            PlotWidget.__init__(self, parent=parent, **kwargs)
        else:
            super(TaurusPlot, self).__init__(parent=None, **kwargs)

        # set up cyclic color generator
        self._curveColors = LoopList(CURVE_COLORS)
        self._curveColors.setCurrentIndex(-1)

        # add save & retrieve configuration actions
        menu = self.getPlotItem().getViewBox().menu
        saveConfigAction = QtGui.QAction("Save configuration", menu)
        saveConfigAction.triggered.connect(self.saveConfigFile)
        menu.addAction(saveConfigAction)

        loadConfigAction = QtGui.QAction("Retrieve saved configuration", menu)
        loadConfigAction.triggered.connect(self.loadConfigFile)
        menu.addAction(loadConfigAction)

        self.registerConfigProperty(self._getState, self.restoreState, "state")

        # add legend tool
        legend_tool = PlotLegendTool(self)
        legend_tool.attachToPlotItem(self.getPlotItem())

        # add model chooser
        self._model_chooser_tool = TaurusXYModelChooserTool(self)
        self._model_chooser_tool.attachToPlotItem(self.getPlotItem(), self,
                                                  self._curveColors)

        # add Y2 axis
        self._y2 = Y2ViewBox()
        self._y2.attachToPlotItem(self.getPlotItem())

        # add plot configuration dialog
        cprop_tool = CurvesPropertiesTool(self)
        cprop_tool.attachToPlotItem(self.getPlotItem(), y2=self._y2)

        # add a data inspector
        inspector_tool = DataInspectorTool(self)
        inspector_tool.attachToPlotItem(self.getPlotItem())

        # Register config properties
        self.registerConfigDelegate(self._y2, "Y2Axis")
        self.registerConfigDelegate(legend_tool, "legend")
        self.registerConfigDelegate(inspector_tool, "inspector")
예제 #11
0
 def __init__(self, parent=None):
     BaseConfigurableClass.__init__(self)
     QtGui.QAction.__init__(self, "Plot configuration", parent)
     self.triggered.connect(self._onTriggered)
     self.plot_item = None
     self.Y2Axis = None
     self.registerConfigProperty(
         self._getCurveAppearanceProperties,
         self._setCurveAppearanceProperties,
         "CurveProperties",
     )
     self.registerConfigProperty(
         self._getBackgroundColor,
         self._setBackgroundColor,
         "PlotBackground",
     )
예제 #12
0
    def __init__(self, parent=None):
        Qt.QTreeView.__init__(self, parent)
        BaseConfigurableClass.__init__(self)
        self._idIndexDict = {}

        self.setSelectionBehavior(Qt.QTreeView.SelectRows)
        self.setSelectionMode(Qt.QTreeView.SingleSelection)
        self.setRootIsDecorated(False)
#        self.setItemsExpandable(False)
        self.setDragEnabled(True)
        self.setAcceptDrops(True)
        self.setTabKeyNavigation(True)
        self.setEditTriggers(Qt.QAbstractItemView.EditKeyPressed |
                             Qt.QAbstractItemView.CurrentChanged)
        self.setDropIndicatorShown(True)

        self.deleteAction = Qt.QAction(
            Qt.QIcon.fromTheme("list-remove"), "Remove macro", self)
        self.deleteAction.triggered.connect(self.deleteMacro)
        self.deleteAction.setToolTip(
            "Clicking this button will remove current macro.")

        self.moveUpAction = Qt.QAction(Qt.QIcon.fromTheme("go-up"), "Move up",
                                       self)
        self.moveUpAction.triggered.connect(self.upMacro)
        self.moveUpAction.setToolTip(
            "Clicking this button will move current macro up.")

        self.moveDownAction = Qt.QAction(
            Qt.QIcon.fromTheme("go-down"), "Move down", self)
        self.moveDownAction.triggered.connect(self.downMacro)
        self.moveDownAction.setToolTip(
            "Clicking this button will move current macro down.")

        self.moveLeftAction = Qt.QAction(
            Qt.QIcon.fromTheme("go-previous"), "Move left", self)
        self.moveLeftAction.triggered.connect(self.leftMacro)
        self.moveLeftAction.setToolTip(
            "Clicking this button will move current macro to the left.")

        self.moveRightAction = Qt.QAction(
            Qt.QIcon.fromTheme("go-next"), "Move right", self)
        self.moveRightAction.triggered.connect(self.rightMacro)
        self.moveRightAction.setToolTip(
            "Clicking this button will move current macro to the right.")
예제 #13
0
    def __init__(self, parent=None):
        Qt.QTreeView.__init__(self, parent)
        BaseConfigurableClass.__init__(self)
        self._idIndexDict = {}

        self.setSelectionBehavior(Qt.QTreeView.SelectRows)
        self.setSelectionMode(Qt.QTreeView.SingleSelection)
        self.setRootIsDecorated(False)
#        self.setItemsExpandable(False)
        self.setDragEnabled(True)
        self.setAcceptDrops(True)
        self.setTabKeyNavigation(True)
        self.setEditTriggers(Qt.QAbstractItemView.EditKeyPressed |
                             Qt.QAbstractItemView.CurrentChanged)
        self.setDropIndicatorShown(True)

        self.deleteAction = Qt.QAction(
            getThemeIcon("list-remove"), "Remove macro", self)
        self.deleteAction.triggered.connect(self.deleteMacro)
        self.deleteAction.setToolTip(
            "Clicking this button will remove current macro.")

        self.moveUpAction = Qt.QAction(getThemeIcon("go-up"), "Move up", self)
        self.moveUpAction.triggered.connect(self.upMacro)
        self.moveUpAction.setToolTip(
            "Clicking this button will move current macro up.")

        self.moveDownAction = Qt.QAction(
            getThemeIcon("go-down"), "Move down", self)
        self.moveDownAction.triggered.connect(self.downMacro)
        self.moveDownAction.setToolTip(
            "Clicking this button will move current macro down.")

        self.moveLeftAction = Qt.QAction(
            getThemeIcon("go-previous"), "Move left", self)
        self.moveLeftAction.triggered.connect(self.leftMacro)
        self.moveLeftAction.setToolTip(
            "Clicking this button will move current macro to the left.")

        self.moveRightAction = Qt.QAction(
            getThemeIcon("go-next"), "Move right", self)
        self.moveRightAction.triggered.connect(self.rightMacro)
        self.moveRightAction.setToolTip(
            "Clicking this button will move current macro to the right.")
예제 #14
0
    def __init__(
        self,
        parent=None,
        period=0,
        text="Change forced read period...",
        autoconnect=True,
    ):
        BaseConfigurableClass.__init__(self)
        QtGui.QAction.__init__(self, text, parent)
        tt = "Period between forced readings.\nSet to 0 to disable"
        self.setToolTip(tt)
        self._period = period
        self._autoconnect = autoconnect

        # register config properties
        self.registerConfigProperty(self.period, self.setPeriod, "period")
        self.registerConfigProperty(
            self.autoconnect, self.setAutoconnect, "autoconnect"
        )

        # internal conections
        self.triggered.connect(self._onTriggered)
예제 #15
0
    def __init__(self,
                 cmdargs,
                 text=None,
                 icon=None,
                 parent=None,
                 interactive=True):
        '''creator

        :param cmdargs: (list<str> or str) A list of strings to be passed to
                        :meth:`subprocess.Popen` for launching the external
                        application. It can also be a single string containing a
                        command. See :meth:`setCmdArgs`
        :param text: (str) see :class:`Qt.QAction`
        :param icon: (QIcon or any other object that can be passed to QIcon creator) see :class:`Qt.QAction`
        :param parent: (QObject) The parent object
        '''
        if isinstance(cmdargs, string_types):
            import shlex
            cmdargs = shlex.split(str(cmdargs))
        self.path = os.path.realpath(cmdargs and cmdargs[0] or '')
        if text is None:
            text = os.path.basename(cmdargs and cmdargs[0] or '')
        if icon is None:
            icon = Qt.QIcon.fromTheme(self.DEFAULT_ICON_NAME)
        elif isinstance(icon, string_types):
            tmp = Qt.QIcon.fromTheme(icon)
            if not tmp.isNull():
                icon = tmp

        Qt.QAction.__init__(self, Qt.QIcon(icon), text, parent)
        BaseConfigurableClass.__init__(self)
        self.interactive = interactive
        self._process = []
        self.setCmdArgs(cmdargs)
        self.triggered.connect(partial(self.actionTriggered, args=None))
        self.setToolTip("Launches %s (external application)" % text)
        self.registerConfigProperty(self.cmdArgs, self.setCmdArgs, 'cmdArgs')
예제 #16
0
    def __init__(self, parent=None, **kwargs):

        if Qt.QT_VERSION < 0x050000:
            # Workaround for issue when using super with pyqt<5
            BaseConfigurableClass.__init__(self)
            PlotWidget.__init__(self, parent=parent, **kwargs)
        else:
            super(TaurusTrend, self).__init__(parent=parent, **kwargs)

        # Compose with a Logger
        self._logger = Logger(name=self.__class__.__name__)
        self.debug = self._logger.debug
        self.info = self._logger.info
        self.warning = self._logger.warning
        self.error = self._logger.error

        # set up cyclic color generator
        self._curveColors = LoopList(CURVE_COLORS)
        self._curveColors.setCurrentIndex(-1)

        plot_item = self.getPlotItem()
        menu = plot_item.getViewBox().menu

        # add save & retrieve configuration actions
        saveConfigAction = QtGui.QAction("Save configuration", menu)
        saveConfigAction.triggered.connect(self.saveConfigFile)
        menu.addAction(saveConfigAction)

        loadConfigAction = QtGui.QAction("Retrieve saved configuration", menu)
        loadConfigAction.triggered.connect(self.loadConfigFile)
        menu.addAction(loadConfigAction)

        self.registerConfigProperty(self._getState, self.restoreState, "state")

        # add legend tool
        legend_tool = PlotLegendTool(self)
        legend_tool.attachToPlotItem(plot_item)

        # add model chooser
        self._model_chooser_tool = TaurusXYModelChooserTool(
            self, itemClass=TaurusTrendSet, showX=False)
        self._model_chooser_tool.attachToPlotItem(self.getPlotItem(), self,
                                                  self._curveColors)

        # add Y2 axis
        self._y2 = Y2ViewBox()
        self._y2.attachToPlotItem(plot_item)

        # Add time X axis
        axis = DateAxisItem(orientation="bottom")
        axis.attachToPlotItem(plot_item)

        # add plot configuration dialog
        self._cprop_tool = CurvesPropertiesTool(self)
        self._cprop_tool.attachToPlotItem(plot_item, y2=self._y2)

        # add data inspector widget
        inspector_tool = DataInspectorTool(self)
        inspector_tool.attachToPlotItem(self.getPlotItem())

        # add force read tool
        self._fr_tool = ForcedReadTool(self)
        self._fr_tool.attachToPlotItem(self.getPlotItem())

        # Add the auto-pan ("oscilloscope mode") tool
        self._autopan = XAutoPanTool()
        self._autopan.attachToPlotItem(self.getPlotItem())

        # Register config properties
        self.registerConfigDelegate(self._model_chooser_tool, "XYmodelchooser")
        # self.registerConfigDelegate(self._y2, "Y2Axis")
        self.registerConfigDelegate(self._cprop_tool, "CurvePropertiesTool")
        self.registerConfigDelegate(legend_tool, "legend")
        self.registerConfigDelegate(self._fr_tool, "forceread")
        self.registerConfigDelegate(inspector_tool, "inspector")