예제 #1
0
 def createWidget(self, parent, client):
     if self.value is None:
         self.value = 30 * 60
     self._widget = QWidget(parent)
     layout = QHBoxLayout()
     self._widget.number = QSpinBox(self._widget)
     self._widget.number.setValue(30)
     self._widget.number.setMinimum(1)
     self._widget.number.setMaximum(10000)
     self._widget.unit = QComboBox(self._widget)
     self._widget.unit.addItems(['sec', 'min', 'hr'])
     self._widget.unit.setCurrentIndex(1)
     layout.addWidget(self._widget.number)
     layout.addWidget(self._widget.unit)
     layout.setContentsMargins(0, 0, 0, 0)
     self._widget.setLayout(layout)
     self._widget.number.valueChanged.connect(self._updateValue)
     self._widget.unit.currentIndexChanged.connect(self._updateValue)
     self._widget.setMinimumWidth(120)
     if self.value is not None:
         if self.value % 3600 == 0:
             self._widget.number.setValue(self.value // 3600)
             self._widget.unit.setCurrentIndex(2)
         elif self.value % 60 == 0:
             self._widget.number.setValue(self.value // 60)
             self._widget.unit.setCurrentIndex(1)
         else:
             self._widget.number.setValue(self.value)
             self._widget.unit.setCurrentIndex(0)
     return self._widget
예제 #2
0
 def __init__(self,
              parent,
              types,
              curvalue,
              client,
              allow_enter=False,
              valinfo=None):
     QWidget.__init__(self, parent)
     layout = self._layout = QGridLayout()
     layout.setContentsMargins(0, 0, 0, 0)
     self._widgets = []
     if valinfo is not None:
         for i, info in enumerate(valinfo):
             layout.addWidget(QLabel(info.name), 0, i)
     for i, (typ, val) in enumerate(zip(types, curvalue)):
         widget = create(self,
                         typ,
                         val,
                         client=client,
                         allow_enter=allow_enter)
         self._widgets.append(widget)
         widget.valueModified.connect(self.valueModified)
         if allow_enter:
             widget.valueChosen.connect(
                 lambda val: self.valueChosen.emit(self.getValue()))
         layout.addWidget(widget, 1, i)
     self.setLayout(layout)
예제 #3
0
    def __init__(self, item, window, menuwindow, parent):
        from nicos.clients.gui.panels.utils import createWindowItem
        QMainWindow.__init__(self, parent)
        self.user_color = window.user_color
        self.mainwindow = window.mainwindow
        self.log = NicosLogger('AuxiliarySubWindow')
        self.log.parent = self.mainwindow.log

        self.panels = []

        # we have to nest one step to get consistent layout spacing
        # around the central widget
        central = QWidget(self)
        layout = QVBoxLayout()
        # only keep margin at the top (below the tabs)
        layout.setContentsMargins(0, 6, 0, 0)
        if len(item) == 1:
            (subitem, setupSpec) = item + (None, )
        else:
            (subitem, setupSpec) = item
        it = createWindowItem(subitem, window, menuwindow, self, self.log)
        if it:
            if isinstance(it, (
                    Panel,
                    QSplitter,
            )):
                if isinstance(it, Panel):
                    it.hideTitle()
                # if tab has its own setups overwrite panels setups
                if setupSpec:
                    it.setSetups(setupSpec)
                it.setWidgetVisible.connect(parent.setWidgetVisibleSlot)
            layout.addWidget(it)
            central.setLayout(layout)
            self.setCentralWidget(central)
예제 #4
0
 def __init__(self,
              parent,
              keys,
              types,
              curvalue,
              client,
              allow_enter=False):
     QWidget.__init__(self, parent)
     layout = self._layout = QFormLayout()
     layout.setContentsMargins(0, 0, 0, 0)
     self.keys = keys
     self._widgets = []
     for (key, typ, val) in zip(keys, types, curvalue.values()):
         widget = create(self,
                         typ,
                         val,
                         client=client,
                         allow_enter=allow_enter)
         self._widgets.append(widget)
         widget.valueModified.connect(self.valueModified)
         if allow_enter:
             widget.valueChosen.connect(
                 lambda val: self.valueChosen.emit(self.getValue()))
         layout.addRow(key, widget)
     self.setLayout(layout)
예제 #5
0
    def __init__(self, parent, client, **settings):
        QMainWindow.__init__(self, parent)
        self.client = client
        self.setWindowTitle(' ')  # window title is unnecessary
        flags = self.windowFlags()
        flags |= Qt.WindowStaysOnTopHint
        flags ^= Qt.WindowMinimizeButtonHint
        self.setWindowFlags(flags)

        self.sgroup = SettingGroup('EstopTool')
        with self.sgroup as settings:
            self.restoreGeometry(settings.value('geometry', '', QByteArray))

        icon = QIcon(':/estop')
        icon.addFile(':/estopdown', mode=QIcon.Active)
        self.btn = PicButton(icon, self)

        widget = QWidget(self)
        layout = QHBoxLayout()
        layout.addWidget(self.btn)
        layout.setContentsMargins(3, 3, 3, 3)
        widget.setLayout(layout)
        self.setCentralWidget(widget)
        self.btn.clicked.connect(self.dostop)
        self.setFixedSize(self.minimumSize())
        self.show()
예제 #6
0
파일: __init__.py 프로젝트: ess-dmsc/nicos
    def __init__(self, parent):
        QWidget.__init__(self, parent)

        self._arrays = None
        self._plotcount = 1
        # self._axesrange = (1, 1)  # y, x (rows, cols)
        self._axesrange = {'x': (0, 1, 2), 'y': (0, 1, 2)}
        self._fixedsize = False
        self._axesratio = 1.0
        self._logscale = False
        self._rois = {}
        self._saveName = None

        layout = QHBoxLayout()
        self.gr = GRWidget(self)
        layout.addWidget(self.gr)
        self.setLayout(layout)

        self.plot = Plot(self, viewport=(0.1, 0.95, 0.1, 0.95))
        self.axes = Axes(self,
                         viewport=self.plot.viewport,
                         xdual=True,
                         ydual=True)
        self.plot.addAxes(self.axes)
        self.gr.addPlot(self.plot)
예제 #7
0
파일: tas.py 프로젝트: umithardal/nicos
    def __init__(self, parent, designMode=False):
        QWidget.__init__(self, parent)
        NicosWidget.__init__(self)

        # default values (used when no such devices are configured)
        self.values = {
            'mth': -45,
            'mtt': -90,
            'sth': 30,
            'stt': 60,
            'ath': -45,
            'att': -90,
            'Lms': 1000,
            'Lsa': 580,
            'Lad': 400,
        }
        self.targets = self.values.copy()
        self.status = {
            'mth': OK,
            'mtt': OK,
            'sth': OK,
            'stt': OK,
            'ath': OK,
            'att': OK,
        }
        self._keymap = {}
        self._statuskeymap = {}
        self._targetkeymap = {}
예제 #8
0
    def __init__(self, parent, designMode=False):
        self._curval = [0, 0, 0, 0]
        self._curstatus = OK
        self._opmode = 'offcentered'

        QWidget.__init__(self, parent)
        NicosWidget.__init__(self)
예제 #9
0
    def __init__(self, parent, designMode=False):
        self._curstr = ''
        self._curstatus = OK
        self._fixed = ''

        QWidget.__init__(self, parent)
        NicosWidget.__init__(self)
예제 #10
0
 def __init__(self, parent=None):
     QWidget.__init__(self, parent)
     uic.loadUi(
         path.join(path.dirname(path.abspath(__file__)), 'ui',
                   'devicewidget.ui'), self)
     self.parameters = {}
     self.pushButtonAdd.clicked.connect(self.addParameter)
예제 #11
0
 def __init__(self, parent=None):
     QWidget.__init__(self, parent)
     loadUi(self, self.controlsui)
     for w in (self.foilLabel, self.foilBox, self.timeChannelLabel,
               self.timeChannelBox):
         w.setHidden(True)
     self.singleSlidesBox.setDisabled(True)
     self._foilsorder = list(range(self.foilsnumber))
예제 #12
0
 def __init__(self, parent, client, uifile):
     self.client = client
     QWidget.__init__(self, parent)
     loadUi(self, uifile)
     loadUi(self.buttons, 'cmdlets/buttons.ui')
     self.buttons.upBtn.clicked.connect(self.cmdletUp)
     self.buttons.downBtn.clicked.connect(self.cmdletDown)
     self.buttons.delBtn.clicked.connect(self.cmdletRemove)
예제 #13
0
    def __init__(self, parent, designMode=False):
        # det1pos, det1shift, det1tilt, det2pos
        self._curval = [0, 0, 0, 0]
        self._curstr = ['', '', '', '']
        self._curstatus = [OK, OK, OK, OK]

        QWidget.__init__(self, parent)
        NicosWidget.__init__(self)
예제 #14
0
    def __init__(self, parent, designMode=False):
        # coll_in, coll_out, ap_20, ap_14, ap_8, ap_4, ap_2, pol_in, pol_out
        self._curval = [0, 0, (0, 0), (0, 0), (0, 0), (0, 0), (0, 0), 0, 0]
        self._curstr = ['', '', '', '', '', '', '', '', '']
        self._curstatus = [OK, OK, OK, OK, OK, OK, OK, OK, OK]

        QWidget.__init__(self, parent)
        NicosWidget.__init__(self)
예제 #15
0
    def __init__(self, parent, designMode=False):
        # z, x, y, small_x, small_y
        self._curval = [0, 0, 0, 0, 0]
        self._curstr = ['', '', '', '', '']
        self._curstatus = [OK, OK, OK, OK, OK]

        QWidget.__init__(self, parent)
        NicosWidget.__init__(self)
예제 #16
0
    def __init__(self, parent, designMode=False):
        # lens_in, lens_out
        self._curval = [0, 0]
        self._curstr = ['', '']
        self._curstatus = [OK, OK]

        QWidget.__init__(self, parent)
        NicosWidget.__init__(self)
예제 #17
0
 def __init__(self, parent, designMode=False, **kwds):
     self._inner = None
     QWidget.__init__(self, parent, **kwds)
     NicosWidget.__init__(self)
     self._layout = QHBoxLayout()
     self._layout.setContentsMargins(0, 0, 0, 0)
     self.setLayout(self._layout)
     if designMode:
         self._layout.insertWidget(0, QLabel('(Value Editor)', self))
예제 #18
0
 def __init__(self, parent, designMode=False, **kwds):
     QWidget.__init__(self, parent, **kwds)
     NicosWidget.__init__(self)
     self._entries = []
     self._vlayout = QVBoxLayout()
     self._vlayout.setContentsMargins(0, 0, 0, 0)
     self.setLayout(self._vlayout)
     self._add()
     self._designer = designMode
예제 #19
0
    def __init__(self, parent=None):
        QWidget.__init__(self, parent)

        self.canvas = FigureCanvas(Figure(figsize=(20, 16)))
        self._static_ax = self.canvas.figure.subplots()

        layout = QVBoxLayout()
        layout.addWidget(self.canvas)
        self.setLayout(layout)
예제 #20
0
 def __init__(self, parent, inner, annotation):
     QWidget.__init__(self, parent)
     layout = self._layout = QHBoxLayout()
     layout.setContentsMargins(0, 0, 0, 0)
     self._inner = inner
     self._inner.valueModified.connect(self.valueModified)
     self._inner.valueChosen.connect(self.valueChosen)
     layout.addWidget(inner)
     layout.addWidget(QLabel(annotation, parent))
     self.setLayout(layout)
예제 #21
0
    def __init__(self, parent, client, devs):
        self.client = client
        self.devs = devs
        QWidget.__init__(self, parent)
        loadUi(self, findResource('nicos_mlz/kws1/gui/devices_one.ui'))

        self.table.setColumnCount(len(devs))
        self.table.setHorizontalHeaderLabels(devs)
        self._edit = None
        self._rows = []
예제 #22
0
class MeasTime(MeasElement):
    """Element for selecting measurement time in different time units."""

    LABEL = 'Time'

    def createWidget(self, parent, client):
        if self.value is None:
            self.value = 30 * 60
        self._widget = QWidget(parent)
        layout = QHBoxLayout()
        self._widget.number = QSpinBox(self._widget)
        self._widget.number.setValue(30)
        self._widget.number.setMinimum(1)
        self._widget.number.setMaximum(10000)
        self._widget.unit = QComboBox(self._widget)
        self._widget.unit.addItems(['sec', 'min', 'hr'])
        self._widget.unit.setCurrentIndex(1)
        layout.addWidget(self._widget.number)
        layout.addWidget(self._widget.unit)
        layout.setContentsMargins(0, 0, 0, 0)
        self._widget.setLayout(layout)
        self._widget.number.valueChanged.connect(self._updateValue)
        self._widget.unit.currentIndexChanged.connect(self._updateValue)
        self._widget.setMinimumWidth(120)
        if self.value is not None:
            if self.value % 3600 == 0:
                self._widget.number.setValue(self.value // 3600)
                self._widget.unit.setCurrentIndex(2)
            elif self.value % 60 == 0:
                self._widget.number.setValue(self.value // 60)
                self._widget.unit.setCurrentIndex(1)
            else:
                self._widget.number.setValue(self.value)
                self._widget.unit.setCurrentIndex(0)
        return self._widget

    def _updateValue(self, *args):
        unit = self._widget.unit.currentIndex()
        number = self._widget.number.value()
        if unit == 0:
            self.value = number
        elif unit == 1:
            self.value = number * 60
        else:
            self.value = number * 3600
        self.changed.emit(self.value)

    def getDispValue(self):
        # TODO: better display here
        if self.value % 3600 == 0:
            return '%d hr' % (self.value // 3600)
        elif self.value % 60 == 0:
            return '%d min' % (self.value // 60)
        else:
            return '%d sec' % self.value
예제 #23
0
 def __init__(self, parent, values):
     QWidget.__init__(self, parent)
     layout = QHBoxLayout()
     layout.setContentsMargins(0, 0, 0, 0)
     self._values = {}
     for value in values:
         btn = QPushButton(str(value), self)
         self._values[btn] = value
         btn.clicked.connect(self.on_button_pressed)
         layout.addWidget(btn)
     self.setLayout(layout)
예제 #24
0
파일: display.py 프로젝트: ess-dmsc/nicos
 def __init__(self, parent=None, designMode=False, **kwds):
     QWidget.__init__(self, parent, **kwds)
     NicosWidget.__init__(self)
     self._last_mtime = None
     self.namelabel = QLabel(self)
     self.namelabel.setAlignment(Qt.AlignHCenter)
     self.piclabel = QLabel(self)
     self.piclabel.setScaledContents(True)
     layout = QVBoxLayout()
     layout.setContentsMargins(0, 0, 0, 0)
     layout.addWidget(self.piclabel, 1)
     self.setLayout(layout)
예제 #25
0
파일: editor.py 프로젝트: ess-dmsc/nicos
    def __init__(self, parent, panel, client):
        self.client = client
        QWidget.__init__(self, parent)
        loadUi(self, 'panels/simresult.ui')
        self.simOutStack.setCurrentIndex(0)
        hdr = self.simRanges.header()
        hdr.setSectionResizeMode(QHeaderView.ResizeToContents)

        self.panel = panel
        self.simuuid = None
        client.simmessage.connect(self.on_client_simmessage)
        client.simresult.connect(self.on_client_simresult)
예제 #26
0
 def __init__(self, item, window, menuwindow, topwindow, parent=None):
     from nicos.clients.gui.panels.utils import createWindowItem
     QWidget.__init__(self, parent)
     self.log = NicosLogger(self.logger_name)
     self.log.parent = topwindow.log
     layout = self.layout_type(parent)
     SetupDepPanelMixin.__init__(self, window.client, item.options)
     for subitem in item.children:
         sub = createWindowItem(subitem, window, menuwindow, topwindow,
                                self.log)
         if sub:
             layout.addWidget(sub)
     self.setLayout(layout)
예제 #27
0
    def __init__(self, name='unknown', parent=None, **kwds):
        QWidget.__init__(self, parent)
        loadUi(self,
               findResource('nicos_mlz/reseda/gui/mieze_display_foil.ui'))
        # set name
        self.name = name
        self.groupBox.setTitle(name)

        # insert plot widget + store reference
        self.plotwidget = MiniPlot(self)
        self.plotwidget.setSizePolicy(QSizePolicy.MinimumExpanding,
                                      QSizePolicy.MinimumExpanding)
        self.verticalLayout.insertWidget(0, self.plotwidget)
        self.do_update([(0, 0, 0, 0), (0, 0, 0, 0), [0] * 16] * 2)
예제 #28
0
파일: plots.py 프로젝트: umithardal/nicos
    def __init__(self, parent, designMode=False):
        self.ncurves = 0
        self.ctimers = {}
        self.keyindices = {}
        self.plotcurves = {}
        self.series = {}
        self.legendobj = None

        # X label settings, default values for default window of 3600s
        self._showdate = False
        self._showsecs = False

        QWidget.__init__(self, parent)
        NicosWidget.__init__(self)
예제 #29
0
 def __init__(self, title, xlabel, ylabel, name='unknown', parent=None,
              **kwds):
     QWidget.__init__(self, parent)
     self.name = name
     parent.setLayout(QVBoxLayout())
     self.plot = MiniPlot(xlabel, ylabel, self, color1=COLOR_BLACK,
                          color2=COLOR_RED)
     titleLabel = QLabel(title)
     titleLabel.setAlignment(Qt.AlignCenter)
     titleLabel.setStyleSheet('QLabel {font-weight: 600}')
     parent.layout().insertWidget(0, titleLabel)
     self.plot.setSizePolicy(QSizePolicy.MinimumExpanding,
                             QSizePolicy.MinimumExpanding)
     parent.layout().insertWidget(1, self.plot)
예제 #30
0
    def __init__(self, setup, availablesetups, parent=None):
        QWidget.__init__(self, parent)
        uic.loadUi(path.join(path.dirname(path.abspath(__file__)),
                             'ui', 'setupwidget.ui'), self)

        # keys taken from nicos_demo/skeleton/setups/system.py
        self.sysconfigKeys = ['cache',
                              'instrument',
                              'experiment',
                              'datasinks',
                              'notifiers']

        self.lineEditDescription.textEdited.connect(self.editedSetup.emit)
        self.treeWidgetSysconfig.editedSetup.connect(self.editedSetup.emit)
        self.comboBoxGroup.activated.connect(self.editedSetup.emit)

        self.lineEditDescription.setText(setup.description)
        self.comboBoxGroup.setCurrentIndex(
            self.comboBoxGroup.findText(setup.group))
        for includeItem in setup.includes:
            self.listWidgetIncludes.addItem(includeItem)
        for excludeItem in setup.excludes:
            self.listWidgetExcludes.addItem(excludeItem)
        for moduleItem in setup.modules:
            self.listWidgetModules.addItem(moduleItem)

        topLevelItems = []
        for key in self.sysconfigKeys:
            if key in setup.sysconfig:
                topLevelItems.append(QTreeWidgetItem([key]))
        self.treeWidgetSysconfig.addTopLevelItems(topLevelItems)

        for item in topLevelItems:
            if isinstance(setup.sysconfig[item.text(0)], list):
                for listItem in setup.sysconfig[item.text(0)]:
                    item.addChild(QTreeWidgetItem([listItem]))
            else:
                item.addChild(QTreeWidgetItem(
                    [setup.sysconfig[item.text(0)]]))

        if self.treeWidgetSysconfig.topLevelItemCount() == len(
                self.sysconfigKeys):  # can't add any unknown keys
            self.pushButtonAddSysconfig.setEnabled(False)
        else:
            self.pushButtonAddSysconfig.setEnabled(True)
        self.textEditStartupCode.blockSignals(True)
        self.textEditStartupCode.setPlainText(setup.startupcode[1:-1])
        self.textEditStartupCode.blockSignals(False)
        self.availablesetups = availablesetups