import gobject
import hildon
import time
+import copy
from hildon import StackableWindow
#from portrait import FremantleRotation
from about import DlgAbout
from portrait import FremantleRotation
+class DialogIconSize(gtk.Dialog):
+ def __init__(self, config):
+ gtk.Dialog.__init__(self, "Adjust icon size")
+
+ # Operate on copy of config
+ self.config=copy.copy(config)
+ # And keep another copy to be able to undo
+ self.config0=copy.copy(config)
+
+ vbox=self.vbox
+
+ self.labelDim=gtk.Label("koko")
+ vbox.add(self.labelDim)
+
+ vbox.add(gtk.Label("Icon size:"))
+ scale=gtk.HScale()
+ scale.set_digits(0)
+ scale.set_value_pos(gtk.POS_RIGHT)
+ scale.set_range(48,128)
+ scale.set_increments(8, 16)
+ self.scaleIconSize=scale
+ vbox.add(scale)
+
+ hbox=gtk.HBox()
+ vbox.add(hbox)
+
+ vbox2=gtk.VBox()
+ vbox2.add(gtk.Label("Padding:"))
+ scale=gtk.HScale()
+ scale.set_digits(0)
+ scale.set_value_pos(gtk.POS_RIGHT)
+ scale.set_range(2,16)
+ scale.set_increments(2,2)
+ self.scaleIconPadding=scale
+ vbox2.add(scale)
+ hbox.add(vbox2)
+
+ vbox2=gtk.VBox()
+ vbox2.add(gtk.Label("Margin:"))
+ scale=gtk.HScale()
+ scale.set_digits(0)
+ scale.set_value_pos(gtk.POS_RIGHT)
+ scale.set_range(2,16)
+ scale.set_increments(2,2)
+ self.scaleIconMargin=scale
+ vbox2.add(scale)
+ hbox.add(vbox2)
+
+ self.scaleIconSize.set_value(self.config.getIconSize())
+ self.scaleIconPadding.set_value(self.config.getIconPadding())
+ self.scaleIconMargin.set_value(self.config.getIconMargin())
+
+ # Set thos after settings initial values to avoid unwanted effects
+ self.scaleIconSize.connect('value-changed', self.slotSzChangeSize)
+ self.scaleIconPadding.connect('value-changed', self.slotSzChangePadding)
+ self.scaleIconMargin.connect('value-changed', self.slotSzChangeMargin)
+
+ hbox=gtk.HBox()
+ vbox.add(hbox)
+
+ but=hildon.Button(
+ gtk.HILDON_SIZE_AUTO_WIDTH | gtk.HILDON_SIZE_FINGER_HEIGHT,
+ hildon.BUTTON_ARRANGEMENT_VERTICAL)
+ but.set_title("OK")
+ but.connect("clicked", self.slotButtonOK)
+ #hbox.add(but)
+ self.action_area.pack_start(but)
+ self.buttonOK=but
+
+ but=hildon.Button(
+ gtk.HILDON_SIZE_AUTO_WIDTH | gtk.HILDON_SIZE_FINGER_HEIGHT,
+ hildon.BUTTON_ARRANGEMENT_VERTICAL)
+ but.set_title("Undo")
+ but.connect("clicked", self.slotButtonUndo)
+ #hbox.add(but)
+ self.action_area.pack_start(but)
+ self.buttonUndo=but
+
+ but=hildon.Button(
+ gtk.HILDON_SIZE_AUTO_WIDTH | gtk.HILDON_SIZE_FINGER_HEIGHT,
+ hildon.BUTTON_ARRANGEMENT_VERTICAL)
+ but.set_title("Restore defaults")
+ but.connect("clicked", self.slotButtonDefaults)
+ #hbox.add(but)
+ self.action_area.pack_start(but)
+ self.buttonDefaults=but
+
+ self.show_all()
+
+ self.recalc()
+
+ def setWH(self, w, h):
+ self.labelDim.set_text("Grid size: %d x %d icons" % (w, h))
+ #self.labelWidth.set_text("Width: %d icons" % w)
+ #self.labelHeight.set_text("Height: %d icons" % h)
+
+ def recalc(self):
+ maxsz=self.config.getMaxSize()
+ self.setWH(maxsz[0], maxsz[1])
+
+ def getIconSize(self):
+ return(self.scaleIconSize.get_value())
+
+ def setIconSize(self, iconsize):
+ self.scaleIconSize.set_value(iconsize)
+
+ def getIconPadding(self):
+ return(self.scaleIconPadding.get_value())
+
+ def setIconPadding(self, pad):
+ self.scaleIconPadding.set_value(pad)
+
+ def getIconMargin(self):
+ return(self.scaleIconMargin.get_value())
+
+ def setIconMargin(self, margin):
+ self.scaleIconMargin.set_value(margin)
+
+ def slotSzChangeSize(self, sender):
+ self.config.setIconSize(int(self.getIconSize()))
+ self.recalc()
+
+ def slotSzChangeMargin(self, sender):
+ self.config.setIconMargin(int(self.getIconMargin()))
+ self.recalc()
+
+ def slotSzChangePadding(self, sender):
+ self.config.setIconPadding(int(self.getIconPadding()))
+ self.recalc()
+
+ def slotButtonUndo(self, sender):
+ self.config=copy.copy(self.config0)
+ self.recalc()
+ self.resetSliders()
+
+ def slotButtonDefaults(self, sender):
+ self.config.setDefaultSizes()
+ self.recalc()
+ self.resetSliders()
+
+ def slotButtonOK(self, sender):
+ self.response(gtk.RESPONSE_OK)
+
+ def resetSliders(self):
+ self.scaleIconSize.set_value(self.config.getIconSize())
+ self.scaleIconPadding.set_value(self.config.getIconPadding())
+ self.scaleIconMargin.set_value(self.config.getIconMargin())
+
+ def getData(self):
+ ret={
+ 'size': self.config.getIconSize(),
+ 'padding': self.config.getIconPadding(),
+ 'margin': self.config.getIconMargin()
+ }
+
+ return(ret)
+
+
class WinConfig(StackableWindow): #, FremantleRotation):
def __init__(self, config, *args):
StackableWindow.__init__(self)
# FremantleRotation.__init__(self, "DrlaunchPlugin",
# mode=FremantleRotation.AUTOMATIC)
- self.config=config
+ self.config=copy.copy(config)
self.setupUi()
maxsz=self.config.getMaxSize()
+ self.maxmaxsz=(16,16)
+
# ----------------------------------------------
vbox.add(gtk.Label('Width:'))
self.butsSizeX=[]
self.butsSize=self.butsSizeX # For now
- for i in xrange(maxsz[0]):
+ for i in xrange(self.maxmaxsz[0]):
but=hildon.GtkToggleButton(gtk.HILDON_SIZE_FINGER_HEIGHT)
but.set_label("%s" % (i+1,))
but.connect('toggled', self.slotButtonSizeX, i)
vbox.add(hbox2)
self.butsSizeY=[]
- for i in xrange(maxsz[1]):
+ for i in xrange(self.maxmaxsz[1]):
but=hildon.GtkToggleButton(gtk.HILDON_SIZE_FINGER_HEIGHT)
but.set_label("%s" % (i+1,))
but.connect('toggled', self.slotButtonSizeY, i)
but=hildon.CheckButton(
gtk.HILDON_SIZE_AUTO_WIDTH | gtk.HILDON_SIZE_FINGER_HEIGHT)
but.set_label("No background")
- #but.connect('toggled', self.slotButtonNoBackground)
+ but.connect('toggled', self.slotButtonNoBackground)
self.buttonNoBackground=but
vbox.add(but)
+ but=hildon.Button(
+ gtk.HILDON_SIZE_AUTO_WIDTH | gtk.HILDON_SIZE_FINGER_HEIGHT,
+ hildon.BUTTON_ARRANGEMENT_VERTICAL)
+ but.set_label("Adjust icon size")
+ but.connect('clicked', self.slotButtonIconSize)
+ self.buttonIconSize=but
+ vbox.add(but)
+
#1 hbox.add(al)
but=hildon.Button(
gtk.HILDON_SIZE_AUTO_WIDTH | gtk.HILDON_SIZE_FINGER_HEIGHT,
self.setAnimate(self.config.getAnimate())
self.setNoBg(self.config.getNoBg())
self.setThemeBg(self.config.getThemeBg())
+# self.setIconSize(self.config.getIconSize())
+# self.setIconPadding(self.config.getIconPadding())
+# self.setIconMargin(self.config.getIconMargin())
hbox=gtk.HBox()
hbox.add(self.col1)
self.add(self.pa)
+ self.adjustMaxSize()
+
# def setupUi(self, orientation):
#
# self.setupUi0()
# self.add(self.pa)
# self.pa.show_all()
+ def adjustMaxSize(self):
+ sz=self.config.getMaxSize()
+ maxsz=self.maxmaxsz
+
+ for x in xrange(maxsz[0]):
+ if x<sz[0]:
+ self.butsSizeX[x].show()
+ else:
+ self.butsSizeX[x].hide()
+
+ for y in xrange(maxsz[1]):
+ if y<sz[1]:
+ self.butsSizeY[y].show()
+ else:
+ self.butsSizeY[y].hide()
+
+ osz=self.getSize()
+ nsz=[osz[0], osz[1]]
+
+ if osz[0]>sz[0]:
+ nsz[0]=sz[0]
+ if osz[1]>sz[1]:
+ nsz[1]=sz[1]
+ self.setSize(nsz)
+
+ self.setIndiv(self.getIndiv())
+
def setLayoutPortrait(self):
print "lo: p"
hbox=gtk.HBox()
but=self.buttonRotateIndividually
self.setIndiv(but.get_active())
+ def slotButtonNoBackground(self, sender):
+ nobg=self.getNoBg()
+ self.setNoBg(nobg)
+
def slotButtonAbout(self, sender):
DlgAbout.present2(self)
+ def slotButtonIconSize(self, sender):
+ dlg=DialogIconSize(self.config)
+ ret=dlg.run()
+ dt=dlg.getData()
+ dlg.destroy()
+
+ if ret!=gtk.RESPONSE_OK:
+ return
+
+ self.config.setIconSize(dt['size'])
+ self.config.setIconMargin(dt['margin'])
+ self.config.setIconPadding(dt['padding'])
+ self.igw.reconfig()
+ self.adjustMaxSize()
+ self.queue_draw()
+
+ def show_all(self):
+ StackableWindow.show_all(self)
+ self.adjustMaxSize()
+ self.queue_draw()
+
+ def slotScaleIconSzChange(self, sender):
+ return
+ self.config.setIconSize(self.getIconSize())
+ self.config.setIconMargin(self.getIconMargin())
+ self.config.setIconPadding(self.getIconPadding())
+ self.igw.reconfig()
+ self.adjustMaxSize()
+ self.queue_draw()
+
# def slotButtonLongpress(self, sender):
# but=self.buttonRequireLongpress
# self.set
self.igw.setSize(sz)
self.igw.queue_draw()
+ self.queue_draw()
def getSize(self):
return(self.igw.getSize())
i.set_sensitive(True)
else:
+ sz=self.config.getMaxSize()
+
for i in self.butsSizeY:
i.set_sensitive(False)
cnt=0
for i in self.butsSizeX:
cnt+=1
- if cnt>4:
+ # Height is always the narrower, so use that as a limit
+ if cnt>sz[1]:
i.set_sensitive(False)
+ else:
+ i.set_sensitive(True)
sz=self.getSize()
szx=sz[0]
- if szx>4:
- szx=4
+ if szx>sz[1]:
+ szx=sz[1]
self.setSize((szx, szx))
self.buttonRotateIndividually.set_active(indiv)
def setAnimate(self, ar):
self.buttonAnimateRotation.set_active(ar)
+ def getNoBg(self):
+ ret=self.buttonNoBackground.get_active()
+
+ return(ret)
+
def setNoBg(self, nobg):
self.buttonNoBackground.set_active(nobg)
+ self.buttonThemeBackground.set_sensitive(not nobg)
+
def setThemeBg(self, themebg):
self.buttonThemeBackground.set_active(themebg)
'animate': ar,
'nobg': nobg,
'themebg': themebg,
+ 'iconsize': self.config.getIconSize(),
+ 'iconpadding': self.config.getIconPadding(),
+ 'iconmargin': self.config.getIconMargin(),
}
return(ret)