def __init__(self, feed_editor, element=None, is_group=False): self.feed_editor = feed_editor self.element = element widgets = gtk.glade.XML(main.gladefile, "version") # attributes = g.ListStore(str, str) # attr_view = widgets.get_widget('attributes') # attr_view.set_model(attributes) # attr_view.append_column(g.TreeViewColumn('Name')) # attr_view.append_column(g.TreeViewColumn('Value')) inherit_arch = widgets.get_widget("inherit_arch") def shade_os_cpu(): s = not inherit_arch.get_active() widgets.get_widget("cpu").set_sensitive(s) widgets.get_widget("os").set_sensitive(s) if s: cpu = widgets.get_widget("cpu").get_active_text() else: cpu = None if element: parent = element.parentNode while parent.nodeType == Node.ELEMENT_NODE and not cpu: arch = parent.getAttribute("arch") if arch and "-" in arch: cpu = arch.split("-")[1] parent = parent.parentNode if cpu == "src": widgets.get_widget("source_frame").show() else: widgets.get_widget("source_frame").hide() command = widgets.get_widget("compile_command") if command.get_text() == "": command.set_text('"$SRCDIR/configure" --prefix="$DISTDIR" && make install') inherit_arch.connect("toggled", lambda cb: shade_os_cpu()) widgets.get_widget("cpu").connect("changed", lambda cb: shade_os_cpu()) main_menu = widgets.get_widget("main_binary") doc_menu = widgets.get_widget("doc_dir") if element: if element.localName == "group": is_group = True id = None else: id = element.getAttribute("id") version = element.getAttribute("version") + (element.getAttribute("version-modifier") or "") widgets.get_widget("version_number").set_text(version) widgets.get_widget("released").set_text(element.getAttribute("released")) widgets.get_widget("compile_command").set_text(element.getAttributeNS(XMLNS_COMPILE, "command")) widgets.get_widget("compile_binary_main").set_text(element.getAttributeNS(XMLNS_COMPILE, "binary-main")) widgets.get_widget("compile_binary_lib_mappings").set_text( element.getAttributeNS(XMLNS_COMPILE, "binary-lib-mappings") ) main_binary = element.getAttribute("main") doc_dir = element.getAttribute("doc-dir") stability_menu = widgets.get_widget("stability") stability = element.getAttribute("stability") if stability: i = 0 for row in stability_menu.get_model(): if row[0].lower() == stability: stability_menu.set_active(i) break i += 1 else: stability_menu.set_active(0) main.combo_set_text(widgets.get_widget("license"), element.getAttribute("license")) arch = element.getAttribute("arch") if arch: arch_os, arch_cpu = arch.split("-") main.combo_set_text(widgets.get_widget("os"), arch_os) main.combo_set_text(widgets.get_widget("cpu"), arch_cpu) inherit_arch.set_active(False) else: widgets.get_widget("os").set_active(0) widgets.get_widget("cpu").set_active(0) def ok(): self.update_impl(element, widgets) else: released = widgets.get_widget("released") id = "." if is_group: widgets.get_widget("version_number").set_text("") released.set_text("") else: widgets.get_widget("version_number").set_text("0.1-pre") # released.set_text(time.strftime('%Y-%m-%d')) widgets.get_widget("cpu").set_active(0) widgets.get_widget("os").set_active(0) widgets.get_widget("stability").set_active(0) main_binary = None doc_dir = None def ok(): if is_group: element_name = "group" else: element_name = "implementation" element = create_element(self.feed_editor.doc.documentElement, element_name) if not is_group: element.setAttribute("id", ".") try: self.update_impl(element, widgets) except: remove_element(element) raise shade_os_cpu() self.is_group = is_group id_label = widgets.get_widget("id_label") if is_group: id_label.set_text("(group)") elif id: id_label.set_text(id) if id.startswith(".") or id.startswith("/"): id_label.set_sensitive(True) else: id_label.set_text("-") def resp(dialog, r): if r in (g.RESPONSE_OK, RESPONSE_SAVE_AND_TEST): ok() self.feed_editor.update_version_model() if r == RESPONSE_SAVE_AND_TEST: is_src = bool(widgets.get_widget("source_frame").flags() & gtk.VISIBLE) self.feed_editor.save(lambda: self.test(element, is_src)) else: dialog.destroy() if is_group and element: # Find a cached implementation for getting main for x in child_elements(element): if x.localName == "implementation" and x.namespaceURI == XMLNS_INTERFACE: id = x.getAttribute("id") try: if id and (id.startswith(".") or id.startswith("/") or main.stores.lookup(id)): break except NotStored, ex: pass
def __init__(self, feed_editor, parent, element = None): self.feed_editor = feed_editor self.element = element self.widgets = gtk.glade.XML(main.gladefile, 'requires') uri = self.widgets.get_widget('requires_uri') stream = os.popen('0launch --list') self.known_ifaces = [line.strip() for line in stream if not line.startswith('/')] self.known_ifaces.sort() stream.close() for x in self.known_ifaces: uri.append_text(x) uri.connect('changed', self.update_uri) self.version_element = None # Last <version> child self.env_element = None # Last <environment> child env_combo = self.widgets.get_widget('env_mode') main.combo_set_text(env_combo, 'Prepend') def mode_changed(combo): self.widgets.get_widget('env_default').set_sensitive(env_combo.get_active_text() != 'Replace') env_combo.connect('changed', mode_changed) if element: main.combo_set_text(uri, element.getAttribute('interface')) for child in child_elements(element): if child.namespaceURI != XMLNS_INTERFACE: continue if child.localName == 'version': self.version_element = child elif child.localName == 'environment': self.env_element = child if self.version_element: self.widgets.get_widget('before').set_text(self.version_element.getAttribute('before') or '') self.widgets.get_widget('not_before').set_text(self.version_element.getAttribute('not-before') or '') if self.env_element: for x in ['name', 'insert']: main.combo_set_text(self.widgets.get_widget('env_' + x), self.env_element.getAttribute(x)) self.widgets.get_widget('env_default').set_text(self.env_element.getAttribute('default') or '') main.combo_set_text(env_combo, self.env_element.getAttribute('mode').capitalize() or 'Prepend') def ok(): self.update_element(element, self.widgets) else: def ok(): element = create_element(parent, 'requires') self.update_element(element, self.widgets) def resp(dialog, r): if r == g.RESPONSE_OK: ok() self.feed_editor.update_version_model() dialog.destroy() mode_changed(env_combo) dialog = self.widgets.get_widget('requires') dialog.connect('response', resp)
relbasedir = dirpath[len(cached_impl) + 1 :] for file in filenames: info = os.lstat(os.path.join(dirpath, file)) if info.st_mode & 0111: new = os.path.join(relbasedir, file) possible_mains.append(new) for d in dirnames[:]: if d.startswith("."): dirnames.remove(d) else: possible_docs.append(os.path.join(relbasedir, d)) for option in sorted(possible_mains): main_menu.append_text(option) for option in sorted(possible_docs): doc_menu.append_text(option) main.combo_set_text(main_menu, main_binary) main.combo_set_text(doc_menu, doc_dir) dialog = widgets.get_widget("version") dialog.connect("response", resp) def update_impl(self, element, widgets): version = widgets.get_widget("version_number").get_text() released = widgets.get_widget("released").get_text() inherit_arch = widgets.get_widget("inherit_arch") def get_combo(name): widget = widgets.get_widget(name) return widget.get_active_text() cpu = get_combo("cpu")