class TroubleManagerWidget(BaseManagerWidget): def __init__(self, app, parent, *args): BaseManagerWidget.__init__(self, app, parent, TroubleView, 'TroubleManager') self.setCaption('TroubleManager') self.manager = TroubleManager(self.app) self.refreshlistView() self.dialogs = {} print 'trouble app', app, self.app self.resize(400, 600) def initActions(self): collection = self.actionCollection() self.newAction = KStdAction.openNew(self.slotNew, collection) self.quitAction = KStdAction.quit(self.close, collection) def initMenus(self): menu = KPopupMenu(self) self.newAction.plug(menu) self.quitAction.plug(menu) self.menuBar().insertItem('&Main', menu) self.menuBar().insertItem('&Help', self.helpMenu('')) def initlistView(self): self.listView.setRootIsDecorated(True) self.listView.addColumn('trouble group') def initToolbar(self): toolbar = self.toolBar() actions = [self.newAction, self.quitAction] for action in actions: action.plug(toolbar) def refreshlistView(self): self.listView.clear() all = KListViewItem(self.listView, 'all') status = KListViewItem(self.listView, 'status') rows = self.db.select(table='trouble_status') for row in rows: s = KListViewItem(status, row.status) s.status = row.status client = KListViewItem(self.listView, 'client') sel = self.db.stmt.select(fields=['clientid'], table='troubles', clause=Neq('status', 'done')) clause = In('clientid', sel) rows = self.db.select(fields=['clientid', 'client'], table='clients', clause=clause) for row in rows: c = KListViewItem(client, row.client) c.clientid = row.clientid magnet = KListViewItem(self.listView, 'magnet') for m in self.manager.getUsedMagnets(): item = KListViewItem(magnet, m) item.magnet = m untouched = KListViewItem(self.listView, 'untouched') statreport = KListViewItem(self.listView, 'status report') def slotNew(self, title='', data=''): dlg = TroubleDialog(self) dlg.titleEdit.setText(title) dlg.dataEdit.setText(data) self.connect(dlg, SIGNAL('okClicked()'), self.create_ticket) self.dialogs['new-trouble'] = dlg def create_trouble(self): dlg = self.dialogs['new-trouble'] title = str(dlg.titleEdit.text()) data = str(dlg.dataEdit.text()) if data and title: self.manager.create_ticket(title, data) self.refreshlistView() elif title: KMessageBox.error(self, "just a title won't do.") self.slotNew(title=title) elif data: KMessageBox.error(self, "You also need a title.") self.slotNew(data=data) else: KMessageBox.information(self, 'Nothing Done.') def selectionChanged(self): current = self.listView.currentItem() print current if hasattr(current, 'troubleid'): self.view.setID(current.troubleid) elif hasattr(current, 'clientid'): clientid = current.clientid self.view.setID(clause=Eq('clientid', clientid)) elif hasattr(current, 'status'): self.view.setID(clause=Eq('status', current.status)) elif hasattr(current, 'magnet'): troubleid = self.manager.getTroubleIdByMagnet(current.magnet) self.view.setID(clause=Eq('troubleid', troubleid)) elif str(current.text(0)) == 'all': self.view.setID(None) elif str(current.text(0)) == 'untouched': print 'hey hey hey, untouched' self.view.setID(clause=Eq('status', 'untouched')) elif str(current.text(0)) == 'status report': self.view.showStatusReport()