[prev in list] [next in list] [prev in thread] [next in thread] 

List:       pykde
Subject:    [PyKDE] [PATCH] eric3 remembers geometry
From:       Hans-Peter Jansen <hpj () urpla ! net>
Date:       2002-11-27 17:48:41
[Download RAW message or body]

Hi Detlef,

what do you think about the attached patch. Is it good enough for inclusi=
on?
My first eric source contact was a pleasure (as it took me less then 45 m=
in
to finish it and writing this mail :)

Works-for-me'ly y'rs,
Hans-Peter

P.S.: diff complains about unterminated last line in both modified files.
If they're created with eric3, could you fix this?
["ericgeom.diff" (text/x-diff)]

--- eric/Preferences.py.orig	2002-11-27 18:05:30.000000000 +0100
+++ eric/Preferences.py	2002-11-27 18:32:19.000000000 +0100
@@ -73,10 +73,16 @@
     
     # defaults for system settings
     sysDefaults = {
         "StringEncoding" : "latin-1"
     }
+
+    # defaults for geometry
+    geometryDefaults = {
+        "MainGeometry" : [0,0,0,0],
+        "MainSplitter" : [0,0,0,0,0]
+    }
     
 def readPreferences(prefClass = Prefs):
     """
     Module function to read the preferences and transfer them into the central
     store.
@@ -152,11 +158,21 @@
     # read the entries for system settings
     prefClass.sysPrefs = {}
     prefClass.sysPrefs["StringEncoding"], ok = \
         prefClass.settings.readEntry("/eric3/System/StringEncoding",
             prefClass.sysDefaults["StringEncoding"])
-            
+    
+    # read the entries for the display geometry
+    prefClass.geometryPrefs = {}
+    for key in prefClass.geometryDefaults.keys():
+        v, ok = prefClass.settings.readEntry("/eric3/Geometry/" + key)
+        if ok:
+            prefClass.geometryPrefs[key] = eval(str(v))
+        else:
+            prefClass.geometryPrefs[key] = prefClass.geometryDefaults[key]
+
+     
 def savePreferences(prefClass = Prefs):
     """
     Module function to write the preferences from the central store.
     """
     # write the entries for the variables display
@@ -201,10 +217,15 @@
             
     # write the entries for the system settings
     prefClass.settings.writeEntry("/eric3/System/StringEncoding",
         prefClass.sysPrefs["StringEncoding"])
         
+    # write the entries for the display geometry
+    for key in prefClass.geometryPrefs.keys():
+        prefClass.settings.writeEntry("/eric3/Geometry/" + key,
+            str(prefClass.geometryPrefs[key]))
+
 def readToolbarSettings(mw, tbs, prefClass = Prefs):
     """
     Module function to read the toolbar settings from the central store
     and set the toolbars accordingly.
     """
@@ -381,6 +402,18 @@
     """
     Module function to store the various system settings.
     """
     prefClass.sysPrefs[key] = value
     
-initPreferences()
\ Kein Zeilenumbruch am Dateiende.
+def getGeometry(key, prefClass = Prefs):
+    """
+    Module function to retrieve the display geometry.
+    """
+    return prefClass.geometryPrefs[key]
+    
+def setGeometry(key, value, prefClass = Prefs):
+    """
+    Module function to store the display geometry.
+    """
+    prefClass.geometryPrefs[key] = value
+    
+initPreferences()
--- eric/UserInterface.py.orig	2002-11-27 18:19:34.000000000 +0100
+++ eric/UserInterface.py	2002-11-27 18:31:09.000000000 +0100
@@ -63,13 +63,18 @@
 
     """
     def __init__(self):
         QMainWindow.__init__(self)
 
-        self.resize(qApp.desktop().size())
-        self.setIcon(IconEric)
+        g = Preferences.getGeometry("MainGeometry")
+        if g == [0,0,0,0]:
+            self.resize(qApp.desktop().size())
+        else:
+            self.move(g[0], g[1])
+            self.resize(g[2], g[3])
 
+        self.setIcon(IconEric)
         self.setCaption(Program)
         
         self.setCentralWidget(QWidget(self))
         appWindowLayout = QHBoxLayout(self.centralWidget(),0,6)
 
@@ -178,14 +183,19 @@
                      self.stderrTab.append)
         self.connect(self, PYSIGNAL('preferencesChanged'),
                      self.viewmanager.handlePreferencesChanged)
         
         # Set the sizes of the splitters
-        width = self.width()
-        height = self.height()
-        hSizes = [int(0.21*width), int(0.49*width), int(0.3*width)]
-        vSizes = [int(0.8*height), int(0.2*height)]
+        g = Preferences.getGeometry("MainSplitter")
+        if g == [0,0,0,0,0]:
+            width = self.width()
+            height = self.height()
+            hSizes = [int(0.21*width), int(0.49*width), int(0.3*width)]
+            vSizes = [int(0.8*height), int(0.2*height)]
+        else:
+            hSizes = g[:3]
+            vSizes = g[3:]
         self.hSplitter.setSizes(hSizes)
         self.vSplitter.setSizes(vSizes)
 
         # Generate the unittest dialog
         self.unittestDialog = UnittestDialog(None, 1, self)
@@ -772,8 +782,14 @@
     def shutdown(self):
         if not self.viewmanager.closeViewManager():
             return 0
         if not self.project.closeProject():
             return 0
+        s = self.geometry()
+        p = self.frameGeometry()
+        Preferences.setGeometry("MainGeometry", [p.x(),p.y(),s.width(),s.height()])
+        h = self.hSplitter.sizes()
+        v = self.vSplitter.sizes()
+        Preferences.setGeometry("MainSplitter", [h[0],h[1],h[2],v[0],v[1]])
         Preferences.savePreferences()
         Preferences.saveToolbarSettings(self, self.toolbars)
-        return 1
\ Kein Zeilenumbruch am Dateiende.
+        return 1

_______________________________________________
PyKDE mailing list    PyKDE@mats.gmd.de
http://mats.gmd.de/mailman/listinfo/pykde

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic