Exemple #1
0
    def init(self):

        self.setHasConfigurationInterface(True)
        self.setAspectRatioMode(Plasma.IgnoreAspectRatio)

        self.settings = self.config()

        self.theme = Plasma.Svg(self)
        self.theme.setImagePath("widgets/background")
        self.setBackgroundHints(Plasma.Applet.DefaultBackground)

        self.layout = QGraphicsGridLayout(self.applet)
        self.layout.setColumnSpacing(0,5.0)

        self.lblTitle = Plasma.Label(self.applet)
        self.lblTitle.nativeWidget().setText(
                                        ki18n("Stuff to get back").toString())
        self.lblTitle.setAlignment(Qt.AlignHCenter)
        self.lblTitle.setStyleSheet("""QLabel {
                                                text-align:center;
                                                font-style: italic;
                                                font-weight: bold;}""")
        self.layout.addItem(self.lblTitle,0,0,1,3)

        self.btnAdd = Plasma.PushButton(self.applet)
        self.btnAdd.nativeWidget().setGuiItem(KStandardGuiItem.Add)
        self.layout.addItem(self.btnAdd,1,0)

        self.btnRemove = Plasma.PushButton(self.applet)
        self.btnRemove.nativeWidget().setGuiItem(KStandardGuiItem.Remove)
        self.layout.addItem(self.btnRemove,1,2)

        self.db = GSBDbModel()

        self.view = Plasma.TreeView(self.applet)
        self.view.setModel(self.db)
        self.view.nativeWidget().setColumnHidden(self.db.IDCOL,True)
        self.view.nativeWidget().setRootIsDecorated(False)
        self.view.nativeWidget().setExpandsOnDoubleClick(False)
        self.view.nativeWidget().setItemsExpandable(False)
        self.view.setStyleSheet("""
            QTreeView {
                background-color: transparent;
                }
                QTreeView::item { padding-top:10px; padding-bottom: 10px; }
            """)
        self.view.nativeWidget().header().resizeSections(
                                                QHeaderView.ResizeToContents)
        self.view.nativeWidget().setItemDelegate(
                                            LoanDelegate(
                                                    self.applet,
                                                    self.view.nativeWidget()))


        self.layout.addItem(self.view,2,0,1,3)

        self.setLayout(self.layout)

        self.btnAdd.clicked.connect(self.add_loan)
        self.btnRemove.clicked.connect(self.remove_loan)
Exemple #2
0
class GSBApplet(plasmascript.Applet):
    def __init__(self,parent,args=None):
        plasmascript.Applet.__init__(self,parent)


    def init(self):

        self.setHasConfigurationInterface(True)
        self.setAspectRatioMode(Plasma.IgnoreAspectRatio)

        self.settings = self.config()

        self.theme = Plasma.Svg(self)
        self.theme.setImagePath("widgets/background")
        self.setBackgroundHints(Plasma.Applet.DefaultBackground)

        self.layout = QGraphicsGridLayout(self.applet)
        self.layout.setColumnSpacing(0,5.0)

        self.lblTitle = Plasma.Label(self.applet)
        self.lblTitle.nativeWidget().setText(
                                        ki18n("Stuff to get back").toString())
        self.lblTitle.setAlignment(Qt.AlignHCenter)
        self.lblTitle.setStyleSheet("""QLabel {
                                                text-align:center;
                                                font-style: italic;
                                                font-weight: bold;}""")
        self.layout.addItem(self.lblTitle,0,0,1,3)

        self.btnAdd = Plasma.PushButton(self.applet)
        self.btnAdd.nativeWidget().setGuiItem(KStandardGuiItem.Add)
        self.layout.addItem(self.btnAdd,1,0)

        self.btnRemove = Plasma.PushButton(self.applet)
        self.btnRemove.nativeWidget().setGuiItem(KStandardGuiItem.Remove)
        self.layout.addItem(self.btnRemove,1,2)

        self.db = GSBDbModel()

        self.view = Plasma.TreeView(self.applet)
        self.view.setModel(self.db)
        self.view.nativeWidget().setColumnHidden(self.db.IDCOL,True)
        self.view.nativeWidget().setRootIsDecorated(False)
        self.view.nativeWidget().setExpandsOnDoubleClick(False)
        self.view.nativeWidget().setItemsExpandable(False)
        self.view.setStyleSheet("""
            QTreeView {
                background-color: transparent;
                }
                QTreeView::item { padding-top:10px; padding-bottom: 10px; }
            """)
        self.view.nativeWidget().header().resizeSections(
                                                QHeaderView.ResizeToContents)
        self.view.nativeWidget().setItemDelegate(
                                            LoanDelegate(
                                                    self.applet,
                                                    self.view.nativeWidget()))


        self.layout.addItem(self.view,2,0,1,3)

        self.setLayout(self.layout)

        self.btnAdd.clicked.connect(self.add_loan)
        self.btnRemove.clicked.connect(self.remove_loan)

    def createConfigurationInterface(self, parent):
        self.configDlg = ConfigDlg(parent, self.applet)
        page = parent.addPage(self.configDlg,
                                ki18n("GetStuffBack Options").toString())
        page.setIcon(KIcon("user-desktop"))

        parent.okClicked.connect(self.configAccepted)

    def showConfigurationInterface(self):
        dialog = KPageDialog()
        dialog.setFaceType(KPageDialog.List)
        dialog.setButtons( KDialog.ButtonCode(KDialog.Ok | KDialog.Cancel) )
        self.createConfigurationInterface(dialog)
        dialog.exec_()

    @pyqtSlot()
    def configAccepted(self):
        grace_period = self.configDlg.spinGrace.value()
        colour = self.configDlg.btnColour.color()

        options = self.settings.group("general")
        options.writeEntry("grace",grace_period)
        options.writeEntry("overdue_colour",colour.name())

    @pyqtSlot()
    def add_loan(self,*args):
        addDlg = AddDlg(self)
        result = addDlg.exec_()
        if result == False: return False
        ln = Loan()
        ln.item_description = unicode(addDlg.lineItemDescription.toPlainText())
        ln.person = unicode(addDlg.linePerson.text())
        ln.date = addDlg.dteDate.dateTime().toPyDateTime()
        ln.expected_date = addDlg.dteExpectedDate.dateTime().toPyDateTime()
        ln.item_type = unicode(addDlg.comboItemType.currentText())
        self.db.add_loan(ln)
        self.db.dataChanged.emit(QModelIndex(),QModelIndex())
        self.db.reset()

    @pyqtSlot()
    def remove_loan(self,*args):
        deleteList = self.view.nativeWidget().selectionModel().selectedIndexes()
        rows = set()
        for index in deleteList:
            row = index.row()
            if row not in rows:
                rows.add(row)
                self.db.removeRow(row)