diff options
author | Nat <natcl@hotmail.com> | 2007-09-17 16:50:00 (GMT) |
---|---|---|
committer | Nat <natcl@hotmail.com> | 2007-09-17 16:50:00 (GMT) |
commit | 2e559ace9d45bb83af07567443321cb3a41de42b (patch) | |
tree | 809e22e4c8317c4de374e487f58c24752b9c1fdc /TamTamEdit.activity | |
parent | 608fdb2e7f7a62e08b7e29a6ba28ff6326638be9 (diff) |
TamTam Edit split
Diffstat (limited to 'TamTamEdit.activity')
-rw-r--r-- | TamTamEdit.activity/Edit/EditToolbars.py | 22 | ||||
-rw-r--r-- | TamTamEdit.activity/Edit/HitInterface.py | 4 | ||||
-rw-r--r-- | TamTamEdit.activity/Edit/MainWindow.py | 38 | ||||
-rw-r--r-- | TamTamEdit.activity/Edit/NoteInterface.py | 6 | ||||
-rw-r--r-- | TamTamEdit.activity/Edit/Properties.py | 10 | ||||
-rw-r--r-- | TamTamEdit.activity/Edit/TrackInterface.py | 10 | ||||
-rw-r--r-- | TamTamEdit.activity/Edit/TuneInterface.py | 6 | ||||
-rw-r--r-- | TamTamEdit.activity/MANIFEST | 542 | ||||
-rw-r--r-- | TamTamEdit.activity/TamTam.py | 1229 | ||||
-rw-r--r-- | TamTamEdit.activity/TamTamEdit.py | 144 | ||||
-rw-r--r-- | TamTamEdit.activity/activity/activity.info | 2 | ||||
-rw-r--r-- | TamTamEdit.activity/po/TamTamEdit.pot | 632 | ||||
-rw-r--r-- | TamTamEdit.activity/setup.py | 11 |
13 files changed, 1377 insertions, 1279 deletions
diff --git a/TamTamEdit.activity/Edit/EditToolbars.py b/TamTamEdit.activity/Edit/EditToolbars.py index 38e2e27..7854b7d 100644 --- a/TamTamEdit.activity/Edit/EditToolbars.py +++ b/TamTamEdit.activity/Edit/EditToolbars.py @@ -2,27 +2,27 @@ import gtk -import Config +import common.Config as Config from sugar.graphics.toolbutton import ToolButton from sugar.graphics.toggletoolbutton import ToggleToolButton from sugar.graphics.radiotoolbutton import RadioToolButton from sugar.graphics.palette import Palette from sugar.graphics.icon import Icon -from Util.ThemeWidgets import * +from common.Util.ThemeWidgets import * from gettext import gettext as _ #Generation palette import gobject -from Generation.Generator import GenerationParameters +from common.Generation.Generator import GenerationParameters #Generation palette and Properties palette -from Generation.GenerationConstants import GenerationConstants -from Generation.GenerationRythm import GenerationRythm -from Generation.GenerationPitch import GenerationPitch +from common.Generation.GenerationConstants import GenerationConstants +from common.Generation.GenerationRythm import GenerationRythm +from common.Generation.GenerationPitch import GenerationPitch #Properties palette -from Util.NoteDB import PARAMETER -from Generation.Drunk import * -import Generation.Utils as Utils +from common.Util.NoteDB import PARAMETER +from common.Generation.Drunk import * +import common.Generation.Utils as Utils from types import * from math import sqrt from random import * @@ -986,7 +986,7 @@ class propertiesPalette(Palette): self.filterTypeLabel = gtk.Label(_('Filter Type: ')) self.filterTypeComboBox = BigComboBox() for filtertype in self.filterTypes: - self.filterTypeComboBox.append_item(self.filterTypes.index(filtertype), filtertype, Config.TAM_TAM_ROOT + '/icons/test.svg', (30,30)) + 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) @@ -1014,7 +1014,7 @@ class propertiesPalette(Palette): self.generationTypeLabel = gtk.Label(_('Type: ')) self.generationTypeComboBox = BigComboBox() for genetype in self.geneTypes: - self.generationTypeComboBox.append_item(self.geneTypes.index(genetype), genetype, Config.TAM_TAM_ROOT + '/icons/test.svg', (30,30)) + 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) diff --git a/TamTamEdit.activity/Edit/HitInterface.py b/TamTamEdit.activity/Edit/HitInterface.py index 6e77908..049c2b0 100644 --- a/TamTamEdit.activity/Edit/HitInterface.py +++ b/TamTamEdit.activity/Edit/HitInterface.py @@ -2,9 +2,9 @@ import pygtk pygtk.require( '2.0' ) import gtk -from Util.NoteDB import PARAMETER +from common.Util.NoteDB import PARAMETER from Edit.NoteInterface import NoteInterface -import Config +import common.Config as Config class HitInterface( NoteInterface ): diff --git a/TamTamEdit.activity/Edit/MainWindow.py b/TamTamEdit.activity/Edit/MainWindow.py index 58f82f1..edcb587 100644 --- a/TamTamEdit.activity/Edit/MainWindow.py +++ b/TamTamEdit.activity/Edit/MainWindow.py @@ -4,15 +4,15 @@ import gtk import gobject -from Util.ThemeWidgets import * -from Util.Profiler import TP -from Util import NoteDB -from Util.NoteDB import PARAMETER -from Util import ControlStream -from Util.CSoundClient import new_csound_client -from Util.InstrumentPanel import InstrumentPanel -from Util.InstrumentPanel import DrumPanel -from Util.CSoundNote import CSoundNote +from common.Util.ThemeWidgets import * +from common.Util.Profiler import TP +from common.Util import NoteDB +from common.Util.NoteDB import PARAMETER +from common.Util import ControlStream +from common.Util.CSoundClient import new_csound_client +from common.Util.InstrumentPanel import InstrumentPanel +from common.Util.InstrumentPanel import DrumPanel +from common.Util.CSoundNote import CSoundNote from EditToolbars import mainToolbar from EditToolbars import generateToolbar from gettext import gettext as _ @@ -28,16 +28,15 @@ class CONTEXT: TRACK = 1 NOTE = 2 -import Config -from SubActivity import SubActivity +import common.Config as Config +#from SubActivity import SubActivity -from Generation.GenerationConstants import GenerationConstants -from Generation.GenerationParametersWindow import GenerationParametersWindow +from common.Generation.GenerationConstants import GenerationConstants from Edit.Properties import Properties from Edit.TrackInterface import TrackInterface, TrackInterfaceParasite from Edit.TuneInterface import TuneInterface, TuneInterfaceParasite -from Generation.Generator import generator1, GenerationParameters +from common.Generation.Generator import generator1, GenerationParameters Tooltips = Config.Tooltips() KEY_MAP_PIANO = Config.KEY_MAP_PIANO @@ -45,9 +44,10 @@ KEY_MAP_PIANO = Config.KEY_MAP_PIANO #----------------------------------- # The main TamTam window #----------------------------------- -class MainWindow( SubActivity ): +class MainWindow( gtk.EventBox ): - def __init__( self, activity, set_mode ): + def __init__( self, activity ): + gtk.EventBox.__init__(self) self.csnd = new_csound_client() self.tooltips = gtk.Tooltips() self.activity = activity @@ -354,7 +354,7 @@ class MainWindow( SubActivity ): #=================================================== # begin initialization - SubActivity.__init__( self, set_mode ) + #SubActivity.__init__( self, set_mode ) # keyboard variables self.kb_record = False @@ -514,7 +514,7 @@ class MainWindow( SubActivity ): return [density, rytReg, step, pitReg, dur, silence, pattern, scale] def onActivate( self, arg ): - SubActivity.onActivate( self,arg ) + #SubActivity.onActivate( self,arg ) # whatever needs to be done on initialization self.csnd.loopPause() self.csnd.loopClear() @@ -523,7 +523,7 @@ class MainWindow( SubActivity ): def onDeactivate( self ): - SubActivity.onDeactivate( self ) + #SubActivity.onDeactivate( self ) # clean up things like popups etc self.releaseInstrumentPanel() self.csnd.loopPause() diff --git a/TamTamEdit.activity/Edit/NoteInterface.py b/TamTamEdit.activity/Edit/NoteInterface.py index a5035dd..9dc4247 100644 --- a/TamTamEdit.activity/Edit/NoteInterface.py +++ b/TamTamEdit.activity/Edit/NoteInterface.py @@ -2,10 +2,10 @@ import pygtk pygtk.require( '2.0' ) import gtk -import Config +import common.Config as Config -from Util.NoteDB import PARAMETER -from Util.CSoundClient import new_csound_client +from common.Util.NoteDB import PARAMETER +from common.Util.CSoundClient import new_csound_client class NoteInterface: diff --git a/TamTamEdit.activity/Edit/Properties.py b/TamTamEdit.activity/Edit/Properties.py index b0caae0..e72b22c 100644 --- a/TamTamEdit.activity/Edit/Properties.py +++ b/TamTamEdit.activity/Edit/Properties.py @@ -4,11 +4,11 @@ import gtk from types import * from math import sqrt from random import * -from Generation.Drunk import * -from Generation.GenerationConstants import GenerationConstants -from Util.ThemeWidgets import * -from Util.NoteDB import PARAMETER -import Config +from common.Generation.Drunk import * +from common.Generation.GenerationConstants import GenerationConstants +from common.Util.ThemeWidgets import * +from common.Util.NoteDB import PARAMETER +import common.Config as Config Tooltips = Config.Tooltips() class Properties( gtk.VBox ): diff --git a/TamTamEdit.activity/Edit/TrackInterface.py b/TamTamEdit.activity/Edit/TrackInterface.py index b8a3a27..5b63576 100644 --- a/TamTamEdit.activity/Edit/TrackInterface.py +++ b/TamTamEdit.activity/Edit/TrackInterface.py @@ -7,15 +7,15 @@ import gobject from math import floor import time -import Config +import common.Config as Config from Edit.NoteInterface import NoteInterface from Edit.HitInterface import HitInterface from Edit.MainWindow import CONTEXT -from Util.NoteDB import PARAMETER -from Util.CSoundNote import CSoundNote -from Generation.GenerationConstants import GenerationConstants -from Util.Profiler import TP +from common.Util.NoteDB import PARAMETER +from common.Util.CSoundNote import CSoundNote +from common.Generation.GenerationConstants import GenerationConstants +from common.Util.Profiler import TP class SELECTNOTES: ALL = -1 diff --git a/TamTamEdit.activity/Edit/TuneInterface.py b/TamTamEdit.activity/Edit/TuneInterface.py index 3682a57..d29597b 100644 --- a/TamTamEdit.activity/Edit/TuneInterface.py +++ b/TamTamEdit.activity/Edit/TuneInterface.py @@ -2,12 +2,12 @@ import pygtk pygtk.require( '2.0' ) import gtk -import Config +import common.Config as Config -from Util.Profiler import TP +from common.Util.Profiler import TP from Edit.MainWindow import CONTEXT -from Util.NoteDB import PARAMETER +from common.Util.NoteDB import PARAMETER class TuneInterfaceParasite: diff --git a/TamTamEdit.activity/MANIFEST b/TamTamEdit.activity/MANIFEST new file mode 100644 index 0000000..2d94334 --- /dev/null +++ b/TamTamEdit.activity/MANIFEST @@ -0,0 +1,542 @@ +MANIFEST +NEWS +setup.py +TamTamEdit.py +activity/activity-tamtamedit.svg +activity/activity.info +icons/XYBut.svg +icons/XYButDown.svg +icons/XYButDownClick.svg +icons/accept.svg +icons/add.svg +icons/arrow-down.svg +icons/arrow-up.svg +icons/cancel.svg +icons/dice.svg +icons/diceB.svg +icons/duplicate.svg +icons/edit-brush.svg +icons/edit-pencil.svg +icons/edit-pointer.svg +icons/grid.svg +icons/notedur.svg +icons/props.svg +icons/recordK.svg +icons/recordO.svg +icons/sideR.svg +icons/sideW.svg +icons/tam-help.svg +icons/tempo1.svg +icons/tempo2.svg +icons/tempo3.svg +icons/tempo4.svg +icons/tempo5.svg +icons/tempo6.svg +icons/tempo7.svg +icons/tempo8.svg +icons/updownR.svg +icons/updownW.svg +icons/voltemp.svg +icons/volume0.svg +icons/volume1.svg +icons/volume2.svg +icons/volume3.svg +Edit/EditToolbars.py +Edit/HitInterface.py +Edit/KeyboardInput.py +Edit/MainWindow.py +Edit/NoteInterface.py +Edit/Properties.py +Edit/TrackInterface.py +Edit/TuneInterface.py +Edit/__init__.py +common/Util/Block.py +common/__init__.py +common/Config.py +common/Util/CSoundClient.py +common/Util/CSoundNote.py +common/Util/ControlStream.py +common/Util/Credits.py +common/Util/InstrumentDB.py +common/Util/InstrumentPanel.py +common/Util/Instrument_.py +common/Util/KeyboardWindow.py +common/Util/LoopSettings.py +common/Util/Network.py +common/Util/NoteDB.py +common/Util/NoteLooper.py +common/Util/Profiler.py +common/Util/Sound.py +common/Util/ThemeWidgets.py +common/Util/Trackpad.py +common/Util/__init__.py +common/Util/Clooper/Makefile +common/Util/Clooper/SoundClient.i +common/Util/Clooper/__init__.py +common/Util/Clooper/aclient.cpp +common/Util/Clooper/aclient.so +common/Util/Clooper/audio.cpp +common/Util/Clooper/cmd_csound.cpp +common/Util/Clooper/log.cpp +common/Util/Clooper/ttest.c +common/Util/Clooper/ttest.h +common/Util/Clooper/ttest.i +common/Util/Clooper/ttest.py +common/Util/Clooper/ttest_wrap.c +common/Generation/Drunk.py +common/Generation/GenerationConstants.py +common/Generation/GenerationParametersWindow.py +common/Generation/GenerationPitch.py +common/Generation/GenerationRythm.py +common/Generation/Generator.py +common/Generation/Utils.py +common/Generation/VariationPitch.py +common/Generation/VariationRythm.py +common/Generation/__init__.py +common/Generation/bList.py +common/Resources/__init__.py +common/Resources/crop.csd +common/Resources/tamtamorc.csd +common/Resources/tooltips_en.py +common/Resources/tooltips_fr.py +common/Resources/Desktops/desktop0 +common/Resources/Desktops/desktop1 +common/Resources/Desktops/desktop2 +common/Resources/Desktops/desktop3 +common/Resources/Desktops/desktop4 +common/Resources/Desktops/desktop5 +common/Resources/Desktops/desktop6 +common/Resources/Desktops/desktop7 +common/Resources/Desktops/desktop8 +common/Resources/Desktops/desktop9 +common/Resources/Images/TamTam.png +common/Resources/Images/acguit.png +common/Resources/Images/acguitsel.png +common/Resources/Images/alarm.png +common/Resources/Images/alarmsel.png +common/Resources/Images/all.png +common/Resources/Images/allsel.png +common/Resources/Images/animals.png +common/Resources/Images/animalssel.png +common/Resources/Images/arrowEditDown.png +common/Resources/Images/arrowEditDownDown.png +common/Resources/Images/arrowEditDownOver.png +common/Resources/Images/arrowEditLeft.png +common/Resources/Images/arrowEditLeftDown.png +common/Resources/Images/arrowEditLeftOver.png +common/Resources/Images/arrowEditRight.png +common/Resources/Images/arrowEditRightDown.png +common/Resources/Images/arrowEditRightOver.png +common/Resources/Images/arrowEditUp.png +common/Resources/Images/arrowEditUpDown.png +common/Resources/Images/arrowEditUpOver.png +common/Resources/Images/basse.png +common/Resources/Images/bassesel.png +common/Resources/Images/beat1.png +common/Resources/Images/beat10.png +common/Resources/Images/beat11.png +common/Resources/Images/beat2.png +common/Resources/Images/beat3.png +common/Resources/Images/beat4.png +common/Resources/Images/beat5.png +common/Resources/Images/beat6.png +common/Resources/Images/beat7.png +common/Resources/Images/beat8.png +common/Resources/Images/beat9.png +common/Resources/Images/bird.png +common/Resources/Images/birdsel.png +common/Resources/Images/bottle.png +common/Resources/Images/bottlesel.png +common/Resources/Images/bubbles.png +common/Resources/Images/bubblessel.png +common/Resources/Images/byke.png +common/Resources/Images/bykesel.png +common/Resources/Images/camera.png +common/Resources/Images/camerasel.png +common/Resources/Images/car.png +common/Resources/Images/carsel.png +common/Resources/Images/cat.png +common/Resources/Images/catsel.png +common/Resources/Images/cello.png +common/Resources/Images/cellosel.png +common/Resources/Images/check.png +common/Resources/Images/checkOff.svg +common/Resources/Images/checkOn.svg +common/Resources/Images/chimes.png +common/Resources/Images/chimessel.png +common/Resources/Images/clang.png +common/Resources/Images/clangsel.png +common/Resources/Images/clarinette.png +common/Resources/Images/clarinettesel.png +common/Resources/Images/cling.png +common/Resources/Images/clingsel.png +common/Resources/Images/complex1.png +common/Resources/Images/complex2.png +common/Resources/Images/complex3.png +common/Resources/Images/complex4.png +common/Resources/Images/complex5.png +common/Resources/Images/complex6.png +common/Resources/Images/complex7.png +common/Resources/Images/complex8.png +common/Resources/Images/concret.png +common/Resources/Images/concretsel.png +common/Resources/Images/crash.png +common/Resources/Images/crashsel.png +common/Resources/Images/dice.png +common/Resources/Images/diceProp.png +common/Resources/Images/dicePropSel.png +common/Resources/Images/diceblur.png +common/Resources/Images/diceinst.png +common/Resources/Images/diceinstsel.png +common/Resources/Images/didjeridu.png +common/Resources/Images/didjeridusel.png +common/Resources/Images/dog.png +common/Resources/Images/dogsel.png +common/Resources/Images/door.png +common/Resources/Images/doorsel.png +common/Resources/Images/dru0.png +common/Resources/Images/dru1.png +common/Resources/Images/dru2.png +common/Resources/Images/dru3.png +common/Resources/Images/dru4.png +common/Resources/Images/drum1kit.png +common/Resources/Images/drum1kitsel.png +common/Resources/Images/drum1kitselgen.png +common/Resources/Images/drum2kit.png +common/Resources/Images/drum2kitsel.png +common/Resources/Images/drum2kitselgen.png +common/Resources/Images/drum3kit.png +common/Resources/Images/drum3kitsel.png +common/Resources/Images/drum3kitselgen.png +common/Resources/Images/drum4kit.png +common/Resources/Images/drum4kitsel.png +common/Resources/Images/drum4kitselgen.png +common/Resources/Images/drum5kit.png +common/Resources/Images/drum5kitsel.png +common/Resources/Images/drum5kitselgen.png +common/Resources/Images/duck.png +common/Resources/Images/duck2.png +common/Resources/Images/duck2sel.png +common/Resources/Images/ducksel.png +common/Resources/Images/editTam.png +common/Resources/Images/editTamDown.png +common/Resources/Images/editTamOver.png +common/Resources/Images/electronic.png +common/Resources/Images/electronicsel.png +common/Resources/Images/flute.png +common/Resources/Images/flutesel.png +common/Resources/Images/gam.png +common/Resources/Images/gamsel.png +common/Resources/Images/generic.png +common/Resources/Images/genericsel.png +common/Resources/Images/guit.png +common/Resources/Images/guit2.png +common/Resources/Images/guit2sel.png +common/Resources/Images/guitsel.png +common/Resources/Images/harmonica.png +common/Resources/Images/harmonicasel.png +common/Resources/Images/harmonium.png +common/Resources/Images/harmoniumsel.png +common/Resources/Images/helpShow1.jpg +common/Resources/Images/helpShow2.jpg +common/Resources/Images/helpShow3.jpg +common/Resources/Images/helpShow4.jpg +common/Resources/Images/helpShow5.jpg +common/Resources/Images/helpShow6.jpg +common/Resources/Images/helpShow7.jpg +common/Resources/Images/helpShow8.jpg +common/Resources/Images/helpShow9.jpg +common/Resources/Images/helpTam.png +common/Resources/Images/helpTamDown.png +common/Resources/Images/helpTamOver.png +common/Resources/Images/hit.png +common/Resources/Images/hitSelected.png +common/Resources/Images/horse.png +common/Resources/Images/horsesel.png +common/Resources/Images/instr0.png +common/Resources/Images/instr1.png +common/Resources/Images/instr2.png +common/Resources/Images/instr3.png +common/Resources/Images/instr4.png +common/Resources/Images/jam-blockMask.png +common/Resources/Images/kalimba.png +common/Resources/Images/kalimbasel.png +common/Resources/Images/keyboard.png +common/Resources/Images/keyboardsel.png +common/Resources/Images/koto.png +common/Resources/Images/kotosel.png +common/Resources/Images/laugh.png +common/Resources/Images/laughsel.png +common/Resources/Images/mando.png +common/Resources/Images/mandosel.png +common/Resources/Images/marimba.png +common/Resources/Images/marimbasel.png +common/Resources/Images/marquis.png +common/Resources/Images/mic1.png +common/Resources/Images/mic1sel.png +common/Resources/Images/mic2.png +common/Resources/Images/mic2sel.png +common/Resources/Images/mic3.png +common/Resources/Images/mic3sel.png +common/Resources/Images/mic4.png +common/Resources/Images/mic4sel.png +common/Resources/Images/miniTam.png +common/Resources/Images/miniTamDown.png +common/Resources/Images/miniTamOver.png +common/Resources/Images/miniplay.png +common/Resources/Images/mysounds.png +common/Resources/Images/mysoundssel.png +common/Resources/Images/note.png +common/Resources/Images/noteSelected.png +common/Resources/Images/ocarina.png +common/Resources/Images/ocarinasel.png +common/Resources/Images/ounk.png +common/Resources/Images/ounksel.png +common/Resources/Images/ow.png +common/Resources/Images/owsel.png +common/Resources/Images/pageThumbnailBG.png +common/Resources/Images/pageThumbnailBG0.png +common/Resources/Images/pageThumbnailBG1.png +common/Resources/Images/pageThumbnailBG2.png +common/Resources/Images/pageThumbnailBG3.png +common/Resources/Images/pageThumbnailBut0.png +common/Resources/Images/pageThumbnailBut0Down.png +common/Resources/Images/pageThumbnailBut1.png +common/Resources/Images/pageThumbnailBut1Down.png +common/Resources/Images/pageThumbnailBut2.png +common/Resources/Images/pageThumbnailBut2Down.png +common/Resources/Images/pageThumbnailBut3.png +common/Resources/Images/pageThumbnailBut3Down.png +common/Resources/Images/pageThumbnailMask.png +common/Resources/Images/people.png +common/Resources/Images/peoplesel.png +common/Resources/Images/percussions.png +common/Resources/Images/percussionssel.png +common/Resources/Images/piano.png +common/Resources/Images/pianosel.png +common/Resources/Images/plane.png +common/Resources/Images/planesel.png +common/Resources/Images/reverb0.png +common/Resources/Images/reverb1.png +common/Resources/Images/reverb2.png +common/Resources/Images/reverb3.png +common/Resources/Images/reverb4.png +common/Resources/Images/reverb5.png +common/Resources/Images/rhodes.png +common/Resources/Images/rhodessel.png +common/Resources/Images/sampleBG.png +common/Resources/Images/sampleNoteMask.png +common/Resources/Images/saxo.png +common/Resources/Images/saxosel.png +common/Resources/Images/scrollBar.png +common/Resources/Images/sheep.png +common/Resources/Images/sheepsel.png +common/Resources/Images/shenai.png +common/Resources/Images/shenaisel.png +common/Resources/Images/sitar.png +common/Resources/Images/sitarsel.png +common/Resources/Images/slap.png +common/Resources/Images/slapsel.png +common/Resources/Images/sliderDrum.png +common/Resources/Images/sliderEditTempo.png +common/Resources/Images/sliderEditVolume.png +common/Resources/Images/sliderInst1.png +common/Resources/Images/sliderInst2.png +common/Resources/Images/sliderInst3.png +common/Resources/Images/sliderInst4.png +common/Resources/Images/sliderbutbleu.png +common/Resources/Images/sliderbutjaune.png +common/Resources/Images/sliderbutred.png +common/Resources/Images/sliderbutvert.png +common/Resources/Images/sliderbutviolet.png +common/Resources/Images/sliderlong.png +common/Resources/Images/slidershort.png +common/Resources/Images/stop.png +common/Resources/Images/strings.png +common/Resources/Images/stringssel.png +common/Resources/Images/synthTam.png +common/Resources/Images/synthTamDown.png +common/Resources/Images/synthTamOver.png +common/Resources/Images/synthlabMask.png +common/Resources/Images/tchiwo.png +common/Resources/Images/tchiwosel.png +common/Resources/Images/tempo1.png +common/Resources/Images/tempo2.png +common/Resources/Images/tempo3.png +common/Resources/Images/tempo4.png +common/Resources/Images/tempo5.png +common/Resources/Images/tempo6.png +common/Resources/Images/tempo7.png +common/Resources/Images/tempo8.png +common/Resources/Images/trackBG.png +common/Resources/Images/trackBGDrum.png +common/Resources/Images/trackBGDrumSelected.png +common/Resources/Images/trackBGSelected.png +common/Resources/Images/triangle.png +common/Resources/Images/trianglesel.png +common/Resources/Images/trumpet.png +common/Resources/Images/trumpetsel.png +common/Resources/Images/tuba.png +common/Resources/Images/tubasel.png +common/Resources/Images/violin.png +common/Resources/Images/violinsel.png +common/Resources/Images/voix.png +common/Resources/Images/voixsel.png +common/Resources/Images/volume0.png +common/Resources/Images/volume1.png +common/Resources/Images/volume2.png +common/Resources/Images/volume3.png +common/Resources/Images/water.png +common/Resources/Images/watersel.png +common/Resources/Images/winds.png +common/Resources/Images/windssel.png +common/Resources/Images/zap.png +common/Resources/Images/zapsel.png +common/Resources/Loops/loop1.ttl +common/Resources/Loops/loop2.ttl +common/Resources/Loops/loop3.ttl +common/Resources/Sounds/acguit +common/Resources/Sounds/alarm +common/Resources/Sounds/banjo +common/Resources/Sounds/basse +common/Resources/Sounds/bird +common/Resources/Sounds/bottle +common/Resources/Sounds/bubbles +common/Resources/Sounds/byke +common/Resources/Sounds/camera +common/Resources/Sounds/car +common/Resources/Sounds/cat +common/Resources/Sounds/cello +common/Resources/Sounds/chimes +common/Resources/Sounds/clang +common/Resources/Sounds/clarinette +common/Resources/Sounds/cling +common/Resources/Sounds/crash +common/Resources/Sounds/diceinst +common/Resources/Sounds/didjeridu +common/Resources/Sounds/dog +common/Resources/Sounds/door +common/Resources/Sounds/drum1chine +common/Resources/Sounds/drum1crash +common/Resources/Sounds/drum1floortom +common/Resources/Sounds/drum1hardride +common/Resources/Sounds/drum1hatpedal +common/Resources/Sounds/drum1hatshoulder +common/Resources/Sounds/drum1kick +common/Resources/Sounds/drum1ridebell +common/Resources/Sounds/drum1snare +common/Resources/Sounds/drum1snaresidestick +common/Resources/Sounds/drum1splash +common/Resources/Sounds/drum1tom +common/Resources/Sounds/drum2darbukadoom +common/Resources/Sounds/drum2darbukafinger +common/Resources/Sounds/drum2darbukapied +common/Resources/Sounds/drum2darbukapiedsoft +common/Resources/Sounds/drum2darbukaroll +common/Resources/Sounds/drum2darbukaslap +common/Resources/Sounds/drum2darbukatak +common/Resources/Sounds/drum2hatflanger +common/Resources/Sounds/drum2hatpied +common/Resources/Sounds/drum2hatpied2 +common/Resources/Sounds/drum2tambourinepied +common/Resources/Sounds/drum2tambourinepiedsoft +common/Resources/Sounds/drum3cowbell +common/Resources/Sounds/drum3cowbelltip +common/Resources/Sounds/drum3cup +common/Resources/Sounds/drum3djembelow +common/Resources/Sounds/drum3djembemid +common/Resources/Sounds/drum3djembesidestick +common/Resources/Sounds/drum3djembeslap +common/Resources/Sounds/drum3djembestickmid +common/Resources/Sounds/drum3metalstand +common/Resources/Sounds/drum3pedalperc +common/Resources/Sounds/drum3rainstick +common/Resources/Sounds/drum3tambourinehigh +common/Resources/Sounds/drum3tambourinelow +common/Resources/Sounds/drum4afrofeet +common/Resources/Sounds/drum4fingersn +common/Resources/Sounds/drum4mutecuic +common/Resources/Sounds/drum4stompbass +common/Resources/Sounds/drum4tambouri +common/Resources/Sounds/drum4tr707clap +common/Resources/Sounds/drum4tr707open +common/Resources/Sounds/drum4tr808closed +common/Resources/Sounds/drum4tr808sn +common/Resources/Sounds/drum4tr909bass +common/Resources/Sounds/drum4tr909kick +common/Resources/Sounds/drum4tr909sn +common/Resources/Sounds/drum5agogoaigu +common/Resources/Sounds/drum5agogograve +common/Resources/Sounds/drum5bongoaiguouvert +common/Resources/Sounds/drum5bongograveouvert +common/Resources/Sounds/drum5congaaiguouvert +common/Resources/Sounds/drum5congagraveferme +common/Resources/Sounds/drum5congagraveouvert +common/Resources/Sounds/drum5guiroretour +common/Resources/Sounds/drum5quicaaigu +common/Resources/Sounds/drum5quicamedium +common/Resources/Sounds/drum5timablesaiguslap +common/Resources/Sounds/drum5timablesslap +common/Resources/Sounds/drum5vibraslap +common/Resources/Sounds/duck +common/Resources/Sounds/duck2 +common/Resources/Sounds/flute +common/Resources/Sounds/gam +common/Resources/Sounds/guidice1 +common/Resources/Sounds/guidice10 +common/Resources/Sounds/guidice2 +common/Resources/Sounds/guidice3 +common/Resources/Sounds/guidice4 +common/Resources/Sounds/guidice5 +common/Resources/Sounds/guidice6 +common/Resources/Sounds/guidice7 +common/Resources/Sounds/guidice8 +common/Resources/Sounds/guidice9 +common/Resources/Sounds/guit +common/Resources/Sounds/guit2 +common/Resources/Sounds/harmonica +common/Resources/Sounds/harmonium +common/Resources/Sounds/horse +common/Resources/Sounds/kalimba +common/Resources/Sounds/koto +common/Resources/Sounds/lab1 +common/Resources/Sounds/lab2 +common/Resources/Sounds/lab3 +common/Resources/Sounds/lab4 +common/Resources/Sounds/lab5 +common/Resources/Sounds/lab6 +common/Resources/Sounds/laugh +common/Resources/Sounds/mando +common/Resources/Sounds/marimba +common/Resources/Sounds/mic1 +common/Resources/Sounds/mic2 +common/Resources/Sounds/mic3 +common/Resources/Sounds/mic4 +common/Resources/Sounds/ocarina +common/Resources/Sounds/ounk +common/Resources/Sounds/ow +common/Resources/Sounds/piano +common/Resources/Sounds/plane +common/Resources/Sounds/rhodes +common/Resources/Sounds/saxo +common/Resources/Sounds/sheep +common/Resources/Sounds/shenai +common/Resources/Sounds/sitar +common/Resources/Sounds/slap +common/Resources/Sounds/triangle +common/Resources/Sounds/trumpet +common/Resources/Sounds/tuba +common/Resources/Sounds/violin +common/Resources/Sounds/voix +common/Resources/Sounds/water +common/Resources/Sounds/zap +common/Resources/SynthFiles/synthFile1 +common/Resources/SynthFiles/synthFile2 +common/Resources/SynthFiles/synthFile3 +common/Resources/SynthFiles/synthFile4 +common/Resources/SynthFiles/synthFile5 +common/Resources/SynthFiles/synthFile6 +common/Resources/SynthFiles/synthFile7 +common/Resources/SynthFiles/synthFile8 +common/Resources/SynthFiles/synthFile9 +common/Resources/SynthFiles/synthFile10
\ No newline at end of file diff --git a/TamTamEdit.activity/TamTam.py b/TamTamEdit.activity/TamTam.py deleted file mode 100644 index e282df9..0000000 --- a/TamTamEdit.activity/TamTam.py +++ /dev/null @@ -1,1229 +0,0 @@ -import locale -locale.setlocale(locale.LC_NUMERIC, 'C') -import signal , time , sys , os, shutil -import pygtk -pygtk.require( '2.0' ) -import gtk - -import gobject -import time - -import Config -from Util.CSoundClient import new_csound_client -from Util.Profiler import TP - -from Util.InstrumentPanel import InstrumentPanel -from miniTamTam.miniTamTamMain import miniTamTamMain -from Jam.JamMain import JamMain -from Edit.MainWindow import MainWindow -from Welcome import Welcome -from SynthLab.SynthLabWindow import SynthLabWindow -from Util.Trackpad import Trackpad -from gettext import gettext as _ -#from Util.KeyboardWindow import KeyboardWindow -import commands - -if __name__ != '__main__': - try: - from sugar.activity.activity import Activity - from sugar.activity import activity - FAKE_ACTIVITY = False - if Config.DEBUG: print 'using sugar Activity' - except ImportError: - from FActivity import FakeActivity as Activity - FAKE_ACTIVITY = True - if Config.DEBUG: print 'using fake activity' -else: - from FActivity import FakeActivity as Activity - if Config.DEBUG: print 'using fake activity' - - -class TamTam(Activity): - # TamTam is the topmost container in the TamTam application - # At all times it has one child, which may be one of - # - the welcome screen - # - the mini-tamtam - # - the synth lab - # - edit mode - - def __init__(self, handle, mode='welcome'): - Activity.__init__(self, handle) - self.ensure_dirs() - - color = gtk.gdk.color_parse(Config.WS_BCK_COLOR) - self.modify_bg(gtk.STATE_NORMAL, color) - - self.set_title('TamTam') - self.set_resizable(False) - - self.trackpad = Trackpad( self ) - #self.keyboardWindow = KeyboardWindow(size = 8, popup = True) - #self.keyboardWindow.color_piano() - - self.preloadTimeout = None - - self.focusInHandler = self.connect('focus_in_event',self.onFocusIn) - self.focusOutHandler = self.connect('focus_out_event',self.onFocusOut) - self.connect('notify::active', self.onActive) - self.connect('destroy', self.onDestroy) - self.connect( "key-press-event", self.onKeyPress ) - self.connect( "key-release-event", self.onKeyRelease ) - #self.connect( "key-press-event", self.keyboardWindow.handle_keypress) - #self.connect( "key-release-event", self.keyboardWindow.handle_keyrelease) - #self.connect( "button-press-event", self.keyboardWindow.handle_mousePress) - #self.connect( "button-release-event", self.keyboardWindow.handle_mouseRelease) - - self.mode = None - self.modeList = {} - - self.instrumentPanel = InstrumentPanel( force_load = False ) - self.preloadList = [ self.instrumentPanel ] - - #load the sugar toolbar - self.toolbox = activity.ActivityToolbox(self) - self.set_toolbox(self.toolbox) - - self.activity_toolbar = self.toolbox.get_activity_toolbar() - self.activity_toolbar.share.hide() - self.activity_toolbar.keep.hide() - - self.toolbox.show() - - if self._shared_activity: # if we're joining a shared activity force mini - self.set_mode("mini") - else: - self.set_mode(mode) - - def onPreloadTimeout( self ): - if Config.DEBUG > 4: print "TamTam::onPreloadTimeout", self.preloadList - - t = time.time() - if self.preloadList[0].load( t + 0.100 ): # finished preloading this object - self.preloadList.pop(0) - if not len(self.preloadList): - if Config.DEBUG > 1: print "TamTam::finished preloading", time.time() - t - self.preloadTimeout = False - return False # finished preloading everything - - if Config.DEBUG > 4: print "TamTam::preload returned after", time.time() - t - - return True - - 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 - - if self.mode != None: - self.modeList[ self.mode ].onDeactivate() - if FAKE_ACTIVITY: - self.remove( self.modeList[ self.mode ] ) - - self.mode = None - self.trackpad.setContext(mode) - - if mode == 'welcome': - if not (mode in self.modeList): - self.modeList[mode] = Welcome(self, self.set_mode) - self.mode = mode - #if len( self.preloadList ): - # self.preloadTimeout = gobject.timeout_add( 300, self.onPreloadTimeout ) - elif self.preloadTimeout: - gobject.source_remove( self.preloadTimeout ) - self.predrawTimeout = False - - if mode == 'jam': - if not (mode in self.modeList): - self.metadata['title'] = 'TamTam Jam' - self.modeList[mode] = JamMain(self, self.set_mode) - self.mode = mode - - if mode == 'mini': - if not (mode in self.modeList): - self.metadata['title'] = 'TamTam Mini' - self.modeList[mode] = miniTamTamMain(self, self.set_mode) - else: - self.modeList[mode].regenerate() - if self.instrumentPanel in self.preloadList: - self.instrumentPanel.load() # finish loading - self.modeList[mode].setInstrumentPanel( self.instrumentPanel ) - self.mode = mode - - if mode == 'edit': - if not (mode in self.modeList): - self.metadata['title'] = 'TamTam Edit' - 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 ) - self.mode = mode - - if mode == 'synth': - if not (mode in self.modeList): - self.metadata['title'] = 'TamTam SynthLab' - self.modeList[mode] = SynthLabWindow(self, self.set_mode, None) - self.mode = mode - - if self.mode == None: - print 'DEBUG: TamTam::set_mode invalid mode:', mode - else: - try: # activity mode - self.set_canvas( self.modeList[ self.mode ] ) - except: # fake mode - self.add( self.modeList[ self.mode ] ) - self.modeList[ self.mode ].onActivate(arg) - self.show() - - def onFocusIn(self, event, data=None): - if Config.DEBUG > 3: print 'DEBUG: TamTam::onFocusOut in TamTam.py' - csnd = new_csound_client() - csnd.connect(True) - if self.mode == 'synth': - self.modeList[ self.mode ].updateSound() - self.modeList[ self.mode ].updateTables() - #csnd.load_instruments() - - def onFocusOut(self, event, data=None): - if Config.DEBUG > 3: print 'DEBUG: TamTam::onFocusOut in TamTam.py' - csnd = new_csound_client() - csnd.connect(False) - - def onActive(self, widget = None, event = None): - pass - - def onKeyPress(self, widget, event): - if Config.DEBUG > 5: print 'DEBUG: TamTam::onKeyPress in TamTam.py' - #print "-----", event.keyval, event.string, event.hardware_keycode - if event.state == gtk.gdk.MOD1_MASK: - key = event.keyval - if key == gtk.keysyms.j: - self.set_mode("jam") - return - elif key == gtk.keysyms.m: - self.set_mode('mini') - return - elif key == gtk.keysyms.s: - self.set_mode('synth') - return - elif key == gtk.keysyms.w: - self.set_mode('welcome') - return - elif key == gtk.keysyms.e: - self.set_mode('edit') - return - elif key == gtk.keysyms.t: - self.toolbox.show() - return - elif key == gtk.keysyms.y: - self.toolbox.hide() - if self.mode: - self.modeList[ self.mode ].onKeyPress(widget, event) - - def onKeyRelease(self, widget, event): - if Config.DEBUG > 5: print 'DEBUG: TamTam::onKeyRelease in TamTam.py' - self.modeList[ self.mode ].onKeyRelease(widget, event) - pass - - def onDestroy(self, arg2): - if Config.DEBUG: print 'DEBUG: TamTam::onDestroy()' - os.system('rm -f ' + Config.PREF_DIR + '/synthTemp*') - - for m in self.modeList: - if self.modeList[m] != None: - self.modeList[m].onDestroy() - - csnd = new_csound_client() - csnd.connect(False) - csnd.destroy() - - gtk.main_quit() - - def ensure_dir(self, dir, perms=0777, rw=os.R_OK|os.W_OK): - if not os.path.isdir( dir ): - try: - os.makedirs(dir, perms) - except OSError, e: - print 'ERROR: failed to make dir %s: %i (%s)\n' % (dir, e.errno, e.strerror) - if not os.access(dir, rw): - print 'ERROR: directory %s is missing required r/w access\n' % dir - - def ensure_dirs(self): - self.ensure_dir(Config.TUNE_DIR) - self.ensure_dir(Config.SYNTH_DIR) - self.ensure_dir(Config.SNDS_DIR) - self.ensure_dir(Config.SCRATCH_DIR) - - if not os.path.isdir(Config.PREF_DIR): - os.mkdir(Config.PREF_DIR) - os.system('chmod 0777 ' + Config.PREF_DIR + ' &') - for snd in ['mic1','mic2','mic3','mic4','lab1','lab2','lab3','lab4', 'lab5', 'lab6']: - shutil.copyfile(Config.SOUNDS_DIR + '/' + snd , Config.SNDS_DIR + '/' + snd) - os.system('chmod 0777 ' + Config.SNDS_DIR + '/' + snd + ' &') - - def read_file(self,file_path): - subactivity_name = self.metadata['tamtam_subactivity'] - if subactivity_name == 'edit' \ - or subactivity_name == 'synth' \ - or subactivity_name == 'jam': - self.set_mode(subactivity_name) - self.modeList[subactivity_name].handleJournalLoad(file_path) - elif subactivity_name == 'mini': - self.set_mode(subactivity_name) - else: - return - - def write_file(self,file_path): - if self.mode == 'edit': - self.metadata['tamtam_subactivity'] = self.mode - self.modeList[self.mode].handleJournalSave(file_path) - elif self.mode == 'synth': - self.metadata['tamtam_subactivity'] = self.mode - self.modeList[self.mode].handleJournalSave(file_path) - elif self.mode == 'mini': - self.metadata['tamtam_subactivity'] = self.mode - f = open(file_path,'w') - f.close() - elif self.mode == 'jam': - self.metadata['tamtam_subactivity'] = self.mode - self.modeList[self.mode].handleJournalSave(file_path) - -class TamTamJam(Activity): - # TamTam is the topmost container in the TamTam application - # At all times it has one child, which may be one of - # - the welcome screen - # - the mini-tamtam - # - the synth lab - # - edit mode - - def __init__(self, handle, mode='welcome'): - Activity.__init__(self, handle) - self.ensure_dirs() - - color = gtk.gdk.color_parse(Config.WS_BCK_COLOR) - self.modify_bg(gtk.STATE_NORMAL, color) - - self.set_title('TamTam Jam') - self.set_resizable(False) - - self.trackpad = Trackpad( self ) - #self.keyboardWindow = KeyboardWindow(size = 8, popup = True) - #self.keyboardWindow.color_piano() - - self.preloadTimeout = None - - self.focusInHandler = self.connect('focus_in_event',self.onFocusIn) - self.focusOutHandler = self.connect('focus_out_event',self.onFocusOut) - self.connect('notify::active', self.onActive) - self.connect('destroy', self.onDestroy) - self.connect( "key-press-event", self.onKeyPress ) - self.connect( "key-release-event", self.onKeyRelease ) - #self.connect( "key-press-event", self.keyboardWindow.handle_keypress) - #self.connect( "key-release-event", self.keyboardWindow.handle_keyrelease) - #self.connect( "button-press-event", self.keyboardWindow.handle_mousePress) - #self.connect( "button-release-event", self.keyboardWindow.handle_mouseRelease) - - self.mode = None - self.modeList = {} - - self.instrumentPanel = InstrumentPanel( force_load = False ) - self.preloadList = [ self.instrumentPanel ] - - #load the sugar toolbar - self.toolbox = activity.ActivityToolbox(self) - self.set_toolbox(self.toolbox) - - self.activity_toolbar = self.toolbox.get_activity_toolbar() - self.activity_toolbar.share.hide() - self.activity_toolbar.keep.hide() - - self.toolbox.show() - - self.set_mode("jam") - - def onPreloadTimeout( self ): - if Config.DEBUG > 4: print "TamTam::onPreloadTimeout", self.preloadList - - t = time.time() - if self.preloadList[0].load( t + 0.100 ): # finished preloading this object - self.preloadList.pop(0) - if not len(self.preloadList): - if Config.DEBUG > 1: print "TamTam::finished preloading", time.time() - t - self.preloadTimeout = False - return False # finished preloading everything - - if Config.DEBUG > 4: print "TamTam::preload returned after", time.time() - t - - return True - - 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 - - if self.mode != None: - self.modeList[ self.mode ].onDeactivate() - if FAKE_ACTIVITY: - self.remove( self.modeList[ self.mode ] ) - - self.mode = None - self.trackpad.setContext(mode) - - if mode == 'welcome': - if not (mode in self.modeList): - self.modeList[mode] = Welcome(self, self.set_mode) - self.mode = mode - if len( self.preloadList ): - self.preloadTimeout = gobject.timeout_add( 300, self.onPreloadTimeout ) - elif self.preloadTimeout: - gobject.source_remove( self.preloadTimeout ) - self.predrawTimeout = False - - if mode == 'jam': - if not (mode in self.modeList): - self.metadata['title'] = 'TamTam Jam' - self.modeList[mode] = JamMain(self, self.set_mode) - self.mode = mode - - if mode == 'mini': - if not (mode in self.modeList): - self.metadata['title'] = 'TamTam Mini' - self.modeList[mode] = miniTamTamMain(self, self.set_mode) - else: - self.modeList[mode].regenerate() - if self.instrumentPanel in self.preloadList: - self.instrumentPanel.load() # finish loading - self.modeList[mode].setInstrumentPanel( self.instrumentPanel ) - self.mode = mode - - if mode == 'edit': - if not (mode in self.modeList): - self.metadata['title'] = 'TamTam Edit' - 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 ) - self.mode = mode - - if mode == 'synth': - if not (mode in self.modeList): - self.metadata['title'] = 'TamTam SynthLab' - self.modeList[mode] = SynthLabWindow(self, self.set_mode, None) - self.mode = mode - - if self.mode == None: - print 'DEBUG: TamTam::set_mode invalid mode:', mode - else: - try: # activity mode - self.set_canvas( self.modeList[ self.mode ] ) - except: # fake mode - self.add( self.modeList[ self.mode ] ) - self.modeList[ self.mode ].onActivate(arg) - self.show() - - def onFocusIn(self, event, data=None): - if Config.DEBUG > 3: print 'DEBUG: TamTam::onFocusOut in TamTam.py' - csnd = new_csound_client() - csnd.connect(True) - if self.mode == 'synth': - self.modeList[ self.mode ].updateSound() - self.modeList[ self.mode ].updateTables() - #csnd.load_instruments() - - def onFocusOut(self, event, data=None): - if Config.DEBUG > 3: print 'DEBUG: TamTam::onFocusOut in TamTam.py' - csnd = new_csound_client() - csnd.connect(False) - - def onActive(self, widget = None, event = None): - pass - - def onKeyPress(self, widget, event): - if Config.DEBUG > 5: print 'DEBUG: TamTam::onKeyPress in TamTam.py' - if event.state == gtk.gdk.MOD1_MASK: - key = event.keyval - if key == gtk.keysyms.j: - self.set_mode("jam") - return - elif key == gtk.keysyms.m: - self.set_mode('mini') - return - elif key == gtk.keysyms.s: - self.set_mode('synth') - return - elif key == gtk.keysyms.w: - self.set_mode('welcome') - return - elif key == gtk.keysyms.e: - self.set_mode('edit') - return - elif key == gtk.keysyms.t: - self.toolbox.show() - return - elif key == gtk.keysyms.y: - self.toolbox.hide() - if self.mode: - self.modeList[ self.mode ].onKeyPress(widget, event) - - def onKeyRelease(self, widget, event): - if Config.DEBUG > 5: print 'DEBUG: TamTam::onKeyRelease in TamTam.py' - self.modeList[ self.mode ].onKeyRelease(widget, event) - pass - - def onDestroy(self, arg2): - if Config.DEBUG: print 'DEBUG: TamTam::onDestroy()' - os.system('rm -f ' + Config.PREF_DIR + '/synthTemp*') - - for m in self.modeList: - if self.modeList[m] != None: - self.modeList[m].onDestroy() - - csnd = new_csound_client() - csnd.connect(False) - csnd.destroy() - - gtk.main_quit() - - def ensure_dir(self, dir, perms=0777, rw=os.R_OK|os.W_OK): - if not os.path.isdir( dir ): - try: - os.makedirs(dir, perms) - except OSError, e: - print 'ERROR: failed to make dir %s: %i (%s)\n' % (dir, e.errno, e.strerror) - if not os.access(dir, rw): - print 'ERROR: directory %s is missing required r/w access\n' % dir - - def ensure_dirs(self): - self.ensure_dir(Config.TUNE_DIR) - self.ensure_dir(Config.SYNTH_DIR) - self.ensure_dir(Config.SNDS_DIR) - self.ensure_dir(Config.SCRATCH_DIR) - - if not os.path.isdir(Config.PREF_DIR): - os.mkdir(Config.PREF_DIR) - os.system('chmod 0777 ' + Config.PREF_DIR + ' &') - for snd in ['mic1','mic2','mic3','mic4','lab1','lab2','lab3','lab4', 'lab5', 'lab6']: - shutil.copyfile(Config.SOUNDS_DIR + '/' + snd , Config.SNDS_DIR + '/' + snd) - os.system('chmod 0777 ' + Config.SNDS_DIR + '/' + snd + ' &') - - def read_file(self,file_path): - self.modeList['jam'].handleJournalLoad(file_path) - - def write_file(self,file_path): - self.modeList['jam'].handleJournalSave(file_path) - -class TamTamEdit(Activity): - # TamTam is the topmost container in the TamTam application - # At all times it has one child, which may be one of - # - the welcome screen - # - the mini-tamtam - # - the synth lab - # - edit mode - - def __init__(self, handle, mode='edit'): - Activity.__init__(self, handle) - self.ensure_dirs() - - color = gtk.gdk.color_parse(Config.WS_BCK_COLOR) - self.modify_bg(gtk.STATE_NORMAL, color) - - self.set_title('TamTam Edit') - self.set_resizable(False) - - self.trackpad = Trackpad( self ) - #self.keyboardWindow = KeyboardWindow(size = 8, popup = True) - #self.keyboardWindow.color_piano() - - self.preloadTimeout = None - - self.focusInHandler = self.connect('focus_in_event',self.onFocusIn) - self.focusOutHandler = self.connect('focus_out_event',self.onFocusOut) - self.connect('notify::active', self.onActive) - self.connect('destroy', self.onDestroy) - self.connect( "key-press-event", self.onKeyPress ) - self.connect( "key-release-event", self.onKeyRelease ) - #self.connect( "key-press-event", self.keyboardWindow.handle_keypress) - #self.connect( "key-release-event", self.keyboardWindow.handle_keyrelease) - #self.connect( "button-press-event", self.keyboardWindow.handle_mousePress) - #self.connect( "button-release-event", self.keyboardWindow.handle_mouseRelease) - - self.mode = None - self.modeList = {} - - self.instrumentPanel = InstrumentPanel( force_load = False ) - self.preloadList = [ self.instrumentPanel ] - - #load the sugar toolbar - self.toolbox = activity.ActivityToolbox(self) - self.set_toolbox(self.toolbox) - - self.activity_toolbar = self.toolbox.get_activity_toolbar() - self.activity_toolbar.share.hide() - self.activity_toolbar.keep.hide() - - self.toolbox.show() - - self.set_mode("edit") - - def onPreloadTimeout( self ): - if Config.DEBUG > 4: print "TamTam::onPreloadTimeout", self.preloadList - - t = time.time() - if self.preloadList[0].load( t + 0.100 ): # finished preloading this object - self.preloadList.pop(0) - if not len(self.preloadList): - if Config.DEBUG > 1: print "TamTam::finished preloading", time.time() - t - self.preloadTimeout = False - return False # finished preloading everything - - if Config.DEBUG > 4: print "TamTam::preload returned after", time.time() - t - - return True - - 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 - - if self.mode != None: - self.modeList[ self.mode ].onDeactivate() - if FAKE_ACTIVITY: - self.remove( self.modeList[ self.mode ] ) - - self.mode = None - self.trackpad.setContext(mode) - - if mode == 'welcome': - if not (mode in self.modeList): - self.modeList[mode] = Welcome(self, self.set_mode) - self.mode = mode - if len( self.preloadList ): - self.preloadTimeout = gobject.timeout_add( 300, self.onPreloadTimeout ) - elif self.preloadTimeout: - gobject.source_remove( self.preloadTimeout ) - self.predrawTimeout = False - - if mode == 'jam': - if not (mode in self.modeList): - self.metadata['title'] = 'TamTam Jam' - self.modeList[mode] = JamMain(self, self.set_mode) - self.mode = mode - - if mode == 'mini': - if not (mode in self.modeList): - self.metadata['title'] = 'TamTam Mini' - self.modeList[mode] = miniTamTamMain(self, self.set_mode) - else: - self.modeList[mode].regenerate() - if self.instrumentPanel in self.preloadList: - self.instrumentPanel.load() # finish loading - self.modeList[mode].setInstrumentPanel( self.instrumentPanel ) - self.mode = mode - - if mode == 'edit': - if not (mode in self.modeList): - self.metadata['title'] = 'TamTam Edit' - 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 ) - self.mode = mode - - if mode == 'synth': - if not (mode in self.modeList): - self.metadata['title'] = 'TamTam SynthLab' - self.modeList[mode] = SynthLabWindow(self, self.set_mode, None) - self.mode = mode - - if self.mode == None: - print 'DEBUG: TamTam::set_mode invalid mode:', mode - else: - try: # activity mode - self.set_canvas( self.modeList[ self.mode ] ) - except: # fake mode - self.add( self.modeList[ self.mode ] ) - self.modeList[ self.mode ].onActivate(arg) - self.show() - - def onFocusIn(self, event, data=None): - if Config.DEBUG > 3: print 'DEBUG: TamTam::onFocusOut in TamTam.py' - csnd = new_csound_client() - csnd.connect(True) - if self.mode == 'synth': - self.modeList[ self.mode ].updateSound() - self.modeList[ self.mode ].updateTables() - #csnd.load_instruments() - - def onFocusOut(self, event, data=None): - if Config.DEBUG > 3: print 'DEBUG: TamTam::onFocusOut in TamTam.py' - csnd = new_csound_client() - csnd.connect(False) - - def onActive(self, widget = None, event = None): - pass - - def onKeyPress(self, widget, event): - if Config.DEBUG > 5: print 'DEBUG: TamTam::onKeyPress in TamTam.py' - if event.state == gtk.gdk.MOD1_MASK: - key = event.keyval - if key == gtk.keysyms.j: - self.set_mode("jam") - return - elif key == gtk.keysyms.m: - self.set_mode('mini') - return - elif key == gtk.keysyms.s: - self.set_mode('synth') - return - elif key == gtk.keysyms.w: - self.set_mode('welcome') - return - elif key == gtk.keysyms.e: - self.set_mode('edit') - return - elif key == gtk.keysyms.t: - self.toolbox.show() - return - elif key == gtk.keysyms.y: - self.toolbox.hide() - if self.mode: - self.modeList[ self.mode ].onKeyPress(widget, event) - - def onKeyRelease(self, widget, event): - if Config.DEBUG > 5: print 'DEBUG: TamTam::onKeyRelease in TamTam.py' - self.modeList[ self.mode ].onKeyRelease(widget, event) - pass - - def onDestroy(self, arg2): - if Config.DEBUG: print 'DEBUG: TamTam::onDestroy()' - os.system('rm -f ' + Config.PREF_DIR + '/synthTemp*') - - for m in self.modeList: - if self.modeList[m] != None: - self.modeList[m].onDestroy() - - csnd = new_csound_client() - csnd.connect(False) - csnd.destroy() - - gtk.main_quit() - - def ensure_dir(self, dir, perms=0777, rw=os.R_OK|os.W_OK): - if not os.path.isdir( dir ): - try: - os.makedirs(dir, perms) - except OSError, e: - print 'ERROR: failed to make dir %s: %i (%s)\n' % (dir, e.errno, e.strerror) - if not os.access(dir, rw): - print 'ERROR: directory %s is missing required r/w access\n' % dir - - def ensure_dirs(self): - self.ensure_dir(Config.TUNE_DIR) - self.ensure_dir(Config.SYNTH_DIR) - self.ensure_dir(Config.SNDS_DIR) - self.ensure_dir(Config.SCRATCH_DIR) - - if not os.path.isdir(Config.PREF_DIR): - os.mkdir(Config.PREF_DIR) - os.system('chmod 0777 ' + Config.PREF_DIR + ' &') - for snd in ['mic1','mic2','mic3','mic4','lab1','lab2','lab3','lab4', 'lab5', 'lab6']: - shutil.copyfile(Config.SOUNDS_DIR + '/' + snd , Config.SNDS_DIR + '/' + snd) - os.system('chmod 0777 ' + Config.SNDS_DIR + '/' + snd + ' &') - - def read_file(self,file_path): - self.modeList['edit'].handleJournalLoad(file_path) - - def write_file(self,file_path): - self.modeList['edit'].handleJournalSave(file_path) - -class TamTamSynthLab(Activity): - # TamTam is the topmost container in the TamTam application - # At all times it has one child, which may be one of - # - the welcome screen - # - the mini-tamtam - # - the synth lab - # - edit mode - - def __init__(self, handle, mode='synth'): - Activity.__init__(self, handle) - self.ensure_dirs() - - color = gtk.gdk.color_parse(Config.WS_BCK_COLOR) - self.modify_bg(gtk.STATE_NORMAL, color) - - self.set_title('TamTam SynthLab') - self.set_resizable(False) - - self.trackpad = Trackpad( self ) - #self.keyboardWindow = KeyboardWindow(size = 8, popup = True) - #self.keyboardWindow.color_piano() - - self.preloadTimeout = None - - self.focusInHandler = self.connect('focus_in_event',self.onFocusIn) - self.focusOutHandler = self.connect('focus_out_event',self.onFocusOut) - self.connect('notify::active', self.onActive) - self.connect('destroy', self.onDestroy) - self.connect( "key-press-event", self.onKeyPress ) - self.connect( "key-release-event", self.onKeyRelease ) - #self.connect( "key-press-event", self.keyboardWindow.handle_keypress) - #self.connect( "key-release-event", self.keyboardWindow.handle_keyrelease) - #self.connect( "button-press-event", self.keyboardWindow.handle_mousePress) - #self.connect( "button-release-event", self.keyboardWindow.handle_mouseRelease) - - self.mode = None - self.modeList = {} - - self.instrumentPanel = InstrumentPanel( force_load = False ) - self.preloadList = [ self.instrumentPanel ] - - #load the sugar toolbar - self.toolbox = activity.ActivityToolbox(self) - self.set_toolbox(self.toolbox) - - self.activity_toolbar = self.toolbox.get_activity_toolbar() - self.activity_toolbar.share.hide() - self.activity_toolbar.keep.hide() - - self.toolbox.show() - - self.set_mode("synth") - - def onPreloadTimeout( self ): - if Config.DEBUG > 4: print "TamTam::onPreloadTimeout", self.preloadList - - t = time.time() - if self.preloadList[0].load( t + 0.100 ): # finished preloading this object - self.preloadList.pop(0) - if not len(self.preloadList): - if Config.DEBUG > 1: print "TamTam::finished preloading", time.time() - t - self.preloadTimeout = False - return False # finished preloading everything - - if Config.DEBUG > 4: print "TamTam::preload returned after", time.time() - t - - return True - - 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 - - if self.mode != None: - self.modeList[ self.mode ].onDeactivate() - if FAKE_ACTIVITY: - self.remove( self.modeList[ self.mode ] ) - - self.mode = None - self.trackpad.setContext(mode) - - if mode == 'welcome': - if not (mode in self.modeList): - self.modeList[mode] = Welcome(self, self.set_mode) - self.mode = mode - if len( self.preloadList ): - self.preloadTimeout = gobject.timeout_add( 300, self.onPreloadTimeout ) - elif self.preloadTimeout: - gobject.source_remove( self.preloadTimeout ) - self.predrawTimeout = False - - if mode == 'jam': - if not (mode in self.modeList): - self.metadata['title'] = 'TamTam Jam' - self.modeList[mode] = JamMain(self, self.set_mode) - self.mode = mode - - if mode == 'mini': - if not (mode in self.modeList): - self.metadata['title'] = 'TamTam Mini' - self.modeList[mode] = miniTamTamMain(self, self.set_mode) - else: - self.modeList[mode].regenerate() - if self.instrumentPanel in self.preloadList: - self.instrumentPanel.load() # finish loading - self.modeList[mode].setInstrumentPanel( self.instrumentPanel ) - self.mode = mode - - if mode == 'edit': - if not (mode in self.modeList): - self.metadata['title'] = 'TamTam Edit' - 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 ) - self.mode = mode - - if mode == 'synth': - if not (mode in self.modeList): - self.metadata['title'] = 'TamTam SynthLab' - self.modeList[mode] = SynthLabWindow(self, self.set_mode, None) - self.mode = mode - - if self.mode == None: - print 'DEBUG: TamTam::set_mode invalid mode:', mode - else: - try: # activity mode - self.set_canvas( self.modeList[ self.mode ] ) - except: # fake mode - self.add( self.modeList[ self.mode ] ) - self.modeList[ self.mode ].onActivate(arg) - self.show() - - def onFocusIn(self, event, data=None): - if Config.DEBUG > 3: print 'DEBUG: TamTam::onFocusOut in TamTam.py' - csnd = new_csound_client() - csnd.connect(True) - if self.mode == 'synth': - self.modeList[ self.mode ].updateSound() - self.modeList[ self.mode ].updateTables() - #csnd.load_instruments() - - def onFocusOut(self, event, data=None): - if Config.DEBUG > 3: print 'DEBUG: TamTam::onFocusOut in TamTam.py' - csnd = new_csound_client() - csnd.connect(False) - - def onActive(self, widget = None, event = None): - pass - - def onKeyPress(self, widget, event): - if Config.DEBUG > 5: print 'DEBUG: TamTam::onKeyPress in TamTam.py' - if event.state == gtk.gdk.MOD1_MASK: - key = event.keyval - if key == gtk.keysyms.j: - self.set_mode("jam") - return - elif key == gtk.keysyms.m: - self.set_mode('mini') - return - elif key == gtk.keysyms.s: - self.set_mode('synth') - return - elif key == gtk.keysyms.w: - self.set_mode('welcome') - return - elif key == gtk.keysyms.e: - self.set_mode('edit') - return - elif key == gtk.keysyms.t: - self.toolbox.show() - return - elif key == gtk.keysyms.y: - self.toolbox.hide() - if self.mode: - self.modeList[ self.mode ].onKeyPress(widget, event) - - def onKeyRelease(self, widget, event): - if Config.DEBUG > 5: print 'DEBUG: TamTam::onKeyRelease in TamTam.py' - self.modeList[ self.mode ].onKeyRelease(widget, event) - pass - - def onDestroy(self, arg2): - if Config.DEBUG: print 'DEBUG: TamTam::onDestroy()' - os.system('rm -f ' + Config.PREF_DIR + '/synthTemp*') - - for m in self.modeList: - if self.modeList[m] != None: - self.modeList[m].onDestroy() - - csnd = new_csound_client() - csnd.connect(False) - csnd.destroy() - - gtk.main_quit() - - def ensure_dir(self, dir, perms=0777, rw=os.R_OK|os.W_OK): - if not os.path.isdir( dir ): - try: - os.makedirs(dir, perms) - except OSError, e: - print 'ERROR: failed to make dir %s: %i (%s)\n' % (dir, e.errno, e.strerror) - if not os.access(dir, rw): - print 'ERROR: directory %s is missing required r/w access\n' % dir - - def ensure_dirs(self): - self.ensure_dir(Config.TUNE_DIR) - self.ensure_dir(Config.SYNTH_DIR) - self.ensure_dir(Config.SNDS_DIR) - self.ensure_dir(Config.SCRATCH_DIR) - - if not os.path.isdir(Config.PREF_DIR): - os.mkdir(Config.PREF_DIR) - os.system('chmod 0777 ' + Config.PREF_DIR + ' &') - for snd in ['mic1','mic2','mic3','mic4','lab1','lab2','lab3','lab4', 'lab5', 'lab6']: - shutil.copyfile(Config.SOUNDS_DIR + '/' + snd , Config.SNDS_DIR + '/' + snd) - os.system('chmod 0777 ' + Config.SNDS_DIR + '/' + snd + ' &') - - def read_file(self,file_path): - self.modeList['synth'].handleJournalLoad(file_path) - - def write_file(self,file_path): - self.modeList['synth'].handleJournalSave(file_path) - -class TamTamMini(Activity): - # TamTam is the topmost container in the TamTam application - # At all times it has one child, which may be one of - # - the welcome screen - # - the mini-tamtam - # - the synth lab - # - edit mode - - def __init__(self, handle, mode='mini'): - Activity.__init__(self, handle) - self.ensure_dirs() - - color = gtk.gdk.color_parse(Config.WS_BCK_COLOR) - self.modify_bg(gtk.STATE_NORMAL, color) - - self.set_title('TamTam Mini') - self.set_resizable(False) - - self.trackpad = Trackpad( self ) - #self.keyboardWindow = KeyboardWindow(size = 8, popup = True) - #self.keyboardWindow.color_piano() - - self.preloadTimeout = None - - self.focusInHandler = self.connect('focus_in_event',self.onFocusIn) - self.focusOutHandler = self.connect('focus_out_event',self.onFocusOut) - self.connect('notify::active', self.onActive) - self.connect('destroy', self.onDestroy) - self.connect( "key-press-event", self.onKeyPress ) - self.connect( "key-release-event", self.onKeyRelease ) - #self.connect( "key-press-event", self.keyboardWindow.handle_keypress) - #self.connect( "key-release-event", self.keyboardWindow.handle_keyrelease) - #self.connect( "button-press-event", self.keyboardWindow.handle_mousePress) - #self.connect( "button-release-event", self.keyboardWindow.handle_mouseRelease) - - self.mode = None - self.modeList = {} - - self.instrumentPanel = InstrumentPanel( force_load = False ) - self.preloadList = [ self.instrumentPanel ] - - #load the sugar toolbar - self.toolbox = activity.ActivityToolbox(self) - self.set_toolbox(self.toolbox) - - self.activity_toolbar = self.toolbox.get_activity_toolbar() - self.activity_toolbar.share.hide() - self.activity_toolbar.keep.hide() - - self.toolbox.show() - - self.set_mode("mini") - - def onPreloadTimeout( self ): - if Config.DEBUG > 4: print "TamTam::onPreloadTimeout", self.preloadList - - t = time.time() - if self.preloadList[0].load( t + 0.100 ): # finished preloading this object - self.preloadList.pop(0) - if not len(self.preloadList): - if Config.DEBUG > 1: print "TamTam::finished preloading", time.time() - t - self.preloadTimeout = False - return False # finished preloading everything - - if Config.DEBUG > 4: print "TamTam::preload returned after", time.time() - t - - return True - - 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 - - if self.mode != None: - self.modeList[ self.mode ].onDeactivate() - if FAKE_ACTIVITY: - self.remove( self.modeList[ self.mode ] ) - - self.mode = None - self.trackpad.setContext(mode) - - if mode == 'welcome': - if not (mode in self.modeList): - self.modeList[mode] = Welcome(self, self.set_mode) - self.mode = mode - if len( self.preloadList ): - self.preloadTimeout = gobject.timeout_add( 300, self.onPreloadTimeout ) - elif self.preloadTimeout: - gobject.source_remove( self.preloadTimeout ) - self.predrawTimeout = False - - if mode == 'jam': - if not (mode in self.modeList): - self.metadata['title'] = 'TamTam Jam' - self.modeList[mode] = JamMain(self, self.set_mode) - self.mode = mode - - if mode == 'mini': - if not (mode in self.modeList): - self.metadata['title'] = 'TamTam Mini' - self.modeList[mode] = miniTamTamMain(self, self.set_mode) - else: - self.modeList[mode].regenerate() - if self.instrumentPanel in self.preloadList: - self.instrumentPanel.load() # finish loading - self.modeList[mode].setInstrumentPanel( self.instrumentPanel ) - self.mode = mode - - if mode == 'edit': - if not (mode in self.modeList): - self.metadata['title'] = 'TamTam Edit' - 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 ) - self.mode = mode - - if mode == 'synth': - if not (mode in self.modeList): - self.metadata['title'] = 'TamTam SynthLab' - self.modeList[mode] = SynthLabWindow(self, self.set_mode, None) - self.mode = mode - - if self.mode == None: - print 'DEBUG: TamTam::set_mode invalid mode:', mode - else: - try: # activity mode - self.set_canvas( self.modeList[ self.mode ] ) - except: # fake mode - self.add( self.modeList[ self.mode ] ) - self.modeList[ self.mode ].onActivate(arg) - self.show() - - def onFocusIn(self, event, data=None): - if Config.DEBUG > 3: print 'DEBUG: TamTam::onFocusOut in TamTam.py' - csnd = new_csound_client() - csnd.connect(True) - if self.mode == 'synth': - self.modeList[ self.mode ].updateSound() - self.modeList[ self.mode ].updateTables() - #csnd.load_instruments() - - def onFocusOut(self, event, data=None): - if Config.DEBUG > 3: print 'DEBUG: TamTam::onFocusOut in TamTam.py' - csnd = new_csound_client() - csnd.connect(False) - - def onActive(self, widget = None, event = None): - pass - - def onKeyPress(self, widget, event): - if Config.DEBUG > 5: print 'DEBUG: TamTam::onKeyPress in TamTam.py' - if event.state == gtk.gdk.MOD1_MASK: - key = event.keyval - if key == gtk.keysyms.j: - self.set_mode("jam") - return - elif key == gtk.keysyms.m: - self.set_mode('mini') - return - elif key == gtk.keysyms.s: - self.set_mode('synth') - return - elif key == gtk.keysyms.w: - self.set_mode('welcome') - return - elif key == gtk.keysyms.e: - self.set_mode('edit') - return - elif key == gtk.keysyms.t: - self.toolbox.show() - return - elif key == gtk.keysyms.y: - self.toolbox.hide() - if self.mode: - self.modeList[ self.mode ].onKeyPress(widget, event) - - def onKeyRelease(self, widget, event): - if Config.DEBUG > 5: print 'DEBUG: TamTam::onKeyRelease in TamTam.py' - self.modeList[ self.mode ].onKeyRelease(widget, event) - pass - - def onDestroy(self, arg2): - if Config.DEBUG: print 'DEBUG: TamTam::onDestroy()' - os.system('rm -f ' + Config.PREF_DIR + '/synthTemp*') - - for m in self.modeList: - if self.modeList[m] != None: - self.modeList[m].onDestroy() - - csnd = new_csound_client() - csnd.connect(False) - csnd.destroy() - - gtk.main_quit() - - def ensure_dir(self, dir, perms=0777, rw=os.R_OK|os.W_OK): - if not os.path.isdir( dir ): - try: - os.makedirs(dir, perms) - except OSError, e: - print 'ERROR: failed to make dir %s: %i (%s)\n' % (dir, e.errno, e.strerror) - if not os.access(dir, rw): - print 'ERROR: directory %s is missing required r/w access\n' % dir - - def ensure_dirs(self): - self.ensure_dir(Config.TUNE_DIR) - self.ensure_dir(Config.SYNTH_DIR) - self.ensure_dir(Config.SNDS_DIR) - self.ensure_dir(Config.SCRATCH_DIR) - - if not os.path.isdir(Config.PREF_DIR): - os.mkdir(Config.PREF_DIR) - os.system('chmod 0777 ' + Config.PREF_DIR + ' &') - for snd in ['mic1','mic2','mic3','mic4','lab1','lab2','lab3','lab4', 'lab5', 'lab6']: - shutil.copyfile(Config.SOUNDS_DIR + '/' + snd , Config.SNDS_DIR + '/' + snd) - os.system('chmod 0777 ' + Config.SNDS_DIR + '/' + snd + ' &') - - def read_file(self,file_path): - self.metadata['tamtam_subactivity'] = 'mini' - - def write_file(self,file_path): - f = open(file_path,'w') - f.close() - - - -if __name__ == "__main__": - if len(sys.argv) > 1 : - mainwin = TamTam(None, sys.argv[1]) - else: - mainwin = TamTam(None, 'welcome') - - gtk.gdk.threads_init() - gtk.main() - - sys.exit(0) - - - - - - - - - def run_edit_mode(): - tamtam = MainWindow() - mainwin = gtk.Window(gtk.WINDOW_TOPLEVEL) - mainwin.set_title('TamTam Player') - display = mainwin.get_display() - screen = gtk.gdk.Display.get_default_screen(display) - mainwin.set_geometry_hints( None, screen.get_width(), screen.get_height(), screen.get_width(), screen.get_height(), screen.get_width(), screen.get_height() ) - #mainwin.fullscreen() # don't need to specify full screen, it seem to sit properly anyway - mainwin.set_resizable(False) - mainwin.connect('destroy' , tamtam.destroy ) - #mainwin.connect( "configure-event", tamtam.handleConfigureEvent ) - mainwin.connect( "key-press-event", tamtam.onKeyPress ) - mainwin.connect( "key-release-event", tamtam.onKeyRelease ) - mainwin.connect( "delete_event", tamtam.delete_event ) - mainwin.add(tamtam) - tamtam.show() - mainwin.show() - gtk.main() diff --git a/TamTamEdit.activity/TamTamEdit.py b/TamTamEdit.activity/TamTamEdit.py new file mode 100644 index 0000000..0147dff --- /dev/null +++ b/TamTamEdit.activity/TamTamEdit.py @@ -0,0 +1,144 @@ +import locale +locale.setlocale(locale.LC_NUMERIC, 'C') +import signal , time , sys , os, shutil +import pygtk +pygtk.require( '2.0' ) +import gtk + +import gobject +import time + +import common.Config as Config +from common.Util.CSoundClient import new_csound_client +from common.Util.Profiler import TP + +from common.Util.InstrumentPanel import InstrumentPanel +from Edit.MainWindow import MainWindow +from common.Util.Trackpad import Trackpad +from gettext import gettext as _ +import commands +from sugar.activity import activity + +class TamTamEdit(activity.Activity): + def __init__(self, handle): + activity.Activity.__init__(self, handle) + self.ensure_dirs() + + color = gtk.gdk.color_parse(Config.WS_BCK_COLOR) + self.modify_bg(gtk.STATE_NORMAL, color) + + self.set_title('TamTam Mini') + self.set_resizable(False) + + self.trackpad = Trackpad( self ) + + self.preloadTimeout = None + + self.focusInHandler = self.connect('focus_in_event',self.onFocusIn) + self.focusOutHandler = self.connect('focus_out_event',self.onFocusOut) + self.connect('notify::active', self.onActive) + self.connect('destroy', self.onDestroy) + self.connect( "key-press-event", self.onKeyPress ) + self.connect( "key-release-event", self.onKeyRelease ) + + + self.instrumentPanel = InstrumentPanel( force_load = False ) + self.preloadList = [ self.instrumentPanel ] + + #load the sugar toolbar + self.toolbox = activity.ActivityToolbox(self) + self.set_toolbox(self.toolbox) + + self.activity_toolbar = self.toolbox.get_activity_toolbar() + self.activity_toolbar.share.hide() + self.activity_toolbar.keep.hide() + + self.toolbox.show() + + self.trackpad.setContext('edit') + self.edit = MainWindow(self) + #self.modeList[mode].regenerate() + if self.instrumentPanel in self.preloadList: + self.instrumentPanel.load() # finish loading + self.edit.setInstrumentPanel( self.instrumentPanel ) + + self.set_canvas( self.edit ) + + self.edit.onActivate(arg = None) + self.show() + + def onPreloadTimeout( self ): + if Config.DEBUG > 4: print "TamTam::onPreloadTimeout", self.preloadList + + t = time.time() + if self.preloadList[0].load( t + 0.100 ): # finished preloading this object + self.preloadList.pop(0) + if not len(self.preloadList): + if Config.DEBUG > 1: print "TamTam::finished preloading", time.time() - t + self.preloadTimeout = False + return False # finished preloading everything + + if Config.DEBUG > 4: print "TamTam::preload returned after", time.time() - t + + return True + + def onFocusIn(self, event, data=None): + if Config.DEBUG > 3: print 'DEBUG: TamTam::onFocusOut in TamTam.py' + csnd = new_csound_client() + csnd.connect(True) + #csnd.load_instruments() + + def onFocusOut(self, event, data=None): + if Config.DEBUG > 3: print 'DEBUG: TamTam::onFocusOut in TamTam.py' + csnd = new_csound_client() + csnd.connect(False) + + def onActive(self, widget = None, event = None): + pass + + def onKeyPress(self, widget, event): + pass + + def onKeyRelease(self, widget, event): + pass + + def onDestroy(self, arg2): + if Config.DEBUG: print 'DEBUG: TamTam::onDestroy()' + os.system('rm -f ' + Config.PREF_DIR + '/synthTemp*') + + self.mini.onDestroy() + + csnd = new_csound_client() + csnd.connect(False) + csnd.destroy() + + gtk.main_quit() + + def ensure_dir(self, dir, perms=0777, rw=os.R_OK|os.W_OK): + if not os.path.isdir( dir ): + try: + os.makedirs(dir, perms) + except OSError, e: + print 'ERROR: failed to make dir %s: %i (%s)\n' % (dir, e.errno, e.strerror) + if not os.access(dir, rw): + print 'ERROR: directory %s is missing required r/w access\n' % dir + + def ensure_dirs(self): + self.ensure_dir(Config.TUNE_DIR) + self.ensure_dir(Config.SYNTH_DIR) + self.ensure_dir(Config.SNDS_DIR) + self.ensure_dir(Config.SCRATCH_DIR) + + if not os.path.isdir(Config.PREF_DIR): + os.mkdir(Config.PREF_DIR) + os.system('chmod 0777 ' + Config.PREF_DIR + ' &') + for snd in ['mic1','mic2','mic3','mic4','lab1','lab2','lab3','lab4', 'lab5', 'lab6']: + shutil.copyfile(Config.SOUNDS_DIR + '/' + snd , Config.SNDS_DIR + '/' + snd) + os.system('chmod 0777 ' + Config.SNDS_DIR + '/' + snd + ' &') + + def read_file(self,file_path): + self.metadata['tamtam_subactivity'] = 'mini' + + def write_file(self,file_path): + f = open(file_path,'w') + f.close() diff --git a/TamTamEdit.activity/activity/activity.info b/TamTamEdit.activity/activity/activity.info index 65e5044..275a2c4 100644 --- a/TamTamEdit.activity/activity/activity.info +++ b/TamTamEdit.activity/activity/activity.info @@ -2,5 +2,5 @@ name = TamTamEdit service_name = org.laptop.TamTamEdit icon = activity-tamtamedit -class = TamTam.TamTamEdit +class = TamTamEdit.TamTamEdit activity_version = 40 diff --git a/TamTamEdit.activity/po/TamTamEdit.pot b/TamTamEdit.activity/po/TamTamEdit.pot new file mode 100644 index 0000000..bafa34f --- /dev/null +++ b/TamTamEdit.activity/po/TamTamEdit.pot @@ -0,0 +1,632 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2007-09-17 12:45-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: activity/activity.info:2 +msgid "TamTamEdit" +msgstr "" + +#: Edit/EditToolbars.py:52 Edit/EditToolbars.py:189 +msgid "Play / Pause" +msgstr "" + +#: Edit/EditToolbars.py:59 Edit/EditToolbars.py:196 +#: common/Resources/tooltips_en.py:42 common/Resources/tooltips_en.py:115 +msgid "Stop" +msgstr "" + +#: Edit/EditToolbars.py:76 +msgid "Record keyboard" +msgstr "" + +#: Edit/EditToolbars.py:83 +msgid "Record to ogg" +msgstr "" + +#: Edit/EditToolbars.py:88 +msgid "Select Tool" +msgstr "" + +#: Edit/EditToolbars.py:98 +msgid "Draw Tool" +msgstr "" + +#: Edit/EditToolbars.py:108 +msgid "Paint Tool" +msgstr "" + +#: Edit/EditToolbars.py:124 +msgid "Duplicate" +msgstr "" + +#: Edit/EditToolbars.py:127 +msgid "Volume / Tempo" +msgstr "" + +#: Edit/EditToolbars.py:215 +msgid "Generate Tune" +msgstr "" + +#: Edit/EditToolbars.py:218 Edit/EditToolbars.py:1011 +msgid "Generation" +msgstr "" + +#: Edit/EditToolbars.py:228 +msgid "Properties" +msgstr "" + +#: Edit/EditToolbars.py:272 Edit/EditToolbars.py:306 Edit/EditToolbars.py:340 +#: Edit/EditToolbars.py:353 +msgid "1/12" +msgstr "" + +#: Edit/EditToolbars.py:272 Edit/EditToolbars.py:306 Edit/EditToolbars.py:340 +#: Edit/EditToolbars.py:353 +msgid "1/6" +msgstr "" + +#: Edit/EditToolbars.py:272 Edit/EditToolbars.py:306 Edit/EditToolbars.py:340 +#: Edit/EditToolbars.py:353 +msgid "1/4" +msgstr "" + +#: Edit/EditToolbars.py:272 Edit/EditToolbars.py:306 Edit/EditToolbars.py:340 +#: Edit/EditToolbars.py:353 +msgid "1/3" +msgstr "" + +#: Edit/EditToolbars.py:272 Edit/EditToolbars.py:306 Edit/EditToolbars.py:340 +#: Edit/EditToolbars.py:353 +msgid "1/2" +msgstr "" + +#: Edit/EditToolbars.py:272 Edit/EditToolbars.py:306 Edit/EditToolbars.py:340 +#: Edit/EditToolbars.py:353 +msgid "1" +msgstr "" + +#: Edit/EditToolbars.py:272 Edit/EditToolbars.py:306 Edit/EditToolbars.py:340 +#: Edit/EditToolbars.py:353 +msgid "2" +msgstr "" + +#: Edit/EditToolbars.py:397 common/Resources/tooltips_en.py:111 +msgid "Volume" +msgstr "" + +#: Edit/EditToolbars.py:408 common/Resources/tooltips_en.py:49 +#: common/Resources/tooltips_en.py:120 +msgid "Tempo" +msgstr "" + +#: Edit/EditToolbars.py:447 +msgid "Rythm" +msgstr "" + +#: Edit/EditToolbars.py:451 +msgid "Density" +msgstr "" + +#: Edit/EditToolbars.py:455 Edit/EditToolbars.py:478 +msgid "Regularity" +msgstr "" + +#: Edit/EditToolbars.py:474 +msgid "Pitch" +msgstr "" + +#: Edit/EditToolbars.py:482 +msgid "Maximum step" +msgstr "" + +#: Edit/EditToolbars.py:501 +msgid "Duration" +msgstr "" + +#: Edit/EditToolbars.py:505 +msgid "Note duration" +msgstr "" + +#: Edit/EditToolbars.py:509 +msgid "Silence density" +msgstr "" + +#: Edit/EditToolbars.py:539 +msgid "Scale: " +msgstr "" + +#: Edit/EditToolbars.py:541 common/Resources/tooltips_en.py:65 +msgid "Major scale" +msgstr "" + +#: Edit/EditToolbars.py:541 common/Resources/tooltips_en.py:66 +msgid "Harmonic minor scale" +msgstr "" + +#: Edit/EditToolbars.py:541 common/Resources/tooltips_en.py:67 +msgid "Natural minor scale" +msgstr "" + +#: Edit/EditToolbars.py:541 common/Resources/tooltips_en.py:68 +msgid "Phrygian scale" +msgstr "" + +#: Edit/EditToolbars.py:541 common/Resources/tooltips_en.py:69 +msgid "Dorian scale" +msgstr "" + +#: Edit/EditToolbars.py:541 common/Resources/tooltips_en.py:70 +msgid "Lydian scale" +msgstr "" + +#: Edit/EditToolbars.py:541 +msgid "Myxolidian scale" +msgstr "" + +#: Edit/EditToolbars.py:547 +msgid "Mode: " +msgstr "" + +#: Edit/EditToolbars.py:549 Edit/EditToolbars.py:849 +#: common/Resources/tooltips_en.py:61 common/Resources/tooltips_en.py:98 +msgid "Drunk" +msgstr "" + +#: Edit/EditToolbars.py:549 Edit/EditToolbars.py:849 +#: common/Resources/tooltips_en.py:62 +msgid "Drone and Jump" +msgstr "" + +#: Edit/EditToolbars.py:549 Edit/EditToolbars.py:849 +#: common/Resources/tooltips_en.py:63 common/Resources/tooltips_en.py:100 +msgid "Repeater" +msgstr "" + +#: Edit/EditToolbars.py:549 common/Resources/tooltips_en.py:64 +#: common/Resources/tooltips_en.py:101 +msgid "Loop segments" +msgstr "" + +#: Edit/EditToolbars.py:848 +msgid "None" +msgstr "" + +#: Edit/EditToolbars.py:848 +msgid "Lowpass" +msgstr "" + +#: Edit/EditToolbars.py:848 +msgid "Bandpass" +msgstr "" + +#: Edit/EditToolbars.py:848 +msgid "Highpass" +msgstr "" + +#: Edit/EditToolbars.py:849 common/Resources/tooltips_en.py:97 +msgid "Line" +msgstr "" + +#: Edit/EditToolbars.py:849 +msgid "Loop Segments" +msgstr "" + +#: Edit/EditToolbars.py:850 +msgid "Purple" +msgstr "" + +#: Edit/EditToolbars.py:850 +msgid "Green" +msgstr "" + +#: Edit/EditToolbars.py:850 +msgid "Blue" +msgstr "" + +#: Edit/EditToolbars.py:850 +msgid "Yellow" +msgstr "" + +#: Edit/EditToolbars.py:874 +msgid "Grid division: " +msgstr "" + +#: Edit/EditToolbars.py:885 +msgid "Page color: " +msgstr "" + +#: Edit/EditToolbars.py:898 +msgid "Transposition: " +msgstr "" + +#: Edit/EditToolbars.py:912 +msgid "Volume: " +msgstr "" + +#: Edit/EditToolbars.py:926 +msgid "Pan: " +msgstr "" + +#: Edit/EditToolbars.py:941 +msgid "Reverb: " +msgstr "" + +#: Edit/EditToolbars.py:956 +msgid "Attack duration: " +msgstr "" + +#: Edit/EditToolbars.py:971 +msgid "Decay duration: " +msgstr "" + +#: Edit/EditToolbars.py:986 +msgid "Filter Type: " +msgstr "" + +#: Edit/EditToolbars.py:995 +msgid "Filter cutoff: " +msgstr "" + +#: Edit/EditToolbars.py:1014 +msgid "Type: " +msgstr "" + +#: Edit/EditToolbars.py:1024 +msgid "Minimum: " +msgstr "" + +#: Edit/EditToolbars.py:1035 +msgid "Maximum: " +msgstr "" + +#: Edit/EditToolbars.py:1046 +msgid "Random: " +msgstr "" + +#: Edit/MainWindow.py:153 +msgid "Track 1 Volume" +msgstr "" + +#: Edit/MainWindow.py:177 +msgid "Track 2 Volume" +msgstr "" + +#: Edit/MainWindow.py:201 +msgid "Track 3 Volume" +msgstr "" + +#: Edit/MainWindow.py:225 +msgid "Track 4 Volume" +msgstr "" + +#: Edit/MainWindow.py:249 +msgid "Track 5 Volume" +msgstr "" + +#: Edit/MainWindow.py:407 +msgid "Compose" +msgstr "" + +#: Edit/MainWindow.py:408 common/Resources/tooltips_en.py:74 +#: common/Resources/tooltips_en.py:117 +msgid "Generate" +msgstr "" + +#: Edit/MainWindow.py:2074 common/Resources/tooltips_en.py:51 +#: common/Resources/tooltips_en.py:52 common/Resources/tooltips_en.py:53 +#: common/Resources/tooltips_en.py:54 common/Resources/tooltips_en.py:55 +msgid "Left click to mute, right click to solo" +msgstr "" + +#: common/Resources/tooltips_en.py:8 +msgid "Select tool" +msgstr "" + +#: common/Resources/tooltips_en.py:9 +msgid "Draw tool" +msgstr "" + +#: common/Resources/tooltips_en.py:10 +msgid "Paint tool" +msgstr "" + +#: common/Resources/tooltips_en.py:12 +msgid "Generate new tune" +msgstr "" + +#: common/Resources/tooltips_en.py:14 +msgid "Generate page" +msgstr "" + +#: common/Resources/tooltips_en.py:15 +msgid "Page properties" +msgstr "" + +#: common/Resources/tooltips_en.py:16 +msgid "Delete page(s)" +msgstr "" + +#: common/Resources/tooltips_en.py:17 +msgid "Duplicate page(s)" +msgstr "" + +#: common/Resources/tooltips_en.py:18 +msgid "Add page" +msgstr "" + +#: common/Resources/tooltips_en.py:19 +msgid "Beats per page" +msgstr "" + +#: common/Resources/tooltips_en.py:20 +msgid "Save tune" +msgstr "" + +#: common/Resources/tooltips_en.py:21 +msgid "Load tune" +msgstr "" + +#: common/Resources/tooltips_en.py:23 +msgid "Generate track" +msgstr "" + +#: common/Resources/tooltips_en.py:24 +msgid "Track properties" +msgstr "" + +#: common/Resources/tooltips_en.py:25 +msgid "Clear track" +msgstr "" + +#: common/Resources/tooltips_en.py:26 +msgid "Duplicate track" +msgstr "" + +#: common/Resources/tooltips_en.py:28 +msgid "Note(s) properties" +msgstr "" + +#: common/Resources/tooltips_en.py:29 +msgid "Delete note(s)" +msgstr "" + +#: common/Resources/tooltips_en.py:30 +msgid "Duplicate note(s)" +msgstr "" + +#: common/Resources/tooltips_en.py:31 common/Resources/tooltips_en.py:32 +msgid "Move note in time" +msgstr "" + +#: common/Resources/tooltips_en.py:33 +msgid "Lower pitch" +msgstr "" + +#: common/Resources/tooltips_en.py:34 +msgid "Raise pitch" +msgstr "" + +#: common/Resources/tooltips_en.py:35 common/Resources/tooltips_en.py:36 +msgid "Modify duration" +msgstr "" + +#: common/Resources/tooltips_en.py:37 +msgid "Lower volume" +msgstr "" + +#: common/Resources/tooltips_en.py:38 +msgid "Raise volume" +msgstr "" + +#: common/Resources/tooltips_en.py:40 +msgid "Play" +msgstr "" + +#: common/Resources/tooltips_en.py:41 +msgid "Pause" +msgstr "" + +#: common/Resources/tooltips_en.py:43 +msgid "Keyboard recording" +msgstr "" + +#: common/Resources/tooltips_en.py:44 +msgid "Save as .ogg" +msgstr "" + +#: common/Resources/tooltips_en.py:45 +msgid "Rewind" +msgstr "" + +#: common/Resources/tooltips_en.py:46 +msgid "Save to journal and quit" +msgstr "" + +#: common/Resources/tooltips_en.py:48 +msgid "Master volume" +msgstr "" + +#: common/Resources/tooltips_en.py:58 +msgid "-- Rythm density, | Rythm regularity" +msgstr "" + +#: common/Resources/tooltips_en.py:59 +msgid "-- Pitch regularity, | Pitch maximum step" +msgstr "" + +#: common/Resources/tooltips_en.py:60 +msgid "-- Average duration, | Silence probability" +msgstr "" + +#: common/Resources/tooltips_en.py:71 +msgid "Myxolydian scale" +msgstr "" + +#: common/Resources/tooltips_en.py:72 +msgid "Save preset" +msgstr "" + +#: common/Resources/tooltips_en.py:73 +msgid "Load preset" +msgstr "" + +#: common/Resources/tooltips_en.py:75 +msgid "Close" +msgstr "" + +#: common/Resources/tooltips_en.py:78 +msgid "Transpose up" +msgstr "" + +#: common/Resources/tooltips_en.py:79 +msgid "Transpose down" +msgstr "" + +#: common/Resources/tooltips_en.py:80 +msgid "Volume up" +msgstr "" + +#: common/Resources/tooltips_en.py:81 +msgid "Volume down" +msgstr "" + +#: common/Resources/tooltips_en.py:82 +msgid "Panoramisation" +msgstr "" + +#: common/Resources/tooltips_en.py:83 common/Resources/tooltips_en.py:113 +msgid "Reverb" +msgstr "" + +#: common/Resources/tooltips_en.py:84 +msgid "Attack duration" +msgstr "" + +#: common/Resources/tooltips_en.py:85 +msgid "Decay duration" +msgstr "" + +#: common/Resources/tooltips_en.py:86 +msgid "Lowpass filter" +msgstr "" + +#: common/Resources/tooltips_en.py:87 +msgid "Highpass filter" +msgstr "" + +#: common/Resources/tooltips_en.py:88 +msgid "Bandpass filter" +msgstr "" + +#: common/Resources/tooltips_en.py:89 +msgid "Filter cutoff" +msgstr "" + +#: common/Resources/tooltips_en.py:90 common/Resources/tooltips_en.py:91 +#: common/Resources/tooltips_en.py:92 common/Resources/tooltips_en.py:93 +#: common/Resources/tooltips_en.py:94 common/Resources/tooltips_en.py:95 +#: common/Resources/tooltips_en.py:96 +msgid "Open algorithmic generator" +msgstr "" + +#: common/Resources/tooltips_en.py:99 +msgid "Drone and jump" +msgstr "" + +#: common/Resources/tooltips_en.py:102 +msgid "Minimum value" +msgstr "" + +#: common/Resources/tooltips_en.py:103 +msgid "Maximum value" +msgstr "" + +#: common/Resources/tooltips_en.py:104 +msgid "Specific parameter" +msgstr "" + +#: common/Resources/tooltips_en.py:105 +msgid "Apply generator" +msgstr "" + +#: common/Resources/tooltips_en.py:106 +msgid "Cancel" +msgstr "" + +#: common/Resources/tooltips_en.py:112 +msgid "Balance" +msgstr "" + +#: common/Resources/tooltips_en.py:114 +msgid "Play / Stop" +msgstr "" + +#: common/Resources/tooltips_en.py:116 +msgid "Left click to record, right click to record on top" +msgstr "" + +#: common/Resources/tooltips_en.py:118 +msgid "Complexity of beat" +msgstr "" + +#: common/Resources/tooltips_en.py:119 +msgid "Beats per bar" +msgstr "" + +#: common/Resources/tooltips_en.py:121 +msgid "Jazz / Rock Kit" +msgstr "" + +#: common/Resources/tooltips_en.py:122 +msgid "African Kit" +msgstr "" + +#: common/Resources/tooltips_en.py:123 +msgid "Arabic Kit" +msgstr "" + +#: common/Resources/tooltips_en.py:124 +msgid "South American Kit" +msgstr "" + +#: common/Resources/tooltips_en.py:125 +msgid "Electronic Kit" +msgstr "" + +#: common/Resources/tooltips_en.py:126 +msgid "Record with the microphone" +msgstr "" + +#: common/Resources/tooltips_en.py:127 +msgid "Open SynthLab to create noise" +msgstr "" + +#: common/Resources/tooltips_en.py:128 +msgid "Record mic into slot 1" +msgstr "" + +#: common/Resources/tooltips_en.py:128 +msgid "Record mic into slot 2" +msgstr "" + +#: common/Resources/tooltips_en.py:128 +msgid "Record mic into slot 3" +msgstr "" + +#: common/Resources/tooltips_en.py:128 +msgid "Record mic into slot 4" +msgstr "" diff --git a/TamTamEdit.activity/setup.py b/TamTamEdit.activity/setup.py index 5b21f11..b31f0b1 100644 --- a/TamTamEdit.activity/setup.py +++ b/TamTamEdit.activity/setup.py @@ -17,5 +17,14 @@ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
from sugar.activity import bundlebuilder
+import shutil
+import os
-bundlebuilder.start('TamTam')
+#We are removing the symlink to common and replacing it with the real common folder
+os.system('unlink common')
+shutil.copytree('../common', 'common')
+
+bundlebuilder.start('TamTamEdit')
+#Restore the symlink
+os.system('rm -rf common')
+os.system('ln -s ../common common')
|