def __init__(self, parent=None): #super(MainWidget,self).__init__() QWidget.__init__(self, parent) # burada bir hata var self.setupUi(self) self.parent = parent self._selectedGroups = [] self._preexceptions = [] self._postexceptions = [] self.state = StateManager(self) self.currentState = None self.completer = None self._updatesCheckedOnce = False # Search Thread self._searchThread = PThread(self, self.startSearch, self.searchFinished) self.statusUpdater = StatusUpdater() self.basket = BasketDialog(self.state, self.parent) self._postexceptions.append(lambda: self.basket.setActionEnabled(True)) self.searchButton.setIcon(KIcon(("edit-find", "find"))) self.initializeUpdateTypeList() model = PackageModel(self) proxy = PackageProxy(self) proxy.setSourceModel(model) self.packageList.setModel(proxy) self.packageList.setItemDelegate(PackageDelegate(self, self.parent)) self.packageList.setColumnWidth(0, 32) #burada hata alabilirim self.packageList.model().dataChanged[QModelIndex, QModelIndex].connect( self.statusChanged) self.packageList.updateRequested.connect(self.initialize) self.updateSettings() self.setActionButton() self.operation = OperationManager(self.state) self.progressDialog = ProgressDialog(self.state, self.parent) self._preexceptions.append(self.progressDialog._hide) self.progressDialog.registerFunction( FINISHED, lambda: self.parent.statusBar().setVisible( not self.progressDialog.isVisible())) self.progressDialog.registerFunction( OUT, lambda: self.parent.statusBar().show()) self.summaryDialog = SummaryDialog() self.connectOperationSignals() self.pdsMessageBox = PMessageBox(self.content)
def __init__(self, parent=None): QtGui.QWidget.__init__(self, parent) self.setupUi(self) self.searchButton.setIcon(KIcon("edit-find")) self.statusUpdater = StatusUpdater() self.state = StateManager(self) self.session = SessionManager() self.basket = BasketDialog(self.state) self.initialize() self.setSelectAll() self.actionButton.setIcon(self.state.getActionIcon()) self.operation = OperationManager(self.state) self.progressDialog = ProgressDialog(self.state) self.summaryDialog = SummaryDialog() self.connectMainSignals() self.connectOperationSignals()
def browse_for_iso(self): clean_iso_path, selected_filter = QFileDialog.getOpenFileName(self, "Select Clean Skyward Sword NTSC-U 1.0 ISO", None, "Wii ISO Files (*.iso)") if not clean_iso_path: return self.progress_dialog = ProgressDialog("Extracting Game Files", "Initializing...", 100) self.progress_dialog.setAutoClose(True) self.extract_thread = ExtractSetupThread(self.wit_manager, clean_iso_path, None) self.extract_thread.update_total_steps.connect(lambda total_steps: self.progress_dialog.setMaximum(total_steps)) self.extract_thread.update_progress.connect(self.ui_progress_callback) def on_complete(): self.progress_dialog.reset() if self.randomize_after_iso_extract: self.randomize() self.extract_thread.extract_complete.connect(on_complete) def on_error(msg): self.progress_dialog.reset() self.error_msg = QMessageBox.critical(self, "Error", msg) self.extract_thread.error_abort.connect(on_error) self.extract_thread.start()
def randomize(self): if not self.randothread is None: print('ERROR: tried to randomize multiple times at once!') return dry_run = self.options['dry-run'] if not (dry_run or self.wit_manager.actual_extract_already_exists()): self.randomize_after_iso_extract = True self.ask_for_clean_iso() return # make sure user can't mess with the options now rando = Randomizer(self.options.copy()) if dry_run: extra_steps = 1 # done else: extra_steps = 101 # wit create wbfs + done self.progress_dialog = ProgressDialog("Randomizing", "Initializing...", rando.get_total_progress_steps() + extra_steps) self.randomizer_thread = RandomizerThread(rando, self.wit_manager, self.output_folder) self.randomizer_thread.update_progress.connect(self.ui_progress_callback) self.randomizer_thread.randomization_complete.connect(self.randomization_complete) self.randomizer_thread.error_abort.connect(self.on_error) self.randomizer_thread.start()
def __init__(self, app=None, packages=[], hide_summary=False): QDialog.__init__(self, None) self.setupUi(self) self.hide_summary = hide_summary self.state = StateManager(self) self.iface = self.state.iface self.state._selected_packages = packages self._packages = packages[:] self._started = False self._postexceptions = [lambda: sys.exit(1)] # Check if another pisi instance already running if isPisiRunning(): self.exceptionCaught("ALREADY RUNNING", block=True) # Check given package names available in repositories if not any(package.endswith('.pisi') for package in packages): available_packages = self.state.packages() for package in packages: if package not in available_packages: self.exceptionCaught('HTTP Error 404', package, block=True) # Check if local/remote packages mixed with repo packages # which pisi does not support to handle these at the same time else: if not all(package.endswith('.pisi') for package in packages): self.exceptionCaught('MIXING PACKAGES', block=True) # Check given local packages if exists for package in get_real_paths(packages): if '://' not in package and package.endswith('.pisi'): if not os.path.exists(package): self.exceptionCaught('FILE NOT EXISTS', package, block=True) self.state.state = StateManager.INSTALL # Get a list of package names from given args. # It may include a path to local package, a path to remote package # or just a package name; following crypted code will remove # remote paths, appends package name as is and uses the pisi.api # to get package name from given local package path. # # Example: # input : ['/tmp/ax-2.3-1.pisi', 'http://pardus.org.tr/tt-2.3.pisi', 'yali'] # output: ['ax', 'yali'] _pkgs = map(lambda x: pisi.api.info_file(x)[0].package.name \ if x.endswith('.pisi') \ else x, filter(lambda x: '://' not in x, get_real_paths(self.state._selected_packages))) _pkgs = filter(lambda x: self.iface.pdb.has_package(x), _pkgs) extras = self.state.iface.getExtras(_pkgs, self.state.state) if extras: self.state._selected_packages.extend(extras) self.model = PackageModel(self) self.model.setCheckable(False) proxy = PackageProxy(self) proxy.setSourceModel(self.model) self.packageList.setModel(proxy) self.packageList.setPackages(packages) self.packageList.selectAll(packages) self.packageList.setItemDelegate( PackageDelegate(self, self, showDetailsButton=False)) self.packageList.setColumnWidth(0, 32) self.packageList.hideSelectAll() self.operation = OperationManager(self.state) self.progressDialog = ProgressDialog(self.state, self) self.summaryDialog = SummaryDialog() self.connectOperationSignals() self.button_install.clicked.connect(self.installPackages) self.button_install.setIcon(KIcon(("list-add", "add"))) self.button_cancel.clicked.connect(self.actionCancelled) self.button_cancel.setIcon(KIcon("cancel")) self.rejected.connect(self.actionCancelled)
def run(self): self.emit('started', len(self.args)) for index, arg in enumerate(self.args): if self.stopit is True: break self.emit('started_one', arg) self.callback(arg) self.emit('done_one', arg) self.emit('ended', self.ok) if __name__ == '__main__': from progressdialog import ProgressDialog def test(arg): def feed(self, astring): print(arg) commands = ['ls', 'ls -la', 'ls'] diib = DoItInBackground(test, commands) progreso = ProgressDialog('Adding new ppa', None) progreso.set_number_of_elements(len(commands)) diib.connect('started_one', progreso.set_element) # diib.connect('done_one', progreso.increase) diib.connect('ended', progreso.close) progreso.connect('i-want-stop', diib.stop) diib.start() progreso.run() time.sleep(10)