/[ascend]/trunk/pygtk/preferences.py
ViewVC logotype

Contents of /trunk/pygtk/preferences.py

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1055 - (show annotations) (download) (as text)
Sat Jan 6 14:47:13 2007 UTC (16 years, 4 months ago) by johnpye
File MIME type: text/x-python
File size: 3807 byte(s)
simplified slv_check_bounds call.
1 # Preferences module for ASCPY.
2
3 import ConfigParser, os
4 import re
5 import platform
6
7 ## @TODO implement this differently; the __del__ stuff is not working correctly
8 ## in the context of the extpy extension.
9
10 class Preferences:
11 __sharedstate = {}
12
13 def __init__(self):
14 self.__dict__ = self.__sharedstate
15
16 if not hasattr(self,'n'):
17 self.n = 0;
18 if platform.system()=="Windows":
19 self.fname = os.path.join(os.environ['APPDATA'],".ascend.ini")
20 else:
21 self.fname = os.path.expanduser("~/.ascend.ini");
22
23 #print "PREFERENCES FILE =",self.fname
24
25 self.n = self.n + 1;
26
27 if not hasattr(self,'ini'):
28 #print "READING/CREATING CONFIG"
29 self.ini = ConfigParser.SafeConfigParser();
30 self.ini.read( [ self.fname ] );
31
32 def __del__(self):
33 self.n = self.n - 1;
34 if self.n==0:
35 print "\rSaving preferences in ",self.fname
36 f = open(self.fname, "w");
37 self.ini.write( f );
38
39 def getGeometrySizePosition(self,displayname,key):
40 try:
41 _g = self.ini.get("Geometry:"+str(displayname),key)
42 except ConfigParser.NoSectionError:
43 return None
44 except ConfigParser.NoOptionError:
45 return None
46 _p = re.compile('^\s*(\d+)[Xx](\d+)\+(-?\d+)\+(-?\d+)\s*$');
47
48 _m = _p.match(_g)
49 #print "MATCH: ",_m.groups()
50 if not _m:
51 return None
52 return [int(i) for i in _m.groups()]
53
54 def setGeometrySizePosition(self,displayname,key,width,height,top,left):
55 if not self.ini.has_section("Geometry:"+str(displayname)):
56 self.ini.add_section("Geometry:"+str(displayname))
57 self.ini.set("Geometry:"+str(displayname),key, "%dx%d+%d+%d" % (width, height, top, left) );
58
59 def getGeometryValue(self,displayname,key):
60 try:
61 _g = self.ini.get("Geometry:"+str(displayname),key)
62 except ConfigParser.NoSectionError:
63 return None
64 except ConfigParser.NoOptionError:
65 return None
66 return int(_g)
67
68 def setGeometryValue(self,displayname,key,value):
69 if not self.ini.has_section("Geometry:"+str(displayname)):
70 self.ini.add_section("Geometry:"+str(displayname))
71 self.ini.set("Geometry:"+str(displayname),key,str(value))
72
73 def getPreferredUnits(self,key):
74 try:
75 _u = self.ini.get("PreferredUnits",key);
76 except ConfigParser.NoSectionError:
77 return None
78 except ConfigParser.NoOptionError:
79 return None
80 return _u
81
82 def setPreferredUnits(self,key,val):
83 if not self.ini.has_section("PreferredUnits"):
84 self.ini.add_section("PreferredUnits")
85 self.ini.set("PreferredUnits",key,val)
86 #print "SET PREFERRED UNITS FOR %s TO %s" % ( key, val )
87
88 def getBoolPref(self,sect,key,default=None):
89 try:
90 _u = self.ini.get(sect,key)
91 except ConfigParser.NoSectionError:
92 return default
93 except ConfigParser.NoOptionError:
94 return default
95 if _u:
96 return True
97 return False
98
99 def setBoolPref(self,sect,key,val):
100 if not self.ini.has_section(sect):
101 self.ini.add_section(sect)
102 if val:
103 val = "1"
104 else:
105 val = ""
106 self.ini.set(sect,key,val)
107
108 def getStringPref(self,sect,key,default=None):
109 try:
110 _u = self.ini.get(sect,key)
111 except ConfigParser.NoSectionError:
112 return default
113 except ConfigParser.NoOptionError:
114 return default
115 return _u;
116
117 def setStringPref(self,sect,key,value):
118 if not self.ini.has_section(sect):
119 self.ini.add_section(sect)
120 self.ini.set(sect,key,str(value))
121
122
123
124 # Test script:
125 def main():
126 x = Preferences();
127 y = Preferences();
128
129 print "Units for length: ",x.getPreferredUnits("length");
130 print "Units for time: ",x.getPreferredUnits("time");
131
132 x.setPreferredUnits("length","m");
133 y.setPreferredUnits("time","hr");
134 print "Units for length: ",y.getPreferredUnits("length");
135 print "Units for time: ",y.getPreferredUnits("time");
136
137 print "About to delete x"
138 del x;
139 print "Deleted x"
140
141 y.setPreferredUnits("length","cm");
142
143 print "About to delete y"
144 del y;
145
146 print "Deleted y"
147
148 if __name__ == "__main__":
149 main()

john.pye@anu.edu.au
ViewVC Help
Powered by ViewVC 1.1.22