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.""")) |