1.1 --- a/XSLForms/PyQt.py Tue Oct 25 17:52:28 2005 +0000
1.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
1.3 @@ -1,114 +0,0 @@
1.4 -#!/usr/bin/env python
1.5 -
1.6 -import XSLForms.Prepare
1.7 -import qt
1.8 -import qtui
1.9 -import qtxmldom
1.10 -import os
1.11 -
1.12 -class XSLFormsResource:
1.13 -
1.14 - "An XSLForms resource for use with PyQt."
1.15 -
1.16 - template_resources = {}
1.17 - widget_resources = {}
1.18 - document_resources = {}
1.19 -
1.20 - # Helper methods.
1.21 - # NOTE: Should be moved to a superclass.
1.22 -
1.23 - def prepare_document(self, document_identifier):
1.24 - filename = self.document_resources[document_identifier]
1.25 - return os.path.abspath(os.path.join(self.resource_dir, filename))
1.26 -
1.27 - def get_document(self, document_identifier):
1.28 - return qtxmldom.parse(self.prepare_document(document_identifier))
1.29 -
1.30 - def get_elements(self, document_identifier):
1.31 - doc = self.get_document(document_identifier)
1.32 - return doc.getElementsByTagName(document_identifier + "-enum")
1.33 -
1.34 - def prepare_template(self, template_identifier):
1.35 - filename = self.template_resources[template_identifier]
1.36 - return os.path.abspath(os.path.join(self.resource_dir, filename))
1.37 -
1.38 - def prepare_widget(self, template_identifier, widget_identifier, parent=None):
1.39 - template_path = self.prepare_template(template_identifier)
1.40 - fragment_name, widget_name = self.widget_resources[widget_identifier]
1.41 - fragment_path = os.path.abspath(os.path.join(self.resource_dir, fragment_name))
1.42 - XSLForms.Prepare.ensure_qt_fragment(template_path, fragment_path, widget_name)
1.43 - return qtui.QWidgetFactory.create(fragment_path, None, parent)
1.44 -
1.45 - def populate_list(self, field, elements):
1.46 - current_text = field.currentText()
1.47 - while field.count() > 0:
1.48 - field.removeItem(0)
1.49 - item = 0
1.50 - set = 0
1.51 - for element in elements:
1.52 - text = element.getAttribute("value")
1.53 - field.insertItem(text)
1.54 - if text == current_text:
1.55 - field.setCurrentItem(item)
1.56 - set = 1
1.57 - item += 1
1.58 - if not set:
1.59 - field.setCurrentItem(0)
1.60 -
1.61 - def reset_collection(self, field):
1.62 - layout = field.layout()
1.63 - for child in field.children():
1.64 - if child is not layout:
1.65 - layout.remove(child)
1.66 - child.deleteLater()
1.67 -
1.68 -class Factory:
1.69 -
1.70 - "A widget factory helper class."
1.71 -
1.72 - def __init__(self, ui_filename):
1.73 - self.ui_filename = ui_filename
1.74 - self.ui_doc = qtxmldom.parse(ui_filename)
1.75 -
1.76 - def connect(self, widget, obj):
1.77 -
1.78 - for connection in self.ui_doc.getElementsByTagName("connection"):
1.79 - sender_name = self.get_text(connection.getElementsByTagName("sender")[0]).encode("utf-8")
1.80 - signal_name = self.get_text(connection.getElementsByTagName("signal")[0]).encode("utf-8")
1.81 - slot_name = self.get_text(connection.getElementsByTagName("slot")[0]).encode("utf-8")
1.82 -
1.83 - if widget.name() == sender_name:
1.84 - senders = [widget]
1.85 - else:
1.86 - senders = self.find_widgets(widget, sender_name)
1.87 -
1.88 - slot = slot_name.split("(")[0]
1.89 - if hasattr(obj, slot):
1.90 - signal = qt.SIGNAL(signal_name)
1.91 - for sender in senders:
1.92 - qt.QObject.connect(sender, signal, getattr(obj, slot))
1.93 -
1.94 - def find_widgets(self, widget, name):
1.95 - widgets = []
1.96 - found = widget.child(name)
1.97 - if found:
1.98 - widgets.append(found)
1.99 - for child in widget.children():
1.100 - widgets += self.find_widgets(child, name)
1.101 - return widgets
1.102 -
1.103 - def get_text(self, node):
1.104 - node.normalize()
1.105 - return node.childNodes[0].nodeValue
1.106 -
1.107 - def find_widget_element(self, name):
1.108 - for widget in self.ui_doc.getElementsByTagName("widget"):
1.109 - for property in widget.getElementsByTagName("property"):
1.110 - if property.getAttribute("name") == "name":
1.111 - for cstring in property.getElementsByTagName("cstring"):
1.112 - found_name = self.get_text(cstring)
1.113 - if found_name == name:
1.114 - return widget
1.115 - return None
1.116 -
1.117 -# vim: tabstop=4 expandtab shiftwidth=4