diff options
author | Nat <natcl@hotmail.com> | 2007-08-13 20:01:58 (GMT) |
---|---|---|
committer | Nat <natcl@hotmail.com> | 2007-08-13 20:01:58 (GMT) |
commit | 707f079867d46a6790a783aa85f3035b11cdf9ef (patch) | |
tree | 92792a472561b1446db2188d7f70c249ae0ee089 | |
parent | 445f2c69959141416cffde68156bd39ce28a1956 (diff) |
Filter in Properties
-rw-r--r-- | Edit/EditToolbars.py | 113 | ||||
-rwxr-xr-x | icons/accept.svg | 18 | ||||
-rwxr-xr-x | icons/cancel.svg | 11 |
3 files changed, 115 insertions, 27 deletions
diff --git a/Edit/EditToolbars.py b/Edit/EditToolbars.py index 67b6e86..3fb5c33 100644 --- a/Edit/EditToolbars.py +++ b/Edit/EditToolbars.py @@ -387,6 +387,13 @@ class propertiesPalette(Palette): self.edit = edit + self.filterTypes = [_('None'), _('Lowpass'), _('Bandpass'), _('Highpass')] + self.geneTypes = [_('Line'),_('Drunk'),_('Drone and Jump'),_('Repeater'),_('Loop Segments')] + self.currentFilterType = self.filterTypes[0] + self.currentGeneType = self.geneTypes[0] + + self.setup = False + self.pageIds = [] self.context = "page" @@ -445,7 +452,7 @@ class propertiesPalette(Palette): self.reverbBox = gtk.HBox() self.reverbLabel = gtk.Label(_('Reverb: ')) - self.reverbSliderAdj = gtk.Adjustment(value=0, lower=0, upper=16, step_incr=1, page_incr=0, page_size=0) + self.reverbSliderAdj = gtk.Adjustment(0.1, 0, 1, 0.1, 0.1, 0) self.reverbSliderAdj.connect("value-changed", self.handleReverb) self.reverbSlider = gtk.HScale(adjustment = self.reverbSliderAdj) self.reverbSlider.set_size_request(200,-1) @@ -457,7 +464,7 @@ class propertiesPalette(Palette): self.attackDurBox = gtk.HBox() self.attackDurLabel = gtk.Label(_('Attack duration: ')) - self.attackDurSliderAdj = gtk.Adjustment(value=0, lower=0, upper=16, step_incr=1, page_incr=0, page_size=0) + self.attackDurSliderAdj = gtk.Adjustment(0.04, 0.03, 1, .01, .01, 0) self.attackDurSlider = gtk.HScale(adjustment = self.attackDurSliderAdj) self.attackDurSlider.set_size_request(200,-1) self.attackDurSlider.set_value_pos(gtk.POS_RIGHT) @@ -468,7 +475,7 @@ class propertiesPalette(Palette): self.decayDurBox = gtk.HBox() self.decayDurLabel = gtk.Label(_('Decay duration: ')) - self.decayDurSliderAdj = gtk.Adjustment(value=0, lower=0, upper=16, step_incr=1, page_incr=0, page_size=0) + self.decayDurSliderAdj = gtk.Adjustment(0.31, 0.03, 1, .01, .01, 0) self.decayDurSlider = gtk.HScale(adjustment = self.decayDurSliderAdj) self.decayDurSlider.set_size_request(200,-1) self.decayDurSlider.set_value_pos(gtk.POS_RIGHT) @@ -477,9 +484,19 @@ class propertiesPalette(Palette): self.decayDurBox.pack_end(self.decayDurCheckButton, False, False, padding = 5) self.decayDurBox.pack_end(self.decayDurSlider, False, False, padding = 5) + self.filterTypeBox = gtk.HBox() + self.filterTypeLabel = gtk.Label(_('Filter Type: ')) + self.filterTypeComboBox = BigComboBox() + for filtertype in self.filterTypes: + self.filterTypeComboBox.append_item(self.filterTypes.index(filtertype), filtertype) + self.filterTypeComboBox.connect('changed', self.handleFilterTypes) + self.filterTypeBox.pack_start(self.filterTypeLabel, False, False, padding = 5) + self.filterTypeBox.pack_end(self.filterTypeComboBox, False, False, padding = 55) + self.filterCutoffBox = gtk.HBox() self.filterCutoffLabel = gtk.Label(_('Filter cutoff: ')) - self.filterCutoffSliderAdj = gtk.Adjustment(value=0, lower=0, upper=16, step_incr=1, page_incr=0, page_size=0) + self.filterCutoffSliderAdj = gtk.Adjustment(1000, 100, 7000, 100, 100, 0) + self.filterCutoffSliderAdj.connect('value-changed', self.handleFilter) self.filterCutoffSlider = gtk.HScale(adjustment = self.filterCutoffSliderAdj) self.filterCutoffSlider.set_size_request(200,-1) self.filterCutoffSlider.set_value_pos(gtk.POS_RIGHT) @@ -488,29 +505,21 @@ class propertiesPalette(Palette): self.filterCutoffBox.pack_end(self.filterCutoffCheckButton, False, False, padding = 5) self.filterCutoffBox.pack_end(self.filterCutoffSlider, False, False, padding = 5) - self.filterTypeBox = gtk.HBox() - self.filterTypeLabel = gtk.Label(_('Filter Type: ')) - self.filterTypeComboBox = BigComboBox() - for type in [_('Lowpass'),_('Bandpass'),_('Highpass')]: - self.filterTypeComboBox.append_item(0, type) - self.filterTypeComboBox.set_active(0) - self.filterTypeBox.pack_start(self.filterTypeLabel, False, False, padding = 5) - self.filterTypeBox.pack_end(self.filterTypeComboBox, False, False, padding = 55) - self.generationLabel = gtk.Label(_('Generation')) self.generationTypeBox = gtk.HBox() self.generationTypeLabel = gtk.Label(_('Type: ')) self.generationTypeComboBox = BigComboBox() - for type in [_('Line'),_('Drunk'),_('Drone and Jump'),_('Repeater'),_('Loop Segments')]: - self.generationTypeComboBox.append_item(0, type) + for genetype in self.geneTypes: + self.generationTypeComboBox.append_item(self.geneTypes.index(genetype), genetype) + self.generationTypeComboBox.connect('changed', self.handleGeneTypes) self.generationTypeComboBox.set_active(0) self.generationTypeBox.pack_start(self.generationTypeLabel, False, False, padding = 5) self.generationTypeBox.pack_end(self.generationTypeComboBox, False, False, padding = 55) self.minimumBox = gtk.HBox() self.minimumLabel = gtk.Label(_('Minimum: ')) - self.minimumSliderAdj = gtk.Adjustment(value=0, lower=0, upper=16, step_incr=1, page_incr=0, page_size=0) + self.minimumSliderAdj = gtk.Adjustment(0, 0, 100, 1, 1, 0) self.minimumSlider = gtk.HScale(adjustment = self.minimumSliderAdj) self.minimumSlider.set_size_request(200,-1) self.minimumSlider.set_value_pos(gtk.POS_RIGHT) @@ -519,7 +528,7 @@ class propertiesPalette(Palette): self.maximumBox = gtk.HBox() self.maximumLabel = gtk.Label(_('Maximum: ')) - self.maximumSliderAdj = gtk.Adjustment(value=0, lower=0, upper=16, step_incr=1, page_incr=0, page_size=0) + self.maximumSliderAdj = gtk.Adjustment(100, 0, 100, 1, 1, 0) self.maximumSlider = gtk.HScale(adjustment = self.maximumSliderAdj) self.maximumSlider.set_size_request(200,-1) self.maximumSlider.set_value_pos(gtk.POS_RIGHT) @@ -528,7 +537,7 @@ class propertiesPalette(Palette): self.randomBox = gtk.HBox() self.randomLabel = gtk.Label(_('Random: ')) - self.randomSliderAdj = gtk.Adjustment(value=0, lower=0, upper=16, step_incr=1, page_incr=0, page_size=0) + self.randomSliderAdj = gtk.Adjustment(20, 0, 100, 1, 1, 0) self.randomSlider = gtk.HScale(adjustment = self.randomSliderAdj) self.randomSlider.set_size_request(200,-1) self.randomSlider.set_value_pos(gtk.POS_RIGHT) @@ -536,8 +545,8 @@ class propertiesPalette(Palette): self.randomBox.pack_end(self.randomSlider, False, False, padding = 52) self.decisionBox = gtk.HBox() - self.acceptButton = Icon('stock-accept') - self.cancelButton = Icon('activity-stop') + self.acceptButton = ImageButton(Config.TAM_TAM_ROOT + '/icons/accept.svg') + self.cancelButton = ImageButton(Config.TAM_TAM_ROOT + '/icons/cancel.svg') self.decisionBox.pack_start(self.cancelButton, False, False, padding = 5) self.decisionBox.pack_start(self.acceptButton, False, False, padding = 5) @@ -549,8 +558,8 @@ class propertiesPalette(Palette): self.mainBox.pack_start(self.reverbBox, padding = 5) self.mainBox.pack_start(self.attackDurBox, padding = 5) self.mainBox.pack_start(self.decayDurBox, padding = 5) - self.mainBox.pack_start(self.filterCutoffBox, padding = 5) self.mainBox.pack_start(self.filterTypeBox, padding = 5) + self.mainBox.pack_start(self.filterCutoffBox, padding = 5) self.mainBox.pack_start(self.generationLabel, padding = 15) self.mainBox.pack_start(self.generationTypeBox, padding = 5) self.mainBox.pack_start(self.minimumBox, padding = 5) @@ -610,14 +619,10 @@ class propertiesPalette(Palette): self.reverbSliderAdj.set_value( n.cs.reverbSend ) self.attackDurSliderAdj.set_value( n.cs.attack ) self.decayDurSliderAdj.set_value( n.cs.decay ) - if n.cs.filterType == 0: - pass - else: - pass - self.filterType = n.cs.filterType + self.filterTypeComboBox.set_active(n.cs.filterType) + self.currentFilterType = n.cs.filterType self.filterCutoffSliderAdj.set_value( n.cs.filterCutoff ) self.setup = False - return def handleBeat(self, widget, signal_id): beats = int(widget.get_adjustment().value) @@ -694,4 +699,58 @@ class propertiesPalette(Palette): stream += [ n.id, adjust.value ] if len(stream): self.edit.noteDB.updateNotes( stream + [-1] ) + + def handleFilterTypes(self, widget): + self.currentFilterType = widget.props.value + + if not self.currentFilterType: + self.filterCutoffSlider.set_sensitive(False) + else: + self.filterCutoffSlider.set_sensitive(True) + + if not self.setup: + if self.currentFilterType: + typestream = [] + cutoffstream = [] + cutoff = self.filterCutoffSliderAdj.value + for p in self.notes: + for t in self.notes[p]: + if len(self.notes[p][t]): + substream = [] + typestream += [ p, t, PARAMETER.FILTERTYPE, len(self.notes[p][t]) ] + for n in self.notes[p][t]: + typestream += [ n.id, self.currentFilterType ] + if n.cs.filterCutoff != cutoff: + substream += [ n.id, cutoff ] + if len(substream): + cutoffstream += [ p, t, PARAMETER.FILTERCUTOFF, len(substream)//2 ] + substream + if len(typestream): + self.edit.noteDB.updateNotes( typestream + [-1] ) + if len(cutoffstream): + self.edit.noteDB.updateNotes( cutoffstream + [-1] ) + else: + self.currentFilterType = 0 + typestream = [] + for p in self.notes: + for t in self.notes[p]: + if len(self.notes[p][t]): + typestream += [ p, t, PARAMETER.FILTERTYPE, len(self.notes[p][t]) ] + for n in self.notes[p][t]: + typestream += [ n.id, 0 ] + if len(typestream): + self.edit.noteDB.updateNotes( typestream + [-1] ) + + def handleGeneTypes(self, widget): + self.currentGeneType = widget.props.value + + def handleFilter(self, adjust): + stream = [] + for p in self.notes: + for t in self.notes[p]: + if len(self.notes[p][t]): + stream += [ p, t, PARAMETER.FILTERCUTOFF, len(self.notes[p][t]) ] + for n in self.notes[p][t]: + stream += [ n.id, adjust.value ] + if len(stream): + self.edit.noteDB.updateNotes( stream + [-1] ) diff --git a/icons/accept.svg b/icons/accept.svg new file mode 100755 index 0000000..fa8c333 --- /dev/null +++ b/icons/accept.svg @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14576) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="55px" height="55px" viewBox="0 0 55 55" enable-background="new 0 0 55 55" xml:space="preserve">
+<g>
+
+ <path fill-rule="evenodd" clip-rule="evenodd" fill="none" stroke="#FFFFFF" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" d="
+ M5.78,28.079c0-12.43,10.071-22.499,22.499-22.499c12.431,0,22.501,10.069,22.501,22.499c0,12.431-10.07,22.501-22.501,22.501
+ C15.851,50.58,5.78,40.51,5.78,28.079z"/>
+</g>
+<g>
+
+ <line fill-rule="evenodd" clip-rule="evenodd" fill="none" stroke="#FFFFFF" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" x1="16.788" y1="26.691" x2="25.781" y2="38.706"/>
+
+ <line fill-rule="evenodd" clip-rule="evenodd" fill="none" stroke="#FFFFFF" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" x1="25.781" y1="38.706" x2="39.773" y2="18.704"/>
+</g>
+</svg>
diff --git a/icons/cancel.svg b/icons/cancel.svg new file mode 100755 index 0000000..d5be970 --- /dev/null +++ b/icons/cancel.svg @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14576) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="55px" height="55px" viewBox="0 0 55 55" enable-background="new 0 0 55 55" xml:space="preserve">
+<path fill-rule="evenodd" clip-rule="evenodd" fill="none" stroke="#FFFFFF" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" d="
+ M5.78,28.08c0-12.431,10.071-22.5,22.5-22.5c12.432,0,22.5,10.069,22.5,22.5c0,12.432-10.068,22.5-22.5,22.5
+ C15.851,50.58,5.78,40.512,5.78,28.08z"/>
+<line fill-rule="evenodd" clip-rule="evenodd" fill="none" stroke="#FFFFFF" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" x1="20.155" y1="19.956" x2="37.029" y2="36.83"/>
+<line fill-rule="evenodd" clip-rule="evenodd" fill="none" stroke="#FFFFFF" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" x1="37.029" y1="19.956" x2="20.155" y2="36.83"/>
+</svg>
|