Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWalter Bender <walter@walter-laptop.(none)>2009-09-30 15:07:06 (GMT)
committer Walter Bender <walter@walter-laptop.(none)>2009-09-30 15:07:06 (GMT)
commit49b755a0ed642777d6251098181377d2a6b7fbb7 (patch)
tree079f9d5fb14fae5a459f14c275a4a2af4b731b8b
parent5a1e4f982f74299e650cd551781c6d928458ced9 (diff)
numerous patches to clean up and speed up code by benzea et al.
-rw-r--r--MANIFEST158
-rw-r--r--[-rwxr-xr-x]NEWS6
-rw-r--r--[-rwxr-xr-x]SOURCES0
-rwxr-xr-xactivity/activity.info2
-rw-r--r--[-rwxr-xr-x]activity/activity.info~2
-rw-r--r--[-rwxr-xr-x]audiograb.py28
-rw-r--r--[-rwxr-xr-x]config.py25
-rw-r--r--[-rwxr-xr-x]drawwaveform.py437
-rw-r--r--[-rwxr-xr-x]journal.py0
-rw-r--r--locale/am/LC_MESSAGES/org.laptop.MeasureActivity.mobin404 -> 0 bytes
-rw-r--r--locale/am/activity.linfo2
-rw-r--r--locale/ar/LC_MESSAGES/org.laptop.MeasureActivity.mobin667 -> 0 bytes
-rw-r--r--locale/ar/activity.linfo2
-rw-r--r--locale/ay/LC_MESSAGES/org.laptop.MeasureActivity.mobin404 -> 0 bytes
-rw-r--r--locale/ay/activity.linfo2
-rw-r--r--locale/bg/LC_MESSAGES/org.laptop.MeasureActivity.mobin2045 -> 0 bytes
-rw-r--r--locale/bg/activity.linfo2
-rw-r--r--locale/bn/LC_MESSAGES/org.laptop.MeasureActivity.mobin1093 -> 0 bytes
-rw-r--r--locale/bn/activity.linfo2
-rw-r--r--locale/bn_IN/LC_MESSAGES/org.laptop.MeasureActivity.mobin2163 -> 0 bytes
-rw-r--r--locale/bn_IN/activity.linfo2
-rw-r--r--locale/ca/LC_MESSAGES/org.laptop.MeasureActivity.mobin1451 -> 0 bytes
-rw-r--r--locale/ca/activity.linfo2
-rw-r--r--locale/de/LC_MESSAGES/org.laptop.MeasureActivity.mobin1727 -> 0 bytes
-rw-r--r--locale/de/activity.linfo2
-rw-r--r--locale/dz/LC_MESSAGES/org.laptop.MeasureActivity.mobin404 -> 0 bytes
-rw-r--r--locale/dz/activity.linfo2
-rw-r--r--locale/el/LC_MESSAGES/org.laptop.MeasureActivity.mobin1990 -> 0 bytes
-rw-r--r--locale/el/activity.linfo2
-rw-r--r--locale/en/LC_MESSAGES/org.laptop.MeasureActivity.mobin404 -> 0 bytes
-rw-r--r--locale/en/activity.linfo2
-rw-r--r--locale/es/LC_MESSAGES/org.laptop.MeasureActivity.mobin1682 -> 0 bytes
-rw-r--r--locale/es/activity.linfo2
-rw-r--r--locale/fa/LC_MESSAGES/org.laptop.MeasureActivity.mobin1891 -> 0 bytes
-rw-r--r--locale/fa/activity.linfo2
-rw-r--r--locale/fa_AF/LC_MESSAGES/org.laptop.MeasureActivity.mobin1950 -> 0 bytes
-rw-r--r--locale/fa_AF/activity.linfo2
-rw-r--r--locale/ff/LC_MESSAGES/org.laptop.MeasureActivity.mobin404 -> 0 bytes
-rw-r--r--locale/ff/activity.linfo2
-rw-r--r--locale/fr/LC_MESSAGES/org.laptop.MeasureActivity.mobin2512 -> 0 bytes
-rw-r--r--locale/fr/activity.linfo2
-rw-r--r--locale/ha/LC_MESSAGES/org.laptop.MeasureActivity.mobin404 -> 0 bytes
-rw-r--r--locale/ha/activity.linfo2
-rw-r--r--locale/hi/LC_MESSAGES/org.laptop.MeasureActivity.mobin1466 -> 0 bytes
-rw-r--r--locale/hi/activity.linfo2
-rw-r--r--locale/ig/LC_MESSAGES/org.laptop.MeasureActivity.mobin404 -> 0 bytes
-rw-r--r--locale/ig/activity.linfo2
-rw-r--r--locale/is/LC_MESSAGES/org.laptop.MeasureActivity.mobin442 -> 0 bytes
-rw-r--r--locale/is/activity.linfo2
-rw-r--r--locale/ja/LC_MESSAGES/org.laptop.MeasureActivity.mobin637 -> 0 bytes
-rw-r--r--locale/ja/activity.linfo2
-rw-r--r--locale/mk/LC_MESSAGES/org.laptop.MeasureActivity.mobin1354 -> 0 bytes
-rw-r--r--locale/mk/activity.linfo2
-rw-r--r--locale/ml/LC_MESSAGES/org.laptop.MeasureActivity.mobin404 -> 0 bytes
-rw-r--r--locale/ml/activity.linfo2
-rw-r--r--locale/mn/LC_MESSAGES/org.laptop.MeasureActivity.mobin851 -> 0 bytes
-rw-r--r--locale/mn/activity.linfo2
-rw-r--r--locale/ne/LC_MESSAGES/org.laptop.MeasureActivity.mobin1935 -> 0 bytes
-rw-r--r--locale/ne/activity.linfo2
-rw-r--r--locale/nl/LC_MESSAGES/org.laptop.MeasureActivity.mobin2517 -> 0 bytes
-rw-r--r--locale/nl/activity.linfo2
-rw-r--r--locale/pa/LC_MESSAGES/org.laptop.MeasureActivity.mobin404 -> 0 bytes
-rw-r--r--locale/pa/activity.linfo2
-rw-r--r--locale/pl/LC_MESSAGES/org.laptop.MeasureActivity.mobin404 -> 0 bytes
-rw-r--r--locale/pl/activity.linfo2
-rw-r--r--locale/ps/LC_MESSAGES/org.laptop.MeasureActivity.mobin1840 -> 0 bytes
-rw-r--r--locale/ps/activity.linfo2
-rw-r--r--locale/pseudo/LC_MESSAGES/org.laptop.MeasureActivity.mobin404 -> 0 bytes
-rw-r--r--locale/pseudo/activity.linfo2
-rw-r--r--locale/pt/LC_MESSAGES/org.laptop.MeasureActivity.mobin1586 -> 0 bytes
-rw-r--r--locale/pt/activity.linfo2
-rw-r--r--locale/pt_BR/LC_MESSAGES/org.laptop.MeasureActivity.mobin882 -> 0 bytes
-rw-r--r--locale/pt_BR/activity.linfo2
-rw-r--r--locale/qu/LC_MESSAGES/org.laptop.MeasureActivity.mobin404 -> 0 bytes
-rw-r--r--locale/qu/activity.linfo2
-rw-r--r--locale/ro/LC_MESSAGES/org.laptop.MeasureActivity.mobin1207 -> 0 bytes
-rw-r--r--locale/ro/activity.linfo2
-rw-r--r--locale/ru/LC_MESSAGES/org.laptop.MeasureActivity.mobin2136 -> 0 bytes
-rw-r--r--locale/ru/activity.linfo2
-rw-r--r--locale/rw/LC_MESSAGES/org.laptop.MeasureActivity.mobin1574 -> 0 bytes
-rw-r--r--locale/rw/activity.linfo2
-rw-r--r--locale/te/LC_MESSAGES/org.laptop.MeasureActivity.mobin2242 -> 0 bytes
-rw-r--r--locale/te/activity.linfo2
-rw-r--r--locale/th/LC_MESSAGES/org.laptop.MeasureActivity.mobin2126 -> 0 bytes
-rw-r--r--locale/th/activity.linfo2
-rw-r--r--locale/ur/LC_MESSAGES/org.laptop.MeasureActivity.mobin1899 -> 0 bytes
-rw-r--r--locale/ur/activity.linfo2
-rw-r--r--locale/yo/LC_MESSAGES/org.laptop.MeasureActivity.mobin404 -> 0 bytes
-rw-r--r--locale/yo/activity.linfo2
-rw-r--r--[-rwxr-xr-x]measure.py10
-rw-r--r--sensor_toolbar.py7
-rw-r--r--sound_toolbar.py81
-rw-r--r--[-rwxr-xr-x]toolbar_side.py0
-rw-r--r--[-rwxr-xr-x]toolbar_top.py0
94 files changed, 326 insertions, 510 deletions
diff --git a/MANIFEST b/MANIFEST
deleted file mode 100644
index cff9400..0000000
--- a/MANIFEST
+++ /dev/null
@@ -1,158 +0,0 @@
-graphs.py
-audiograb.py
-log3.csv
-NEWS
-toolbar_top.py
-log1.csv
-measure.py
-journal.py
-config.py
-SOURCES
-logging_ui.py
-sheet_ui.py
-sheet.py
-setup.py
-sensor_toolbar.py
-textbox.py
-drawwaveform.py
-toolbar_side.py
-README
-sound_toolbar.py
-locale/de/activity.linfo
-locale/de/LC_MESSAGES/org.laptop.MeasureActivity.mo
-locale/ig/activity.linfo
-locale/ig/LC_MESSAGES/org.laptop.MeasureActivity.mo
-locale/am/activity.linfo
-locale/am/LC_MESSAGES/org.laptop.MeasureActivity.mo
-locale/pt/activity.linfo
-locale/pt/LC_MESSAGES/org.laptop.MeasureActivity.mo
-locale/nl/activity.linfo
-locale/nl/LC_MESSAGES/org.laptop.MeasureActivity.mo
-locale/bg/activity.linfo
-locale/bg/LC_MESSAGES/org.laptop.MeasureActivity.mo
-locale/yo/activity.linfo
-locale/yo/LC_MESSAGES/org.laptop.MeasureActivity.mo
-locale/fr/activity.linfo
-locale/fr/LC_MESSAGES/org.laptop.MeasureActivity.mo
-locale/mk/activity.linfo
-locale/mk/LC_MESSAGES/org.laptop.MeasureActivity.mo
-locale/th/activity.linfo
-locale/th/LC_MESSAGES/org.laptop.MeasureActivity.mo
-locale/es/activity.linfo
-locale/es/LC_MESSAGES/org.laptop.MeasureActivity.mo
-locale/ne/activity.linfo
-locale/ne/LC_MESSAGES/org.laptop.MeasureActivity.mo
-locale/qu/activity.linfo
-locale/qu/LC_MESSAGES/org.laptop.MeasureActivity.mo
-locale/en/activity.linfo
-locale/en/LC_MESSAGES/org.laptop.MeasureActivity.mo
-locale/ps/activity.linfo
-locale/ps/LC_MESSAGES/org.laptop.MeasureActivity.mo
-locale/pa/activity.linfo
-locale/pa/LC_MESSAGES/org.laptop.MeasureActivity.mo
-locale/fa_AF/activity.linfo
-locale/fa_AF/LC_MESSAGES/org.laptop.MeasureActivity.mo
-locale/rw/activity.linfo
-locale/rw/LC_MESSAGES/org.laptop.MeasureActivity.mo
-locale/hi/activity.linfo
-locale/hi/LC_MESSAGES/org.laptop.MeasureActivity.mo
-locale/te/activity.linfo
-locale/te/LC_MESSAGES/org.laptop.MeasureActivity.mo
-locale/ru/activity.linfo
-locale/ru/LC_MESSAGES/org.laptop.MeasureActivity.mo
-locale/ur/activity.linfo
-locale/ur/LC_MESSAGES/org.laptop.MeasureActivity.mo
-locale/bn/activity.linfo
-locale/bn/LC_MESSAGES/org.laptop.MeasureActivity.mo
-locale/ja/activity.linfo
-locale/ja/LC_MESSAGES/org.laptop.MeasureActivity.mo
-locale/el/activity.linfo
-locale/el/LC_MESSAGES/org.laptop.MeasureActivity.mo
-locale/ml/activity.linfo
-locale/ml/LC_MESSAGES/org.laptop.MeasureActivity.mo
-locale/ro/activity.linfo
-locale/ro/LC_MESSAGES/org.laptop.MeasureActivity.mo
-locale/pl/activity.linfo
-locale/pl/LC_MESSAGES/org.laptop.MeasureActivity.mo
-locale/ay/activity.linfo
-locale/ay/LC_MESSAGES/org.laptop.MeasureActivity.mo
-locale/is/activity.linfo
-locale/is/LC_MESSAGES/org.laptop.MeasureActivity.mo
-locale/ff/activity.linfo
-locale/ff/LC_MESSAGES/org.laptop.MeasureActivity.mo
-locale/mn/activity.linfo
-locale/mn/LC_MESSAGES/org.laptop.MeasureActivity.mo
-locale/pt_BR/activity.linfo
-locale/pt_BR/LC_MESSAGES/org.laptop.MeasureActivity.mo
-locale/ha/activity.linfo
-locale/ha/LC_MESSAGES/org.laptop.MeasureActivity.mo
-locale/ca/activity.linfo
-locale/ca/LC_MESSAGES/org.laptop.MeasureActivity.mo
-locale/bn_IN/activity.linfo
-locale/bn_IN/LC_MESSAGES/org.laptop.MeasureActivity.mo
-locale/dz/activity.linfo
-locale/dz/LC_MESSAGES/org.laptop.MeasureActivity.mo
-locale/fa/activity.linfo
-locale/fa/LC_MESSAGES/org.laptop.MeasureActivity.mo
-locale/ar/activity.linfo
-locale/ar/LC_MESSAGES/org.laptop.MeasureActivity.mo
-activity/activity-measure.svg
-activity/activity.info
-po/mk.po
-po/ml.po
-po/ne.po
-po/ro.po
-po/el.po
-po/yo.po
-po/rw.po
-po/am.po
-po/ja.po
-po/fa_AF.po
-po/te.po
-po/bn.po
-po/ar.po
-po/fa.po
-po/bn_IN.po
-po/ps.po
-po/ay.po
-po/es.po
-po/pa.po
-po/fr.po
-po/Measure.pot
-po/en.po
-po/ha.po
-po/bg.po
-po/nl.po
-po/hi.po
-po/is.po
-po/ff.po
-po/de.po
-po/mn.po
-po/pt.po
-po/th.po
-po/pt_BR.po
-po/ru.po
-po/dz.po
-po/ca.po
-po/ig.po
-po/pl.po
-po/ur.po
-po/qu.po
-icons/bias-on.svg
-icons/bias-off2.svg
-icons/domain-freq2.svg
-icons/bias-off.svg
-icons/view-details.svg
-icons/freq-high.svg
-icons/domain-freq.svg
-icons/amp-low.svg
-icons/domain-time2.svg
-icons/sample_rate.svg
-icons/current-dc.svg
-icons/amp-high.svg
-icons/domain-time.svg
-icons/bias-on2.svg
-icons/current-ac.svg
-icons/invert2.svg
-icons/invert.svg
-icons/freq-low.svg
diff --git a/NEWS b/NEWS
index 1af9717..e89b933 100755..100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,9 @@
+28
+* numerous patches to speed up code by Benjamin and Sebastian Berg
+
+27
+* added exceot for gconf for old builds
+
26
* fixed toolbar display bug
* cleaned up sound record code
diff --git a/SOURCES b/SOURCES
index 089ff2a..089ff2a 100755..100644
--- a/SOURCES
+++ b/SOURCES
diff --git a/activity/activity.info b/activity/activity.info
index 27b3064..0a61a4b 100755
--- a/activity/activity.info
+++ b/activity/activity.info
@@ -3,7 +3,7 @@ name = Measure
service_name = org.laptop.MeasureActivity
class = measure.MeasureActivity
icon = activity-measure
-activity_version = 26
+activity_version = 28
show_launcher = yes
license = GPLv2+
update_url = http://wiki.laptop.org/go/Activities/G1G1
diff --git a/activity/activity.info~ b/activity/activity.info~
index 5334e19..27b3064 100755..100644
--- a/activity/activity.info~
+++ b/activity/activity.info~
@@ -3,7 +3,7 @@ name = Measure
service_name = org.laptop.MeasureActivity
class = measure.MeasureActivity
icon = activity-measure
-activity_version = 23
+activity_version = 26
show_launcher = yes
license = GPLv2+
update_url = http://wiki.laptop.org/go/Activities/G1G1
diff --git a/audiograb.py b/audiograb.py
index f9dd512..ef0fcde 100755..100644
--- a/audiograb.py
+++ b/audiograb.py
@@ -3,6 +3,7 @@
# Author: Arjun Sarwal arjun@laptop.org
# Copyright (C) 2007, Arjun Sarwal
# Copyright (C) 2009, Walter Bender
+# Copyright (C) 2009, Benjamin Berg, Sebastian Berg
#
# 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
@@ -24,7 +25,7 @@ import gst
import gobject
import os
import subprocess
-from struct import unpack
+import numpy as np
from string import find
import config #This has all the golabals
@@ -37,7 +38,7 @@ class AudioGrab():
self.ji = journal
self.sensor = None
- self.temp_buffer = []
+ self.temp_buffer = [0]
self.picture_buffer = []
self.draw_graph_status = False
@@ -86,19 +87,19 @@ class AudioGrab():
"""Sets whether the handoff signal would generate an interrupt or not"""
self.fakesink.set_property("signal-handoffs",handoff_state)
- def _new_buffer(self,buf):
+ def _new_buffer(self, buf):
if self.dont_queue_the_buffer == False:
- self.callable1(str(buf))
+ self.temp_buffer = buf
+ self.callable1(buf)
else:
pass
def on_buffer(self, element, buffer, pad):
"""The function that is called whenever new data is available
This is the signal handler for the handoff signal"""
- self.temp_buffer = buffer
+ temp_buffer = np.fromstring(buffer, 'int16')
if self.dont_queue_the_buffer == False:
- gobject.timeout_add(config.AUDIO_BUFFER_TIMEOUT,\
- self._new_buffer, self.temp_buffer)
+ self._new_buffer(temp_buffer)
else:
pass
if self.logging_state==True:
@@ -108,9 +109,7 @@ class AudioGrab():
self.ji.stop_session()
else:
if self.counter_buffer == self.buffer_interval_logging:
- #gobject.timeout_add(300, self._emit_for_logging, \
- # self.temp_buffer)
- self._emit_for_logging(str(self.temp_buffer))
+ self._emit_for_logging(temp_buffer)
self.counter_buffer=0
self.counter_buffer+=1
# If a record is to be written, thats all for the logging session
@@ -141,12 +140,11 @@ class AudioGrab():
self.ji.take_screenshot(self.waveform_id)
self.waveform_id+=1
else:
- temp_buf = list(unpack( str(int(len(buf))/2)+'h' , buf))
# save value to Journal
- self.ji.write_value(temp_buf[0])
+ self.ji.write_value(buf[0])
# display value on Sensor toolbar
try:
- self.sensor.set_sample_value(str(temp_buf[0]))
+ self.sensor.set_sample_value(str(buf[0]))
except:
pass
@@ -197,9 +195,7 @@ class AudioGrab():
def take_picture(self):
"""Used to grab and temporarily store the current buffer"""
- self.picture_buffer = \
- list(unpack(str(int(len(str(self.temp_buffer)))/2)+'h',\
- str(self.temp_buffer)))
+ self.picture_buffer = self.temp_buffer.copy()
def set_logging_state(self, start_stop=False):
"""Sets whether buffer is to be emited for logging (True) or not
diff --git a/config.py b/config.py
index 5c0e810..baedd62 100755..100644
--- a/config.py
+++ b/config.py
@@ -1,3 +1,22 @@
+# Author: Arjun Sarwal arjun@laptop.org
+# Copyright (C) 2007, Arjun Sarwal
+# Copyright (C) 2009, Walter Bender
+# Copyright (C) 2009, Benjamin Berg, Sebastian Berg
+#
+# 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
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
import os
import os.path
import tempfile
@@ -6,12 +25,6 @@ from sugar.activity import activity
MEASURE_ROOT = activity.get_bundle_path()
ICONS_DIR = MEASURE_ROOT + '/icons'
-
-#Waveform drawing area dimensions
-WINDOW_W=1200.0
-WINDOW_H=700.0
-
-
#In milliseconds, the delay interval after which the waveform draw function will be queued"
REFRESH_TIME = 30
diff --git a/drawwaveform.py b/drawwaveform.py
index 8dccd44..bc0a788 100755..100644
--- a/drawwaveform.py
+++ b/drawwaveform.py
@@ -3,6 +3,7 @@
# Author: Arjun Sarwal arjun@laptop.org
# Copyright (C) 2007, Arjun Sarwal
# Copyright (C) 2009, Walter Bender
+# Copyright (C) 2009, Benjamin Berg, Sebastian Berg
#
# 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
@@ -18,25 +19,22 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-import pygst
-pygst.require("0.10")
import pygtk
import gtk
import cairo
import gobject
import time
-from struct import unpack
import pango
import os
import audioop
import math
+import numpy as np
+from ringbuffer import RingBuffer1d
from gtk import gdk
try:
import gconf
except:
from sugar import profile
-from numpy.oldnumeric import *
-from numpy.fft import *
from gettext import gettext as _
@@ -45,43 +43,44 @@ import config #This has all the globals
class DrawWaveform(gtk.DrawingArea):
- def __init__(self):
+ __gtype_name__ = "MeasureDrawWaveform"
+
+ def __init__(self, input_frequency=48000):
gtk.DrawingArea.__init__(self)
- self.buffers = []
+ self._input_freq = input_frequency
+ self.stroke_color = None
+ self.triggering = True
+
+ self.buffers = np.array([])
+ self.main_buffers = np.array([])
self.str_buffer=''
- self.buffers_temp=[]
- self.integer_buffer=[]
self.peaks = []
- self.main_buffers = []
self.fftx = []
+ self._tick_size = 50
+
self.rms=''
self.avg=''
- self.pp=''
+ self.pp=''
self.count=0
self.invert=False
- self.param1= config.WINDOW_H/65536.0
- self.param2= config.WINDOW_H/2.0
self.y_mag = 3.0
- self.g = 1 #Gain (not in dB) introduced by Capture Gain and Mic Boost
- self._freq_range = 4 #See comment in sound_toolbar.py re freq_range
+ self.g = 1 #Gain (not in dB) introduced by Capture Gain and Mic Boost
+ self._freq_range = 4 #See comment in sound_toolbar.py to see what different ranges are all about
self.draw_interval = 10
self.num_of_points = 115
self.details_iter = 50
self.c = 1180
self.m = 0.0238
self.k = 0.0238
- self.c2 = 139240 #c squared
- self.t_x = (int)(config.TEXT_X_M*config.WINDOW_W)
- self.t_y = (int)(config.TEXT_Y_M*config.WINDOW_H)
+ self.c2 = 139240 #c squared
self.rms = 0
self.avg = 0
self.Rv = 0
- # constant to multiply with self.param2 while scaling values
- self.y_mag_bias_multiplier = 1
+ # constant to multiply with self.param2 while scaling values
self.log_param1 = ""
self.log_param2 = ""
self.log_param3 = ""
@@ -100,9 +99,7 @@ class DrawWaveform(gtk.DrawingArea):
self.scaleX = str( 1.04167/self.draw_interval ) + " ms"
self.scaleY = ""
-
- self._line_gc = None
- self._back_surf = None
+ self._back_surf = None
self.pango_context = self.create_pango_context()
#self.font_desc = pango.FontDescription('Serif 6')
self.expose_event_id = self.connect("expose_event", self._expose)
@@ -123,15 +120,15 @@ class DrawWaveform(gtk.DrawingArea):
self.graph_id = []
for x in range (0, self.MAX_GRAPHS):
- self.graph_show_state.append(False)
- self.Xstart.append(0)
- self.Ystart.append(50)
- self.Xend.append(1000)
- self.Yend.append(500)
- self.type .append(0)
- self.color.append([65535,0,0])
- self.source.append(0)
- self.graph_id.append(x)
+ self.graph_show_state.append(False)
+ self.Xstart.append(0)
+ self.Ystart.append(50)
+ self.Xend.append(1000)
+ self.Yend.append(500)
+ self.type .append(0)
+ self.color.append([65535,0,0])
+ self.source.append(0)
+ self.graph_id.append(x)
self.graph_show_state[0]=True
self.Xstart[0] = 0
@@ -139,7 +136,7 @@ class DrawWaveform(gtk.DrawingArea):
self.Xend[0] = 1150
self.Yend[0] = 750
self.type[0] = 0
- self.color[0] = [65535,0,65535]
+ self.color[0] = self.get_stroke_color_from_sugar()
self.source[0] = 0
"""
@@ -172,19 +169,30 @@ class DrawWaveform(gtk.DrawingArea):
"""
self.max_samples = 115
+ self.max_samples_fact = 3
+
+ self.time_div = 1.
+ self.freq_div = 1.
+ self.input_step = 1
+
+ self.ringbuffer = RingBuffer1d(self.max_samples, dtype='int16')
self.debug_str="start"
self.context = True
+
+
+ def set_max_samples(self, num):
+ if self.max_samples == num:
+ return
+ new_buffer = RingBuffer1d(num, dtype='int16')
+
+ new_buffer.append(self.ringbuffer.read())
+ self.ringbuffer = new_buffer
+ self.max_samples = num
def new_buffer(self, buf):
- buf = str(buf)
- self.str_buffer = buf
- tmp_val = (self.max_samples - 1)
- self.integer_buffer = list(unpack( str(int(len(buf))/2)+'h' , buf))
- if(len(self.main_buffers)>tmp_val):
- del self.main_buffers[0:(len(self.main_buffers)-tmp_val)]
- self.main_buffers += self.integer_buffer
+ self.ringbuffer.append(buf)
return True
def set_context_on(self):
@@ -206,25 +214,36 @@ class DrawWaveform(gtk.DrawingArea):
consecutive points"""
return self.draw_interval
- def _init_background(self):
- if self._back_surf:
- return
-
- colmap = self.get_colormap()
- clr = colmap.alloc_color(0, 65535, 0, False, False)
- self._line_gc = self.window.new_gc(foreground = clr)
- self._line_gc.set_line_attributes(self._FOREGROUND_LINE_THICKNESS,\
- gdk.LINE_SOLID,\
- gdk.CAP_ROUND, gdk.JOIN_BEVEL)
-
- self._back_surf = gdk.Pixmap(self.window, int(config.WINDOW_W), \
- int(config.WINDOW_H))
- cr = self._back_surf.cairo_create()
-
+ def do_size_allocate(self, allocation):
+ gtk.DrawingArea.do_size_allocate(self, allocation)
+ self._update_mode()
+
+ def do_realize(self):
+ gtk.DrawingArea.do_realize(self)
+
+ colormap = self.get_colormap()
+
+ self._line_gc = []
+ for graph_id in self.graph_id:
+ r, g, b = self.color[graph_id]
+ clr = colormap.alloc_color(r, g, b, False, False)
+
+ self._line_gc.append(self.window.new_gc(foreground=clr))
+ self._line_gc[graph_id].set_line_attributes( \
+ self._FOREGROUND_LINE_THICKNESS, gdk.LINE_SOLID, \
+ gdk.CAP_ROUND, gdk.JOIN_BEVEL)
+
+ self._line_gc[graph_id].set_foreground(clr)
+
+ # Background pixmap
+ clr = colormap.alloc_color(0, 65535, 0, False, False)
+
+ back_surf = gdk.Pixmap(self.window, self._tick_size, self._tick_size)
+ cr = back_surf.cairo_create()
+
#background
cr.set_source_rgb(0, 0, 0)
- cr.rectangle(0, 0, config.WINDOW_W, config.WINDOW_H)
- cr.fill()
+ cr.paint()
#grid
cr.set_line_width(self._BACKGROUND_LINE_THICKNESS)
@@ -233,128 +252,96 @@ class DrawWaveform(gtk.DrawingArea):
x = 0
y = 0
- for j in range(1, 25):
- cr.move_to(x, y)
- cr.rel_line_to(0, config.WINDOW_H)
- x = x + 50
+ for j in range(0, 2):
+ cr.move_to(x, y)
+ cr.rel_line_to(0, self._tick_size)
+ x = x + self._tick_size
- cr.set_line_width(self._BACKGROUND_LINE_THICKNESS)
x = 0
y = 0
- for j in range(1, 17):
- cr.move_to(x, y)
- cr.rel_line_to(config.WINDOW_W, 0)
- y = y + 50
+ for j in range(0, 2):
+ cr.move_to(x, y)
+ cr.rel_line_to(self._tick_size, 0)
+ y = y + self._tick_size
+
+ cr.set_line_width(self._BACKGROUND_LINE_THICKNESS)
+ cr.stroke()
- cr.stroke()
+ del cr
+ self.window.set_back_pixmap(back_surf, False)
def _expose(self, widget, event):
- """This function is the "expose" event handler and does all the
- drawing"""
-
- ##################### Real time drawing ###################
- if(self.context == True):
-
- #Draw the background
- #We could probably make this faster with another pixmap.
- self._init_background()
- self.window.draw_drawable(self.get_style().bg_gc[0], \
- self._back_surf, 0, 0, 0, 0, \
- config.WINDOW_W, config.WINDOW_H)
- #Iterate for each graph
- for graph_id in self.graph_id:
- if self.graph_show_state[graph_id] == True:
- span = self.Xend[graph_id]-self.Xstart[graph_id]
-
- if self._freq_range == 1:
- self.draw_interval = 4
- self.max_samples = span/self.draw_interval
- else:
- if span>=700:
- self.draw_interval = 10
- elif span<700 and span>=500:
- self.draw_interval = 7
- elif span<500 and span>=300:
- self.draw_interval = 5
+ """This function is the "expose" event handler and does all the drawing"""
+ #######################Real time drawing###################################
+ if self.context:
+
+ #Iterate for each graph
+ for graph_id in self.graph_id:
+ if self.graph_show_state[graph_id] == True:
+ buf = self.ringbuffer.read(None, self.input_step)
+ samples = math.ceil(self.allocation.width/self.draw_interval)
+ if len(buf) == 0:
+ # We don't have enough data to plot.
+ return
+
+ x_offset = 0
+
+ if (self.fft_show==False):
+ if self.triggering == True:
+ ints = buf[:-samples-3] <= 0
+ ints &= buf[1:-samples-2] > 0
+
+ ints = np.where(ints)[0]
+ if len(ints) == 0:
+ ints = len(buf) - samples
+ else:
+ ints = ints[-1]
+ x_offset = int((float(-buf[ints])/(buf[ints+1]-buf[ints]))*self.draw_interval+0.5)
+
+ data = buf[ints:ints+samples+2].astype(np.float64)
else:
- self.draw_interval = 3
- self.max_samples = span/self.draw_interval
-
- if(len(self.main_buffers)>=self.max_samples):
- del self.main_buffers[0:(len(self.main_buffers)-\
- (self.max_samples+1))]
-
- if(self.fft_show==False):
- self.y_mag_bias_multiplier = 1
- """ Depending upon the X span of the graph, deciding
- the total number of points to take """
+ data = buf[-samples:].astype(np.float64)
+
else:
- ############## FFT ###############
+ ###############FFT################
Fs = 48000
nfft = 65536
- if self.integer_buffer:
- self.integer_buffer = self.integer_buffer[0:256]
- self.fftx = fft(self.integer_buffer, 256,-1)
- self.fftx = self.fftx[0:self.max_samples]
- self.main_buffers = [(abs(x) * 0.02) \
- for x in self.fftx]
- self.y_mag_bias_multiplier=0.1
+
+ # Multiply input with the window
+ np.multiply(buf, self.fft_window, buf)
+
+ # Should be fast enough even without power of 2 stuff.
+ self.fftx = np.fft.rfft(buf)
+ self.fftx = abs(self.fftx)
+ data = np.multiply(self.fftx, 0.02, self.fftx)
##################################
-
-
- ################ Getting data #################
- if self.source[graph_id]==0:
- self.buffers=self.main_buffers
- else:
- pass #write code here that gets data from file
- ###############################################
- ########### Scaling the values ################
+ ################Scaling the values###################
if config.CONTEXT == 2:
self.y_mag = 1
- self.y_mag_bias_multiplier = 1
- self.param2= (self.Yend[graph_id]-self.Ystart[graph_id])/2.0
- self.param1= self.param2/32768.0
-
- val=[]
- for i in self.buffers:
- # only apply invert to time display
- if self.invert is True and self.fft_show is False:
- temp_val_float = -(self.param1*i*self.y_mag) +\
- (self.param2*self.y_mag_bias_multiplier)
- else:
- temp_val_float = (self.param1*i*self.y_mag) +\
- (self.param2*self.y_mag_bias_multiplier)
- if(temp_val_float>=self.Yend[graph_id]):
- temp_val_float= self.Yend[graph_id]
- if(temp_val_float<=self.Ystart[graph_id]):
- temp_val_float= self.Ystart[graph_id]
- val.append( config.WINDOW_H - temp_val_float )
-
- self.peaks=val
- ###############################################
-
- ###### The actual drawing of the graph ########
- """TODO: Improvement : The color setting shouldn't happen
- in every drawing loop, should happen only once"""
- colmap = self.get_colormap()
- r,g,b = self.get_stroke_color_from_sugar()
- clr = colmap.alloc_color( r, g, b, False, False)
- self._line_gc.set_foreground(clr)
-
- count = self.Xstart[graph_id]
- lines = []
- for peak in self.peaks:
- lines.append((count, peak))
- count = count + self.draw_interval
+
+ data *= (-self.allocation.height/32767.0 * self.y_mag)
+ if self.fft_show:
+ data += self.allocation.height - 3
+ else:
+ data += (self.allocation.height/2.0)
+
+ ################################################
+
+ ##########The actual drawing of the graph##################
+
+ lines = (np.arange(len(data), dtype='float32') * self.draw_interval) - x_offset
+
+ # We must make sure its int, or draw_lines will throw warnings
+ # and these warnings are slow (even though they are filtered)!
+ lines = zip(lines.astype('int'), data.astype('int'))
if self.type[graph_id] ==0:
- self.window.draw_lines(self._line_gc, lines)
+ self.window.draw_lines(self._line_gc[graph_id], lines)
else:
- self.window.draw_points(self._line_gc, lines)
- ###############################################
-
+ self.window.draw_points(self._line_gc[graph_id], lines)
+ ############################################################
"""
## DISPLAYING FRAMERATE FOR DEBUGGGIN
fr = 1.0/( time.time()-self.pr_time)
@@ -378,18 +365,16 @@ class DrawWaveform(gtk.DrawingArea):
1 - uses from file"""
self.source[graph_id] = source
- def set_graph_params(self, graph_id, Xstart, Ystart, Xend, Yend, type,\
- color):
- """Sets Xstart, Ystart --> the bottom left co-ordinates
- Xend, Yend --> the top right co-ordinates
- type --> 0 for a connected graph, 1 for a dotted graph
- color --> what color graph to draw"""
- self.Xstart[graph_id] = Xstart
- self.Ystart[graph_id] = Ystart
- self.Xend[graph_id] = Xend
- self.Yend[graph_id] = Yend
- self.type[graph_id] = type
- self.color[graph_id] = color
+ def set_div(self, time_div=0.0001, freq_div=10):
+ """Set division
+ """
+ self.time_div = time_div
+ self.freq_div = freq_div
+
+ self._update_mode()
+
+ def get_ticks(self):
+ return self.allocation.width/float(self._tick_size)
def get_fft_mode(self):
"""Returns if FFT is ON (True) or OFF (False)"""
@@ -398,46 +383,85 @@ class DrawWaveform(gtk.DrawingArea):
def set_fft_mode(self, fft_mode=False):
"""Sets whether FFT mode is ON (True) or OFF (False)"""
self.fft_show = fft_mode
+ self._update_mode()
def set_freq_range(self, freq_range=4):
"""See sound_toolbar to see what all frequency ranges are"""
self._freq_range = freq_range
+ def _update_mode(self):
+ if self.allocation.width <= 0:
+ return
+
+ if self.fft_show:
+ max_freq = (self.freq_div*self.get_ticks())
+ wanted_step = 1.0/max_freq/2*self._input_freq
+ self.input_step = max(math.floor(wanted_step), 1)
+
+ self.draw_interval = 5.0
+
+ self.set_max_samples(math.ceil(self.allocation.width/float(self.draw_interval)*2)*self.input_step)
+
+ # Create the (blackman) window
+ self.fft_window = np.blackman(math.ceil(self.allocation.width/float(self.draw_interval)*2))
+
+ self.draw_interval *= wanted_step/self.input_step
+ else:
+ # Factor is just for triggering:
+ time = (self.time_div*self.get_ticks())
+ if time == 0:
+ return
+ samples = time * self._input_freq
+ self.set_max_samples(samples * self.max_samples_fact)
+
+ self.input_step = max(math.ceil(samples/(self.allocation.width/3.0)),1)
+ self.draw_interval = self.allocation.width/(float(samples)/self.input_step)
+
+ self.fft_window = None
+
def get_stroke_color_from_sugar(self):
"""Returns in (r,g,b) format the stroke color from the Sugar profile"""
- try:
- client = gconf.client_get_default()
- color = client.get_string("/desktop/sugar/user/color")
- except:
- color = profile.get_color().to_string()
- stroke,fill = color.split(",")
- colorstring = stroke.strip()
- if colorstring[0] == '#':
- colorstring = colorstring[1:]
- r,g,b = colorstring[:2], colorstring[2:4], colorstring[4:]
- r+="00"
- g+="00"
- b+="00"
- r,g,b = [int(n, 16) for n in (r,g,b)]
- return (r,g,b)
-
- def get_fill_color_from_sugar(self):
- """Returns in (r,g,b) format the fill color from the Sugar profile"""
- try:
- client = gconf.client_get_default()
- color = client.get_string("/desktop/sugar/user/color")
- except:
- color = profile.get_color().to_string()
- stroke,fill = color.split(",")
- colorstring = fill.strip()
- if colorstring[0] == '#':
- colorstring = colorstring[1:]
- r,g,b = colorstring[:2], colorstring[2:4], colorstring[4:]
- r+="00"
- g+="00"
- b+="00"
- r,g,b = [int(n, 16) for n in (r,g,b)]
- return (r,g,b)
+ # Hitting gconf is a large overhead.
+ if self.stroke_color is None:
+ try:
+ client = gconf.client_get_default()
+ color = client.get_string("/desktop/sugar/user/color")
+ except:
+ color = profile.get_color().to_string()
+ stroke,fill = color.split(",")
+ colorstring = stroke.strip()
+ if colorstring[0] == '#':
+ colorstring = colorstring[1:]
+ r,g,b = colorstring[:2], colorstring[2:4], colorstring[4:]
+ r+=r
+ g+=g
+ b+=b
+ r,g,b = [int(n, 16) for n in (r,g,b)]
+ self.stroke_color = (r,g,b)
+
+ return self.stroke_color
+
+ #def get_fill_color_from_sugar(self):
+ # """Returns in (r,g,b) format the fill color from the Sugar profile"""
+ # # Hitting gconf is a large overhead.
+ # if self.fill_color is None:
+ # try:
+ # client = gconf.client_get_default()
+ # color = client.get_string("/desktop/sugar/user/color")
+ # except:
+ # color = profile.get_color().to_string()
+ # stroke,fill = color.split(",")
+ # colorstring = fill.strip()
+ # if colorstring[0] == '#':
+ # colorstring = colorstring[1:]
+ # r,g,b = colorstring[:2], colorstring[2:4], colorstring[4:]
+ # r+=r
+ # g+=g
+ # b+=b
+ # r,g,b = [int(n, 16) for n in (r,g,b)]
+ # self.fill_color = (r,g,b)
+ #
+ # return self.stroke_color = (r,g,b)
def get_mag_params(self):
return self.g, self.y_mag
@@ -445,3 +469,4 @@ class DrawWaveform(gtk.DrawingArea):
def set_mag_params(self, g=1.0, y_mag=3.0):
self.g = g
self.y_mag = y_mag
+
diff --git a/journal.py b/journal.py
index 8505707..8505707 100755..100644
--- a/journal.py
+++ b/journal.py
diff --git a/locale/am/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/am/LC_MESSAGES/org.laptop.MeasureActivity.mo
deleted file mode 100644
index c5361e7..0000000
--- a/locale/am/LC_MESSAGES/org.laptop.MeasureActivity.mo
+++ /dev/null
Binary files differ
diff --git a/locale/am/activity.linfo b/locale/am/activity.linfo
deleted file mode 100644
index 041f72c..0000000
--- a/locale/am/activity.linfo
+++ /dev/null
@@ -1,2 +0,0 @@
-[Activity]
-name = Measure
diff --git a/locale/ar/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/ar/LC_MESSAGES/org.laptop.MeasureActivity.mo
deleted file mode 100644
index aa9d06e..0000000
--- a/locale/ar/LC_MESSAGES/org.laptop.MeasureActivity.mo
+++ /dev/null
Binary files differ
diff --git a/locale/ar/activity.linfo b/locale/ar/activity.linfo
deleted file mode 100644
index a54992c..0000000
--- a/locale/ar/activity.linfo
+++ /dev/null
@@ -1,2 +0,0 @@
-[Activity]
-name = قياس
diff --git a/locale/ay/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/ay/LC_MESSAGES/org.laptop.MeasureActivity.mo
deleted file mode 100644
index c5361e7..0000000
--- a/locale/ay/LC_MESSAGES/org.laptop.MeasureActivity.mo
+++ /dev/null
Binary files differ
diff --git a/locale/ay/activity.linfo b/locale/ay/activity.linfo
deleted file mode 100644
index 041f72c..0000000
--- a/locale/ay/activity.linfo
+++ /dev/null
@@ -1,2 +0,0 @@
-[Activity]
-name = Measure
diff --git a/locale/bg/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/bg/LC_MESSAGES/org.laptop.MeasureActivity.mo
deleted file mode 100644
index 988e2b9..0000000
--- a/locale/bg/LC_MESSAGES/org.laptop.MeasureActivity.mo
+++ /dev/null
Binary files differ
diff --git a/locale/bg/activity.linfo b/locale/bg/activity.linfo
deleted file mode 100644
index 07c0c5e..0000000
--- a/locale/bg/activity.linfo
+++ /dev/null
@@ -1,2 +0,0 @@
-[Activity]
-name = Осцилоскоп
diff --git a/locale/bn/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/bn/LC_MESSAGES/org.laptop.MeasureActivity.mo
deleted file mode 100644
index fc6ca89..0000000
--- a/locale/bn/LC_MESSAGES/org.laptop.MeasureActivity.mo
+++ /dev/null
Binary files differ
diff --git a/locale/bn/activity.linfo b/locale/bn/activity.linfo
deleted file mode 100644
index 041f72c..0000000
--- a/locale/bn/activity.linfo
+++ /dev/null
@@ -1,2 +0,0 @@
-[Activity]
-name = Measure
diff --git a/locale/bn_IN/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/bn_IN/LC_MESSAGES/org.laptop.MeasureActivity.mo
deleted file mode 100644
index 0293ef2..0000000
--- a/locale/bn_IN/LC_MESSAGES/org.laptop.MeasureActivity.mo
+++ /dev/null
Binary files differ
diff --git a/locale/bn_IN/activity.linfo b/locale/bn_IN/activity.linfo
deleted file mode 100644
index 4f57866..0000000
--- a/locale/bn_IN/activity.linfo
+++ /dev/null
@@ -1,2 +0,0 @@
-[Activity]
-name = মেপে নিন
diff --git a/locale/ca/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/ca/LC_MESSAGES/org.laptop.MeasureActivity.mo
deleted file mode 100644
index b8c78af..0000000
--- a/locale/ca/LC_MESSAGES/org.laptop.MeasureActivity.mo
+++ /dev/null
Binary files differ
diff --git a/locale/ca/activity.linfo b/locale/ca/activity.linfo
deleted file mode 100644
index bb222f0..0000000
--- a/locale/ca/activity.linfo
+++ /dev/null
@@ -1,2 +0,0 @@
-[Activity]
-name = Mesura
diff --git a/locale/de/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/de/LC_MESSAGES/org.laptop.MeasureActivity.mo
deleted file mode 100644
index 95d7078..0000000
--- a/locale/de/LC_MESSAGES/org.laptop.MeasureActivity.mo
+++ /dev/null
Binary files differ
diff --git a/locale/de/activity.linfo b/locale/de/activity.linfo
deleted file mode 100644
index e9fd1a0..0000000
--- a/locale/de/activity.linfo
+++ /dev/null
@@ -1,2 +0,0 @@
-[Activity]
-name = Messen
diff --git a/locale/dz/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/dz/LC_MESSAGES/org.laptop.MeasureActivity.mo
deleted file mode 100644
index c5361e7..0000000
--- a/locale/dz/LC_MESSAGES/org.laptop.MeasureActivity.mo
+++ /dev/null
Binary files differ
diff --git a/locale/dz/activity.linfo b/locale/dz/activity.linfo
deleted file mode 100644
index 041f72c..0000000
--- a/locale/dz/activity.linfo
+++ /dev/null
@@ -1,2 +0,0 @@
-[Activity]
-name = Measure
diff --git a/locale/el/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/el/LC_MESSAGES/org.laptop.MeasureActivity.mo
deleted file mode 100644
index abcd21b..0000000
--- a/locale/el/LC_MESSAGES/org.laptop.MeasureActivity.mo
+++ /dev/null
Binary files differ
diff --git a/locale/el/activity.linfo b/locale/el/activity.linfo
deleted file mode 100644
index a4fdba2..0000000
--- a/locale/el/activity.linfo
+++ /dev/null
@@ -1,2 +0,0 @@
-[Activity]
-name = Μέτρηση
diff --git a/locale/en/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/en/LC_MESSAGES/org.laptop.MeasureActivity.mo
deleted file mode 100644
index c5361e7..0000000
--- a/locale/en/LC_MESSAGES/org.laptop.MeasureActivity.mo
+++ /dev/null
Binary files differ
diff --git a/locale/en/activity.linfo b/locale/en/activity.linfo
deleted file mode 100644
index 041f72c..0000000
--- a/locale/en/activity.linfo
+++ /dev/null
@@ -1,2 +0,0 @@
-[Activity]
-name = Measure
diff --git a/locale/es/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/es/LC_MESSAGES/org.laptop.MeasureActivity.mo
deleted file mode 100644
index b7e6913..0000000
--- a/locale/es/LC_MESSAGES/org.laptop.MeasureActivity.mo
+++ /dev/null
Binary files differ
diff --git a/locale/es/activity.linfo b/locale/es/activity.linfo
deleted file mode 100644
index fff5c0f..0000000
--- a/locale/es/activity.linfo
+++ /dev/null
@@ -1,2 +0,0 @@
-[Activity]
-name = Medir
diff --git a/locale/fa/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/fa/LC_MESSAGES/org.laptop.MeasureActivity.mo
deleted file mode 100644
index 8d86b62..0000000
--- a/locale/fa/LC_MESSAGES/org.laptop.MeasureActivity.mo
+++ /dev/null
Binary files differ
diff --git a/locale/fa/activity.linfo b/locale/fa/activity.linfo
deleted file mode 100644
index e471dc6..0000000
--- a/locale/fa/activity.linfo
+++ /dev/null
@@ -1,2 +0,0 @@
-[Activity]
-name = سنجش
diff --git a/locale/fa_AF/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/fa_AF/LC_MESSAGES/org.laptop.MeasureActivity.mo
deleted file mode 100644
index ed17fe8..0000000
--- a/locale/fa_AF/LC_MESSAGES/org.laptop.MeasureActivity.mo
+++ /dev/null
Binary files differ
diff --git a/locale/fa_AF/activity.linfo b/locale/fa_AF/activity.linfo
deleted file mode 100644
index e471dc6..0000000
--- a/locale/fa_AF/activity.linfo
+++ /dev/null
@@ -1,2 +0,0 @@
-[Activity]
-name = سنجش
diff --git a/locale/ff/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/ff/LC_MESSAGES/org.laptop.MeasureActivity.mo
deleted file mode 100644
index c5361e7..0000000
--- a/locale/ff/LC_MESSAGES/org.laptop.MeasureActivity.mo
+++ /dev/null
Binary files differ
diff --git a/locale/ff/activity.linfo b/locale/ff/activity.linfo
deleted file mode 100644
index 041f72c..0000000
--- a/locale/ff/activity.linfo
+++ /dev/null
@@ -1,2 +0,0 @@
-[Activity]
-name = Measure
diff --git a/locale/fr/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/fr/LC_MESSAGES/org.laptop.MeasureActivity.mo
deleted file mode 100644
index d851065..0000000
--- a/locale/fr/LC_MESSAGES/org.laptop.MeasureActivity.mo
+++ /dev/null
Binary files differ
diff --git a/locale/fr/activity.linfo b/locale/fr/activity.linfo
deleted file mode 100644
index 7c3f603..0000000
--- a/locale/fr/activity.linfo
+++ /dev/null
@@ -1,2 +0,0 @@
-[Activity]
-name = Mesure
diff --git a/locale/ha/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/ha/LC_MESSAGES/org.laptop.MeasureActivity.mo
deleted file mode 100644
index c5361e7..0000000
--- a/locale/ha/LC_MESSAGES/org.laptop.MeasureActivity.mo
+++ /dev/null
Binary files differ
diff --git a/locale/ha/activity.linfo b/locale/ha/activity.linfo
deleted file mode 100644
index 041f72c..0000000
--- a/locale/ha/activity.linfo
+++ /dev/null
@@ -1,2 +0,0 @@
-[Activity]
-name = Measure
diff --git a/locale/hi/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/hi/LC_MESSAGES/org.laptop.MeasureActivity.mo
deleted file mode 100644
index 68fc1f3..0000000
--- a/locale/hi/LC_MESSAGES/org.laptop.MeasureActivity.mo
+++ /dev/null
Binary files differ
diff --git a/locale/hi/activity.linfo b/locale/hi/activity.linfo
deleted file mode 100644
index 9fdd894..0000000
--- a/locale/hi/activity.linfo
+++ /dev/null
@@ -1,2 +0,0 @@
-[Activity]
-name = नाप
diff --git a/locale/ig/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/ig/LC_MESSAGES/org.laptop.MeasureActivity.mo
deleted file mode 100644
index c5361e7..0000000
--- a/locale/ig/LC_MESSAGES/org.laptop.MeasureActivity.mo
+++ /dev/null
Binary files differ
diff --git a/locale/ig/activity.linfo b/locale/ig/activity.linfo
deleted file mode 100644
index 041f72c..0000000
--- a/locale/ig/activity.linfo
+++ /dev/null
@@ -1,2 +0,0 @@
-[Activity]
-name = Measure
diff --git a/locale/is/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/is/LC_MESSAGES/org.laptop.MeasureActivity.mo
deleted file mode 100644
index 622964b..0000000
--- a/locale/is/LC_MESSAGES/org.laptop.MeasureActivity.mo
+++ /dev/null
Binary files differ
diff --git a/locale/is/activity.linfo b/locale/is/activity.linfo
deleted file mode 100644
index 7425d9a..0000000
--- a/locale/is/activity.linfo
+++ /dev/null
@@ -1,2 +0,0 @@
-[Activity]
-name = Mæla
diff --git a/locale/ja/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/ja/LC_MESSAGES/org.laptop.MeasureActivity.mo
deleted file mode 100644
index de16c53..0000000
--- a/locale/ja/LC_MESSAGES/org.laptop.MeasureActivity.mo
+++ /dev/null
Binary files differ
diff --git a/locale/ja/activity.linfo b/locale/ja/activity.linfo
deleted file mode 100644
index 1efd009..0000000
--- a/locale/ja/activity.linfo
+++ /dev/null
@@ -1,2 +0,0 @@
-[Activity]
-name = 計測
diff --git a/locale/mk/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/mk/LC_MESSAGES/org.laptop.MeasureActivity.mo
deleted file mode 100644
index dfeecf6..0000000
--- a/locale/mk/LC_MESSAGES/org.laptop.MeasureActivity.mo
+++ /dev/null
Binary files differ
diff --git a/locale/mk/activity.linfo b/locale/mk/activity.linfo
deleted file mode 100644
index ff1f64b..0000000
--- a/locale/mk/activity.linfo
+++ /dev/null
@@ -1,2 +0,0 @@
-[Activity]
-name = Мерка
diff --git a/locale/ml/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/ml/LC_MESSAGES/org.laptop.MeasureActivity.mo
deleted file mode 100644
index c5361e7..0000000
--- a/locale/ml/LC_MESSAGES/org.laptop.MeasureActivity.mo
+++ /dev/null
Binary files differ
diff --git a/locale/ml/activity.linfo b/locale/ml/activity.linfo
deleted file mode 100644
index 041f72c..0000000
--- a/locale/ml/activity.linfo
+++ /dev/null
@@ -1,2 +0,0 @@
-[Activity]
-name = Measure
diff --git a/locale/mn/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/mn/LC_MESSAGES/org.laptop.MeasureActivity.mo
deleted file mode 100644
index 07785df..0000000
--- a/locale/mn/LC_MESSAGES/org.laptop.MeasureActivity.mo
+++ /dev/null
Binary files differ
diff --git a/locale/mn/activity.linfo b/locale/mn/activity.linfo
deleted file mode 100644
index 14197e5..0000000
--- a/locale/mn/activity.linfo
+++ /dev/null
@@ -1,2 +0,0 @@
-[Activity]
-name = Хэмжигч
diff --git a/locale/ne/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/ne/LC_MESSAGES/org.laptop.MeasureActivity.mo
deleted file mode 100644
index 37015ff..0000000
--- a/locale/ne/LC_MESSAGES/org.laptop.MeasureActivity.mo
+++ /dev/null
Binary files differ
diff --git a/locale/ne/activity.linfo b/locale/ne/activity.linfo
deleted file mode 100644
index 9fdd894..0000000
--- a/locale/ne/activity.linfo
+++ /dev/null
@@ -1,2 +0,0 @@
-[Activity]
-name = नाप
diff --git a/locale/nl/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/nl/LC_MESSAGES/org.laptop.MeasureActivity.mo
deleted file mode 100644
index 574d6af..0000000
--- a/locale/nl/LC_MESSAGES/org.laptop.MeasureActivity.mo
+++ /dev/null
Binary files differ
diff --git a/locale/nl/activity.linfo b/locale/nl/activity.linfo
deleted file mode 100644
index e47e1d6..0000000
--- a/locale/nl/activity.linfo
+++ /dev/null
@@ -1,2 +0,0 @@
-[Activity]
-name = Meten
diff --git a/locale/pa/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/pa/LC_MESSAGES/org.laptop.MeasureActivity.mo
deleted file mode 100644
index c5361e7..0000000
--- a/locale/pa/LC_MESSAGES/org.laptop.MeasureActivity.mo
+++ /dev/null
Binary files differ
diff --git a/locale/pa/activity.linfo b/locale/pa/activity.linfo
deleted file mode 100644
index 041f72c..0000000
--- a/locale/pa/activity.linfo
+++ /dev/null
@@ -1,2 +0,0 @@
-[Activity]
-name = Measure
diff --git a/locale/pl/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/pl/LC_MESSAGES/org.laptop.MeasureActivity.mo
deleted file mode 100644
index c5361e7..0000000
--- a/locale/pl/LC_MESSAGES/org.laptop.MeasureActivity.mo
+++ /dev/null
Binary files differ
diff --git a/locale/pl/activity.linfo b/locale/pl/activity.linfo
deleted file mode 100644
index 041f72c..0000000
--- a/locale/pl/activity.linfo
+++ /dev/null
@@ -1,2 +0,0 @@
-[Activity]
-name = Measure
diff --git a/locale/ps/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/ps/LC_MESSAGES/org.laptop.MeasureActivity.mo
deleted file mode 100644
index c34c167..0000000
--- a/locale/ps/LC_MESSAGES/org.laptop.MeasureActivity.mo
+++ /dev/null
Binary files differ
diff --git a/locale/ps/activity.linfo b/locale/ps/activity.linfo
deleted file mode 100644
index 9d83b52..0000000
--- a/locale/ps/activity.linfo
+++ /dev/null
@@ -1,2 +0,0 @@
-[Activity]
-name = اندازه کول
diff --git a/locale/pseudo/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/pseudo/LC_MESSAGES/org.laptop.MeasureActivity.mo
deleted file mode 100644
index c5361e7..0000000
--- a/locale/pseudo/LC_MESSAGES/org.laptop.MeasureActivity.mo
+++ /dev/null
Binary files differ
diff --git a/locale/pseudo/activity.linfo b/locale/pseudo/activity.linfo
deleted file mode 100644
index 041f72c..0000000
--- a/locale/pseudo/activity.linfo
+++ /dev/null
@@ -1,2 +0,0 @@
-[Activity]
-name = Measure
diff --git a/locale/pt/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/pt/LC_MESSAGES/org.laptop.MeasureActivity.mo
deleted file mode 100644
index 9f57ce1..0000000
--- a/locale/pt/LC_MESSAGES/org.laptop.MeasureActivity.mo
+++ /dev/null
Binary files differ
diff --git a/locale/pt/activity.linfo b/locale/pt/activity.linfo
deleted file mode 100644
index fff5c0f..0000000
--- a/locale/pt/activity.linfo
+++ /dev/null
@@ -1,2 +0,0 @@
-[Activity]
-name = Medir
diff --git a/locale/pt_BR/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/pt_BR/LC_MESSAGES/org.laptop.MeasureActivity.mo
deleted file mode 100644
index ac57dcd..0000000
--- a/locale/pt_BR/LC_MESSAGES/org.laptop.MeasureActivity.mo
+++ /dev/null
Binary files differ
diff --git a/locale/pt_BR/activity.linfo b/locale/pt_BR/activity.linfo
deleted file mode 100644
index fff5c0f..0000000
--- a/locale/pt_BR/activity.linfo
+++ /dev/null
@@ -1,2 +0,0 @@
-[Activity]
-name = Medir
diff --git a/locale/qu/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/qu/LC_MESSAGES/org.laptop.MeasureActivity.mo
deleted file mode 100644
index c5361e7..0000000
--- a/locale/qu/LC_MESSAGES/org.laptop.MeasureActivity.mo
+++ /dev/null
Binary files differ
diff --git a/locale/qu/activity.linfo b/locale/qu/activity.linfo
deleted file mode 100644
index 041f72c..0000000
--- a/locale/qu/activity.linfo
+++ /dev/null
@@ -1,2 +0,0 @@
-[Activity]
-name = Measure
diff --git a/locale/ro/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/ro/LC_MESSAGES/org.laptop.MeasureActivity.mo
deleted file mode 100644
index 22b8d05..0000000
--- a/locale/ro/LC_MESSAGES/org.laptop.MeasureActivity.mo
+++ /dev/null
Binary files differ
diff --git a/locale/ro/activity.linfo b/locale/ro/activity.linfo
deleted file mode 100644
index be07be2..0000000
--- a/locale/ro/activity.linfo
+++ /dev/null
@@ -1,2 +0,0 @@
-[Activity]
-name = Măsurători
diff --git a/locale/ru/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/ru/LC_MESSAGES/org.laptop.MeasureActivity.mo
deleted file mode 100644
index 0a2c255..0000000
--- a/locale/ru/LC_MESSAGES/org.laptop.MeasureActivity.mo
+++ /dev/null
Binary files differ
diff --git a/locale/ru/activity.linfo b/locale/ru/activity.linfo
deleted file mode 100644
index 9b9de0d..0000000
--- a/locale/ru/activity.linfo
+++ /dev/null
@@ -1,2 +0,0 @@
-[Activity]
-name = Измерить
diff --git a/locale/rw/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/rw/LC_MESSAGES/org.laptop.MeasureActivity.mo
deleted file mode 100644
index 141a46b..0000000
--- a/locale/rw/LC_MESSAGES/org.laptop.MeasureActivity.mo
+++ /dev/null
Binary files differ
diff --git a/locale/rw/activity.linfo b/locale/rw/activity.linfo
deleted file mode 100644
index 7dc1d4e..0000000
--- a/locale/rw/activity.linfo
+++ /dev/null
@@ -1,2 +0,0 @@
-[Activity]
-name = Gupima
diff --git a/locale/te/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/te/LC_MESSAGES/org.laptop.MeasureActivity.mo
deleted file mode 100644
index f641af6..0000000
--- a/locale/te/LC_MESSAGES/org.laptop.MeasureActivity.mo
+++ /dev/null
Binary files differ
diff --git a/locale/te/activity.linfo b/locale/te/activity.linfo
deleted file mode 100644
index bbfba32..0000000
--- a/locale/te/activity.linfo
+++ /dev/null
@@ -1,2 +0,0 @@
-[Activity]
-name = కొలువు
diff --git a/locale/th/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/th/LC_MESSAGES/org.laptop.MeasureActivity.mo
deleted file mode 100644
index 9ca20f1..0000000
--- a/locale/th/LC_MESSAGES/org.laptop.MeasureActivity.mo
+++ /dev/null
Binary files differ
diff --git a/locale/th/activity.linfo b/locale/th/activity.linfo
deleted file mode 100644
index 393013a..0000000
--- a/locale/th/activity.linfo
+++ /dev/null
@@ -1,2 +0,0 @@
-[Activity]
-name = วัดค่า
diff --git a/locale/ur/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/ur/LC_MESSAGES/org.laptop.MeasureActivity.mo
deleted file mode 100644
index 640cb90..0000000
--- a/locale/ur/LC_MESSAGES/org.laptop.MeasureActivity.mo
+++ /dev/null
Binary files differ
diff --git a/locale/ur/activity.linfo b/locale/ur/activity.linfo
deleted file mode 100644
index 3e160cb..0000000
--- a/locale/ur/activity.linfo
+++ /dev/null
@@ -1,2 +0,0 @@
-[Activity]
-name = ناپیں
diff --git a/locale/yo/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/yo/LC_MESSAGES/org.laptop.MeasureActivity.mo
deleted file mode 100644
index c5361e7..0000000
--- a/locale/yo/LC_MESSAGES/org.laptop.MeasureActivity.mo
+++ /dev/null
Binary files differ
diff --git a/locale/yo/activity.linfo b/locale/yo/activity.linfo
deleted file mode 100644
index 041f72c..0000000
--- a/locale/yo/activity.linfo
+++ /dev/null
@@ -1,2 +0,0 @@
-[Activity]
-name = Measure
diff --git a/measure.py b/measure.py
index 3c52cbe..45c8eff 100755..100644
--- a/measure.py
+++ b/measure.py
@@ -1,7 +1,9 @@
#!/usr/bin/python
#
-# Copyright (C) 2007, OLPC
# Written by Arjun Sarwal <arjun@laptop.org>
+# Copyright (C) 2007, Arjun Sarwal
+# Copyright (C) 2009, Walter Bender
+# Copyright (C) 2009, Benjamin Berg, Sebastian Berg
#
# 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
@@ -127,7 +129,7 @@ class MeasureActivity(activity.Activity):
def waveform_refresh(self):
self.wave.queue_draw()
- return self.active_status
+ return self.active_status
def on_quit(self,data=None):
self.audiograb.on_activity_quit()
@@ -142,9 +144,9 @@ class MeasureActivity(activity.Activity):
self.active_status = False
elif (self.props.active and not self.ACTIVE):
self.audiograb.resume_grabbing()
- self.active_status = True
+ self.active_status = True
gobject.timeout_add(config.REFRESH_TIME, \
- self.waveform_refresh)
+ self.waveform_refresh)
self.ACTIVE = self.props.active
"""
diff --git a/sensor_toolbar.py b/sensor_toolbar.py
index db9ae97..3e0beb5 100644
--- a/sensor_toolbar.py
+++ b/sensor_toolbar.py
@@ -3,6 +3,7 @@
# Author: Arjun Sarwal arjun@laptop.org
# Copyright (C) 2007, Arjun Sarwal
# Copyright (C) 2009, Walter Bender
+# Copyright (C) 2009, Benjamin Berg, Sebastian Berg
#
# 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
@@ -23,7 +24,7 @@ import gtk
import time
from gettext import gettext as _
-import config #This has all the globals
+import config #This has all the globals
from sugar.graphics.toolbutton import ToolButton
from sugar.graphics.combobox import ComboBox
@@ -172,7 +173,7 @@ class SensorToolbar(gtk.Toolbar):
self._record.set_tooltip(_('Stop Recording'))
else:
if self.logging_status == True:
- self.ag.set_logging_params(False)
+ self.ag.set_logging_params(False)
time.sleep(0.2)
self.ji.stop_session()
config.LOGGING_IN_SESSION = False
@@ -258,7 +259,7 @@ class SensorToolbar(gtk.Toolbar):
def context_off(self):
self.ag.pause_grabbing()
-
+
def context_on(self):
self.ag.resume_grabbing()
self.ag.set_dc_mode(True)
diff --git a/sound_toolbar.py b/sound_toolbar.py
index 30b2821..d20156b 100644
--- a/sound_toolbar.py
+++ b/sound_toolbar.py
@@ -3,6 +3,7 @@
# Author: Arjun Sarwal arjun@laptop.org
# Copyright (C) 2007, Arjun Sarwal
# Copyright (C) 2009, Walter Bender
+# Copyright (C) 2009, Benjamin Berg, Sebastian Berg
#
# 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
@@ -20,6 +21,7 @@
import pygtk
import gtk
+import gobject
from time import *
from gettext import gettext as _
@@ -49,9 +51,13 @@ class SoundToolbar(gtk.Toolbar):
self._STR2 = _("Frequency Base ")
self._STR3 = _(" Invert ")
self._STR_SCALEX = ""
- self._STR_XAXIS1 = _("X Axis Scale: 1 division = ")
- self._STR_XAXIS2 = _("ms ")
- self._STR_XAXIS3 = _("Hz ")
+ self._STR_XAXIS_TEXT = _("X Axis Scale: 1 division = %(division)s %(unit)s")
+ # TRANSLATORS: This is milli seconds.
+ self._ms = _('ms')
+ # TRANSLATORS: This is Hertz, so 1/second.
+ self._Hz = _('Hz')
+
+ self._update_page_size_id = None
self.string_for_textbox = ""
@@ -96,8 +102,7 @@ class SoundToolbar(gtk.Toolbar):
################ 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._freq_range = gtk.HScale(self.adjustmentf)
self._freq_range.set_draw_value(False)
self._freq_range.set_update_policy(gtk.UPDATE_CONTINUOUS)
@@ -170,6 +175,8 @@ class SoundToolbar(gtk.Toolbar):
self._record.connect('clicked', self.record_control)
####################################################
+ self._update_page_size()
+
def record_control(self, data=None):
"""Depending upon the selected interval, does either
a logging session, or just logs the current buffer"""
@@ -266,41 +273,41 @@ class SoundToolbar(gtk.Toolbar):
self._update_string_for_textbox()
return False
- def cb_page_sizef(self, get, data=None):
- if(get.value>=10 and get.value<20):
+ def cb_page_sizef(self, data=None):
+ if self._update_page_size_id:
+ gobject.source_remove(self._update_page_size_id)
+ self._update_page_size_id = \
+ gobject.timeout_add(250, self._update_page_size)
+ return True
+
+ def _update_page_size(self):
+ self._update_page_size_id = None
+
+ if(self.adjustmentf.value>=10 and self.adjustmentf.value<20):
self._freq_range.set_value(10)
- self.ag.set_sampling_rate(4000)
- self.wave.set_freq_range(1)
- if(get.value>=20 and get.value<46):
+ freq_div = 1000
+ time_div = 0.001
+
+ if(self.adjustmentf.value>=20 and self.adjustmentf.value<46):
self._freq_range.set_value(30)
- self.ag.set_sampling_rate(4000)
- self.wave.set_freq_range(2)
- if(get.value>=46 and get.value<62):
+ freq_div = 500
+ time_div = 0.0005
+
+ if(self.adjustmentf.value>=46 and self.adjustmentf.value<62):
self._freq_range.set_value(50)
- self.ag.set_sampling_rate(16000)
- self.wave.set_freq_range(3)
- if(get.value>=62 and get.value<=70):
+ freq_div = 250
+ time_div = 0.00025
+
+ if(self.adjustmentf.value>=62 and self.adjustmentf.value<=70):
self._freq_range.set_value(70)
- self.ag.set_sampling_rate(48000)
- self.wave.set_freq_range(4)
+ freq_div = 25
+ time_div = 0.00005
+
+ self.wave.set_div(time_div, freq_div)
+
self._update_string_for_textbox()
- return True
- def calculate_x_axis_scale(self):
- sampling_rate = self.ag.get_sampling_rate()
- draw_interval = self.wave.get_drawing_interval()
- if self.wave.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
- 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
- return
+ return False
def context_off(self):
"""When some other context is switched to and the sound context
@@ -323,7 +330,11 @@ class SoundToolbar(gtk.Toolbar):
self._update_string_for_textbox()
def _update_string_for_textbox(self):
- self.calculate_x_axis_scale()
+ if self.wave.get_fft_mode() == False:
+ self._STR_SCALEX = self._STR_XAXIS_TEXT % {'unit': self._ms, 'division': self.wave.time_div*1000}
+ else:
+ self._STR_SCALEX = self._STR_XAXIS_TEXT % {'unit': self._Hz, 'division': self.wave.freq_div}
+
self.string_for_textbox = ""
self.string_for_textbox += (self._STR_BASIC + "\t")
if self.wave.get_fft_mode() == False:
diff --git a/toolbar_side.py b/toolbar_side.py
index 2766158..2766158 100755..100644
--- a/toolbar_side.py
+++ b/toolbar_side.py
diff --git a/toolbar_top.py b/toolbar_top.py
index 2a65364..2a65364 100755..100644
--- a/toolbar_top.py
+++ b/toolbar_top.py