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)
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)