Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.py

changeset 5488
d3729abac667
parent 5487
7ce9c29cd26f
child 5489
5c9a82215917
diff -r 7ce9c29cd26f -r d3729abac667 Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.py
--- a/Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.py	Sun Feb 05 13:19:34 2017 +0100
+++ b/Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.py	Sun Feb 05 14:16:53 2017 +0100
@@ -79,8 +79,6 @@
         self.diffSplitter.setStretchFactor(0, 1)
         self.diffSplitter.setStretchFactor(1, 2)
         
-        self.__position = QPoint()
-        
         if mode == "log":
             self.setWindowTitle(self.tr("Mercurial Log"))
         elif mode == "incoming":
@@ -368,7 +366,15 @@
                 QTimer.singleShot(2000, self.process.kill)
                 self.process.waitForFinished(3000)
         
-        self.__position = self.pos()
+        self.vcs.getPlugin().setPreferences(
+            "LogBrowserGeometry", self.saveGeometry())
+        self.vcs.getPlugin().setPreferences(
+            "LogBrowserSplitterStates", [
+                self.mainSplitter.saveState(),
+                self.detailsSplitter.saveState(),
+                self.diffSplitter.saveState(),
+            ]
+        )
         
         e.accept()
     
@@ -376,11 +382,34 @@
         """
         Public slot to show the dialog.
         """
-        if not self.__position.isNull():
-            self.move(self.__position)
+        self.__reloadGeometry()
+        self.__restoreSplitterStates()
         self.__resetUI()
         
         super(HgLogBrowserDialog, self).show()
+
+    def __reloadGeometry(self):
+        """
+        Private method to restore the geometry.
+        """
+        geom = self.vcs.getPlugin().getPreferences("LogBrowserGeometry")
+        if geom.isEmpty():
+            s = QSize(1000, 800)
+            self.resize(s)
+        else:
+            self.restoreGeometry(geom)
+    
+    def __restoreSplitterStates(self):
+        """
+        Private method to restore the state of the various splitters.
+        """
+        states = self.vcs.getPlugin().getPreferences(
+            "LogBrowserSplitterStates")
+        if len(states) == 3:
+            # we have three splitters
+            self.mainSplitter.restoreState(states[0])
+            self.detailsSplitter.restoreState(states[1])
+            self.diffSplitter.restoreState(states[2])
     
     def __resetUI(self):
         """

eric ide

mercurial