From 8df5780c18fdf623873f619f86d0d998e44d763d Mon Sep 17 00:00:00 2001 From: Walter Bender Date: Tue, 02 Aug 2011 22:00:32 +0000 Subject: Further consolidation of the Edit toolbars Further consolidation of the toolbars: Play and Edit buttons moved to main toolbar and other tools moved to single secondary toolbar. Supercedes previous patch of same name. See http://wiki.sugarlabs.org/go/File:EditMain-alt-2.png --- (limited to 'Edit') diff --git a/Edit/EditToolbars.py b/Edit/EditToolbars.py index e2cf5ad..1d625af 100644 --- a/Edit/EditToolbars.py +++ b/Edit/EditToolbars.py @@ -28,50 +28,92 @@ from random import * Tooltips = Config.Tooltips() +def common_buttons(toolbar, edit): + ''' Buttons on main toolbar (or multiple toolbars in old-style Sugar ''' + # Play button + toolbar.playButton = ToggleToolButton('media-playback-start') + toolbar.playButtonHandler = toolbar.playButton.connect( + 'toggled', edit.handlePlayPause_cb) + toolbar.insert(toolbar.playButton, -1) + toolbar.playButton.show() + toolbar.playButton.set_tooltip(_('Play / Pause')) + + # Stop button + toolbar.stopButton = ToolButton('media-playback-stop') + toolbar.stopButton.connect('clicked', edit.handleStop_cb) + toolbar.insert(toolbar.stopButton, -1) + toolbar.stopButton.show() + toolbar.stopButton.set_tooltip(_('Stop')) + + # Play button Image + toolbar.playButtonImg = gtk.Image() + toolbar.playButtonImg.set_from_icon_name( + 'media-playback-start', gtk.ICON_SIZE_LARGE_TOOLBAR) + toolbar.playButtonImg.show() + + # Pause button Image + toolbar.pauseButtonImg = gtk.Image() + toolbar.pauseButtonImg.set_from_icon_name( + 'media-playback-pause', gtk.ICON_SIZE_LARGE_TOOLBAR) + toolbar.pauseButtonImg.show() + + toolbar.separator = gtk.SeparatorToolItem() + toolbar.separator.set_expand(False) + toolbar.separator.set_draw(True) + toolbar.insert(toolbar.separator,-1) + toolbar.separator.show() + + # Pointer button + toolbar._pointerPalette = pointerPalette(_('Select tool'), edit) + toolbar.pointerButton = RadioToolButton(group = None) + toolbar.pointerButton.set_named_icon('edit-pointer') + toolbar.pointerButton.set_palette(toolbar._pointerPalette) + toolbar.pointerButton.connect('toggled', edit.handleToolClick, 'default') + toolbar.insert(toolbar.pointerButton, -1) + toolbar.pointerButton.show() + + # Draw button + toolbar._drawPalette = drawPalette(_('Draw Tool'), edit) + toolbar.drawButton = RadioToolButton(group = toolbar.pointerButton) + toolbar.drawButton.set_named_icon('edit-pencil') + toolbar.drawButton.set_palette(toolbar._drawPalette) + toolbar.drawButton.connect('toggled', edit.handleToolClick, 'draw') + toolbar.insert(toolbar.drawButton, -1) + toolbar.drawButton.show() + + # Paint button + toolbar._paintPalette = paintPalette(_('Paint Tool'), edit) + toolbar.paintButton = RadioToolButton(group = toolbar.pointerButton) + toolbar.paintButton.set_named_icon('edit-brush') + toolbar.paintButton.set_palette(toolbar._paintPalette) + toolbar.paintButton.connect('toggled', edit.handleToolClick, 'paint') + toolbar.insert(toolbar.paintButton, -1) + toolbar.paintButton.show() + class mainToolbar(gtk.Toolbar): def __init__(self, edit): gtk.Toolbar.__init__(self) - def _insertSeparator(x = 1): - for i in range(x): - self.separator = gtk.SeparatorToolItem() - self.separator.set_expand(True) - self.separator.set_draw(True) - self.insert(self.separator,-1) - self.separator.show() - self.edit = edit self.tooltips = gtk.Tooltips() - # Play button - self.playButton = ToggleToolButton('media-playback-start') - self.playButtonHandler = self.playButton.connect('toggled', self.handlePlayPause) - self.insert(self.playButton, -1) - self.playButton.show() - self.playButton.set_tooltip(_('Play / Pause')) - - # Stop button - self.stopButton = ToolButton('media-playback-stop') - self.stopButton.connect('clicked', self.handleStop) - self.insert(self.stopButton, -1) - self.stopButton.show() - self.stopButton.set_tooltip(_('Stop')) - - # Play button Image - self.playButtonImg = gtk.Image() - self.playButtonImg.set_from_icon_name('media-playback-start', gtk.ICON_SIZE_LARGE_TOOLBAR) - self.playButtonImg.show() - - # Pause button Image - self.pauseButtonImg = gtk.Image() - self.pauseButtonImg.set_from_icon_name('media-playback-pause', gtk.ICON_SIZE_LARGE_TOOLBAR) - self.pauseButtonImg.show() + common_buttons(self, self.edit) + + +class toolsToolbar(gtk.Toolbar): + def __init__(self, edit, add_common_buttons=True): + gtk.Toolbar.__init__(self) + + self.edit = edit + + self.tooltips = gtk.Tooltips() # Record button self.recordButton = ToggleToolButton('recordK') - self.recordButton.connect('clicked', self.edit.handleKeyboardRecordButton) + self.recordButton.connect( + 'clicked', edit.handleKeyboardRecordButton) self.insert(self.recordButton, -1) self.recordButton.show() self.recordButton.set_tooltip(_('Record keyboard')) @@ -79,41 +121,16 @@ class mainToolbar(gtk.Toolbar): if Config.FEATURES_OGG: #RecordOgg button self.recordOggButton = ToggleToolButton('recordO') - self.recordOggButton.connect('clicked', self.handleRecord) + self.recordOggButton.connect('clicked', edit.handleRecord_cb) self.insert(self.recordOggButton, -1) self.recordOggButton.show() self.recordOggButton.set_tooltip(_('Record to ogg')) - _insertSeparator(1) - - # Pointer button - self._pointerPalette = pointerPalette(_('Select tool'), self.edit) - self.pointerButton = RadioToolButton(group = None) - self.pointerButton.set_named_icon('edit-pointer') - self.pointerButton.set_palette(self._pointerPalette) - self.pointerButton.connect('toggled', self.edit.handleToolClick, 'default') - self.insert(self.pointerButton, -1) - self.pointerButton.show() - - # Draw button - self._drawPalette = drawPalette(_('Draw Tool'), self.edit) - self.drawButton = RadioToolButton(group = self.pointerButton) - self.drawButton.set_named_icon('edit-pencil') - self.drawButton.set_palette(self._drawPalette) - self.drawButton.connect('toggled', self.edit.handleToolClick, 'draw') - self.insert(self.drawButton, -1) - self.drawButton.show() - - # Paint button - self._paintPalette = paintPalette(_('Paint Tool'), self.edit) - self.paintButton = RadioToolButton(group = self.pointerButton) - self.paintButton.set_named_icon('edit-brush') - self.paintButton.set_palette(self._paintPalette) - self.paintButton.connect('toggled', self.edit.handleToolClick, 'paint') - self.insert(self.paintButton, -1) - self.paintButton.show() - - _insertSeparator(1) + self.separator = gtk.SeparatorToolItem() + self.separator.set_expand(False) + self.separator.set_draw(True) + self.insert(self.separator,-1) + self.separator.show() # Duplicate button self.duplicateButton = ToggleToolButton('duplicate') @@ -129,90 +146,11 @@ class mainToolbar(gtk.Toolbar): self.insert(self.volumeTempoButton, -1) self.volumeTempoButton.show() - def handleRecord(self, widget, data = None): - if widget.get_active(): - self.playButton.set_active(False) - self.edit.handleAudioRecord(widget, data) - if widget.get_active(): - gobject.timeout_add( 500, self._startAudioRecord ) - - def _startAudioRecord( self ): - self.playButton.set_active(True) - return False - - def handlePlayPause(self, widget, data = None): - if widget.get_active(): - self.edit.handlePlay(widget) - self.edit._generateToolbar.handler_block(self.edit._generateToolbar.playButtonHandler) - self.edit._generateToolbar.playButton.set_active(True) - self.edit._generateToolbar.handler_unblock(self.edit._generateToolbar.playButtonHandler) - widget.set_icon_widget(self.pauseButtonImg) - self.edit._generateToolbar.playButton.set_icon_widget(self.edit._generateToolbar.pauseButtonImg) - else: - self.edit.handleStop(widget, False) - self.edit._generateToolbar.handler_block(self.edit._generateToolbar.playButtonHandler) - self.edit._generateToolbar.playButton.set_active(False) - self.edit._generateToolbar.handler_unblock(self.edit._generateToolbar.playButtonHandler) - widget.set_icon_widget(self.playButtonImg) - self.edit._generateToolbar.playButton.set_icon_widget(self.edit._generateToolbar.playButtonImg) - - def handleStop(self, widget, data = None): - self.playButton.set_active(False) - self.edit.handleStop(widget, True) - if self.recordButton.get_active(): - self.recordButton.set_active(False) - - def handleDuplicate(self, widget): - if widget.get_active(): - if self.edit.getContext() == 0: # Page - self.edit.pageDuplicate() - elif self.edit.getContext() == 1: # Track - self.edit.trackDuplicateWidget(widget) - elif self.edit.getContext() == 2: # Note - self.edit.noteDuplicateWidget(widget) - widget.set_active(False) - -class generateToolbar(gtk.Toolbar): - def __init__(self, edit): - gtk.Toolbar.__init__(self) - - def _insertSeparator(x = 1): - for i in range(x): - self.separator = gtk.SeparatorToolItem() - self.separator.set_expand(True) - self.separator.set_draw(False) - self.insert(self.separator,-1) - self.separator.show() - - self.edit = edit - - self.tooltips = gtk.Tooltips() - - # Play button - self.playButton = ToggleToolButton('media-playback-start') - self.playButtonHandler = self.playButton.connect('toggled', self.handlePlayPause) - self.insert(self.playButton, -1) - self.playButton.show() - self.playButton.set_tooltip(_('Play / Pause')) - - # Stop button - self.stopButton = ToolButton('media-playback-stop') - self.stopButton.connect('clicked', self.handleStop) - self.insert(self.stopButton, -1) - self.stopButton.show() - self.stopButton.set_tooltip(_('Stop')) - - # Play button Image - self.playButtonImg = gtk.Image() - self.playButtonImg.set_from_icon_name('media-playback-start', gtk.ICON_SIZE_LARGE_TOOLBAR) - self.playButtonImg.show() - - # Pause button Image - self.pauseButtonImg = gtk.Image() - self.pauseButtonImg.set_from_icon_name('media-playback-pause', gtk.ICON_SIZE_LARGE_TOOLBAR) - self.pauseButtonImg.show() - - _insertSeparator(1) + self.separator = gtk.SeparatorToolItem() + self.separator.set_expand(False) + self.separator.set_draw(True) + self.insert(self.separator,-1) + self.separator.show() # BigGeneration button self.bigGenerationButton = ToolButton('diceB') @@ -236,27 +174,16 @@ class generateToolbar(gtk.Toolbar): self.insert(self.propsButton, -1) self.propsButton.show() - def handlePlayPause(self, widget, data = None): + def handleDuplicate(self, widget): if widget.get_active(): - self.edit.handlePlay(widget) - self.edit._mainToolbar.handler_block(self.edit._mainToolbar.playButtonHandler) - self.edit._mainToolbar.playButton.set_active(True) - self.edit._mainToolbar.handler_unblock(self.edit._mainToolbar.playButtonHandler) - widget.set_icon_widget(self.pauseButtonImg) - self.edit._mainToolbar.playButton.set_icon_widget(self.edit._mainToolbar.pauseButtonImg) - else: - self.edit.handleStop(widget, False) - self.edit._mainToolbar.handler_block(self.edit._mainToolbar.playButtonHandler) - self.edit._mainToolbar.playButton.set_active(False) - self.edit._mainToolbar.handler_unblock(self.edit._mainToolbar.playButtonHandler) - widget.set_icon_widget(self.playButtonImg) - self.edit._mainToolbar.playButton.set_icon_widget(self.edit._mainToolbar.playButtonImg) - - def handleStop(self, widget, data = None): - self.edit.handleStop(widget, True) - self.playButton.set_active(False) - if self.edit._mainToolbar.recordButton.get_active(): - self.edit._mainToolbar.recordButton.set_active(False) + if self.edit.getContext() == 0: # Page + self.edit.pageDuplicate() + elif self.edit.getContext() == 1: # Track + self.edit.trackDuplicateWidget(widget) + elif self.edit.getContext() == 2: # Note + self.edit.noteDuplicateWidget(widget) + widget.set_active(False) + class pointerPalette(Palette): def __init__(self, label, edit): diff --git a/Edit/MainWindow.py b/Edit/MainWindow.py index 98852db..27538ba 100644 --- a/Edit/MainWindow.py +++ b/Edit/MainWindow.py @@ -13,8 +13,9 @@ from common.Util.NoteDB import PARAMETER from common.Util import ControlStream from common.Util.CSoundClient import new_csound_client from common.Util.CSoundNote import CSoundNote +from EditToolbars import common_buttons from EditToolbars import mainToolbar -from EditToolbars import generateToolbar +from EditToolbars import toolsToolbar from gettext import gettext as _ from subprocess import Popen from sugar.graphics.palette import Palette, Invoker @@ -387,32 +388,47 @@ class MainWindow(gtk.EventBox): if Config.HAVE_TOOLBOX: from sugar.graphics.toolbarbox import ToolbarButton - self._mainToolbar = mainToolbar(self) - self._mainToolbar.show() - main_toolbar_button = ToolbarButton(label=_('Compose'), - page=self._mainToolbar, - icon_name='edit-brush') - main_toolbar_button.show() - self.activity.toolbox.toolbar.insert(main_toolbar_button, -1) - - self._generateToolbar = generateToolbar(self) - self._generateToolbar.show() - generate_toolbar_button = ToolbarButton(label=_('Generate'), - page=self._generateToolbar, - icon_name='diceB') - generate_toolbar_button.show() - self.activity.toolbox.toolbar.insert(generate_toolbar_button, -1) - - main_toolbar_button.set_expanded(True) + separator = gtk.SeparatorToolItem() + separator.props.draw = True + separator.set_expand(False) + self.activity.toolbox.toolbar.insert(separator, -1) + + common_buttons(self.activity.toolbox.toolbar, self) + self._activity_toolbar = self.activity.toolbox.toolbar + self._play_button = self.activity.toolbox.toolbar.playButton + self._stop_button = self.activity.toolbox.toolbar.stopButton + + separator = gtk.SeparatorToolItem() + separator.props.draw = True + separator.set_expand(False) + self.activity.toolbox.toolbar.insert(separator, -1) + + self._toolsToolbar = toolsToolbar(self) + self._toolsToolbar.show() + tools_toolbar_button = ToolbarButton(label=_('Tools'), + page=self._toolsToolbar, + icon_name='preferences-system') + tools_toolbar_button.show() + self.activity.toolbox.toolbar.insert(tools_toolbar_button, -1) + self._record_button = self._toolsToolbar.recordButton + + separator = gtk.SeparatorToolItem() + separator.props.draw = False + separator.set_expand(True) + self.activity.toolbox.toolbar.insert(separator, -1) else: self._mainToolbar = mainToolbar(self) self._mainToolbar.show() self.activity.toolbox.add_toolbar(_('Compose'), self._mainToolbar) + self._activity_toolbar = self._mainToolbar + self._play_button = self._mainToolbar.playButton + self._stop_button = self._mainToolbar.stopButton - self._generateToolbar = generateToolbar(self) - self._generateToolbar.show() - self.activity.toolbox.add_toolbar(_('Generate'), - self._generateToolbar) + self._toolsToolbar = toolsToolbar(self) + self._toolsToolbar.show() + self.activity.toolbox.add_toolbar(_('Tools'), + self._toolsToolbar) + self._record_button = self._toolsToolbar.recordButton self.activity.toolbox.set_current_toolbar(1) @@ -639,6 +655,45 @@ class MainWindow(gtk.EventBox): self.playing = True + def handlePlayPause_cb(self, widget, data=None): + if widget.get_active(): + self.handlePlay(widget) + self._activity_toolbar.handler_block( + self._activity_toolbar.playButtonHandler) + self._play_button.set_active(True) + self._activity_toolbar.handler_unblock( + self._activity_toolbar.playButtonHandler) + widget.set_icon_widget(self._activity_toolbar.pauseButtonImg) + self._play_button.set_icon_widget( + self._activity_toolbar.pauseButtonImg) + else: + self.handleStop(widget, False) + self._activity_toolbar.handler_block( + self._activity_toolbar.playButtonHandler) + self._play_button.set_active(False) + self._activity_toolbar.handler_unblock( + self._activity_toolbar.playButtonHandler) + widget.set_icon_widget(self._activity_toolbar.playButtonImg) + self._play_button.set_icon_widget( + self._activity_toolbar.playButtonImg) + + def handleStop_cb(self, widget, data=None): + self._play_button.set_active(False) + self.handleStop(widget, True) + if self._record_button.get_active(): + self._record_button.set_active(False) + + def handleRecord_cb(self, widget, data=None): + if widget.get_active(): + self._play_button.set_active(False) + self.handleAudioRecord(widget, data) + if widget.get_active(): + gobject.timeout_add(500, self._startAudioRecord) + + def _startAudioRecord(self): + self._play_button.set_active(True) + return False + def _playPages(self, pages, startPage, startTick): self.pages_playing = pages[:] @@ -1803,9 +1858,9 @@ class MainWindow(gtk.EventBox): self.context = context if self.context == CONTEXT.NOTE: - self._generateToolbar.generationButton.set_sensitive(False) + self._toolsToolbar.generationButton.set_sensitive(False) else: - self._generateToolbar.generationButton.set_sensitive(True) + self._toolsToolbar.generationButton.set_sensitive(True) def getContext(self): return self.context @@ -2243,7 +2298,6 @@ class drumPalette(Popup): self.volumeBox = gtk.HBox() self.instrumentMainBox = gtk.HBox() - self.muteButton = gtk.CheckButton() self.muteButton.connect("toggled",self.edit.handlemuteButton, self.trackID) self.muteButton.connect("button-press-event",self.edit.handlemuteButtonRightClick, self.trackID) @@ -2283,7 +2337,6 @@ class drumPalette(Popup): self.edit.playInstrumentNote(drum) self.popdown(True) - def setDrum(self, Drum): self.skip = True self.drumBox.set_active(self.drums.index(Drum)) -- cgit v0.9.1