Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/sound_toolbar.py
diff options
context:
space:
mode:
Diffstat (limited to 'sound_toolbar.py')
-rw-r--r--sound_toolbar.py111
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 = ""