def reinstallPackages(self, packages): packages = get_real_paths(packages) logger.debug("Re-Installing packages: %s" % packages) packages = string.join(packages, ",") self.link.System.Manager["pisi"].reinstallPackage(packages, async=self.handler, timeout=2**16 - 1)
def reinstallPackages(self, packages): packages = get_real_paths(packages) logger.debug("Re-Installing packages: %s" % packages) packages = string.join(packages,",") self.link.System.Manager["pisi"].reinstallPackage(packages, async=self.handler, timeout=2**16-1)
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")) self.button_cancel.clicked.connect(self.actionCancelled) self.button_cancel.setIcon(KIcon("dialog-cancel")) self.rejected.connect(self.actionCancelled)
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")) self.button_cancel.clicked.connect(self.actionCancelled) self.button_cancel.setIcon(KIcon("dialog-cancel")) self.rejected.connect(self.actionCancelled)