def __init__(self, parent_widget): QDialog.__init__(self, parent_widget) self.setupUi(self) settings_directory = os.path.join(os.environ['OPUS_HOME'], 'settings') self._config_filename = os.path.join(settings_directory, 'database_server_configurations.xml') try: root = ElementTree(file=self._config_filename).getroot() view = XmlView(self) model = XmlModel(root) delegate = XmlItemDelegate(view) view.setModel(model) # Turns out that Qt Garbage collects the model (and delegate) if we don't explicitly # bind it to a Python object in addition to using the PyQt .setModel() method. view._model = model view._delegate = delegate view.setItemDelegate(delegate) view.openDefaultItems() self.gridlayout.addWidget(view) self.tree_view = view self.xml_root = root return except IOError, ex: MessageBox.error(mainwindow = self, text = 'Could not initialize Database Settings', detailed_text = str(ex)) self.xml_root = None self._config_filename = '' self.configFile = None
def setUp(self): self.app = QApplication([], True) self.testdatapath = os.path.split(__file__)[0] self.testdatapath = os.path.join(self.testdatapath, 'testdata') manager_xml_file = os.path.join(self.testdatapath, 'model_manager.xml') self.xml = ElementTree(file=manager_xml_file).getroot() self.instance = XmlModel(self.xml)
def add_model_view_delegate(self): ''' Initialize and bind the Model, View and Delegate for this controller. This method is called before any initialization of the widgets. Subclasses that wish to use their own model, view and/or delegate should override this method and initialize their own widgets. ''' self.model = XmlModel(self.xml_root, self.project) self.view = XmlView(self.manager.base_widget) self.delegate = XmlItemDelegate(self.view)