Example #1
0
    def __init__(self, parent=None, designMode=False):
        TaurusWidget.__init__(self, parent, designMode)

        self.setLayout(Qt.QVBoxLayout())

        self._splitter = Qt.QSplitter()
        self._splitter.setOrientation(Qt.Qt.Vertical)
        self.layout().addWidget(self._splitter)

        self._frame = TaurusWidget(self)
        self._frame.setLayout(Qt.QGridLayout())

        self._scrollArea = TaurusScrollArea(self)
        self._scrollArea.setWidget(self._frame)
        self._scrollArea.setWidgetResizable(True)
        self._splitter.addWidget(self._scrollArea)

        self._outputTE = Qt.QTextEdit()
        self._outputTE.setReadOnly(True)
        self._splitter.addWidget(self._outputTE)
        #self._splitter.moveSplitter(self._splitter.getRange(0)[-1], 0)

        self._cmdWidgets = []
        self._paramWidgets = []
        self._viewFilters = []
        self._defaultParameters = []
        self._sortKey = lambda x: x.cmd_name

        self._operatorViewFilter = lambda x: x.disp_level == PyTango.DispLevel.OPERATOR

        # self.setLayout(Qt.QGridLayout())
        self.modelChanged.connect(self._updateCommandWidgets)
Example #2
0
    def __init__(self, parent=None, designMode=False):
        TaurusWidget.__init__(self, parent, designMode=designMode)

        self.loadUi(filename="computeu.ui")

        self.connect(self._ui.ComputeButton, Qt.SIGNAL(
            "clicked()"), self.compute_u)
Example #3
0
    def __init__(self, parent=None, designMode=False):
        TaurusWidget.__init__(self, parent=parent, designMode=designMode)

        self._xAttr = None
        self._yAttr = None

        self._arrayEditor = ArrayEditor()
        self.fromFileBT = Qt.QPushButton('Read From File')
        self.toFileBT = Qt.QPushButton('Write To File')
        self.fromAttrBT = Qt.QPushButton('Read From Device')
        self.toAttrBT = Qt.QPushButton('Write To Device')

        self.fromAttrBT.setEnabled(False)
        self.toAttrBT.setEnabled(False)

        layout = Qt.QGridLayout(self)
        layout.addWidget(self._arrayEditor, 0, 0, 1, 4)
        layout.addWidget(self.fromFileBT, 1, 0)
        layout.addWidget(self.toFileBT, 1, 1)
        layout.addWidget(self.fromAttrBT, 1, 2)
        layout.addWidget(self.toAttrBT, 1, 3)

        self.fromFileBT.clicked[()].connect(self.onFromFile)
        self.toFileBT.clicked[()].connect(self.onToFile)
        self.fromAttrBT.clicked[()].connect(self.onFromAttr)
        self.toAttrBT.clicked[()].connect(self.onToAttr)
Example #4
0
    def setModel(self, model):
        '''
        reimplemented from :class:`TaurusWidget`. A door device name is 
        expected as the model
        '''
        TaurusWidget.setModel(self, model)
        if self.door is not None:
            self.disconnect(self.door, Qt.SIGNAL('macroStatusUpdated'), self._statusUpdated)
            self.disconnect(self.door, Qt.SIGNAL('resultUpdated'), self._resultUpdated)

            # disable management of Door Tango States
            self.door.getAttribute('State').removeListener(self.door_state_listener)
            self.disconnect(self.door_state_listener, Qt.SIGNAL('doorStateChanged'), self._doorStateChanged)
            self.door_state_listener = None

        try: self.door = taurus.Device(model)
        except: return

        self.connect(self.door, Qt.SIGNAL('macroStatusUpdated'), self._statusUpdated)
        self.connect(self.door, Qt.SIGNAL('resultUpdated'), self._resultUpdated)

        # Manage Door Tango States
        self.door_state_listener = DoorStateListener()
        self.connect(self.door_state_listener, Qt.SIGNAL('doorStateChanged'), self._doorStateChanged)
        self.door.getAttribute('State').addListener(self.door_state_listener)
Example #5
0
 def setModel(self, model):
     oldModelObj = self.getModelObj()
     if oldModelObj is not None:
         self.disconnect(oldModelObj, Qt.SIGNAL("macrosUpdated"), self.macroComboBox.onMacrosUpdated)
     TaurusWidget.setModel(self, model)
     newModelObj = self.getModelObj()
     self.connect(newModelObj, Qt.SIGNAL("macrosUpdated"), self.macroComboBox.onMacrosUpdated)
Example #6
0
    def __init__(self, parent=None, selectables=None, buttonsPos=None, designMode=None):
        TaurusWidget.__init__(self, parent)
        if selectables is None:
            selectables = [taurus.core.taurusbasetypes.TaurusElementType.Attribute, taurus.core.taurusbasetypes.TaurusElementType.Member,
                           taurus.core.taurusbasetypes.TaurusElementType.Device]
        self._selectables = selectables

        # tree
        self._deviceTree = TaurusDbTreeWidget(
            perspective=taurus.core.taurusbasetypes.TaurusElementType.Device)
        self._deviceTree.getQModel().setSelectables(self._selectables)
        self._deviceTree.setUseParentModel(True)

        # toolbar
        self._toolbar = Qt.QToolBar("TangoSelector toolbar")
        self._toolbar.setIconSize(Qt.QSize(16, 16))
        self._toolbar.setFloatable(False)
        self._addSelectedAction = self._toolbar.addAction(
            Qt.QIcon.fromTheme("list-add"), "Add selected", self.onAddSelected)

        # defines the layout
        self.setButtonsPos(buttonsPos)

        self._deviceTree.recheckTaurusParent()  # NOT WORKING????
        # @todo: This is Workaround because UseSetParentModel is giving trouble again!
        self.modelChanged.connect(self._deviceTree.setModel)
Example #7
0
    def __init__(self, parent=None, designMode=False):
        TaurusWidget.__init__(self, parent, designMode=designMode)

        self.loadUi(filename="reflectionseditor.ui")

        self._ui.ApplyButton.clicked.connect(self.apply)
        self._ui.ClearButton.clicked.connect(self.clear)
Example #8
0
 def setModel(self, model):
     oldModelObj = self.getModelObj()
     if oldModelObj is not None:
         oldModelObj.macrosUpdated.disconnect(
             self.macroComboBox.onMacrosUpdated)
     TaurusWidget.setModel(self, model)
     newModelObj = self.getModelObj()
     newModelObj.macrosUpdated.connect(self.macroComboBox.onMacrosUpdated)
Example #9
0
 def setModel(self, model):
     '''This implementation propagates the model to the read and write widgets.
     You may reimplement it to do things like passing different models to each.
     '''
     if self.readWidget is not None:
         self.readWidget.setModel(model)
     if self.writeWidget is not None:
         self.writeWidget.setModel(model)
     TaurusWidget.setModel(self, model)
Example #10
0
 def setModel(self, model):
     oldModelObj = self.getModelObj()
     if oldModelObj is not None:
         # TODO: check if macrosUpdated signal exists
         oldModelObj.macrosUpdated.disconnect(
             self.macroComboBox.onMacrosUpdated)
     TaurusWidget.setModel(self, model)
     newModelObj = self.getModelObj()
     newModelObj.macrosUpdated.connect(
         self.macroComboBox.onMacrosUpdated)
Example #11
0
    def applyConfig(self, configdict, **kwargs):
        """extending :meth:`TaurusBaseWidget.applyConfig` to restore the splitter config

        :param configdict: (dict)

        .. seealso:: :meth:`TaurusBaseWidget.applyConfig`, :meth:`createConfig`
        """
        # first do the basic stuff...
        TaurusWidget.applyConfig(self, configdict, **kwargs)
        # restore the splitter config
        self._splitter.restoreState(
            Qt.QByteArray(configdict['splitter/state']))
Example #12
0
    def __init__(self, parent=None, designMode=False):
        TaurusWidget.__init__(self, parent, designMode=designMode)

        self.loadUi(filename="ubmatrix.ui")

        self._ui.UpdateButton.clicked.connect(self.update_values)
        self._ui.ComputeUButton.clicked.connect(self.compute_ub)
        self._ui.ReflectionsListButton.clicked.connect(
            self.reflections_list_window)
        self._ui.EditReflectionsButton.clicked.connect(
            self.edit_reflections_window)
        self._ui.AffineButton.clicked.connect(self.affine)
        self._ui.AddCrystalButton.clicked.connect(self.add_select_crystal)
Example #13
0
    def __init__(self, parent=None, designMode=False):
        TaurusWidget.__init__(self, parent, designMode=designMode)

        self.loadUi(filename="hklscan.ui")

        self._ui.hklStartScanButton.clicked.connect(self.start_hklscan)
        self._ui.hklStopScanButton.clicked.connect(self.stop_hklscan)
        self._ui.hklDisplayAnglesButton.clicked.connect(self.display_angles)
        self._ui.MacroServerConnectionButton.clicked.connect(
            self.open_macroserver_connection_panel)

        # Create a global SharedDataManager
        Qt.qApp.SDM = SharedDataManager(self)
Example #14
0
    def __init__(self, parent=None, designMode=False):
        TaurusWidget.__init__(self, parent, designMode)
        self.loadUi()
        self.door = None
        self.door_state_listener = None
        self.macro_name = ''
        self.macro_args = []
        self.macro_id = None
        self.running_macro = None

        self.ui.progress.setValue(0)

        self.ui.button.setCheckable(True)
        self.ui.button.clicked.connect(self._onButtonClicked)
Example #15
0
    def __init__(self, parent=None, selectables=None, host=None, designMode=None, singleModel=False):
        '''Creator of TaurusModelChooser

        :param parent: (QObject) parent for the dialog
        :param selectables: (list<TaurusElementType>) if passed, only elements of the tree whose
                            type is in the list will be selectable.
        :param host: (QObject) Tango host to be explored by the chooser
        :param designMode: (bool) needed for taurusdesigner but ignored here
        :param singleModel: (bool) If True, the selection will be of just one
                            model. Otherwise (default) a list of models can be selected
        '''
        TaurusWidget.__init__(self, parent)
        if host is None:
            host = taurus.Authority().getNormalName()

        self._allowDuplicates = False

        self.setLayout(Qt.QVBoxLayout())

        self.tree = TaurusModelSelectorTree(
            selectables=selectables, buttonsPos=Qt.Qt.BottomToolBarArea)
        self.tree.setModel(host)
        self.list = TaurusModelList()
        self.list.setSelectionMode(Qt.QAbstractItemView.ExtendedSelection)
        applyBT = Qt.QToolButton()
        applyBT.setToolButtonStyle(Qt.Qt.ToolButtonTextBesideIcon)
        applyBT.setText('Apply')
        applyBT.setIcon(Qt.QIcon("status:available.svg"))

        self.setSingleModelMode(singleModel)

        # toolbar
        self._toolbar = self.tree._toolbar
        self._toolbar.addAction(self.list.removeSelectedAction)
        self._toolbar.addAction(self.list.removeAllAction)
        self._toolbar.addAction(self.list.moveUpAction)
        self._toolbar.addAction(self.list.moveDownAction)
        self._toolbar.addSeparator()
        self._toolbar.addWidget(applyBT)
        self.layout().addWidget(self.tree)
        self.layout().addWidget(self.list)

        # self.tree.setUseParentModel(True)  #It does not work!!!!
        # @todo: This is Workaround because UseSetParentModel is giving trouble again!
        self.modelChanged.connect(self.tree.setModel)

        # connections:
        self.tree.addModels.connect(self.addModels)
        applyBT.clicked.connect(self._onUpdateModels)
Example #16
0
    def __init__(self, parent=None, designMode=False):
        TaurusWidget.__init__(self, parent, designMode)

        self._viewFilters = []
        self._operatorViewFilter = lambda x: x.disp_level == PyTango.DispLevel.OPERATOR

        self.setLayout(Qt.QVBoxLayout())

        self._form = TaurusForm(parent=self)
        self.layout().addWidget(self._form)
        self.registerConfigDelegate(self._form)

        self.modelChanged.connect(self._updateAttrWidgets)

        self._sortKey = lambda x: x.name
Example #17
0
    def __init__(self, *args, **kwargs):
        TaurusWidget.__init__(self, *args)

        fileModel = kwargs.get("fileModel", None)
        if fileModel is None:
            fileModel = HDF5Widget.FileModel()
        self.__fileModel = fileModel

        self.treeWidget = HDF5Widget.HDF5Widget(self.__fileModel)
        self.treeWidget.setSizePolicy(Qt.QSizePolicy(Qt.QSizePolicy.Expanding, Qt.QSizePolicy.Expanding))
        #        self.infoWidget = HDF5Info.HDF5InfoWidget()
        self.__previewStack = Qt.QStackedWidget()
        self.__currentPreview = None

        # layout
        self.__splitter = Qt.QSplitter()
        self.__splitter.setOrientation(Qt.Qt.Vertical)
        self.__splitter.addWidget(self.treeWidget)
        #        self.__splitter.addWidget(self.infoWidget)
        self.__splitter.addWidget(self.__previewStack)
        self.setLayout(Qt.QVBoxLayout())
        self.layout().addWidget(self.__splitter)

        # Actions
        self.setContextMenuPolicy(Qt.Qt.ActionsContextMenu)
        self.openFileAction = Qt.QAction(Qt.QIcon.fromTheme("document-open"), "Open Data File...", self)
        self.togglePreviewAction = Qt.QAction(Qt.QIcon("actions:view.svg"), "Show/Hide preview", self)
        self.togglePreviewAction.setCheckable(True)
        self.togglePreviewAction.setChecked(True)
        self.addActions([self.openFileAction, self.togglePreviewAction])

        # Toolbar
        self._toolbar = Qt.QToolBar("NeXus browser toolbar")
        self._toolbar.setIconSize(Qt.QSize(16, 16))
        self._toolbar.setFloatable(False)
        self._toolbar.addActions([self.openFileAction, self.togglePreviewAction])
        self.layout().setMenuBar(self._toolbar)

        # connections
        self.__fileModel.sigFileAppended.connect(self.treeWidget.fileAppended)
        self.treeWidget.sigHDF5WidgetSignal.connect(self.onHDF5WidgetSignal)
        self.openFileAction.triggered[()].connect(self.openFile)
        self.togglePreviewAction.toggled.connect(self.__previewStack.setVisible)

        # configuration
        self.registerConfigProperty(
            self.togglePreviewAction.isChecked, self.togglePreviewAction.setChecked, "showPreview"
        )
Example #18
0
 def getQtDesignerPluginInfo(cls):
     ret = TaurusWidget.getQtDesignerPluginInfo()
     ret['module'] = 'linacstartupsynoptic'
     ret['group'] = 'Taurus Linac Main'
     ret['icon'] = ':/designer/tabwidget.png'
     ret['container'] = False
     return ret
Example #19
0
 def getQtDesignerPluginInfo(cls):
     ret = TaurusWidget.getQtDesignerPluginInfo()
     ret['module'] = 'widgets.TaurusDevCombo'
     ret['group'] = 'Taurus Views'
     ret['container'] = ':/designer/frame.png'
     ret['container'] = False
     return ret
Example #20
0
 def getQtDesignerPluginInfo(cls):
     ret = TaurusWidget.getQtDesignerPluginInfo()
     ret['module'] = 'taurus.qt.qtgui.panel'
     ret['icon'] = "designer:listview.png"
     ret['container'] = False
     ret['group'] = 'Taurus Views'
     return ret
 def getQtDesignerPluginInfo(cls):
     ret = TaurusWidget.getQtDesignerPluginInfo()
     ret['module'] = 'taurus.qt.qtgui.panel'
     ret['icon'] = ":/designer/listview.png"
     ret['container'] = False
     ret['group'] = 'Taurus Views'
     return ret
Example #22
0
 def getQtDesignerPluginInfo(cls):
     ret = TaurusWidget.getQtDesignerPluginInfo()
     ret['module'] = 'computeu'
     ret['group'] = 'Taurus Containers'
     ret['container'] = ':/designer/frame.png'
     ret['container'] = False
     return ret
Example #23
0
 def getQtDesignerPluginInfo(cls):
     ret = TaurusWidget.getQtDesignerPluginInfo()
     ret['module'] = 'hklscan'
     ret['group'] = 'Taurus Containers'
     ret['container'] = ':/designer/frame.png'
     ret['container'] = True
     return ret
Example #24
0
 def getQtDesignerPluginInfo(cls):
     ret = TaurusWidget.getQtDesignerPluginInfo()
     ret['module'] = 'egunlv'
     ret['group'] = 'Taurus Linac Widgets'
     ret['icon'] = ':/designer/widgetstack.png'
     ret['container'] = False
     return ret
Example #25
0
 def getQtDesignerPluginInfo(cls):
     ret = TaurusWidget.getQtDesignerPluginInfo()
     ret['module'] = 'linacplcwidget'
     ret['group'] = 'Taurus Linac Widgets'
     ret['icon'] = ':/designer/groupbox.png'
     ret['container'] = False
     return ret
Example #26
0
    def __init__(self, parent=None, designMode=False):
        TaurusWidget.__init__(self, parent, designMode=designMode)

        self.loadUi(filename="selectsignal.ui")

        self.signalComboBox = SignalComboBox(self)
        self.signalComboBox.setGeometry(QtCore.QRect(70, 50, 161, 27))
        self.signalComboBox.setObjectName("SignalcomboBox")

        self.connect(self.signalComboBox, Qt.SIGNAL(
            "currentIndexChanged(QString)"), self.onSignalChanged)

        self.doorName = None
        self.door_device = None
        
        registerExtensions()
Example #27
0
 def loadConfigFile(self, ifile=None):
     self.info('In TaurusDevicePanel.loadConfigFile(%s)' % ifile)
     if isinstance(ifile, file) or isinstance(ifile, str) and not ifile.endswith('.py'):
         TaurusWidget.loadConfigFile(self, ifile)
     else:
         from imp import load_source
         config_file = load_source('config_file', ifile)
         af, cf, im = [getattr(config_file, x, None) for x in (
             'AttributeFilters', 'CommandFilters', 'IconMap')]
         if af is not None:
             self.setAttributeFilters(af)
         if cf is not None:
             self.setCommandFilters(cf)
         if im is not None:
             self.setIconMap(im)
     self.debug('AttributeFilters are:\n%s' % self.getAttributeFilters())
Example #28
0
 def getQtDesignerPluginInfo(cls):
     ret = TaurusWidget.getQtDesignerPluginInfo()
     ret['module'] = 'displayscanangles'
     ret['group'] = 'Taurus Containers'
     ret['container'] = 'y'
     ret['container'] = False
     return ret
 def getQtDesignerPluginInfo(cls):
     ret = TaurusWidget.getQtDesignerPluginInfo()
     ret['module'] = 'diffractometeralignment'
     ret['group'] = 'Taurus Containers'
     ret['container'] = ':/designer/frame.png'
     ret['container'] = False
     return ret
Example #30
0
 def getQtDesignerPluginInfo(cls):
     ret = TaurusWidget.getQtDesignerPluginInfo()
     ret['module'] = 'deviceevents'
     ret['group'] = 'Taurus Linac Widgets'
     ret['container'] = ':/designer/frame.png'
     ret['container'] = False
     return ret
Example #31
0
 def getQtDesignerPluginInfo(cls):
     ret = TaurusWidget.getQtDesignerPluginInfo()
     ret['module'] = 'magnetsnapshot'
     ret['group'] = 'Taurus Linac Snapshot'
     ret['container'] = ':/designer/frame.png'
     ret['container'] = False
     return ret
Example #32
0
 def getQtDesignerPluginInfo(cls):
     ret = TaurusWidget.getQtDesignerPluginInfo()
     ret['module'] = 'computeu'
     ret['group'] = 'Taurus Containers'
     ret['container'] = ':/designer/frame.png'
     ret['container'] = False
     return ret
Example #33
0
 def getQtDesignerPluginInfo(cls):
     ret = TaurusWidget.getQtDesignerPluginInfo()
     ret["module"] = "taurus.qt.qtgui.extra_nexus"
     ret["icon"] = "designer:listview.png"
     ret["container"] = False
     ret["group"] = "Taurus Views"
     return ret
Example #34
0
    def __init__(self, parent=None, designMode=False):
        TaurusWidget.__init__(self, parent, designMode=designMode)

        self.loadUi(filename="selectsignal.ui")

        self.signalComboBox = SignalComboBox(self)
        self.signalComboBox.setGeometry(QtCore.QRect(70, 50, 161, 27))
        self.signalComboBox.setObjectName("SignalcomboBox")

        self.connect(self.signalComboBox,
                     Qt.SIGNAL("currentIndexChanged(QString)"),
                     self.onSignalChanged)

        self.doorName = None
        self.door_device = None

        registerExtensions()
Example #35
0
    def setModel(self, device):
        print self.__class__.__name__, "setModel", device
        TaurusWidget.setModel(self, device)
        self.device_and_state.setModel(device)
        self.status_area.setModel(device)
        if device:
            self.form.setModel(
                ["%s/%s" % (device, attribute) for attribute in self.attrs])
            attrname = "%s/%s" % (device, "Current")

            self.valuebar.setModel(attrname)
            # self.state_button.setModel(device)
            attr = Attribute(attrname)
            self.current_label.setText("%s [%s]" % (attr.label, attr.unit))
        else:
            self.form.setModel(None)
            self.valuebar.setModel(None)
    def __init__(self, *args):
        TaurusWidget.__init__(self, *args)
        self.setLayout(QtGui.QHBoxLayout())
        self.layout().setMargin(0)

        self.moveInButton = TaurusCommandButton(self)
        self.moveInButton.setUseParentModel(True)
        self.moveInButton.setCommand('MoveIn')
        self.moveInButton.setCustomText('Move In')

        self.moveOutButton = TaurusCommandButton(self)
        self.moveOutButton.setUseParentModel(True)
        self.moveOutButton.setCommand('MoveOut')
        self.moveOutButton.setCustomText('Move Out')

        self.layout().addWidget(self.moveInButton)
        self.layout().addWidget(self.moveOutButton)
Example #37
0
    def __init__(self, parent=None, designMode=False):
        TaurusWidget.__init__(self, parent, designMode)
        self.loadUi()

        self.ioreg_dev = None

        self.alias_label = TaurusLabel()
        self.alias_label.setBgRole('state')
        self.value_label = PoolIORegisterReadWidget()
        self.button_value_dict = {}

        policy = self.value_label.sizePolicy()
        policy.setHorizontalPolicy(Qt.QSizePolicy.Expanding)
        self.value_label.setSizePolicy(policy)

        self.ui.lo_state_read.addWidget(self.alias_label)
        self.ui.lo_state_read.addWidget(self.value_label)
Example #38
0
    def __init__(self, parent=None, designMode=False,
                 readWClass=None, writeWClass=None,
                 enterEditTriggers=None, exitEditTriggers=None):

        TaurusWidget.__init__(self, parent=parent, designMode=designMode)

        self.setFocusPolicy(Qt.Qt.StrongFocus)
        self.setLayout(Qt.QStackedLayout())
        self.readWidget = None
        self.writeWidget = None

        # Use parameters from constructor args or defaults from class
        self.readWClass = readWClass or self.readWClass
        self.writeWClass = writeWClass or self.writeWClass
        self.enterEditTriggers = enterEditTriggers or self.enterEditTriggers
        self.exitEditTriggers = exitEditTriggers or self.exitEditTriggers

        # classify the triggers
        sc, et, sig = self._classifyTriggers(self.enterEditTriggers)
        self.enterEditShortCuts = sc
        self.enterEditEventTypes = et
        self.enterEditSignals = sig
        sc, et, sig = self._classifyTriggers(self.exitEditTriggers)
        self.exitEditShortCuts = sc
        self.exitEditEventTypes = et
        self.exitEditSignals = sig

        # Actions for entering and exiting the edit
        self.enterEditAction = Qt.QAction("Start Editing", self)
        self.enterEditAction.setShortcuts(self.enterEditShortCuts)
        self.enterEditAction.setShortcutContext(
            Qt.Qt.WidgetWithChildrenShortcut)
        self.addAction(self.enterEditAction)
        self.exitEditAction = Qt.QAction("Abort Editing", self)
        self.exitEditAction.setShortcuts(self.exitEditShortCuts)
        self.exitEditAction.setShortcutContext(
            Qt.Qt.WidgetWithChildrenShortcut)
        self.addAction(self.exitEditAction)
        self.enterEditAction.triggered[()].connect(self._onEnterEditActionTriggered)
        self.exitEditAction.triggered[()].connect(self._onExitEditActionTriggered)

        # add read and write widgets
        if self.readWClass is not None:
            self.setReadWidget(self.readWClass())
        if self.writeWClass is not None:
            self.setWriteWidget(self.writeWClass())
    def __init__(self, *args):
        TaurusWidget.__init__(self, *args)
        self.setLayout(QtGui.QHBoxLayout())
        self.layout().setMargin(0)
        self.layout().setSpacing(0)

        self.led = TaurusLed(self)
        self.led.setUseParentModel(True)
        self.led.setModel('/State')
        self.led.getFormatedToolTip = self.getFormatedToolTip
        self.led.setSizePolicy(Qt.QSizePolicy.Fixed, Qt.QSizePolicy.Fixed)

        self.label = ExpandingLabel()
        self.label.setUseParentModel(True)

        self.layout().addWidget(self.led)
        self.layout().addWidget(self.label)
Example #40
0
    def __init__(self, parent=None, designMode=False):
        TaurusWidget.__init__(self, parent, designMode=designMode)

        self.loadUi(filename="hklscan.ui")

        self.connect(self._ui.hklStartScanButton, Qt.SIGNAL("clicked()"),
                     self.start_hklscan)
        self.connect(self._ui.hklStopScanButton, Qt.SIGNAL("clicked()"),
                     self.stop_hklscan)
        self.connect(self._ui.hklDisplayAnglesButton, Qt.SIGNAL("clicked()"),
                     self.display_angles)
        self.connect(self._ui.MacroServerConnectionButton,
                     Qt.SIGNAL("clicked()"),
                     self.open_macroserver_connection_panel)

        # Create a global SharedDataManager
        Qt.qApp.SDM = SharedDataManager(self)
Example #41
0
    def __init__(self, parent=None, designMode=False):
        TaurusWidget.__init__(self, parent, designMode=designMode)

        self.loadUi(filename="ubmatrix.ui")

        self.connect(self._ui.UpdateButton, Qt.SIGNAL("clicked()"),
                     self.update_values)
        self.connect(self._ui.ComputeUButton, Qt.SIGNAL("clicked()"),
                     self.compute_ub)
        self.connect(self._ui.ReflectionsListButton, Qt.SIGNAL("clicked()"),
                     self.reflections_list_window)
        self.connect(self._ui.EditReflectionsButton, Qt.SIGNAL("clicked()"),
                     self.edit_reflections_window)
        self.connect(self._ui.AffineButton, Qt.SIGNAL("clicked()"),
                     self.affine)
        self.connect(self._ui.AddCrystalButton, Qt.SIGNAL("clicked()"),
                     self.add_select_crystal)
Example #42
0
    def fillWithChildren(self):
        frame = TaurusWidget()
        frame.setLayout(Qt.QGridLayout())
        frame.layout().addItem(Qt.QSpacerItem(
            0, 0, Qt.QSizePolicy.Minimum, Qt.QSizePolicy.MinimumExpanding))

        parent_name = None
        if self.getUseParentModel():
            parent_model = self.getParentModelObj()
            if parent_model:
                parent_name = parent_model.getFullName()

        for i, model in enumerate(self.getModel()):
            if not model:
                continue
            if parent_name:
                # @todo: Change this (it assumes tango model naming!)
                model = "%s/%s" % (parent_name, model)
            klass, args, kwargs = self.getFormWidget(model=model)
            widget = klass(frame, *args, **kwargs)
            # @todo UGLY... See if this can be done in other ways... (this causes trouble with widget that need more vertical space , like PoolMotorTV)
            widget.setMinimumHeight(20)

            try:
                widget.setCompact(self.isCompact())
                widget.setModel(model)
                widget.setParent(frame)
            except:
                # raise
                self.warning(
                    'an error occurred while adding the child "%s". Skipping' % model)
                self.traceback(level=taurus.Debug)
            try:
                widget.setModifiableByUser(self.isModifiableByUser())
            except:
                pass
            try:
                widget.setFormat(self.getFormat())
            except Exception:
                self.debug('Cannot set format %s to child %s',
                           self.getFormat(), model)
            widget.setObjectName("__item%i" % i)
            self.registerConfigDelegate(widget)
            self._children.append(widget)

        frame.layout().addItem(Qt.QSpacerItem(
            0, 0, Qt.QSizePolicy.Minimum, Qt.QSizePolicy.MinimumExpanding))
        self.scrollArea.setWidget(frame)
#        self.scrollArea.setWidgetResizable(True)
        self.scrollArea.setMinimumWidth(frame.layout().sizeHint().width() + 20)
Example #43
0
 def __init__(self, parent=None, designMode=False):
     TaurusWidget.__init__(self, parent=parent, designMode=designMode)
     self.setLayout(Qt.QVBoxLayout())
     self.tree = QConfigEditorModel()
     self.treeview = Qt.QTreeView()
     self.tree.setHorizontalHeaderLabels(
         ['Configuration key', 'type', 'value'])
     self.layout().addWidget(self.treeview)
     self._toolbar = Qt.QToolBar("QConfigViewer Main toolBar")
     self._toolbar.addAction(Qt.QIcon.fromTheme(
         "document-open"), "Open File", self.loadFile)
     self._toolbar.addAction(Qt.QIcon.fromTheme(
         "document-save"), "Save File", self.saveFile)
     self._toolbar.addAction(Qt.QIcon.fromTheme(
         "edit-undo"), "Reload from file", self.restoreOriginal)
     self.layout().setMenuBar(self._toolbar)
     self.setWindowTitle('TaurusConfigEditor')
     self.tree.showError.connect(self._showError)
Example #44
0
 def loadConfigFile(self, ifile=None):
     self.debug('In TaurusDevicePanel.loadConfigFile(%s)' % ifile)
     if isinstance(ifile, string_types) and ifile.endswith('.py'):
         from imp import load_source
         config_file = load_source('config_file', ifile)
         af, cf, im = [
             getattr(config_file, x, None)
             for x in ('AttributeFilters', 'CommandFilters', 'IconMap')
         ]
         if af is not None:
             self.setAttributeFilters(af)
         if cf is not None:
             self.setCommandFilters(cf)
         if im is not None:
             self.setIconMap(im)
     else:
         TaurusWidget.loadConfigFile(self, ifile)
     self.debug('AttributeFilters are:\n%s' % self.getAttributeFilters())
Example #45
0
 def __init__(self, preffix='', suffix='', labels=False, parent=None):
     TaurusWidget.__init__(self, parent)
     self.preffix = preffix
     self.suffix = suffix
     self.labels = labels
     if preffix or suffix:
         self.setWindowTitle('%s ... %s' % (preffix, suffix))
     self.setLayout(Qt.QVBoxLayout())
     self.bar = Qt.QWidget(self)
     self.search = Qt.QLineEdit()
     self.button = Qt.QPushButton('Load')
     self.connect(self.button, Qt.SIGNAL("pressed()"), self.apply_search)
     self.bar.setLayout(Qt.QHBoxLayout())
     self.bar.layout().addWidget(self.search)
     self.bar.layout().addWidget(self.button)
     self.layout().addWidget(self.bar)
     self.form = TaurusForm(self)
     self.layout().addWidget(self.form)
Example #46
0
    def __init__(self, parent=None, designMode=False):
        TaurusWidget.__init__(self, parent, designMode)

        self.ioreg_dev = None

        self.setLayout(Qt.QHBoxLayout())
        self.layout().setContentsMargins(0, 0, 0, 0)
        self.layout().setSpacing(0)

        self.alias_label = TaurusLabel()
        self.alias_label.setBgRole('state')
        self.layout().addWidget(self.alias_label)

        self.read_widget = PoolIORegisterReadWidget()
        self.layout().addWidget(self.read_widget)

        self.write_widget = PoolIORegisterWriteWidget()
        self.layout().addWidget(self.write_widget)
Example #47
0
    def setModel(self, model):
        '''Reimplemented from :meth:`TaurusWidget.setModel`'''
        TaurusWidget.setModel(self, model)
        model_obj = self.getModelObj()

        if model_obj.isWritable() and self.defaultWriteMode != "r":
            self._writeMode = True
        else:
            self.defaultWriteMode = "r"

        if model_obj is not None:
            self._tableView._attr = model_obj
            if model_obj.type in [DataType.Integer, DataType.Float]:
                if self._writeMode:
                    try:
                        default_unit = str(model_obj.wvalue.units)
                    except AttributeError:
                        default_unit = ''
                else:
                    default_unit = str(model_obj.rvalue.units)
                # TODO: fill the combobox with the compatible units
                self._units.addItem("%s" % default_unit)
                self._units.setCurrentIndex(self._units.findText(default_unit))
                self._units.setEnabled(False)
            else:
                self._units.setVisible(False)
            raiseException = False
            if model_obj.data_format == DataFormat._2D:
                try:
                    dim_x, dim_y = numpy.shape(model_obj.rvalue)
                except ValueError:
                    raiseException = True
            elif model_obj.data_format == DataFormat._1D:
                try:
                    dim_x, dim_y = len(model_obj.rvalue), 1
                except ValueError:
                    raiseException = True
            else:
                raiseException = True
            if raiseException:
                raise Exception('rvalue is invalid')
            self._tableView.setModel([dim_x, dim_y])
        self.setWriteMode(self._writeMode)
        self._label.setModel(model)
Example #48
0
    def __init__(self, parent=None):
        TaurusWidget.__init__(self, parent)

        self.loadUi()

        self.statusLabel.setUseParentModel(True)
        self.statusLabel.setModel('/Status')

        self.modeCB.setUseParentModel(True)
        self.modeCB.setModel('/Mode')

        self.type_attribute = None
        self.mode_attribute = None
        self.type_value = None
        self.mode_value = None

        self.modelChanged.connect(self.onModelChanged)
        self.modeChanged.connect(self.onModeChanged)
        self.typeChanged.connect(self.onTypeChanged)
Example #49
0
 def onSetFormatter(self):
     """Reimplemented from TaurusBaseWidget"""
     # Form delegates se to the taurusvalues
     format = TaurusWidget.onSetFormatter(self)
     if format is not None:
         for item in self.getItems():
             rw = item.readWidget(followCompact=True)
             if hasattr(rw, 'setFormat'):
                 rw.setFormat(format)
     return format
Example #50
0
    def __init__(self, parent=None, designMode=False):
        TaurusWidget.__init__(self, parent, designMode=designMode)

        self.loadUi(filename="diffractometeralignment.ui")

        self.selectsignal = SelectSignal()

        self._ui.AlignmentStopButton.clicked.connect(self.stop_movements)
        self._ui.AlignmentStoreReflectionButton.clicked.connect(
            self.store_reflection)

        self._ui.MacroServerConnectionButton.clicked.connect(
            self.open_macroserver_connection_panel)

        self._ui.SelectSignalButton.clicked.connect(
            self.open_selectsignal_panel)

        # Create a global SharedDataManager
        Qt.qApp.SDM = SharedDataManager(self)
Example #51
0
 def getQtDesignerPluginInfo(cls):
     ret = TaurusWidget.getQtDesignerPluginInfo()
     ret['module'] = 'taurus.qt.qtgui.compact'
     ret['group'] = 'Taurus R+W'
     ret['icon'] = "designer:frame.png"
     if (cls.readWClass or cls.readWClass) is None:
         ret['container'] = True  # for base classes
     else:
         # for classes which already define the subwidgets
         ret['container'] = False
     return ret
Example #52
0
    def setModifiableByUser(self, modifiable):
        '''
        sets whether the user can change the contents of the form
        (e.g., via Modify Contents in the context menu)
        Reimplemented from :meth:`TaurusWidget.setModifiableByUser`

        :param modifiable: (bool)

        .. seealso:: :meth:`TaurusWidget.setModifiableByUser`
        '''
        TaurusWidget.setModifiableByUser(self, modifiable)
        self.chooseModelsAction.setEnabled(modifiable)
        self.showButtonsAction.setEnabled(modifiable)
        self.changeLabelsAction.setEnabled(modifiable)
        self.compactModeAction.setEnabled(modifiable)
        for item in self.getItems():
            try:
                item.setModifiableByUser(modifiable)
            except:
                pass
Example #53
0
    def getQtDesignerPluginInfo(cls):
        """Returns pertinent information in order to be able to build a valid
        QtDesigner widget plugin

        :return: (dict) a map with pertinent designer information"""
        ret = TaurusWidget.getQtDesignerPluginInfo()
        ret['module'] = 'taurus.qt.qtgui.plot'
        ret['group'] = 'Taurus Input'
        ret['icon'] = 'designer:arrayedit.png'
        ret['container'] = False
        return ret
Example #54
0
    def __init__(self, parent=None, designMode=False):
        TaurusWidget.__init__(self, parent)

        self.setLayout(Qt.QHBoxLayout())

        # put a widget with a TaurusValue
        w = Qt.QWidget()
        w.setLayout(Qt.QGridLayout())
        self._TaurusValue = TaurusValue(parent=w, designMode=designMode)
        self._TaurusValue.setLabelWidgetClass(
            LabelWidgetDragsDeviceAndAttribute)
        self._TaurusValue.setLabelConfig('<dev_alias>')
        self.layout().addWidget(w)

        #...and a dev button next to the widget
        self._devButton = TaurusDevButton(parent=self, designMode=designMode)
        self._devButton.setText('')
        self.layout().addWidget(self._devButton)

        self.modelChanged.connect(self._updateTaurusValue)
Example #55
0
    def setModel(self, attrs):
        if not attrs:
            for att, col in zip(self.attributes, self._columns):
                att and att.removeListener(col.event_received)
        else:
            try:
                TaurusWidget.setModel(self, attrs[0].rsplit("/", 1)[0])
                self.attributes = [Attribute(a) for a in attrs]

                self.table.setColumnCount(len(attrs))
                fmt = "%s [%s]"
                labels = []
                for a in self.attributes:
                    config = a.getConfig()
                    label = fmt % (config.getLabel(), config.getUnit())
                    labels.append(label)

                self.table.setHorizontalHeaderLabels(labels)
                header = self.table.horizontalHeader()
                header.setResizeMode(QtGui.QHeaderView.Stretch)

                # Check if there are any columns at all
                row_lengths = [len(a.read().value) for a in self.attributes
                               if a.read().quality == PyTango.AttrQuality.ATTR_VALID]
                if not any(row_lengths):
                    return None
                self.table.setRowCount(max(row_lengths))

                self._values = {}
                self._config = {}
                self._columns = []

                for i, att in enumerate(self.attributes):
                    # JFF: this is a workaround for a behavior in Taurus. Just
                    # adding a new listener to each attribute does not work, the
                    # previous ones get removed for some reason.
                    col = AttributeColumn(self, i)
                    self._columns.append(col)  # keep reference to prevent GC
                    att.addListener(col.event_received)
            except PyTango.DevFailed:
                pass
Example #56
0
    def __init__(self, parent=None, designMode=False, defaultWriteMode=None):
        TaurusWidget.__init__(self, parent=parent, designMode=designMode)
        self._tableView = TaurusValuesIOTable(self)
        l = Qt.QGridLayout()
        l.addWidget(self._tableView, 1, 0)
        self._tableView.itemDelegate().editorCreated.connect(
            self._onEditorCreated)

        if defaultWriteMode is None:
            self.defaultWriteMode = "rw"
        else:
            self.defaultWriteMode = defaultWriteMode

        self._label = TaurusLabel()
        self._label.setBgRole('quality')
        self._label.setFgRole('quality')

        self._units = Qt.QComboBox()

        self._applyBT = Qt.QPushButton('Apply')
        self._cancelBT = Qt.QPushButton('Cancel')
        self._applyBT.clicked.connect(self.okClicked)
        self._cancelBT.clicked.connect(self.cancelClicked)

        self._rwModeCB = Qt.QCheckBox()
        self._rwModeCB.setText('Write mode')
        self._rwModeCB.toggled.connect(self.setWriteMode)

        lv = Qt.QHBoxLayout()
        lv.addWidget(self._label)
        lv.addWidget(self._units)
        l.addLayout(lv, 2, 0)
        l.addWidget(self._rwModeCB, 0, 0)
        lv = Qt.QHBoxLayout()
        lv.addWidget(self._applyBT)
        lv.addWidget(self._cancelBT)
        l.addLayout(lv, 3, 0)
        self._writeMode = False
        self.setLayout(l)
        self._initActions()
Example #57
0
    def __init__(self, parent=None):
        TaurusWidget.__init__(self, parent=parent)

        self.plot = ArchivingPlot(self)
        self.legend = ArchivingLegend(self.plot)
        self.modelchooser = None
        self.plot.updateSig[bool, bool].connect(self.updateAll)
        self.t0, self.t1 = 0, 0
        msi = self.modelchooser
        if msi:
            # Connect button
            msi.modelsAdded.connect(onAddXYModel)

        self.pb = Qt.QProgressBar()
        self.pb.setGeometry(0, 0, 300, 25)

        self.info('building layout')
        self.setLayout(Qt.QVBoxLayout())
        self.tc = TangoArchivingTimeSelector()

        l1 = Qt.QSplitter()
        l1.addWidget(self.plot)
        self.plot.setTimeChooser(self.tc)
        l1.addWidget(self.legend)

        l0 = Qt.QWidget()
        l0.setLayout(Qt.QHBoxLayout())
        l0.layout().addWidget(self.tc)

        self.refresh = Qt.QPushButton(Qt.QIcon.fromTheme("view-refresh"),
                                      "refresh tgarch curves")
        self.refresh.clicked.connect(self.onRefresh)

        self.layout().addWidget(l0)
        l0.layout().addWidget(self.refresh)
        self.layout().addWidget(l1, 10)
        self.layout().addWidget(self.pb)

        self.updateProgressBar()
        self.addXYModelsSig.connect(self.addXYModels)
Example #58
0
class Bug169_Test(BaseWidgetTestCase, unittest.TestCase):
    '''
    Test bug169:

        AttributeError: type object 'TaurusConfigurationProxy' has no attribute
        'buildModelName'.

        See: http://sf.net/p/tauruslib/tickets/65/


    .. seealso: :class:`taurus.qt.qtgui.test.base.BaseWidgetTestCase`
    '''
    _klass = TaurusLabel

    def setUp(self):
        BaseWidgetTestCase.setUp(self)
        self._widget.setModel('sys/tg_test/1/double_scalar#label')
        self._expectedModelClass = self._widget.getModelClass()
        self._parent = TaurusWidget()
        self._parent.setModel('sys/tg_test/1')
        self._widget.setUseParentModel(True)
        self._widget.setParent(self._parent)

    def test_bug169(self):
        '''Check if setModel works when using parent model'''
        self._widget.setModel('/double_scalar#label')
        self.assertMaxDeprecations(0)

    def test_relativemodelclass(self):
        '''Check consistency in modelClass when using parent model (re: bug169)
        '''
        try:
            self._widget.setModel('/double_scalar#label')
        finally:
            mc = self._widget.getModelClass()
            msg = ('getModelClass() inconsistency:\n expected: %s\n got: %s' %
                   (self._expectedModelClass, mc))
            self.assertEqual(self._expectedModelClass, mc, msg)
        self.assertMaxDeprecations(0)
Example #59
0
 def setModel(self, circuit):
     print "----------------- MagnetListPanel setModel", circuit
     TaurusWidget.setModel(self, circuit)
     db = PyTango.Database()
     print('------------- 1 ------------')
     if circuit:
         print('------------- 1 ------------')
         magnets = db.get_device_property(circuit,
                                          "MagnetProxies")["MagnetProxies"]
         print('------------- 1 ------------', magnets)
         test_iko = False
         if test_iko:
             if "SQF" in magnets[0]:
                 self.table.setModel(
                     magnets,
                     ["State", "TemperatureInterlock", "shuntResistance"])
             else:
                 self.table.setModel(magnets,
                                     ["State", "TemperatureInterlock"])
         else:
             self.table.setModel(circuit)
             self.table.setModel("%s/%s" % (circuit, 'long_scalar'))
     else:
         self.table.setModel(None)
Example #60
0
    def createConfig(self, allowUnpickable=False):
        '''
        extending  :meth:`TaurusBaseWidget.createConfig`
        :param alllowUnpickable:  (bool)

        :return: (dict<str,object>) configurations (which can be loaded with :meth:`applyConfig`).

        .. seealso: :meth:`TaurusBaseWidget.createConfig`, :meth:`applyConfig`
        '''
        # get the basic config
        configdict = TaurusWidget.createConfig(
            self, allowUnpickable=allowUnpickable)
        # store the splitter config
        configdict['splitter/state'] = self._splitter.saveState().data()
        return configdict