@@ -42,7 +42,7 @@ def __init__(self, directory=None,
4242 def init (self , directory = None ,
4343 whitelist = None , blacklist = None ):
4444
45- self .logger = logging .getLogger (__name__ )
45+ self .logger = config .getLogger (__name__ )
4646
4747 if directory :
4848 self .directory = directory + os .sep
@@ -52,15 +52,12 @@ def init(self, directory=None,
5252 self .refresh (whitelist , blacklist )
5353
5454 def clear (self ):
55- pass
55+ self .files = []
56+ self .dirs = []
5657
5758 def refresh (self , whitelist = None ,
5859 blacklist = None ):
59- self .whitelist = whitelist or self .whitelist or []
60- self .blacklist = blacklist or self .blacklist or []
61-
62- self .files = []
63- self .dirs = []
60+ self .set_filters (whitelist , blacklist )
6461
6562 self .clear ()
6663
@@ -79,23 +76,35 @@ def walk(self, directory):
7976
8077 return self .walkcache [directory ]
8178
82- def determine_skip (self , path ):
79+ def determine_skip (self , path , * args , ** kwargs ):
8380 skip = False
8481
8582 for blacklist in self .blacklist :
8683 match = fnmatch (path , blacklist )
8784 if match :
8885 skip = True
86+ self .on_blacklist_match (path , * args , ** kwargs )
8987 break
9088
9189 for whitelist in self .whitelist :
9290 match = fnmatch (path , whitelist )
9391 if match :
9492 skip = False
93+ self .on_whitelist_match (path , * args , ** kwargs )
9594 break
9695
9796 return skip
9897
98+ def set_filters (self , whitelist = None , blacklist = None ):
99+ self .whitelist = whitelist or self .whitelist or []
100+ self .blacklist = blacklist or self .blacklist or []
101+
102+ def on_whitelist_match (self , path , * args , ** kwargs ):
103+ pass
104+
105+ def on_blacklist_match (self , path , * args , ** kwargs ):
106+ pass
107+
99108 def init_cache (self ):
100109 if self .walkcache .get (self .directory ) is None :
101110 self .walkcache [self .directory ] = []
@@ -168,7 +177,7 @@ def generate_files(self):
168177 self .files .append (path )
169178
170179
171- class TreeBrowser (QtGui .QWidget , FileTree ):
180+ class TreeBrowser (QtGui .QWidget ):
172181 def __init__ (self , directory = None ,
173182 whitelist = None , blacklist = None , parent = None ):
174183 QtGui .QWidget .__init__ (self , parent = parent )
@@ -184,10 +193,25 @@ def __init__(self, directory=None,
184193 layout .addWidget (self .root )
185194 self .setLayout (layout )
186195
187- FileTree .__init__ (self , directory , whitelist , blacklist )
196+ self .file_tree = FileTree (directory , whitelist , blacklist )
197+ self .init (directory , whitelist , blacklist )
188198
189199 def clear (self ):
190200 self .root .clear ()
201+ self .file_tree .clear ()
202+
203+ def init (self , directory = None ,
204+ whitelist = None , blacklist = None ):
205+
206+ self .file_tree .init (directory , whitelist , blacklist )
207+
208+ self .refresh (whitelist , blacklist )
209+
210+ def refresh (self , whitelist = None ,
211+ blacklist = None ):
212+ self .file_tree .set_filters (whitelist , blacklist )
213+ self .clear ()
214+ self .generate_files ()
191215
192216 def fix_tree (self , path , parent ):
193217 temp = parent
@@ -232,62 +256,49 @@ def fix_tree(self, path, parent):
232256 temp .addChild (child )
233257 temp = child
234258
235- def determine_skip (self , path , parent ):
236- skip = False
237-
238- for blacklist in self .blacklist :
239- match = fnmatch (path , blacklist )
240- if match :
241- skip = True
242- break
243-
244- for whitelist in self .whitelist :
245- match = fnmatch (path , whitelist )
246- if match :
247- skip = False
248- if parent is None :
249- self .fix_tree (path , parent )
250- break
251-
252- return skip
259+ def on_whitelist_match (self , path , parent = None ):
260+ if parent is None :
261+ self .fix_tree (path , parent )
253262
254263 def generate_files (self ):
255- if self .directory is None :
264+ directory = self .file_tree .directory
265+
266+ if directory is None :
256267 return
257268
258269 self .parent_map = {'' : self .root }
259270
260- self .init_cache ()
271+ self .file_tree . init_cache ()
261272
262- for root , dirs , files in self .walk (self . directory ):
263- self .add_to_cache (root , dirs , files )
273+ for root , dirs , files in self .file_tree . walk (directory ):
274+ self .file_tree . add_to_cache (root , dirs , files )
264275
265- proj_path = root .replace (self . directory , '' )
276+ proj_path = root .replace (directory , '' )
266277
267- for directory in dirs :
278+ for dir in dirs :
268279 parent = self .parent_map .get (proj_path )
269280
270- path = os .path .join (proj_path , directory )
281+ path = os .path .join (proj_path , dir )
271282
272- if self .determine_skip (path , parent ) or parent is None :
283+ if self .file_tree . determine_skip (path , parent = parent ) or parent is None :
273284 continue
274285
275286 child = FileItem (parent , path )
276- child .setText (0 , directory )
287+ child .setText (0 , dir )
277288 self .parent_map [path ] = child
278- self .dirs .append (path )
289+ self .file_tree . dirs .append (path )
279290
280291 for file in files :
281292 parent = self .parent_map .get (proj_path )
282293
283294 path = os .path .join (proj_path , file )
284295
285- if self .determine_skip (path , parent ) or parent is None :
296+ if self .file_tree . determine_skip (path , parent = parent ) or parent is None :
286297 continue
287298
288299 child = FileItem (parent , path )
289300 child .setText (0 , file )
290- self .files .append (path )
301+ self .file_tree . files .append (path )
291302
292303 self .root .sortItems (0 , Qt .AscendingOrder )
293304
0 commit comments