694 |
702 |
695 guardsList = self.getGuardsList(repodir, all=False) |
703 guardsList = self.getGuardsList(repodir, all=False) |
696 if guardsList: |
704 if guardsList: |
697 dlg = HgQueuesGuardsSelectionDialog(guardsList, listOnly=True) |
705 dlg = HgQueuesGuardsSelectionDialog(guardsList, listOnly=True) |
698 dlg.exec_() |
706 dlg.exec_() |
|
707 |
|
708 def hgQueueCreateRenameQueue(self, name, isCreate): |
|
709 """ |
|
710 Public method to create a new queue or rename the active queue. |
|
711 |
|
712 @param name file/directory name (string) |
|
713 @param isCreate flag indicating to create a new queue (boolean) |
|
714 """ |
|
715 # find the root of the repo |
|
716 repodir = self.vcs.splitPath(name)[0] |
|
717 while not os.path.isdir(os.path.join(repodir, self.vcs.adminDir)): |
|
718 repodir = os.path.dirname(repodir) |
|
719 if repodir == os.sep: |
|
720 return |
|
721 |
|
722 if isCreate: |
|
723 title = self.trUtf8("Create New Queue") |
|
724 else: |
|
725 title = self.trUtf8("Rename Active Queue") |
|
726 dlg = HgQueuesQueueManagementDialog(HgQueuesQueueManagementDialog.NAME_INPUT, |
|
727 title, False, repodir) |
|
728 if dlg.exec_() == QDialog.Accepted: |
|
729 queueName = dlg.getData() |
|
730 if queueName: |
|
731 ioEncoding = Preferences.getSystem("IOEncoding") |
|
732 process = QProcess() |
|
733 args = [] |
|
734 args.append("qqueue") |
|
735 if isCreate: |
|
736 args.append("--create") |
|
737 else: |
|
738 args.append("--rename") |
|
739 args.append(queueName) |
|
740 |
|
741 process.setWorkingDirectory(repodir) |
|
742 process.start('hg', args) |
|
743 procStarted = process.waitForStarted() |
|
744 if procStarted: |
|
745 finished = process.waitForFinished(30000) |
|
746 if finished: |
|
747 if process.exitCode() != 0: |
|
748 error = \ |
|
749 str(process.readAllStandardError(), ioEncoding, 'replace') |
|
750 if isCreate: |
|
751 errMsg = self.trUtf8( |
|
752 "Error while creating a new queue.") |
|
753 else: |
|
754 errMsg = self.trUtf8( |
|
755 "Error while renaming the active queue.") |
|
756 E5MessageBox.warning(None, |
|
757 title, |
|
758 """<p>{0}</p><p>{1}</p>""".format(errMsg, error)) |
|
759 else: |
|
760 if self.queuesListQueuesDialog is not None and \ |
|
761 self.queuesListQueuesDialog.isVisible(): |
|
762 self.queuesListQueuesDialog.refresh() |
|
763 |
|
764 def hgQueueDeletePurgeActivateQueue(self, name, operation): |
|
765 """ |
|
766 Public method to delete the reference to a queue and optionally |
|
767 remove the patch directory or set the active queue. |
|
768 |
|
769 @param name file/directory name (string) |
|
770 @param operation operation to be performed (Queues.QUEUE_DELETE, |
|
771 Queues.QUEUE_PURGE, Queues.QUEUE_ACTIVATE) |
|
772 """ |
|
773 # find the root of the repo |
|
774 repodir = self.vcs.splitPath(name)[0] |
|
775 while not os.path.isdir(os.path.join(repodir, self.vcs.adminDir)): |
|
776 repodir = os.path.dirname(repodir) |
|
777 if repodir == os.sep: |
|
778 return |
|
779 |
|
780 if operation == Queues.QUEUE_PURGE: |
|
781 title = self.trUtf8("Purge Queue") |
|
782 elif operation == Queues.QUEUE_DELETE: |
|
783 title = self.trUtf8("Delete Queue") |
|
784 elif operation == Queues.QUEUE_ACTIVATE: |
|
785 title = self.trUtf8("Activate Queue") |
|
786 else: |
|
787 raise ValueError("illegal value for operation") |
|
788 |
|
789 dlg = HgQueuesQueueManagementDialog(HgQueuesQueueManagementDialog.QUEUE_INPUT, |
|
790 title, True, repodir) |
|
791 if dlg.exec_() == QDialog.Accepted: |
|
792 queueName = dlg.getData() |
|
793 if queueName: |
|
794 ioEncoding = Preferences.getSystem("IOEncoding") |
|
795 process = QProcess() |
|
796 args = [] |
|
797 args.append("qqueue") |
|
798 if operation == Queues.QUEUE_PURGE: |
|
799 args.append("--purge") |
|
800 elif operation == Queues.QUEUE_DELETE: |
|
801 args.append("--delete") |
|
802 args.append(queueName) |
|
803 |
|
804 process.setWorkingDirectory(repodir) |
|
805 process.start('hg', args) |
|
806 procStarted = process.waitForStarted() |
|
807 if procStarted: |
|
808 finished = process.waitForFinished(30000) |
|
809 if finished: |
|
810 if process.exitCode() != 0: |
|
811 error = \ |
|
812 str(process.readAllStandardError(), ioEncoding, 'replace') |
|
813 if operation == Queues.QUEUE_PURGE: |
|
814 errMsg = self.trUtf8("Error while purging the queue.") |
|
815 elif operation == Queues.QUEUE_DELETE: |
|
816 errMsg = self.trUtf8("Error while deleting the queue.") |
|
817 elif operation == Queues.QUEUE_ACTIVATE: |
|
818 errMsg = self.trUtf8( |
|
819 "Error while setting the active queue.") |
|
820 E5MessageBox.warning(None, |
|
821 title, |
|
822 """<p>{0}</p><p>{1}</p>""".format(errMsg, error)) |
|
823 else: |
|
824 if self.queuesListQueuesDialog is not None and \ |
|
825 self.queuesListQueuesDialog.isVisible(): |
|
826 self.queuesListQueuesDialog.refresh() |
|
827 |
|
828 def hgQueueListQueues(self, name): |
|
829 """ |
|
830 Public method to list available queues. |
|
831 |
|
832 @param name file/directory name (string) |
|
833 """ |
|
834 # find the root of the repo |
|
835 repodir = self.vcs.splitPath(name)[0] |
|
836 while not os.path.isdir(os.path.join(repodir, self.vcs.adminDir)): |
|
837 repodir = os.path.dirname(repodir) |
|
838 if repodir == os.sep: |
|
839 return |
|
840 |
|
841 self.queuesListQueuesDialog = HgQueuesQueueManagementDialog( |
|
842 HgQueuesQueueManagementDialog.NO_INPUT, |
|
843 self.trUtf8("Available Queues"), |
|
844 False, repodir) |
|
845 self.queuesListQueuesDialog.show() |