Plugins/VcsPlugins/vcsMercurial/HgExportDialog.py

changeset 1315
faafd2aa48d5
child 1509
c0b5e693b0eb
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Plugins/VcsPlugins/vcsMercurial/HgExportDialog.py	Tue Sep 13 19:41:54 2011 +0200
@@ -0,0 +1,117 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2011 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing a dialog to enter data for the Mercurial export command.
+"""
+
+import os
+
+from PyQt4.QtCore import pyqtSlot, QDir
+from PyQt4.QtGui import QDialog, QDialogButtonBox, QFileDialog
+
+from E5Gui import E5FileDialog
+from E5Gui.E5Completers import E5DirCompleter
+
+from .Ui_HgExportDialog import Ui_HgExportDialog
+
+import Utilities
+
+
+class HgExportDialog(QDialog, Ui_HgExportDialog):
+    """
+    Class documentation goes here.
+    """
+    def __init__(self, parent=None):
+        """
+        Constructor
+        
+        @param parent reference to the parent widget (QWidget)
+        """
+        super().__init__(parent)
+        self.setupUi(self)
+        
+        self.buttonBox.button(QDialogButtonBox.Ok).setEnabled(False)
+        
+        self.__directoryCompleter = E5DirCompleter(self.directoryEdit)
+        
+        # set default values for directory and pattern
+        self.patternEdit.setText("%b_%r_%h_%n_of_%N.diff")
+        self.directoryEdit.setText(QDir.tempPath())
+    
+    def __updateOK(self):
+        """
+        Private slot to update the OK button.
+        """
+        enabled = True
+        
+        if self.directoryEdit.text() == "":
+            enabled = False
+        elif self.patternEdit.text() == "":
+            enabled = False
+        elif self.changesetsEdit.toPlainText() == "":
+            enabled = False
+        
+        self.buttonBox.button(QDialogButtonBox.Ok).setEnabled(enabled)
+    
+    @pyqtSlot(str)
+    def on_directoryEdit_textChanged(self, p0):
+        """
+        Private slot to react on changes of the export directory edit.
+        
+        @param txt contents of the line edit (string)
+        """
+        self.__updateOK()
+    
+    @pyqtSlot()
+    def on_directoryButton_clicked(self):
+        """
+        Private slot called by pressing the export directory selection button.
+        """
+        dn = E5FileDialog.getExistingDirectory(
+            self,
+            self.trUtf8("Export Patches"),
+            self.directoryEdit.text(),
+            QFileDialog.Options(QFileDialog.Option(0)))
+        
+        if dn:
+            self.directoryEdit.setText(Utilities.toNativeSeparators(dn))
+    
+    @pyqtSlot(str)
+    def on_patternEdit_textChanged(self, p0):
+        """
+        Private slot to react on changes of the export file name pattern edit.
+        
+        @param txt contents of the line edit (string)
+        """
+        self.__updateOK()
+    
+    @pyqtSlot()
+    def on_changesetsEdit_textChanged(self):
+        """
+        Private slot to react on changes of the changesets edit.
+        
+        @param txt contents of the line edit (string)
+        """
+        self.__updateOK()
+    
+    def getParameters(self):
+        """
+        Public method to retrieve the export data.
+        
+        @return tuple naming the output file name, the list of revisions to export,
+            and flags indicating to compare against the second parent, to treat all
+            files as text, to omit dates in the diff headers and to use the git extended
+            diff format (string, list of strings, boolean, boolean, boolean, boolean)
+        """
+        return (
+            os.path.join(Utilities.toNativeSeparators(self.directoryEdit.text()),
+                         self.patternEdit.text()),
+            self.changesetsEdit.toPlainText().splitlines(),
+            self.switchParentCheckBox.isChecked(),
+            self.textCheckBox.isChecked(),
+            self.datesCheckBox.isChecked(),
+            self.gitCheckBox.isChecked()
+        )

eric ide

mercurial