Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/Util
diff options
context:
space:
mode:
authoramartin <olpc@localhost.localdomain>2007-02-27 06:43:38 (GMT)
committer amartin <olpc@localhost.localdomain>2007-02-27 06:43:38 (GMT)
commit2fbfd856f3e91fca3b48c0ae5eea9058dd5f1964 (patch)
treec89bfc72378d3b5207bcf0dd2580e5b3230bb91c /Util
parent29d74657499fd94e45e16cca910f8710fe8a0e4c (diff)
instrument panel in popup, and misc bug fixes
Diffstat (limited to 'Util')
-rw-r--r--Util/InstrumentPanel.py28
-rw-r--r--Util/ThemeWidgets.py38
2 files changed, 52 insertions, 14 deletions
diff --git a/Util/InstrumentPanel.py b/Util/InstrumentPanel.py
index fc6185c..0e00dbc 100644
--- a/Util/InstrumentPanel.py
+++ b/Util/InstrumentPanel.py
@@ -24,8 +24,9 @@ class InstrumentPanel( gtk.EventBox ):
self.enterMode = enterMode
self.instrumentBox = None
self.recstate = False
+ self.lastInstrumentWidget = None
self.instDic = {}
-
+
self.mainVBox = gtk.VBox()
self.draw_toolbar()
if _instDic == None:
@@ -56,7 +57,7 @@ class InstrumentPanel( gtk.EventBox ):
self.firstTbBtn.set_active(True)
def handleToolbarBtnPress(self, widget, category):
- self.draw_instruments_panel(category)
+ self.draw_instruments_panel(category)
def draw_instruments_panel(self,category = 'all'):
@@ -100,13 +101,16 @@ class InstrumentPanel( gtk.EventBox ):
tableEventBox.modify_bg(gtk.STATE_NORMAL, color)
tableEventBox.add(self.instTable)
self.scrollWin.add_with_viewport(tableEventBox)
+ tableEventBox.get_parent().set_shadow_type( gtk.SHADOW_NONE )
self.instrumentBox.pack_start(self.scrollWin,True,True,0)
self.mainVBox.pack_start(self.instrumentBox)
self.show_all()
def handleInstrumentButtonClick(self,widget,instrument):
if widget.get_active() is True and self.recstate == False:
- if self.setInstrument: self.setInstrument(instrument)
+ if self.setInstrument:
+ widget.event( gtk.gdk.Event( gtk.gdk.LEAVE_NOTIFY ) ) # fake the leave event
+ self.setInstrument(instrument)
if self.playInstrument: self.playInstrument(instrument)
if self.enterMode:
pass #Close the window
@@ -127,7 +131,7 @@ class InstrumentPanel( gtk.EventBox ):
def handleRecButtonPress(self,widget,btn):
self.recstate = True
btn.set_active(True)
-
+
def getInstDic(self):
instDic = {}
self.firstInstButton = None
@@ -144,7 +148,7 @@ class InstrumentPanel( gtk.EventBox ):
if instrument[0:3] == 'lab':
self.tooltips.set_tip(RecBtn,Tooltips.RECLAB)
- Btn.connect('clicked', self.handleInstrumentButtonClick, instrument)
+ Btn.clickedHandler = Btn.connect('clicked', self.handleInstrumentButtonClick, instrument)
if instrument[0:3] == 'mic':
RecBtn.connect('clicked', self.handleMicRecButtonClick, instrument)
if instrument[0:3] == 'lab':
@@ -157,7 +161,7 @@ class InstrumentPanel( gtk.EventBox ):
instBox = RoundVBox(fillcolor = Config.INST_BCK_COLOR, bordercolor = Config.PANEL_COLOR, radius = Config.PANEL_RADIUS)
instBox.set_border_width(Config.PANEL_SPACING)
instButton = ImageRadioButton(self.firstInstButton, Config.IMAGE_ROOT + instrument + '.png' , Config.IMAGE_ROOT + instrument + 'sel.png', Config.IMAGE_ROOT + instrument + 'sel.png')
- instButton.connect('clicked',self.handleInstrumentButtonClick, instrument)
+ instButton.clickedHandler = instButton.connect('clicked',self.handleInstrumentButtonClick, instrument)
if self.enterMode:
instButton.connect('enter',self.handleInstrumentButtonEnter, instrument)
instBox.pack_start(instButton,False,False)
@@ -170,8 +174,10 @@ class InstrumentPanel( gtk.EventBox ):
if len(self.instDic) > 0:
for key in self.instDic:
if key == instrument:
- self.instDic[key].get_children()[0].set_active(state)
-
+ btn = self.instDic[key].get_children()[0]
+ btn.handler_block(btn.clickedHandler)
+ btn.set_active(state)
+ btn.handler_unblock(btn.clickedHandler)
def getInstrumentList(self,category = 'all'):
instrumentList = [instrument for instrument in Config.INSTRUMENTS.keys() if instrument[0:4] != 'drum' and instrument[0:4] != 'guid' and instrument[0:3] != 'mic' and instrument[0:3] != 'lab'] + Config.DRUMKITS + ['mic1', 'mic2', 'mic3', 'mic4', 'lab1', 'lab2', 'lab3', 'lab4']
@@ -208,7 +214,7 @@ class DrumPanel( gtk.EventBox ):
instBox = RoundVBox(fillcolor = Config.INST_BCK_COLOR, bordercolor = Config.PANEL_COLOR, radius = Config.PANEL_RADIUS)
instBox.set_border_width(Config.PANEL_SPACING)
self.drums[drumkit] = ImageRadioButton(firstBtn, Config.IMAGE_ROOT + drumkit + '.png' , Config.IMAGE_ROOT + drumkit + 'sel.png', Config.IMAGE_ROOT + drumkit + 'sel.png')
- self.drums[drumkit].connect('clicked',self.setDrums,drumkit)
+ self.drums[drumkit].clickedHandler = self.drums[drumkit].connect('clicked',self.setDrums,drumkit)
if firstBtn == None:
firstBtn = self.drums[drumkit]
instBox.pack_start(self.drums[drumkit], False, False, 0)
@@ -218,7 +224,9 @@ class DrumPanel( gtk.EventBox ):
def setDrums(self,widget,data):
if widget.get_active():
- if self.setDrum: self.setDrum(data)
+ if self.setDrum:
+ widget.event( gtk.gdk.Event( gtk.gdk.LEAVE_NOTIFY ) ) # fake the leave event
+ self.setDrum(data)
if __name__ == "__main__":
win = gtk.Window()
diff --git a/Util/ThemeWidgets.py b/Util/ThemeWidgets.py
index 526d317..5c1bca2 100644
--- a/Util/ThemeWidgets.py
+++ b/Util/ThemeWidgets.py
@@ -795,6 +795,8 @@ class ImageButton(gtk.Button):
return True
def load_pixmap(self, name, pixmap):
+ if name == "main" and self.image["main"] == self.image["enter"]:
+ self.image["enter"] = pixmap
self.image[name] = pixmap
self.queue_draw()
@@ -864,8 +866,16 @@ class ImageToggleButton(gtk.ToggleButton):
if enterImg_path != None:
prepareImage( "enter", enterImg_path )
- self.connect('enter-notify-event',self.on_btn_enter)
- self.connect('leave-notify-event',self.on_btn_leave)
+ else:
+ self.image["enter"] = self.image["main"]
+ self.itype["enter"] = self.itype["main"]
+ self.iwidth["enter"] = self.iwidth["main"]
+ self.iwidthDIV2["enter"] = self.iwidthDIV2["main"]
+ self.iheight["enter"] = self.iheight["main"]
+ self.iheightDIV2["enter"] = self.iheightDIV2["main"]
+
+ self.connect('enter-notify-event',self.on_btn_enter)
+ self.connect('leave-notify-event',self.on_btn_leave)
self.connect('toggled',self.toggleImage)
self.connect('pressed',self.pressed )
@@ -889,6 +899,12 @@ class ImageToggleButton(gtk.ToggleButton):
self.window.draw_drawable( self.gc, self.image[self.curImage], 0, 0, self.drawX - self.iwidthDIV2[self.curImage], self.drawY - self.iheightDIV2[self.curImage], self.iwidth[self.curImage], self.iheight[self.curImage] )
return True
+ def load_pixmap(self, name, pixmap):
+ if name == "main" and self.image["main"] == self.image["enter"]:
+ self.image["enter"] = pixmap
+ self.image[name] = pixmap
+ self.queue_draw()
+
def toggleImage(self, widget):
if not self.get_active():
if self.within and self.image.has_key("enter"):
@@ -970,8 +986,16 @@ class ImageRadioButton(gtk.RadioButton):
if enterImg_path != None:
prepareImage( "enter", enterImg_path )
- self.connect('enter-notify-event',self.on_btn_enter)
- self.connect('leave-notify-event',self.on_btn_leave)
+ else:
+ self.image["enter"] = self.image["main"]
+ self.itype["enter"] = self.itype["main"]
+ self.iwidth["enter"] = self.iwidth["main"]
+ self.iwidthDIV2["enter"] = self.iwidthDIV2["main"]
+ self.iheight["enter"] = self.iheight["main"]
+ self.iheightDIV2["enter"] = self.iheightDIV2["main"]
+
+ self.connect('enter-notify-event',self.on_btn_enter)
+ self.connect('leave-notify-event',self.on_btn_leave)
self.connect("toggled", self.toggleImage )
self.connect('pressed',self.pressed )
@@ -995,6 +1019,12 @@ class ImageRadioButton(gtk.RadioButton):
self.window.draw_drawable( self.gc, self.image[self.curImage], 0, 0, self.drawX - self.iwidthDIV2[self.curImage], self.drawY - self.iheightDIV2[self.curImage], self.iwidth[self.curImage], self.iheight[self.curImage] )
return True
+ def load_pixmap(self, name, pixmap):
+ if name == "main" and self.image["main"] == self.image["enter"]:
+ self.image["enter"] = pixmap
+ self.image[name] = pixmap
+ self.queue_draw()
+
def toggleImage( self, widget ):
if not self.get_active():
if self.within and self.image.has_key("enter"):