__version__ = "$Id: 0.py 2265 2010-02-21 19:16:26Z v13 $"
-import config
+#import config
import apps
import icon
from icon import getIcon, Icon
+from sig import Disconnector
import gobject
+import gtk
class IconIter:
def __init__(self, items):
ret=self.iter.next()
return(ret)
-class Icons(gobject.GObject):
- def __init__(self, isconfig):
+class Icons(gobject.GObject, Disconnector):
+#class Icons(gtk.Widget, Disconnector):
+
+ #__gsignals__=Icon.gsignals
+ def __init__(self, isconfig, config):
self.__gobject_init__()
+ #gobject.GObject.__init__(self)
+ #gtk.Widget.__init__(self)
+ Disconnector.__init__(self)
+
self.icons={}
self.allicons={}
self.size=0
self.isconfig=isconfig
+ self.config=config
# signal handlers
- self.h={}
+ self.handlers={}
+
+ self.maxsz=(0,0)
# setup allicons
- maxsz=4
- for x in xrange(maxsz):
- for y in xrange(maxsz):
- k=(x,y)
- ico=Icon(self.isconfig)
- self.allicons[k]=ico
- self.connect_one(ico)
+ self.resizeMax()
+
+# print "icons-init"
+
+ def finish(self):
+ self.dis_finish()
+ return
+# self.icons=None
+# self.allicons=None
+# print "icons-finish"
+
+# def __del__(self):
+# print "icons-del"
+
+ def resizeMax(self):
+ sz=self.maxsz
+ maxsz=self.config.getMaxSize()
+
+ # Create new entries in x
+ if maxsz[0]>sz[0]:
+ for x in xrange(maxsz[0]-sz[0]):
+ for y in xrange(sz[1]):
+ k=(x+sz[0],y)
+ ico=Icon(self.isconfig, self.config)
+ self.allicons[k]=ico
+ self.connect_one(ico)
+ sz=(maxsz[0], sz[1])
+ elif maxsz[0]<sz[0]:
+ for x in xrange(sz[0]-maxsz[0]):
+ for y in xrange(sz[1]):
+ k=(maxsz[0]+x,y)
+ t=self.allicons.pop(k)
+ self.disconnect_one(t)
+ sz=(maxsz[0], sz[1])
+
+ # Create new entries in y
+ if maxsz[1]>sz[1]:
+ for y in xrange(maxsz[1]-sz[1]):
+ for x in xrange(sz[0]):
+ k=(x,y+sz[1])
+ ico=Icon(self.isconfig, self.config)
+ self.allicons[k]=ico
+ self.connect_one(ico)
+ sz=(sz[0], maxsz[1])
+ elif maxsz[1]<sz[1]:
+ for y in xrange(sz[1]-maxsz[1]):
+ for x in xrange(sz[0]):
+ k=(x,y+maxsz[1])
+ t=self.allicons.pop(k)
+ self.disconnect_one(t)
+ sz=(sz[0], maxsz[1])
+
+ self.maxsz=sz
@classmethod
def register_signals(cls):
- signals=icon.signals
+ signals=Icon.gsignals
for s in signals:
- gobject.signal_new(s, cls, gobject.SIGNAL_RUN_FIRST,
- gobject.TYPE_NONE, (Icon,))
+ ss=signals[s]
+ gobject.signal_new(s, cls, ss[0], ss[1], (Icon,))
+# gobject.SIGNAL_RUN_FIRST,
+# gobject.TYPE_NONE, (Icon,))
def __iter__(self):
return(IconIter(self.icons))
def connect_one(self, which):
- self.h[which]={
- 'longpress': which.connect('long-press', self.signalLongpress),
- 'click': which.connect('click', self.signalClick),
- 'tripple': which.connect('tripple-click',
+ self.handlers[which]={
+ 'longpress': self.c(which, 'long-press', self.signalLongpress),
+ 'click': self.c(which, 'click', self.signalClick),
+ 'tripple': self.c(which, 'tripple-click',
self.signalTrippleClick)
}
def disconnect_one(self, which):
- for i in self.h[which]:
- which.disconnect(self.h[which][i])
- self.h.pop(which)
+ for i in self.handlers[which]:
+ which.disconnect(self.handlers[which][i])
+ self.handlers.pop(which)
# which.disconnect(self.h[which]_longpress)
# which.disconnect(self.h_click)
# which.disconnect(self.h_tripple)
old=self.icons
self.icons={}
- for x in xrange(sz):
- for y in xrange(sz):
+ for x in xrange(sz[0]):
+ for y in xrange(sz[1]):
k=(x,y)
ico=self.allicons[k]
self.icons[k]=ico
self.size=sz
+ def getSize(self):
+ return(self.size)
+
+ def setWindow(self, win):
+ """ Set the window for all icons """
+
+ for i in self.icons:
+ ic=self.icons[i]
+ ic.setWindow(win)
+
def signalLongpress(self, icon):
#print "signalLongpress()", icon
self.emit('long-press', icon)
# 'tecnoballz', 'ncalc', 'rtcom-call-ui', 'rtcom-messaging-ui',
# 'extcalllog', 'browser', 'modest', 'osso-addressbook']
- wapps=config.getApps()
- sz=config.getSize()
+ wapps=self.config.getApps()
+ #sz=self.config.getSize()
+ sz=self.getSize()
for k in wapps:
x,y=k
if appname!=None:
app=apps.readOne(appname)
if app!=None:
- app['icon2']=getIcon(app['icon'])
+ app['icon2']=getIcon(app['icon'], self.config.getIconSize())
self.get(x,y).setApp(app)
+ else:
+ ic=self.get(x,y)
+ ic.setApp(None)
+
+ # Reload icons to make sure backgrounds, etc are valid
+ for x in xrange(sz[0]):
+ for y in xrange(sz[1]):
+ ic=self.get(x,y)
+ ic.reload()
+
# for f in fn:
# dt=apps.readOne(f)