def _setupfields(self, parent, text=None): if text is None: text = '<b>insert a simple record</b>' for child in self.parent().children(): print child #child.close() refdata = None if self.record is not None and hasattr(self.record, '_refdata'): print 'record is not None', self.record refdata = self.record._refdata for f in range(len(self.fields)): field = self.fields[f] print 'field is', field if refdata is not None and field in refdata.cols: button = KPushButton('select/create', parent) self._refbuttons[field] = button self.addWidget(button, f + 1, 1) label = QLabel(entry, field, parent, field) self.addWidget(label, f + 1, 0) else: entry = KLineEdit('', parent) if self.record is not None: entry.setText(str(self.record[field])) self.entries[field] = entry self.addWidget(entry, f + 1, 1) label = QLabel(entry, field, parent, field) self.addWidget(label, f + 1, 0) self.addMultiCellWidget(QLabel(text, parent), 0, 0, 0, 1)
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)
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 __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 __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
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)
def __init__(self, parent, cfg, group, keys): cfg.setGroup(group) QGridLayout.__init__(self, parent, len(keys), 2) self.entries = {}.fromkeys(keys) row = 0 for k in keys: self.addWidget(QLabel(k, parent), row, 0) entry = KLineEdit(parent) self.addWidget(entry, row, 1) self.entries[k] = entry entry.setText(cfg.readEntry(k)) row += 1
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 __init__(self, parent, handler): BaseMachineDialog.__init__(self, parent, handler) self.parentLbl = QLabel(self.frame) self.parentLbl.setText("parent") self.parentEntry = KLineEdit(self.frame) self.vbox.addWidget(self.parentLbl) self.vbox.addWidget(self.parentEntry)
def _setupfields(self, parent): for f in range(len(self.fields)): entry = KLineEdit('', parent) self.entries[self.fields[f]] = entry self.addWidget(entry, f + 1, 1) label = QLabel(entry, self.fields[f], parent, self.fields[f]) self.addWidget(label, f + 1, 0)
def __init__(self, parent, name='NewAptKeyDialog'): VBoxDialog.__init__(self, parent, name=name) self.name_label = QLabel('name', self.vbox) self.name_entry = KLineEdit(self.vbox) self.data_lable = QLabel('data', self.vbox) self.data_entry = KTextEdit(self.vbox) self.resize(300, 500) self.setCaption('Enter new key')
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'])
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 __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)
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 __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 __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 __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 _setupfields(self): numfields = len(self.fields) for fnum in range(numfields): fname = self.fields[fnum] entry = KLineEdit('', self) self.entries[fname] = entry self.grid.addWidget(entry, fnum + 1, 1) label = QLabel(entry, fname, self, fname) self.grid.addWidget(label, fnum + 1, 0) self.insButton = KPushButton('insert/new', self) self.updButton = KPushButton('update', self) self.grid.addWidget(self.insButton, numfields, 0) self.grid.addWidget(self.updButton, numfields, 1)
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 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 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 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)
def createPopupMenu(self, pos=None): menu = KLineEdit.createPopupMenu(self) menu.insertItem('Hello There Dude!') return menu
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)
def __init__(self, parent, name='BaseGameDataFrame'): QFrame.__init__(self, parent, name) # there will be more than two rows, but we'll start with two numrows = 2 # there should onlty be two columns numcols = 2 margin = 0 space = 1 # add a grid layout to the frame self.grid = QGridLayout(self, numrows, numcols, margin, space, 'BaseGameDataLayout') # make a couple of lists to point to the weblink entries # order is important in these lists self.weblink_site_entries = [] self.weblink_url_entries = [] # I may use dict[site] = (site_entry, url_entry) # I haven't decided yet. It could always be formed by zipping the 2 lists above. self.weblink_dict = {} # setup app pointer self.app = KApplication.kApplication() self.myconfig = self.app.myconfig # setup dialog pointers self.select_launch_command_dlg = None # Setup widgets # setup name widgets self.name_lbl = QLabel('<b>Name</b>', self) self.name_entry = KLineEdit('', self) # add name widgets to grid self.grid.addWidget(self.name_lbl, 0, 0) self.grid.addWidget(self.name_entry, 1, 0) # setup fullname widgets self.fullname_lbl = QLabel('<b>Full name</b>', self) self.fullname_entry = KLineEdit('', self) # add fullname widgets self.grid.addWidget(self.fullname_lbl, 2, 0) self.grid.addWidget(self.fullname_entry, 3, 0) # setup description widgets self.desc_lbl = QLabel('<b>Description</b>', self) self.desc_entry = KTextEdit(self, 'description_entry') # set plain text format for description entry # we do this in case there are html tags in the entry self.desc_entry.setTextFormat(self.PlainText) # add description widgets self.grid.addWidget(self.desc_lbl, 4, 0) #self.addWidget(self.desc_entry, 5, 0) # add the description as a multirow entity # default from 5 to 15 # this allows for weblinks to be added # (about 5) # without the dialog looking ugly # going to 15 won't force there to be that many rows # until more enough widgets are added self.grid.addMultiCellWidget(self.desc_entry, 5, 15, 0, 0) # setup launch command widgets self.launch_lbl = QLabel('<b>Launch command</b>', self) self.launch_entry = KLineEdit('', self) self.launch_dlg_button = KPushButton('...', self, 'launch_dlg_button') self.launch_dlg_button.connect(self.launch_dlg_button, SIGNAL('clicked()'), self.select_launch_command) # add launch command widgets self.grid.addWidget(self.launch_lbl, 0, 1) self.grid.addWidget(self.launch_entry, 1, 1) self.grid.addWidget(self.launch_dlg_button, 1, 2) # setup dosboxpath widgets self.dosboxpath_lbl = QLabel('<b>dosbox path</b>', self) self.dosboxpath_entry = KLineEdit('', self) # add dosboxpath widgets self.grid.addWidget(self.dosboxpath_lbl, 2, 1) self.grid.addWidget(self.dosboxpath_entry, 3, 1) # setup main weblink widgets self.weblinks_lbl = QLabel('<b>weblinks</b>', self) self.weblinks_btn = KPushButton('+', self, 'add_weblink_button') self.weblinks_btn.connect(self.weblinks_btn, SIGNAL('clicked()'), self.add_weblink_entries) # add main weblink widgets self.grid.addWidget(self.weblinks_lbl, 4, 1) self.grid.addWidget(self.weblinks_btn, 4, 2)
class BaseGameDataFrame(QFrame): def __init__(self, parent, name='BaseGameDataFrame'): QFrame.__init__(self, parent, name) # there will be more than two rows, but we'll start with two numrows = 2 # there should onlty be two columns numcols = 2 margin = 0 space = 1 # add a grid layout to the frame self.grid = QGridLayout(self, numrows, numcols, margin, space, 'BaseGameDataLayout') # make a couple of lists to point to the weblink entries # order is important in these lists self.weblink_site_entries = [] self.weblink_url_entries = [] # I may use dict[site] = (site_entry, url_entry) # I haven't decided yet. It could always be formed by zipping the 2 lists above. self.weblink_dict = {} # setup app pointer self.app = KApplication.kApplication() self.myconfig = self.app.myconfig # setup dialog pointers self.select_launch_command_dlg = None # Setup widgets # setup name widgets self.name_lbl = QLabel('<b>Name</b>', self) self.name_entry = KLineEdit('', self) # add name widgets to grid self.grid.addWidget(self.name_lbl, 0, 0) self.grid.addWidget(self.name_entry, 1, 0) # setup fullname widgets self.fullname_lbl = QLabel('<b>Full name</b>', self) self.fullname_entry = KLineEdit('', self) # add fullname widgets self.grid.addWidget(self.fullname_lbl, 2, 0) self.grid.addWidget(self.fullname_entry, 3, 0) # setup description widgets self.desc_lbl = QLabel('<b>Description</b>', self) self.desc_entry = KTextEdit(self, 'description_entry') # set plain text format for description entry # we do this in case there are html tags in the entry self.desc_entry.setTextFormat(self.PlainText) # add description widgets self.grid.addWidget(self.desc_lbl, 4, 0) #self.addWidget(self.desc_entry, 5, 0) # add the description as a multirow entity # default from 5 to 15 # this allows for weblinks to be added # (about 5) # without the dialog looking ugly # going to 15 won't force there to be that many rows # until more enough widgets are added self.grid.addMultiCellWidget(self.desc_entry, 5, 15, 0, 0) # setup launch command widgets self.launch_lbl = QLabel('<b>Launch command</b>', self) self.launch_entry = KLineEdit('', self) self.launch_dlg_button = KPushButton('...', self, 'launch_dlg_button') self.launch_dlg_button.connect(self.launch_dlg_button, SIGNAL('clicked()'), self.select_launch_command) # add launch command widgets self.grid.addWidget(self.launch_lbl, 0, 1) self.grid.addWidget(self.launch_entry, 1, 1) self.grid.addWidget(self.launch_dlg_button, 1, 2) # setup dosboxpath widgets self.dosboxpath_lbl = QLabel('<b>dosbox path</b>', self) self.dosboxpath_entry = KLineEdit('', self) # add dosboxpath widgets self.grid.addWidget(self.dosboxpath_lbl, 2, 1) self.grid.addWidget(self.dosboxpath_entry, 3, 1) # setup main weblink widgets self.weblinks_lbl = QLabel('<b>weblinks</b>', self) self.weblinks_btn = KPushButton('+', self, 'add_weblink_button') self.weblinks_btn.connect(self.weblinks_btn, SIGNAL('clicked()'), self.add_weblink_entries) # add main weblink widgets self.grid.addWidget(self.weblinks_lbl, 4, 1) self.grid.addWidget(self.weblinks_btn, 4, 2) def select_launch_command(self): if self.select_launch_command_dlg is None: file_filter = "*.exe *.bat *.com|Dos Executables\n*|All Files" dlg = KFileDialog(self.fullpath, file_filter, self, 'select_launch_command_dlg', True) dlg.connect(dlg, SIGNAL('okClicked()'), self.launch_command_selected) dlg.connect(dlg, SIGNAL('cancelClicked()'), self.destroy_select_launch_command_dlg) dlg.connect(dlg, SIGNAL('closeClicked()'), self.destroy_select_launch_command_dlg) dlg.show() self.select_launch_command_dlg = dlg else: # we shouldn't need this with a modal dialog KMessageBox.error(self, opendlg_errormsg) def destroy_select_launch_command_dlg(self): self.select_launch_command_dlg = None def launch_command_selected(self): dlg = self.select_launch_command_dlg url = dlg.selectedURL() fullpath = str(url.path()) launch_command = os.path.basename(fullpath) self.launch_entry.setText(launch_command) self.select_launch_command_dlg = None def add_weblink_entries(self, site='', url=''): #we start at row #5 column 1 for lbl column 2 for entry num_entries = len(self.weblink_url_entries) # we need to add 1 on lbl_num because the entries can be appended # until instantiated lbl_num = num_entries + 1 site_lbl = QLabel('<b>site %d</b>' % lbl_num, self) site_entry = KLineEdit(site, self) self.weblink_site_entries.append(site_entry) url_lbl = QLabel('<b>url %d</b>' % lbl_num, self) url_entry = KLineEdit(url, self) self.weblink_url_entries.append(url_entry) if len(self.weblink_site_entries) != len(self.weblink_url_entries): KMessageBox.error(self, 'entries mismatch, something really bad happened.') import sys sys.exit(1) # we need a little math here to figure out the rows # for the widgets # num_entries should now be 1 greater than above num_entries = len(self.weblink_url_entries) site_row = 2*num_entries + 3 url_row = 2*num_entries + 4 # add weblink widgets to the grid top = self.grid.AlignTop self.grid.addWidget(site_entry, site_row, 1) self.grid.addWidget(site_lbl, site_row, 2) self.grid.addWidget(url_entry, url_row, 1) self.grid.addWidget(url_lbl, url_row, 2) # we have to call .show() explicitly on the widgets # as the rest of the widgets are already visible # when show was called on the dialog # show() automatically calls show() on all children for widget in [site_lbl, site_entry, url_lbl, url_entry]: widget.show()
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)
def __init__(self, parent, name='TraitVariableLineEdit'): KLineEdit.__init__(self, parent, name)