def __init__(self, parent): QtGui.QWizardPage.__init__(self, parent) self.dominateParent = parent self.setTitle('Welcome') self.setSubTitle('Select where you would like to upload this file to') self.configManager = DomConfigurator() layout = QtGui.QGridLayout(self) # Combo box configLabel = QtGui.QLabel('Choose Configuration') self.configBox = QtGui.QComboBox(self) self.populate() self.connect(self.configBox, QtCore.SIGNAL('currentIndexChanged(const QString&)'), self.changeConfig) layout.addWidget(configLabel, 0, 0) layout.addWidget(self.configBox, 0, 1) # List self.listWidget = QtGui.QListWidget(self) self.listWidget.setSelectionMode(QtGui.QAbstractItemView.MultiSelection) layout.addWidget(self.listWidget, 1, 0, 1, 3) self.connect(self.listWidget, QtCore.SIGNAL('itemSelectionChanged()'), lambda: self.emit(QtCore.SIGNAL('completeChanged()'))) # Register fields for access from other pages with the field() method self.registerField("config", self.configBox, 'currentText') self.registerField("sites", self.listWidget, 'selectedItems', QtCore.SIGNAL('itemSelectionChanged()')) # Make us awesome sauce self.setLayout(layout) # And now fill in the suace's secret ingredients if len(self.configManager._list) > 0: self.changeConfig(self.configBox.currentText())
def run(self): # Get our configurations configManager = DomConfigurator() configObject = configManager.getConfig(str(self.config)) for destination in configObject: if str(destination['name']) in self.sites: destination['destination'] = str(destination['destination'].rstrip('/') + '/' + self.additional) flag, message = publish(destination, self.source) #print 'Flag: %s, Message: %s' % (flag, message) self.emit(QtCore.SIGNAL('updateProgress()')) #else: #print 'Skipping ' + destination['name'] self.parent.finished = True self.parent.emit(QtCore.SIGNAL('completeChanged()'))
class FirstPage(QtGui.QWizardPage): configBox = None domainateParent = None def __init__(self, parent): QtGui.QWizardPage.__init__(self, parent) self.dominateParent = parent self.setTitle('Welcome') self.setSubTitle('Select where you would like to upload this file to') self.configManager = DomConfigurator() layout = QtGui.QGridLayout(self) # Combo box configLabel = QtGui.QLabel('Choose Configuration') self.configBox = QtGui.QComboBox(self) self.populate() self.connect(self.configBox, QtCore.SIGNAL('currentIndexChanged(const QString&)'), self.changeConfig) layout.addWidget(configLabel, 0, 0) layout.addWidget(self.configBox, 0, 1) # List self.listWidget = QtGui.QListWidget(self) self.listWidget.setSelectionMode(QtGui.QAbstractItemView.MultiSelection) layout.addWidget(self.listWidget, 1, 0, 1, 3) self.connect(self.listWidget, QtCore.SIGNAL('itemSelectionChanged()'), lambda: self.emit(QtCore.SIGNAL('completeChanged()'))) # Register fields for access from other pages with the field() method self.registerField("config", self.configBox, 'currentText') self.registerField("sites", self.listWidget, 'selectedItems', QtCore.SIGNAL('itemSelectionChanged()')) # Make us awesome sauce self.setLayout(layout) # And now fill in the suace's secret ingredients if len(self.configManager._list) > 0: self.changeConfig(self.configBox.currentText()) def populate(self): '''Populates the list of configurations''' for config in self.configManager._list: self.configBox.addItem(config) def changeConfig(self, conf): '''Listens for a change in the configuration combo box and will populate the list of sites to upload to''' # First we try to get the crap from the file try: config = self.configManager.getConfig(str(conf)) except Exception: QtGui.QMessageBox.critical(self, 'Error', 'Error reading the config. Check file permissions or formatting') return None # Now we clear the current ones self.listWidget.clear() # Now we populate the ones from this thingy for site in config: MyListItem(site, self.listWidget) # Sort thingies! self.listWidget.sortItems() def validatePage(self): '''Override the base class's method. Since the field() arguments isn't working, from what I can tell, I will do things this way rather than wrestle with that for an indeterminate amount of further time.''' # Since the QVariant bullshit in PyQt4 doesn't work the way the C++ examples do, I'm going to # say "f**k it" and just do things my way self.dominateParent.domConfig = self.configBox self.dominateParent.domSites = self.listWidget return True def isComplete(self): if len(self.listWidget.selectedItems()) > 0: return True else: return False