def init(self): l = Qt.QGridLayout() l.setContentsMargins(0, 0, 0, 0) self.setLayout(l) comboBox = Qt.QComboBox() comboBox.addItem(getElementTypeIcon(ElemType.Attribute), "Attribute", ElemType.Attribute) comboBox.addItem(getElementTypeIcon(ElemType.Device), "Device", ElemType.Device) comboBox.addItem(getElementTypeIcon(ElemType.DeviceClass), "Device type", ElemType.DeviceClass) comboBox.addItem(getElementTypeIcon(ElemType.Server), "Server", ElemType.Server) l.addWidget(Qt.QLabel("Filter for:"), 0, 0) l.addWidget(comboBox, 0, 1) import trees self._deviceEdit = Qt.QComboBox() self._deviceEdit.setEditable(True) self._deviceEdit.setMaxVisibleItems(10) self._deviceEdit.setInsertPolicy(Qt.QComboBox.InsertAtTop) self._deviceDomainEdit = Qt.QLineEdit() self._deviceFamilyEdit = Qt.QLineEdit() self._deviceMemberEdit = Qt.QLineEdit() self._deviceClass = Qt.QLineEdit() self._serverEdit = Qt.QLineEdit() self._serverNameEdit = Qt.QLineEdit() self._serverInstanceEdit = Qt.QLineEdit() self._attributeEdit = Qt.QLineEdit() lbl = Qt.QLabel("Device type:") l.addWidget(lbl, 1, 0) l.setAlignment(lbl, Qt.Qt.AlignRight) l.addWidget(self._deviceClass, 1, 1) l.addWidget(Qt.QLabel("Device:"), 2, 0) l.addWidget(self._deviceEdit, 2, 1) l.addWidget(Qt.QLabel("Device domain:"), 3, 0) l.addWidget(self._deviceDomainEdit, 3, 1) l.addWidget(Qt.QLabel("Device family:"), 4, 0) l.addWidget(self._deviceFamilyEdit, 4, 1) l.addWidget(Qt.QLabel("Device member:"), 5, 0) l.addWidget(self._deviceMemberEdit, 5, 1) l.addWidget(Qt.QLabel("Server:"), 6, 0) l.addWidget(self._serverEdit, 6, 1) l.addWidget(Qt.QLabel("Server name:"), 7, 0) l.addWidget(self._serverNameEdit, 7, 1) l.addWidget(Qt.QLabel("Server instance:"), 8, 0) l.addWidget(self._serverInstanceEdit, 8, 1) l.addWidget(Qt.QLabel("Attribute:"), 9, 0) l.addWidget(self._attributeEdit, 9, 1)
def init(self): l = Qt.QVBoxLayout() self.setLayout(l) panel = self._mainPanel = Qt.QWidget() l.addWidget(panel, 1) this_dir = os.path.dirname(os.path.abspath(__file__)) ui_filename = os.path.join(this_dir, 'ui', 'TaurusFilterPanel.ui') self.ui = ui = loadUi(ui_filename, baseinstance=panel) comboBox = ui.filterTypeCombo comboBox.addItem(getElementTypeIcon(ElemType.Attribute), "Attribute", ElemType.Attribute) comboBox.addItem(getElementTypeIcon(ElemType.Device), "Device", ElemType.Device) comboBox.addItem(getElementTypeIcon(ElemType.DeviceClass), "Device type", ElemType.DeviceClass) comboBox.addItem(getElementTypeIcon(ElemType.Server), "Server", ElemType.Server) clickedSig = Qt.SIGNAL("clicked()") idxChangedSig = Qt.SIGNAL("currentIndexChanged(int)") ui.serverNameCombo.currentIndexChanged.connect( self._updateServerInstanceCombo) ui.deviceDomainCombo.currentIndexChanged.connect( self._updateDeviceFamilyCombo) ui.deviceFamilyCombo.currentIndexChanged.connect( self._updateDeviceMemberCombo) class clearSelection(object): def __init__(self, cb): self._cb = cb def __call__(self): self._cb.setCurrentIndex(-1) clear_icon = Qt.QIcon.fromTheme("edit-clear") for combo, clearButton in zip(self.combos(), self.clearButtons()): combo.currentIndexChanged.connect(self._updateStatusBar) clearButton.clicked.connect(clearSelection(combo)) clearButton.setIcon(clear_icon) sb = self._statusbar = Qt.QStatusBar() sb.setSizeGripEnabled(False) l.addWidget(sb) sbWarningMsg = self._sbWarningMsg = _MessageWidget() sbWarningMsg.setVisible(False) sb.addWidget(sbWarningMsg)
def main_TaurusDbTableWidget(host, perspective=TaurusElementType.Device): w = TaurusDbTableWidget(perspective=perspective) w.setWindowIcon(getElementTypeIcon(perspective)) w.setWindowTitle("A Taurus Table Example") w.setModel(host) w.show() return w
def main_TaurusTreePanel(host): w = _TaurusTreePanel() w.setWindowIcon(getElementTypeIcon(TaurusElementType.Device)) w.setWindowTitle("A Taurus Tree Example") w.setModel(host) w.show() return w
def setSrc(self, src): '''processes the src and sets the values of _src, display, icon and ok attributes''' if src is None: self._src, self.display, self.icon, self.ok = '', '(Empty)', Qt.QIcon( ), True return src = str(src).strip() if src == self._src: return self._src = src # empty if src == '': self.display, self.icon, self.ok = '(Empty)', Qt.QIcon(), True return # TODO tango-centric. For tango devices try: dev = taurus.Device(src) if dev.getDeviceProxy() is not None: self.display, self.icon, self.ok = dev.getSimpleName( ), getElementTypeIcon(TaurusElementType.Device), True return else: self.display, self.icon, self.ok = src, Qt.QIcon.fromTheme( 'network-error'), False return except: # for tango attributes try: attr = taurus.Attribute(src) dev = attr.getParentObj() except TaurusException: self.display, self.icon, self.ok = src, Qt.QIcon.fromTheme( 'dialog-warning'), False return except Exception: # @todo: this catchall except is here as an emergency bugfix, but should probably be narrowed to PyTango DevFailed. self.display, self.icon, self.ok = src, Qt.QIcon.fromTheme( 'network-error'), False return if getSchemeFromName(attr.getFullName()) == "tango" and \ dev.getDeviceProxy() is None: self.display, self.icon, self.ok = src, Qt.QIcon.fromTheme( 'network-error'), False return self.display, self.icon, self.ok = attr.getSimpleName( ), getElementTypeIcon(TaurusElementType.Attribute), True
def _updateServerCombo(self, index=None): combo = self.ui.serverCombo combo.clear() db_cache = self._db_cache() if db_cache is None: return servers = db_cache.servers() icon = getElementTypeIcon(ElemType.Server) for serverName in sorted(servers): serverInfo = servers[serverName] combo.addItem(icon, serverName, serverInfo) combo.setCurrentIndex(-1)
def _updateDeviceTypeCombo(self, index=None): combo = self.ui.deviceTypeCombo combo.clear() db_cache = self._db_cache() if db_cache is None: return deviceKlasses = db_cache.klasses() icon = getElementTypeIcon(ElemType.DeviceClass) for klassName in sorted(deviceKlasses): klassInfo = deviceKlasses[klassName] combo.addItem(icon, klassName, klassInfo) combo.setCurrentIndex(-1)
def _updateDeviceDomainCombo(self, index=None): combo = self.ui.deviceDomainCombo combo.clear() db_cache = self._db_cache() if db_cache is None: return domains = db_cache.getDeviceDomainNames() domains.sort() icon = getElementTypeIcon(ElemType.Domain) for domain in domains: combo.addItem(icon, domain) combo.setCurrentIndex(-1)
def _updateDeviceNameCombo(self, index=None): combo = self.ui.deviceNameCombo combo.clear() db_cache = self._db_cache() if db_cache is None: return devices = db_cache.devices() icon = getElementTypeIcon(ElemType.Device) for deviceName in sorted(devices): deviceInfo = devices[deviceName] combo.addItem(icon, deviceName, deviceInfo) combo.setCurrentIndex(-1)
def addFilterHeader(self): label = Qt.QLabel("Type:") comboBox = Qt.QComboBox() comboBox.addItem(getElementTypeIcon(ElemType.Attribute), "Attribute", ElemType.Attribute) comboBox.addItem(getElementTypeIcon(ElemType.Device), "Device", ElemType.Device) comboBox.addItem(getElementTypeIcon(ElemType.DeviceClass), "Device type", ElemType.DeviceClass) comboBox.addItem(getElementTypeIcon(ElemType.Server), "Server", ElemType.Server) comboBox.addItem("Any") previewButton = Qt.QPushButton("Preview") previewButton.clicked.connect(self.onPreview) field = Qt.QWidget() l = Qt.QHBoxLayout() field.setLayout(l) l.addWidget(label) l.addWidget(comboBox) l.addWidget(previewButton) l.addStretch(1) self.layout().addWidget(field)
def _fillComboBox(self, comboBox): comboBox.addItem(getElementTypeIcon(ElemType.Attribute), "Attribute", ElemType.Attribute) comboBox.addItem(getElementTypeIcon(ElemType.Device), "Device", ElemType.Device) comboBox.addItem(getElementTypeIcon(ElemType.DeviceClass), "Device type", ElemType.DeviceClass) comboBox.addItem(getElementTypeIcon(ElemType.Domain), "Domain", ElemType.Domain) comboBox.addItem(getElementTypeIcon(ElemType.Family), "Family", ElemType.Family) comboBox.addItem(getElementTypeIcon(ElemType.Member), "Member", ElemType.Member) comboBox.addItem(getElementTypeIcon(ElemType.Server), "Server", ElemType.Server) comboBox.addItem(getElementTypeIcon(ElemType.ServerName), "Server Name", ElemType.ServerName) comboBox.addItem(getElementTypeIcon(ElemType.ServerInstance), "Server Instance", ElemType.ServerInstance)
def _updateDeviceFamilyCombo(self, index=None): combo = self.ui.deviceFamilyCombo combo.clear() db_cache = self._db_cache() if db_cache is None: return deviceDomain = str(self.ui.deviceDomainCombo.currentText()) if deviceDomain == "": return families = db_cache.getDeviceFamilyNames(deviceDomain) families.sort() icon = getElementTypeIcon(ElemType.Family) for family in families: combo.addItem(icon, family) combo.setCurrentIndex(-1)
def _updateServerNameCombo(self, index=None): combo = self.ui.serverNameCombo combo.clear() db_cache = self._db_cache() if db_cache is None: return servers = db_cache.servers() serverNames = [] for server in servers.values(): name = server.serverName() if name not in serverNames: serverNames.append(name) serverNames.sort() icon = getElementTypeIcon(ElemType.ServerName) for serverName in serverNames: combo.addItem(icon, serverName) combo.setCurrentIndex(-1)
def _updateDeviceMemberCombo(self, index=None): combo = self.ui.deviceMemberCombo combo.clear() db_cache = self._db_cache() if db_cache is None: return deviceDomain = str(self.ui.deviceDomainCombo.currentText()) if deviceDomain == "": return deviceFamily = str(self.ui.deviceFamilyCombo.currentText()) if deviceFamily == "": return members = db_cache.getDeviceMemberNames(deviceDomain, deviceFamily) members.sort() icon = getElementTypeIcon(ElemType.Member) for member in members: combo.addItem(icon, member) combo.setCurrentIndex(-1)
def _updateServerInstanceCombo(self, index=None): combo = self.ui.serverInstanceCombo combo.clear() db_cache = self._db_cache() if db_cache is None: return if index is None or index == -1: return serverName = str(self.sender().currentText()) servers = db_cache.servers() serverInstances = [] for server in servers.values(): if server.serverName() == serverName: serverInstances.append(server.serverInstance()) serverInstances.sort() icon = getElementTypeIcon(ElemType.ServerInstance) for serverInstance in serverInstances: combo.addItem(icon, serverInstance) combo.setCurrentIndex(-1)
def getElementTypeIcon(*args, **kwargs): """Wrapper to prevent loading qtgui when this module is imported""" from taurus.qt.qtgui.icon import getElementTypeIcon return getElementTypeIcon(*args, **kwargs)
def roleIcon(self, taurus_role): return getElementTypeIcon(taurus_role)