4 # Copyright (C) 2010 Stefanos Harhalakis
6 # This file is part of wifieye.
8 # wifieye is free software: you can redistribute it and/or modify
9 # it under the terms of the GNU General Public License as published by
10 # the Free Software Foundation, either version 3 of the License, or
11 # (at your option) any later version.
13 # wifieye is distributed in the hope that it will be useful,
14 # but WITHOUT ANY WARRANTY; without even the implied warranty of
15 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 # GNU General Public License for more details.
18 # You should have received a copy of the GNU General Public License
19 # along with wifieye. If not, see <http://www.gnu.org/licenses/>.
21 # $Id: 0.py 2265 2010-02-21 19:16:26Z v13 $
23 __version__ = "$Id: 0.py 2265 2010-02-21 19:16:26Z v13 $"
31 from glib import get_user_config_dir
33 def get_user_config_dir():
34 home=os.environ['HOME']
37 cfg="%s/.config" % (home)
42 dir0=get_user_config_dir()
44 if not os.path.exists(dir):
46 if not os.path.isdir(dir):
47 raise Exception('Failed to ensure directory' + dir)
58 def __init__(self, id):
64 ### self.iconspace = 42 # For 4 icons (height)
65 ## self.iconspace = 36 # For 8 icons (width)
68 # self.iconpadding = 12
78 self.setDefaultSizes()
82 def setSize(self, sz):
83 maxsz=self.getMaxSize()
84 sz2=(min(sz[0], maxsz[0]), min(sz[1], maxsz[1]))
90 def setDefaultSizes(self):
95 # Return the maximum grid size
97 isf=self.getIconSizeFull()
99 rety=int((480-60)/isf)
103 # Return the maxmimum icon size
104 def getIconSizeRange(self):
107 def getIconPaddingRange(self):
110 def getIconMarginRange(self):
113 def getIconSize(self):
114 return(self.iconsize)
116 def setIconSize(self, sz):
119 def getIconSpace(self):
120 return((2*self.iconpadding) + (2*self.iconmargin))
122 def getIconSizeFull(self):
123 ret=self.iconsize + (2*self.iconpadding) + (2*self.iconmargin)
126 def getIconMargin(self):
127 return(self.iconmargin)
129 def setIconMargin(self, sz):
132 def getIconPadding(self):
133 return(self.iconpadding)
135 def setIconPadding(self, sz):
138 def setIndiv(self, indiv):
144 def setLongpress(self, lp):
147 def getLongpress(self):
148 return(self.longpress)
150 def setAnimate(self, ar):
153 def getAnimate(self):
156 def setNoBg(self, nobg):
162 def setThemeBg(self, themebg):
165 def getThemeBg(self):
168 def setApps(self, aps):
169 """ apps is a dictionary of (x,y)=>appname """
175 (0,0): 'rtcom-call-ui',
176 (0,1): 'rtcom-messaging-ui',
178 (1,1): 'osso-addressbook',
184 def filterDefault(self, value, default):
190 def provideDefault(self, value, default):
207 dt['data'][self.id]={
208 'size': self.getSize(),
209 'apps': self.getApps(),
210 'indiv': self.getIndiv(),
211 'longpress': self.getLongpress(),
212 'animate': self.getAnimate(),
213 'nobg': self.getNoBg(),
214 'themebg': self.getThemeBg(),
215 'iconsize': self.filterDefault(self.getIconSize(), 64),
216 'iconpadding': self.filterDefault(self.getIconPadding(), 12),
217 'iconmargin': self.filterDefault(self.getIconMargin(), 6),
227 def parse_v1(self, dt0):
228 """ Convert a v1 config to v2 """
234 ret['data'][self.id]={
241 def parse_v2(self, dt):
247 dt['data'][i]['indiv']=False
248 dt['data'][i]['size']=(dt['data'][i]['size'], dt['data'][i]['size'])
249 dt['data'][i]['longpress']=True
253 def parse_v3(self, dt):
257 dt['data'][i]['animate']=True
261 def parse_v4(self, dt):
265 dt['data'][i]['nobg']=False
269 def parse_v5(self, dt):
273 dt['data'][i]['themebg']=False
277 def parse_v6(self, dt):
281 dt['data'][i]['iconsize']=-1
282 dt['data'][i]['iconpadding']=-1
283 dt['data'][i]['iconmargin']=-1
297 print "failed to load config"
300 if ret['version']==1:
301 ret=self.parse_v1(ret)
303 if ret['version']==2:
304 ret=self.parse_v2(ret)
306 if ret['version']==3:
307 ret=self.parse_v3(ret)
309 if ret['version']==4:
310 ret=self.parse_v4(ret)
312 if ret['version']==5:
313 ret=self.parse_v5(ret)
315 if ret['version']==6:
316 ret=self.parse_v6(ret)
318 print "config error:", e
330 if dt0==None or not dt0['data'].has_key(self.id):
333 dt=dt0['data'][self.id]
335 self.setSize(dt['size'])
336 self.setApps(dt['apps'])
337 self.setIndiv(dt['indiv'])
338 self.setLongpress(dt['longpress'])
339 self.setAnimate(dt['animate'])
340 self.setNoBg(dt['nobg'])
341 self.setThemeBg(dt['themebg'])
342 self.setIconSize(self.provideDefault(dt['iconsize'], 64))
343 self.setIconPadding(self.provideDefault(dt['iconpadding'], 12))
344 self.setIconMargin(self.provideDefault(dt['iconmargin'], 6))
346 def check_init(self):
350 print "config.init() not done"
354 attrs=[attr for attr in dir(obj) if not callable(getattr(obj,attr))]
358 if attr=='__gdoc__' or attr=='__doc__':
360 print " ", attr, ":", getattr(obj, attr)
362 # vim: set ts=8 sts=4 sw=4 noet formatoptions=r ai nocindent: