class BaseWorksEntryFrame(QFrame): def __init__(self, parent, name='BaseWorksEntryFrame'): QFrame.__init__(self, parent, name) margin = 0 space = 1 self.grid = QGridLayout(self, 6, 1, margin, space) self.worktype_lbl = QLabel('Work Type', self) self.worktype_entry = KLineEdit('website', self) self.title_lbl = QLabel('Title', self) self.title_entry = KLineEdit('', self) self.url_lbl = QLabel('Url', self) self.url_entry = KLineEdit('', self) row = 0 for widget in [self.worktype_lbl, self.worktype_entry, self.title_lbl, self.title_entry, self.url_lbl, self.url_entry]: self.grid.addWidget(widget, row, 0) row += 1 def get_data(self): wtype = str(self.worktype_entry.text()) title = str(self.title_entry.text()) url = str(self.url_entry.text()) return dict(title=title, url=url, type=wtype) def set_data(self, data): self.title_entry.setText(data['title']) self.url_entry.setText(data['url']) wtype = data['type'] if wtype is None: wtype = 'website' self.worktype_entry.setText(wtype)
class NewKernelDialog(BaseMachineDialog): def __init__(self, parent, handler): BaseMachineDialog.__init__(self, parent, handler) self.kernelLbl = QLabel(self.frame) self.kernelLbl.setText('Name of kernel package') self.kernelEntry = KLineEdit(self.frame) self.vbox.addWidget(self.kernelLbl) self.vbox.addWidget(self.kernelEntry) self.dbaction = 'insert' def slotOkClicked(self): kernel = str(self.kernelEntry.text()) self.handler.add_kernel(kernel)
class NewMachineDialog(BaseMachineDialog): def __init__(self, parent, handler): BaseMachineDialog.__init__(self, parent, handler) self.machnameLbl = QLabel(self.frame) self.machnameLbl.setText('Machine Name') self.machnameEntry = KLineEdit(self.frame) self.vbox.addWidget(self.machnameLbl) self.vbox.addWidget(self.machnameEntry) self.dbaction = 'insert' def slotOkClicked(self): machine = str(self.machnameEntry.text()) print "slotOkClicked", machine self.handler.make_a_machine(machine)
class SimpleEntryDialog(VboxDialog): def __init__(self, parent, label="Enter Value", entry='', name='SimpleEntryDialog'): VboxDialog.__init__(self, parent, name=name) self.showButtonApply(False) self.label = QLabel(label, self.frame) self.entry = KLineEdit(self.frame, entry) self.vbox.setMargin(3) self.vbox.setSpacing(2) self.vbox.addWidget(self.label) self.vbox.addWidget(self.entry) self.connect(self, SIGNAL('okClicked()'), self.ok_clicked) def _get_entry(self): return str(self.entry.text()) def ok_clicked(self): errmsg = "ok_clicked needs to be defined in subclass of SimpleEntryDialog" raise NotImplementedError, errmsg
class BaseGuestAppearanceFrame(QFrame): def __init__(self, parent, name='BaseGuestAppearanceFrame'): QFrame.__init__(self, parent, name) margin = 0 space = 1 self.grid = QGridLayout(self, 4, 1, margin, space) self.appearance_lbl = QLabel('Appearance', self) self.appearance_url = KLineEdit('', self) row = 0 for widget in [self.appearance_lbl, self.appearance_url]: self.grid.addWidget(widget, row, 0) row += 1 def get_data(self): url = str(self.appearance_url.text()) return dict(url=url) def set_data(self, data): self.appearance_url.setText(data['url'])
class ImportGameDialog(BaseDialogWindow): def __init__(self, parent, name='ImportGameDialog'): BaseDialogWindow.__init__(self, parent, name=name) self.frame = QFrame(self) margin = 5 space = 7 self.grid = QGridLayout(self.frame, 2, 1, margin, space) self.url_lbl = QLabel('URL', self.frame) self.url_entry = KLineEdit('', self.frame) self.grid.addWidget(self.url_lbl, 0, 0) self.grid.addWidget(self.url_entry, 1, 0) self.setMainWidget(self.frame) self.connect(self, SIGNAL('okClicked()'), self.import_game) def import_game(self): url = str(self.url_entry.text()) print url KMessageBox.information(self, "import_game is still not implemented")
class TroubleDialog(VboxDialog): def __init__(self, parent, clientid, name='TroubleDialog'): VboxDialog.__init__(self, parent, name) self.clientid = clientid self.problemEdit = KLineEdit('', self.page) self.magnetBox = MyCombo(self.page) self.worktodoEdit = KTextEdit(self.page) self.vbox.addWidget(self.problemEdit) self.vbox.addWidget(self.magnetBox) self.vbox.addWidget(self.worktodoEdit) self.showButtonApply(False) self.setButtonOKText('insert', 'insert') self.show() def getRecordData(self): problem = str(self.problemEdit.text()) worktodo = str(self.worktodoEdit.text()) return dict(problem=problem, worktodo=worktodo, clientid=self.clientid)
class ImportGameUrlDialog(BaseDialogWindow): def __init__(self, parent, name='ImportGameUrlDialog'): BaseDialogWindow.__init__(self, parent, name=name) self.frame = QFrame(self) margin = 5 space = 7 self.grid = QGridLayout(self.frame, 2, 1, margin, space) self.url_lbl = QLabel('URL', self.frame) self.url_entry = KLineEdit('', self.frame) self.grid.addWidget(self.url_lbl, 0, 0) self.grid.addWidget(self.url_entry, 1, 0) self.setMainWidget(self.frame) self.connect(self, SIGNAL('okClicked()'), self.import_game) self.handler = AbandonGamesHandler(self.app) def _makeinfo(self, base, parser): text = 'Title: %s\n' % parser.title if parser.smallinfo: text += 'Small Information' for k,v in parser.smallinfo.items(): text += '%s: %s\n' % ( k.capitalize(), v) #text += str(parser.smallinfo) + '\n' dlurl = base + parser.download_link text += 'download page: %s\n' % dlurl text += 'direct link: %s\n' % parser.real_download_link if parser.files: text += 'Files:\n' text += '======\n' for f in parser.files: text += '%s%s\n' % (base, f) return text def import_game(self): url = str(self.url_entry.text()) print url #KMessageBox.information(self, "import_game is still not implemented") #self.handler.get_game_data(url) self.handler.handle_url(url) #self.handler.parser.feed(file('dunetest.html').read()) win = AbandoniaInfoWindow(self) win.show()
class NewDiskConfigDialog(VboxDialog): def __init__(self, parent, handler): VboxDialog.__init__(self, parent) self.diskconfig = handler self.diskconfigLbl = QLabel(self.frame) self.diskconfigLbl.setText('DiskConfig Name') self.diskconfigEntry = KLineEdit(self.frame) self.contentLbl = QLabel(self.frame) self.contentLbl.setText('DiskConfig Content') self.contentEntry = KTextEdit(self.frame) self.vbox.addWidget(self.diskconfigLbl) self.vbox.addWidget(self.diskconfigEntry) self.vbox.addWidget(self.contentLbl) self.vbox.addWidget(self.contentEntry) self.connect(self, SIGNAL('okClicked()'), self.slotOkClicked) def slotOkClicked(self): name = str(self.diskconfigEntry.text()) content = str(self.contentEntry.text()) self.diskconfig.set(name, dict(content=content))
class BaseMachineAttributeDialog(BaseMachineDialog): def __init__(self, parent, handler, attribute): BaseMachineDialog.__init__(self, parent, handler) self.attributeLbl = QLabel(self.frame) self.attributeLbl.setText(attribute) self.attributeEntry = KLineEdit(self.frame) self.vbox.addWidget(self.attributeLbl) self.vbox.addWidget(self.attributeEntry) self.attribute = attribute def slotOkClicked(self): value = str(self.attributeEntry.text()) try: self.handler.set_attribute(self.attribute, value) except OperationalError, inst: if 'violates foreign key constraint' in inst.message: KMessageBox.error(self, '%s is not a valid %s' % (value, self.attribute)) else: raise OperationalError(inst) except NoSuchKernelError, inst: KMessageBox.error("There's no such kernel: %s" % value)
class BaseGuestDataFrame(QFrame): def __init__(self, parent, name='BaseGuestDataFrame'): QFrame.__init__(self, parent, name) self.guestid = None numrows = 2 numcols = 2 margin = 0 space = 1 self.grid = QGridLayout(self, numrows, numcols, margin, space, 'BaseGuestDataLayout') self.app = get_application_pointer() self.fname_lbl = QLabel('First Name', self) self.fname_entry = KLineEdit('', self) self.grid.addWidget(self.fname_lbl, 0, 0) self.grid.addWidget(self.fname_entry, 1, 0) self.lname_lbl = QLabel('Last Name', self) self.lname_entry = KLineEdit('', self) self.grid.addWidget(self.lname_lbl, 0, 1) self.grid.addWidget(self.lname_entry, 1, 1) self.title_lbl = QLabel('Title', self) self.title_entry = KLineEdit('', self) self.grid.addMultiCellWidget(self.title_lbl, 2, 2, 0, 1) self.grid.addMultiCellWidget(self.title_entry, 3, 3, 0, 1) self.desc_lbl = QLabel('Description', self) self.desc_entry = KTextEdit(self, 'description_entry') self.grid.addMultiCellWidget(self.desc_lbl, 4, 4, 0, 1) self.grid.addMultiCellWidget(self.desc_entry, 5, 7, 0, 1) #self.works_frame = BaseGuestWorksFrame(self) #self.grid.addMultiCellWidget(self.works_frame, 8, 8, 0, 1) def get_guest_data(self): fname = str(self.fname_entry.text()) lname = str(self.lname_entry.text()) title = str(self.title_entry.text()) desc = str(self.desc_entry.text()) # take the newlines out for now # until the sqlgen is fixed to work with sqlite desc = desc.replace('\n', ' ') data = dict(firstname=fname, lastname=lname, description=desc, title=title) if self.guestid is not None: data['guestid'] = self.guestid return data def set_guest_data(self, data): self.guestid = data['guestid'] self.fname_entry.setText(data['firstname']) self.lname_entry.setText(data['lastname']) if data['title']: self.title_entry.setText(data['title']) if data['description']: desc = data['description'] desc = self.app.guests.unescape_text(desc) self.desc_entry.setText(desc)
class BaseEntityDataFrame(AppFrame): def __init__(self, parent, name='BaseEntityDataFrame'): AppFrame.__init__(self, parent, name) self.entityid = None numrows = 2 numcols = 1 margin = 3 space = 2 self.grid = QGridLayout(self, numrows, numcols, margin, space, 'BaseEntityDataLayout') self.app = get_application_pointer() self.name_lbl = QLabel('Name', self) self.name_entry = KLineEdit('', self) self.grid.addWidget(self.name_lbl, 0, 0) self.grid.addWidget(self.name_entry, 1, 0) self.etype_lbl = QLabel('type', self) self.etype_combo = KComboBox(self, 'etype_combo') db = self.app.db etypes = db.session.query(db.EntityType).all() self.etype_combo.insertStrList([e.type for e in etypes]) self.connect(self.etype_combo, SIGNAL('activated(const QString &)'), self.change_etype) self.grid.addWidget(self.etype_lbl, 2, 0) self.grid.addWidget(self.etype_combo, 3, 0) self.url_lbl = QLabel('url', self) self.url_entry = KLineEdit('', self) self.grid.addWidget(self.url_lbl, 4, 0) self.grid.addWidget(self.url_entry, 5, 0) grid_rownum = 6 self.desc_lbl = QLabel('Description', self) self.desc_entry = KTextEdit(self, 'description_entry') self.desc_entry.setTextFormat(self.PlainText) self.grid.addMultiCellWidget(self.desc_lbl, 6, 6, 0, 0) self.grid.addMultiCellWidget(self.desc_entry, 7, 10, 0, 0) #self.works_frame = BaseGuestWorksFrame(self) #self.grid.addMultiCellWidget(self.works_frame, 8, 8, 0, 1) def change_etype(self, etype): print 'change_etype', etype def get_data(self): name = str(self.name_entry.text()) etype = str(self.etype_combo.currentText()) url = str(self.url_entry.text()) desc = str(self.desc_entry.text()) data = dict(name=name, type=etype, url=url, desc=desc) if self.entityid is not None: data['entityid'] = self.entityid return data def set_entity(self, entity): self.entity = entity self.set_data(entity) def set_data(self, entity): self.entityid = entity.entityid self.name_entry.setText(entity.name) self.etype_combo.setCurrentText(entity.type) self.url_entry.setText(entity.url) self.desc_entry.setText(entity.desc)