Plugins/VcsPlugins/vcsMercurial/QueuesExtension/queues.py

changeset 1046
5dd14be5d6a1
parent 1035
2cd7817ac659
child 1047
b41a36b201e4
equal deleted inserted replaced
1044:11aca34cce20 1046:5dd14be5d6a1
19 from .HgQueuesNewPatchDialog import HgQueuesNewPatchDialog 19 from .HgQueuesNewPatchDialog import HgQueuesNewPatchDialog
20 from .HgQueuesListDialog import HgQueuesListDialog 20 from .HgQueuesListDialog import HgQueuesListDialog
21 from .HgQueuesRenamePatchDialog import HgQueuesRenamePatchDialog 21 from .HgQueuesRenamePatchDialog import HgQueuesRenamePatchDialog
22 from .HgQueuesFoldDialog import HgQueuesFoldDialog 22 from .HgQueuesFoldDialog import HgQueuesFoldDialog
23 from .HgQueuesHeaderDialog import HgQueuesHeaderDialog 23 from .HgQueuesHeaderDialog import HgQueuesHeaderDialog
24 from .HgQueuesListGuardsDialog import HgQueuesListGuardsDialog
25 from .HgQueuesListAllGuardsDialog import HgQueuesListAllGuardsDialog
26 from .HgQueuesDefineGuardsDialog import HgQueuesDefineGuardsDialog
24 27
25 import Preferences 28 import Preferences
26 29
27 30
28 class Queues(QObject): 31 class Queues(QObject):
45 48
46 self.vcs = vcs 49 self.vcs = vcs
47 50
48 self.qdiffDialog = None 51 self.qdiffDialog = None
49 self.qheaderDialog = None 52 self.qheaderDialog = None
53 self.queuesListDialog = None
54 self.queuesListGuardsDialog = None
55 self.queuesListAllGuardsDialog = None
56 self.queuesDefineGuardsDialog = None
50 57
51 def shutdown(self): 58 def shutdown(self):
52 """ 59 """
53 Public method used to shutdown the queues interface. 60 Public method used to shutdown the queues interface.
54 """ 61 """
55 if self.qdiffDialog is not None: 62 if self.qdiffDialog is not None:
56 self.qdiffDialog.close() 63 self.qdiffDialog.close()
57 if self.qheaderDialog is not None: 64 if self.qheaderDialog is not None:
58 self.qheaderDialog.close() 65 self.qheaderDialog.close()
66 if self.queuesListDialog is not None:
67 self.queuesListDialog.close()
68 if self.queuesListGuardsDialog is not None:
69 self.queuesListGuardsDialog.close()
70 if self.queuesListAllGuardsDialog is not None:
71 self.queuesListAllGuardsDialog.close()
72 if self.queuesDefineGuardsDialog is not None:
73 self.queuesDefineGuardsDialog.close()
59 74
60 def __getPatchesList(self, repodir, listType, withSummary=False): 75 def __getPatchesList(self, repodir, listType, withSummary=False):
61 """ 76 """
62 Public method to get a list of patches of a given type. 77 Public method to get a list of patches of a given type.
63 78
469 self.trUtf8("""No patches selected.""")) 484 self.trUtf8("""No patches selected."""))
470 else: 485 else:
471 E5MessageBox.information(None, 486 E5MessageBox.information(None,
472 self.trUtf8("Fold Patches"), 487 self.trUtf8("Fold Patches"),
473 self.trUtf8("""No patches available to be folded.""")) 488 self.trUtf8("""No patches available to be folded."""))
489
490 def hgQueueGuardsList(self, name):
491 """
492 Public method to list the guards for the current or a named patch.
493
494 @param name file/directory name (string)
495 """
496 # find the root of the repo
497 repodir = self.vcs.splitPath(name)[0]
498 while not os.path.isdir(os.path.join(repodir, self.vcs.adminDir)):
499 repodir = os.path.dirname(repodir)
500 if repodir == os.sep:
501 return
502
503 patchnames = sorted(
504 self.__getPatchesList(repodir, Queues.SERIES_LIST))
505 if patchnames:
506 self.queuesListGuardsDialog = HgQueuesListGuardsDialog(self.vcs, patchnames)
507 self.queuesListGuardsDialog.show()
508 self.queuesListGuardsDialog.start(name)
509 else:
510 E5MessageBox.information(None,
511 self.trUtf8("List Guards"),
512 self.trUtf8("""No patches available to list guards for."""))
513
514 def hgQueueGuardsListAll(self, name):
515 """
516 Public method to list all guards of all patches.
517
518 @param name file/directory name (string)
519 """
520 self.queuesListAllGuardsDialog = HgQueuesListAllGuardsDialog(self.vcs)
521 self.queuesListAllGuardsDialog.show()
522 self.queuesListAllGuardsDialog.start(name)
523
524 def hgQueueGuardsDefine(self, name):
525 """
526 Public method to define guards for the current or a named patch.
527
528 @param name file/directory name (string)
529 """
530 # find the root of the repo
531 repodir = self.vcs.splitPath(name)[0]
532 while not os.path.isdir(os.path.join(repodir, self.vcs.adminDir)):
533 repodir = os.path.dirname(repodir)
534 if repodir == os.sep:
535 return
536
537 patchnames = sorted(
538 self.__getPatchesList(repodir, Queues.SERIES_LIST))
539 if patchnames:
540 self.queuesDefineGuardsDialog = HgQueuesDefineGuardsDialog(
541 self.vcs, patchnames)
542 self.queuesDefineGuardsDialog.show()
543 self.queuesDefineGuardsDialog.start(name)
544 else:
545 E5MessageBox.information(None,
546 self.trUtf8("Define Guards"),
547 self.trUtf8("""No patches available to define guards for."""))
548
549 def hgQueueGuardsDropAll(self, name):
550 """
551 Public method to drop all guards of the current or a named patch.
552
553 @param name file/directory name (string)
554 """
555 # find the root of the repo
556 repodir = self.vcs.splitPath(name)[0]
557 while not os.path.isdir(os.path.join(repodir, self.vcs.adminDir)):
558 repodir = os.path.dirname(repodir)
559 if repodir == os.sep:
560 return
561
562 patchnames = sorted(
563 self.__getPatchesList(repodir, Queues.SERIES_LIST))
564 if patchnames:
565 patch, ok = QInputDialog.getItem(
566 None,
567 self.trUtf8("Drop All Guards"),
568 self.trUtf8("Select the patch to drop guards for"
569 " (leave empty for the current patch):"),
570 [""] + patchnames,
571 0, False)
572 if ok:
573 process = QProcess()
574 args = []
575 args.append("qguard")
576 if patch:
577 args.append(patch)
578 args.append("--none")
579
580 process.setWorkingDirectory(repodir)
581 process.start('hg', args)
582 procStarted = process.waitForStarted()
583 if procStarted:
584 process.waitForFinished(30000)
585 else:
586 E5MessageBox.information(None,
587 self.trUtf8("Drop All Guards"),
588 self.trUtf8("""No patches available to define guards for."""))

eric ide

mercurial