1.1 --- a/examples/Common/QtConfigurator/factory.py Mon Oct 24 18:13:53 2005 +0000
1.2 +++ b/examples/Common/QtConfigurator/factory.py Mon Oct 24 18:17:02 2005 +0000
1.3 @@ -1,22 +1,56 @@
1.4 #!/usr/bin/env python
1.5
1.6 from qt import *
1.7 +import qtui
1.8 import qtxmldom
1.9
1.10 class Factory:
1.11 def __init__(self, ui_filename):
1.12 - self.ui = qtxmldom.parse(ui_filename)
1.13 + self.ui_filename = ui_filename
1.14 + self.ui_doc = qtxmldom.parse(ui_filename)
1.15 +
1.16 + def connect(self, widget, obj):
1.17 +
1.18 + for connection in self.ui_doc.getElementsByTagName("connection"):
1.19 + sender_name = self.get_text(connection.getElementsByTagName("sender")[0]).encode("utf-8")
1.20 + signal_name = self.get_text(connection.getElementsByTagName("signal")[0]).encode("utf-8")
1.21 + slot_name = self.get_text(connection.getElementsByTagName("slot")[0]).encode("utf-8")
1.22 +
1.23 + if widget.name() == sender_name:
1.24 + sender = widget
1.25 + else:
1.26 + sender = self.find_widget(widget, sender_name)
1.27 +
1.28 + if sender:
1.29 + signal = SIGNAL(signal_name)
1.30 + slot = slot_name.split("(")[0]
1.31 +
1.32 + if hasattr(obj, slot):
1.33 + QObject.connect(sender, signal, getattr(obj, slot))
1.34
1.35 - def findWidget(self, widget_class, name):
1.36 - for widget in self.ui.getElementsByTagName("widget"):
1.37 - if widget.getAttribute("class") == widget_class:
1.38 - for property in widget.getElementsByTagName("property"):
1.39 - if property.getAttribute("name") == "name":
1.40 - for cstring in property.getElementsByTagName("cstring"):
1.41 - cstring.normalize()
1.42 - found_name = cstring.childNodes[0].nodeValue
1.43 - if found_name == name:
1.44 - return widget
1.45 + def find_widget(self, widget, name):
1.46 + found = widget.child(name)
1.47 + if found:
1.48 + return found
1.49 + else:
1.50 + for child in widget.children():
1.51 + found = self.find_widget(child, name)
1.52 + if found:
1.53 + return found
1.54 + return None
1.55 +
1.56 + def get_text(self, node):
1.57 + node.normalize()
1.58 + return node.childNodes[0].nodeValue
1.59 +
1.60 + def find_widget_element(self, name):
1.61 + for widget in self.ui_doc.getElementsByTagName("widget"):
1.62 + for property in widget.getElementsByTagName("property"):
1.63 + if property.getAttribute("name") == "name":
1.64 + for cstring in property.getElementsByTagName("cstring"):
1.65 + found_name = self.get_text(cstring)
1.66 + if found_name == name:
1.67 + return widget
1.68 return None
1.69
1.70 # vim: tabstop=4 expandtab shiftwidth=4