def __expanded(self, iter, path, model): window = self.window if window: window.set_cursor(gtk.gdk.Cursor(gtk.gdk.WATCH)) gtk.main_iteration(block=False) try: try: if model is None: return while model.iter_has_child(iter): model.remove(model.iter_children(iter)) folder = model[iter][0] for path in util.listdir(folder): try: if not os.path.isdir(path): continue for filename in util.listdir(path): if os.path.isdir(filename): niter = model.append(iter, [path]) model.append(niter, ["dummy"]) break else: model.append(iter, [path]) except OSError: pass if not model.iter_has_child(iter): return True except OSError: pass finally: if window: window.set_cursor(None)
def __fill(self, selection, filelist): fselect = filelist.get_selection() fselect.handler_block(self.__sig) fmodel, frows = fselect.get_selected_rows() selected = [fmodel[row][0] for row in frows] fmodel = filelist.get_model() fmodel.clear() dmodel, rows = selection.get_selected_rows() dirs = [dmodel[row][0] for row in rows] for dir in dirs: try: files = filter(self.__filter, util.listdir(dir)) for file in sorted(files): filename = os.path.join(dir, file) if (os.access(filename, os.R_OK) and not os.path.isdir(filename)): fmodel.append([filename]) except OSError: pass for row in fmodel: if row[0] in selected: fselect.select_path(row.path) fselect.handler_unblock(self.__sig) fselect.emit('changed')