Ticket #125: filemanager-125.patch

File filemanager-125.patch, 2.2 KB (added by teberle, 7 months ago)
  • pida/services/filemanager/filemanager.py

    diff -r a29b790c7bc8 pida/services/filemanager/filemanager.py
    a b  
    235235        self.file_list.clear() 
    236236        self.entries.clear() 
    237237 
    238         for lister in self.svc.features('file_lister'): 
    239             GeneratorTask(lister, self.add_or_update_file).start(self.path) 
     238        def work(basepath): 
     239            dircontent = listdir(basepath) 
     240            # Take the first lister only because many listers might conflict 
     241            try: 
     242                lister = self.svc.features('file_lister').next() 
     243            except: 
     244                lister = None 
     245            # add all from lister and remove the corresponding items from 
     246            # dircontent 
     247            if (lister is not None): 
     248                for item in lister(basepath): 
     249                    try: 
     250                        dircontent.remove(item[0]) 
     251                    except: 
     252                        pass 
     253                    yield item 
     254            # handle remaining files 
     255            for filename in dircontent: 
     256                if (path.isdir(path.join(basepath, filename))): 
     257                    state = 'normal' 
     258                else: 
     259                    state = 'unknown' 
     260                yield filename, basepath, state 
     261 
     262        GeneratorTask(work, self.add_or_update_file).start(self.path) 
    240263 
    241264        self.create_ancest_tree() 
    242265 
     
    411434 
    412435    def subscribe_foreign_features(self): 
    413436        self.subscribe_feature('file_hidden_check', self.svc.check_hidden_regex) 
    414         self.subscribe_feature('file_lister', self.svc.file_lister) 
    415437 
    416438        self.subscribe_foreign_feature('contexts', 'file-menu', 
    417439            (self.svc.get_action_group(), 'filemanager-file-menu.xml')) 
     
    650672        else: 
    651673            return re.match(_re, name) is None 
    652674 
    653     def file_lister(self, basepath): 
    654         for name in listdir(basepath): 
    655             yield name, basepath, 'normal' 
    656  
    657675    def rename_file(self, old, new, basepath): 
    658676        pass 
    659677