Show
Ignore:
Timestamp:
05/08/08 23:02:18 (4 months ago)
Author:
Tobias Eberle <info@…>
Children:
1151:121df08315cf, 1152:0c20ab72990b
Message:

rewrite of file listing: no flickering any more (fixes #125)

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • pida/services/filemanager/filemanager.py

    r1142 r1150  
    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            dir_content = listdir(basepath) 
     240            # add all files from vcs and remove the corresponding items  
     241            # from dir_content 
     242            for item in self.svc.boss.cmd('versioncontrol', 'list_file_states', 
     243              path=self.path): 
     244                if (item[1] == self.path): 
     245                    try: 
     246                        dir_content.remove(item[0]) 
     247                    except: 
     248                        pass 
     249                    yield item 
     250            # handle remaining files 
     251            for filename in dir_content: 
     252                if (path.isdir(path.join(basepath, filename))): 
     253                    state = 'normal' 
     254                else: 
     255                    state = 'unknown' 
     256                yield filename, basepath, state 
     257 
     258        GeneratorTask(work, self.add_or_update_file).start(self.path) 
    240259 
    241260        self.create_ancest_tree() 
     
    408427        self.create_feature('file_manager') 
    409428        self.create_feature('file_hidden_check') 
    410         self.create_feature('file_lister') 
    411429 
    412430    def subscribe_foreign_features(self): 
    413431        self.subscribe_feature('file_hidden_check', self.svc.check_hidden_regex) 
    414         self.subscribe_feature('file_lister', self.svc.file_lister) 
    415432 
    416433        self.subscribe_foreign_feature('contexts', 'file-menu', 
     
    651668            return re.match(_re, name) is None 
    652669 
    653     def file_lister(self, basepath): 
    654         for name in listdir(basepath): 
    655             yield name, basepath, 'normal' 
    656  
    657670    def rename_file(self, old, new, basepath): 
    658671        pass