src/eric7/Project/ProjectBrowserModel.py

branch
server
changeset 10631
00f5aae565a3
parent 10610
bb0149571d94
child 10680
306373ccf8fd
equal deleted inserted replaced
10630:552a790fd9bc 10631:00f5aae565a3
340 @param repopulate flag indicating a repopulation 340 @param repopulate flag indicating a repopulation
341 @type bool 341 @type bool
342 """ 342 """
343 self._addWatchedItem(parentItem) 343 self._addWatchedItem(parentItem)
344 344
345 qdir = QDir(parentItem.dirName()) 345 dirName = parentItem.dirName()
346 346 if FileSystemUtilities.isPlainFileName(dirName):
347 fileFilter = ( 347 qdir = QDir(parentItem.dirName())
348 (QDir.Filter.AllEntries | QDir.Filter.Hidden | QDir.Filter.NoDotAndDotDot) 348
349 if Preferences.getProject("BrowsersListHiddenFiles") 349 fileFilter = (
350 else QDir.Filter.AllEntries | QDir.Filter.NoDotAndDotDot 350 (
351 ) 351 QDir.Filter.AllEntries
352 entryInfoList = qdir.entryInfoList(fileFilter) 352 | QDir.Filter.Hidden
353 353 | QDir.Filter.NoDotAndDotDot
354 if len(entryInfoList) > 0:
355 if repopulate:
356 self.beginInsertRows(
357 self.createIndex(parentItem.row(), 0, parentItem),
358 0,
359 len(entryInfoList) - 1,
360 ) 354 )
361 states = {} 355 if Preferences.getProject("BrowsersListHiddenFiles")
362 if self.project.vcs is not None: 356 else QDir.Filter.AllEntries | QDir.Filter.NoDotAndDotDot
357 )
358 entryInfoList = qdir.entryInfoList(fileFilter)
359
360 if len(entryInfoList) > 0:
361 if repopulate:
362 self.beginInsertRows(
363 self.createIndex(parentItem.row(), 0, parentItem),
364 0,
365 len(entryInfoList) - 1,
366 )
367 states = {}
368 if self.project.vcs is not None:
369 for f in entryInfoList:
370 fname = f.absoluteFilePath()
371 states[os.path.normcase(fname)] = 0
372 dname = parentItem.dirName()
373 self.project.vcs.clearStatusCache()
374 states = self.project.vcs.vcsAllRegisteredStates(states, dname)
375
363 for f in entryInfoList: 376 for f in entryInfoList:
364 fname = f.absoluteFilePath() 377 node = (
365 states[os.path.normcase(fname)] = 0 378 ProjectBrowserDirectoryItem(
366 dname = parentItem.dirName() 379 parentItem,
367 self.project.vcs.clearStatusCache() 380 FileSystemUtilities.toNativeSeparators(
368 states = self.project.vcs.vcsAllRegisteredStates(states, dname) 381 f.absoluteFilePath()
369 382 ),
370 for f in entryInfoList: 383 parentItem.getProjectTypes()[0],
371 node = ( 384 False,
372 ProjectBrowserDirectoryItem( 385 fsInterface=self.__remotefsInterface,
373 parentItem, 386 )
374 FileSystemUtilities.toNativeSeparators(f.absoluteFilePath()), 387 if f.isDir()
375 parentItem.getProjectTypes()[0], 388 else ProjectBrowserFileItem(
376 False, 389 parentItem,
377 fsInterface=self.__remotefsInterface, 390 FileSystemUtilities.toNativeSeparators(
391 f.absoluteFilePath()
392 ),
393 parentItem.getProjectTypes()[0],
394 fsInterface=self.__remotefsInterface,
395 )
378 ) 396 )
379 if f.isDir() 397 if self.project.vcs is not None:
380 else ProjectBrowserFileItem( 398 fname = f.absoluteFilePath()
381 parentItem, 399 if (
382 FileSystemUtilities.toNativeSeparators(f.absoluteFilePath()), 400 states[os.path.normcase(fname)]
383 parentItem.getProjectTypes()[0], 401 == VersionControlState.Controlled
384 fsInterface=self.__remotefsInterface, 402 ):
403 node.addVcsStatus(self.project.vcs.vcsName())
404 self.project.clearStatusMonitorCachedState(
405 f.absoluteFilePath()
406 )
407 else:
408 node.addVcsStatus(self.tr("local"))
409 else:
410 node.addVcsStatus("")
411 self._addItem(node, parentItem)
412 if repopulate:
413 self.endInsertRows()
414
415 elif FileSystemUtilities.isRemoteFileName(dirName):
416 entriesList = self.__remotefsInterface.listdir(dirName)[2]
417 if len(entriesList) > 0:
418 if repopulate:
419 self.beginInsertRows(
420 self.createIndex(parentItem.row(), 0, parentItem),
421 0,
422 len(entryInfoList) - 1,
385 ) 423 )
386 ) 424 for entry in entriesList:
387 if self.project.vcs is not None: 425 node = (
388 fname = f.absoluteFilePath() 426 ProjectBrowserDirectoryItem(
389 if ( 427 parentItem,
390 states[os.path.normcase(fname)] 428 entry["path"],
391 == VersionControlState.Controlled 429 parentItem.getProjectTypes()[0],
392 ): 430 False,
393 node.addVcsStatus(self.project.vcs.vcsName()) 431 fsInterface=self.__remotefsInterface,
394 self.project.clearStatusMonitorCachedState(f.absoluteFilePath()) 432 )
395 else: 433 if entry["is_dir"]
396 node.addVcsStatus(self.tr("local")) 434 else ProjectBrowserFileItem(
397 else: 435 parentItem,
436 entry["path"],
437 parentItem.getProjectTypes()[0],
438 fsInterface=self.__remotefsInterface,
439 )
440 )
398 node.addVcsStatus("") 441 node.addVcsStatus("")
399 self._addItem(node, parentItem) 442 self._addItem(node, parentItem)
400 if repopulate: 443 if repopulate:
401 self.endInsertRows() 444 self.endInsertRows()
402 445
403 def projectClosed(self): 446 def projectClosed(self):
404 """ 447 """
405 Public method called after a project has been closed. 448 Public method called after a project has been closed.
406 """ 449 """
425 """ 468 """
426 self.__vcsStatus = {} 469 self.__vcsStatus = {}
427 states = {} 470 states = {}
428 fileCategories = self.project.getFileCategories() 471 fileCategories = self.project.getFileCategories()
429 472
430 if self.project.vcs is not None: 473 if self.project.vcs is not None and not FileSystemUtilities.isRemoteFileName(
474 self.project.ppath
475 ):
431 for fileCategory in fileCategories: 476 for fileCategory in fileCategories:
432 for fn in self.project.getProjectData(dataKey=fileCategory): 477 for fn in self.project.getProjectData(dataKey=fileCategory):
433 states[os.path.normcase(os.path.join(self.project.ppath, fn))] = 0 478 states[os.path.normcase(os.path.join(self.project.ppath, fn))] = 0
434 479
435 self.project.vcs.clearStatusCache() 480 self.project.vcs.clearStatusCache()
477 sourceLanguage=sourceLanguage, 522 sourceLanguage=sourceLanguage,
478 fsInterface=self.__remotefsInterface, 523 fsInterface=self.__remotefsInterface,
479 ) 524 )
480 ) 525 )
481 self._addItem(itm, parentItem) 526 self._addItem(itm, parentItem)
482 if self.project.vcs is not None: 527 if (
528 self.project.vcs is not None
529 and not FileSystemUtilities.isRemoteFileName(self.project.ppath)
530 ):
483 if ( 531 if (
484 states[os.path.normcase(fname)] 532 states[os.path.normcase(fname)]
485 == VersionControlState.Controlled 533 == VersionControlState.Controlled
486 ): 534 ):
487 itm.addVcsStatus(self.project.vcs.vcsName()) 535 itm.addVcsStatus(self.project.vcs.vcsName())

eric ide

mercurial