diff options
-rw-r--r-- | Jam/JamMain.py | 55 | ||||
-rw-r--r-- | Jam/Toolbars.py | 54 |
2 files changed, 71 insertions, 38 deletions
diff --git a/Jam/JamMain.py b/Jam/JamMain.py index e72d275..053fda3 100644 --- a/Jam/JamMain.py +++ b/Jam/JamMain.py @@ -19,6 +19,8 @@ import Jam.Picker as Picker import Jam.Block as Block from Jam.Toolbars import JamToolbar from Jam.Toolbars import PlaybackToolbar +from Jam.Toolbars import common_playback_buttons +from Jam.Toolbars import BeatToolbar from Jam.Toolbars import DesktopToolbar from Jam.Toolbars import RecordToolbar @@ -254,14 +256,14 @@ class JamMain(gtk.EventBox): jam_toolbar_button.show() self.activity.toolbox.toolbar.insert(jam_toolbar_button, -1) - self.playbackToolbar = PlaybackToolbar(self) - playback_toolbar_button = ToolbarButton(label=_('Playback'), - page=self.playbackToolbar, + self.beatToolbar = BeatToolbar(self) + beat_toolbar_button = ToolbarButton(label=_('Beat'), + page=self.beatToolbar, # Fixme: need an icon icon_name='activity-start') - self.playbackToolbar.show() - playback_toolbar_button.show() - self.activity.toolbox.toolbar.insert(playback_toolbar_button, -1) + self.beatToolbar.show() + beat_toolbar_button.show() + self.activity.toolbox.toolbar.insert(beat_toolbar_button, -1) self.desktopToolbar = DesktopToolbar(self) desktop_toolbar_button = ToolbarButton(label=_('Desktop'), @@ -280,6 +282,14 @@ class JamMain(gtk.EventBox): record_toolbar_button.show() self.activity.toolbox.toolbar.insert(record_toolbar_button, -1) + separator = gtk.SeparatorToolItem() + separator.props.draw = True + separator.set_expand(False) + self.activity.toolbox.toolbar.insert(separator, -1) + separator.show() + + common_playback_buttons(self.activity.toolbox.toolbar, self) + self.activity.add_stop_button() else: self.jamToolbar = JamToolbar(self) @@ -289,6 +299,10 @@ class JamMain(gtk.EventBox): self.activity.toolbox.add_toolbar(_("Playback"), self.playbackToolbar) + self.beatToolbar = BeatToolbar(self) + self.activity.toolbox.add_toolbar(_("Beat"), + self.beatToolbar) + self.desktopToolbar = DesktopToolbar(self) self.activity.toolbox.add_toolbar(_("Desktop"), self.desktopToolbar) @@ -438,10 +452,7 @@ class JamMain(gtk.EventBox): #-- Final Set Up -------------------------------------- self.setVolume(self.volume) self.setTempo(self.tempo) - if self.activity.have_toolbox: - # jam_toolbar_button.set_expanded(True) - pass - else: + if not self.activity.have_toolbox: self.activity.toolbox.set_current_toolbar(1) # JamToolbar self.setDesktop(0, True) @@ -729,8 +740,26 @@ class JamMain(gtk.EventBox): def removeMetronome(self, page): self.noteDB.deleteNotesByTrack([page], [1]) + def handleStopButton(self, widget): + self.setStopped() + + def handleMuteButton(self, widget): + if widget.get_active(): + self._setMuted(True) + else: + self._setMuted(False) + def setMuted(self, muted): - self.playbackToolbar.setMuted(muted) + if self.activity.have_toolbox: + toolbar = self.activity.toolbox.toolbar + else: + toolbar = self.playbackToolbar + + if toolbar.muteButton.get_active() == muted: + return + + toolbar.muteButton.set_active(muted) + toolbar.playbackToolbar.setMuted(muted) def _setMuted(self, muted): if self.muted == muted: @@ -1269,7 +1298,7 @@ class JamMain(gtk.EventBox): # Sync def setSyncBeats(self, beats): - self.playbackToolbar.setSyncBeats(beats) + self.beatToolbar.setSyncBeats(beats) def _setSyncBeats(self, beats): if beats == self.syncBeats: @@ -1319,7 +1348,7 @@ class JamMain(gtk.EventBox): def updateBeatWheel(self): curTick = self.csnd.loopGetTick(self.heartbeatLoop) % self.syncTicks self.curBeat = int(curTick) // Config.TICKS_PER_BEAT - self.playbackToolbar.updateBeatWheel(self.curBeat) + self.beatToolbar.updateBeatWheel(self.curBeat) return True def correctedHeartbeat(self): diff --git a/Jam/Toolbars.py b/Jam/Toolbars.py index 3b2f32f..d33e0ae 100644 --- a/Jam/Toolbars.py +++ b/Jam/Toolbars.py @@ -141,6 +141,24 @@ class JamToolbar(gtk.Toolbar): self.owner.sendSyncQuery() +def common_playback_buttons(toolbar, owner): + """ Playback and mute buttons are either on the main toolbar or + the Playback toolbar, depending upon whether or not the new + toolbars are available. """ + + toolbar.stopButton = ToolButton('media-playback-stop') + toolbar.stopButton.connect('clicked', owner.handleStopButton) + toolbar.insert(toolbar.stopButton, -1) + toolbar.stopButton.show() + toolbar.stopButton.set_tooltip(_('Stop Loops')) + + toolbar.muteButton = ToggleToolButton('mute') + toolbar.muteButton.connect('clicked', owner.handleMuteButton) + toolbar.insert(toolbar.muteButton, -1) + toolbar.muteButton.show() + toolbar.muteButton.set_tooltip(_('Mute Loops')) + + class PlaybackToolbar(gtk.Toolbar): def __init__(self, owner): @@ -150,17 +168,18 @@ class PlaybackToolbar(gtk.Toolbar): self.toolItem = {} - self.stopButton = ToolButton('media-playback-stop') - self.stopButton.connect('clicked', self.handleStopButton) - self.insert(self.stopButton, -1) - self.stopButton.show() - self.stopButton.set_tooltip(_('Stop Loops')) + common_playback_buttons(self, owner) + + self.show_all() - self.muteButton = ToggleToolButton('mute') - self.muteButton.connect('clicked', self.handleMuteButton) - self.insert(self.muteButton, -1) - self.muteButton.show() - self.muteButton.set_tooltip(_('Mute Loops')) +class BeatToolbar(gtk.Toolbar): + + def __init__(self, owner): + gtk.Toolbar.__init__(self) + + self.owner = owner + + self.toolItem = {} self._insert_separator(True) @@ -249,21 +268,6 @@ class PlaybackToolbar(gtk.Toolbar): self.owner._setSyncBeats(beats) - def handleStopButton(self, widget): - self.owner.setStopped() - - def setMuted(self, muted): - if self.muteButton.get_active() == muted: - return - - self.muteButton.set_active(muted) - - def handleMuteButton(self, widget): - if widget.get_active(): - self.owner._setMuted(True) - else: - self.owner._setMuted(False) - class DesktopToolbar(gtk.Toolbar): |