def toggled_item(self, data, row): """Set a function to be called when the value of a row is toggled. The function will be called with two arguments, the clicked item in the row and a string for which row was clicked.""" gui.setCursorToBusy(self, True) iter = self.store.get_iter((int(row),)) pkg = self.store.get_value(iter, COL_PACKAGE) if not pkg.selected: self.store.check(pkg) else: self.store.uncheck(pkg) try: self.controller.btnBurn.set_sensitive( self.store.get_count()['selected'] > 0) except: self.controller.btnRestorePackages.set_sensitive( self.store.get_count()['selected'] > 0) gui.setCursorToNormal(self) return
def check_uncheck_all(self, check_type = 0): gui.setCursorToBusy(self, True) tmp = self.autoselect_dependents self.autoselect_dependents = False for n in range(len(self.store)): pkg = self.store.get_value(self.store.get_iter((n,)),COL_PACKAGE) if check_type == 0 : self.store.check(pkg) elif check_type == 1: self.store.uncheck(pkg) elif check_type == 2: if not pkg.selected: self.store.check(pkg) else: self.store.uncheck(pkg) self.autoselect_dependents = tmp self.update_parent_count() gui.setCursorToNormal(self) try: self.controller.btnBurn.set_sensitive( self.store.get_count()['selected'] > 0) except: self.controller.btnRestorePackages.set_sensitive( self.store.get_count()['selected'] > 0)
def __init__(self, controller = None, missing_list = []): """ Constructor. """ self.controller = controller self.glade = gui.get_glade(constants.CREATE_GUI, WINDOW_NAME) gui.setCursorToBusy(self.controller.get_parent_widget(),True) #main widget self.window = gui.get_widget(self.glade, WINDOW_NAME) self.window.set_icon_name(constants.APP_ICON_NAME) self.window.set_transient_for(self.controller.get_main_window()) self.window.set_position(gtk.WIN_POS_CENTER_ON_PARENT) #get work widgets self.tvwNotInstalled = gui.get_widget(self.glade, 'tvwNotInstalled') self.store = gtk.ListStore(gobject.TYPE_BOOLEAN, str) self.__create_ui() if len(missing_list)>0: for n in missing_list: self.store.append([False, n]) gui.setCursorToNormal(self.controller.get_parent_widget())
def load_package_folder(self, path_to_scan, custom = False, recursive = False): """ Loads all packages files from a given path in to the list. """ gui.setCursorToBusy(self.controller.get_parent_widget(),True) self.controller.get_main_window().set_sensitive(False) processEvents() self.store._load_cache() list_bad = [] not_added = [] progress = self.controller.get_parent().progressbar progress.show() processEvents() # now get all packages in cache packages_files = utils.get_deb_from_folder(path_to_scan, recursive) f_len = len(packages_files) for index, pkg in enumerate(packages_files): #add the package to the list index+=1 percent = (float(index) / f_len) iter = self.store.add_item(pkg,path_to_scan, custom) if iter == None: not_added.append(os.path.basename(pkg)) else: if self.store.get_value(iter, COL_PACKAGE).bad: list_bad.append(self.store.get_value(iter, COL_PACKAGE).deb_filename) progress.set_fraction(percent) progress.set_text(str(int(percent * 100)) + '%' ) #process pending events / update the window if index % 2 == 0: processEvents() processEvents() progress.set_fraction(0) progress.hide() progress.set_text('0%') progress.set_fraction(0) self.controller.controller.show_status_message('Checking versions...') processEvents() self.store.uncheck_minor_version() #self.count_packages() self.not_in_cache = [] self.controller.controller.show_status_message('Checking uncached packages...') processEvents() for n in self.store.installed: if not self.store.get_package(n,self.store.installed[n]): self.not_in_cache.append(n) #print len(self.not_in_cache) #update the parent count labels self.update_parent_count() self.controller.get_main_window().set_sensitive(True) self.set_model(self.store) self.get_selection().select_path((0,0)) self.grab_focus() gui.setCursorToNormal(self.controller.get_parent_widget()) #show packages not inserted due to already exist in list if len(not_added)>0: self.__load_dialog_skip(not_added) if len(list_bad)>0: self.__load_dialog_skip(list_bad)
def add_from_file_list(self, packages_names): """ Loads all packages files from a given path in to the list. """ gui.setCursorToBusy(self.controller.get_parent_widget(),True) self.controller.get_main_window().set_sensitive(False) #self.clear() list_bad = [] not_added = [] f_len = len(packages_names) pbar_shown = False #only show progressbar if user selects more than 5 packages if len(packages_names) > 5: if self.controller.get_parent(): progress = self.controller.get_parent().progressbar progress.show() pbar_shown = True else: pbar_shown = False processEvents() indx = 1 # now get all packages in cache for index in range(f_len): percent = (float(index) / f_len) filename = os.path.basename(packages_names[index]) pathname = os.path.dirname(packages_names[index]) iter = self.store.add_item(filename,pathname, True) if iter == None: not_added.append(filename) else: #self.get_selection().select_iter(iter) if self.store.get_value(iter, COL_PACKAGE).bad: list_bad.append(self.store.get_value(iter, COL_PACKAGE).deb_filename) #process pending events / update the window if pbar_shown: progress.set_fraction(percent) progress.set_text(str(int(percent * 100)) + '%' ) processEvents() if pbar_shown: progress.set_fraction(0) progress.hide() progress.set_text('0%') progress.set_fraction(0) #update the parent count labels #update the parent count labels self.update_parent_count() self.controller.get_main_window().set_sensitive(True) self.set_model(self.store) self.get_selection().select_path((0,0)) self.grab_focus() gui.setCursorToNormal(self.controller.get_parent_widget()) #show packages not inserted due to already exist in list if len(not_added)>0: self.__load_dialog_skip(not_added, constants.MESSAGE_0017) if len(list_bad)>0: self.__load_dialog_skip(list_bad, constants.MESSAGE_0016)