Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/Edit/EditToolbars.py
diff options
context:
space:
mode:
Diffstat (limited to 'Edit/EditToolbars.py')
-rw-r--r--Edit/EditToolbars.py101
1 files changed, 84 insertions, 17 deletions
diff --git a/Edit/EditToolbars.py b/Edit/EditToolbars.py
index b99a387..14f10de 100644
--- a/Edit/EditToolbars.py
+++ b/Edit/EditToolbars.py
@@ -8,6 +8,8 @@ from sugar.graphics.toggletoolbutton import ToggleToolButton
from sugar.graphics.palette import Palette
from sugar.graphics.icon import Icon
from Util.ThemeWidgets import *
+from Generation.Generator import GenerationParameters
+from Generation.GenerationConstants import GenerationConstants
from gettext import gettext as _
class mainToolbar(gtk.Toolbar):
@@ -134,7 +136,7 @@ class volumeTempoPalette(Palette):
self.volumeSliderBox = gtk.HBox()
self.volumeSliderLabel = gtk.Label(_('Volume'))
- self.volumeSliderAdj = gtk .Adjustment(value=0, lower=0, upper=1, step_incr=0.1, page_incr=0, page_size=0)
+ self.volumeSliderAdj = gtk.Adjustment(value=0, lower=0, upper=1, step_incr=0.1, page_incr=0, page_size=0)
self.volumeSlider = gtk.HScale(adjustment = self.volumeSliderAdj)
self.volumeSlider.set_size_request(250,-1)
self.volumeSlider.set_inverted(False)
@@ -327,14 +329,23 @@ class propsPalette(Palette):
self.set_content(self.mainBox)
-
-
class generationPalette(Palette):
def __init__(self, label, edit):
Palette.__init__(self, label)
self.edit = edit
+ self.rythmDensity = GenerationConstants.DEFAULT_DENSITY
+ self.rythmRegularity = GenerationConstants.DEFAULT_RYTHM_REGULARITY
+ self.pitchRegularity = GenerationConstants.DEFAULT_PITCH_REGULARITY
+ self.pitchStep = GenerationConstants.DEFAULT_STEP
+ self.duration = GenerationConstants.DEFAULT_DURATION
+ self.silence = GenerationConstants.DEFAULT_SILENCE
+ self.rythmMethod = GenerationConstants.DEFAULT_RYTHM_METHOD
+ self.pitchMethod = GenerationConstants.DEFAULT_PITCH_METHOD
+ self.pattern = GenerationConstants.DEFAULT_PATTERN
+ self.scale = GenerationConstants.DEFAULT_SCALE
+
self.mainBox = gtk.VBox()
self.slidersBox = gtk.HBox()
self.scaleModeBox = gtk.HBox()
@@ -343,22 +354,28 @@ class generationPalette(Palette):
self.XYSliderBox1 = RoundFixed(fillcolor = '#CCCCCC', bordercolor = '#000000')
self.XYSliderBox1.set_size_request(200,200)
self.XYButton1 = ImageToggleButton( Config.TAM_TAM_ROOT + '/icons/XYBut.svg', Config.TAM_TAM_ROOT + '/icons/XYButDown.svg')
- self.XAdjustment1 = gtk.Adjustment( 1, 0, 100, 1, 1, 1 )
- self.YAdjustment1 = gtk.Adjustment( 1, 0, 100, 1, 1, 1 )
+ self.XAdjustment1 = gtk.Adjustment(self.rythmDensity * 100, 0, 100, 1, 1, 1)
+ self.XAdjustment1.connect("value-changed", self.handleXAdjustment1)
+ self.YAdjustment1 = gtk.Adjustment(self.rythmRegularity * 100, 0, 100, 1, 1, 1)
+ self.YAdjustment1.connect("value-changed", self.handleYAdjustment1)
self.XYSlider1 = XYSlider( self.XYSliderBox1, self.XYButton1, self.XAdjustment1, self.YAdjustment1, False, True )
self.XYSliderBox2 = RoundFixed(fillcolor = '#CCCCCC', bordercolor = '#000000')
self.XYSliderBox2.set_size_request(200,200)
self.XYButton2 = ImageToggleButton( Config.TAM_TAM_ROOT + '/icons/XYBut.svg', Config.TAM_TAM_ROOT + '/icons/XYButDown.svg')
- self.XAdjustment2 = gtk.Adjustment( 1, 0, 100, 1, 1, 1 )
- self.YAdjustment2 = gtk.Adjustment( 1, 0, 100, 1, 1, 1 )
+ self.XAdjustment2 = gtk.Adjustment(self.pitchRegularity * 100, 0, 100, 1, 1, 1)
+ self.XAdjustment2.connect("value-changed", self.handleXAdjustment2)
+ self.YAdjustment2 = gtk.Adjustment(self.pitchStep * 100, 0, 100, 1, 1, 1)
+ self.YAdjustment2.connect("value-changed", self.handleYAdjustment2)
self.XYSlider2 = XYSlider( self.XYSliderBox2, self.XYButton2, self.XAdjustment2, self.YAdjustment2, False, True )
self.XYSliderBox3 = RoundFixed(fillcolor = '#CCCCCC', bordercolor = '#000000')
self.XYSliderBox3.set_size_request(200,200)
self.XYButton3 = ImageToggleButton( Config.TAM_TAM_ROOT + '/icons/XYBut.svg', Config.TAM_TAM_ROOT + '/icons/XYButDown.svg')
- self.XAdjustment3 = gtk.Adjustment( 1, 0, 100, 1, 1, 1 )
- self.YAdjustment3 = gtk.Adjustment( 1, 0, 100, 1, 1, 1 )
+ self.XAdjustment3 = gtk.Adjustment(self.duration * 100, 0, 100, 1, 1, 1)
+ self.XAdjustment3.connect("value-changed", self.handleXAdjustment3)
+ self.YAdjustment3 = gtk.Adjustment(self.silence * 100, 0, 100, 1, 1, 1)
+ self.YAdjustment3.connect("value-changed", self.handleYAdjustment3)
self.XYSlider3 = XYSlider( self.XYSliderBox3, self.XYButton3, self.XAdjustment3, self.YAdjustment3, False, True )
self.slidersBox.pack_start(self.XYSlider1, False, False, padding = 5)
@@ -366,15 +383,19 @@ class generationPalette(Palette):
self.slidersBox.pack_start(self.XYSlider3, False, False, padding = 5)
self.scaleBoxLabel = gtk.Label(_('Scale: '))
- self.scaleBox = gtk.combo_box_new_text()
- for scale in [_('Major scale'), _('Harmonic minor scale'), _('Natural minor scale'), _('Phrygian scale'), _('Dorian scale'), _('Lydian scale'), _('Myxolidian scale')]:
- self.scaleBox.append_text(scale)
+ self.scaleBox = BigComboBox()
+ scales = [_('Major scale'), _('Harmonic minor scale'), _('Natural minor scale'), _('Phrygian scale'), _('Dorian scale'), _('Lydian scale'), _('Myxolidian scale')]
+ for scale in scales:
+ self.scaleBox.append_item(scales.index(scale), scale)
+ self.scaleBox.connect('changed', self.handleScale)
self.scaleBox.set_active(0)
self.modeBoxLabel = gtk.Label(_('Mode: '))
- self.modeBox = gtk.combo_box_new_text()
- for mode in [_('Drunk'), _('Drone and Jump'), _('Repeater'), _('Loop segments')]:
- self.modeBox.append_text(mode)
+ self.modeBox = BigComboBox()
+ modes = [_('Drunk'), _('Drone and Jump'), _('Repeater'), _('Loop segments')]
+ for mode in modes:
+ self.modeBox.append_item(modes.index(mode), mode)
+ self.modeBox.connect('changed', self.handleMode)
self.modeBox.set_active(0)
self.scaleModeBox.pack_start(self.scaleBoxLabel, False, False, padding = 10)
@@ -382,8 +403,12 @@ class generationPalette(Palette):
self.scaleModeBox.pack_start(self.modeBoxLabel, False, False, padding = 10)
self.scaleModeBox.pack_start(self.modeBox, False, False, padding = 10)
- self.acceptButton = Icon('stock-accept')
- self.cancelButton = Icon('activity-stop')
+ self.acceptButton = gtk.Button(label = _('Accept'))
+# self.acceptButton = IconButton('stock-accept')
+ self.acceptButton.connect('clicked',self.generate)
+ self.cancelButton = gtk.Button(label = _('Cancel'))
+ self.cancelButton.connect('clicked',self.cancel)
+# self.cancelButton = IconButton('activity-stop')
self.decisionBox.pack_start(self.cancelButton, False, False, padding = 5)
self.decisionBox.pack_start(self.acceptButton, False, False, padding = 5)
@@ -394,5 +419,47 @@ class generationPalette(Palette):
self.set_content(self.mainBox)
+
+ def handleXAdjustment1( self, data ):
+ self.rythmDensity = self.XAdjustment1.value * .01
+
+ def handleYAdjustment1( self, data ):
+ self.rythmRegularity = self.YAdjustment1.value * .01
+ def handleXAdjustment2( self, data ):
+ self.pitchRegularity = self.XAdjustment2.value * .01
+
+ def handleYAdjustment2( self, data ):
+ self.pitchStep = self.YAdjustment2.value * .01
+
+ def handleXAdjustment3( self, data ):
+ self.duration = self.XAdjustment3.value * .01
+
+ def handleYAdjustment3( self, data ):
+ self.silence = self.YAdjustment3.value * .01
+
+ def getGenerationParameters( self ):
+ return GenerationParameters( self.rythmDensity,
+ self.rythmRegularity,
+ self.pitchStep,
+ self.pitchRegularity,
+ self.duration,
+ self.silence,
+ self.rythmMethod,
+ self.pitchMethod,
+ self.pattern,
+ self.scale )
+
+ def handleScale(self, widget, data = None):
+ self.scale = widget.props.value
+
+ def handleMode( self, widget, data = None ):
+ self.pattern = widget.props.value
+
+ def cancel(self, widget, data = None):
+ self.popdown(True)
+
+ def generate(self, widget, data=None):
+ self.edit.generate(self.getGenerationParameters())
+ self.popdown(True)