Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/Jam/Picker.py
diff options
context:
space:
mode:
authoramartin <olpc@xo-05-28-21.localdomain>2007-08-08 07:04:24 (GMT)
committer amartin <olpc@xo-05-28-21.localdomain>2007-08-08 07:04:24 (GMT)
commitfbd47da49acd5d08f6a44e457f1e648769f06d7a (patch)
tree08724808155904724471e550c96fe6b70b05184e /Jam/Picker.py
parent95ad802c9bb41b7f5165346ccd683f2617482147 (diff)
Jam drawing
Diffstat (limited to 'Jam/Picker.py')
-rw-r--r--Jam/Picker.py123
1 files changed, 100 insertions, 23 deletions
diff --git a/Jam/Picker.py b/Jam/Picker.py
index 5c1627b..6e436ef 100644
--- a/Jam/Picker.py
+++ b/Jam/Picker.py
@@ -3,44 +3,73 @@ import pygtk
pygtk.require( '2.0' )
import gtk
+import random #TEMP
+
import Jam.Block as Block
class Picker( gtk.HBox ):
- INSTRUMENTS = 0
- LOOPS = 1
- DRUMKITS = 2
-
- def __init__( self, owner, type, filter = None ):
+ def __init__( self, owner, filter = None ):
gtk.HBox.__init__( self )
self.owner = owner
- self.type = type
self.filter = filter
self.desktop = owner.getDesktop()
- # temp
- dummy = gtk.Button("dummy")
- dummy.add_events(gtk.gdk.BUTTON_MOTION_MASK)
- dummy.connect( "button-press-event", self.button_press )
- dummy.connect( "button-release-event", self.button_release )
- dummy.connect( "motion-notify-event", self.motion_notify )
+ self.scrollLeft = gtk.Button( "<" )
+ self.pack_start( self.scrollLeft, False, False )
+
+ self.scrolledWindow = gtk.ScrolledWindow()
+ self.scrolledWindow.set_policy( gtk.POLICY_ALWAYS, gtk.POLICY_NEVER )
+ self.pack_start( self.scrolledWindow )
+ self.hadjustment = self.scrolledWindow.get_hadjustment()
+
+ self.scrollRight = gtk.Button( ">" )
+ self.pack_start( self.scrollRight, False, False )
+
+ self.pickerBox = gtk.HBox()
+ self.scrolledWindow.add_with_viewport( self.pickerBox )
+
+ self.show_all()
+
+ self.scroll = {}
+ self.scroll[filter] = 0
+
+ self.blocks = []
- self.pack_start( dummy, False, False )
+ def addBlock( self, name ):
+ block = gtk.Button(name)
+ block.add_events(gtk.gdk.BUTTON_MOTION_MASK)
+ block.connect( "button-press-event", self.button_press )
+ block.connect( "button-release-event", self.button_release )
+ block.connect( "motion-notify-event", self.motion_notify )
+
+ self.blocks.append( block )
+
+ # TODO test against filter
+ self.pickerBox.pack_start( block, False, False )
+ block.show()
+
+ def getFilter( self ):
+ return filter
+
+ def setFilter( self, filter ):
+ # TODO apply filter
+
+ self.scroll[self.filter] = self.hadjustment.get_value()
+
+ if self.scroll.has_key( filter ):
+ self.hadjustment.set_value( self.scroll[filter] )
+ else:
+ self.hadjustment.set_value( 0 )
+ self.scroll[filter] = 0
+
+ self.filter = filter
def button_press( self, widget, event ):
- alloc = widget.get_allocation()
- if self.type == Picker.INSTRUMENTS:
- blockClass = Block.Instrument
- blockData = []
- loc = ( alloc.x + event.x - blockClass.WIDTH_DIV2, -1 )
- elif self.type == Picker.LOOPS:
- pass
- elif self.type == Picker.DRUMKITS:
- pass
- self.desktop.addBlock( blockClass, blockData, loc, True )
+ pass
def button_release( self, widget, event ):
self.desktop.button_release( widget, event )
@@ -49,3 +78,51 @@ class Picker( gtk.HBox ):
self.desktop.motion_notify( widget, event )
+class Instrument( Picker ):
+
+ def __init__( self, owner, filter = None ):
+ Picker.__init__( self, owner, filter )
+
+ self.type = Instrument
+
+ self.addBlock( "Instrument" )
+
+ def button_press( self, widget, event ):
+ walloc = widget.get_allocation()
+ salloc = self.scrolledWindow.get_allocation()
+ loc = ( walloc.x + salloc.x + event.x - self.hadjustment.get_value(), -1 )
+ self.desktop.addBlock( Block.Instrument, [], loc, True )
+
+
+class Drum( Picker ):
+
+ def __init__( self, owner, filter = None ):
+ Picker.__init__( self, owner, filter )
+
+ self.type = Drum
+
+ self.addBlock( "Drum" )
+
+ def button_press( self, widget, event ):
+ walloc = widget.get_allocation()
+ salloc = self.scrolledWindow.get_allocation()
+ loc = ( walloc.x + salloc.x + event.x - self.hadjustment.get_value(), -1 )
+ self.desktop.addBlock( Block.Drum, [], loc, True )
+
+
+class Loop( Picker ):
+
+ def __init__( self, owner, filter = None ):
+ Picker.__init__( self, owner, filter )
+
+ self.type = Loop
+
+ self.addBlock( "Loop" )
+
+ def button_press( self, widget, event ):
+ walloc = widget.get_allocation()
+ salloc = self.scrolledWindow.get_allocation()
+ loc = ( walloc.x + salloc.x + event.x - self.hadjustment.get_value(), -1 )
+ self.desktop.addBlock( Block.Loop, { "beats": random.randint(1,8) }, loc, True )
+
+