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):
96 isf=self.getIconSizeFull()
98 rety=int((480-60)/isf)
102 def getIconSize(self):
103 return(self.iconsize)
105 def setIconSize(self, sz):
108 def getIconSpace(self):
109 return((2*self.iconpadding) + (2*self.iconmargin))
111 def getIconSizeFull(self):
112 ret=self.iconsize + (2*self.iconpadding) + (2*self.iconmargin)
115 def getIconMargin(self):
116 return(self.iconmargin)
118 def setIconMargin(self, sz):
121 def getIconPadding(self):
122 return(self.iconpadding)
124 def setIconPadding(self, sz):
127 def setIndiv(self, indiv):
133 def setLongpress(self, lp):
136 def getLongpress(self):
137 return(self.longpress)
139 def setAnimate(self, ar):
142 def getAnimate(self):
145 def setNoBg(self, nobg):
151 def setThemeBg(self, themebg):
154 def getThemeBg(self):
157 def setApps(self, aps):
158 """ apps is a dictionary of (x,y)=>appname """
164 (0,0): 'rtcom-call-ui',
165 (0,1): 'rtcom-messaging-ui',
167 (1,1): 'osso-addressbook',
173 def filterDefault(self, value, default):
179 def provideDefault(self, value, default):
196 dt['data'][self.id]={
197 'size': self.getSize(),
198 'apps': self.getApps(),
199 'indiv': self.getIndiv(),
200 'longpress': self.getLongpress(),
201 'animate': self.getAnimate(),
202 'nobg': self.getNoBg(),
203 'themebg': self.getThemeBg(),
204 'iconsize': self.filterDefault(self.getIconSize(), 64),
205 'iconpadding': self.filterDefault(self.getIconPadding(), 12),
206 'iconmargin': self.filterDefault(self.getIconMargin(), 6),
216 def parse_v1(self, dt0):
217 """ Convert a v1 config to v2 """
223 ret['data'][self.id]={
230 def parse_v2(self, dt):
236 dt['data'][i]['indiv']=False
237 dt['data'][i]['size']=(dt['data'][i]['size'], dt['data'][i]['size'])
238 dt['data'][i]['longpress']=True
242 def parse_v3(self, dt):
246 dt['data'][i]['animate']=True
250 def parse_v4(self, dt):
254 dt['data'][i]['nobg']=False
258 def parse_v5(self, dt):
262 dt['data'][i]['themebg']=False
266 def parse_v6(self, dt):
270 dt['data'][i]['iconsize']=-1
271 dt['data'][i]['iconpadding']=-1
272 dt['data'][i]['iconmargin']=-1
286 print "failed to load config"
289 if ret['version']==1:
290 ret=self.parse_v1(ret)
292 if ret['version']==2:
293 ret=self.parse_v2(ret)
295 if ret['version']==3:
296 ret=self.parse_v3(ret)
298 if ret['version']==4:
299 ret=self.parse_v4(ret)
301 if ret['version']==5:
302 ret=self.parse_v5(ret)
304 if ret['version']==6:
305 ret=self.parse_v6(ret)
307 print "config error:", e
319 if dt0==None or not dt0['data'].has_key(self.id):
322 dt=dt0['data'][self.id]
324 self.setSize(dt['size'])
325 self.setApps(dt['apps'])
326 self.setIndiv(dt['indiv'])
327 self.setLongpress(dt['longpress'])
328 self.setAnimate(dt['animate'])
329 self.setNoBg(dt['nobg'])
330 self.setThemeBg(dt['themebg'])
331 self.setIconSize(self.provideDefault(dt['iconsize'], 64))
332 self.setIconPadding(self.provideDefault(dt['iconpadding'], 12))
333 self.setIconMargin(self.provideDefault(dt['iconmargin'], 6))
335 def check_init(self):
339 print "config.init() not done"
342 # vim: set ts=8 sts=4 sw=4 noet formatoptions=r ai nocindent: