Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Edit/EditToolbars.py150
-rw-r--r--Edit/MainWindow.py11
-rwxr-xr-xTamTam.py5
-rw-r--r--icons/notedur.svg22
-rwxr-xr-xicons/pencil.svg19
-rw-r--r--icons/props.svg23
-rw-r--r--icons/record.svg9
-rw-r--r--icons/rewind.svg15
-rw-r--r--icons/voltemp.svg16
-rw-r--r--miniTamTam/miniToolbars.py4
10 files changed, 270 insertions, 4 deletions
diff --git a/Edit/EditToolbars.py b/Edit/EditToolbars.py
new file mode 100644
index 0000000..36081e5
--- /dev/null
+++ b/Edit/EditToolbars.py
@@ -0,0 +1,150 @@
+#!/usr/bin/env python
+
+import gtk
+import Config
+
+from sugar.graphics.toolbutton import ToolButton
+from sugar.graphics.toggletoolbutton import ToggleToolButton
+from sugar.graphics.palette import Palette
+from sugar.graphics.icon import Icon
+from gettext import gettext as _
+
+class mainToolbar(gtk.Toolbar):
+ def __init__(self,toolbox, edit):
+ gtk.Toolbar.__init__(self)
+
+ def _insertSeparator(x = 1):
+ for i in range(x):
+ self.separator = gtk.SeparatorToolItem()
+ self.separator.set_draw(True)
+ self.insert(self.separator,-1)
+ self.separator.show()
+
+ self.toolbox = toolbox
+ self.edit = edit
+
+ self.tooltips = gtk.Tooltips()
+
+ #Play button
+ self._playPalette = playPalette(_('Play / Stop'), self.edit)
+ self.playButton = ToggleToolButton('play')
+ self.playButton.set_palette(self._playPalette)
+ #self.playButton.connect(None)
+ self.insert(self.playButton, -1)
+ self.playButton.show()
+
+ #Rewind button
+ self.rewindButton = ToggleToolButton('rewind')
+ #self.rewindButton.connect(None)
+ self.insert(self.rewindButton, -1)
+ self.rewindButton.show()
+
+ #Record button
+ self.recordButton = ToggleToolButton('record')
+ #self.recordButton.connect(None)
+ self.insert(self.recordButton, -1)
+ self.recordButton.show()
+
+ _insertSeparator(2)
+
+ #Pencil button
+ self._pencilPalette = pencilPalette(_('Draw Tool'), self.edit)
+ self.pencilButton = ToggleToolButton('pencil')
+ self.pencilButton.set_palette(self._pencilPalette)
+ #self.pencilButton.connect(None)
+ self.insert(self.pencilButton, -1)
+ self.pencilButton.show()
+
+ _insertSeparator(4)
+
+ #Volume / Tempo button
+ self._volumeTempoPalette = volumeTempoPalette(_('Volume / Tempo'), self.edit)
+ self.volumeTempoButton = ToggleToolButton('voltemp')
+ self.volumeTempoButton.set_palette(self._volumeTempoPalette)
+ #self.volumeTempoButton.connect(None)
+ self.insert(self.volumeTempoButton, -1)
+ self.volumeTempoButton.show()
+
+ #Properties button
+ self._propsPalette = propsPalette(_('Properties'), self.edit)
+ self.propsButton = ToggleToolButton('props')
+ self.propsButton.set_palette(self._propsPalette)
+ #self.propsButton.connect(None)
+ self.insert(self.propsButton, -1)
+ self.propsButton.show()
+
+class playPalette(Palette):
+ def __init__(self, label, edit):
+ Palette.__init__(self, label)
+
+ self.edit = edit
+
+class pencilPalette(Palette):
+ def __init__(self, label, edit):
+ Palette.__init__(self, label)
+
+ self.edit = edit
+
+ self.pencilBox = gtk.VBox()
+
+ self.checkbox = gtk.CheckButton(label = _('Non-continuous'))
+
+ self.timeSigHBox = gtk.HBox()
+ self.timeSigImage = gtk.Image()
+ self.timeSigImage.set_from_file(Config.TAM_TAM_ROOT + '/icons/notedur.svg')
+ self.timeSigBox = gtk.combo_box_new_text()
+ self.timeSigBox.append_text(_('1/2'))
+ self.timeSigBox.append_text(_('1/4'))
+ self.timeSigBox.append_text(_('1/8'))
+ self.timeSigBox.append_text(_('1/16'))
+ self.timeSigBox.append_text(_('1/32'))
+ self.timeSigBox.set_active(0)
+ self.timeSigHBox.pack_start(self.timeSigImage, False, False, padding = 5)
+ self.timeSigHBox.pack_start(self.timeSigBox, False, False, padding = 5)
+
+ self.pencilBox.pack_start(self.checkbox, False, False, padding = 5)
+ self.pencilBox.pack_start(self.timeSigHBox, False, False, padding = 5)
+ self.pencilBox.show_all()
+
+ self.set_content(self.pencilBox)
+
+
+class volumeTempoPalette(Palette):
+ def __init__(self, label, edit):
+ Palette.__init__(self, label)
+
+ self.edit = edit
+
+ self.volumeTempoBox = gtk.VBox()
+
+ 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.volumeSlider = gtk.HScale(adjustment = self.volumeSliderAdj)
+ self.volumeSlider.set_size_request(250,15)
+ self.volumeSlider.set_inverted(False)
+ self.volumeSlider.set_draw_value(False)
+ self.volumeSliderBox.pack_start(self.volumeSliderLabel, False, False, padding = 5)
+ self.volumeSliderBox.pack_end(self.volumeSlider, False, False, padding = 5)
+
+ self.tempoSliderBox = gtk.HBox()
+ self.tempoSliderLabel = gtk.Label(_('Tempo'))
+ self.tempoSliderAdj = gtk.Adjustment(value=0, lower=0, upper=1, step_incr=0.1, page_incr=0, page_size=0)
+ self.tempoSlider = gtk.HScale(adjustment = self.tempoSliderAdj)
+ self.tempoSlider.set_size_request(250,15)
+ self.tempoSlider.set_inverted(False)
+ self.tempoSlider.set_draw_value(False)
+ self.tempoSliderBox.pack_start(self.tempoSliderLabel, False, False, padding = 5)
+ self.tempoSliderBox.pack_end(self.tempoSlider, False, False, padding = 5)
+
+ self.volumeTempoBox.pack_start(self.volumeSliderBox, padding = 5)
+ self.volumeTempoBox.pack_start(self.tempoSliderBox, padding = 5)
+ self.volumeTempoBox.show_all()
+
+ self.set_content(self.volumeTempoBox)
+
+class propsPalette(Palette):
+ def __init__(self, label, edit):
+ Palette.__init__(self, label)
+
+ self.edit = edit
diff --git a/Edit/MainWindow.py b/Edit/MainWindow.py
index efb1ebc..c07c92c 100644
--- a/Edit/MainWindow.py
+++ b/Edit/MainWindow.py
@@ -13,6 +13,8 @@ from Util.CSoundClient import new_csound_client
from Util.InstrumentPanel import InstrumentPanel
from Util.InstrumentPanel import DrumPanel
from Util.CSoundNote import CSoundNote
+from EditToolbars import mainToolbar
+from gettext import gettext as _
from subprocess import Popen
import time
import os
@@ -43,12 +45,19 @@ KEY_MAP_PIANO = Config.KEY_MAP_PIANO
#-----------------------------------
class MainWindow( SubActivity ):
- def __init__( self, set_mode ):
+ def __init__( self, activity, set_mode ):
self.csnd = new_csound_client()
self.tooltips = gtk.Tooltips()
+ self.activity = activity
for i in [6,7,8,9,10]:
self.csnd.setTrackVolume(100, i)
self.trackCount = 6
+
+ # Toolbar
+ self._mainToolbar = mainToolbar(self.activity.toolbox, self)
+ self.activity.toolbox.add_toolbar(_('Compose'), self._mainToolbar)
+ self.activity.toolbox.set_current_toolbar(1)
+ self._mainToolbar.show()
def init_data( ):
TP.ProfileBegin("init_data")
diff --git a/TamTam.py b/TamTam.py
index 4984b42..d751677 100755
--- a/TamTam.py
+++ b/TamTam.py
@@ -109,6 +109,7 @@ class TamTam(Activity):
def doNothing(): #a callback function to appease SynthLab
pass
+
def set_mode(self, mode, arg = None):
if Config.DEBUG: print 'DEBUG: TamTam::set_mode from', self.mode, 'to', mode
@@ -151,10 +152,10 @@ class TamTam(Activity):
self.mode = mode
if mode == 'edit':
- self.toolbox.hide()
+ #self.toolbox.hide()
if not (mode in self.modeList):
self.metadata['title'] = 'TamTam Edit'
- self.modeList[mode] = MainWindow(self.set_mode)
+ self.modeList[mode] = MainWindow(self, self.set_mode)
if self.instrumentPanel in self.preloadList:
self.instrumentPanel.load() # finish loading
self.modeList[mode].setInstrumentPanel( self.instrumentPanel )
diff --git a/icons/notedur.svg b/icons/notedur.svg
new file mode 100644
index 0000000..93e51d5
--- /dev/null
+++ b/icons/notedur.svg
@@ -0,0 +1,22 @@
+<?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="47px" height="20.14px" viewBox="0 0 47 20.14" enable-background="new 0 0 47 20.14" xml:space="preserve">
+<g>
+ <g>
+ <path fill="#808284" d="M1,3.5C1,2.12,2.12,1,3.5,1h40C44.88,1,46,2.12,46,3.5C46,4.87,44.88,6,43.5,6h-40C2.12,6,1,4.87,1,3.5z"
+ />
+ <path fill="none" stroke="#FFFFFF" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" d="M1,3.5
+ C1,2.12,2.12,1,3.5,1h40C44.88,1,46,2.12,46,3.5C46,4.87,44.88,6,43.5,6h-40C2.12,6,1,4.87,1,3.5z"/>
+ </g>
+ <g>
+
+ <line fill="none" stroke="#FFFFFF" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" x1="46" y1="12.08" x2="46" y2="19.14"/>
+
+ <line fill="none" stroke="#FFFFFF" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" x1="1.51" y1="19.14" x2="1.51" y2="12.08"/>
+
+ <line fill="none" stroke="#FFFFFF" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" x1="45.66" y1="15.77" x2="1" y2="15.77"/>
+ </g>
+</g>
+</svg>
diff --git a/icons/pencil.svg b/icons/pencil.svg
new file mode 100755
index 0000000..5501dac
--- /dev/null
+++ b/icons/pencil.svg
@@ -0,0 +1,19 @@
+<?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="52px" height="44.623px" viewBox="0 0 52 44.623" enable-background="new 0 0 52 44.623" xml:space="preserve">
+<path fill-rule="evenodd" clip-rule="evenodd" fill="#FFFFFF" d="M52,4.573l-0.02-0.23c-0.11-0.95-0.9-2.11-2.06-3.02
+ c-1.16-0.92-2.47-1.41-3.42-1.31c-0.41,0.05-0.75,0.23-0.97,0.49l-0.03-0.01l-16.75,22.18l-0.08,0.07l-0.01,0.02l-0.04,0.09
+ l-2.18,2.68l0.25,0.21h-0.01l-0.25-0.18l-0.04,0.04c-0.09,0.13-0.16,0.27-0.2,0.43l-0.07,0.05l-1.35,3.24l4.09,3.27l3.21-2.06
+ l0.03-0.05l0.24-0.2l0.05-0.06l2.24-2.79l0.03-0.04l0.02-0.04v0.01l16.94-21.85l0.1-0.07l0.08-0.15l0.01-0.02
+ C51.93,5.062,52,4.843,52,4.573z M21.76,36.462c-0.05,0.14-0.02,0.28,0.09,0.38c0.11,0.09,0.26,0.1,0.39,0.02l4.63-2.98l-3.01-2.41
+ L21.76,36.462z"/>
+<g>
+ <polygon fill="none" points="20.33,18.613 18.76,20.683 20.33,20.683 "/>
+</g>
+<path fill="#808284" d="M1,41.123c0-1.38,1.12-2.5,2.5-2.5h21.25c1.37,0,2.5,1.12,2.5,2.5s-1.13,2.5-2.5,2.5H3.5
+ C2.12,43.623,1,42.502,1,41.123z"/>
+<path fill="none" stroke="#FFFFFF" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" d="M1,41.123
+ c0-1.38,1.12-2.5,2.5-2.5h21.25c1.37,0,2.5,1.12,2.5,2.5s-1.13,2.5-2.5,2.5H3.5C2.12,43.623,1,42.502,1,41.123z"/>
+</svg>
diff --git a/icons/props.svg b/icons/props.svg
new file mode 100644
index 0000000..1e1cfea
--- /dev/null
+++ b/icons/props.svg
@@ -0,0 +1,23 @@
+<?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="75px" height="75px" viewBox="0 0 45 45" enable-background="new 0 0 45 45" xml:space="preserve">
+<polygon fill="#FFFFFF" points="39.26,20.326 40.87,20.119 42.082,20.262 45,21.575 45,23.425 42.082,24.738 40.87,24.881
+ 39.26,24.674 38.526,27.927 40.065,28.449 41.1,29.113 43.169,31.584 42.382,33.256 39.189,33.157 38.031,32.744 36.668,31.845
+ 34.625,34.451 35.784,35.601 36.438,36.661 37.244,39.797 35.82,40.947 32.989,39.456 32.114,38.575 31.273,37.165 28.32,38.611
+ 28.877,40.166 29.009,41.396 28.391,44.587 26.622,45 24.711,42.394 24.295,41.226 24.145,39.582 20.855,39.582 20.705,41.226
+ 20.289,42.394 18.378,45 16.609,44.587 15.991,41.396 16.123,40.166 16.68,38.611 13.727,37.165 12.886,38.575 12.011,39.456
+ 9.18,40.947 7.756,39.797 8.562,36.661 9.216,35.601 10.375,34.451 8.332,31.845 6.969,32.744 5.811,33.157 2.618,33.256
+ 1.831,31.584 3.9,29.113 4.935,28.449 6.474,27.927 5.74,24.674 4.13,24.881 2.918,24.738 0,23.425 0,21.575 2.918,20.262
+ 4.13,20.119 5.74,20.326 6.474,17.073 4.935,16.551 3.9,15.887 1.831,13.416 2.618,11.744 5.811,11.843 6.969,12.256 8.332,13.155
+ 10.375,10.549 9.216,9.399 8.562,8.339 7.756,5.203 9.18,4.053 12.011,5.544 12.886,6.425 13.727,7.835 16.68,6.389 16.123,4.834
+ 15.991,3.604 16.609,0.413 18.378,0 20.289,2.606 20.705,3.774 20.855,5.418 24.145,5.418 24.295,3.774 24.711,2.606 26.622,0
+ 28.391,0.413 29.009,3.604 28.877,4.834 28.32,6.389 31.273,7.835 32.114,6.425 32.989,5.544 35.82,4.053 37.244,5.203
+ 36.438,8.339 35.784,9.399 34.625,10.549 36.668,13.155 38.031,12.256 39.189,11.843 42.382,11.744 43.169,13.416 41.1,15.887
+ 40.065,16.551 38.526,17.073 "/>
+<ellipse fill-rule="evenodd" clip-rule="evenodd" fill="#3B3C3E" cx="22.5" cy="22.5" rx="14.593" ry="14.826"/>
+<path fill-rule="evenodd" clip-rule="evenodd" fill="#FFFFFF" d="M11.444,22.5c0-6.2,4.953-11.232,11.056-11.232
+ S33.556,16.3,33.556,22.5S28.603,33.732,22.5,33.732S11.444,28.7,11.444,22.5z"/>
+<ellipse fill-rule="evenodd" clip-rule="evenodd" fill="#3B3C3E" cx="22.5" cy="22.5" rx="4.864" ry="4.942"/>
+</svg>
diff --git a/icons/record.svg b/icons/record.svg
new file mode 100644
index 0000000..ad8e330
--- /dev/null
+++ b/icons/record.svg
@@ -0,0 +1,9 @@
+<?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="37px" height="37px" viewBox="0 0 37 37" enable-background="new 0 0 37 37" xml:space="preserve">
+<path fill="#808284" d="M37,18.5C37,28.72,28.72,37,18.5,37S0,28.72,0,18.5S8.28,0,18.5,0S37,8.28,37,18.5z"/>
+<path fill="#FFFFFF" d="M24.99,18.5c0,3.58-2.91,6.49-6.49,6.49s-6.49-2.91-6.49-6.49s2.91-6.49,6.49-6.49S24.99,14.92,24.99,18.5z"
+ />
+</svg>
diff --git a/icons/rewind.svg b/icons/rewind.svg
new file mode 100644
index 0000000..10b5f2b
--- /dev/null
+++ b/icons/rewind.svg
@@ -0,0 +1,15 @@
+<?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="37px" height="37px" viewBox="0 0 37 37" enable-background="new 0 0 37 37" xml:space="preserve">
+<g>
+ <g>
+ <g>
+ <path fill="#808284" d="M37,18.5C37,28.72,28.72,37,18.5,37S0,28.72,0,18.5S8.28,0,18.5,0S37,8.28,37,18.5z"/>
+ <polygon fill="#FFFFFF" points="6.91,18.41 16.8,12.81 16.8,24.01 "/>
+ <polygon fill="#FFFFFF" points="16.45,18.41 26.35,12.81 26.35,24.01 "/>
+ </g>
+ </g>
+</g>
+</svg>
diff --git a/icons/voltemp.svg b/icons/voltemp.svg
new file mode 100644
index 0000000..e53a446
--- /dev/null
+++ b/icons/voltemp.svg
@@ -0,0 +1,16 @@
+<?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="75px" height="75px" viewBox="0 0 46 25" enable-background="new 0 0 46 25" xml:space="preserve">
+<path fill="#808284" stroke="#FFFFFF" stroke-linecap="square" d="M0.5,5.17c0-1.38,1.13-2.5,2.5-2.5h40c1.381,0,2.5,1.12,2.5,2.5
+ c0,1.37-1.119,2.5-2.5,2.5H3C1.63,7.67,0.5,6.54,0.5,5.17z"/>
+<path fill="#FFFFFF" d="M28.17,5.17c0,2.85-2.31,5.16-5.17,5.16c-2.85,0-5.16-2.31-5.16-5.16C17.84,2.31,20.15,0,23,0
+ C25.86,0,28.17,2.31,28.17,5.17z"/>
+<g>
+ <path fill="#808284" stroke="#FFFFFF" stroke-linecap="square" d="M0.5,20.33c0-1.37,1.13-2.5,2.5-2.5h40c1.381,0,2.5,1.13,2.5,2.5
+ c0,1.38-1.119,2.5-2.5,2.5H3C1.63,22.83,0.5,21.71,0.5,20.33z"/>
+</g>
+<path fill="#FFFFFF" d="M15.5,19.83c0,2.859-2.31,5.17-5.16,5.17c-2.86,0-5.17-2.311-5.17-5.17c0-2.85,2.31-5.16,5.17-5.16
+ C13.19,14.67,15.5,16.98,15.5,19.83z"/>
+</svg>
diff --git a/miniTamTam/miniToolbars.py b/miniTamTam/miniToolbars.py
index 92a1afc..a55d571 100644
--- a/miniTamTam/miniToolbars.py
+++ b/miniTamTam/miniToolbars.py
@@ -5,6 +5,7 @@ import Config
from sugar.graphics.toolbutton import ToolButton
from sugar.graphics.toggletoolbutton import ToggleToolButton
+from sugar.graphics.palette import Palette
from gettext import gettext as _
class playToolbar(gtk.Toolbar):
@@ -147,4 +148,5 @@ class recordToolbar(gtk.Toolbar):
self.loopSetButton.connect('clicked', self.miniTamTam.handleLoopSettingsBtn)
self.insert(self.loopSetButton, -1)
self.loopSetButton.show()
- self.loopSetButton.set_tooltip(_('Add new sound')) \ No newline at end of file
+ self.loopSetButton.set_tooltip(_('Add new sound'))
+ \ No newline at end of file