diff options
author | Walter Bender <walter@sugarlabs.org> | 2013-06-30 20:23:28 (GMT) |
---|---|---|
committer | Walter Bender <walter@sugarlabs.org> | 2013-06-30 20:23:28 (GMT) |
commit | 65f36c17aabe036651e309c1277b986066bc667d (patch) | |
tree | b29210a98700922d5a1e93769cc8a47e2f17f311 | |
parent | e22484493f8b99a93b3010edcb3236172cdc1f38 (diff) |
better touch support
-rw-r--r-- | NEWS | 15 | ||||
-rwxr-xr-x | activity/activity.info | 2 | ||||
-rw-r--r-- | measure.py | 246 | ||||
-rw-r--r-- | sensor_toolbar.py | 190 | ||||
-rw-r--r-- | tuning_toolbar.py | 30 |
5 files changed, 249 insertions, 234 deletions
@@ -1,10 +1,21 @@ -45 +47 ENHANCEMENTS: -* OLPC XO 4 support +* Ensure toolbars fit on narrow displays +* Use button palette, radio buttons instead of combo boxes + +46 + +ENHANCEMENT: +* New translation BUG FIX: +* Fix problem with sensor toolbars on XO4 +45 + +ENHANCEMENTS: +* OLPC XO 4 support 44 diff --git a/activity/activity.info b/activity/activity.info index ac1f9cc..033b6b4 100755 --- a/activity/activity.info +++ b/activity/activity.info @@ -3,7 +3,7 @@ name = Measure bundle_id = org.laptop.MeasureActivity exec = sugar-activity measure.MeasureActivity icon = activity-measure -activity_version = 45 +activity_version = 47 show_launcher = yes license = GPLv2+ update_url = http://wiki.laptop.org/go/Activities/G1G1 @@ -3,7 +3,7 @@ # # Written by Arjun Sarwal <arjun@laptop.org> # Copyright (C) 2007, Arjun Sarwal -# Copyright (C) 2009-11 Walter Bender +# Copyright (C) 2009-13 Walter Bender # Copyright (C) 2009, Benjamin Berg, Sebastian Berg # # This program is free software; you can redistribute it and/or modify @@ -27,31 +27,15 @@ import csv from gettext import gettext as _ from sugar.activity import activity -try: # 0.86+ toolbar widgets - from sugar.graphics.toolbarbox import ToolbarBox - _has_toolbarbox = True -except ImportError: - _has_toolbarbox = False - -if _has_toolbarbox: - from sugar.activity.widgets import ActivityToolbarButton - from sugar.activity.widgets import StopButton - from sugar.graphics.toolbarbox import ToolbarButton -else: - from sugar.activity.activity import ActivityToolbox +from sugar.activity.widgets import ActivityToolbarButton +from sugar.activity.widgets import StopButton +from sugar.graphics.toolbarbox import ToolbarBox +from sugar.graphics.toolbarbox import ToolbarButton +from sugar.graphics.toolbutton import ToolButton from sugar.graphics import style from sugar.datastore import datastore -from sugar.graphics.toolbutton import ToolButton -try: - from sugar import profile - _using_gconf = False -except ImportError: - _using_gconf = True -try: - import gconf -except ImportError: - _using_gconf = False +from sugar import profile from journal import DataLogger from audiograb import AudioGrab_XO175, AudioGrab_XO15, AudioGrab_XO1, \ @@ -68,7 +52,6 @@ log = logging.getLogger('measure-activity') log.setLevel(logging.DEBUG) logging.basicConfig() - PREFIX = '♬' @@ -124,7 +107,6 @@ class MeasureActivity(activity.Activity): self.mode_images['voltage'] = gtk.gdk.pixbuf_new_from_file_at_size( os.path.join(ICONS_DIR, 'voltage.svg'), 45, 45) - self._using_gconf = _using_gconf self.icon_colors = self.get_icon_colors_from_sugar() self.stroke_color, self.fill_color = self.icon_colors.split(',') self.nick = self.get_nick_from_sugar() @@ -145,7 +127,9 @@ class MeasureActivity(activity.Activity): self.hw = _get_hardware() log.debug('running on %s hardware' % (self.hw)) + self.wave = DrawWaveform(self) + if self.hw == XO15: self.audiograb = AudioGrab_XO15(self.wave.new_buffer, self) elif self.hw == XO175: @@ -160,8 +144,6 @@ class MeasureActivity(activity.Activity): # no sharing self.max_participants = 1 - self.has_toolbarbox = _has_toolbarbox - box3 = gtk.HBox(False, 0) box3.pack_start(self.wave, True, True, 0) @@ -192,114 +174,88 @@ class MeasureActivity(activity.Activity): self.set_canvas(box1) - if self.has_toolbarbox: - toolbox = ToolbarBox() + toolbox = ToolbarBox() - activity_button = ActivityToolbarButton(self) - toolbox.toolbar.insert(activity_button, 0) - activity_button.show() - else: - toolbox = ActivityToolbox(self) - - # no sharing - if hasattr(toolbox, 'share'): - toolbox.share.hide() - elif hasattr(toolbox, 'props'): - toolbox.props.visible = False - self.set_toolbox(toolbox) + activity_button = ActivityToolbarButton(self) + toolbox.toolbar.insert(activity_button, 0) + activity_button.show() self.sensor_toolbar = SensorToolbar(self, self.audiograb.channels) self.tuning_toolbar = TuningToolbar(self) self.new_instrument_toolbar = InstrumentToolbar(self) + self._extras_toolbar = gtk.Toolbar() self.control_toolbar = gtk.Toolbar() - if self.has_toolbarbox: - sensor_button = ToolbarButton( - label=_('Sensors'), - page=self.sensor_toolbar, - icon_name='sensor-tools') - toolbox.toolbar.insert(sensor_button, -1) - sensor_button.show() - tuning_button = ToolbarButton( - # TRANS: Tuning insruments - label=_('Tuning'), - page=self.tuning_toolbar, - icon_name='tuning-tools') - toolbox.toolbar.insert(tuning_button, -1) - tuning_button.show() - new_instrument_button = ToolbarButton( - label=_('Add instrument'), - page=self.new_instrument_toolbar, - icon_name='view-source') - toolbox.toolbar.insert(new_instrument_button, -1) - new_instrument_button.show() - else: - toolbox.add_toolbar(_('Sensors'), self.sensor_toolbar) + + sensor_button = ToolbarButton( + label=_('Sensors'), + page=self.sensor_toolbar, + icon_name='sensor-tools') + toolbox.toolbar.insert(sensor_button, -1) + sensor_button.show() + tuning_button = ToolbarButton( # TRANS: Tuning insruments - toolbox.add_toolbar(_('Tuning'), self.tuning_toolbar) - toolbox.add_toolbar(_('Add instrument'), - self.new_instrument_toolbar) - toolbox.add_toolbar(_('Controls'), self.control_toolbar) + label=_('Tuning'), + page=self.tuning_toolbar, + icon_name='tuning-tools') + toolbox.toolbar.insert(tuning_button, -1) + tuning_button.show() + new_instrument_button = ToolbarButton( + label=_('Add instrument'), + page=self.new_instrument_toolbar, + icon_name='view-source') + toolbox.toolbar.insert(new_instrument_button, -1) + new_instrument_button.show() + self._extras_button = ToolbarButton( + page=self._extras_toolbar, + icon_name='domain-time') + toolbox.toolbar.insert(self._extras_button, -1) + self._extras_toolbar_item = gtk.ToolItem() + self._extras_toolbar.insert(self._extras_toolbar_item, -1) + self._extras_button.hide() self.sensor_toolbar.show() - if self.has_toolbarbox: - # Set up Frequency-domain Button - self.freq = ToolButton('domain-time') - toolbox.toolbar.insert(self.freq, -1) - self.freq.show() - self.freq.set_tooltip(_('Time Base')) - self.freq.connect('clicked', self.timefreq_control) - - self.sensor_toolbar.add_frequency_slider(toolbox.toolbar) - - self._pause = ToolButton('media-playback-pause') - toolbox.toolbar.insert(self._pause, -1) - self._pause.set_tooltip(_('Freeze the display')) - self._pause.connect('clicked', self._pause_play_cb) - - self._capture = ToolButton('image-saveoff') - toolbox.toolbar.insert(self._capture, -1) - self._capture.set_tooltip(_('Capture sample now')) - self._capture.connect('clicked', self._capture_cb) - - separator = gtk.SeparatorToolItem() - separator.props.draw = False - separator.set_expand(True) - toolbox.toolbar.insert(separator, -1) - separator.show() - - stop_button = StopButton(self) - stop_button.props.accelerator = _('<Ctrl>Q') - toolbox.toolbar.insert(stop_button, -1) - stop_button.show() - - self.set_toolbox(toolbox) - sensor_button.set_expanded(True) - else: - # Set up Frequency-domain Button - self.freq = ToolButton('domain-time') - self.control_toolbar.insert(self.freq, -1) - self.freq.show() - self.freq.set_tooltip(_('Time Base')) - self.freq.connect('clicked', self.timefreq_control) - - self.sensor_toolbar.add_frequency_slider(self.control_toolbar) - - separator = gtk.SeparatorToolItem() - separator.props.draw = True - self.control_toolbar.insert(separator, -1) - separator.show() - - self._pause = ToolButton('media-playback-pause') - self.control_toolbar.insert(self._pause, -1) - self._pause.set_tooltip(_('Freeze the display')) - self._pause.connect('clicked', self._pause_play_cb) - - self._capture = ToolButton('image-saveoff') - self.control_toolbar.insert(self._capture, -1) - self._capture.set_tooltip(_('Capture sample now')) - self._capture.connect('clicked', self._capture_cb) - - toolbox.set_current_toolbar(1) + self._extra_tools = gtk.HBox() + + # Set up Frequency-domain Button + self.freq = ToolButton('domain-time') + self.freq.set_tooltip(_('Time Base')) + self.freq.connect('clicked', self.timefreq_control) + self.freq.show() + self._extra_tools.add(self.freq) + + self.sensor_toolbar.add_frequency_slider(self._extra_tools) + + self._extra_item = gtk.ToolItem() + self._extra_item.add(self._extra_tools) + self._extra_tools.show() + toolbox.toolbar.insert(self._extra_item, -1) + self._extra_item.show() + + self._pause = ToolButton('media-playback-pause') + self._pause.set_tooltip(_('Freeze the display')) + self._pause.connect('clicked', self._pause_play_cb) + self._pause.show() + toolbox.toolbar.insert(self._pause, -1) + + self._capture = ToolButton('image-saveoff') + self._capture.set_tooltip(_('Capture sample now')) + self._capture.connect('clicked', self._capture_cb) + self._capture.show() + toolbox.toolbar.insert(self._capture, -1) + + separator = gtk.SeparatorToolItem() + separator.props.draw = False + separator.set_expand(True) + toolbox.toolbar.insert(separator, -1) + separator.show() + + stop_button = StopButton(self) + stop_button.props.accelerator = _('<Ctrl>Q') + toolbox.toolbar.insert(stop_button, -1) + stop_button.show() + + self.set_toolbox(toolbox) + sensor_button.set_expanded(True) toolbox.show() self.sensor_toolbar.update_page_size() @@ -315,6 +271,32 @@ class MeasureActivity(activity.Activity): self.wave.set_active(True) self.wave.set_context_on() + gtk.gdk.screen_get_default().connect('size-changed', + self._configure_cb) + self._configure_cb(None) + + def _configure_cb(self, event): + ''' Screen size has changed, so check to see if the toolbar + elements still fit.''' + self.width = gtk.gdk.screen_width() + if self.width < style.GRID_CELL_SIZE * 14: + self._extras_button.show() + if self._extra_tools in self._extra_item: + self._extra_item.remove(self._extra_tools) + if not self._extra_tools in self._extras_toolbar_item: + self._extras_toolbar_item.add(self._extra_tools) + self._extras_toolbar_item.show() + else: + self._extras_button.hide() + if self._extra_tools in self._extras_toolbar_item: + self._extras_toolbar_item.remove(self._extra_tools) + if not self._extra_tools in self._extra_item: + self._extra_item.add(self._extra_tools) + if self._extras_button.is_expanded(): + self._extras_button.set_expanded(False) + self._extras_toolbar_item.hide() + self._extra_tools.show() + def on_quit(self, data=None): '''Clean up, close journal on quit''' self.audiograb.on_activity_quit() @@ -462,18 +444,10 @@ class MeasureActivity(activity.Activity): def get_icon_colors_from_sugar(self): ''' Returns the icon colors from the Sugar profile ''' - if self._using_gconf: - client = gconf.client_get_default() - return client.get_string('/desktop/sugar/user/color') - else: - return profile.get_color().to_string() + return profile.get_color().to_string() def get_nick_from_sugar(self): ''' Returns nick from Sugar ''' - if self._using_gconf: - client = gconf.client_get_default() - return client.get_string('/desktop/sugar/user/nick') - else: - return profile.get_nick_name() + return profile.get_nick_name() gtk.gdk.threads_init() diff --git a/sensor_toolbar.py b/sensor_toolbar.py index 75d6464..5338e38 100644 --- a/sensor_toolbar.py +++ b/sensor_toolbar.py @@ -3,7 +3,7 @@ # # Author: Arjun Sarwal arjun@laptop.org # Copyright (C) 2007, Arjun Sarwal -# Copyright (C) 2009-11 Walter Bender +# Copyright (C) 2009-13 Walter Bender # Copyright (C) 2009, Benjamin Berg, Sebastian Berg # # This program is free software; you can redistribute it and/or modify @@ -20,10 +20,12 @@ import gtk import gobject import os from gettext import gettext as _ +from gettext import ngettext -from config import ICONS_DIR, CAPTURE_GAIN, MIC_BOOST, XO1, XO15, XO175, XO30 +from config import ICONS_DIR, CAPTURE_GAIN, MIC_BOOST, XO1, XO15, XO175, XO4 from sugar.graphics.toolbutton import ToolButton +from sugar.graphics.menuitem import MenuItem from sugar.graphics.combobox import ComboBox from sugar.graphics.toolcombobox import ToolComboBox from sugar.graphics.radiotoolbutton import RadioToolButton @@ -31,10 +33,11 @@ import logging log = logging.getLogger('measure-activity') log.setLevel(logging.DEBUG) +LOG_TIMER_VALUES = [1, 10, 300, 3000, 18000] # In 10th second intervals def _is_xo(hw): ''' Return True if this is xo hardware ''' - return hw in [XO1, XO15, XO175, XO30] + return hw in [XO1, XO15, XO175, XO4] class SensorToolbar(gtk.Toolbar): @@ -116,24 +119,12 @@ of XO)") + ' ' separator.props.draw = True self.insert(separator, -1) - self._log_interval_combo = ComboBox() - self.interval = [_('1/10 second'), _('1 second'), _('30 seconds'), - _('5 minutes'), _('30 minutes')] - - if hasattr(self._log_interval_combo, 'set_tooltip_text'): - self._log_interval_combo.set_tooltip_text(_('Sampling interval')) - - self._interval_changed_id = self._log_interval_combo.connect('changed', - self.log_interval_cb) - - for i, s in enumerate(self.interval): - self._log_interval_combo.append_item(i, s, None) - if s == _('1 second'): - self._log_interval_combo.set_active(i) - - self._log_interval_tool = ToolComboBox(self._log_interval_combo) - self.insert(self._log_interval_tool, -1) - self.logging_interval_status = '1 second' + self._log_value = LOG_TIMER_VALUES[1] + self._log_button = ToolButton('timer-10') + self._log_button.set_tooltip(_('Select log')) + self._log_button.connect('clicked', self._log_selection_cb) + self.insert(self._log_button, -1) + self._setup_log_palette() # Set up Logging/Stop Logging Button self._record = ToolButton('media-record') @@ -141,65 +132,129 @@ of XO)") + ' ' self._record.set_tooltip(_('Start Recording')) self._record.connect('clicked', self.record_control_cb) - if self.activity.has_toolbarbox: - separator = gtk.SeparatorToolItem() - separator.props.draw = True - self.insert(separator, -1) + separator = gtk.SeparatorToolItem() + separator.props.draw = True + self.insert(separator, -1) # Set up Trigger Combo box - self.trigger_combo = ComboBox() - self.trigger = [_('None'), _('Rising Edge'), _('Falling Edge')] - self.trigger_conf = [self.activity.wave.TRIGGER_NONE, - self.activity.wave.TRIGGER_POS, - self.activity.wave.TRIGGER_NEG] - self._trigger_changed_id = self.trigger_combo.connect('changed', - self.update_trigger_control) - for i, s in enumerate(self.trigger): - self.trigger_combo.append_item(i, s, None) - self.trigger_combo.set_active(0) - if hasattr(self.trigger_combo, 'set_tooltip_text'): - self.trigger_combo.set_tooltip_text(_('Create a trigger')) - self._trigger_tool = ToolComboBox(self.trigger_combo) - self.insert(self._trigger_tool, -1) + self.trigger_none = RadioToolButton() + self.trigger_none.set_named_icon('trigger-none') + self.insert(self.trigger_none, -1) + self.trigger_none.set_tooltip(_('None')) + self.trigger_none.connect('clicked', + self.update_trigger_control_cb, + self.activity.wave.TRIGGER_NONE) + + self.trigger_rise = RadioToolButton(group=self.trigger_none) + self.trigger_rise.set_named_icon('trigger-rise') + self.insert(self.trigger_rise, -1) + self.trigger_rise.set_tooltip(_('Rising Edge')) + self.trigger_rise.connect('clicked', + self.update_trigger_control_cb, + self.activity.wave.TRIGGER_POS) + + self.trigger_fall = RadioToolButton(group=self.trigger_none) + self.trigger_fall.set_named_icon('trigger-fall') + self.insert(self.trigger_fall, -1) + self.trigger_fall.set_tooltip(_('Falling Edge')) + self.trigger_fall.connect('clicked', + self.update_trigger_control_cb, + self.activity.wave.TRIGGER_NEG) self.show_all() - def add_frequency_slider(self, toolbar): + def get_log(self): + return self._log_value + + def get_log_idx(self): + if self._log_value in LOG_TIMER_VALUES: + return LOG_TIMER_VALUES.index(self._log_value) + else: + return LOG_TIMER_VALUES[0] + + def set_log_idx(self, idx): + self._log_value = LOG_TIMER_VALUES[idx] + if hasattr(self, '_log_button'): + self._log_button.set_icon('timer-%d' % (self._log_value)) + + def _log_selection_cb(self, widget): + if self._log_palette: + if not self._log_palette.is_up(): + self._log_palette.popup(immediate=True, + state=self._log_palette.SECONDARY) + else: + self._log_palette.popdown(immediate=True) + return + + def _log_to_seconds(self, tenth_seconds): + return tenth_seconds / 10. + + def _log_to_string(self, seconds): + tenth_seconds = seconds / 10 + if seconds == 1: + return _('1/10 second') + else: + return ngettext('%d second', '%d seconds', tenth_seconds) % \ + tenth_seconds + + def _setup_log_palette(self): + self._log_palette = self._log_button.get_palette() + + for seconds in LOG_TIMER_VALUES: + tenth_seconds = seconds / 10 + if seconds == 1: + text = _('1/10 second') + else: + text = ngettext('%d second', '%d seconds', tenth_seconds) % \ + tenth_seconds + menu_item = MenuItem(icon_name='timer-%d' % (seconds), + text_label=text) + menu_item.connect('activate', self._log_selected_cb, seconds) + self._log_palette.menu.append(menu_item) + menu_item.show() + + def _log_selected_cb(self, button, seconds): + self.set_log_idx(LOG_TIMER_VALUES.index(seconds)) + + def add_frequency_slider(self, toolbox): ''' Either on the Sound toolbar or the Main toolbar ''' self._freq_stepper_up = ToolButton('freq-high') self._freq_stepper_up.set_tooltip(_('Zoom out')) self._freq_stepper_up.connect('clicked', self._freq_stepper_up_cb) + self._freq_stepper_up.show() + self.activity.adjustmentf = gtk.Adjustment( 0.5, self.LOWER, self.UPPER, 0.01, 0.1, 0) self.activity.adjustmentf.connect('value_changed', self.cb_page_sizef) + self._freq_range = gtk.HScale(self.activity.adjustmentf) self._freq_range.set_inverted(True) self._freq_range.set_draw_value(False) self._freq_range.set_update_policy(gtk.UPDATE_CONTINUOUS) self._freq_range.set_size_request(120, 15) + self._freq_range.show() self._freq_stepper_down = ToolButton('freq-low') self._freq_stepper_down.set_tooltip(_('Zoom in')) self._freq_stepper_down.connect('clicked', self._freq_stepper_down_cb) + self._freq_stepper_down.show() self._freq_range_tool = gtk.ToolItem() self._freq_range_tool.add(self._freq_range) + self._freq_range_tool.show() - toolbar.insert(self._freq_stepper_up, -1) - toolbar.insert(self._freq_range_tool, -1) - toolbar.insert(self._freq_stepper_down, -1) + toolbox.add(self._freq_stepper_up) + toolbox.add(self._freq_range_tool) + toolbox.add(self._freq_stepper_down) return - def update_trigger_control(self, *args): - ''' Callback for trigger control ''' + def update_trigger_control_cb(self, button, value): + if button is None: + value = self.activity.wave.TRIGGER_NONE if self.activity.wave.get_fft_mode(): self.trigger_combo.set_active(self.activity.wave.TRIGGER_NONE) - active = self.trigger_combo.get_active() - if active == -1: - return - - self.activity.wave.set_trigger(self.trigger_conf[active]) - return + else: + self.activity.wave.set_trigger(value) def analog_resistance_voltage_mode_cb(self, button=None, mode_to_set='sound'): @@ -345,7 +400,7 @@ of XO)") + ' ' ''' Called when an analog sensor is selected ''' self.activity.wave.set_mag_params(self.gain, self.y_mag) self.update_string_for_textbox() - self.update_trigger_control() + self.update_trigger_control_cb(None) self.activity.audiograb.start_grabbing() return False @@ -368,15 +423,17 @@ of XO)") + ' ' else: Xscale = (1.00 / self.activity.audiograb.get_sampling_rate()) Yscale = 0.0 - interval = self.interval_convert() + interval = self._log_value / 10. # self.interval_convert() username = self.activity.nick if self.activity.wave.get_fft_mode(): self.activity.data_logger.start_new_session( - username, Xscale, Yscale, _(self.logging_interval_status), + username, Xscale, Yscale, + self._log_to_string(self._log_value), channels=self._channels, mode='frequency') else: self.activity.data_logger.start_new_session( - username, Xscale, Yscale, _(self.logging_interval_status), + username, Xscale, Yscale, + self._log_to_string(self._log_value), channels=self._channels, mode=self.mode) self.activity.audiograb.set_logging_params( start_stop=True, interval=interval, screenshot=False) @@ -385,29 +442,6 @@ of XO)") + ' ' self._record.set_tooltip(_('Stop Recording')) self.activity.new_recording = True - def interval_convert(self): - ''' Converts interval string to an integer that denotes the - number of times the audiograb buffer must be called before a - value is written. When set to 0, the whole of current buffer - will be written. ''' - interval_dictionary = {'1/10 second': 0.1, '1 second': 1, - '30 seconds': 30, - '5 minutes': 300, '30 minutes': 1800} - try: - return interval_dictionary[self.logging_interval_status] - except ValueError: - logging.error('logging interval status = %s' %\ - (str(self.logging_interval_status))) - return 0 - - def log_interval_cb(self, combobox): - ''' Callback from the Logging Interval Combo box: sets status ''' - if self._log_interval_combo.get_active() != -1: - intervals = ['1/10 second', '1 second', '30 seconds', - '5 minutes', '30 minutes'] - self.logging_interval_status = \ - intervals[self._log_interval_combo.get_active()] - def update_string_for_textbox(self): ''' Update the status field at the bottom of the canvas. ''' if self.mode == 'resistance': diff --git a/tuning_toolbar.py b/tuning_toolbar.py index 0891dbf..a38f396 100644 --- a/tuning_toolbar.py +++ b/tuning_toolbar.py @@ -68,10 +68,9 @@ class TuningToolbar(gtk.Toolbar): self._instrument_tool = ToolComboBox(self.instrument_combo) self.insert(self._instrument_tool, -1) - if self.activity.has_toolbarbox: - separator = gtk.SeparatorToolItem() - separator.props.draw = True - self.insert(separator, -1) + separator = gtk.SeparatorToolItem() + separator.props.draw = True + self.insert(separator, -1) self._notes_combo = ComboBox() n = 0 @@ -111,10 +110,9 @@ class TuningToolbar(gtk.Toolbar): self._new_tuning_line.set_tooltip(_('Show tuning line.')) self._new_tuning_line.connect('clicked', self.tuning_line_cb) - if self.activity.has_toolbarbox: - separator = gtk.SeparatorToolItem() - separator.props.draw = True - self.insert(separator, -1) + separator = gtk.SeparatorToolItem() + separator.props.draw = True + self.insert(separator, -1) self._harmonic = ToolButton('harmonics') self._harmonic.show() @@ -122,10 +120,9 @@ class TuningToolbar(gtk.Toolbar): self._harmonic.set_tooltip(_('Show harmonics.')) self._harmonic.connect('clicked', self.harmonic_cb) - if self.activity.has_toolbarbox: - separator = gtk.SeparatorToolItem() - separator.props.draw = True - self.insert(separator, -1) + separator = gtk.SeparatorToolItem() + separator.props.draw = True + self.insert(separator, -1) self._play_tone = ToolButton('media-playback-start') self._play_tone.show() @@ -133,11 +130,10 @@ class TuningToolbar(gtk.Toolbar): self._play_tone.set_tooltip(_('Play a note.')) self._play_tone.connect('clicked', self.play_cb) - if self.activity.has_toolbarbox: - separator = gtk.SeparatorToolItem() - separator.props.draw = False - separator.set_expand(True) - self.insert(separator, -1) + separator = gtk.SeparatorToolItem() + separator.props.draw = False + separator.set_expand(True) + self.insert(separator, -1) self.label = gtk.Label('') self.label.set_use_markup(True) |