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)
def __init__(self, parent, name='SuiteTraitComboBox'): QFrame.__init__(self, parent, name) self.app = get_application_pointer() self.conn = self.app.conn self.suiteCursor = Suites(self.conn) self.suites = self.suiteCursor.list() self.traits = Traits(self.conn, self.suites[0]) self.scombo = KComboBox(self, 'SuiteComboBox') self.scombo.insertStrList(self.suites) self.tcombo = KComboBox(self, 'TypeComboBox') self.tcombo.insertStrList(['template', 'script']) self.trcombo = KComboBox(self, 'TraitComboBox') self.update_btn = KPushButton('update', self) self.listView = TraitListView(self) self.vbox = QVBoxLayout(self) for attribute in [ 'listView', 'scombo', 'tcombo', 'trcombo', 'update_btn' ]: widget = getattr(self, attribute) self.vbox.addWidget(widget) # we need to redo the signals and the methods that are called self.connect(self.scombo, SIGNAL('activated(int)'), self.update_traits) self.connect(self.update_btn, SIGNAL('clicked()'), self.refreshlistView)
class TestConfigTab(QWidget): def __init__(self, parent, name='TestConfigTab'): QWidget.__init__(self, parent, name) self.grid = QGridLayout(self, 2, 1, 0, 1, 'TestConfigTabLayout') self.textbrowser = KTextBrowser(self) self.grid.addWidget(self.textbrowser, 0, 0) self.button = KPushButton(self) self.button.setText('test get_config') self.grid.addWidget(self.button, 1, 0) def set_config(self, cfg): tfile = StringIO() cfg.write(tfile) tfile.seek(0) text = tfile.read() self.textbrowser.setText(text)
def __init__(self, app, parent): KMainWindow.__init__(self, parent) dbwidget(self, app) self.manager = InstallerManager(self.conn) self.mainView = KPushButton('hello there', self) self.setCentralWidget(self.mainView) self.setCaption('Installer Management') self.show()
def __init__(self, parent, name='TestConfigTab'): QWidget.__init__(self, parent, name) self.grid = QGridLayout(self, 2, 1, 0, 1, 'TestConfigTabLayout') self.textbrowser = KTextBrowser(self) self.grid.addWidget(self.textbrowser, 0, 0) self.button = KPushButton(self) self.button.setText('test get_config') self.grid.addWidget(self.button, 1, 0)
class BaseGuestWorksFrame(QFrame): def __init__(self, parent, name='BaseGuestWorksFrame'): QFrame.__init__(self, parent, name) self.works_entries = [] margin = 0 space = 1 self.grid = QGridLayout(self, 2, 6, margin, space) self.works_lbl = QLabel('Works', self) self.grid.addMultiCellWidget(self.works_lbl, 0, 0, 0, 4) self.add_works_btn = KPushButton('+', self, 'add_works_button') self.add_works_btn.connect(self.add_works_btn, SIGNAL('clicked()'), self.add_works_entries) self.grid.addWidget(self.add_works_btn, 0, 5) def add_works_entries(self): frame = BaseWorksEntryFrame(self) row = len(self.works_entries) + 1 self.grid.addMultiCellWidget(frame, row, row, 0, -1) self.works_entries.append(frame) frame.show()
def __init__(self, parent, name='BaseGuestWorksFrame'): QFrame.__init__(self, parent, name) self.works_entries = [] margin = 0 space = 1 self.grid = QGridLayout(self, 2, 6, margin, space) self.works_lbl = QLabel('Works', self) self.grid.addMultiCellWidget(self.works_lbl, 0, 0, 0, 4) self.add_works_btn = KPushButton('+', self, 'add_works_button') self.add_works_btn.connect(self.add_works_btn, SIGNAL('clicked()'), self.add_works_entries) self.grid.addWidget(self.add_works_btn, 0, 5)
def __init__(self, app, parent, profile): KMainWindow.__init__(self, parent, 'TraitAssigner') self.page = QFrame(self) self.vbox = QVBoxLayout(self.page, 5, 7) self.listBox = KActionSelector(self.page) self.listBox.setShowUpDownButtons(True) self.setCentralWidget(self.page) self.vbox.addWidget(self.listBox) hbox = QHBoxLayout(self.page, 5, 7) self.vbox.addLayout(hbox) self.ok_button = KPushButton('ok', self.page) self.cancel_button = KPushButton('cancel', self.page) hbox.addWidget(self.ok_button) hbox.addWidget(self.cancel_button) self.app = app self.db = app.db self.profile = Profile(app.conn) self.profile.set_profile(profile) self.suite = self.profile.current.suite self.traits = StatementCursor(app.conn) self.traits.set_table('%s_traits' % self.suite) self.initlistView() self.show()
def __init__(self, app, parent, name='SuiteTraitCombo'): QWidget.__init__(self, parent, name) dbwidget(self, app) self.suiteCursor = Suites(self.conn) self.suites = self.suiteCursor.list() self.traits = Traits(self.conn, self.suites[0]) self.scombo = SuiteCombo(self, self.suites) self.tcombo = MyCombo(self, 'TypeCombo') self.tcombo.fill(['template', 'script']) self.ubutton = KPushButton('update', self) self.listView = TraitList(self.app, self) self.vbox = QVBoxLayout(self) for member in ['listView', 'scombo', 'tcombo', 'ubutton']: widget = getattr(self, member) self.vbox.addWidget(widget) self.connect(self.scombo, SIGNAL('highlighted(int)'), self.update_traits) self.connect(self.ubutton, SIGNAL('clicked()'), self.refreshlistView)
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()
def __init__(self, parent, basket): KDialog.__init__(self,parent,str(i18n("Basket")),True) self.parent = parent self.basket = basket self.totalSize = 0 self.setCaption(i18n("Basket")) layout = QGridLayout(self, 1, 1, 11, 6) self.pkgHBox = QHBox(self) layout.addMultiCellWidget(self.pkgHBox, 1, 1, 0, 2) if self.basket.state == Basket.remove_state: self.pkgLabel = QLabel(i18n("Selected package(s) for removal:"), self) self.extraLabel = QLabel(i18n("Reverse dependencies of the selected package(s) that are also going to be removed:"), self) elif self.basket.state == Basket.install_state: self.pkgLabel = QLabel(i18n("Selected package(s) for install:"), self) self.extraLabel = QLabel(i18n("Extra dependencies of the selected package(s) that are also going to be installed:"), self) elif self.basket.state == Basket.upgrade_state: self.pkgLabel = QLabel(i18n("Selected package(s) for upgrade:"), self) self.extraLabel = QLabel(i18n("Extra dependencies of the selected package(s) that are also going to be upgraded:"), self) layout.addWidget(self.pkgLabel, 0, 0) layout.addWidget(self.extraLabel, 2, 0) self.depHBox = QHBox(self) layout.addMultiCellWidget(self.depHBox, 3, 3, 0, 2) self.totalSizeLabel = QLabel(i18n("Total Size:"), self) layout.addWidget(self.totalSizeLabel, 4, 0) spacer = QSpacerItem(121, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) layout.addItem(spacer, 5, 0) self.updateBasketButton = KPushButton(self) self.updateBasketButton.setText(i18n("Update Basket")) self.updateBasketButton.setIconSet(loadIconSet("package")) layout.addWidget(self.updateBasketButton, 5, 1) self.applyButton = KPushButton(self) self.applyButton.setText(parent.operateAction.text()) icon = parent.operateAction.iconSet() #Fix 6893 if icon: self.applyButton.setIconSet(icon) layout.addWidget(self.applyButton, 5, 2) self.connect(self.updateBasketButton, SIGNAL('clicked()'), self.updateBasket) self.connect(self.applyButton, SIGNAL('clicked()'), self.applyOperation) self.resize(QSize(574,503).expandedTo(self.minimumSizeHint())) self.clearWState(Qt.WState_Polished) # Read Css cssFile = file(str(locate("data","package-manager/layout.css"))).read() self.css = cssFile self.javascript = file(str(locate("data","package-manager/animation.js"))).read() self.pkgHtmlPart = KHTMLPart(self.pkgHBox) self.depHtmlPart = KHTMLPart(self.depHBox) self.createSelectedPackagesList() self.createExtraPackagesList() self.connect(self.pkgHtmlPart,SIGNAL("completed()"), self.registerEventListener)
class BasketDialog(KDialog): def __init__(self, parent, basket): KDialog.__init__(self,parent,str(i18n("Basket")),True) self.parent = parent self.basket = basket self.totalSize = 0 self.setCaption(i18n("Basket")) layout = QGridLayout(self, 1, 1, 11, 6) self.pkgHBox = QHBox(self) layout.addMultiCellWidget(self.pkgHBox, 1, 1, 0, 2) if self.basket.state == Basket.remove_state: self.pkgLabel = QLabel(i18n("Selected package(s) for removal:"), self) self.extraLabel = QLabel(i18n("Reverse dependencies of the selected package(s) that are also going to be removed:"), self) elif self.basket.state == Basket.install_state: self.pkgLabel = QLabel(i18n("Selected package(s) for install:"), self) self.extraLabel = QLabel(i18n("Extra dependencies of the selected package(s) that are also going to be installed:"), self) elif self.basket.state == Basket.upgrade_state: self.pkgLabel = QLabel(i18n("Selected package(s) for upgrade:"), self) self.extraLabel = QLabel(i18n("Extra dependencies of the selected package(s) that are also going to be upgraded:"), self) layout.addWidget(self.pkgLabel, 0, 0) layout.addWidget(self.extraLabel, 2, 0) self.depHBox = QHBox(self) layout.addMultiCellWidget(self.depHBox, 3, 3, 0, 2) self.totalSizeLabel = QLabel(i18n("Total Size:"), self) layout.addWidget(self.totalSizeLabel, 4, 0) spacer = QSpacerItem(121, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) layout.addItem(spacer, 5, 0) self.updateBasketButton = KPushButton(self) self.updateBasketButton.setText(i18n("Update Basket")) self.updateBasketButton.setIconSet(loadIconSet("package")) layout.addWidget(self.updateBasketButton, 5, 1) self.applyButton = KPushButton(self) self.applyButton.setText(parent.operateAction.text()) icon = parent.operateAction.iconSet() #Fix 6893 if icon: self.applyButton.setIconSet(icon) layout.addWidget(self.applyButton, 5, 2) self.connect(self.updateBasketButton, SIGNAL('clicked()'), self.updateBasket) self.connect(self.applyButton, SIGNAL('clicked()'), self.applyOperation) self.resize(QSize(574,503).expandedTo(self.minimumSizeHint())) self.clearWState(Qt.WState_Polished) # Read Css cssFile = file(str(locate("data","package-manager/layout.css"))).read() self.css = cssFile self.javascript = file(str(locate("data","package-manager/animation.js"))).read() self.pkgHtmlPart = KHTMLPart(self.pkgHBox) self.depHtmlPart = KHTMLPart(self.depHBox) self.createSelectedPackagesList() self.createExtraPackagesList() self.connect(self.pkgHtmlPart,SIGNAL("completed()"), self.registerEventListener) def updateBasket(self): self.createSelectedPackagesList() self.createExtraPackagesList() self.parent.updateStatusBar() def closeEvent(self, event): self.pkgHtmlPart = None self.depHtmlPart = None self.accept() def applyOperation(self): self.pkgHtmlPart = None self.depHtmlPart = None self.hide() self.done(APPLY_OPERATION) def registerEventListener(self): self.eventListener = SelectEventListener(self) node = self.pkgHtmlPart.document().getElementsByTagName(DOM.DOMString("body")).item(0) node.addEventListener(DOM.DOMString("click"),self.eventListener,True) def updateTotals(self): Globals.setWaitCursor() try: self.createExtraPackagesList() finally: Globals.setNormalCursor() def createSelectedPackagesList(self): self.createHTML(self.basket.packages, self.pkgHtmlPart, True) def createExtraPackagesList(self): self.parent.basket.update() if self.basket.packages: self.applyButton.setEnabled(True) else: self.applyButton.setEnabled(False) if self.basket.extraPackages: self.extraLabel.show() self.depHBox.show() self.createHTML(self.basket.extraPackages, self.depHtmlPart, False) else: self.extraLabel.hide() self.depHBox.hide() size = Globals.humanReadableSize(self.basket.getBasketSize()) self.totalSizeLabel.setText(i18n("Total Size: <b>%1</b>").arg(size)) def createHTML(self, packages, part=None, checkBox=False): head = '''<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> ''' if not part: part = self.htmlPart part.begin() part.write(head) part.write("<style type=\"text/css\">%s</style>" % self.css) part.write("<script language=\"JavaScript\">%s</script>" % self.javascript) part.write("</head><body>") part.write(self.createHTMLForPackages(packages, checkBox)) part.write('''<body></html>''') part.end() def createHTMLForPackages(self, packages, checkBox): result = '' template =''' <!-- package start --> <div class="disabled"> ''' if checkBox: template += '''<div class="checkboks" style="%s"><input type="checkbox" checked name="%s"></div>''' template += ''' <div class="package_title_disabled" style="%s"> <img src="%s" style="float:left;" width="%dpx" height="%dpx"> <b>%s</b><br><span style="color:#303030">%s%s<br>%s</span><br> </div></div> <!-- package end --> ''' style = "background-color:%s" % KGlobalSettings.baseColor().name() packages.sort(key=string.lower) for app in packages: package = self.basket.getPackage(app) size = Globals.humanReadableSize(self.basket.getPackageSize(package)) iconPath = getIconPath(package.icon) summary = package.summary iconSize = getIconSize() if checkBox: result += template % (style,app,style,iconPath,iconSize,iconSize,app,i18n("Size: "),size,summary) else: result += template % (style,iconPath,iconSize,iconSize,app,i18n("Size: "),size,summary) return result