class Notifier(QObject):
    def __init__(self, parent=None):
        QObject.__init__(self, parent)

        self.tray = KStatusNotifierItem("ksni-test-tool", self)
        self.tray.setCategory(KStatusNotifierItem.Communications)
        self.tray.setIconByName(QString("/usr/share/icons/oxygen/16x16/categories/applications-internet.png"))
        self.tray.setAttentionIconByName(QString("accessories-text-editor"))
        self.tray.setStatus(KStatusNotifierItem.Active)
        self.tray.setToolTipIconByName(QString("/usr/share/icons/oxygen/16x16/categories/applications-internet.png"))

        self.menu = KMenu("KSNI Test Tool")
        self.menu.addAction("Hello", self.onHelloClicked)
        self.menu.addAction("Change Status", self.toggleStatus)
        self.menu.addAction("Hide for some seconds", self.hideForAWhile)
        self.menu.addAction("Switch to pixmap icon", self.usePixmap)
        self.menu.addSeparator()
        self.menu.addAction("Set overlay pixmap", self.setOverlayPixmap)
        self.menu.addAction("Set overlay icon name", self.setOverlayName)
        self.menu.addAction("Remove overlay icon", self.removeOverlay)
        self.tray.setContextMenu(self.menu)

        self.tray.activateRequested.connect(self.onActivated)
        self.tray.scrollRequested.connect(self.onScroll)

    def onActivated(self, show, point):
        print "Activate() called, show="+str(show)+", point="+str(point)

    def onScroll(self, delta, orientation):
        print "Scroll() called, delta="+str(delta)+", orientation="+str(orientation)

    def onHelloClicked(self):
        print "Hello World!"

    def toggleStatus(self):
        if (self.tray.status() == KStatusNotifierItem.Active):
            self.tray.setStatus(KStatusNotifierItem.NeedsAttention)
        else:
            self.tray.setStatus(KStatusNotifierItem.Active)

    def hideForAWhile(self):
        self.tray.setStatus(KStatusNotifierItem.Passive)
        Qt.QTimer.singleShot(2000, self.toggleStatus)

    def usePixmap(self):
        self.tray.setIconByName(QString(""))
        self.tray.setIconByPixmap(Qt.QIcon.fromTheme("accessories-calculator"))

    def setOverlayPixmap(self):
        self.tray.setOverlayIconByName(QString(""))
        self.tray.setOverlayIconByPixmap(Qt.QIcon.fromTheme("dialog-information"))

    def setOverlayName(self):
        self.tray.setOverlayIconByPixmap(Qt.QIcon())
        self.tray.setOverlayIconByName(QString("dialog-error"))

    def removeOverlay(self):
        self.tray.setOverlayIconByName(QString(""))
        self.tray.setOverlayIconByPixmap(Qt.QIcon())
Пример #2
0
class QDDCCIGui(QtGui.QWidget):
    controls = [{
        'tag': 'brightness',
        'name': 'Brightness',
        'id': 0x10,
    }, {
        'tag': 'contrast',
        'name': 'Constrast',
        'id': 0x12,
    }]

    scroll_control = controls[1]

    def __init__(self, busid):
        super(QDDCCIGui, self).__init__()

        self.device = ddcci.DDCCIDevice(busid)
        self.init_ui()

    def init_ui(self):
        grid = QtGui.QGridLayout()
        grid.setSpacing(2)

        for i, control in enumerate(self.controls):
            icon = QtGui.QLabel(self)
            icon.setPixmap(QtGui.QPixmap(asset('%s.png' % control['tag'])))
            icon.setToolTip(control['name'])
            grid.addWidget(icon, i + 1, 0)

            label = QtGui.QLabel(self)
            label.setMinimumWidth(32)
            label.setAlignment(QtCore.Qt.AlignVCenter | QtCore.Qt.AlignRight)
            grid.addWidget(label, i + 1, 1)

            sld = QtGui.QSlider(QtCore.Qt.Horizontal, self)

            sld.label = label
            sld.control = control

            value, max_value = self.device.read(control['id'], True)

            sld.setMinimum(0)
            sld.setMaximum(max_value)
            sld.setValue(value)
            self.update_label(sld)

            sld.setMinimumWidth(150)
            sld.setFocusPolicy(QtCore.Qt.NoFocus)
            sld.valueChanged[int].connect(self.change_value)

            control['slider'] = sld  # FIXME circular reference

            grid.addWidget(sld, i + 1, 2)

        self.setLayout(grid)
        self.setGeometry(300, 300, 280, 70)
        self.setWindowTitle('Qt DDC/CI Gui')
        self.show()

        if self.scroll_control:
            self.tray_icon = KStatusNotifierItem("qddccigui", self)
            self.tray_icon.setIconByPixmap(
                QtGui.QIcon(
                    QtGui.QPixmap(asset('%s.png' %
                                        self.scroll_control['tag']))))
            self.tray_icon.scrollRequested[int, QtCore.Qt.Orientation].\
                connect(self.scroll_requested)

    def change_value(self, value, update=True):
        self.update_label(self.sender())

        if update:
            self.device.write(self.sender().control['id'], value)

    def scroll_requested(self, delta, orientation):
        new_value = self.scroll_control['slider'].value() + delta / 24
        self.scroll_control['slider'].setValue(new_value)

    def update_label(self, sld):
        sld.label.setText('%d%%' % sld.value())
Пример #3
0
class Notifier(QObject):
    def __init__(self, parent=None):
        QObject.__init__(self, parent)

        self.tray = KStatusNotifierItem("ksni-test-tool", self)
        self.tray.setCategory(KStatusNotifierItem.Communications)
        self.tray.setIconByName(
            QString(
                "/usr/share/icons/oxygen/16x16/categories/applications-internet.png"
            ))
        self.tray.setAttentionIconByName(QString("accessories-text-editor"))
        self.tray.setStatus(KStatusNotifierItem.Active)
        self.tray.setToolTipIconByName(
            QString(
                "/usr/share/icons/oxygen/16x16/categories/applications-internet.png"
            ))

        self.menu = KMenu("KSNI Test Tool")
        self.menu.addAction("Hello", self.onHelloClicked)
        self.menu.addAction("Change Status", self.toggleStatus)
        self.menu.addAction("Hide for some seconds", self.hideForAWhile)
        self.menu.addAction("Switch to pixmap icon", self.usePixmap)
        self.menu.addSeparator()
        self.menu.addAction("Set overlay pixmap", self.setOverlayPixmap)
        self.menu.addAction("Set overlay icon name", self.setOverlayName)
        self.menu.addAction("Remove overlay icon", self.removeOverlay)
        self.tray.setContextMenu(self.menu)

        self.tray.activateRequested.connect(self.onActivated)
        self.tray.scrollRequested.connect(self.onScroll)

    def onActivated(self, show, point):
        print "Activate() called, show=" + str(show) + ", point=" + str(point)

    def onScroll(self, delta, orientation):
        print "Scroll() called, delta=" + str(delta) + ", orientation=" + str(
            orientation)

    def onHelloClicked(self):
        print "Hello World!"

    def toggleStatus(self):
        if (self.tray.status() == KStatusNotifierItem.Active):
            self.tray.setStatus(KStatusNotifierItem.NeedsAttention)
        else:
            self.tray.setStatus(KStatusNotifierItem.Active)

    def hideForAWhile(self):
        self.tray.setStatus(KStatusNotifierItem.Passive)
        Qt.QTimer.singleShot(2000, self.toggleStatus)

    def usePixmap(self):
        self.tray.setIconByName(QString(""))
        self.tray.setIconByPixmap(Qt.QIcon.fromTheme("accessories-calculator"))

    def setOverlayPixmap(self):
        self.tray.setOverlayIconByName(QString(""))
        self.tray.setOverlayIconByPixmap(
            Qt.QIcon.fromTheme("dialog-information"))

    def setOverlayName(self):
        self.tray.setOverlayIconByPixmap(Qt.QIcon())
        self.tray.setOverlayIconByName(QString("dialog-error"))

    def removeOverlay(self):
        self.tray.setOverlayIconByName(QString(""))
        self.tray.setOverlayIconByPixmap(Qt.QIcon())
Пример #4
0
class QDDCCIGui(QtGui.QWidget):
    controls = [{
        'tag': 'brightness',
        'name': 'Brightness',
        'id': 0x10,
        }, {
        'tag': 'contrast',
        'name': 'Constrast',
        'id': 0x12,
        }]

    scroll_control = controls[1]

    def __init__(self, busid):
        super(QDDCCIGui, self).__init__()

        self.device = ddcci.DDCCIDevice(busid)
        self.init_ui()

    def init_ui(self):
        grid = QtGui.QGridLayout()
        grid.setSpacing(2)

        for i, control in enumerate(self.controls):
            icon = QtGui.QLabel(self)
            icon.setPixmap(QtGui.QPixmap(asset('%s.png' % control['tag'])))
            icon.setToolTip(control['name'])
            grid.addWidget(icon, i+1, 0)

            label = QtGui.QLabel(self)
            label.setMinimumWidth(32)
            label.setAlignment(QtCore.Qt.AlignVCenter | QtCore.Qt.AlignRight)
            grid.addWidget(label, i+1, 1)

            sld = QtGui.QSlider(QtCore.Qt.Horizontal, self)

            sld.label = label
            sld.control = control

            value, max_value = self.device.read(control['id'], True)

            sld.setMinimum(0)
            sld.setMaximum(max_value)
            sld.setValue(value)
            self.update_label(sld)

            sld.setMinimumWidth(150)
            sld.setFocusPolicy(QtCore.Qt.NoFocus)
            sld.valueChanged[int].connect(self.change_value)

            control['slider'] = sld  # FIXME circular reference

            grid.addWidget(sld, i+1, 2)

        self.setLayout(grid)
        self.setGeometry(300, 300, 280, 70)
        self.setWindowTitle('Qt DDC/CI Gui')
        self.show()

        if self.scroll_control:
            self.tray_icon = KStatusNotifierItem("qddccigui", self)
            self.tray_icon.setIconByPixmap(QtGui.QIcon(QtGui.QPixmap(
                asset('%s.png' % self.scroll_control['tag']))))
            self.tray_icon.scrollRequested[int, QtCore.Qt.Orientation].\
                connect(self.scroll_requested)

    def change_value(self, value, update=True):
        self.update_label(self.sender())

        if update:
            self.device.write(self.sender().control['id'], value)

    def scroll_requested(self, delta, orientation):
        new_value = self.scroll_control['slider'].value() + delta/24
        self.scroll_control['slider'].setValue(new_value)

    def update_label(self, sld):
        sld.label.setText('%d%%' % sld.value())