diff options
Diffstat (limited to 'sound_toolbar.py')
-rw-r--r-- | sound_toolbar.py | 111 |
1 files changed, 54 insertions, 57 deletions
diff --git a/sound_toolbar.py b/sound_toolbar.py index 589698e..49e9cc7 100644 --- a/sound_toolbar.py +++ b/sound_toolbar.py @@ -1,9 +1,9 @@ #! /usr/bin/python # # Author: Arjun Sarwal arjun@laptop.org -# Copyright (C) 2007, OLPC +# Copyright (C) 2007, Arjun Sarwal +# Copyright (C) 2009, Walter Bender # -# # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or @@ -57,7 +57,6 @@ class SoundToolbar(gtk.Toolbar): self._STR_XAXIS2 = _("ms ") self._STR_XAXIS3 = _("Hz ") - self.string_for_textbox = "" self.g = 1.0 @@ -67,15 +66,15 @@ class SoundToolbar(gtk.Toolbar): self.logging_status = False - #######################time######################### + ###################### time ######################## self._time = ToolButton('domain-time2') self.insert(self._time, -1) self._time.show() self._time.set_tooltip(_('Time base')) self._time.connect('clicked', self._timefreq_control_cb, True) - ################################################### + #################################################### - #######################frequency###################### + ###################### frequency ################### self._freq = ToolButton('domain-freq') self.insert(self._freq, -1) self._freq.show() @@ -83,10 +82,21 @@ class SoundToolbar(gtk.Toolbar): self._freq.connect('clicked', self._timefreq_control_cb, False) #################################################### + ####################### invert ##################### + self._invert = ToolButton('invert') + self.insert(self._invert, -1) + self._invert.show() + self._invert.set_tooltip(_('Invert')) + self._invert.connect('clicked', self._invert_control_cb) + #################################################### + #self.time_freq_state = self.wave_copy.get_fft_mode() #self._time.set_active(not(self.time_freq_state)) #self._freq.set_active(self.time_freq_state) + self.wave_copy.set_invert_state(False) + print "##### invert state: " + str(self.wave_copy.get_invert_state()) + self.freq_low_img = gtk.Image() self.freq_high_img = gtk.Image() @@ -99,17 +109,17 @@ class SoundToolbar(gtk.Toolbar): self.freq_low_img_tool.add(self.freq_low_img) self.freq_high_img_tool.add(self.freq_high_img) - - #######################frequency control##################### + ################ frequency control ################# self.adjustmentf = gtk.Adjustment(70, 10, 70 ,20, 20, 0.0) - self.adjustmentf.connect("value_changed", self.cb_page_sizef, self.adjustmentf) + self.adjustmentf.connect("value_changed", self.cb_page_sizef, \ + self.adjustmentf) self._freq_range = gtk.HScale(self.adjustmentf) 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_tool = gtk.ToolItem() self._freq_range_tool.add(self._freq_range) - ############################################################ + #################################################### self.insert(self.freq_low_img_tool,-1) self.insert(self._freq_range_tool, -1) @@ -121,7 +131,7 @@ class SoundToolbar(gtk.Toolbar): self.freq_low_img_tool.show() self.freq_high_img_tool.show() - #######################pause button###################### + ################## pause button #################### self._pause = ToolButton('media-playback-pause') self.insert(self._pause, -1) self._pause.show() @@ -136,19 +146,21 @@ class SoundToolbar(gtk.Toolbar): self.loginterval_img = gtk.Image() - self.loginterval_img.set_from_file(config.ICONS_DIR + '/sample_rate.svg') + self.loginterval_img.set_from_file(config.ICONS_DIR + \ + '/sample_rate.svg') self.loginterval_img_tool = gtk.ToolItem() self.loginterval_img_tool.add(self.loginterval_img) self.insert(self.loginterval_img_tool,-1) self.loginterval_img.show() self.loginterval_img_tool.show() - - #######################Logging Interval##################### + ################# Logging Interval ################# self._loginterval_combo = ComboBox() - self.interval = [_('Now'), _('30 seconds') , _('2 minutes'), _('10 minutes') , _('30 minutes') ] + self.interval = [_('Now'), _('30 seconds') , _('2 minutes'), \ + _('10 minutes') , _('30 minutes') ] - self._interval_changed_id = self._loginterval_combo.connect("changed", self.loginterval_control) + self._interval_changed_id = self._loginterval_combo.connect("changed",\ + self.loginterval_control) for i, s in enumerate(self.interval): self._loginterval_combo.append_item(i, s, None) @@ -159,17 +171,15 @@ class SoundToolbar(gtk.Toolbar): self.insert(self._loginterval_tool,-1) self._loginterval_tool.show() self.logginginterval_status = 'picture' - ############################################################ + #################################################### - #######################Start Logging/Stop Logging##################### + ############## Start Logging/Stop Logging ########## self._record = ToolButton('media-record') self.insert(self._record, -1) self._record.show() self._record.set_tooltip(_('Start Recording')) self._record.connect('clicked', self.record_control) - ###################################################################### - - + #################################################### def record_control(self, data=None): """Depending upon the selected interval, does either @@ -182,7 +192,6 @@ class SoundToolbar(gtk.Toolbar): self._record.set_icon('media-playback-stop') self._record.show() self._record.set_tooltip(_('Stop Recording')) - if interval==0: self._record.set_icon('media-record') self._record.show() @@ -199,10 +208,9 @@ class SoundToolbar(gtk.Toolbar): self._record.show() self._record.set_tooltip(_('Start Recording')) - def interval_convert(self): - """Converts picture/time interval to an integer - which denotes the number of times the audiograb buffer must be called before a value is written. + """Converts picture/time interval to an integer which 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 1second= about 66 ticks at 48khz sampling""" if self.logginginterval_status == 'picture': @@ -215,11 +223,8 @@ class SoundToolbar(gtk.Toolbar): return 53340 elif self.logginginterval_status == '30minute': return 160000 - - def loginterval_control(self, combobox): - if (self._loginterval_combo.get_active() != -1): if (self._loginterval_combo.get_active() == 0): self.logginginterval_status = 'picture' @@ -232,31 +237,20 @@ class SoundToolbar(gtk.Toolbar): if (self._loginterval_combo.get_active() == 3): self.logginginterval_status = '30minute' - - - def _pauseplay_control_cb(self, data=None): - if self.audiograb_copy.get_freeze_the_display()==True: self.audiograb_copy.set_freeze_the_display(False) self._pause.set_icon('media-playback-pause-insensitive') self._pause.set_tooltip(_('Unfreeze the display')) self._pause.show() - return False - - if self.audiograb_copy.get_freeze_the_display()==False: + else: self.audiograb_copy.set_freeze_the_display(True) self._pause.set_icon('media-playback-pause') self._pause.set_tooltip(_('Freeze the display')) self._pause.show() - return False - return False - - def _timefreq_control_cb(self, data=None, time_state=True): - if time_state==True and self.wave_copy.get_fft_mode()==True: self.wave_copy.set_fft_mode(False) self._time.set_icon('domain-time2') @@ -265,7 +259,6 @@ class SoundToolbar(gtk.Toolbar): self._freq.show() self._update_string_for_textbox() return False - if time_state==False and self.wave_copy.get_fft_mode()==False: self.wave_copy.set_fft_mode(True) self._time.set_icon('domain-time') @@ -273,63 +266,68 @@ class SoundToolbar(gtk.Toolbar): self._time.show() self._freq.show() self._update_string_for_textbox() - return False - return False + def _invert_control_cb(self, data=None): + print "invert_control_cb; current state: " + \ + str(self.wave_copy.get_invert_state()) + if self.wave_copy.get_invert_state()==True: + self.wave_copy.set_invert_state(False) + print "invert_control_cb; changing to False" + self._invert.set_icon('invert') + self._invert.show() + else: + self.wave_copy.set_invert_state(True) + print "invert_control_cb; changing to True" + self._invert.set_icon('invert2') + self._invert.show() + return False def cb_page_sizef(self, get, data=None): - if(get.value>=10 and get.value<20): self._freq_range.set_value(10) self.audiograb_copy.set_sampling_rate(4000) self.wave_copy.set_freq_range(1) - if(get.value>=20 and get.value<46): self._freq_range.set_value(30) self.audiograb_copy.set_sampling_rate(4000) self.wave_copy.set_freq_range(2) - if(get.value>=46 and get.value<62): self._freq_range.set_value(50) self.audiograb_copy.set_sampling_rate(16000) self.wave_copy.set_freq_range(3) - if(get.value>=62 and get.value<=70): self._freq_range.set_value(70) self.audiograb_copy.set_sampling_rate(48000) self.wave_copy.set_freq_range(4) - self._update_string_for_textbox() - return True - def calculate_x_axis_scale(self): sampling_rate = self.audiograb_copy.get_sampling_rate() draw_interval = self.wave_copy.get_drawing_interval() - if self.wave_copy.get_fft_mode() == False: scale = (50000.0/sampling_rate)/draw_interval #TODO: fix this [:4] bad bad hack! - self._STR_SCALEX = self._STR_XAXIS1 + str(scale)[:4] + self._STR_XAXIS2 + self._STR_SCALEX = self._STR_XAXIS1 + str(scale)[:4] + \ + self._STR_XAXIS2 return else: #TODO: fix this [:4] bad bad hack! scale = 1.04167/draw_interval - self._STR_SCALEX = self._STR_XAXIS1 + str(scale)[:4] + self._STR_XAXIS3 + self._STR_SCALEX = self._STR_XAXIS1 + str(scale)[:4] + \ + self._STR_XAXIS3 return - def context_off(self): - """When some other context is switched to and the sound context is switched off""" + """When some other context is switched to and the sound context + is switched off""" self.g, self.y_mag = self.wave_copy.get_mag_params() self.capture_gain = self.audiograb_copy.get_capture_gain() self.mic_boost = self.audiograb_copy.get_mic_boost() self.audiograb_copy.stop_sound_device() self.wave_copy.set_fft_mode(False) - def context_on(self): """When the sound context is switched on""" self.audiograb_copy.start_sound_device() @@ -341,7 +339,6 @@ class SoundToolbar(gtk.Toolbar): self.wave_copy.set_mag_params(self.g, self.y_mag) self._update_string_for_textbox() - def _update_string_for_textbox(self): self.calculate_x_axis_scale() self.string_for_textbox = "" |