diff options
author | Walter Bender <walter@walter-laptop.(none)> | 2009-07-13 20:40:11 (GMT) |
---|---|---|
committer | Walter Bender <walter@walter-laptop.(none)> | 2009-07-13 20:40:11 (GMT) |
commit | 8f1ce5e3ba6c98e45e565e2530c75c6e68d5bd1c (patch) | |
tree | 49442dc9182dc0b1b38e5aebe31f8726c383975a |
migrating Measure activity to gitorious
160 files changed, 9105 insertions, 0 deletions
diff --git a/MANIFEST b/MANIFEST new file mode 100755 index 0000000..3903295 --- /dev/null +++ b/MANIFEST @@ -0,0 +1,73 @@ +measure.py +sheet.py +sheet_ui.py +audiograb.py +drawwaveform.py +config.py +toolbar_top.py +sound_toolbar.py +sensor_toolbar.py +logging_ui.py +toolbar_side.py +journal.py +graphs.py +textbox.py +./icons/amp-high.svg +./icons/amp-low.svg +./icons/bias-off.svg +./icons/bias-on.svg +./icons/bias-off2.svg +./icons/bias-on2.svg +./icons/current-ac.svg +./icons/current-dc.svg +./icons/domain-freq.svg +./icons/domain-freq2.svg +./icons/domain-time.svg +./icons/domain-time2.svg +./icons/freq-low.svg +./icons/freq-high.svg +./icons/sample_rate.svg +./icons/view-details.svg +po/Measure.pot +po/am.po +po/bn.po +po/el.po +po/fa.po +po/fa_AF.po +po/ff.po +po/hi.po +po/ja.po +po/ne.po +po/pseudo.po +po/qu.po +po/rw.po +po/yo.po +po/ar.po +po/de.po +po/en.po +po/fr.po +po/ig.po +po/mk.po +po/nl.po +po/pt_BR.po +po/ro.po +po/th.po +po/ay.po +po/dz.po +po/es.po +po/ha.po +po/is.po +po/ml.po +po/pa.po +po/pt.po +po/ru.po +po/ur.po +po/bg.po +po/bn_IN.po +po/ca.po +po/mn.po +po/pl.po +po/te.po +po/ps.po +SOURCES +README @@ -0,0 +1,83 @@ +23 + +21 +* #8683 Fixed minor sensor logging problem + +20 +* Added license information + +19 +* New usage context based UI - sound and sensors context +* In sound context recording takes screenshots of waveforms and creates journal entries +* In sensors context recording writes csv values and creates journal entry +* Textbox at bottom to show prompts for easy usage +* New even lower frequency display in sound context for 25hz waveforms +* Waveform color is XO stroke color +* Major changes in codebase from ver18 to make it easily extensible from a dev point of view +* Supports upto 4 simultaneous waveforms display by specifying start and end co-ordinates + +18 +* Fixed changing Numeric to numpy +* Updated translations +17 + +* New translations (Pootle) +* Bitfrost compliant (Logging works now) #6436 + +16 + +* New translations added via Pootle - pl, te, mn, ff_AF, ff, bg, ca + +15 + +* New translations added via Pootle + +14 + +* (Note : This release doesn't comply with Bitfrost. Please see AnalogInput.py to correct that) +* Revisited Journal Integration - now scale, mode etc. are also written in logfile +* Details show/hide added - rms, avg, X Axis scale and Y Axis scale are visible +* Fixed #3616 by making the Activity wait for ,active = True to fire before trying to get hold of the sound device +* Increased gain slider sensitivity, also disabled Mic Boost throughout Activity + +13 + +* Changing sampling rate from ALSA rather than using downsampling in code +* Frequency slider now takes three discrete values +* Faster background drawing method +* Code cleanup +* Fixed Activity not calling on_quit when quitting. + +12 + +* Fixed #4444 by disabling the gobject.timeout when activity is inactive that queues up the expose drawing event + +11 + +* Fixed and closed #3666 + +10 + +* Fixed sound related problem by turning up Master and PCM high on exit (closed #3481) + +9 + + +* Code modified to match Alsacontrol name 'DC Mode Enable' +* UI refinement and improvement +* Fixed loud feedback problem + + +8 + +* No change from version 7. + +7 + +* Fix NEWS file + NEWS files should be appended to for every major change and the setup + will take care of adding the version when releasing + +6 + +* Initial release @@ -0,0 +1,15 @@ +Project Adviser: +Walter Bender - walter@laptop.org + +Core Developer(s): +Arjun Sarwal - arjun@laptop.org + +Contributor(s): +Many many! +See http://wiki.laptop.org/go/Measure + +Contact: +Email: arjun@laptop.org +IRC : arjs on Freenode + + @@ -0,0 +1,7 @@ +The source code for this release of 'Measure Activity' is here :- + +http://dev.laptop.org/git?p=projects/measure;a=summary + +Please contact me in case of any questions - +Email : arjun@laptop.org +IRC : arjs (#olpc and #sugar) diff --git a/activity/activity-measure.svg b/activity/activity-measure.svg new file mode 100644 index 0000000..e55d7ce --- /dev/null +++ b/activity/activity-measure.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" ?><!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd' [ + <!ENTITY stroke_color "#010101"> + <!ENTITY fill_color "#FFFFFF"> +]><svg enable-background="new 0 0 55 55" height="55px" version="1.1" viewBox="0 0 55 55" width="55px" x="0px" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px"><g display="block" id="activity-measure"> + <g> + <path d="M48.143,36.983c0,3.3-2.7,6-6,6H12.705c-3.3,0-6-2.7-6-6V18.213c0-3.3,2.7-6,6-6h29.438c3.3,0,6,2.7,6,6 V36.983z" fill="&fill_color;"/> + <path d="M48.143,36.983c0,3.3-2.7,6-6,6H12.705 c-3.3,0-6-2.7-6-6V18.213c0-3.3,2.7-6,6-6h29.438c3.3,0,6,2.7,6,6V36.983z" fill="none" stroke="&stroke_color;" stroke-linejoin="round" stroke-width="3.5"/> + </g> + <path d="M8.007,27.598 c10.118,0,6.243,9.431,11.213,9.431c4.375,0,2.154-19.154,6.279-19.154c4.875,0,1.719,19.154,6.719,19.154 c4.406,0,1.781-11.529,5.156-11.529s2,4.875,4.25,4.875c2.375,0,0.25-3.375,5.75-3.375" fill="&fill_color;" stroke="&stroke_color;" stroke-linejoin="round" stroke-width="3.5"/> +</g></svg>
\ No newline at end of file diff --git a/activity/activity.info b/activity/activity.info new file mode 100755 index 0000000..dd0c62f --- /dev/null +++ b/activity/activity.info @@ -0,0 +1,9 @@ +[Activity] +name = Measure +service_name = org.laptop.MeasureActivity +class = measure.MeasureActivity +icon = activity-measure +activity_version = 24 +show_launcher = yes +license = GPLv2+ +update_url = http://wiki.laptop.org/go/Activities/G1G1 diff --git a/activity/activity.info~ b/activity/activity.info~ new file mode 100755 index 0000000..5334e19 --- /dev/null +++ b/activity/activity.info~ @@ -0,0 +1,9 @@ +[Activity] +name = Measure +service_name = org.laptop.MeasureActivity +class = measure.MeasureActivity +icon = activity-measure +activity_version = 23 +show_launcher = yes +license = GPLv2+ +update_url = http://wiki.laptop.org/go/Activities/G1G1 diff --git a/audiograb.py b/audiograb.py new file mode 100755 index 0000000..b169d0f --- /dev/null +++ b/audiograb.py @@ -0,0 +1,489 @@ +#! /usr/bin/python +# +# Author: Arjun Sarwal arjun@laptop.org +# Copyright (C) 2007, OLPC +# +# +# 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 pygst +pygst.require("0.10") +import gst +import gobject +import os +import subprocess +from struct import unpack +from string import find +import config #This has all the golabals + + +class AudioGrab(): + + + def __init__(self, callable1, journal): + + self.callable1 = callable1 + self.ji = journal + + self.temp_buffer = [] + self.picture_buffer = [] + + self.draw_graph_status = False + self.f = None + self.logging_status = False + self.screenshot = True + + self.rate = 48000 + self.final_count = 0 + self.count_temp = 0 + self.entry_count = 0 + + + self.waveform_id = 1 + self.logging_state = False + self.buffer_interval_logging = 0 + self.counter_buffer = 0 + + ####Variables for saving and resuming state of sound device###### + self.master = self.get_master() + self.PCM = self.get_PCM_gain() + self.mic = self.get_mic_gain() + self.bias = config.BIAS + self.dcmode = config.DC_MODE_ENABLE + self.capture_gain = config.CAPTURE_GAIN + self.mic_boost = config.MIC_BOOST + ################################################################# + + + self.pipeline = gst.Pipeline("pipeline") + self.alsasrc = gst.element_factory_make("alsasrc", "alsa-source") + self.pipeline.add(self.alsasrc) + self.caps1 = gst.element_factory_make("capsfilter", "caps1") + self.pipeline.add(self.caps1) + caps_str = "audio/x-raw-int,rate=%d,channels=1,depth=16" % (config.RATE, ) + self.caps1.set_property("caps", gst.caps_from_string(caps_str) ) + self.fakesink = gst.element_factory_make("fakesink", "fsink") + self.pipeline.add(self.fakesink) + self.fakesink.connect("handoff", self.on_buffer) + self.fakesink.set_property("signal-handoffs",True) + gst.element_link_many(self.alsasrc, self.caps1, self.fakesink) + + + self.dont_queue_the_buffer = False + + + def set_handoff_signal(self, handoff_state): + """Sets whether the handoff signal would generate an interrupt or not""" + self.fakesink.set_property("signal-handoffs",handoff_state) + + def _new_buffer(self,buf): + if self.dont_queue_the_buffer == False: + self.callable1(str(buf)) + #print "$$audiograb:have just called callback to update buffer for drawing" + else: + pass + #print "$$audiograb:not queuing2" + + + + 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 + if self.dont_queue_the_buffer == False: + gobject.timeout_add(config.AUDIO_BUFFER_TIMEOUT, self._new_buffer, self.temp_buffer) + else: + pass + + if self.logging_state==True: + if self.waveform_id == config.SOUND_MAX_WAVE_LOGS: + self.waveform_id = 1 + self.logging_state = False + 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.counter_buffer=0 + + self.counter_buffer+=1 + + if self.buffer_interval_logging ==0: #If a record is to be written, thats all for the logging session + self.logging_state = False + self.ji.stop_session() + self.waveform_id = 1 + + return False + + + def set_freeze_the_display(self, freeze = False): + """Useful when just the display is needed to be frozen, but logging should continue""" + self.dont_queue_the_buffer = not freeze + + + def get_freeze_the_display(self): + """Returns state of queueing the buffer""" + return not self.dont_queue_the_buffer + + def _emit_for_logging(self, buf): + """Sends the data for logging""" + if self.buffer_interval_logging==0: + #self.ji.write_record(self.picture_buffer) + self.ji.take_screenshot() + else: + if self.screenshot == True: + self.ji.take_screenshot(self.waveform_id) + self.waveform_id+=1 + else: + temp_buf = list(unpack( str(int(len(buf))/2)+'h' , buf)) + self.ji.write_value(temp_buf[0]) + + + def start_sound_device(self): + """Start or Restart grabbing data from the audio capture""" + gst.event_new_flush_start() + self.pipeline.set_state(gst.STATE_PLAYING) + + + def stop_sound_device(self): + """Stop grabbing data from capture device""" + gst.event_new_flush_stop() + self.pipeline.set_state(gst.STATE_NULL) + + + def save_state(self): + """Saves the state of all audio controls""" + self.master = self.get_master() + self.PCM = self.get_PCM_gain() + self.mic = self.get_mic_gain() + self.bias = self.get_bias() + self.dcmode = self.get_dc_mode() + self.capture_gain = self.get_capture_gain() + self.mic_boost = self.get_mic_boost() + + def resume_state(self): + """Put back all audio control settings from the saved state""" + self.set_master(self.master) + self.set_PCM_gain(self.PCM ) + self.set_mic_gain(self.mic) + self.set_bias(self.bias) + self.set_dc_mode(self.dcmode) + self.set_capture_gain(self.capture_gain) + self.set_mic_boost(self.mic_boost) + + + def set_logging_params(self, start_stop=False, interval=0, screenshot = True): + """Configures for logging of data i.e. starts or stops a session + Sets an interval if logging interval is to be started + Sets if screenshot of waveform is to be taken or values need to be written""" + self.logging_state = start_stop + self.set_buffer_interval_logging(interval) + #if interval==0: + # self.take_picture() + self.reset_counter_buffer() + self.screenshot = screenshot + + 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))) + + def set_logging_state(self, start_stop=False): + """Sets whether buffer is to be emited for logging (True) or not (False)""" + self.logging_state = start_stop + + def set_buffer_interval_logging(self, interval=0): + """Sets the number of buffers after which a buffer needs to be emitted""" + self.buffer_interval_logging = interval + + def reset_counter_buffer(self): + """Resets the counter buffer used to keep track of after how many buffers to emit a buffer for logging""" + self.counter_buffer = 0 + + + def mute_master(self): + """Mutes the Master Control""" + os.system("amixer set Master mute") + + def unmute_master(self): + """Unmutes the Master Control""" + os.system("amixer set Master unmute") + + def mute_PCM(self): + """Mutes the PCM Control""" + os.system("amixer set PCM mute") + + def unmute_PCM(self): + """Unmutes the PCM Control""" + os.system("amixer set PCM unmute") + + def mute_mic(self): + """Mutes the Mic Control""" + os.system("amixer set Mic mute") + + def unmute_mic(self): + """Unmutes the Mic Control""" + os.system("amixer set Mic unmute") + + def set_master(self, master_val ): + """Sets the Master gain slider settings + master_val must be given as an integer between 0 and 100 indicating the + percentage of the slider to be set""" + os.system("amixer set Master " + str(master_val) + "%") + + + def get_master(self): + """Gets the Master gain slider settings. The value returned is an integer between 0-100 + and is an indicative of the percentage 0 - 100%""" + p = str(subprocess.Popen(["amixer", "get", "Master"], stdout=subprocess.PIPE).communicate()[0]) + p = p[find(p,"Front Left:"):] + p = p[find(p,"[")+1:] + p = p[:find(p,"%]")] + return int(p) + + + + def get_mix_for_recording(self): + """Returns True if Mix is set as recording device and False if it isn't """ + p = str(subprocess.Popen(["amixer", "get", "Mix", "capture", "cap"], stdout=subprocess.PIPE).communicate()[0]) + p = p[find(p,"Mono:"):] + p = p[find(p,"[")+1:] + p = p[:find(p,"]")] + if p=="on" : + return True + else: + return False + + + def get_mic_for_recording(self): + """Returns True if mic is set as recording device and False if it isn't """ + p = str(subprocess.Popen(["amixer", "get", "Mic", "capture", "cap"], stdout=subprocess.PIPE).communicate()[0]) + p = p[find(p,"Mono:"):] + p = p[find(p,"[")+1:] + p = p[:find(p,"]")] + if p=="on" : + return True + else: + return False + + def set_mic_for_recording(self): + """Sets Mic as the default recording source""" + os.system("amixer set Mic capture cap") + + def set_mix_for_recording(self): + """Sets Mix as the default recording source""" + os.system("amixer set Mix capture cap") + + + def set_bias(self,bias_state=False): + """Sets the Bias control + pass False to disable and True to enable""" + if bias_state==False: + bias_str="mute" + else: + bias_str="unmute" + os.system("amixer set 'V_REFOUT Enable' " + bias_str) + + def get_bias(self): + """Returns the setting of Bias control + i.e. True: Enabled and False: Disabled""" + p = str(subprocess.Popen(["amixer", "get", "'V_REFOUT Enable'"], stdout=subprocess.PIPE).communicate()[0]) + p = p[find(p,"Mono:"):] + p = p[find(p,"[")+1:] + p = p[:find(p,"]")] + if p=="on" : + return True + else: + return False + + def set_dc_mode(self, dc_mode = False): + """Sets the DC Mode Enable control + pass False to mute and True to unmute""" + if dc_mode==False: + dcm_str="mute" + else: + dcm_str="unmute" + os.system("amixer set 'DC Mode Enable' " + dcm_str) + + def get_dc_mode(self): + """Returns the setting of DC Mode Enable control + i .e. True: Unmuted and False: Muted""" + p = str(subprocess.Popen(["amixer", "get", "'DC Mode Enable'"], stdout=subprocess.PIPE).communicate()[0]) + p = p[find(p,"Mono:"):] + p = p[find(p,"[")+1:] + p = p[:find(p,"]")] + if p=="on" : + return True + else: + return False + + def set_mic_boost(self, mic_boost=False): + """Sets the Mic Boost +20dB control + pass False to mute and True to unmute""" + if mic_boost==False: + mb_str="mute" + else: + mb_str="unmute" + os.system("amixer set 'Mic Boost (+20dB)' " + mb_str) + + def get_mic_boost(self): + """Returns the setting of Mic Boost +20dB control + i.e. True: Unmuted and False: Muted""" + p = str(subprocess.Popen(["amixer", "get", "'Mic Boost (+20dB)'"], stdout=subprocess.PIPE).communicate()[0]) + p = p[find(p,"Mono:"):] + p = p[find(p,"[")+1:] + p = p[:find(p,"]")] + if p=="on" : + return True + else: + return False + + + def set_capture_gain(self, capture_val): + """Sets the Capture gain slider settings + capture_val must be given as an integer between 0 and 100 indicating the + percentage of the slider to be set""" + os.system("amixer set Capture " + str(capture_val) + "%") + + + def get_capture_gain(self): + """Gets the Capture gain slider settings. The value returned is an integer between 0-100 + and is an indicative of the percentage 0 - 100%""" + p = str(subprocess.Popen(["amixer", "get", "Capture"], stdout=subprocess.PIPE).communicate()[0]) + p = p[find(p,"Front Left:"):] + p = p[find(p,"[")+1:] + p = p[:find(p,"%]")] + return int(p) + + + def set_PCM_gain(self, PCM_val): + """Sets the PCM gain slider settings + PCM_val must be given as an integer between 0 and 100 indicating the + percentage of the slider to be set""" + os.system("amixer set PCM " + str(PCM_val) + "%") + + def get_PCM_gain(self): + """Gets the PCM gain slider settings. The value returned is an indicative of the percentage 0 - 100%""" + p = str(subprocess.Popen(["amixer", "get", "PCM"], stdout=subprocess.PIPE).communicate()[0]) + p = p[find(p,"Front Left:"):] + p = p[find(p,"[")+1:] + p = p[:find(p,"%]")] + return int(p) + + + def set_mic_gain(self, mic_val): + """Sets the MIC gain slider settings + mic_val must be given as an integer between 0 and 100 indicating the + percentage of the slider to be set""" + os.system("amixer set Mic " + str(mic_val) + "%") + + def get_mic_gain(self): + """Gets the MIC gain slider settings. The value returned is an indicative of the percentage 0 - 100%""" + p = str(subprocess.Popen(["amixer", "get", "Mic"], stdout=subprocess.PIPE).communicate()[0]) + p = p[find(p,"Mono:"):] + p = p[find(p,"[")+1:] + p = p[:find(p,"%]")] + return int(p) + + def set_sampling_rate(self, sr): + """Sets the sampling rate of the capture device + Sampling rate must be given as an integer for example 16000 for setting 16Khz sampling rate + The sampling rate would be set in the device to the nearest available""" + self.pause_grabbing() + caps_str = "audio/x-raw-int,rate=%d,channels=1,depth=16" % (sr, ) + self.caps1.set_property("caps", gst.caps_from_string(caps_str) ) + self.resume_grabbing() + + + def get_sampling_rate(self): + """Gets the sampling rate of the capture device""" + return int(self.caps1.get_property("caps")[0]['rate'] ) + + + def set_callable1(self, callable1): + """Sets the callable to the drawing function for giving the + data at the end of idle-add""" + self.callable1 = callable1 + + + def set_sensor_type(self, sensor_type=1): + """Set the type of sensor you want to use. Set sensor_type according to the following + 0 - AC coupling with Bias Off --> Very rarely used. Use when connecting a dynamic microphone externally + 1 - AC coupling with Bias On --> The default settings. The internal MIC uses these + 2 - DC coupling with Bias Off --> Used when using a voltage output sensor. For example LM35 which gives output proportional to temperature + 3 - DC coupling with Bias On --> Used with resistive sensors. For example""" + if sensor_type==0: + self.set_dc_mode(False) + self.set_bias(False) + self.set_capture_gain(50) + self.set_mic_boost(True) + elif sensor_type==1: + self.set_dc_mode(False) + self.set_bias(True) + self.set_capture_gain(40) + self.set_mic_boost(True) + elif sensor_type==2: + self.set_dc_mode(True) + self.set_bias(False) + self.set_capture_gain(0) + self.set_mic_boost(False) + elif sensor_type==3: + self.set_dc_mode(True) + self.set_bias(True) + self.set_capture_gain(0) + self.set_mic_boost(False) + + + def start_grabbing(self): + """Called right at the start of the Activity""" + self.start_sound_device() + #self.set_handoff_signal(True) + ####Sound device settings at start#### + #self.set_sampling_rate(config.RATE) + #self.set_mic_boost(config.MIC_BOOST) + #self.set_dc_mode(config.DC_MODE_ENABLE) + #self.set_capture_gain(config.CAPTURE_GAIN) + #self.set_bias(config.BIAS) + ###################################### + + + + def pause_grabbing(self): + """When Activity goes into background""" + self.save_state() + self.stop_sound_device() + + def resume_grabbing(self): + """When Activity becomes active after going to background""" + self.start_sound_device() + self.resume_state() + + + def stop_grabbing(self): + self.stop_sound_device() + self.set_handoff_signal(False) + + def on_activity_quit(self): + """When Activity quits""" + self.set_mic_boost(config.QUIT_MIC_BOOST) + self.set_dc_mode(config.QUIT_DC_MODE_ENABLE) + self.set_capture_gain(config.QUIT_CAPTURE_GAIN) + self.set_bias(config.QUIT_BIAS) + self.set_PCM_gain(config.QUIT_PCM) + self.stop_sound_device() + + + + + diff --git a/config.py b/config.py new file mode 100755 index 0000000..5c0e810 --- /dev/null +++ b/config.py @@ -0,0 +1,51 @@ +import os +import os.path +import tempfile +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 + +#Multiplied with width and height to set placement of text +TEXT_X_M = 0.65 +TEXT_Y_M = 0.70 + +#Maximum number of graphs that can be simultaneously be displayed +MAX_GRAPHS = 4 + +#Device settings at start of Activity +RATE = 48000 +MIC_BOOST = True +DC_MODE_ENABLE = False +CAPTURE_GAIN = 50 +BIAS = True + +#Interval, in ms, after which audio buffer will be sent to drawing class +AUDIO_BUFFER_TIMEOUT = 30 + +#When Activity quits +QUIT_MIC_BOOST = False +QUIT_DC_MODE_ENABLE = False +QUIT_CAPTURE_GAIN = 100 +QUIT_BIAS = True +QUIT_PCM = 70 + +#Which context is active on start +# 1 - sound +# 2 - sensors +CONTEXT = 1 + +#How many maximum screenshots Measure will save while recording in Sound context +SOUND_MAX_WAVE_LOGS = 10 + +#To track if one context is logging, other wouldn't also do it simultaneously +LOGGING_IN_SESSION = False diff --git a/drawwaveform.py b/drawwaveform.py new file mode 100755 index 0000000..dcdd55a --- /dev/null +++ b/drawwaveform.py @@ -0,0 +1,411 @@ +#! /usr/bin/python +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 +from gtk import gdk +from sugar import profile +from numpy.oldnumeric import * +from numpy.fft import * + +from gettext import gettext as _ + +import config #This has all the globals + + +class DrawWaveform(gtk.DrawingArea): + + def __init__(self): + + gtk.DrawingArea.__init__(self) + + self.buffers = [] + self.str_buffer='' + self.buffers_temp=[] + self.integer_buffer=[] + self.peaks = [] + self.main_buffers = [] + self.fftx = [] + + self.rms='' + self.avg='' + self.pp='' + self.count=0 + + 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 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.rms = 0 + self.avg = 0 + self.Rv = 0 + self.y_mag_bias_multiplier = 1 #constant to multiply with self.param2 while scaling values + self.log_param1 = "" + self.log_param2 = "" + self.log_param3 = "" + self.log_param4 = "" + self.log_param5 = "" + + self._BACKGROUND_LINE_THICKNESS = 0.8 + self._FOREGROUND_LINE_THICKNESS = 6 + + self.logging_status = False + self.f = None + self.stop = False + self.fft_show = False + self.side_toolbar_copy = None + + self.scaleX = str( 1.04167/self.draw_interval ) + " ms" + self.scaleY = "" + + + self._line_gc = 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) + + + + self.pr_time = 0 + self.MAX_GRAPHS = config.MAX_GRAPHS #Maximum simultaneous graphs + + self.graph_show_state=[] + self.Xstart =[] + self.Ystart = [] + self.Xend = [] + self.Yend = [] + self.type = [] + self.color = [] + self.source = [] + 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[0]=True + self.Xstart[0] = 0 + self.Ystart[0] = 0 + self.Xend[0] = 1150 + self.Yend[0] = 750 + self.type[0] = 0 + self.color[0] = [65535,0,65535] + self.source[0] = 0 + + """ + self.graph_show_state[1]=True + self.Xstart[0] = 0 + self.Ystart[1] = 0 + self.Xend[0] = 800 + self.Yend[1] = 600 + self.type[1] = 0 + self.color[1] = [0,65535,65535] + self.source[1] = 0 + + self.graph_show_state[2]=True + self.Xstart[2] = 30 + self.Ystart[2] = 0 + self.Xend[2] = 300 + self.Yend[2] = 300 + self.type[2] = 0 + self.color[2] = [0,65535,0] + self.source[2] = 0 + + self.graph_show_state[3]=True + self.Xstart[3] = 0 + self.Ystart[3] = 300 + self.Xend[3] = 1000 + self.Yend[3] = 700 + self.type[3] = 0 + self.color[3] = [65535,65535,0] + self.source[3] = 0 + """ + + self.max_samples = 115 + + self.debug_str="start" + + self.context = True + + 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 + return True + + def set_context_on(self): + self.handler_unblock(self.expose_event_id) + self.context = True + + def set_context_off(self): + self.context = False + self.handler_block(self.expose_event_id) + + + def get_drawing_interval(self): + """Returns the pixel interval horizontally between plots of two 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() + + #background + cr.set_source_rgb(0, 0, 0) + cr.rectangle(0, 0, config.WINDOW_W, config.WINDOW_H) + cr.fill() + + #grid + cr.set_line_width(self._BACKGROUND_LINE_THICKNESS) + cr.set_source_rgb(0.2, 0.2, 0.2) + + 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 + + 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 + + cr.stroke() + + + 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 + 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 + + + else: + ###############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 + ################################## + + + #################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################### + 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: + 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 + + if self.type[graph_id] ==0: + self.window.draw_lines(self._line_gc, lines) + else: + self.window.draw_points(self._line_gc, lines) + ############################################################ + + + """ + ## DISPLAYING FRAMERATE FOR DEBUGGGIN + fr = 1.0/( time.time()-self.pr_time) + self.pr_time=time.time() + layout = pango.Layout(self.pango_context) + layout.set_text(str(fr) +self.debug_str) + self.window.draw_layout(self.get_style().white_gc, self.t_x, self.t_y, layout) + """ + return True + + + def set_side_toolbar_reference(self, side_toolbar): + self.side_toolbar_copy = side_toolbar + + + def set_electrical_ui_reference(self, electrical_ui): + self.electrical_ui_copy = electrical_ui + + def set_graph_source(self, graph_id, source=0): + """Sets from where the graph will get data + 0 - uses from audiograb + 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 get_fft_mode(self): + """Returns if FFT is ON (True) or OFF (False)""" + return self.fft_show + + def set_fft_mode(self, fft_mode=False): + """Sets whether FFT mode is ON (True) or OFF (False)""" + self.fft_show = fft_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 get_stroke_color_from_sugar(self): + """Returns in (r,g,b) format the stroke color set in the profile on the XO""" + color = profile.get_color() + stroke = color.get_stroke_color() + 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 set in the profile on the XO""" + color = profile.get_color() + fill = color.get_fill_color() + 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) + + + def get_mag_params(self): + return self.g, self.y_mag + + def set_mag_params(self, g=1.0, y_mag=3.0): + self.g = g + self.y_mag = y_mag + + diff --git a/graphs.py b/graphs.py new file mode 100755 index 0000000..9c1efda --- /dev/null +++ b/graphs.py @@ -0,0 +1,45 @@ +"""import gtk +from matplotlib.toolkits.gtktools import rec2gtk +import matplotlib.mlab as mlab +from pylab import figure, show, plot +from matplotlib.figure import Figure +from numpy import arange +from matplotlib.numerix import sin,pi +from matplotlib.backends.backend_gtk import FigureCanvasGTK as FigureCanvas +from matplotlib.backends.backend_gtk import NavigationToolbar2GTK as NavigationToolbar +import gtk + +from gettext import gettext as _ +import config #This has all the globals + + +class Graphs(gtk.DrawingArea): + + def __init__(self): + gtk.DrawingArea.__init__(self) + + #d = mlab.csv2rec('myfile.csv') + #print type(d) + """ + t = arange(0,10,1) + s= sin(2*pi*t) + plot(t,s) + show() + """ + + fig = Figure(figsize=(5,4), dpi=100) + ax = fig.add_subplot(111) + t = arange(0.0,3.0,1) + s =[1,2,3] + s2=[9,8,7] + ax.plot(t,s,t, s2) + canvas = FigureCanvas(fig) # a gtk.DrawingArea + self.vbox1=gtk.VBox() + self.vbox1.pack_start(canvas) + toolbar = NavigationToolbar(canvas, None) + self.vbox1.pack_start(toolbar, False, False) + + self.vbox1.show_all() + + """ + diff --git a/icons/amp-high.svg b/icons/amp-high.svg new file mode 100644 index 0000000..ca4b26a --- /dev/null +++ b/icons/amp-high.svg @@ -0,0 +1,3 @@ +<?xml version="1.0" ?><!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'><svg enable-background="new 0 0 55.125 55" height="55px" version="1.1" viewBox="0 0 55.125 55" width="55.125px" x="0px" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px"><g display="block" id="amp-high"> + <path d="M4.973,27.5 c2.83-11.647,5.69-23.295,11.287-23.295c11.193,0,11.193,46.59,22.387,46.59c5.598,0,8.52-11.646,11.381-23.295" display="inline" fill="none" stroke="#FFFFFF" stroke-linecap="round" stroke-width="3.5"/> +</g></svg>
\ No newline at end of file diff --git a/icons/amp-low.svg b/icons/amp-low.svg new file mode 100644 index 0000000..c821f93 --- /dev/null +++ b/icons/amp-low.svg @@ -0,0 +1,3 @@ +<?xml version="1.0" ?><!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'><svg enable-background="new 0 0 55.125 55" height="55px" version="1.1" viewBox="0 0 55.125 55" width="55.125px" x="0px" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px"><g display="block" id="amp-low"> + <path d="M4.973,27.5 c2.83-2.148,5.69-4.296,11.287-4.296c11.193,0,11.193,8.592,22.387,8.592c5.598,0,8.52-2.147,11.381-4.296" display="inline" fill="none" stroke="#FFFFFF" stroke-linecap="round" stroke-width="3.5"/> +</g></svg>
\ No newline at end of file diff --git a/icons/bias-off.svg b/icons/bias-off.svg new file mode 100644 index 0000000..839c7b2 --- /dev/null +++ b/icons/bias-off.svg @@ -0,0 +1,14 @@ +<?xml version="1.0" ?><!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'><svg enable-background="new 0 0 55.125 55" height="55px" version="1.1" viewBox="0 0 55.125 55" width="55.125px" x="0px" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px"><g display="block" id="bias-off"> + <g id="Bias_On"> + <g> + <path d="M55,45c0,5.5-4.5,10-10,10H10C4.5,55,0,50.5,0,45V10C0,4.5,4.5,0,10,0h35c5.5,0,10,4.5,10,10V45z" fill="#808284"/> + </g> + <g> + + <line fill="none" stroke="#FFFFFF" stroke-linecap="round" stroke-linejoin="round" stroke-width="2.25" x1="21.789" x2="8.214" y1="27.5" y2="27.499"/> + <polyline fill="none" points="17,23.46 21.789,27.5 17,31.54 " stroke="#FFFFFF" stroke-linecap="round" stroke-linejoin="round" stroke-width="2.25"/> + </g> + + <line fill="none" stroke="#FFFFFF" stroke-linecap="round" stroke-linejoin="round" stroke-width="3.5" x1="49.5" x2="28.5" y1="27.5" y2="27.5"/> + </g> +</g></svg>
\ No newline at end of file diff --git a/icons/bias-off2.svg b/icons/bias-off2.svg new file mode 100644 index 0000000..50fe53a --- /dev/null +++ b/icons/bias-off2.svg @@ -0,0 +1,115 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + enable-background="new 0 0 55.125 55" + height="55px" + version="1.1" + viewBox="0 0 55.125 55" + width="55.125px" + x="0px" + xml:space="preserve" + y="0px" + id="svg2" + sodipodi:version="0.32" + inkscape:version="0.46" + sodipodi:docname="bias-off2.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape"><metadata + id="metadata21"><rdf:RDF><cc:Work + rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs + id="defs19"><inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 27.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="55.125 : 27.5 : 1" + inkscape:persp3d-origin="27.5625 : 18.333333 : 1" + id="perspective23" /></defs><sodipodi:namedview + inkscape:window-height="719" + inkscape:window-width="641" + inkscape:pageshadow="2" + inkscape:pageopacity="0.0" + guidetolerance="10.0" + gridtolerance="10.0" + objecttolerance="10.0" + borderopacity="1.0" + bordercolor="#666666" + pagecolor="#ffffff" + id="base" + showgrid="false" + inkscape:zoom="8.9818182" + inkscape:cx="27.5625" + inkscape:cy="27.5" + inkscape:window-x="-4" + inkscape:window-y="25" + inkscape:current-layer="svg2" /><g + display="block" + id="bias-off" + style="fill:#ffffff;fill-opacity:1"> + <g + id="Bias_On" + style="fill:#ffffff;fill-opacity:1"> + <g + id="g6" + style="fill:#ffffff;fill-opacity:1"> + <path + d="M55,45c0,5.5-4.5,10-10,10H10C4.5,55,0,50.5,0,45V10C0,4.5,4.5,0,10,0h35c5.5,0,10,4.5,10,10V45z" + fill="#808284" + id="path8" + style="fill:#ffffff;fill-opacity:1" /> + </g> + <g + id="g10" + style="fill:#ffffff;fill-opacity:1"> + + <line + fill="none" + stroke="#FFFFFF" + stroke-linecap="round" + stroke-linejoin="round" + stroke-width="2.25" + x1="21.789" + x2="8.214" + y1="27.5" + y2="27.499" + id="line12" + style="fill:#ffffff;fill-opacity:1" /> + <polyline + fill="none" + points="17,23.46 21.789,27.5 17,31.54 " + stroke="#FFFFFF" + stroke-linecap="round" + stroke-linejoin="round" + stroke-width="2.25" + id="polyline14" + style="fill:#ffffff;fill-opacity:1" /> + </g> + + <line + fill="none" + stroke="#FFFFFF" + stroke-linecap="round" + stroke-linejoin="round" + stroke-width="3.5" + x1="49.5" + x2="28.5" + y1="27.5" + y2="27.5" + id="line16" + style="fill:#ffffff;fill-opacity:1" /> + </g> +</g><path + style="fill:#808284;fill-opacity:1" + d="M 16.308996,32.273747 C 15.890077,31.854828 15.868987,31.305061 16.254268,30.847179 C 16.403161,30.670228 17.03075,30.102747 17.648909,29.586107 L 18.772835,28.646761 L 13.249032,28.591093 L 7.725228,28.535425 L 7.4566187,28.223043 C 7.0944526,27.801862 7.1019801,27.263045 7.4762428,26.818259 L 7.7644818,26.475709 L 13.21005,26.475709 C 16.412886,26.475709 18.655617,26.433922 18.655617,26.374247 C 18.655617,26.318444 18.167131,25.861131 17.570091,25.357999 C 16.973052,24.854866 16.372086,24.311835 16.234612,24.151263 C 15.928113,23.793265 15.902491,23.149067 16.181069,22.805036 C 16.452836,22.469419 17.065697,22.349044 17.47272,22.551335 C 17.648797,22.638846 18.90947,23.656008 20.274218,24.811697 C 22.973453,27.09745 23.070806,27.222449 22.722846,27.955721 C 22.62443,28.163119 22.408034,28.433379 22.241968,28.556295 C 22.075904,28.679213 21.038209,29.545063 19.935982,30.480407 C 18.833755,31.415749 17.78163,32.274931 17.597925,32.389695 C 17.110653,32.694105 16.691664,32.656414 16.308997,32.273746 L 16.308996,32.273747 z" + id="path2396" /><path + style="fill:#ffffff;fill-opacity:1" + d="M 27.663095,28.951773 C 26.811887,28.434587 26.588397,27.25292 27.198485,26.495227 C 27.379701,26.270169 27.698565,26.026234 27.907075,25.953146 C 28.190636,25.853753 31.00806,25.819852 39.085779,25.818643 C 49.060043,25.817149 49.912346,25.831559 50.238293,26.007198 C 50.79599,26.307714 51.088723,26.764824 51.136191,27.409286 C 51.185668,28.081033 50.931742,28.576845 50.35957,28.925702 C 50.00365,29.142709 49.785858,29.146755 38.974443,29.137179 C 29.143527,29.12847 27.920931,29.10843 27.663094,28.951772 L 27.663095,28.951773 z" + id="path2398" /><path + style="fill:#808284;fill-opacity:1" + d="M 27.629859,28.93382 C 26.794413,28.383055 26.593398,27.246708 27.198485,26.495227 C 27.379701,26.270169 27.698565,26.026234 27.907075,25.953146 C 28.190636,25.853753 31.00806,25.819852 39.085779,25.818643 C 49.060043,25.817149 49.912346,25.831559 50.238293,26.007198 C 50.79599,26.307714 51.088723,26.764824 51.136191,27.409286 C 51.185668,28.081033 50.931742,28.576845 50.35957,28.925702 C 50.003934,29.142536 49.777229,29.146935 38.974443,29.146623 C 28.315422,29.146315 27.941554,29.139304 27.629861,28.933821 L 27.629859,28.93382 z" + id="path2400" /></svg>
\ No newline at end of file diff --git a/icons/bias-on.svg b/icons/bias-on.svg new file mode 100644 index 0000000..14ca879 --- /dev/null +++ b/icons/bias-on.svg @@ -0,0 +1,14 @@ +<?xml version="1.0" ?><!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'><svg enable-background="new 0 0 55.125 55" height="55px" version="1.1" viewBox="0 0 55.125 55" width="55.125px" x="0px" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px"><g display="block" id="bias-on"> + <g display="inline" id="Bias_Off"> + <g> + <path d="M55,45c0,5.5-4.5,10-10,10H10C4.5,55,0,50.5,0,45V10C0,4.5,4.5,0,10,0h35c5.5,0,10,4.5,10,10V45z" fill="#808284"/> + </g> + <g> + + <line fill="none" stroke="#FFFFFF" stroke-linecap="round" stroke-linejoin="round" stroke-width="2.25" x1="21.789" x2="8.214" y1="27.5" y2="27.499"/> + <polyline fill="none" points="17,23.46 21.789,27.5 17,31.54 " stroke="#FFFFFF" stroke-linecap="round" stroke-linejoin="round" stroke-width="2.25"/> + </g> + + <line fill="none" stroke="#FFFFFF" stroke-linecap="round" stroke-linejoin="round" stroke-width="3.5" x1="49.5" x2="28.5" y1="13" y2="13"/> + </g> +</g></svg>
\ No newline at end of file diff --git a/icons/bias-on2.svg b/icons/bias-on2.svg new file mode 100644 index 0000000..05656f9 --- /dev/null +++ b/icons/bias-on2.svg @@ -0,0 +1,113 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + enable-background="new 0 0 55.125 55" + height="55px" + version="1.1" + viewBox="0 0 55.125 55" + width="55.125px" + x="0px" + xml:space="preserve" + y="0px" + id="svg2" + sodipodi:version="0.32" + inkscape:version="0.46" + sodipodi:docname="bias-on2.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape"><metadata + id="metadata21"><rdf:RDF><cc:Work + rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs + id="defs19"><inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 27.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="55.125 : 27.5 : 1" + inkscape:persp3d-origin="27.5625 : 18.333333 : 1" + id="perspective23" /></defs><sodipodi:namedview + inkscape:window-height="719" + inkscape:window-width="641" + inkscape:pageshadow="2" + inkscape:pageopacity="0.0" + guidetolerance="10.0" + gridtolerance="10.0" + objecttolerance="10.0" + borderopacity="1.0" + bordercolor="#666666" + pagecolor="#ffffff" + id="base" + showgrid="false" + inkscape:zoom="8.9818182" + inkscape:cx="27.5625" + inkscape:cy="27.5" + inkscape:window-x="-4" + inkscape:window-y="25" + inkscape:current-layer="svg2" /><g + display="block" + id="bias-on" + style="fill:#ffffff"> + <g + display="inline" + id="Bias_Off" + style="fill:#ffffff"> + <g + id="g6" + style="fill:#ffffff"> + <path + d="M55,45c0,5.5-4.5,10-10,10H10C4.5,55,0,50.5,0,45V10C0,4.5,4.5,0,10,0h35c5.5,0,10,4.5,10,10V45z" + fill="#808284" + id="path8" + style="fill:#ffffff" /> + </g> + <g + id="g10" + style="fill:#ffffff"> + + <line + fill="none" + stroke="#FFFFFF" + stroke-linecap="round" + stroke-linejoin="round" + stroke-width="2.25" + x1="21.789" + x2="8.214" + y1="27.5" + y2="27.499" + id="line12" + style="fill:#ffffff" /> + <polyline + fill="none" + points="17,23.46 21.789,27.5 17,31.54 " + stroke="#FFFFFF" + stroke-linecap="round" + stroke-linejoin="round" + stroke-width="2.25" + id="polyline14" + style="fill:#ffffff" /> + </g> + + <line + fill="none" + stroke="#FFFFFF" + stroke-linecap="round" + stroke-linejoin="round" + stroke-width="3.5" + x1="49.5" + x2="28.5" + y1="13" + y2="13" + id="line16" + style="fill:#ffffff" /> + </g> +</g><path + style="fill:#808284;fill-opacity:1" + d="M 16.308996,32.273747 C 15.890077,31.854828 15.868987,31.305061 16.254268,30.847179 C 16.403161,30.670228 17.03075,30.102747 17.648909,29.586107 L 18.772835,28.646761 L 13.249032,28.591093 L 7.725228,28.535425 L 7.4566187,28.223043 C 7.0944526,27.801862 7.1019801,27.263045 7.4762428,26.818259 L 7.7644818,26.475709 L 13.21005,26.475709 C 16.412886,26.475709 18.655617,26.433922 18.655617,26.374247 C 18.655617,26.318444 18.167131,25.861131 17.570091,25.357999 C 16.973052,24.854866 16.372086,24.311835 16.234612,24.151263 C 15.928113,23.793265 15.902491,23.149067 16.181069,22.805036 C 16.452836,22.469419 17.065697,22.349044 17.47272,22.551335 C 17.648797,22.638846 18.90947,23.656008 20.274218,24.811697 C 22.973453,27.09745 23.070806,27.222449 22.722846,27.955721 C 22.62443,28.163119 22.408034,28.433379 22.241968,28.556295 C 22.075904,28.679213 21.038209,29.545063 19.935982,30.480407 C 18.833755,31.415749 17.78163,32.274931 17.597925,32.389695 C 17.110653,32.694105 16.691664,32.656414 16.308997,32.273746 L 16.308996,32.273747 z" + id="path2396" /><path + style="fill:#808284;fill-opacity:1" + d="M 27.672705,14.423583 C 27.071341,14.014299 26.850877,13.632402 26.860174,13.016087 C 26.870373,12.340124 27.134125,11.873393 27.678966,11.567175 C 28.092247,11.334897 28.135651,11.334008 39.056639,11.334008 L 50.019448,11.334008 L 50.386441,11.584514 C 51.164389,12.115532 51.395091,13.171517 50.894197,13.908648 C 50.34112,14.722579 51.097986,14.674089 38.946247,14.674089 L 28.040775,14.674089 L 27.672705,14.423583 z" + id="path2398" /></svg>
\ No newline at end of file diff --git a/icons/current-ac.svg b/icons/current-ac.svg new file mode 100644 index 0000000..d3adb71 --- /dev/null +++ b/icons/current-ac.svg @@ -0,0 +1,9 @@ +<?xml version="1.0" ?><!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'><svg enable-background="new 0 0 55.125 55" height="55px" version="1.1" viewBox="0 0 55.125 55" width="55.125px" x="0px" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px"><g display="block" id="current-dc"> + <g id="AC_1_"> + <g> + <path d="M55,45c0,5.5-4.5,10-10,10H10C4.5,55,0,50.5,0,45V10C0,4.5,4.5,0,10,0h35c5.5,0,10,4.5,10,10V45z" fill="#808284"/> + </g> + <text fill="#FFFFFF" font-family="'BitstreamVeraSansMono-Roman'" font-size="19" transform="matrix(1 0 0 1 16.1338 48.7461)">AC</text> + <path d="M5,25.167c7.334,0,7.5-16.333,15-16.333s7.5,16.333,15,16.333 S42.834,8.834,50,8.834" fill="none" stroke="#FFFFFF" stroke-width="3.5"/> + </g> +</g></svg>
\ No newline at end of file diff --git a/icons/current-dc.svg b/icons/current-dc.svg new file mode 100644 index 0000000..0078b77 --- /dev/null +++ b/icons/current-dc.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" ?><!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'><svg enable-background="new 0 0 55.125 55" height="55px" version="1.1" viewBox="0 0 55.125 55" width="55.125px" x="0px" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px"><g display="block" id="current-ac"> + <g id="DC"> + <g> + <path d="M55,45c0,5.5-4.5,10-10,10H10C4.5,55,0,50.5,0,45V10C0,4.5,4.5,0,10,0h35c5.5,0,10,4.5,10,10V45z" fill="#808284"/> + </g> + <text fill="#FFFFFF" font-family="'BitstreamVeraSansMono-Roman'" font-size="19" transform="matrix(1 0 0 1 16.1338 48.7461)">DC</text> + <line fill="none" stroke="#E7E7E8" stroke-width="3.5" x1="5" x2="50" y1="10" y2="10"/> + <line fill="none" stroke="#E7E7E8" stroke-dasharray="4" stroke-width="3.5" x1="5" x2="50" y1="25" y2="25"/> + </g> +</g></svg>
\ No newline at end of file diff --git a/icons/domain-freq.svg b/icons/domain-freq.svg new file mode 100644 index 0000000..038807e --- /dev/null +++ b/icons/domain-freq.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" ?><!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'><svg enable-background="new 0 0 55.125 55" height="55px" version="1.1" viewBox="0 0 55.125 55" width="55.125px" x="0px" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px"><g display="block" id="domain-freq"> + <g id="Freq_Domain_1_"> + <g> + <path d="M55,45c0,5.5-4.5,10-10,10H10C4.5,55,0,50.5,0,45V10C0,4.5,4.5,0,10,0h35c5.5,0,10,4.5,10,10V45z" fill="#808284"/> + </g> + <path d="M51,46.506c0,0-1.982,0-7.779,0S40.018,10,35.289,10 c-5.686,0-3.891,36.584-9.84,36.584S21.31,20.32,17.898,20.32c-3.428,0-2.877,26.033-8.695,26.033H6" fill="none" stroke="#FFFFFF" stroke-width="3.5"/> + <line fill="none" stroke="#C6C8CA" stroke-linecap="round" stroke-width="2.25" x1="6" x2="51" y1="50" y2="50"/> + <line fill="none" stroke="#C6C8CA" stroke-linecap="round" stroke-width="2.25" x1="6" x2="6" y1="5" y2="50"/> + </g> +</g></svg>
\ No newline at end of file diff --git a/icons/domain-freq2.svg b/icons/domain-freq2.svg new file mode 100644 index 0000000..c13310d --- /dev/null +++ b/icons/domain-freq2.svg @@ -0,0 +1,99 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + enable-background="new 0 0 55.125 55" + height="55px" + version="1.1" + viewBox="0 0 55.125 55" + width="55.125px" + x="0px" + xml:space="preserve" + y="0px" + id="svg2456" + sodipodi:version="0.32" + inkscape:version="0.46" + sodipodi:docname="domain-freq2.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape"><metadata + id="metadata2473"><rdf:RDF><cc:Work + rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs + id="defs2471"><inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 27.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="55.125 : 27.5 : 1" + inkscape:persp3d-origin="27.5625 : 18.333333 : 1" + id="perspective2475" /></defs><sodipodi:namedview + inkscape:window-height="719" + inkscape:window-width="641" + inkscape:pageshadow="2" + inkscape:pageopacity="0.0" + guidetolerance="10.0" + gridtolerance="10.0" + objecttolerance="10.0" + borderopacity="1.0" + bordercolor="#666666" + pagecolor="#ffffff" + id="base" + showgrid="false" + inkscape:zoom="8.9818182" + inkscape:cx="27.5625" + inkscape:cy="27.5" + inkscape:window-x="-4" + inkscape:window-y="25" + inkscape:current-layer="svg2456" /><g + display="block" + id="domain-freq" + style="fill:#ffffff"> + <g + id="Freq_Domain_1_" + style="fill:#ffffff"> + <g + id="g2460" + style="fill:#ffffff"> + <path + d="M55,45c0,5.5-4.5,10-10,10H10C4.5,55,0,50.5,0,45V10C0,4.5,4.5,0,10,0h35c5.5,0,10,4.5,10,10V45z" + fill="#808284" + id="path2462" + style="fill:#ffffff" /> + </g> + <path + d="M51,46.506c0,0-1.982,0-7.779,0S40.018,10,35.289,10 c-5.686,0-3.891,36.584-9.84,36.584S21.31,20.32,17.898,20.32c-3.428,0-2.877,26.033-8.695,26.033H6" + fill="none" + stroke="#FFFFFF" + stroke-width="3.5" + id="path2464" + style="fill:#ffffff" /> + <line + fill="none" + stroke="#C6C8CA" + stroke-linecap="round" + stroke-width="2.25" + x1="6" + x2="51" + y1="50" + y2="50" + id="line2466" + style="fill:#ffffff" /> + <line + fill="none" + stroke="#C6C8CA" + stroke-linecap="round" + stroke-width="2.25" + x1="6" + x2="6" + y1="5" + y2="50" + id="line2468" + style="fill:#ffffff" /> + </g> +</g><path + style="fill:#808284;fill-opacity:1" + d="M 24.667641,48.201919 C 23.547632,47.963558 22.346882,46.91454 21.639466,45.556396 C 20.306456,42.99719 19.6797,39.799612 18.7107,30.614417 C 18.351477,27.209351 18.092088,25.147219 17.91816,24.313803 C 17.868518,24.075928 17.826462,24.031652 17.7611,24.148448 C 17.605646,24.426228 17.131829,27.066996 16.484549,31.263158 C 16.139779,33.498229 15.707857,36.128543 15.524725,37.1083 C 14.337409,43.460449 12.990935,46.485912 10.841351,47.631628 C 10.172013,47.988381 10.082328,48.005785 8.6656212,48.053833 L 7.1880061,48.10395 L 7.1880061,46.363712 L 7.1880061,44.623482 L 8.3006694,44.623482 L 9.4133306,44.623482 L 9.7625427,44.150304 C 10.267894,43.465563 10.688769,42.49167 11.128669,40.989129 C 11.837218,38.568983 12.235525,36.496975 13.20164,30.205466 C 14.348584,22.736363 14.94527,20.578411 16.20205,19.35427 C 17.435111,18.153231 19.227443,18.474851 20.15892,20.064296 C 20.996955,21.494295 21.447287,23.92082 22.164967,30.873482 C 22.858854,37.595664 23.448994,41.028323 24.277999,43.164374 C 24.612719,44.026829 25.112002,44.790486 25.341157,44.790486 C 25.56932,44.790486 26.279577,43.306909 26.61441,42.130921 C 27.32105,39.64909 27.75751,36.824757 28.732601,28.424089 C 29.81795,19.0735 30.125491,16.998991 30.861774,14.061741 C 31.771734,10.431643 32.90559,8.7464073 34.680961,8.3853323 C 35.657271,8.1867712 36.447479,8.4289794 37.181894,9.1518976 C 38.859966,10.803705 39.482652,14.02501 40.369205,25.640688 C 40.811248,31.432391 41.099994,34.788798 41.312999,36.611554 C 41.78214,40.626134 42.465466,43.551445 43.162887,44.530884 L 43.387377,44.846154 L 47.165226,44.846154 L 50.943067,44.846154 L 50.943067,46.522209 L 50.943067,48.198256 L 46.628796,48.164415 L 42.314524,48.130567 L 41.766502,47.808457 C 40.494475,47.060816 39.630529,45.583568 38.98125,43.046013 C 38.157928,39.828251 37.743711,36.240061 36.914149,25.139676 C 36.670096,21.873998 36.312482,18.043901 36.130393,16.745535 C 35.837171,14.654747 35.300722,12.224696 35.132389,12.224696 C 34.821408,12.224696 33.965857,15.329835 33.475876,18.236842 C 33.074509,20.618103 32.978283,21.366755 32.073456,29.147773 C 31.296086,35.83272 31.044795,37.689778 30.627146,39.836032 C 30.06541,42.722733 29.674668,44.066807 28.976431,45.51417 C 28.473552,46.556578 27.493186,47.657272 26.764817,47.99723 C 26.291466,48.218164 25.230531,48.32171 24.66764,48.201916 L 24.667641,48.201919 z" + id="path2477" /></svg>
\ No newline at end of file diff --git a/icons/domain-time.svg b/icons/domain-time.svg new file mode 100644 index 0000000..d469a02 --- /dev/null +++ b/icons/domain-time.svg @@ -0,0 +1,9 @@ +<?xml version="1.0" ?><!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'><svg enable-background="new 0 0 55.125 55" height="55px" version="1.1" viewBox="0 0 55.125 55" width="55.125px" x="0px" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px"><g display="block" id="domain-time"> + <g id="Time_Domain"> + <g> + <path d="M55,45c0,5.5-4.5,10-10,10H10C4.5,55,0,50.5,0,45V10C0,4.5,4.5,0,10,0h35c5.5,0,10,4.5,10,10V45z" fill="#808284"/> + </g> + <line fill="none" stroke="#C6C8CA" stroke-dasharray="5" stroke-width="2.25" x1="6.012" x2="51.012" y1="27.5" y2="27.5"/> + <path d="M9.066,27.5 c2.32-6.917,4.666-13.834,9.255-13.834c9.179,0,9.179,27.668,18.358,27.668c4.59,0,6.986-6.917,9.332-13.834" fill="none" stroke="#FFFFFF" stroke-linecap="round" stroke-width="3.5"/> + </g> +</g></svg>
\ No newline at end of file diff --git a/icons/domain-time2.svg b/icons/domain-time2.svg new file mode 100644 index 0000000..1267089 --- /dev/null +++ b/icons/domain-time2.svg @@ -0,0 +1,89 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + enable-background="new 0 0 55.125 55" + height="55px" + version="1.1" + viewBox="0 0 55.125 55" + width="55.125px" + x="0px" + xml:space="preserve" + y="0px" + id="svg2454" + sodipodi:version="0.32" + inkscape:version="0.46" + sodipodi:docname="domain-time2.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape"><sodipodi:namedview + inkscape:window-height="719" + inkscape:window-width="641" + inkscape:pageshadow="2" + inkscape:pageopacity="0.0" + guidetolerance="10.0" + gridtolerance="10.0" + objecttolerance="10.0" + borderopacity="1.0" + bordercolor="#666666" + pagecolor="#ffffff" + id="base" + showgrid="false" + inkscape:zoom="8.9818182" + inkscape:cx="27.5625" + inkscape:cy="27.5" + inkscape:window-x="110" + inkscape:window-y="26" + inkscape:current-layer="svg2454" /><metadata + id="metadata2469"><rdf:RDF><cc:Work + rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs + id="defs2467"><inkscape:perspective + id="perspective2471" + inkscape:persp3d-origin="27.5625 : 18.333333 : 1" + inkscape:vp_z="55.125 : 27.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 27.5 : 1" + sodipodi:type="inkscape:persp3d" /></defs><g + id="domain-time" + display="block" + style="fill:#ffffff"> + <g + id="Time_Domain" + style="fill:#ffffff"> + <g + id="g2458" + style="fill:#ffffff"> + <path + id="path2460" + fill="#808284" + d="M55,45c0,5.5-4.5,10-10,10H10C4.5,55,0,50.5,0,45V10C0,4.5,4.5,0,10,0h35c5.5,0,10,4.5,10,10V45z" + style="fill:#ffffff" /> + </g> + <line + id="line2462" + y2="27.5" + y1="27.5" + x2="51.012" + x1="6.012" + stroke-width="2.25" + stroke-dasharray="5" + stroke="#C6C8CA" + fill="none" + style="fill:#ffffff" /> + <path + id="path2464" + stroke-width="3.5" + stroke-linecap="round" + stroke="#FFFFFF" + fill="none" + d="M9.066,27.5 c2.32-6.917,4.666-13.834,9.255-13.834c9.179,0,9.179,27.668,18.358,27.668c4.59,0,6.986-6.917,9.332-13.834" + style="fill:#ffffff" /> + </g> +</g><path + style="fill:#808284;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1" + d="M 35.801366,42.955202 C 33.876716,42.684617 32.03624,41.34428 30.561138,39.138979 C 29.095685,36.948105 28.042219,34.439344 25.781279,27.756073 C 23.352567,20.576869 22.217878,18.110491 20.59885,16.491464 C 19.214684,15.107298 17.631149,15.046197 16.197202,16.321629 C 14.742961,17.615109 13.108614,20.922996 11.301732,26.229966 C 10.920349,27.350122 10.506695,28.395793 10.382501,28.55368 C 9.4972813,29.679052 7.5733646,29.131677 7.4373108,27.715741 C 7.3794951,27.114026 7.5021785,26.68653 8.6455217,23.505693 C 10.456735,18.466811 11.801966,15.935644 13.636184,14.115353 C 15.125547,12.637298 16.534002,12.002024 18.321609,12.002024 C 20.079913,12.002024 21.51572,12.639601 22.956338,14.060098 C 25.04042,16.115073 26.418988,18.98041 28.998994,26.619703 C 31.550972,34.176007 32.665231,36.654683 34.275472,38.357276 C 35.354887,39.498597 36.392521,39.841685 37.576033,39.448585 C 38.29967,39.208231 39.348032,38.256092 40.057651,37.194735 C 41.218411,35.458616 42.712852,32.005894 44.032124,28.012197 C 44.453183,26.737564 44.744458,26.265526 45.268899,26.007878 C 46.016869,25.640415 46.745162,25.807336 47.306953,26.474987 C 47.900667,27.18057 47.854901,27.48634 46.655307,30.829005 C 44.692289,36.298955 43.251377,39.059402 41.414299,40.869558 C 39.73203,42.527168 37.81734,43.238629 35.801366,42.955204 L 35.801366,42.955202 z" + id="path2493" /></svg>
\ No newline at end of file diff --git a/icons/freq-high.svg b/icons/freq-high.svg new file mode 100644 index 0000000..654511a --- /dev/null +++ b/icons/freq-high.svg @@ -0,0 +1,3 @@ +<?xml version="1.0" ?><!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'><svg enable-background="new 0 0 55.125 55" height="55px" version="1.1" viewBox="0 0 55.125 55" width="55.125px" x="0px" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px"><g display="block" id="freq-high"> + <path d="M10.913,27.5 c0.694-5.98,1.396-11.961,2.77-11.961c2.748,0,2.748,23.922,5.496,23.922c1.373,0,2.098-5.973,2.793-11.961 c0.693-5.98,1.396-11.961,2.77-11.961c2.748,0,2.748,23.922,5.494,23.922c1.375,0,2.098-5.974,2.793-11.961 c0.695-5.98,1.396-11.961,2.771-11.961c2.746,0,2.746,23.922,5.494,23.922c1.373,0,2.092-5.98,2.793-11.961" display="inline" fill="none" stroke="#FFFFFF" stroke-linecap="round" stroke-width="3.5"/> +</g></svg>
\ No newline at end of file diff --git a/icons/freq-low.svg b/icons/freq-low.svg new file mode 100644 index 0000000..bef3b19 --- /dev/null +++ b/icons/freq-low.svg @@ -0,0 +1,3 @@ +<?xml version="1.0" ?><!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'><svg enable-background="new 0 0 55.125 55" height="55px" version="1.1" viewBox="0 0 55.125 55" width="55.125px" x="0px" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px"><g display="block" id="freq-low"> + <path d="M11.527,27.5 c2.006-5.98,4.035-11.961,8.003-11.961c7.937,0,7.937,23.922,15.874,23.922c3.969,0,6.041-5.98,8.068-11.961" fill="none" stroke="#FFFFFF" stroke-linecap="round" stroke-width="3.5"/> +</g></svg>
\ No newline at end of file diff --git a/icons/sample_rate.svg b/icons/sample_rate.svg new file mode 100644 index 0000000..0bf48a8 --- /dev/null +++ b/icons/sample_rate.svg @@ -0,0 +1,19 @@ +<?xml version="1.0" ?><!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'><svg enable-background="new 0 0 55.125 55" height="55px" version="1.1" viewBox="0 0 55.125 55" width="55.125px" x="0px" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px"><g display="block" id="sample_x5F_rate"> + <g> + <g> + + <line fill="none" stroke="#FFFFFF" stroke-linecap="round" stroke-linejoin="round" stroke-width="2.25" x1="32.562" x2="20.562" y1="38.258" y2="38.258"/> + + <line fill="none" stroke="#FFFFFF" stroke-linecap="round" stroke-linejoin="round" stroke-width="2.25" x1="32.562" x2="32.562" y1="36.258" y2="40.234"/> + + <line fill="none" stroke="#FFFFFF" stroke-linecap="round" stroke-linejoin="round" stroke-width="2.25" x1="20.562" x2="20.562" y1="36.258" y2="40.234"/> + </g> + <line fill="none" stroke="#C6C8CA" stroke-width="2.25" x1="9" x2="21" y1="28.266" y2="22.266"/> + <line fill="none" stroke="#C6C8CA" stroke-width="2.25" x1="21" x2="33" y1="22.266" y2="25.266"/> + <line fill="none" stroke="#C6C8CA" stroke-width="2.25" x1="33" x2="46" y1="25.266" y2="18.266"/> + <circle cx="9" cy="28.266" fill="#FFFFFF" r="3.5"/> + <circle cx="21" cy="22.266" fill="#FFFFFF" r="3.5"/> + <circle cx="33" cy="25.266" fill="#FFFFFF" r="3.5"/> + <circle cx="46" cy="18.266" fill="#FFFFFF" r="3.5"/> + </g> +</g></svg>
\ No newline at end of file diff --git a/icons/view-details.svg b/icons/view-details.svg new file mode 100644 index 0000000..719047b --- /dev/null +++ b/icons/view-details.svg @@ -0,0 +1,17 @@ +<?xml version="1.0" ?><!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd' [ + <!ENTITY stroke_color "#010101"> + <!ENTITY fill_color "#FFFFFF"> +]><svg enable-background="new 0 0 55.125 55" height="55px" version="1.1" viewBox="0 0 55.125 55" width="55.125px" x="0px" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px"><g display="block" id="view-details"> + <g> + <g id="zoom-in_2_"> + <g> + <path d="M5.048,25.005c0,10.937,8.86,19.807,19.804,19.807 c10.927,0,19.791-8.87,19.791-19.807c0-10.932-8.863-19.797-19.791-19.797C13.908,5.208,5.048,14.073,5.048,25.005z" fill="none" stroke="&fill_color;" stroke-width="4"/> + <line fill="none" stroke="&fill_color;" stroke-width="4" x1="38.851" x2="52.338" y1="39.007" y2="52.495"/> + </g> + </g> + <g id="wave_cutout"> + <path d="M37.761,29.848c-0.975,0.041-1.94-0.624-2.305-1.246c-0.408-0.62-0.555-1.178-0.698-1.686 c-0.172-0.733-0.355-1.399-0.502-1.757c-0.084,0.301-0.17,0.712-0.233,1.178c-0.232,1.571-0.311,3.736-0.669,5.673 c-0.264,1.294-0.566,2.554-1.582,3.631c-0.576,0.609-1.518,1.044-2.453,1.025c-0.825,0.013-1.645-0.355-2.176-0.86 c-0.547-0.503-0.886-1.09-1.156-1.703c-0.529-1.229-0.797-2.657-1.015-4.23c-0.418-3.13-0.548-6.857-0.958-9.611 c-0.135-1.105-0.392-2.052-0.611-2.641c-0.222,0.661-0.434,1.688-0.596,2.87c-0.387,2.727-0.582,6.294-0.998,9.304 c-0.301,2.028-0.607,3.769-1.443,5.192c-0.449,0.788-1.411,1.687-2.711,1.68c-0.037,0.002-0.074,0.002-0.111,0.002 c-1.281,0-2.495-0.717-3.097-1.594c-0.651-0.89-0.935-1.812-1.217-2.702c-0.525-1.8-1.011-3.438-2.024-4.3 c-0.316-0.273-0.702-0.52-1.22-0.708c1.133,7.199,7.344,12.714,14.865,12.714c6.764,0,12.486-4.467,14.387-10.612 C38.784,29.724,38.255,29.888,37.761,29.848z" fill="&fill_color;"/> + <path d="M14.619,26.674c1.269,1.804,1.637,3.766,2.078,5.058c0.27,0.881,0.589,1.347,0.671,1.373 c0.013,0.006,0.021,0.013,0.031,0.019c0.044-0.077,0.098-0.18,0.15-0.307c0.272-0.62,0.54-1.763,0.737-3.111 c0.408-2.717,0.605-6.277,0.997-9.278c0.282-2.021,0.564-3.746,1.343-5.161c0.41-0.774,1.331-1.724,2.663-1.724 c0.799-0.012,1.596,0.344,2.115,0.83c0.531,0.484,0.86,1.048,1.124,1.635c0.513,1.174,0.776,2.529,0.991,4.034 c0.412,2.99,0.543,6.574,0.92,9.355c0.213,1.758,0.627,3.208,0.935,3.664c0.146-0.216,0.357-0.764,0.497-1.48 c0.314-1.495,0.407-3.616,0.65-5.48c0.191-1.258,0.342-2.399,1.098-3.514c0.414-0.634,1.343-1.262,2.327-1.233 c0.884-0.012,1.777,0.303,2.391,0.838c0.62,0.527,0.96,1.158,1.19,1.72c0.176,0.449,0.304,0.887,0.406,1.278 c0.311-0.522,0.779-1.091,1.507-1.515c0.122-0.072,0.26-0.125,0.39-0.187c-0.761-7.606-7.178-13.545-14.98-13.545 c-7.886,0-14.341,6.054-15.002,13.763C12.043,24.148,13.66,25.275,14.619,26.674z" fill="&fill_color;"/> + </g> + </g> +</g></svg>
\ No newline at end of file diff --git a/journal.py b/journal.py new file mode 100755 index 0000000..c02da74 --- /dev/null +++ b/journal.py @@ -0,0 +1,385 @@ +#! /usr/bin/python +# +# Author: Arjun Sarwal arjun@laptop.org +# Copyright (C) 2007, OLPC +# +# +# 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. + +""" +journal.py +start_new_session(user="", Xscale=0, Yscale=0) or continue_existing_session(session_id_to_continue=-1): +must be called before every logging session +for logging value by value, use write_value(value=0),for logging a whole set of values into one session at one time, +use write_record(value_set=[]) +Note: session_id's are unique within one instance of an Activity and are not re-assigned even if one or more logging sessions are deleted +""" + +import csv +import os +import gtk +import dbus +import tempfile +import time +from os import environ +from os.path import join +from numpy import array +from gettext import gettext as _ + +from sugar.datastore import datastore +from sugar import profile + +class JournalInteraction(): + def __init__(self, file_path, existing): + """_jobject is the Journal object + exiting denotes if a file exists with that journal object (resumed from journal) + or not (started afresh)""" + self.filepath= file_path + #self.filepath = _jobject.file_path + self.existing = existing #Denotes if associated journal file exists or not + self.session_id = 0 + self.num_rows=0 + self.logginginterval_status = ' ' + self.writer1 = None + self.writer2 = None + self.making_row = False + self.temp_buffer = [] + self.append_existing=False + self._stopped = True + self.session_id_to_continue=0 + + self.jobject = None + + self.user="" + self.Xscale = 0 + self.Yscale = 0 + + if self.existing==True: + self.set_max_session_id() + self.set_number_of_rows() + + print "$$journal.py: This is the file I will work on", self.filepath + + def __del__(self): + pass + + def on_quit(self): + pass + + + def set_max_session_id(self): + """Sets the existing maximum session_id if the file already exists""" + reader = csv.reader(open(self.filepath, "rb")) + max = 0 + for row in reader: + if int(row[0])>max: + max= int(row[0]) + self.session_id=max + + def set_number_of_rows(self): + """Sets the number of rows an existing file has""" + reader = csv.reader(open(self.filepath, "rb")) + for row in reader: + self.num_rows+=1 + + + + def set_session_params(self, user="", Xscale=0, Yscale=0): + self.user = user + self.Xscale = Xscale + self.Yscale = Yscale + + + def start_new_session(self, user="", Xscale=0, Yscale=0, logginginterval_status=' ' ): + """This needs to be called before starting any logging session""" + self.user = user + self.Xscale = Xscale + self.Yscale = Yscale + self.logginginterval_status = logginginterval_status + self.session_id+=1 + self.num_rows+=1 + self.append_existing=False + self.making_row=False + print "$$journal.py: a new session has been started and the session_id is", self.session_id + return self.session_id + + def continue_existing_session(self, session_id_to_continue=-1): + """This needs to be called before attempting to continue any logging session""" + self.append_existing=True + self.session_id_to_continue=session_id_to_continue + self.making_row=True + + def write_value(self, value=0): + """Append the value passed to temp_buffer if a logging session is started + and continuted If a previous logging session is to be continued upon, read + the corresponding row from the file and continue to append it and then + rewrite the whole row""" + if self.append_existing==True: + self.apppend_session(self.session_id_to_continue) + self.append_existing=False + + if self.making_row==False: + # self.write_session_params() + self.temp_buffer.append(value) + self.making_row = True + else: + self.temp_buffer.append(value) + self._stopped = False + print "$$Journal.py: I just wrote this value", value + + + def get_record(self, session_id=0): + """Return the list of values recorded in one logging session specified by session_id""" + reader = csv.reader(open(self.filepath, "rb")) + for row in reader: + if int(row[0])==session_id: + temp =row + for i in range(0,len(temp)): + if i!=1: + temp[i]=int(temp[i]) + return temp + + + def get_number_of_records(self): + """Returns the of records""" + reader = csv.reader(open(self.filepath, "rb")) + count=0 + for row in reader: + count+=1 + return count + + + def stop_session(self): + """Write the temp_buffer onto a file""" + if self._stopped == False: + if self.existing==True: + writer1 = csv.writer(open(self.filepath, "ab")) + else: + writer1 = csv.writer(open(self.filepath, "wb")) + self.existing = True + for datum in self.temp_buffer: + writer1.writerow( [ datum ] ) + del writer1 + self.temp_buffer = [] + self.making_row = False + self.append_existing = False + #print "$$journal.py: session stopped and the csv writer was", writer1 + try: + self.jobject = datastore.create() + try: + self.jobject.metadata['title'] = 'Measure Activity log, ' + str(self.logginginterval_status) + self.jobject.metadata['keep'] = '0' + self.jobject.metadata['buddies'] = '' + self.jobject.metadata['preview'] = '' + self.jobject.metadata['icon-color'] = profile.get_color().to_string() + self.jobject.metadata['mime_type'] = 'text/csv' + self.jobject.file_path = self.filepath + datastore.write(self.jobject) + finally: + pass + finally: + print "$$$ in outermost finally!!" + self._stopped = True + + + def get_number_of_cols(self): + """Returns the maximum number of columns amongst all the data""" + max = 0 + reader = csv.reader(open(self.filepath, "rb")) + for row in reader: + if len(row)>max: + max=len(row) + return max + + + def write_record(self, values=[]): + """Write a complete row specified by values + If file doesn't exist, open a new file and write to it""" + # self.write_session_params() + self.temp_buffer+=values + self.stop_session() + self._stopped = False + print "$$journal.py: Wrote record", values + + def write_session_params(self): + """Write the session parameters to temp_buffers""" + self.num_rows+=1 + self.temp_buffer.append(_('Session: ' + str(self.session_id))) + self.temp_buffer.append(_('User: ' + str(self.user))) + self.temp_buffer.append(_('Interval: ' + str(self.logginginterval_status))) + ##TODO: Probably need to add a field for timing interval + #self.temp_buffer.append(self.Xscale) + #self.temp_buffer.append(self.Yscale) + + + def get_session_params(self, session_id=-1): + """TODO write this function""" + pass + + def find_record(self, session_id=-1): + """Returns the index 0 to N-1 of the record + session_id may be shifted around due to deletion and editing + returns -1 i it doesn't find it""" + reader = csv.reader(open(self.filepath, "rb")) + found=0 + for i in range(0, self.num_rows): + temp = reader.next() + if int(temp[0])==session_id: + return found + else: + found+=1 + return -1 + + def append_session(self, session_id=-1): + """Deletes that record from the file and returns the existing + data in self.temp_buffer so that further recording can be done""" + reader = csv.reader(open(self.filepath, "rb")) + data_new = [] + + #####Copy all data except row to be deleted, to a temporary buffer + for row in reader: + if int(row[0])!=session_id: + data_new.append(row) + else: + self.temp_buffer=row + + ##Write the temporary buffer to the file again + writer = csv.writer(open(self.filepath, "wb")) + for i in range(0, len(data_new)): + writer.writerow(data_new[i]) + + self.making_row= True + + def delete_record(self, session_id=-1): + """Delete the record identified by its session_id""" + reader = csv.reader(open(self.filepath, "rb")) + data_new = [] + #found = -1 + ##Copy all data except row to be deleted, to a temporary buffer + for row in reader: + if int(row[0])!=session_id: + data_new.append(row) + #print row + else: + pass + #if found==-1: + # return found + #print data_new[5] + ####Write the temporary buffer to the file again + self.num_rows=len(data_new) + writer1 = csv.writer(open(self.filepath, "w")) + for i in range(0, len(data_new)): + writer1.writerow(data_new[i]) + + + def get_existing_sessions_num(self): + """Returns the number of existing sessions already done in that instance of the Activity""" + return self.num_rows + + def get_records_values(self): + pass + + def get_records_session_ids(self): + pass + + def get_records_users(self): + pass + + def get_all_records(self): + """Gets the 2d array of all records""" + records = [] + reader = csv.reader(open(self.filepath, "rb")) + for row in reader: + temp_row = [int(x) for x in row] + records.append(temp_row) + return array(records) + + + def take_activity_screenshot(self): + if self._model.get_zoom_level() != ShellModel.ZOOM_ACTIVITY: + return + if self.get_frame().visible: + return + + home_model = self._model.get_home() + activity = home_model.get_active_activity() + if activity is not None: + service = activity.get_service() + if service is not None: + try: + service.TakeScreenshot(timeout=2.0) + except dbus.DBusException, e: + logging.debug('Error raised by TakeScreenshot(): %s', e) + + + + def take_screenshot(self, waveform_id = 1): + #file_path = os.path.join(tempfile.gettempdir(), '%i' % time.time()) + act_root = environ['SUGAR_ACTIVITY_ROOT'] + tmp_dir = join(act_root, 'data') + file_path = str(tempfile.mkstemp(dir=tmp_dir)[1]) + ###TODO: This is such a crappy way to write a file to the journal + ### Ideally I should be implementing the write_file and read_file methods + os.chmod(file_path, 0777) + window = gtk.gdk.get_default_root_window() + width, height = window.get_size() + x_orig, y_orig = window.get_origin() + + screenshot = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, has_alpha=False, + bits_per_sample=8, width=width, height=height) + screenshot.get_from_drawable(window, window.get_colormap(), x_orig, y_orig, 0, 0, + width, height) + screenshot.save(file_path, "png") + try: + jobject = datastore.create() + try: + jobject.metadata['title'] = _('Waveform ' + str(waveform_id) + ' ,from Measure Activity') + jobject.metadata['keep'] = '0' + jobject.metadata['buddies'] = '' + jobject.metadata['preview'] = '' + jobject.metadata['icon-color'] = profile.get_color().to_string() + jobject.metadata['mime_type'] = 'image/png' + jobject.file_path = file_path + datastore.write(jobject) + finally: + jobject.destroy() + del jobject + finally: + os.remove(file_path) + + + + +""" +#FOR TESTING JOURNALINTERACTION CLASS +ji = JournalInteraction("myfile.csv", True) +print ji.get_all_records() +ji.set_session_params("guitar", 6, 6) +ji.write_record([1,1,1]) +ji.write_record([2,2,2]) +print ji.get_number_of_records() +ji.write_record([3,3,3]) +ji.write_record([4,4,4]) +print ji.get_number_of_records() +ji.write_record([5,5,5]) +ji.write_record([6,6,6]) +ji.write_record([7,7,7]) +ji.append_session(0) +ji.write_value(2222) +ji.write_value(222222) +ji.stop_session() +ji.delete_record(3) +print type(ji.read_record(2)[0]) +""" diff --git a/locale/am/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/am/LC_MESSAGES/org.laptop.MeasureActivity.mo Binary files differnew file mode 100644 index 0000000..c5361e7 --- /dev/null +++ b/locale/am/LC_MESSAGES/org.laptop.MeasureActivity.mo diff --git a/locale/am/activity.linfo b/locale/am/activity.linfo new file mode 100644 index 0000000..041f72c --- /dev/null +++ b/locale/am/activity.linfo @@ -0,0 +1,2 @@ +[Activity] +name = Measure diff --git a/locale/ar/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/ar/LC_MESSAGES/org.laptop.MeasureActivity.mo Binary files differnew file mode 100644 index 0000000..aa9d06e --- /dev/null +++ b/locale/ar/LC_MESSAGES/org.laptop.MeasureActivity.mo diff --git a/locale/ar/activity.linfo b/locale/ar/activity.linfo new file mode 100644 index 0000000..a54992c --- /dev/null +++ b/locale/ar/activity.linfo @@ -0,0 +1,2 @@ +[Activity] +name = قياس diff --git a/locale/ay/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/ay/LC_MESSAGES/org.laptop.MeasureActivity.mo Binary files differnew file mode 100644 index 0000000..c5361e7 --- /dev/null +++ b/locale/ay/LC_MESSAGES/org.laptop.MeasureActivity.mo diff --git a/locale/ay/activity.linfo b/locale/ay/activity.linfo new file mode 100644 index 0000000..041f72c --- /dev/null +++ b/locale/ay/activity.linfo @@ -0,0 +1,2 @@ +[Activity] +name = Measure diff --git a/locale/bg/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/bg/LC_MESSAGES/org.laptop.MeasureActivity.mo Binary files differnew file mode 100644 index 0000000..988e2b9 --- /dev/null +++ b/locale/bg/LC_MESSAGES/org.laptop.MeasureActivity.mo diff --git a/locale/bg/activity.linfo b/locale/bg/activity.linfo new file mode 100644 index 0000000..07c0c5e --- /dev/null +++ b/locale/bg/activity.linfo @@ -0,0 +1,2 @@ +[Activity] +name = Осцилоскоп diff --git a/locale/bn/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/bn/LC_MESSAGES/org.laptop.MeasureActivity.mo Binary files differnew file mode 100644 index 0000000..fc6ca89 --- /dev/null +++ b/locale/bn/LC_MESSAGES/org.laptop.MeasureActivity.mo diff --git a/locale/bn/activity.linfo b/locale/bn/activity.linfo new file mode 100644 index 0000000..041f72c --- /dev/null +++ b/locale/bn/activity.linfo @@ -0,0 +1,2 @@ +[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 Binary files differnew file mode 100644 index 0000000..0293ef2 --- /dev/null +++ b/locale/bn_IN/LC_MESSAGES/org.laptop.MeasureActivity.mo diff --git a/locale/bn_IN/activity.linfo b/locale/bn_IN/activity.linfo new file mode 100644 index 0000000..4f57866 --- /dev/null +++ b/locale/bn_IN/activity.linfo @@ -0,0 +1,2 @@ +[Activity] +name = মেপে নিন diff --git a/locale/ca/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/ca/LC_MESSAGES/org.laptop.MeasureActivity.mo Binary files differnew file mode 100644 index 0000000..b8c78af --- /dev/null +++ b/locale/ca/LC_MESSAGES/org.laptop.MeasureActivity.mo diff --git a/locale/ca/activity.linfo b/locale/ca/activity.linfo new file mode 100644 index 0000000..bb222f0 --- /dev/null +++ b/locale/ca/activity.linfo @@ -0,0 +1,2 @@ +[Activity] +name = Mesura diff --git a/locale/de/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/de/LC_MESSAGES/org.laptop.MeasureActivity.mo Binary files differnew file mode 100644 index 0000000..95d7078 --- /dev/null +++ b/locale/de/LC_MESSAGES/org.laptop.MeasureActivity.mo diff --git a/locale/de/activity.linfo b/locale/de/activity.linfo new file mode 100644 index 0000000..e9fd1a0 --- /dev/null +++ b/locale/de/activity.linfo @@ -0,0 +1,2 @@ +[Activity] +name = Messen diff --git a/locale/dz/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/dz/LC_MESSAGES/org.laptop.MeasureActivity.mo Binary files differnew file mode 100644 index 0000000..c5361e7 --- /dev/null +++ b/locale/dz/LC_MESSAGES/org.laptop.MeasureActivity.mo diff --git a/locale/dz/activity.linfo b/locale/dz/activity.linfo new file mode 100644 index 0000000..041f72c --- /dev/null +++ b/locale/dz/activity.linfo @@ -0,0 +1,2 @@ +[Activity] +name = Measure diff --git a/locale/el/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/el/LC_MESSAGES/org.laptop.MeasureActivity.mo Binary files differnew file mode 100644 index 0000000..abcd21b --- /dev/null +++ b/locale/el/LC_MESSAGES/org.laptop.MeasureActivity.mo diff --git a/locale/el/activity.linfo b/locale/el/activity.linfo new file mode 100644 index 0000000..a4fdba2 --- /dev/null +++ b/locale/el/activity.linfo @@ -0,0 +1,2 @@ +[Activity] +name = Μέτρηση diff --git a/locale/en/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/en/LC_MESSAGES/org.laptop.MeasureActivity.mo Binary files differnew file mode 100644 index 0000000..c5361e7 --- /dev/null +++ b/locale/en/LC_MESSAGES/org.laptop.MeasureActivity.mo diff --git a/locale/en/activity.linfo b/locale/en/activity.linfo new file mode 100644 index 0000000..041f72c --- /dev/null +++ b/locale/en/activity.linfo @@ -0,0 +1,2 @@ +[Activity] +name = Measure diff --git a/locale/es/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/es/LC_MESSAGES/org.laptop.MeasureActivity.mo Binary files differnew file mode 100644 index 0000000..b7e6913 --- /dev/null +++ b/locale/es/LC_MESSAGES/org.laptop.MeasureActivity.mo diff --git a/locale/es/activity.linfo b/locale/es/activity.linfo new file mode 100644 index 0000000..fff5c0f --- /dev/null +++ b/locale/es/activity.linfo @@ -0,0 +1,2 @@ +[Activity] +name = Medir diff --git a/locale/fa/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/fa/LC_MESSAGES/org.laptop.MeasureActivity.mo Binary files differnew file mode 100644 index 0000000..8d86b62 --- /dev/null +++ b/locale/fa/LC_MESSAGES/org.laptop.MeasureActivity.mo diff --git a/locale/fa/activity.linfo b/locale/fa/activity.linfo new file mode 100644 index 0000000..e471dc6 --- /dev/null +++ b/locale/fa/activity.linfo @@ -0,0 +1,2 @@ +[Activity] +name = سنجش diff --git a/locale/fa_AF/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/fa_AF/LC_MESSAGES/org.laptop.MeasureActivity.mo Binary files differnew file mode 100644 index 0000000..ed17fe8 --- /dev/null +++ b/locale/fa_AF/LC_MESSAGES/org.laptop.MeasureActivity.mo diff --git a/locale/fa_AF/activity.linfo b/locale/fa_AF/activity.linfo new file mode 100644 index 0000000..e471dc6 --- /dev/null +++ b/locale/fa_AF/activity.linfo @@ -0,0 +1,2 @@ +[Activity] +name = سنجش diff --git a/locale/ff/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/ff/LC_MESSAGES/org.laptop.MeasureActivity.mo Binary files differnew file mode 100644 index 0000000..c5361e7 --- /dev/null +++ b/locale/ff/LC_MESSAGES/org.laptop.MeasureActivity.mo diff --git a/locale/ff/activity.linfo b/locale/ff/activity.linfo new file mode 100644 index 0000000..041f72c --- /dev/null +++ b/locale/ff/activity.linfo @@ -0,0 +1,2 @@ +[Activity] +name = Measure diff --git a/locale/fr/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/fr/LC_MESSAGES/org.laptop.MeasureActivity.mo Binary files differnew file mode 100644 index 0000000..d851065 --- /dev/null +++ b/locale/fr/LC_MESSAGES/org.laptop.MeasureActivity.mo diff --git a/locale/fr/activity.linfo b/locale/fr/activity.linfo new file mode 100644 index 0000000..7c3f603 --- /dev/null +++ b/locale/fr/activity.linfo @@ -0,0 +1,2 @@ +[Activity] +name = Mesure diff --git a/locale/ha/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/ha/LC_MESSAGES/org.laptop.MeasureActivity.mo Binary files differnew file mode 100644 index 0000000..c5361e7 --- /dev/null +++ b/locale/ha/LC_MESSAGES/org.laptop.MeasureActivity.mo diff --git a/locale/ha/activity.linfo b/locale/ha/activity.linfo new file mode 100644 index 0000000..041f72c --- /dev/null +++ b/locale/ha/activity.linfo @@ -0,0 +1,2 @@ +[Activity] +name = Measure diff --git a/locale/hi/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/hi/LC_MESSAGES/org.laptop.MeasureActivity.mo Binary files differnew file mode 100644 index 0000000..68fc1f3 --- /dev/null +++ b/locale/hi/LC_MESSAGES/org.laptop.MeasureActivity.mo diff --git a/locale/hi/activity.linfo b/locale/hi/activity.linfo new file mode 100644 index 0000000..9fdd894 --- /dev/null +++ b/locale/hi/activity.linfo @@ -0,0 +1,2 @@ +[Activity] +name = नाप diff --git a/locale/ig/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/ig/LC_MESSAGES/org.laptop.MeasureActivity.mo Binary files differnew file mode 100644 index 0000000..c5361e7 --- /dev/null +++ b/locale/ig/LC_MESSAGES/org.laptop.MeasureActivity.mo diff --git a/locale/ig/activity.linfo b/locale/ig/activity.linfo new file mode 100644 index 0000000..041f72c --- /dev/null +++ b/locale/ig/activity.linfo @@ -0,0 +1,2 @@ +[Activity] +name = Measure diff --git a/locale/is/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/is/LC_MESSAGES/org.laptop.MeasureActivity.mo Binary files differnew file mode 100644 index 0000000..622964b --- /dev/null +++ b/locale/is/LC_MESSAGES/org.laptop.MeasureActivity.mo diff --git a/locale/is/activity.linfo b/locale/is/activity.linfo new file mode 100644 index 0000000..7425d9a --- /dev/null +++ b/locale/is/activity.linfo @@ -0,0 +1,2 @@ +[Activity] +name = Mæla diff --git a/locale/ja/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/ja/LC_MESSAGES/org.laptop.MeasureActivity.mo Binary files differnew file mode 100644 index 0000000..de16c53 --- /dev/null +++ b/locale/ja/LC_MESSAGES/org.laptop.MeasureActivity.mo diff --git a/locale/ja/activity.linfo b/locale/ja/activity.linfo new file mode 100644 index 0000000..1efd009 --- /dev/null +++ b/locale/ja/activity.linfo @@ -0,0 +1,2 @@ +[Activity] +name = 計測 diff --git a/locale/mk/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/mk/LC_MESSAGES/org.laptop.MeasureActivity.mo Binary files differnew file mode 100644 index 0000000..dfeecf6 --- /dev/null +++ b/locale/mk/LC_MESSAGES/org.laptop.MeasureActivity.mo diff --git a/locale/mk/activity.linfo b/locale/mk/activity.linfo new file mode 100644 index 0000000..ff1f64b --- /dev/null +++ b/locale/mk/activity.linfo @@ -0,0 +1,2 @@ +[Activity] +name = Мерка diff --git a/locale/ml/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/ml/LC_MESSAGES/org.laptop.MeasureActivity.mo Binary files differnew file mode 100644 index 0000000..c5361e7 --- /dev/null +++ b/locale/ml/LC_MESSAGES/org.laptop.MeasureActivity.mo diff --git a/locale/ml/activity.linfo b/locale/ml/activity.linfo new file mode 100644 index 0000000..041f72c --- /dev/null +++ b/locale/ml/activity.linfo @@ -0,0 +1,2 @@ +[Activity] +name = Measure diff --git a/locale/mn/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/mn/LC_MESSAGES/org.laptop.MeasureActivity.mo Binary files differnew file mode 100644 index 0000000..07785df --- /dev/null +++ b/locale/mn/LC_MESSAGES/org.laptop.MeasureActivity.mo diff --git a/locale/mn/activity.linfo b/locale/mn/activity.linfo new file mode 100644 index 0000000..14197e5 --- /dev/null +++ b/locale/mn/activity.linfo @@ -0,0 +1,2 @@ +[Activity] +name = Хэмжигч diff --git a/locale/ne/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/ne/LC_MESSAGES/org.laptop.MeasureActivity.mo Binary files differnew file mode 100644 index 0000000..37015ff --- /dev/null +++ b/locale/ne/LC_MESSAGES/org.laptop.MeasureActivity.mo diff --git a/locale/ne/activity.linfo b/locale/ne/activity.linfo new file mode 100644 index 0000000..9fdd894 --- /dev/null +++ b/locale/ne/activity.linfo @@ -0,0 +1,2 @@ +[Activity] +name = नाप diff --git a/locale/nl/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/nl/LC_MESSAGES/org.laptop.MeasureActivity.mo Binary files differnew file mode 100644 index 0000000..574d6af --- /dev/null +++ b/locale/nl/LC_MESSAGES/org.laptop.MeasureActivity.mo diff --git a/locale/nl/activity.linfo b/locale/nl/activity.linfo new file mode 100644 index 0000000..e47e1d6 --- /dev/null +++ b/locale/nl/activity.linfo @@ -0,0 +1,2 @@ +[Activity] +name = Meten diff --git a/locale/pa/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/pa/LC_MESSAGES/org.laptop.MeasureActivity.mo Binary files differnew file mode 100644 index 0000000..c5361e7 --- /dev/null +++ b/locale/pa/LC_MESSAGES/org.laptop.MeasureActivity.mo diff --git a/locale/pa/activity.linfo b/locale/pa/activity.linfo new file mode 100644 index 0000000..041f72c --- /dev/null +++ b/locale/pa/activity.linfo @@ -0,0 +1,2 @@ +[Activity] +name = Measure diff --git a/locale/pl/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/pl/LC_MESSAGES/org.laptop.MeasureActivity.mo Binary files differnew file mode 100644 index 0000000..c5361e7 --- /dev/null +++ b/locale/pl/LC_MESSAGES/org.laptop.MeasureActivity.mo diff --git a/locale/pl/activity.linfo b/locale/pl/activity.linfo new file mode 100644 index 0000000..041f72c --- /dev/null +++ b/locale/pl/activity.linfo @@ -0,0 +1,2 @@ +[Activity] +name = Measure diff --git a/locale/ps/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/ps/LC_MESSAGES/org.laptop.MeasureActivity.mo Binary files differnew file mode 100644 index 0000000..c34c167 --- /dev/null +++ b/locale/ps/LC_MESSAGES/org.laptop.MeasureActivity.mo diff --git a/locale/ps/activity.linfo b/locale/ps/activity.linfo new file mode 100644 index 0000000..9d83b52 --- /dev/null +++ b/locale/ps/activity.linfo @@ -0,0 +1,2 @@ +[Activity] +name = اندازه کول diff --git a/locale/pseudo/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/pseudo/LC_MESSAGES/org.laptop.MeasureActivity.mo Binary files differnew file mode 100644 index 0000000..c5361e7 --- /dev/null +++ b/locale/pseudo/LC_MESSAGES/org.laptop.MeasureActivity.mo diff --git a/locale/pseudo/activity.linfo b/locale/pseudo/activity.linfo new file mode 100644 index 0000000..041f72c --- /dev/null +++ b/locale/pseudo/activity.linfo @@ -0,0 +1,2 @@ +[Activity] +name = Measure diff --git a/locale/pt/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/pt/LC_MESSAGES/org.laptop.MeasureActivity.mo Binary files differnew file mode 100644 index 0000000..9f57ce1 --- /dev/null +++ b/locale/pt/LC_MESSAGES/org.laptop.MeasureActivity.mo diff --git a/locale/pt/activity.linfo b/locale/pt/activity.linfo new file mode 100644 index 0000000..fff5c0f --- /dev/null +++ b/locale/pt/activity.linfo @@ -0,0 +1,2 @@ +[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 Binary files differnew file mode 100644 index 0000000..ac57dcd --- /dev/null +++ b/locale/pt_BR/LC_MESSAGES/org.laptop.MeasureActivity.mo diff --git a/locale/pt_BR/activity.linfo b/locale/pt_BR/activity.linfo new file mode 100644 index 0000000..fff5c0f --- /dev/null +++ b/locale/pt_BR/activity.linfo @@ -0,0 +1,2 @@ +[Activity] +name = Medir diff --git a/locale/qu/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/qu/LC_MESSAGES/org.laptop.MeasureActivity.mo Binary files differnew file mode 100644 index 0000000..c5361e7 --- /dev/null +++ b/locale/qu/LC_MESSAGES/org.laptop.MeasureActivity.mo diff --git a/locale/qu/activity.linfo b/locale/qu/activity.linfo new file mode 100644 index 0000000..041f72c --- /dev/null +++ b/locale/qu/activity.linfo @@ -0,0 +1,2 @@ +[Activity] +name = Measure diff --git a/locale/ro/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/ro/LC_MESSAGES/org.laptop.MeasureActivity.mo Binary files differnew file mode 100644 index 0000000..22b8d05 --- /dev/null +++ b/locale/ro/LC_MESSAGES/org.laptop.MeasureActivity.mo diff --git a/locale/ro/activity.linfo b/locale/ro/activity.linfo new file mode 100644 index 0000000..be07be2 --- /dev/null +++ b/locale/ro/activity.linfo @@ -0,0 +1,2 @@ +[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 Binary files differnew file mode 100644 index 0000000..0a2c255 --- /dev/null +++ b/locale/ru/LC_MESSAGES/org.laptop.MeasureActivity.mo diff --git a/locale/ru/activity.linfo b/locale/ru/activity.linfo new file mode 100644 index 0000000..9b9de0d --- /dev/null +++ b/locale/ru/activity.linfo @@ -0,0 +1,2 @@ +[Activity] +name = Измерить diff --git a/locale/rw/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/rw/LC_MESSAGES/org.laptop.MeasureActivity.mo Binary files differnew file mode 100644 index 0000000..141a46b --- /dev/null +++ b/locale/rw/LC_MESSAGES/org.laptop.MeasureActivity.mo diff --git a/locale/rw/activity.linfo b/locale/rw/activity.linfo new file mode 100644 index 0000000..7dc1d4e --- /dev/null +++ b/locale/rw/activity.linfo @@ -0,0 +1,2 @@ +[Activity] +name = Gupima diff --git a/locale/te/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/te/LC_MESSAGES/org.laptop.MeasureActivity.mo Binary files differnew file mode 100644 index 0000000..f641af6 --- /dev/null +++ b/locale/te/LC_MESSAGES/org.laptop.MeasureActivity.mo diff --git a/locale/te/activity.linfo b/locale/te/activity.linfo new file mode 100644 index 0000000..bbfba32 --- /dev/null +++ b/locale/te/activity.linfo @@ -0,0 +1,2 @@ +[Activity] +name = కొలువు diff --git a/locale/th/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/th/LC_MESSAGES/org.laptop.MeasureActivity.mo Binary files differnew file mode 100644 index 0000000..9ca20f1 --- /dev/null +++ b/locale/th/LC_MESSAGES/org.laptop.MeasureActivity.mo diff --git a/locale/th/activity.linfo b/locale/th/activity.linfo new file mode 100644 index 0000000..393013a --- /dev/null +++ b/locale/th/activity.linfo @@ -0,0 +1,2 @@ +[Activity] +name = วัดค่า diff --git a/locale/ur/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/ur/LC_MESSAGES/org.laptop.MeasureActivity.mo Binary files differnew file mode 100644 index 0000000..640cb90 --- /dev/null +++ b/locale/ur/LC_MESSAGES/org.laptop.MeasureActivity.mo diff --git a/locale/ur/activity.linfo b/locale/ur/activity.linfo new file mode 100644 index 0000000..3e160cb --- /dev/null +++ b/locale/ur/activity.linfo @@ -0,0 +1,2 @@ +[Activity] +name = ناپیں diff --git a/locale/yo/LC_MESSAGES/org.laptop.MeasureActivity.mo b/locale/yo/LC_MESSAGES/org.laptop.MeasureActivity.mo Binary files differnew file mode 100644 index 0000000..c5361e7 --- /dev/null +++ b/locale/yo/LC_MESSAGES/org.laptop.MeasureActivity.mo diff --git a/locale/yo/activity.linfo b/locale/yo/activity.linfo new file mode 100644 index 0000000..041f72c --- /dev/null +++ b/locale/yo/activity.linfo @@ -0,0 +1,2 @@ +[Activity] +name = Measure diff --git a/log1.csv b/log1.csv new file mode 100755 index 0000000..164f9fd --- /dev/null +++ b/log1.csv @@ -0,0 +1 @@ +Session: 1,User: kim-touchpad,Interval: 1second,-23566,-23947,-23829,-21217,-32768,-23466,-32768,-23836,-32768,-24464,-23228,-25016,-32768,-24039,-23946,-32768,-32768,-32768,-24057,-23830,-23654,-32768,-32768,-32768,-23842,-23884,-23882,-23772
diff --git a/log3.csv b/log3.csv new file mode 100755 index 0000000..8ac2a6e --- /dev/null +++ b/log3.csv @@ -0,0 +1,3 @@ +Session: 1,User: kim-touchpad,Interval: 1second,-23566,-23947,-23829,-21217,-32768,-23466,-32768,-23836,-32768,-24464,-23228,-25016,-32768,-24039,-23946,-32768,-32768,-32768,-24057,-23830,-23654,-32768,-32768,-32768,-23842,-23884,-23882,-23772
+Session: 2,User: kim-touchpad,Interval: 1second,32767,32767,32767,32767,-32768,-32768,32767,32767,-32768,-32768,32767,32767,32767,-32768,32767,32767,32767,-32768,-32768,-32768,-32768,32767,32767,32767,-32768,-32768,32767,32767,-32768,-32768,-32768,32767,32767,32767
+Session: 3,User: kim-touchpad,Interval: 1second,32767,32767,-32768,32767,32767,-32768,32767,32767,-32768,-32768,32767,32767,32767
diff --git a/logging_ui.py b/logging_ui.py new file mode 100755 index 0000000..5c00bdc --- /dev/null +++ b/logging_ui.py @@ -0,0 +1,136 @@ +import pygtk +import gtk +import gobject +from gettext import gettext as _ + + +import config #This has all the globals + +from sugar.activity.activity import ActivityToolbox, EditToolbar +from sugar.graphics.toolcombobox import ToolComboBox +from sugar.graphics.toolbutton import ToolButton +from sugar.graphics.toggletoolbutton import ToggleToolButton +from sugar.graphics.combobox import ComboBox +from sugar.graphics.menuitem import MenuItem + + +class LogToolbar(gtk.Toolbar): + """This class allows one to control throught the toolbar, writing values onto a csv file and hance implement one or many logging sessions""" + + def __init__(self, audiograb, journal, activity): + + gtk.Toolbar.__init__(self) + + self.ag = audiograb + self.ji = journal + self.activity = activity + + + self.loginterval_img = gtk.Image() + 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##################### + self._loginterval_combo = ComboBox() + self.interval = [_('Picture'), _('1 second') , _('5 seconds'), _('1 minute') , _('5 minutes'), _('1 hour')] + + 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) + if s == _('Picture'): + self._loginterval_combo.set_active(i) + + self._loginterval_tool = ToolComboBox(self._loginterval_combo) + self.insert(self._loginterval_tool,-1) + self._loginterval_tool.show() + self.logginginterval_status = 'picture' + ############################################################ + + separator = gtk.SeparatorToolItem() + separator.set_draw(True) + self.insert(separator, -1) + separator.show() + + #######################Start Logging/Stop Logging##################### + self._record = ToolButton('media-record') + self.insert(self._record, -1) + self._record.show() + self._record.set_tooltip(_('Start Logging')) + self.record_state = False #True means recording in progress, False means not recording + self._record.connect('clicked', self.record_control) + ###################################################################### + + separator = gtk.SeparatorToolItem() + separator.set_draw(True) + self.insert(separator, -1) + separator.show() + + + def record_control(self, data=None): + """Depending upon the selected interval, does either + a logging session, or just logs the current buffer""" + if self.record_state == False: + Xscale = (1.00/self.ag.get_sampling_rate()) + Yscale = 0.0 + interval = self.interval_convert() + self.ji.start_new_session("arjs", Xscale, Yscale) + self.ag.set_logging_params(True, interval) + self.record_state = True + + self._record.set_icon('media-playback-stop') + self._record.show() + self._record.set_tooltip(_('Stop Logging')) + if interval==0: + self._record.set_icon('media-record') + self._record.show() + self._record.set_tooltip(_('Start Logging')) + self.record_state = False + else: + self.ji.stop_session() + self.ag.set_logging_params(False) + self.record_state = False + + self._record.set_icon('media-record') + self._record.show() + self._record.set_tooltip(_('Start Logging')) + + + def interval_convert(self): + """Converts picture/1second/5seconds/1minute/5minutes 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""" + if self.logginginterval_status == 'picture': + return 0 + elif self.logginginterval_status == 'second': + return 50 + elif self.logginginterval_status == '5second': + return 250 + elif self.logginginterval_status == 'minute': + return 3000 + elif self.logginginterval_status == '5minute': + return 15000 + elif self.logginginterval_status == 'hour': + return 180000 + + + + def loginterval_control(self, combobox): + + if (self._loginterval_combo.get_active() != -1): + if (self._loginterval_combo.get_active() == 0): + self.logginginterval_status = 'picture' + if (self._loginterval_combo.get_active() == 1): + self.logginginterval_status = 'second' + if (self._loginterval_combo.get_active() == 2): + self.logginginterval_status = '5second' + if (self._loginterval_combo.get_active() == 3): + self.logginginterval_status = 'minute' + if (self._loginterval_combo.get_active() == 3): + self.logginginterval_status = '5minute' + if (self._loginterval_combo.get_active() == 3): + self.logginginterval_status = 'hour' diff --git a/measure.py b/measure.py new file mode 100755 index 0000000..2ee314f --- /dev/null +++ b/measure.py @@ -0,0 +1,163 @@ +#!/usr/bin/python +# +# Copyright (C) 2007, OLPC +# Written by Arjun Sarwal <arjun@laptop.org> +# +# 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 pygst +pygst.require("0.10") +import pygtk +import gtk +import gobject +import time +import config #This has all the globals +import os, sys +import tempfile +from os import environ +from os.path import join + +from journal import JournalInteraction +from audiograb import AudioGrab +from drawwaveform import DrawWaveform +from toolbar_side import SideToolbar +from toolbar_top import Toolbar +from textbox import TextBox + +import logging +from sugar.activity import activity +from sugar.datastore import datastore + + +class MeasureActivity(activity.Activity): + + def __init__(self, handle): + + activity.Activity.__init__(self, handle) + act_root = environ['SUGAR_ACTIVITY_ROOT'] + tmp_dir = join(act_root, 'data') + + + self.active_status = True + self.ACTIVE = True + self.connect( "notify::active", self._activeCb ) + self.connect("destroy", self.on_quit) + + if self._jobject.file_path: + #logging.debug('1.0 Launched from journal') + self.existing = True + else: + #logging.debug('1.1 Launched from frame or from Mesh View') + self._jobject.file_path =str(tempfile.mkstemp(dir=tmp_dir)[1]) + os.chmod(self._jobject.file_path, 0777) + self.existing = False + + + self.ji = JournalInteraction(self._jobject.file_path, self.existing) + self.wave = DrawWaveform() + self.audiograb = AudioGrab(self.wave.new_buffer, self.ji) + self.side_toolbar = SideToolbar(self.wave) + self.text_box = TextBox() + + + self.box3 = gtk.HBox(False, 0) + self.box3.pack_start(self.wave,True,True,0) + self.box3.pack_start(self.side_toolbar.box1,False,True,0) + + self.box1 = gtk.VBox(False,0) + self.box1.pack_start(self.box3, True, True, 0) + self.box1.pack_start(self.text_box.box_main, False, True, 0) + + self.set_canvas(self.box1) + + toolbox = Toolbar(self, self.wave, self.audiograb, self.ji, self.text_box) + self.set_toolbox(toolbox) + toolbox.show() + + self.show_all() + + self.first = True + + gobject.timeout_add(config.REFRESH_TIME, self.waveform_refresh) + + + + def set_show_hide_windows(self, window_id=1): + """Shows the appropriate window identified by the window_id + 1 --> sound + 2 --> sensors + """ + if window_id==1: + #self.box3.pack_start(self.wave,True,True,0) + #self.box3.pack_start(self.side_toolbar.box1,False,True,0) + #self.box3.show_all() + self.wave.set_context_on() + self.side_toolbar.box1.show_all() + self.active_context_status = 1 + return + + elif window_id==2: + #self.box3.pack_start(self.wave,True,True,0) + #self.box3.show_all() + self.wave.set_context_on() + self.side_toolbar.box1.hide_all() + self.active_context_status = 2 + return + + + def get_show_hide_windows(self): + """Gets which window is being shown + If 0 is returned means waveform window is being shown + If 1 is returned means camera context""" + return self.active_context_status + + + + def waveform_refresh(self): + self.wave.queue_draw() + return self.active_status + + + def on_quit(self,data=None): + self.audiograb.on_activity_quit() + self.ji.on_quit() + + def _activeCb( self, widget, pspec ): + if(self.first == True): + self.audiograb.start_grabbing() + self.first = False + if (not self.props.active and self.ACTIVE): + self.audiograb.pause_grabbing() + self.active_status = False + elif (self.props.active and not self.ACTIVE): + self.audiograb.resume_grabbing() + self.active_status = True + gobject.timeout_add(config.REFRESH_TIME, \ + self.waveform_refresh) + self.ACTIVE = self.props.active + + + def write_file(self, file_path): + self.metadata['fulltext'] = 'blah blah' + + def read_file(self, file_path): + pass + + +gtk.gdk.threads_init() + + + diff --git a/po/Measure.pot b/po/Measure.pot new file mode 100644 index 0000000..bc129df --- /dev/null +++ b/po/Measure.pot @@ -0,0 +1,117 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2007-11-13 23:55+0530\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: activity/activity.info:2 +msgid "Measure" +msgstr "" + +#: drawWaveform.py:205 drawWaveform.py:260 +msgid "Spectrum value" +msgstr "" + +#: drawWaveform.py:330 +msgid "RMS : " +msgstr "" + +#: drawWaveform.py:330 +msgid "AVG : " +msgstr "" + +#: drawWaveform.py:331 +msgid "Scale:" +msgstr "" + +#: drawWaveform.py:332 +msgid "X Axis: " +msgstr "" + +#: drawWaveform.py:332 +msgid "Y Axis : " +msgstr "" + +#: electrical_ui.py:38 electrical_ui.py:151 +msgid "Click for DC" +msgstr "" + +#: electrical_ui.py:50 electrical_ui.py:172 +msgid "Click for Bias Off" +msgstr "" + +#: electrical_ui.py:61 electrical_ui.py:192 +msgid "Click for Frequency base" +msgstr "" + +#: electrical_ui.py:116 electrical_ui.py:256 +msgid "Pause" +msgstr "" + +#: electrical_ui.py:126 electrical_ui.py:203 +msgid "Show values" +msgstr "" + +#: electrical_ui.py:141 +msgid "Click for AC" +msgstr "" + +#: electrical_ui.py:163 +msgid "Click for Bias On" +msgstr "" + +#: electrical_ui.py:183 +msgid "Click for Time base" +msgstr "" + +#: electrical_ui.py:212 +msgid "Hide values" +msgstr "" + +#: electrical_ui.py:249 +msgid "Resume" +msgstr "" + +#: logging_ui.py:44 logging_ui.py:50 +msgid "Snapshot" +msgstr "" + +#: logging_ui.py:44 +msgid "1 second" +msgstr "" + +#: logging_ui.py:44 +msgid "1 minute" +msgstr "" + +#: logging_ui.py:44 +msgid "1 hour" +msgstr "" + +#: logging_ui.py:68 logging_ui.py:144 +msgid "Start Logging" +msgstr "" + +#: logging_ui.py:82 logging_ui.py:167 +msgid "Show Log" +msgstr "" + +#: logging_ui.py:134 +msgid "Stop Logging" +msgstr "" + +#: logging_ui.py:159 +msgid "Remove Log" +msgstr "" diff --git a/po/am.po b/po/am.po new file mode 100644 index 0000000..f58cfdc --- /dev/null +++ b/po/am.po @@ -0,0 +1,117 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-08-21 00:30-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Translate Toolkit 1.0.1\n" + +#: activity/activity.info:2 +msgid "Measure" +msgstr "" + +#: drawWaveform.py:205 drawWaveform.py:260 +msgid "Spectrum value" +msgstr "" + +#: drawWaveform.py:330 +msgid "RMS : " +msgstr "" + +#: drawWaveform.py:330 +msgid "AVG : " +msgstr "" + +#: drawWaveform.py:331 +msgid "Scale:" +msgstr "" + +#: drawWaveform.py:332 +msgid "X Axis: " +msgstr "" + +#: drawWaveform.py:332 +msgid "Y Axis : " +msgstr "" + +#: electrical_ui.py:38 electrical_ui.py:151 +msgid "Click for DC" +msgstr "" + +#: electrical_ui.py:50 electrical_ui.py:172 +msgid "Click for Bias Off" +msgstr "" + +#: electrical_ui.py:61 electrical_ui.py:192 +msgid "Click for Frequency base" +msgstr "" + +#: electrical_ui.py:116 electrical_ui.py:256 +msgid "Pause" +msgstr "" + +#: electrical_ui.py:126 electrical_ui.py:203 +msgid "Show values" +msgstr "" + +#: electrical_ui.py:141 +msgid "Click for AC" +msgstr "" + +#: electrical_ui.py:163 +msgid "Click for Bias On" +msgstr "" + +#: electrical_ui.py:183 +msgid "Click for Time base" +msgstr "" + +#: electrical_ui.py:212 +msgid "Hide values" +msgstr "" + +#: electrical_ui.py:249 +msgid "Resume" +msgstr "" + +#: logging_ui.py:44 logging_ui.py:50 +msgid "Snapshot" +msgstr "" + +#: logging_ui.py:44 +msgid "1 second" +msgstr "" + +#: logging_ui.py:44 +msgid "1 minute" +msgstr "" + +#: logging_ui.py:44 +msgid "1 hour" +msgstr "" + +#: logging_ui.py:68 logging_ui.py:144 +msgid "Start Logging" +msgstr "" + +#: logging_ui.py:82 logging_ui.py:167 +msgid "Show Log" +msgstr "" + +#: logging_ui.py:134 +msgid "Stop Logging" +msgstr "" + +#: logging_ui.py:159 +msgid "Remove Log" +msgstr "" diff --git a/po/ar.po b/po/ar.po new file mode 100644 index 0000000..4668a5e --- /dev/null +++ b/po/ar.po @@ -0,0 +1,122 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-08-21 00:30-0400\n" +"PO-Revision-Date: 2008-08-01 15:55-0400\n" +"Last-Translator: Khaled Hosny <khaledhosny@eglug.org>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Pootle 1.1.0rc2\n" + +#: activity/activity.info:2 +msgid "Measure" +msgstr "قياس" + +#: drawWaveform.py:205 drawWaveform.py:260 +msgid "Spectrum value" +msgstr "" + +#: drawWaveform.py:330 +msgid "RMS : " +msgstr "" + +#: drawWaveform.py:330 +msgid "AVG : " +msgstr "" + +#: drawWaveform.py:331 +msgid "Scale:" +msgstr "" + +#: drawWaveform.py:332 +msgid "X Axis: " +msgstr "" + +#: drawWaveform.py:332 +msgid "Y Axis : " +msgstr "" + +#: electrical_ui.py:38 electrical_ui.py:151 +msgid "Click for DC" +msgstr "" + +#: electrical_ui.py:50 electrical_ui.py:172 +msgid "Click for Bias Off" +msgstr "" + +#: electrical_ui.py:61 electrical_ui.py:192 +msgid "Click for Frequency base" +msgstr "" + +#: electrical_ui.py:116 electrical_ui.py:256 +msgid "Pause" +msgstr "توقيف" + +#: electrical_ui.py:126 electrical_ui.py:203 +msgid "Show values" +msgstr "أظهر النتيجة" + +#: electrical_ui.py:141 +msgid "Click for AC" +msgstr "" + +#: electrical_ui.py:163 +msgid "Click for Bias On" +msgstr "" + +#: electrical_ui.py:183 +msgid "Click for Time base" +msgstr "" + +#: electrical_ui.py:212 +msgid "Hide values" +msgstr "" + +#: electrical_ui.py:249 +msgid "Resume" +msgstr "" + +#: logging_ui.py:44 logging_ui.py:50 +msgid "Snapshot" +msgstr "" + +#: logging_ui.py:44 +msgid "1 second" +msgstr "1 ثانية" + +#: logging_ui.py:44 +msgid "1 minute" +msgstr "1 دقيقة" + +#: logging_ui.py:44 +msgid "1 hour" +msgstr "1 ساعة" + +#: logging_ui.py:68 logging_ui.py:144 +msgid "Start Logging" +msgstr "" + +#: logging_ui.py:82 logging_ui.py:167 +msgid "Show Log" +msgstr "" + +#: logging_ui.py:134 +msgid "Stop Logging" +msgstr "" + +#: logging_ui.py:159 +msgid "Remove Log" +msgstr "" + +#~ msgid "Show sheet and graphs" +#~ msgstr "أظهر الورقة والرسوم البيانية" + +#~ msgid "5 seconds" +#~ msgstr "5 ثوان" + +#, fuzzy +#~ msgid "5 minutes" +#~ msgstr "1 دقيقة" diff --git a/po/ay.po b/po/ay.po new file mode 100644 index 0000000..f58cfdc --- /dev/null +++ b/po/ay.po @@ -0,0 +1,117 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-08-21 00:30-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Translate Toolkit 1.0.1\n" + +#: activity/activity.info:2 +msgid "Measure" +msgstr "" + +#: drawWaveform.py:205 drawWaveform.py:260 +msgid "Spectrum value" +msgstr "" + +#: drawWaveform.py:330 +msgid "RMS : " +msgstr "" + +#: drawWaveform.py:330 +msgid "AVG : " +msgstr "" + +#: drawWaveform.py:331 +msgid "Scale:" +msgstr "" + +#: drawWaveform.py:332 +msgid "X Axis: " +msgstr "" + +#: drawWaveform.py:332 +msgid "Y Axis : " +msgstr "" + +#: electrical_ui.py:38 electrical_ui.py:151 +msgid "Click for DC" +msgstr "" + +#: electrical_ui.py:50 electrical_ui.py:172 +msgid "Click for Bias Off" +msgstr "" + +#: electrical_ui.py:61 electrical_ui.py:192 +msgid "Click for Frequency base" +msgstr "" + +#: electrical_ui.py:116 electrical_ui.py:256 +msgid "Pause" +msgstr "" + +#: electrical_ui.py:126 electrical_ui.py:203 +msgid "Show values" +msgstr "" + +#: electrical_ui.py:141 +msgid "Click for AC" +msgstr "" + +#: electrical_ui.py:163 +msgid "Click for Bias On" +msgstr "" + +#: electrical_ui.py:183 +msgid "Click for Time base" +msgstr "" + +#: electrical_ui.py:212 +msgid "Hide values" +msgstr "" + +#: electrical_ui.py:249 +msgid "Resume" +msgstr "" + +#: logging_ui.py:44 logging_ui.py:50 +msgid "Snapshot" +msgstr "" + +#: logging_ui.py:44 +msgid "1 second" +msgstr "" + +#: logging_ui.py:44 +msgid "1 minute" +msgstr "" + +#: logging_ui.py:44 +msgid "1 hour" +msgstr "" + +#: logging_ui.py:68 logging_ui.py:144 +msgid "Start Logging" +msgstr "" + +#: logging_ui.py:82 logging_ui.py:167 +msgid "Show Log" +msgstr "" + +#: logging_ui.py:134 +msgid "Stop Logging" +msgstr "" + +#: logging_ui.py:159 +msgid "Remove Log" +msgstr "" diff --git a/po/bg.po b/po/bg.po new file mode 100644 index 0000000..e2bc058 --- /dev/null +++ b/po/bg.po @@ -0,0 +1,129 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-08-21 00:30-0400\n" +"PO-Revision-Date: 2008-01-11 14:14+0000\n" +"Last-Translator: Alexander Todorov <atodorov@redhat.com>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Pootle 1.0.2\n" + +#: activity/activity.info:2 +msgid "Measure" +msgstr "Осцилоскоп" + +#: drawWaveform.py:205 drawWaveform.py:260 +msgid "Spectrum value" +msgstr "Стойност на спектъра" + +# средно квадратична стойност +#: drawWaveform.py:330 +msgid "RMS : " +msgstr "СКС : " + +# средно аритметична стойност +#: drawWaveform.py:330 +msgid "AVG : " +msgstr "САС : " + +#: drawWaveform.py:331 +msgid "Scale:" +msgstr "Мащаб:" + +#: drawWaveform.py:332 +msgid "X Axis: " +msgstr "Ос X: " + +#: drawWaveform.py:332 +msgid "Y Axis : " +msgstr "Ос Y: " + +# постоянен ток +#: electrical_ui.py:38 electrical_ui.py:151 +msgid "Click for DC" +msgstr "Натиснете за работа с постоянен ток" + +#: electrical_ui.py:50 electrical_ui.py:172 +msgid "Click for Bias Off" +msgstr "Натиснете за изключване на отклонението" + +#: electrical_ui.py:61 electrical_ui.py:192 +msgid "Click for Frequency base" +msgstr "Натиснете за показване на честотата" + +#: electrical_ui.py:116 electrical_ui.py:256 +msgid "Pause" +msgstr "Пауза" + +#: electrical_ui.py:126 electrical_ui.py:203 +msgid "Show values" +msgstr "Показване стойностите" + +# трябва да се внимава много с променливия ток. Трябва по НАБИВАЩО се на очи съобщение. +#: electrical_ui.py:141 +msgid "Click for AC" +msgstr "ВНИМАНИЕ: натиснете за работа с променлив ток!" + +#: electrical_ui.py:163 +msgid "Click for Bias On" +msgstr "Натиснете за включване на отклонението" + +#: electrical_ui.py:183 +msgid "Click for Time base" +msgstr "Натиснете за покзване на времето" + +#: electrical_ui.py:212 +msgid "Hide values" +msgstr "Скриване стойностите" + +#: electrical_ui.py:249 +msgid "Resume" +msgstr "Продължаване" + +#: logging_ui.py:44 logging_ui.py:50 +#, fuzzy +msgid "Snapshot" +msgstr "Запис" + +#: logging_ui.py:44 +msgid "1 second" +msgstr "1 секунда" + +#: logging_ui.py:44 +msgid "1 minute" +msgstr "1 минута" + +#: logging_ui.py:44 +msgid "1 hour" +msgstr "1 час" + +#: logging_ui.py:68 logging_ui.py:144 +msgid "Start Logging" +msgstr "Начало на записа" + +#: logging_ui.py:82 logging_ui.py:167 +msgid "Show Log" +msgstr "Показване на записа" + +#: logging_ui.py:134 +msgid "Stop Logging" +msgstr "Край на записа" + +#: logging_ui.py:159 +msgid "Remove Log" +msgstr "Премахване на записа" + +#, fuzzy +#~ msgid "5 seconds" +#~ msgstr "1 секунда" + +#, fuzzy +#~ msgid "5 minutes" +#~ msgstr "1 минута" diff --git a/po/bn.po b/po/bn.po new file mode 100644 index 0000000..98e9279 --- /dev/null +++ b/po/bn.po @@ -0,0 +1,124 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +msgid "" +msgstr "" +"Project-Id-Version: xo-bundled\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-08-21 00:30-0400\n" +"PO-Revision-Date: 2007-12-23 17:24+0600\n" +"Last-Translator: Khandakar Mujahidul Islam <suzan229@gmail.com>\n" +"Language-Team: Bengali <core@bengalinux.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Translate Toolkit 1.0.1\n" + +#: activity/activity.info:2 +msgid "Measure" +msgstr "" + +#: drawWaveform.py:205 drawWaveform.py:260 +msgid "Spectrum value" +msgstr "" + +#: drawWaveform.py:330 +msgid "RMS : " +msgstr "" + +#: drawWaveform.py:330 +msgid "AVG : " +msgstr "" + +#: drawWaveform.py:331 +msgid "Scale:" +msgstr "" + +#: drawWaveform.py:332 +msgid "X Axis: " +msgstr "X অক্ষ:" + +#: drawWaveform.py:332 +msgid "Y Axis : " +msgstr "Y অক্ষ:" + +#: electrical_ui.py:38 electrical_ui.py:151 +msgid "Click for DC" +msgstr "" + +#: electrical_ui.py:50 electrical_ui.py:172 +msgid "Click for Bias Off" +msgstr "" + +#: electrical_ui.py:61 electrical_ui.py:192 +msgid "Click for Frequency base" +msgstr "" + +#: electrical_ui.py:116 electrical_ui.py:256 +msgid "Pause" +msgstr "স্থগিত করো" + +#: electrical_ui.py:126 electrical_ui.py:203 +msgid "Show values" +msgstr "মান দেখাও" + +#: electrical_ui.py:141 +msgid "Click for AC" +msgstr "" + +#: electrical_ui.py:163 +msgid "Click for Bias On" +msgstr "" + +#: electrical_ui.py:183 +msgid "Click for Time base" +msgstr "" + +#: electrical_ui.py:212 +msgid "Hide values" +msgstr "মান লুকাও" + +#: electrical_ui.py:249 +msgid "Resume" +msgstr "" + +#: logging_ui.py:44 logging_ui.py:50 +msgid "Snapshot" +msgstr "" + +#: logging_ui.py:44 +msgid "1 second" +msgstr "১ সেকেন্ড" + +#: logging_ui.py:44 +msgid "1 minute" +msgstr "১ মিনিট" + +#: logging_ui.py:44 +msgid "1 hour" +msgstr "১ ঘন্টা" + +#: logging_ui.py:68 logging_ui.py:144 +msgid "Start Logging" +msgstr "লগ করা শুরু করো" + +#: logging_ui.py:82 logging_ui.py:167 +msgid "Show Log" +msgstr "লগ দেখাও" + +#: logging_ui.py:134 +msgid "Stop Logging" +msgstr "লগ করা থামাও" + +#: logging_ui.py:159 +msgid "Remove Log" +msgstr "লগ মোছো" + +#, fuzzy +#~ msgid "5 seconds" +#~ msgstr "১ সেকেন্ড" + +#, fuzzy +#~ msgid "5 minutes" +#~ msgstr "১ মিনিট" diff --git a/po/bn_IN.po b/po/bn_IN.po new file mode 100644 index 0000000..b794ac0 --- /dev/null +++ b/po/bn_IN.po @@ -0,0 +1,124 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +msgid "" +msgstr "" +"Project-Id-Version: xo-bundled\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-08-21 00:30-0400\n" +"PO-Revision-Date: 2008-02-04 02:51-0500\n" +"Last-Translator: Sankarshan Mukhopadhyay <sankarshan.mukhopadhyay@gmail.com>\n" +"Language-Team: Bengali <core@bengalinux.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Pootle 1.0.2\n" + +#: activity/activity.info:2 +msgid "Measure" +msgstr "মেপে নিন" + +#: drawWaveform.py:205 drawWaveform.py:260 +msgid "Spectrum value" +msgstr "স্পেক্ট্রামের মান" + +#: drawWaveform.py:330 +msgid "RMS : " +msgstr "RMS" + +#: drawWaveform.py:330 +msgid "AVG : " +msgstr "AVG" + +#: drawWaveform.py:331 +msgid "Scale:" +msgstr "মাপকাঠি" + +#: drawWaveform.py:332 +msgid "X Axis: " +msgstr "X অক্ষ:" + +#: drawWaveform.py:332 +msgid "Y Axis : " +msgstr "Y অক্ষ:" + +#: electrical_ui.py:38 electrical_ui.py:151 +msgid "Click for DC" +msgstr "DC এর জন্য ক্লিক করুন" + +#: electrical_ui.py:50 electrical_ui.py:172 +msgid "Click for Bias Off" +msgstr "Bias বন্ধ করার জন্য ক্লিক করুন" + +#: electrical_ui.py:61 electrical_ui.py:192 +msgid "Click for Frequency base" +msgstr "Frequency base এর জন্য ক্লিক করুন" + +#: electrical_ui.py:116 electrical_ui.py:256 +msgid "Pause" +msgstr "স্থগিত করো" + +#: electrical_ui.py:126 electrical_ui.py:203 +msgid "Show values" +msgstr "মান প্রদর্শন কর" + +#: electrical_ui.py:141 +msgid "Click for AC" +msgstr "AC এর জন্য ক্লিক করুন" + +#: electrical_ui.py:163 +msgid "Click for Bias On" +msgstr "Bias চালু করার জন্য ক্লিক করুন" + +#: electrical_ui.py:183 +msgid "Click for Time base" +msgstr "Time base এর জন্য ক্লিক করুন" + +#: electrical_ui.py:212 +msgid "Hide values" +msgstr "মান লুকিয়ে রাখ" + +#: electrical_ui.py:249 +msgid "Resume" +msgstr "পুনরায় চালু কর" + +#: logging_ui.py:44 logging_ui.py:50 +msgid "Snapshot" +msgstr "স্ন্যাপশট" + +#: logging_ui.py:44 +msgid "1 second" +msgstr "১ সেকেন্ড" + +#: logging_ui.py:44 +msgid "1 minute" +msgstr "১ মিনিট" + +#: logging_ui.py:44 +msgid "1 hour" +msgstr "১ ঘন্টা" + +#: logging_ui.py:68 logging_ui.py:144 +msgid "Start Logging" +msgstr "লগ করা শুরু করো" + +#: logging_ui.py:82 logging_ui.py:167 +msgid "Show Log" +msgstr "লগ প্রদর্শন করো" + +#: logging_ui.py:134 +msgid "Stop Logging" +msgstr "লগ করা বন্ধ করো" + +#: logging_ui.py:159 +msgid "Remove Log" +msgstr "লগ মুছে ফেল" + +#, fuzzy +#~ msgid "5 seconds" +#~ msgstr "১ সেকেন্ড" + +#, fuzzy +#~ msgid "5 minutes" +#~ msgstr "১ মিনিট" diff --git a/po/ca.po b/po/ca.po new file mode 100644 index 0000000..2fb3004 --- /dev/null +++ b/po/ca.po @@ -0,0 +1,125 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-08-21 00:30-0400\n" +"PO-Revision-Date: 2008-01-14 19:50+0000\n" +"Last-Translator: Jaume <jaume@nualart.com>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Pootle 1.0.2\n" + +#: activity/activity.info:2 +msgid "Measure" +msgstr "Mesura" + +#: drawWaveform.py:205 drawWaveform.py:260 +msgid "Spectrum value" +msgstr "Valor de l'espectre" + +#: drawWaveform.py:330 +msgid "RMS : " +msgstr "RMS" + +#: drawWaveform.py:330 +msgid "AVG : " +msgstr "AVG" + +#: drawWaveform.py:331 +msgid "Scale:" +msgstr "Escale:" + +#: drawWaveform.py:332 +msgid "X Axis: " +msgstr "Eix X:" + +#: drawWaveform.py:332 +msgid "Y Axis : " +msgstr "Eix Y:" + +#: electrical_ui.py:38 electrical_ui.py:151 +msgid "Click for DC" +msgstr "Clic per DC" + +#: electrical_ui.py:50 electrical_ui.py:172 +msgid "Click for Bias Off" +msgstr "" + +#: electrical_ui.py:61 electrical_ui.py:192 +msgid "Click for Frequency base" +msgstr "Clic per la base de freqüència" + +#: electrical_ui.py:116 electrical_ui.py:256 +msgid "Pause" +msgstr "Pausa" + +#: electrical_ui.py:126 electrical_ui.py:203 +msgid "Show values" +msgstr "Mostra valors" + +#: electrical_ui.py:141 +msgid "Click for AC" +msgstr "Clic per AC" + +#: electrical_ui.py:163 +msgid "Click for Bias On" +msgstr "" + +#: electrical_ui.py:183 +msgid "Click for Time base" +msgstr "Clic per base de temps" + +#: electrical_ui.py:212 +msgid "Hide values" +msgstr "Oculta valors" + +#: electrical_ui.py:249 +msgid "Resume" +msgstr "Reprendre" + +#: logging_ui.py:44 logging_ui.py:50 +msgid "Snapshot" +msgstr "Captura de pantalla" + +#: logging_ui.py:44 +msgid "1 second" +msgstr "1 segon" + +#: logging_ui.py:44 +msgid "1 minute" +msgstr "1 minut" + +#: logging_ui.py:44 +msgid "1 hour" +msgstr "1 hora" + +# no esta clara aquesta traduccio +#: logging_ui.py:68 logging_ui.py:144 +msgid "Start Logging" +msgstr "Comença l'entrada" + +#: logging_ui.py:82 logging_ui.py:167 +msgid "Show Log" +msgstr "Mostra el registre" + +#: logging_ui.py:134 +msgid "Stop Logging" +msgstr "Atura l'entrada" + +#: logging_ui.py:159 +msgid "Remove Log" +msgstr "Esborra el registre" + +#, fuzzy +#~ msgid "5 seconds" +#~ msgstr "1 segon" + +#, fuzzy +#~ msgid "5 minutes" +#~ msgstr "1 minut" diff --git a/po/de.po b/po/de.po new file mode 100644 index 0000000..c70a167 --- /dev/null +++ b/po/de.po @@ -0,0 +1,148 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-08-21 00:30-0400\n" +"PO-Revision-Date: 2008-04-15 05:17-0400\n" +"Last-Translator: Gerhard Steiner <gerhard.steiner@duichwir.at>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Pootle 1.1.0rc2\n" + +#: activity/activity.info:2 +msgid "Measure" +msgstr "Messen" + +#: drawWaveform.py:205 drawWaveform.py:260 +msgid "Spectrum value" +msgstr "Bereichswert" + +# http://de.wikipedia.org/wiki/Quadratisches_Mittel +#: drawWaveform.py:330 +msgid "RMS : " +msgstr "MW : " + +#: drawWaveform.py:330 +msgid "AVG : " +msgstr "AVG : " + +#: drawWaveform.py:331 +msgid "Scale:" +msgstr "Skala:" + +#: drawWaveform.py:332 +msgid "X Axis: " +msgstr "X-Achse: " + +#: drawWaveform.py:332 +msgid "Y Axis : " +msgstr "Y-Achse: " + +#: electrical_ui.py:38 electrical_ui.py:151 +msgid "Click for DC" +msgstr "Klicken für Gleichspannung" + +#: electrical_ui.py:50 electrical_ui.py:172 +msgid "Click for Bias Off" +msgstr "Klicken um Vorspannung auszuschalten" + +#: electrical_ui.py:61 electrical_ui.py:192 +msgid "Click for Frequency base" +msgstr "Klicken um Frequenzbasis einzustellen" + +#: electrical_ui.py:116 electrical_ui.py:256 +msgid "Pause" +msgstr "Pause" + +#: electrical_ui.py:126 electrical_ui.py:203 +msgid "Show values" +msgstr "Zeige Werte" + +#: electrical_ui.py:141 +msgid "Click for AC" +msgstr "Klicken für Wechselspannung" + +#: electrical_ui.py:163 +msgid "Click for Bias On" +msgstr "Klicken um Vorspannung anzuschalten" + +#: electrical_ui.py:183 +msgid "Click for Time base" +msgstr "Klicken um Zeitbasis einzustellen" + +#: electrical_ui.py:212 +msgid "Hide values" +msgstr "Werte verstecken" + +#: electrical_ui.py:249 +msgid "Resume" +msgstr "fortsetzen" + +#: logging_ui.py:44 logging_ui.py:50 +msgid "Snapshot" +msgstr "Momentaufnahme" + +#: logging_ui.py:44 +msgid "1 second" +msgstr "1 Sekunde" + +#: logging_ui.py:44 +msgid "1 minute" +msgstr "1 Minute" + +#: logging_ui.py:44 +msgid "1 hour" +msgstr "1 Stunde" + +#: logging_ui.py:68 logging_ui.py:144 +msgid "Start Logging" +msgstr "Aufzeichnung starten" + +#: logging_ui.py:82 logging_ui.py:167 +msgid "Show Log" +msgstr "Protokoll anzeigen" + +#: logging_ui.py:134 +msgid "Stop Logging" +msgstr "Protokollierung stoppen" + +#: logging_ui.py:159 +msgid "Remove Log" +msgstr "Protokoll entfernen" + +#~ msgid "Show sheet and graphs" +#~ msgstr "Tabelle und Grafiken anzeigen" + +#~ msgid "Show waveform" +#~ msgstr "Wellenform anzeigen" + +#~ msgid "Time base" +#~ msgstr "Zeiteinheit" + +#~ msgid "Frequency base" +#~ msgstr "Frequenzeinheit" + +#~ msgid "Resistance Sensor" +#~ msgstr "Widerstandssensor" + +#~ msgid "Voltage Sensor" +#~ msgstr "Spannungssensor" + +#~ msgid "Picture" +#~ msgstr "Bild" + +#~ msgid "5 seconds" +#~ msgstr "5 Sekunden" + +#~ msgid "5 minutes" +#~ msgstr "5 Minuten" + +#~ msgid "Spectral power" +#~ msgstr "Spektrale Leistung" diff --git a/po/dz.po b/po/dz.po new file mode 100644 index 0000000..f58cfdc --- /dev/null +++ b/po/dz.po @@ -0,0 +1,117 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-08-21 00:30-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Translate Toolkit 1.0.1\n" + +#: activity/activity.info:2 +msgid "Measure" +msgstr "" + +#: drawWaveform.py:205 drawWaveform.py:260 +msgid "Spectrum value" +msgstr "" + +#: drawWaveform.py:330 +msgid "RMS : " +msgstr "" + +#: drawWaveform.py:330 +msgid "AVG : " +msgstr "" + +#: drawWaveform.py:331 +msgid "Scale:" +msgstr "" + +#: drawWaveform.py:332 +msgid "X Axis: " +msgstr "" + +#: drawWaveform.py:332 +msgid "Y Axis : " +msgstr "" + +#: electrical_ui.py:38 electrical_ui.py:151 +msgid "Click for DC" +msgstr "" + +#: electrical_ui.py:50 electrical_ui.py:172 +msgid "Click for Bias Off" +msgstr "" + +#: electrical_ui.py:61 electrical_ui.py:192 +msgid "Click for Frequency base" +msgstr "" + +#: electrical_ui.py:116 electrical_ui.py:256 +msgid "Pause" +msgstr "" + +#: electrical_ui.py:126 electrical_ui.py:203 +msgid "Show values" +msgstr "" + +#: electrical_ui.py:141 +msgid "Click for AC" +msgstr "" + +#: electrical_ui.py:163 +msgid "Click for Bias On" +msgstr "" + +#: electrical_ui.py:183 +msgid "Click for Time base" +msgstr "" + +#: electrical_ui.py:212 +msgid "Hide values" +msgstr "" + +#: electrical_ui.py:249 +msgid "Resume" +msgstr "" + +#: logging_ui.py:44 logging_ui.py:50 +msgid "Snapshot" +msgstr "" + +#: logging_ui.py:44 +msgid "1 second" +msgstr "" + +#: logging_ui.py:44 +msgid "1 minute" +msgstr "" + +#: logging_ui.py:44 +msgid "1 hour" +msgstr "" + +#: logging_ui.py:68 logging_ui.py:144 +msgid "Start Logging" +msgstr "" + +#: logging_ui.py:82 logging_ui.py:167 +msgid "Show Log" +msgstr "" + +#: logging_ui.py:134 +msgid "Stop Logging" +msgstr "" + +#: logging_ui.py:159 +msgid "Remove Log" +msgstr "" diff --git a/po/el.po b/po/el.po new file mode 100644 index 0000000..17db75a --- /dev/null +++ b/po/el.po @@ -0,0 +1,148 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-08-21 00:30-0400\n" +"PO-Revision-Date: 2008-04-29 04:26-0400\n" +"Last-Translator: Simos Xenitellis <simos.lists@googlemail.com>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Pootle 1.1.0rc2\n" + +#: activity/activity.info:2 +msgid "Measure" +msgstr "Μέτρηση" + +#: drawWaveform.py:205 drawWaveform.py:260 +msgid "Spectrum value" +msgstr "Τιμή κλίμακας" + +#: drawWaveform.py:330 +msgid "RMS : " +msgstr "RMS : " + +#: drawWaveform.py:330 +msgid "AVG : " +msgstr "Μ.Ο. : " + +#: drawWaveform.py:331 +msgid "Scale:" +msgstr "Κλίμακα:" + +#: drawWaveform.py:332 +msgid "X Axis: " +msgstr "Χ Άξονας: _" + +#: drawWaveform.py:332 +msgid "Y Axis : " +msgstr "Y Άξονας: _" + +#: electrical_ui.py:38 electrical_ui.py:151 +msgid "Click for DC" +msgstr "Πατήστε για DC" + +#: electrical_ui.py:50 electrical_ui.py:172 +msgid "Click for Bias Off" +msgstr "Πατήστε για να απενεργοποιήσετε το Bias" + +# Αυτό σίγουρα χρειάζεται διόρθωση +#: electrical_ui.py:61 electrical_ui.py:192 +msgid "Click for Frequency base" +msgstr "Πατήστε για βάση Συχνότητας" + +#: electrical_ui.py:116 electrical_ui.py:256 +msgid "Pause" +msgstr "Παύση" + +#: electrical_ui.py:126 electrical_ui.py:203 +msgid "Show values" +msgstr "Εμφάνισε τις τιμές" + +#: electrical_ui.py:141 +msgid "Click for AC" +msgstr "Πατήστε για AC" + +#: electrical_ui.py:163 +msgid "Click for Bias On" +msgstr "Πατήστε για ενεργοποίηση του Bias" + +#: electrical_ui.py:183 +msgid "Click for Time base" +msgstr "Πατήστε για βάση με το χρόνο" + +#: electrical_ui.py:212 +msgid "Hide values" +msgstr "Κρύψε τις τιμές" + +#: electrical_ui.py:249 +msgid "Resume" +msgstr "Επαναφορά" + +#: logging_ui.py:44 logging_ui.py:50 +msgid "Snapshot" +msgstr "Στιγμιότυπο" + +#: logging_ui.py:44 +msgid "1 second" +msgstr "1 δευτερόλεπτο" + +#: logging_ui.py:44 +msgid "1 minute" +msgstr "1 λεπτό" + +#: logging_ui.py:44 +msgid "1 hour" +msgstr "1 ώρα" + +#: logging_ui.py:68 logging_ui.py:144 +msgid "Start Logging" +msgstr "Έναρξη Αναφοράς" + +#: logging_ui.py:82 logging_ui.py:167 +msgid "Show Log" +msgstr "Εμφάνιση Καταχώρησης" + +#: logging_ui.py:134 +msgid "Stop Logging" +msgstr "Παύση Αναφοράς" + +#: logging_ui.py:159 +msgid "Remove Log" +msgstr "Αφαίρεση Καταχώρησης" + +#~ msgid "Show sheet and graphs" +#~ msgstr "Εμφάνιση φύλλου εργασίας και γραφικών" + +#~ msgid "Show waveform" +#~ msgstr "Εμφάνιση κυματομορφής" + +#~ msgid "Time base" +#~ msgstr "Βάση του χρόνου" + +#~ msgid "Frequency base" +#~ msgstr "Βάση Συχνότητας" + +#~ msgid "Resistance Sensor" +#~ msgstr "Αισθητήρας Αντίστασης" + +#~ msgid "Voltage Sensor" +#~ msgstr "Αισθητήρας Τάσης" + +#~ msgid "Picture" +#~ msgstr "Εικόνα" + +#~ msgid "5 seconds" +#~ msgstr "5 δευτερόλεπτα" + +#~ msgid "5 minutes" +#~ msgstr "5 λεπτά" + +#~ msgid "Spectral power" +#~ msgstr "Φασματική ισχύς" diff --git a/po/en.po b/po/en.po new file mode 100644 index 0000000..f58cfdc --- /dev/null +++ b/po/en.po @@ -0,0 +1,117 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-08-21 00:30-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Translate Toolkit 1.0.1\n" + +#: activity/activity.info:2 +msgid "Measure" +msgstr "" + +#: drawWaveform.py:205 drawWaveform.py:260 +msgid "Spectrum value" +msgstr "" + +#: drawWaveform.py:330 +msgid "RMS : " +msgstr "" + +#: drawWaveform.py:330 +msgid "AVG : " +msgstr "" + +#: drawWaveform.py:331 +msgid "Scale:" +msgstr "" + +#: drawWaveform.py:332 +msgid "X Axis: " +msgstr "" + +#: drawWaveform.py:332 +msgid "Y Axis : " +msgstr "" + +#: electrical_ui.py:38 electrical_ui.py:151 +msgid "Click for DC" +msgstr "" + +#: electrical_ui.py:50 electrical_ui.py:172 +msgid "Click for Bias Off" +msgstr "" + +#: electrical_ui.py:61 electrical_ui.py:192 +msgid "Click for Frequency base" +msgstr "" + +#: electrical_ui.py:116 electrical_ui.py:256 +msgid "Pause" +msgstr "" + +#: electrical_ui.py:126 electrical_ui.py:203 +msgid "Show values" +msgstr "" + +#: electrical_ui.py:141 +msgid "Click for AC" +msgstr "" + +#: electrical_ui.py:163 +msgid "Click for Bias On" +msgstr "" + +#: electrical_ui.py:183 +msgid "Click for Time base" +msgstr "" + +#: electrical_ui.py:212 +msgid "Hide values" +msgstr "" + +#: electrical_ui.py:249 +msgid "Resume" +msgstr "" + +#: logging_ui.py:44 logging_ui.py:50 +msgid "Snapshot" +msgstr "" + +#: logging_ui.py:44 +msgid "1 second" +msgstr "" + +#: logging_ui.py:44 +msgid "1 minute" +msgstr "" + +#: logging_ui.py:44 +msgid "1 hour" +msgstr "" + +#: logging_ui.py:68 logging_ui.py:144 +msgid "Start Logging" +msgstr "" + +#: logging_ui.py:82 logging_ui.py:167 +msgid "Show Log" +msgstr "" + +#: logging_ui.py:134 +msgid "Stop Logging" +msgstr "" + +#: logging_ui.py:159 +msgid "Remove Log" +msgstr "" diff --git a/po/es.po b/po/es.po new file mode 100644 index 0000000..baf6d6a --- /dev/null +++ b/po/es.po @@ -0,0 +1,191 @@ +# Spanish translations for Measure Activity package. +# Copyright (C) 2007 Measure Activity'S COPYRIGHT HOLDER +# This file is distributed under the same license as the Measure Activity package. +# Arjun Sarwal arjun@laptop.org, 2007 +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-08-21 00:30-0400\n" +"PO-Revision-Date: 2008-06-22 18:11-0400\n" +"Last-Translator: Maria del Pilar Saenz Rodriguez <mapisaro@gmail.com>\n" +"Language-Team: Spanish\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Pootle 1.1.0rc2\n" + +#: activity/activity.info:2 +msgid "Measure" +msgstr "Medir" + +#: drawWaveform.py:205 drawWaveform.py:260 +msgid "Spectrum value" +msgstr "Valor del espectro" + +# for now untranslated +#: drawWaveform.py:330 +msgid "RMS : " +msgstr "Prom.Cuad. : " + +#: drawWaveform.py:330 +msgid "AVG : " +msgstr "PROM : " + +#: drawWaveform.py:331 +msgid "Scale:" +msgstr "Escala" + +#: drawWaveform.py:332 +msgid "X Axis: " +msgstr "Eje X: " + +#: drawWaveform.py:332 +msgid "Y Axis : " +msgstr "Eje Y: " + +#: electrical_ui.py:38 electrical_ui.py:151 +msgid "Click for DC" +msgstr "Haga clic para CC" + +# Bias refers to a bias voltage +#: electrical_ui.py:50 electrical_ui.py:172 +msgid "Click for Bias Off" +msgstr "Desactivar el voltaje de sesgo" + +#: electrical_ui.py:61 electrical_ui.py:192 +msgid "Click for Frequency base" +msgstr "Haga clic para frecuencia de base" + +#: electrical_ui.py:116 electrical_ui.py:256 +msgid "Pause" +msgstr "Pausa" + +#: electrical_ui.py:126 electrical_ui.py:203 +msgid "Show values" +msgstr "Mostrar valores" + +#: electrical_ui.py:141 +msgid "Click for AC" +msgstr "Haga clic para CA" + +#: electrical_ui.py:163 +msgid "Click for Bias On" +msgstr "Activar el voltaje de sesgo" + +#: electrical_ui.py:183 +msgid "Click for Time base" +msgstr "Haga clic para la base del tiempo" + +#: electrical_ui.py:212 +msgid "Hide values" +msgstr "Ocultar valores" + +# Continuar? +#: electrical_ui.py:249 +msgid "Resume" +msgstr "Retomar" + +#: logging_ui.py:44 logging_ui.py:50 +msgid "Snapshot" +msgstr "Instantánea" + +#: logging_ui.py:44 +msgid "1 second" +msgstr "1 segundo" + +#: logging_ui.py:44 +msgid "1 minute" +msgstr "1 minuto" + +#: logging_ui.py:44 +msgid "1 hour" +msgstr "1 hora" + +#: logging_ui.py:68 logging_ui.py:144 +msgid "Start Logging" +msgstr "Comenzar a registrar" + +#: logging_ui.py:82 logging_ui.py:167 +msgid "Show Log" +msgstr "Mostrar registro" + +#: logging_ui.py:134 +msgid "Stop Logging" +msgstr "Terminar de registrar" + +#: logging_ui.py:159 +msgid "Remove Log" +msgstr "Eliminar registro" + +#~ msgid "Show sheet and graphs" +#~ msgstr "Mostrar hoja y gráficas" + +#~ msgid "Show waveform" +#~ msgstr "Mostrar forma de onda" + +#~ msgid "Time base" +#~ msgstr "Línea de base de tiempo" + +#~ msgid "Frequency base" +#~ msgstr "Línea de base de frecuencia" + +#~ msgid "Resistance Sensor" +#~ msgstr "Sensor de resistencia" + +#~ msgid "Voltage Sensor" +#~ msgstr "Sensor de voltaje" + +#~ msgid "Picture" +#~ msgstr "Imagen" + +#~ msgid "5 seconds" +#~ msgstr "5 segundos" + +#~ msgid "5 minutes" +#~ msgstr "5 minutos" + +#~ msgid "Spectral power" +#~ msgstr "Espectro de potencia" + +# msec is milliSeconds +#~ msgid " msec" +#~ msgstr " mseg" + +#~ msgid "hz" +#~ msgstr "hz" + +#~ msgid "5 hours " +#~ msgstr "5 horas " + +# Do not translate this yet +#, fuzzy +#~ msgid "temp " +#~ msgstr "temp " + +#~ msgid " mV" +#~ msgstr " mV" + +#~ msgid "Real time parameters:" +#~ msgstr "Parametros de tiempo real" + +# promedio cuadrático +#~ msgid "RMS:" +#~ msgstr "Prom.Cuad.:" + +# this is ideed promedio in spanish +#~ msgid "AVG: " +#~ msgstr "PROM: " + +#~ msgid "PK-PK: " +#~ msgstr "Pico-a-Pico: " + +#~ msgid "X Axis one division: " +#~ msgstr "Eje X una división: " + +#~ msgid "Y Axis one division: " +#~ msgstr "Eje Y una división: " + +#~ msgid "Log" +#~ msgstr "Log" diff --git a/po/fa.po b/po/fa.po new file mode 100644 index 0000000..74f3efa --- /dev/null +++ b/po/fa.po @@ -0,0 +1,126 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-08-21 00:30-0400\n" +"PO-Revision-Date: 2008-01-09 10:42+0000\n" +"Last-Translator: Sohaib Obaidi <ebtihaj_obaidi@yahoo.com>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Pootle 1.0.2\n" + +#: activity/activity.info:2 +msgid "Measure" +msgstr "سنجش" + +#: drawWaveform.py:205 drawWaveform.py:260 +msgid "Spectrum value" +msgstr "مقدار طیف (بینایی)" + +#: drawWaveform.py:330 +#, fuzzy +msgid "RMS : " +msgstr "RMS :" + +#: drawWaveform.py:330 +#, fuzzy +msgid "AVG : " +msgstr "AVG :" + +#: drawWaveform.py:331 +msgid "Scale:" +msgstr "مقیاس:" + +#: drawWaveform.py:332 +msgid "X Axis: " +msgstr "محور افقی:" + +#: drawWaveform.py:332 +msgid "Y Axis : " +msgstr "محور عمودی:" + +#: electrical_ui.py:38 electrical_ui.py:151 +msgid "Click for DC" +msgstr "برای منقطع گردیدن تیک نمائید" + +#: electrical_ui.py:50 electrical_ui.py:172 +msgid "Click for Bias Off" +msgstr "برای خاموش کردن پیشقدرتیک نمائید" + +#: electrical_ui.py:61 electrical_ui.py:192 +msgid "Click for Frequency base" +msgstr "برای مبنا فریکانس تیک نمائید" + +#: electrical_ui.py:116 electrical_ui.py:256 +msgid "Pause" +msgstr "مکث" + +#: electrical_ui.py:126 electrical_ui.py:203 +msgid "Show values" +msgstr "مقدار ها را نشان بده" + +#: electrical_ui.py:141 +msgid "Click for AC" +msgstr "برای AC تیک کنید" + +#: electrical_ui.py:163 +msgid "Click for Bias On" +msgstr "برای روشن کردن پیشقدرتیک نمائید" + +#: electrical_ui.py:183 +msgid "Click for Time base" +msgstr "برای اساس وقت تیک کنید" + +#: electrical_ui.py:212 +msgid "Hide values" +msgstr "مقدار ها را نشان نده" + +#: electrical_ui.py:249 +msgid "Resume" +msgstr "ادامه" + +#: logging_ui.py:44 logging_ui.py:50 +msgid "Snapshot" +msgstr "عکس فوری" + +#: logging_ui.py:44 +msgid "1 second" +msgstr "1 ثانیه" + +#: logging_ui.py:44 +msgid "1 minute" +msgstr "1 دقیقه" + +#: logging_ui.py:44 +msgid "1 hour" +msgstr "1 ساعت" + +#: logging_ui.py:68 logging_ui.py:144 +msgid "Start Logging" +msgstr "واقعه نگاری را شروع کن" + +#: logging_ui.py:82 logging_ui.py:167 +msgid "Show Log" +msgstr "گذارش واقعات را نشان بده" + +#: logging_ui.py:134 +msgid "Stop Logging" +msgstr "واقعه نگاری را متوقف کن" + +#: logging_ui.py:159 +msgid "Remove Log" +msgstr "گذارش واقعات را پاک کن" + +#, fuzzy +#~ msgid "5 seconds" +#~ msgstr "1 ثانیه" + +#, fuzzy +#~ msgid "5 minutes" +#~ msgstr "1 دقیقه" diff --git a/po/fa_AF.po b/po/fa_AF.po new file mode 100644 index 0000000..8ec6d4a --- /dev/null +++ b/po/fa_AF.po @@ -0,0 +1,146 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-08-21 00:30-0400\n" +"PO-Revision-Date: 2008-03-24 06:53-0400\n" +"Last-Translator: Sohaib Obaidi <ebtihaj_obaidi@yahoo.com>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Pootle 1.1.0rc2\n" + +#: activity/activity.info:2 +msgid "Measure" +msgstr "سنجش" + +#: drawWaveform.py:205 drawWaveform.py:260 +msgid "Spectrum value" +msgstr "مقداربینایی" + +#: drawWaveform.py:330 +msgid "RMS : " +msgstr "RMS : " + +#: drawWaveform.py:330 +msgid "AVG : " +msgstr "AVG : " + +#: drawWaveform.py:331 +msgid "Scale:" +msgstr "مقیاس:" + +#: drawWaveform.py:332 +msgid "X Axis: " +msgstr "محور افقی: " + +#: drawWaveform.py:332 +msgid "Y Axis : " +msgstr "محور عمودی: " + +#: electrical_ui.py:38 electrical_ui.py:151 +msgid "Click for DC" +msgstr "برای منقطع گردیدن تیک کنید" + +#: electrical_ui.py:50 electrical_ui.py:172 +msgid "Click for Bias Off" +msgstr "برای خاموش کردن پیشقدرتیک نمائید" + +#: electrical_ui.py:61 electrical_ui.py:192 +msgid "Click for Frequency base" +msgstr "برای مبنا فریکانس تیک نمائید" + +#: electrical_ui.py:116 electrical_ui.py:256 +msgid "Pause" +msgstr "مکث" + +#: electrical_ui.py:126 electrical_ui.py:203 +msgid "Show values" +msgstr "مقدار ها را نشان بده" + +#: electrical_ui.py:141 +msgid "Click for AC" +msgstr "برای AC تیک کنید" + +#: electrical_ui.py:163 +msgid "Click for Bias On" +msgstr "برای روشن کردن پیشقدرتیک نمائید" + +#: electrical_ui.py:183 +msgid "Click for Time base" +msgstr "برای اساس وقت تیک کنید" + +#: electrical_ui.py:212 +msgid "Hide values" +msgstr "مقدار ها را نشان نده" + +#: electrical_ui.py:249 +msgid "Resume" +msgstr "ادامه" + +#: logging_ui.py:44 logging_ui.py:50 +msgid "Snapshot" +msgstr "عکس فوری" + +#: logging_ui.py:44 +msgid "1 second" +msgstr "1 ثانیه" + +#: logging_ui.py:44 +msgid "1 minute" +msgstr "1 دقیقه" + +#: logging_ui.py:44 +msgid "1 hour" +msgstr "1 ساعت" + +#: logging_ui.py:68 logging_ui.py:144 +msgid "Start Logging" +msgstr "واقعه نگاری را شروع کن" + +#: logging_ui.py:82 logging_ui.py:167 +msgid "Show Log" +msgstr "گذارش واقعات را نشان بده" + +#: logging_ui.py:134 +msgid "Stop Logging" +msgstr "واقعه نگاری را متوقف کن" + +#: logging_ui.py:159 +msgid "Remove Log" +msgstr "گذارش واقعات را پاک کن" + +#~ msgid "Show sheet and graphs" +#~ msgstr "ورق و گراف ها را نشان بده" + +#~ msgid "Show waveform" +#~ msgstr "شكل موج را نشان بده" + +#~ msgid "Time base" +#~ msgstr "مبنا وقت" + +#~ msgid "Frequency base" +#~ msgstr "مبنا فريكانس" + +#~ msgid "Resistance Sensor" +#~ msgstr "حساس مقاومت" + +#~ msgid "Voltage Sensor" +#~ msgstr "حساس ولتاژ" + +#~ msgid "Picture" +#~ msgstr "عكس" + +#~ msgid "5 seconds" +#~ msgstr "5 ثانیه" + +#~ msgid "5 minutes" +#~ msgstr "5 دقیقه" + +#~ msgid "Spectral power" +#~ msgstr "قوه بينايي" diff --git a/po/ff.po b/po/ff.po new file mode 100644 index 0000000..f58cfdc --- /dev/null +++ b/po/ff.po @@ -0,0 +1,117 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-08-21 00:30-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Translate Toolkit 1.0.1\n" + +#: activity/activity.info:2 +msgid "Measure" +msgstr "" + +#: drawWaveform.py:205 drawWaveform.py:260 +msgid "Spectrum value" +msgstr "" + +#: drawWaveform.py:330 +msgid "RMS : " +msgstr "" + +#: drawWaveform.py:330 +msgid "AVG : " +msgstr "" + +#: drawWaveform.py:331 +msgid "Scale:" +msgstr "" + +#: drawWaveform.py:332 +msgid "X Axis: " +msgstr "" + +#: drawWaveform.py:332 +msgid "Y Axis : " +msgstr "" + +#: electrical_ui.py:38 electrical_ui.py:151 +msgid "Click for DC" +msgstr "" + +#: electrical_ui.py:50 electrical_ui.py:172 +msgid "Click for Bias Off" +msgstr "" + +#: electrical_ui.py:61 electrical_ui.py:192 +msgid "Click for Frequency base" +msgstr "" + +#: electrical_ui.py:116 electrical_ui.py:256 +msgid "Pause" +msgstr "" + +#: electrical_ui.py:126 electrical_ui.py:203 +msgid "Show values" +msgstr "" + +#: electrical_ui.py:141 +msgid "Click for AC" +msgstr "" + +#: electrical_ui.py:163 +msgid "Click for Bias On" +msgstr "" + +#: electrical_ui.py:183 +msgid "Click for Time base" +msgstr "" + +#: electrical_ui.py:212 +msgid "Hide values" +msgstr "" + +#: electrical_ui.py:249 +msgid "Resume" +msgstr "" + +#: logging_ui.py:44 logging_ui.py:50 +msgid "Snapshot" +msgstr "" + +#: logging_ui.py:44 +msgid "1 second" +msgstr "" + +#: logging_ui.py:44 +msgid "1 minute" +msgstr "" + +#: logging_ui.py:44 +msgid "1 hour" +msgstr "" + +#: logging_ui.py:68 logging_ui.py:144 +msgid "Start Logging" +msgstr "" + +#: logging_ui.py:82 logging_ui.py:167 +msgid "Show Log" +msgstr "" + +#: logging_ui.py:134 +msgid "Stop Logging" +msgstr "" + +#: logging_ui.py:159 +msgid "Remove Log" +msgstr "" diff --git a/po/fr.po b/po/fr.po new file mode 100644 index 0000000..3d2b8eb --- /dev/null +++ b/po/fr.po @@ -0,0 +1,248 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-10-12 00:30-0400\n" +"PO-Revision-Date: 2008-10-20 04:40-0400\n" +"Last-Translator: samy boutayeb <s.boutayeb@free.fr>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Pootle 1.1.0rc2\n" + +#: activity/activity.info:2 +msgid "Measure" +msgstr "Mesure" + +#: sheet_ui.py:37 +msgid "Show sheet and graphs" +msgstr "Montrer feuille et graphiques" + +#: sheet_ui.py:42 +msgid "Show waveform" +msgstr "Montrer forme d'onde" + +#: toolbar_top.py:44 +msgid "Sound" +msgstr "Son" + +#: toolbar_top.py:48 +msgid "Sensors" +msgstr "Capteurs" + +#: sound_toolbar.py:52 +msgid "Sound " +msgstr "Son" + +#: sound_toolbar.py:53 +msgid "Time Base " +msgstr "Base de temps" + +#: sound_toolbar.py:54 +#, fuzzy +msgid "Frequency Base " +msgstr "Base de fréquence" + +#: sound_toolbar.py:56 +msgid "X Axis Scale: 1 division = " +msgstr "Échelle axe X : 1 division = " + +#: sound_toolbar.py:57 +msgid "ms " +msgstr "ms " + +#: sound_toolbar.py:58 +msgid "Hz " +msgstr "Hz " + +#: sound_toolbar.py:74 +msgid "Time base" +msgstr "Base de temps" + +#: sound_toolbar.py:82 +msgid "Frequency base" +msgstr "Base de fréquence" + +#: sound_toolbar.py:128 sound_toolbar.py:250 +msgid "Freeze the display" +msgstr "Figer l'écran" + +#: sound_toolbar.py:149 +msgid "Now" +msgstr "Maintenant" + +#: sound_toolbar.py:149 sensor_toolbar.py:92 +msgid "30 seconds" +msgstr "5 secondes" + +#: sound_toolbar.py:149 +msgid "2 minutes" +msgstr "2 minutes" + +#: sound_toolbar.py:149 +msgid "10 minutes" +msgstr "10 minutes" + +#: sound_toolbar.py:149 sensor_toolbar.py:92 +msgid "30 minutes" +msgstr "30 minutes" + +#: sound_toolbar.py:168 sound_toolbar.py:189 sound_toolbar.py:200 +#: sensor_toolbar.py:111 sensor_toolbar.py:142 +msgid "Start Recording" +msgstr "Commencer l'enregistrement" + +#: sound_toolbar.py:184 sensor_toolbar.py:131 +msgid "Stop Recording" +msgstr "Arrêter l'enregistrement" + +#: sound_toolbar.py:243 +msgid "Unfreeze the display" +msgstr "Défiger l'écran" + +#: sensor_toolbar.py:41 +msgid "Sensors, DC (connect sensor to pink 'Mic In' on left side of XO) " +msgstr "Capteurs, CC (connecter le capteur au port 'Mic In' à gauche du XO)" + +#: sensor_toolbar.py:42 +msgid "Bias/Offset Enabled " +msgstr "Biais/décalage activé" + +#: sensor_toolbar.py:43 +msgid "Bias/Offset Disabled " +msgstr "Biais/décalage désactivé" + +#: sensor_toolbar.py:63 +msgid "Resistance Sensor" +msgstr "Capteur de résistance" + +#: sensor_toolbar.py:71 +msgid "Voltage Sensor" +msgstr "Capteur de tension" + +#: sensor_toolbar.py:92 sensor_toolbar.py:98 logging_ui.py:39 +msgid "1 second" +msgstr "1 seconde" + +#: sensor_toolbar.py:92 logging_ui.py:39 +msgid "5 minutes" +msgstr "5 minutes" + +#: logging_ui.py:39 logging_ui.py:45 +msgid "Picture" +msgstr "Image" + +#: logging_ui.py:39 +msgid "5 seconds" +msgstr "5 secondes" + +#: logging_ui.py:39 +msgid "1 minute" +msgstr "1 minute" + +#: logging_ui.py:39 +msgid "1 hour" +msgstr "1 heure" + +# enregistrement, journalisation ? +#: logging_ui.py:63 logging_ui.py:91 logging_ui.py:100 +msgid "Start Logging" +msgstr "Démarrer l'enregistrement" + +# cf. start logging +#: logging_ui.py:87 +msgid "Stop Logging" +msgstr "Arrêter l'enregistrement" + +#: journal.py:182 journal.py:196 +msgid " logging sessions, from Measure Activity" +msgstr "enregistrement des sessions depuis l'activité Mesure" + +#: journal.py:223 +msgid "Session: " +msgstr "Session : " + +#: journal.py:224 +msgid "User: " +msgstr "Utilisateur : " + +#: journal.py:225 +msgid "Interval: " +msgstr "Intervalle : " + +#: journal.py:352 +msgid "Waveform " +msgstr "Forme d'onde " + +#~ msgid "Spectrum value" +#~ msgstr "Valeur du spectre" + +#~ msgid "RMS : " +#~ msgstr "Valeur efficace : " + +#~ msgid "AVG : " +#~ msgstr "Moyenne : " + +#~ msgid "Scale:" +#~ msgstr "Échelle :" + +#~ msgid "X Axis: " +#~ msgstr "Axe X : " + +#~ msgid "Y Axis : " +#~ msgstr "Axe Y : " + +# Je ne sais pas à quoi sert ce bouton... Un commentaire du codeur serait apprécié :-) +#~ msgid "Click for DC" +#~ msgstr "Sélection du courant continu" + +#~ msgid "Click for Bias Off" +#~ msgstr "Désactivation de la polarisation " + +#~ msgid "Click for Frequency base" +#~ msgstr "Activation de la base de fréquence" + +#~ msgid "Pause" +#~ msgstr "Pause" + +#~ msgid "Show values" +#~ msgstr "Afficher les valeurs" + +#~ msgid "Click for AC" +#~ msgstr "Sélection du courant alternatif" + +#~ msgid "Click for Bias On" +#~ msgstr "Activation de la polarisation " + +#~ msgid "Click for Time base" +#~ msgstr "Sélection de la base de temps" + +#~ msgid "Hide values" +#~ msgstr "Masquer les valeurs" + +#~ msgid "Resume" +#~ msgstr "Reprendre" + +#~ msgid "Snapshot" +#~ msgstr "Capture d'écran" + +#~ msgid "Show Log" +#~ msgstr "Afficher l'enregistrement" + +#~ msgid "Remove Log" +#~ msgstr "Supprimer l'enregistrement" + +#~ msgid "Spectral power" +#~ msgstr "Puissance spectrale" + +#~ msgid "RMS: " +#~ msgstr "Valeur efficace : " + +#~ msgid "AVG : " +#~ msgstr "Moyenne : " diff --git a/po/ha.po b/po/ha.po new file mode 100644 index 0000000..f58cfdc --- /dev/null +++ b/po/ha.po @@ -0,0 +1,117 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-08-21 00:30-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Translate Toolkit 1.0.1\n" + +#: activity/activity.info:2 +msgid "Measure" +msgstr "" + +#: drawWaveform.py:205 drawWaveform.py:260 +msgid "Spectrum value" +msgstr "" + +#: drawWaveform.py:330 +msgid "RMS : " +msgstr "" + +#: drawWaveform.py:330 +msgid "AVG : " +msgstr "" + +#: drawWaveform.py:331 +msgid "Scale:" +msgstr "" + +#: drawWaveform.py:332 +msgid "X Axis: " +msgstr "" + +#: drawWaveform.py:332 +msgid "Y Axis : " +msgstr "" + +#: electrical_ui.py:38 electrical_ui.py:151 +msgid "Click for DC" +msgstr "" + +#: electrical_ui.py:50 electrical_ui.py:172 +msgid "Click for Bias Off" +msgstr "" + +#: electrical_ui.py:61 electrical_ui.py:192 +msgid "Click for Frequency base" +msgstr "" + +#: electrical_ui.py:116 electrical_ui.py:256 +msgid "Pause" +msgstr "" + +#: electrical_ui.py:126 electrical_ui.py:203 +msgid "Show values" +msgstr "" + +#: electrical_ui.py:141 +msgid "Click for AC" +msgstr "" + +#: electrical_ui.py:163 +msgid "Click for Bias On" +msgstr "" + +#: electrical_ui.py:183 +msgid "Click for Time base" +msgstr "" + +#: electrical_ui.py:212 +msgid "Hide values" +msgstr "" + +#: electrical_ui.py:249 +msgid "Resume" +msgstr "" + +#: logging_ui.py:44 logging_ui.py:50 +msgid "Snapshot" +msgstr "" + +#: logging_ui.py:44 +msgid "1 second" +msgstr "" + +#: logging_ui.py:44 +msgid "1 minute" +msgstr "" + +#: logging_ui.py:44 +msgid "1 hour" +msgstr "" + +#: logging_ui.py:68 logging_ui.py:144 +msgid "Start Logging" +msgstr "" + +#: logging_ui.py:82 logging_ui.py:167 +msgid "Show Log" +msgstr "" + +#: logging_ui.py:134 +msgid "Stop Logging" +msgstr "" + +#: logging_ui.py:159 +msgid "Remove Log" +msgstr "" diff --git a/po/hi.po b/po/hi.po new file mode 100644 index 0000000..bb1a6cb --- /dev/null +++ b/po/hi.po @@ -0,0 +1,149 @@ +# translation of measure_stable.po to Hindi +# G Karunakar <karunakar@indlinux.org>, 2007. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +msgid "" +msgstr "" +"Project-Id-Version: measure_stable\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-08-21 00:30-0400\n" +"PO-Revision-Date: 2008-04-23 05:36-0400\n" +"Last-Translator: Prashant Thakkar <prashantbthakkar@gmail.com>\n" +"Language-Team: Hindi <indlinux-hindi@lists.sourceforge.net>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Pootle 1.1.0rc2\n" + +#: activity/activity.info:2 +msgid "Measure" +msgstr "नाप" + +#: drawWaveform.py:205 drawWaveform.py:260 +msgid "Spectrum value" +msgstr "" + +#: drawWaveform.py:330 +msgid "RMS : " +msgstr "आर.एम.एस." + +#: drawWaveform.py:330 +msgid "AVG : " +msgstr "ए.वी.जी." + +#: drawWaveform.py:331 +msgid "Scale:" +msgstr "स्केलः" + +#: drawWaveform.py:332 +msgid "X Axis: " +msgstr "x अक्ष :" + +#: drawWaveform.py:332 +msgid "Y Axis : " +msgstr "y अक्ष :" + +#: electrical_ui.py:38 electrical_ui.py:151 +msgid "Click for DC" +msgstr "" + +#: electrical_ui.py:50 electrical_ui.py:172 +msgid "Click for Bias Off" +msgstr "" + +#: electrical_ui.py:61 electrical_ui.py:192 +msgid "Click for Frequency base" +msgstr "" + +#: electrical_ui.py:116 electrical_ui.py:256 +msgid "Pause" +msgstr "ठहरें" + +#: electrical_ui.py:126 electrical_ui.py:203 +msgid "Show values" +msgstr "मान दिखाओ" + +#: electrical_ui.py:141 +msgid "Click for AC" +msgstr "" + +#: electrical_ui.py:163 +msgid "Click for Bias On" +msgstr "" + +#: electrical_ui.py:183 +msgid "Click for Time base" +msgstr "" + +#: electrical_ui.py:212 +msgid "Hide values" +msgstr "मान छिपाओ" + +#: electrical_ui.py:249 +msgid "Resume" +msgstr "पुनरारंभ" + +#: logging_ui.py:44 logging_ui.py:50 +msgid "Snapshot" +msgstr "तस्वीर" + +#: logging_ui.py:44 +msgid "1 second" +msgstr "1 सेकण्ड" + +#: logging_ui.py:44 +msgid "1 minute" +msgstr "1 मिनट" + +#: logging_ui.py:44 +msgid "1 hour" +msgstr "1 घंटा" + +#: logging_ui.py:68 logging_ui.py:144 +msgid "Start Logging" +msgstr "लागिंग करना प्रारंभ करें" + +#: logging_ui.py:82 logging_ui.py:167 +msgid "Show Log" +msgstr "लॉग दिखाओ" + +#: logging_ui.py:134 +msgid "Stop Logging" +msgstr "लॉग करना रोकें" + +#: logging_ui.py:159 +msgid "Remove Log" +msgstr "लॉग हटाओ" + +#~ msgid "Show sheet and graphs" +#~ msgstr "कागज और ग्राफ़ दिखाए" + +#~ msgid "Show waveform" +#~ msgstr "तरंगरूप दिखाए" + +#~ msgid "Time base" +#~ msgstr "समयानुसार" + +#~ msgid "Frequency base" +#~ msgstr "तरंगानुसार" + +#~ msgid "Resistance Sensor" +#~ msgstr "प्रतिरोधक संवेदक" + +#~ msgid "Voltage Sensor" +#~ msgstr "वोल्टेज संवेदक" + +#~ msgid "Picture" +#~ msgstr "छवि" + +#, fuzzy +#~ msgid "5 seconds" +#~ msgstr "1 सेकण्ड" + +#, fuzzy +#~ msgid "5 minutes" +#~ msgstr "1 मिनट" + +#~ msgid "Spectral power" +#~ msgstr "वर्णक्रम संबंधी की क्षमता" diff --git a/po/ig.po b/po/ig.po new file mode 100644 index 0000000..f58cfdc --- /dev/null +++ b/po/ig.po @@ -0,0 +1,117 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-08-21 00:30-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Translate Toolkit 1.0.1\n" + +#: activity/activity.info:2 +msgid "Measure" +msgstr "" + +#: drawWaveform.py:205 drawWaveform.py:260 +msgid "Spectrum value" +msgstr "" + +#: drawWaveform.py:330 +msgid "RMS : " +msgstr "" + +#: drawWaveform.py:330 +msgid "AVG : " +msgstr "" + +#: drawWaveform.py:331 +msgid "Scale:" +msgstr "" + +#: drawWaveform.py:332 +msgid "X Axis: " +msgstr "" + +#: drawWaveform.py:332 +msgid "Y Axis : " +msgstr "" + +#: electrical_ui.py:38 electrical_ui.py:151 +msgid "Click for DC" +msgstr "" + +#: electrical_ui.py:50 electrical_ui.py:172 +msgid "Click for Bias Off" +msgstr "" + +#: electrical_ui.py:61 electrical_ui.py:192 +msgid "Click for Frequency base" +msgstr "" + +#: electrical_ui.py:116 electrical_ui.py:256 +msgid "Pause" +msgstr "" + +#: electrical_ui.py:126 electrical_ui.py:203 +msgid "Show values" +msgstr "" + +#: electrical_ui.py:141 +msgid "Click for AC" +msgstr "" + +#: electrical_ui.py:163 +msgid "Click for Bias On" +msgstr "" + +#: electrical_ui.py:183 +msgid "Click for Time base" +msgstr "" + +#: electrical_ui.py:212 +msgid "Hide values" +msgstr "" + +#: electrical_ui.py:249 +msgid "Resume" +msgstr "" + +#: logging_ui.py:44 logging_ui.py:50 +msgid "Snapshot" +msgstr "" + +#: logging_ui.py:44 +msgid "1 second" +msgstr "" + +#: logging_ui.py:44 +msgid "1 minute" +msgstr "" + +#: logging_ui.py:44 +msgid "1 hour" +msgstr "" + +#: logging_ui.py:68 logging_ui.py:144 +msgid "Start Logging" +msgstr "" + +#: logging_ui.py:82 logging_ui.py:167 +msgid "Show Log" +msgstr "" + +#: logging_ui.py:134 +msgid "Stop Logging" +msgstr "" + +#: logging_ui.py:159 +msgid "Remove Log" +msgstr "" diff --git a/po/is.po b/po/is.po new file mode 100644 index 0000000..1db6ef5 --- /dev/null +++ b/po/is.po @@ -0,0 +1,117 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-08-21 00:30-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Translate Toolkit 1.0.1\n" + +#: activity/activity.info:2 +msgid "Measure" +msgstr "Mæla" + +#: drawWaveform.py:205 drawWaveform.py:260 +msgid "Spectrum value" +msgstr "" + +#: drawWaveform.py:330 +msgid "RMS : " +msgstr "" + +#: drawWaveform.py:330 +msgid "AVG : " +msgstr "" + +#: drawWaveform.py:331 +msgid "Scale:" +msgstr "" + +#: drawWaveform.py:332 +msgid "X Axis: " +msgstr "" + +#: drawWaveform.py:332 +msgid "Y Axis : " +msgstr "" + +#: electrical_ui.py:38 electrical_ui.py:151 +msgid "Click for DC" +msgstr "" + +#: electrical_ui.py:50 electrical_ui.py:172 +msgid "Click for Bias Off" +msgstr "" + +#: electrical_ui.py:61 electrical_ui.py:192 +msgid "Click for Frequency base" +msgstr "" + +#: electrical_ui.py:116 electrical_ui.py:256 +msgid "Pause" +msgstr "" + +#: electrical_ui.py:126 electrical_ui.py:203 +msgid "Show values" +msgstr "" + +#: electrical_ui.py:141 +msgid "Click for AC" +msgstr "" + +#: electrical_ui.py:163 +msgid "Click for Bias On" +msgstr "" + +#: electrical_ui.py:183 +msgid "Click for Time base" +msgstr "" + +#: electrical_ui.py:212 +msgid "Hide values" +msgstr "" + +#: electrical_ui.py:249 +msgid "Resume" +msgstr "" + +#: logging_ui.py:44 logging_ui.py:50 +msgid "Snapshot" +msgstr "" + +#: logging_ui.py:44 +msgid "1 second" +msgstr "" + +#: logging_ui.py:44 +msgid "1 minute" +msgstr "" + +#: logging_ui.py:44 +msgid "1 hour" +msgstr "" + +#: logging_ui.py:68 logging_ui.py:144 +msgid "Start Logging" +msgstr "" + +#: logging_ui.py:82 logging_ui.py:167 +msgid "Show Log" +msgstr "" + +#: logging_ui.py:134 +msgid "Stop Logging" +msgstr "" + +#: logging_ui.py:159 +msgid "Remove Log" +msgstr "" diff --git a/po/ja.po b/po/ja.po new file mode 100644 index 0000000..d5015ce --- /dev/null +++ b/po/ja.po @@ -0,0 +1,165 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-08-21 00:30-0400\n" +"PO-Revision-Date: 2008-07-28 20:54-0400\n" +"Last-Translator: Spiky <y@sailweb.net>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Pootle 1.1.0rc2\n" + +#: activity/activity.info:2 +msgid "Measure" +msgstr "計測" + +#: drawWaveform.py:205 drawWaveform.py:260 +#, fuzzy +msgid "Spectrum value" +msgstr "スペクトル値" + +#: drawWaveform.py:330 +#, fuzzy +msgid "RMS : " +msgstr "実効値 : " + +#: drawWaveform.py:330 +#, fuzzy +msgid "AVG : " +msgstr "平均 : " + +#: drawWaveform.py:331 +#, fuzzy +msgid "Scale:" +msgstr "目盛り : " + +#: drawWaveform.py:332 +#, fuzzy +msgid "X Axis: " +msgstr "X軸: " + +#: drawWaveform.py:332 +#, fuzzy +msgid "Y Axis : " +msgstr "Y軸: " + +#: electrical_ui.py:38 electrical_ui.py:151 +#, fuzzy +msgid "Click for DC" +msgstr "クリックしてDCに切替" + +#: electrical_ui.py:50 electrical_ui.py:172 +#, fuzzy +msgid "Click for Bias Off" +msgstr "クリックしてバイアス解放" + +#: electrical_ui.py:61 electrical_ui.py:192 +#, fuzzy +msgid "Click for Frequency base" +msgstr "クリックして周波数単位を変更" + +#: electrical_ui.py:116 electrical_ui.py:256 +#, fuzzy +msgid "Pause" +msgstr "一時停止" + +#: electrical_ui.py:126 electrical_ui.py:203 +#, fuzzy +msgid "Show values" +msgstr "値を表示" + +#: electrical_ui.py:141 +#, fuzzy +msgid "Click for AC" +msgstr "クリックしてACに切替" + +#: electrical_ui.py:163 +#, fuzzy +msgid "Click for Bias On" +msgstr "クリックしてバイアスをかける" + +#: electrical_ui.py:183 +#, fuzzy +msgid "Click for Time base" +msgstr "クリックして時間単位を変更" + +#: electrical_ui.py:212 +#, fuzzy +msgid "Hide values" +msgstr "値を非表示" + +#: electrical_ui.py:249 +#, fuzzy +msgid "Resume" +msgstr "再開" + +#: logging_ui.py:44 logging_ui.py:50 +#, fuzzy +msgid "Snapshot" +msgstr "スナップショット" + +#: logging_ui.py:44 +msgid "1 second" +msgstr "1秒間" + +# the length of one minute. unsure of the context. +#: logging_ui.py:44 +msgid "1 minute" +msgstr "1分間" + +# the length of one hour, unsure of context +#: logging_ui.py:44 +msgid "1 hour" +msgstr "1時間" + +#: logging_ui.py:68 logging_ui.py:144 +msgid "Start Logging" +msgstr "記録開始" + +#: logging_ui.py:82 logging_ui.py:167 +#, fuzzy +msgid "Show Log" +msgstr "ログ表示" + +#: logging_ui.py:134 +msgid "Stop Logging" +msgstr "記録終了" + +#: logging_ui.py:159 +#, fuzzy +msgid "Remove Log" +msgstr "ログ削除" + +#~ msgid "Show sheet and graphs" +#~ msgstr "数値表とグラフを表示" + +#~ msgid "Show waveform" +#~ msgstr "波形を表示" + +#~ msgid "Time base" +#~ msgstr "時間に沿って..." + +#~ msgid "Frequency base" +#~ msgstr "周波数に沿って..." + +#~ msgid "Resistance Sensor" +#~ msgstr "抵抗値センサー" + +#~ msgid "Voltage Sensor" +#~ msgstr "電圧センサー" + +#~ msgid "Picture" +#~ msgstr "ピクチャ" + +#~ msgid "5 seconds" +#~ msgstr "5秒間" + +# the length of one minute. unsure of the context. +#~ msgid "5 minutes" +#~ msgstr "5分間" diff --git a/po/mk.po b/po/mk.po new file mode 100644 index 0000000..d5c2aa8 --- /dev/null +++ b/po/mk.po @@ -0,0 +1,133 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-08-21 00:30-0400\n" +"PO-Revision-Date: 2007-11-23 16:35+0000\n" +"Last-Translator: Aleksandar Balalovski <gemidjy@lugola.net>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n==1 || n%10==1 ? 0 : 1;\n" +"X-Generator: Pootle 1.0.2\n" + +#: activity/activity.info:2 +msgid "Measure" +msgstr "Мерка" + +#: drawWaveform.py:205 drawWaveform.py:260 +#, fuzzy +msgid "Spectrum value" +msgstr "Вредност на спектар" + +#: drawWaveform.py:330 +msgid "RMS : " +msgstr "RMS : " + +#: drawWaveform.py:330 +msgid "AVG : " +msgstr "AVG : " + +#: drawWaveform.py:331 +msgid "Scale:" +msgstr "Размер" + +#: drawWaveform.py:332 +msgid "X Axis: " +msgstr "X оска:" + +#: drawWaveform.py:332 +msgid "Y Axis : " +msgstr "Y оска:" + +#: electrical_ui.py:38 electrical_ui.py:151 +#, fuzzy +msgid "Click for DC" +msgstr "Клинки за DC" + +#: electrical_ui.py:50 electrical_ui.py:172 +#, fuzzy +msgid "Click for Bias Off" +msgstr "Кликни за исклучување на закосувањето" + +#: electrical_ui.py:61 electrical_ui.py:192 +#, fuzzy +msgid "Click for Frequency base" +msgstr "Кникни за основна фреквенција" + +#: electrical_ui.py:116 electrical_ui.py:256 +msgid "Pause" +msgstr "Пауза" + +#: electrical_ui.py:126 electrical_ui.py:203 +msgid "Show values" +msgstr "Прикажи вредности" + +#: electrical_ui.py:141 +msgid "Click for AC" +msgstr "Кликни за AC" + +#: electrical_ui.py:163 +msgid "Click for Bias On" +msgstr "Кникни за пуштање на закосување" + +#: electrical_ui.py:183 +#, fuzzy +msgid "Click for Time base" +msgstr "Кликни за основно време" + +#: electrical_ui.py:212 +msgid "Hide values" +msgstr "Скриј вредности" + +#: electrical_ui.py:249 +msgid "Resume" +msgstr "Продолжи" + +#: logging_ui.py:44 logging_ui.py:50 +#, fuzzy +msgid "Snapshot" +msgstr "Слика од екран" + +#: logging_ui.py:44 +msgid "1 second" +msgstr "1 секунда" + +#: logging_ui.py:44 +msgid "1 minute" +msgstr "1 минута" + +#: logging_ui.py:44 +msgid "1 hour" +msgstr "1 час" + +#: logging_ui.py:68 logging_ui.py:144 +#, fuzzy +msgid "Start Logging" +msgstr "Започни со логирање" + +#: logging_ui.py:82 logging_ui.py:167 +msgid "Show Log" +msgstr "Прикажи записник" + +#: logging_ui.py:134 +#, fuzzy +msgid "Stop Logging" +msgstr "Престани со логирање" + +#: logging_ui.py:159 +msgid "Remove Log" +msgstr "Отстрани записник" + +#, fuzzy +#~ msgid "5 seconds" +#~ msgstr "1 секунда" + +#, fuzzy +#~ msgid "5 minutes" +#~ msgstr "1 минута" diff --git a/po/ml.po b/po/ml.po new file mode 100644 index 0000000..f58cfdc --- /dev/null +++ b/po/ml.po @@ -0,0 +1,117 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-08-21 00:30-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Translate Toolkit 1.0.1\n" + +#: activity/activity.info:2 +msgid "Measure" +msgstr "" + +#: drawWaveform.py:205 drawWaveform.py:260 +msgid "Spectrum value" +msgstr "" + +#: drawWaveform.py:330 +msgid "RMS : " +msgstr "" + +#: drawWaveform.py:330 +msgid "AVG : " +msgstr "" + +#: drawWaveform.py:331 +msgid "Scale:" +msgstr "" + +#: drawWaveform.py:332 +msgid "X Axis: " +msgstr "" + +#: drawWaveform.py:332 +msgid "Y Axis : " +msgstr "" + +#: electrical_ui.py:38 electrical_ui.py:151 +msgid "Click for DC" +msgstr "" + +#: electrical_ui.py:50 electrical_ui.py:172 +msgid "Click for Bias Off" +msgstr "" + +#: electrical_ui.py:61 electrical_ui.py:192 +msgid "Click for Frequency base" +msgstr "" + +#: electrical_ui.py:116 electrical_ui.py:256 +msgid "Pause" +msgstr "" + +#: electrical_ui.py:126 electrical_ui.py:203 +msgid "Show values" +msgstr "" + +#: electrical_ui.py:141 +msgid "Click for AC" +msgstr "" + +#: electrical_ui.py:163 +msgid "Click for Bias On" +msgstr "" + +#: electrical_ui.py:183 +msgid "Click for Time base" +msgstr "" + +#: electrical_ui.py:212 +msgid "Hide values" +msgstr "" + +#: electrical_ui.py:249 +msgid "Resume" +msgstr "" + +#: logging_ui.py:44 logging_ui.py:50 +msgid "Snapshot" +msgstr "" + +#: logging_ui.py:44 +msgid "1 second" +msgstr "" + +#: logging_ui.py:44 +msgid "1 minute" +msgstr "" + +#: logging_ui.py:44 +msgid "1 hour" +msgstr "" + +#: logging_ui.py:68 logging_ui.py:144 +msgid "Start Logging" +msgstr "" + +#: logging_ui.py:82 logging_ui.py:167 +msgid "Show Log" +msgstr "" + +#: logging_ui.py:134 +msgid "Stop Logging" +msgstr "" + +#: logging_ui.py:159 +msgid "Remove Log" +msgstr "" diff --git a/po/mn.po b/po/mn.po new file mode 100644 index 0000000..0f28f24 --- /dev/null +++ b/po/mn.po @@ -0,0 +1,143 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-08-21 00:30-0400\n" +"PO-Revision-Date: 2008-09-08 12:43-0400\n" +"Last-Translator: Odontsetseg Bat-Erdene <obat-erdene@suffolk.edu>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Pootle 1.1.0rc2\n" + +#: activity/activity.info:2 +msgid "Measure" +msgstr "Хэмжигч" + +#: drawWaveform.py:205 drawWaveform.py:260 +msgid "Spectrum value" +msgstr "" + +#: drawWaveform.py:330 +msgid "RMS : " +msgstr "" + +#: drawWaveform.py:330 +msgid "AVG : " +msgstr "" + +#: drawWaveform.py:331 +msgid "Scale:" +msgstr "" + +#: drawWaveform.py:332 +msgid "X Axis: " +msgstr "" + +#: drawWaveform.py:332 +msgid "Y Axis : " +msgstr "" + +#: electrical_ui.py:38 electrical_ui.py:151 +msgid "Click for DC" +msgstr "" + +#: electrical_ui.py:50 electrical_ui.py:172 +msgid "Click for Bias Off" +msgstr "" + +#: electrical_ui.py:61 electrical_ui.py:192 +msgid "Click for Frequency base" +msgstr "" + +#: electrical_ui.py:116 electrical_ui.py:256 +msgid "Pause" +msgstr "" + +#: electrical_ui.py:126 electrical_ui.py:203 +msgid "Show values" +msgstr "" + +#: electrical_ui.py:141 +msgid "Click for AC" +msgstr "" + +#: electrical_ui.py:163 +msgid "Click for Bias On" +msgstr "" + +#: electrical_ui.py:183 +msgid "Click for Time base" +msgstr "" + +#: electrical_ui.py:212 +msgid "Hide values" +msgstr "" + +#: electrical_ui.py:249 +msgid "Resume" +msgstr "" + +#: logging_ui.py:44 logging_ui.py:50 +msgid "Snapshot" +msgstr "" + +#: logging_ui.py:44 +msgid "1 second" +msgstr "1 секунд" + +#: logging_ui.py:44 +msgid "1 minute" +msgstr "1 минут" + +#: logging_ui.py:44 +msgid "1 hour" +msgstr "1 цаг" + +#: logging_ui.py:68 logging_ui.py:144 +msgid "Start Logging" +msgstr "Бүртгэж эхлэх" + +#: logging_ui.py:82 logging_ui.py:167 +msgid "Show Log" +msgstr "Бүртгэлийг үзүүлэх" + +#: logging_ui.py:134 +msgid "Stop Logging" +msgstr "Бүртгэлийг зогсоох" + +#: logging_ui.py:159 +msgid "Remove Log" +msgstr "Бүртгэлийг Устгах" + +#~ msgid "Show sheet and graphs" +#~ msgstr "Хуудас болон графикыг үзүүлэх" + +#~ msgid "Show waveform" +#~ msgstr "Долгионы хэлбэр үзүүлэх" + +#~ msgid "Time base" +#~ msgstr "Үндсэн хугацаа" + +#~ msgid "Frequency base" +#~ msgstr "Үндсэн давтамж" + +#~ msgid "Resistance Sensor" +#~ msgstr "Эсэргүүцэл мэдрэгч" + +#~ msgid "Voltage Sensor" +#~ msgstr "Цахилгааны хүчдэл мэдрэгч" + +#~ msgid "Picture" +#~ msgstr "Зураг" + +#~ msgid "5 seconds" +#~ msgstr "5 секунд" + +#~ msgid "5 minutes" +#~ msgstr "5 минут" diff --git a/po/ne.po b/po/ne.po new file mode 100644 index 0000000..23b0e5e --- /dev/null +++ b/po/ne.po @@ -0,0 +1,152 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-08-21 00:30-0400\n" +"PO-Revision-Date: 2008-03-21 15:37-0400\n" +"Last-Translator: Shankar Pokharel <memshankar@gmail.com>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Pootle 1.1.0rc2\n" + +#: activity/activity.info:2 +msgid "Measure" +msgstr "नाप" + +#: drawWaveform.py:205 drawWaveform.py:260 +msgid "Spectrum value" +msgstr "वर्णपट माप" + +#: drawWaveform.py:330 +msgid "RMS : " +msgstr "आर एम एस : " + +#: drawWaveform.py:330 +msgid "AVG : " +msgstr "औसत : " + +#: drawWaveform.py:331 +msgid "Scale:" +msgstr "मापन:" + +#: drawWaveform.py:332 +msgid "X Axis: " +msgstr "X अक्ष:" + +#: drawWaveform.py:332 +msgid "Y Axis : " +msgstr "Y अक्ष:" + +#: electrical_ui.py:38 electrical_ui.py:151 +msgid "Click for DC" +msgstr "DC को लागि थिच" + +#: electrical_ui.py:50 electrical_ui.py:172 +msgid "Click for Bias Off" +msgstr "Bias बन्द गर्न थिच" + +#: electrical_ui.py:61 electrical_ui.py:192 +msgid "Click for Frequency base" +msgstr "आवृती आधारको लागि थिच" + +#: electrical_ui.py:116 electrical_ui.py:256 +msgid "Pause" +msgstr "विश्राम" + +#: electrical_ui.py:126 electrical_ui.py:203 +msgid "Show values" +msgstr "माप देखाउ" + +#: electrical_ui.py:141 +msgid "Click for AC" +msgstr "AC को लागि थिच" + +#: electrical_ui.py:163 +msgid "Click for Bias On" +msgstr "Bias गर्न थिच" + +#: electrical_ui.py:183 +msgid "Click for Time base" +msgstr "समय आधारको लागि थिच" + +#: electrical_ui.py:212 +msgid "Hide values" +msgstr "माप लुकाऊ" + +#: electrical_ui.py:249 +msgid "Resume" +msgstr "फेरि चालु गर" + +#: logging_ui.py:44 logging_ui.py:50 +msgid "Snapshot" +msgstr "झलक" + +#: logging_ui.py:44 +msgid "1 second" +msgstr "१ सेकेन्ड" + +#: logging_ui.py:44 +msgid "1 minute" +msgstr "१ मिनेट" + +#: logging_ui.py:44 +msgid "1 hour" +msgstr "१ घन्टा" + +#: logging_ui.py:68 logging_ui.py:144 +msgid "Start Logging" +msgstr "बचत सुरु गर" + +#: logging_ui.py:82 logging_ui.py:167 +msgid "Show Log" +msgstr "वहीखाता देखाऊ" + +#: logging_ui.py:134 +msgid "Stop Logging" +msgstr "बचत बन्द गर" + +#: logging_ui.py:159 +msgid "Remove Log" +msgstr "वहीखाताबाट हटाऊ" + +#~ msgid "Show sheet and graphs" +#~ msgstr "सुचि र रेखाचित्र देखाऊ" + +#~ msgid "Show waveform" +#~ msgstr "तरङरेखा देखाऊ" + +#~ msgid "Time base" +#~ msgstr "समय आधार" + +#~ msgid "Frequency base" +#~ msgstr "आवृती आधार" + +#~ msgid "Resistance Sensor" +#~ msgstr "अवरोध सचेतक" + +#~ msgid "Voltage Sensor" +#~ msgstr "भोल्टेज सचेतक" + +#~ msgid "Picture" +#~ msgstr "चित्र" + +#~ msgid "5 seconds" +#~ msgstr "५ सेकेन्ड" + +#~ msgid "5 minutes" +#~ msgstr "५ मिनेट" + +#~ msgid "Spectral power" +#~ msgstr "वर्णपटीय शक्ति" + +#~ msgid "RMS: " +#~ msgstr "आर एम एस:" + +#~ msgid "AVG : " +#~ msgstr "औसत" diff --git a/po/nl.po b/po/nl.po new file mode 100644 index 0000000..18b685c --- /dev/null +++ b/po/nl.po @@ -0,0 +1,239 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-10-12 00:30-0400\n" +"PO-Revision-Date: 2008-10-23 01:49-0400\n" +"Last-Translator: Myckel Habets <myckel@sdf.lonestar.org>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Pootle 1.1.0rc2\n" + +#: activity/activity.info:2 +msgid "Measure" +msgstr "Meten" + +#: sheet_ui.py:37 +msgid "Show sheet and graphs" +msgstr "Werkblad en grafieken weergeven" + +#: sheet_ui.py:42 +msgid "Show waveform" +msgstr "Golfvorm weergeven" + +#: toolbar_top.py:44 +msgid "Sound" +msgstr "Geluid" + +#: toolbar_top.py:48 +msgid "Sensors" +msgstr "Sensors" + +#: sound_toolbar.py:52 +msgid "Sound " +msgstr "Geluid " + +#: sound_toolbar.py:53 +msgid "Time Base " +msgstr "Tijddomein " + +#: sound_toolbar.py:54 +msgid "Frequency Base " +msgstr "Frequentiedomein " + +#: sound_toolbar.py:56 +msgid "X Axis Scale: 1 division = " +msgstr "X-as schaal: 1 scheiding = " + +#: sound_toolbar.py:57 +msgid "ms " +msgstr "ms " + +#: sound_toolbar.py:58 +msgid "Hz " +msgstr "Hz " + +#: sound_toolbar.py:74 +msgid "Time base" +msgstr "Tijddomein" + +#: sound_toolbar.py:82 +msgid "Frequency base" +msgstr "Frequentiedomein" + +#: sound_toolbar.py:128 sound_toolbar.py:250 +msgid "Freeze the display" +msgstr "Weergave bevriezen" + +#: sound_toolbar.py:149 +msgid "Now" +msgstr "Nu" + +#: sound_toolbar.py:149 sensor_toolbar.py:92 +msgid "30 seconds" +msgstr "30 seconden" + +#: sound_toolbar.py:149 +msgid "2 minutes" +msgstr "2 minuten" + +#: sound_toolbar.py:149 +msgid "10 minutes" +msgstr "10 minuten" + +#: sound_toolbar.py:149 sensor_toolbar.py:92 +msgid "30 minutes" +msgstr "30 minuten" + +#: sound_toolbar.py:168 sound_toolbar.py:189 sound_toolbar.py:200 +#: sensor_toolbar.py:111 sensor_toolbar.py:142 +msgid "Start Recording" +msgstr "Start opnemen" + +#: sound_toolbar.py:184 sensor_toolbar.py:131 +msgid "Stop Recording" +msgstr "Stop opnemen" + +#: sound_toolbar.py:243 +msgid "Unfreeze the display" +msgstr "Weergave hervatten" + +#: sensor_toolbar.py:41 +msgid "Sensors, DC (connect sensor to pink 'Mic In' on left side of XO) " +msgstr "" +"Sensors, DC (verbind sensor met roze 'Mic In' aan de linkerzijde van de XO) " + +#: sensor_toolbar.py:42 +msgid "Bias/Offset Enabled " +msgstr "Bias/Uitlijnen geactiveerd " + +#: sensor_toolbar.py:43 +msgid "Bias/Offset Disabled " +msgstr "Bias/Uitlijnen gedeactiveerd " + +#: sensor_toolbar.py:63 +msgid "Resistance Sensor" +msgstr "Weerstandsensor" + +#: sensor_toolbar.py:71 +msgid "Voltage Sensor" +msgstr "Voltage sensor" + +#: sensor_toolbar.py:92 sensor_toolbar.py:98 logging_ui.py:39 +msgid "1 second" +msgstr "1 seconde" + +#: sensor_toolbar.py:92 logging_ui.py:39 +msgid "5 minutes" +msgstr "5 minuten" + +#: logging_ui.py:39 logging_ui.py:45 +msgid "Picture" +msgstr "Afbeelding" + +#: logging_ui.py:39 +msgid "5 seconds" +msgstr "5 seconden" + +#: logging_ui.py:39 +msgid "1 minute" +msgstr "1 minuut" + +#: logging_ui.py:39 +msgid "1 hour" +msgstr "1 uur" + +#: logging_ui.py:63 logging_ui.py:91 logging_ui.py:100 +msgid "Start Logging" +msgstr "Begin loggen" + +#: logging_ui.py:87 +msgid "Stop Logging" +msgstr "Stop loggen" + +#: journal.py:182 journal.py:196 +msgid " logging sessions, from Measure Activity" +msgstr " sessielogboeken, van Meten activiteit" + +#: journal.py:223 +msgid "Session: " +msgstr "Sessie: " + +#: journal.py:224 +msgid "User: " +msgstr "Gebruiker: " + +#: journal.py:225 +msgid "Interval: " +msgstr "Interval: " + +#: journal.py:352 +msgid "Waveform " +msgstr "Golfvorm " + +#~ msgid "Spectrum value" +#~ msgstr "Spectrumwaarde" + +#~ msgid "RMS : " +#~ msgstr "RMS : " + +#~ msgid "AVG : " +#~ msgstr "Gemiddeld : " + +#~ msgid "Scale:" +#~ msgstr "Schaal:" + +#~ msgid "X Axis: " +#~ msgstr "X-as:" + +#~ msgid "Y Axis : " +#~ msgstr "Y-as:" + +#~ msgid "Click for DC" +#~ msgstr "Klik voor DC" + +#~ msgid "Click for Bias Off" +#~ msgstr "Klik voor Bias Uit" + +#~ msgid "Click for Frequency base" +#~ msgstr "Klik voor frequentieschaal" + +#~ msgid "Pause" +#~ msgstr "Pauze" + +#~ msgid "Show values" +#~ msgstr "Toon waarden" + +#~ msgid "Click for AC" +#~ msgstr "Klik voor AC" + +#~ msgid "Click for Bias On" +#~ msgstr "Klik voor Bias Aan" + +#~ msgid "Click for Time base" +#~ msgstr "Klik voor tijdschaal" + +#~ msgid "Hide values" +#~ msgstr "Verberg waarden" + +#~ msgid "Resume" +#~ msgstr "Hervatten" + +#~ msgid "Snapshot" +#~ msgstr "Momentopname" + +#~ msgid "Show Log" +#~ msgstr "Toon logboek" + +#~ msgid "Remove Log" +#~ msgstr "Verwijder logboek" + +#~ msgid "AVG : " +#~ msgstr "Gemiddeld: " diff --git a/po/pa.po b/po/pa.po new file mode 100644 index 0000000..f58cfdc --- /dev/null +++ b/po/pa.po @@ -0,0 +1,117 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-08-21 00:30-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Translate Toolkit 1.0.1\n" + +#: activity/activity.info:2 +msgid "Measure" +msgstr "" + +#: drawWaveform.py:205 drawWaveform.py:260 +msgid "Spectrum value" +msgstr "" + +#: drawWaveform.py:330 +msgid "RMS : " +msgstr "" + +#: drawWaveform.py:330 +msgid "AVG : " +msgstr "" + +#: drawWaveform.py:331 +msgid "Scale:" +msgstr "" + +#: drawWaveform.py:332 +msgid "X Axis: " +msgstr "" + +#: drawWaveform.py:332 +msgid "Y Axis : " +msgstr "" + +#: electrical_ui.py:38 electrical_ui.py:151 +msgid "Click for DC" +msgstr "" + +#: electrical_ui.py:50 electrical_ui.py:172 +msgid "Click for Bias Off" +msgstr "" + +#: electrical_ui.py:61 electrical_ui.py:192 +msgid "Click for Frequency base" +msgstr "" + +#: electrical_ui.py:116 electrical_ui.py:256 +msgid "Pause" +msgstr "" + +#: electrical_ui.py:126 electrical_ui.py:203 +msgid "Show values" +msgstr "" + +#: electrical_ui.py:141 +msgid "Click for AC" +msgstr "" + +#: electrical_ui.py:163 +msgid "Click for Bias On" +msgstr "" + +#: electrical_ui.py:183 +msgid "Click for Time base" +msgstr "" + +#: electrical_ui.py:212 +msgid "Hide values" +msgstr "" + +#: electrical_ui.py:249 +msgid "Resume" +msgstr "" + +#: logging_ui.py:44 logging_ui.py:50 +msgid "Snapshot" +msgstr "" + +#: logging_ui.py:44 +msgid "1 second" +msgstr "" + +#: logging_ui.py:44 +msgid "1 minute" +msgstr "" + +#: logging_ui.py:44 +msgid "1 hour" +msgstr "" + +#: logging_ui.py:68 logging_ui.py:144 +msgid "Start Logging" +msgstr "" + +#: logging_ui.py:82 logging_ui.py:167 +msgid "Show Log" +msgstr "" + +#: logging_ui.py:134 +msgid "Stop Logging" +msgstr "" + +#: logging_ui.py:159 +msgid "Remove Log" +msgstr "" diff --git a/po/pl.po b/po/pl.po new file mode 100644 index 0000000..f58cfdc --- /dev/null +++ b/po/pl.po @@ -0,0 +1,117 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-08-21 00:30-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Translate Toolkit 1.0.1\n" + +#: activity/activity.info:2 +msgid "Measure" +msgstr "" + +#: drawWaveform.py:205 drawWaveform.py:260 +msgid "Spectrum value" +msgstr "" + +#: drawWaveform.py:330 +msgid "RMS : " +msgstr "" + +#: drawWaveform.py:330 +msgid "AVG : " +msgstr "" + +#: drawWaveform.py:331 +msgid "Scale:" +msgstr "" + +#: drawWaveform.py:332 +msgid "X Axis: " +msgstr "" + +#: drawWaveform.py:332 +msgid "Y Axis : " +msgstr "" + +#: electrical_ui.py:38 electrical_ui.py:151 +msgid "Click for DC" +msgstr "" + +#: electrical_ui.py:50 electrical_ui.py:172 +msgid "Click for Bias Off" +msgstr "" + +#: electrical_ui.py:61 electrical_ui.py:192 +msgid "Click for Frequency base" +msgstr "" + +#: electrical_ui.py:116 electrical_ui.py:256 +msgid "Pause" +msgstr "" + +#: electrical_ui.py:126 electrical_ui.py:203 +msgid "Show values" +msgstr "" + +#: electrical_ui.py:141 +msgid "Click for AC" +msgstr "" + +#: electrical_ui.py:163 +msgid "Click for Bias On" +msgstr "" + +#: electrical_ui.py:183 +msgid "Click for Time base" +msgstr "" + +#: electrical_ui.py:212 +msgid "Hide values" +msgstr "" + +#: electrical_ui.py:249 +msgid "Resume" +msgstr "" + +#: logging_ui.py:44 logging_ui.py:50 +msgid "Snapshot" +msgstr "" + +#: logging_ui.py:44 +msgid "1 second" +msgstr "" + +#: logging_ui.py:44 +msgid "1 minute" +msgstr "" + +#: logging_ui.py:44 +msgid "1 hour" +msgstr "" + +#: logging_ui.py:68 logging_ui.py:144 +msgid "Start Logging" +msgstr "" + +#: logging_ui.py:82 logging_ui.py:167 +msgid "Show Log" +msgstr "" + +#: logging_ui.py:134 +msgid "Stop Logging" +msgstr "" + +#: logging_ui.py:159 +msgid "Remove Log" +msgstr "" diff --git a/po/ps.po b/po/ps.po new file mode 100644 index 0000000..d426a11 --- /dev/null +++ b/po/ps.po @@ -0,0 +1,146 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-08-21 00:30-0400\n" +"PO-Revision-Date: 2008-03-12 04:24-0400\n" +"Last-Translator: Usman Mansoor Ansari <jalalkut@gmail.com>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Pootle 1.1.0rc2\n" + +#: activity/activity.info:2 +msgid "Measure" +msgstr "اندازه کول" + +#: drawWaveform.py:205 drawWaveform.py:260 +msgid "Spectrum value" +msgstr "د سپكټرم ارزښت" + +#: drawWaveform.py:330 +msgid "RMS : " +msgstr "RMS : " + +#: drawWaveform.py:330 +msgid "AVG : " +msgstr "AVG : " + +#: drawWaveform.py:331 +msgid "Scale:" +msgstr "مېچل:" + +#: drawWaveform.py:332 +msgid "X Axis: " +msgstr "افقي محوور: " + +#: drawWaveform.py:332 +msgid "Y Axis : " +msgstr "عمودي محور: " + +#: electrical_ui.py:38 electrical_ui.py:151 +msgid "Click for DC" +msgstr "DC لپاره ټک وکړﺉ" + +#: electrical_ui.py:50 electrical_ui.py:172 +msgid "Click for Bias Off" +msgstr "د باېس بندولو لپاره ټک کړﺉ" + +#: electrical_ui.py:61 electrical_ui.py:192 +msgid "Click for Frequency base" +msgstr "د فرېكوېنسي بنسټ لپاره ټك وكړئ" + +#: electrical_ui.py:116 electrical_ui.py:256 +msgid "Pause" +msgstr "ځنډ" + +#: electrical_ui.py:126 electrical_ui.py:203 +msgid "Show values" +msgstr "ارزښت ښودنل" + +#: electrical_ui.py:141 +msgid "Click for AC" +msgstr "اې.سي لپاره ټك كړئ" + +#: electrical_ui.py:163 +msgid "Click for Bias On" +msgstr "باېس ان لپاره ټك كړئ" + +#: electrical_ui.py:183 +msgid "Click for Time base" +msgstr "د وخت بنسټ لپاره ټك كړئ" + +#: electrical_ui.py:212 +msgid "Hide values" +msgstr "ارزښتونه پټول" + +#: electrical_ui.py:249 +msgid "Resume" +msgstr "کارمخینه" + +#: logging_ui.py:44 logging_ui.py:50 +msgid "Snapshot" +msgstr "سملاسي انځور" + +#: logging_ui.py:44 +msgid "1 second" +msgstr "۱ ثانیه" + +#: logging_ui.py:44 +msgid "1 minute" +msgstr "۱ دقیقه" + +#: logging_ui.py:44 +msgid "1 hour" +msgstr "۱ ساعت" + +#: logging_ui.py:68 logging_ui.py:144 +msgid "Start Logging" +msgstr "ننوتون پيلونه" + +#: logging_ui.py:82 logging_ui.py:167 +msgid "Show Log" +msgstr "خبرال وښاياست" + +#: logging_ui.py:134 +msgid "Stop Logging" +msgstr "ننوتون تمول" + +#: logging_ui.py:159 +msgid "Remove Log" +msgstr "خبرال لر كړئ" + +#~ msgid "Show sheet and graphs" +#~ msgstr "ګراف او پاڼه ښودل" + +#~ msgid "Show waveform" +#~ msgstr "د څپې فارم ښودل" + +#~ msgid "Time base" +#~ msgstr "د وخت بنسټ" + +#~ msgid "Frequency base" +#~ msgstr "د فرېکوېنسي بنسټ" + +#~ msgid "Resistance Sensor" +#~ msgstr "د مخنیوي حس" + +#~ msgid "Voltage Sensor" +#~ msgstr "د ولټېج حس" + +#~ msgid "Picture" +#~ msgstr "انځور" + +#~ msgid "5 seconds" +#~ msgstr "۵ ثانیې" + +#~ msgid "5 minutes" +#~ msgstr "۵ دقیقې" + +#~ msgid "Spectral power" +#~ msgstr "خیالي ځواک" diff --git a/po/pseudo.po b/po/pseudo.po new file mode 100644 index 0000000..f58cfdc --- /dev/null +++ b/po/pseudo.po @@ -0,0 +1,117 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-08-21 00:30-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Translate Toolkit 1.0.1\n" + +#: activity/activity.info:2 +msgid "Measure" +msgstr "" + +#: drawWaveform.py:205 drawWaveform.py:260 +msgid "Spectrum value" +msgstr "" + +#: drawWaveform.py:330 +msgid "RMS : " +msgstr "" + +#: drawWaveform.py:330 +msgid "AVG : " +msgstr "" + +#: drawWaveform.py:331 +msgid "Scale:" +msgstr "" + +#: drawWaveform.py:332 +msgid "X Axis: " +msgstr "" + +#: drawWaveform.py:332 +msgid "Y Axis : " +msgstr "" + +#: electrical_ui.py:38 electrical_ui.py:151 +msgid "Click for DC" +msgstr "" + +#: electrical_ui.py:50 electrical_ui.py:172 +msgid "Click for Bias Off" +msgstr "" + +#: electrical_ui.py:61 electrical_ui.py:192 +msgid "Click for Frequency base" +msgstr "" + +#: electrical_ui.py:116 electrical_ui.py:256 +msgid "Pause" +msgstr "" + +#: electrical_ui.py:126 electrical_ui.py:203 +msgid "Show values" +msgstr "" + +#: electrical_ui.py:141 +msgid "Click for AC" +msgstr "" + +#: electrical_ui.py:163 +msgid "Click for Bias On" +msgstr "" + +#: electrical_ui.py:183 +msgid "Click for Time base" +msgstr "" + +#: electrical_ui.py:212 +msgid "Hide values" +msgstr "" + +#: electrical_ui.py:249 +msgid "Resume" +msgstr "" + +#: logging_ui.py:44 logging_ui.py:50 +msgid "Snapshot" +msgstr "" + +#: logging_ui.py:44 +msgid "1 second" +msgstr "" + +#: logging_ui.py:44 +msgid "1 minute" +msgstr "" + +#: logging_ui.py:44 +msgid "1 hour" +msgstr "" + +#: logging_ui.py:68 logging_ui.py:144 +msgid "Start Logging" +msgstr "" + +#: logging_ui.py:82 logging_ui.py:167 +msgid "Show Log" +msgstr "" + +#: logging_ui.py:134 +msgid "Stop Logging" +msgstr "" + +#: logging_ui.py:159 +msgid "Remove Log" +msgstr "" diff --git a/po/pt.po b/po/pt.po new file mode 100644 index 0000000..0a5f9ee --- /dev/null +++ b/po/pt.po @@ -0,0 +1,130 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-08-21 00:30-0400\n" +"PO-Revision-Date: 2008-08-26 19:15-0400\n" +"Last-Translator: Eduardo H. Silva <HoboPrimate@gmail.com>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Pootle 1.1.0rc2\n" + +#: activity/activity.info:2 +msgid "Measure" +msgstr "Medir" + +#: drawWaveform.py:205 drawWaveform.py:260 +msgid "Spectrum value" +msgstr "Valor de espectro" + +#: drawWaveform.py:330 +msgid "RMS : " +msgstr "RMS : " + +#: drawWaveform.py:330 +msgid "AVG : " +msgstr "AVG : " + +#: drawWaveform.py:331 +msgid "Scale:" +msgstr "Escala:" + +#: drawWaveform.py:332 +msgid "X Axis: " +msgstr "Eixo X: " + +#: drawWaveform.py:332 +msgid "Y Axis : " +msgstr "Eixo Y: " + +#: electrical_ui.py:38 electrical_ui.py:151 +msgid "Click for DC" +msgstr "Clicar para DC" + +#: electrical_ui.py:50 electrical_ui.py:172 +msgid "Click for Bias Off" +msgstr "Clicar para Bias Off" + +#: electrical_ui.py:61 electrical_ui.py:192 +msgid "Click for Frequency base" +msgstr "Clicar para Frequência base" + +#: electrical_ui.py:116 electrical_ui.py:256 +msgid "Pause" +msgstr "Pausar" + +#: electrical_ui.py:126 electrical_ui.py:203 +msgid "Show values" +msgstr "Mostrar valores" + +#: electrical_ui.py:141 +msgid "Click for AC" +msgstr "Clicar para AC" + +#: electrical_ui.py:163 +msgid "Click for Bias On" +msgstr "Clicar para Bias On" + +#: electrical_ui.py:183 +msgid "Click for Time base" +msgstr "Clicar para Tempo base" + +#: electrical_ui.py:212 +msgid "Hide values" +msgstr "Esconder valores" + +#: electrical_ui.py:249 +msgid "Resume" +msgstr "Continuar" + +#: logging_ui.py:44 logging_ui.py:50 +msgid "Snapshot" +msgstr "Fotografia" + +#: logging_ui.py:44 +msgid "1 second" +msgstr "1 segundo" + +#: logging_ui.py:44 +msgid "1 minute" +msgstr "1 minuto" + +#: logging_ui.py:44 +msgid "1 hour" +msgstr "1 hora" + +#: logging_ui.py:68 logging_ui.py:144 +msgid "Start Logging" +msgstr "Começar a Registar" + +#: logging_ui.py:82 logging_ui.py:167 +msgid "Show Log" +msgstr "Mostrar Registo" + +#: logging_ui.py:134 +msgid "Stop Logging" +msgstr "Parar o Registo" + +#: logging_ui.py:159 +msgid "Remove Log" +msgstr "Remover Registo" + +#, fuzzy +#~ msgid "5 seconds" +#~ msgstr "1 segundo" + +#, fuzzy +#~ msgid "5 minutes" +#~ msgstr "1 minuto" + +#~ msgid "RMS: " +#~ msgstr "RMS: " + +#~ msgid "AVG : " +#~ msgstr "AVG : " diff --git a/po/pt_BR.po b/po/pt_BR.po new file mode 100644 index 0000000..85f401c --- /dev/null +++ b/po/pt_BR.po @@ -0,0 +1,151 @@ +# Portuguese translations for Measure package. +# Copyright (C) 2007 Measure +# This file is distributed under the same license as the Measure package. +# Arjun Sarwal arjun@laptop.org, 2007 +msgid "" +msgstr "" +"Project-Id-Version: Measure\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-08-21 00:30-0400\n" +"PO-Revision-Date: 2008-03-18 10:23-0300\n" +"Last-Translator: Juliano Bittencourt <juliano@lec.ufrgs.br>\n" +"Language-Team: Portuguese\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Pootle 1.1.0rc2\n" + +#: activity/activity.info:2 +msgid "Measure" +msgstr "Medir" + +#: drawWaveform.py:205 drawWaveform.py:260 +msgid "Spectrum value" +msgstr "" + +#: drawWaveform.py:330 +msgid "RMS : " +msgstr "RMS : " + +#: drawWaveform.py:330 +msgid "AVG : " +msgstr "AVG : " + +#: drawWaveform.py:331 +msgid "Scale:" +msgstr "Escala:" + +#: drawWaveform.py:332 +msgid "X Axis: " +msgstr "Eixo X: " + +#: drawWaveform.py:332 +msgid "Y Axis : " +msgstr "Eixo Y : " + +#: electrical_ui.py:38 electrical_ui.py:151 +msgid "Click for DC" +msgstr "" + +#: electrical_ui.py:50 electrical_ui.py:172 +msgid "Click for Bias Off" +msgstr "" + +#: electrical_ui.py:61 electrical_ui.py:192 +msgid "Click for Frequency base" +msgstr "" + +#: electrical_ui.py:116 electrical_ui.py:256 +msgid "Pause" +msgstr "" + +#: electrical_ui.py:126 electrical_ui.py:203 +msgid "Show values" +msgstr "" + +#: electrical_ui.py:141 +msgid "Click for AC" +msgstr "" + +#: electrical_ui.py:163 +msgid "Click for Bias On" +msgstr "" + +#: electrical_ui.py:183 +msgid "Click for Time base" +msgstr "" + +#: electrical_ui.py:212 +msgid "Hide values" +msgstr "" + +#: electrical_ui.py:249 +msgid "Resume" +msgstr "" + +#: logging_ui.py:44 logging_ui.py:50 +msgid "Snapshot" +msgstr "" + +#: logging_ui.py:44 +msgid "1 second" +msgstr "1 segundo" + +#: logging_ui.py:44 +msgid "1 minute" +msgstr "1 minuto" + +#: logging_ui.py:44 +msgid "1 hour" +msgstr "1 hora" + +#: logging_ui.py:68 logging_ui.py:144 +msgid "Start Logging" +msgstr "Iniciar Registro" + +#: logging_ui.py:82 logging_ui.py:167 +msgid "Show Log" +msgstr "" + +#: logging_ui.py:134 +msgid "Stop Logging" +msgstr "Parar Registro" + +#: logging_ui.py:159 +msgid "Remove Log" +msgstr "" + +#~ msgid "Show sheet and graphs" +#~ msgstr "Mostrar régua e gráficos" + +#~ msgid "Show waveform" +#~ msgstr "Mostrar forma da onda" + +#~ msgid "Time base" +#~ msgstr "Tempo de base" + +#~ msgid "Frequency base" +#~ msgstr "Freqüência de base" + +#~ msgid "Resistance Sensor" +#~ msgstr "Sensor de Resistência" + +#~ msgid "Voltage Sensor" +#~ msgstr "Sensor de Voltagem" + +#~ msgid "Picture" +#~ msgstr "Imagem" + +#~ msgid "5 seconds" +#~ msgstr "5 segundos" + +#~ msgid "5 minutes" +#~ msgstr "5 minutos" + +#~ msgid "Spectral power" +#~ msgstr "Potência Espectral " + +# msec is milliSeconds +#~ msgid " msec" +#~ msgstr " mseg" diff --git a/po/qu.po b/po/qu.po new file mode 100644 index 0000000..f58cfdc --- /dev/null +++ b/po/qu.po @@ -0,0 +1,117 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-08-21 00:30-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Translate Toolkit 1.0.1\n" + +#: activity/activity.info:2 +msgid "Measure" +msgstr "" + +#: drawWaveform.py:205 drawWaveform.py:260 +msgid "Spectrum value" +msgstr "" + +#: drawWaveform.py:330 +msgid "RMS : " +msgstr "" + +#: drawWaveform.py:330 +msgid "AVG : " +msgstr "" + +#: drawWaveform.py:331 +msgid "Scale:" +msgstr "" + +#: drawWaveform.py:332 +msgid "X Axis: " +msgstr "" + +#: drawWaveform.py:332 +msgid "Y Axis : " +msgstr "" + +#: electrical_ui.py:38 electrical_ui.py:151 +msgid "Click for DC" +msgstr "" + +#: electrical_ui.py:50 electrical_ui.py:172 +msgid "Click for Bias Off" +msgstr "" + +#: electrical_ui.py:61 electrical_ui.py:192 +msgid "Click for Frequency base" +msgstr "" + +#: electrical_ui.py:116 electrical_ui.py:256 +msgid "Pause" +msgstr "" + +#: electrical_ui.py:126 electrical_ui.py:203 +msgid "Show values" +msgstr "" + +#: electrical_ui.py:141 +msgid "Click for AC" +msgstr "" + +#: electrical_ui.py:163 +msgid "Click for Bias On" +msgstr "" + +#: electrical_ui.py:183 +msgid "Click for Time base" +msgstr "" + +#: electrical_ui.py:212 +msgid "Hide values" +msgstr "" + +#: electrical_ui.py:249 +msgid "Resume" +msgstr "" + +#: logging_ui.py:44 logging_ui.py:50 +msgid "Snapshot" +msgstr "" + +#: logging_ui.py:44 +msgid "1 second" +msgstr "" + +#: logging_ui.py:44 +msgid "1 minute" +msgstr "" + +#: logging_ui.py:44 +msgid "1 hour" +msgstr "" + +#: logging_ui.py:68 logging_ui.py:144 +msgid "Start Logging" +msgstr "" + +#: logging_ui.py:82 logging_ui.py:167 +msgid "Show Log" +msgstr "" + +#: logging_ui.py:134 +msgid "Stop Logging" +msgstr "" + +#: logging_ui.py:159 +msgid "Remove Log" +msgstr "" diff --git a/po/ro.po b/po/ro.po new file mode 100644 index 0000000..8eb3603 --- /dev/null +++ b/po/ro.po @@ -0,0 +1,128 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-08-21 00:30-0400\n" +"PO-Revision-Date: 2008-02-19 14:42-0500\n" +"Last-Translator: Adi Roiban <adiroiban@gmail.com>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " +"20)) ? 1 : 2);;\n" +"X-Generator: Pootle 1.0.2\n" + +#: activity/activity.info:2 +msgid "Measure" +msgstr "Măsurători" + +#: drawWaveform.py:205 drawWaveform.py:260 +msgid "Spectrum value" +msgstr "Valoare spectrum" + +#: drawWaveform.py:330 +msgid "RMS : " +msgstr "" + +#: drawWaveform.py:330 +msgid "AVG : " +msgstr "" + +#: drawWaveform.py:331 +msgid "Scale:" +msgstr "Scară:" + +#: drawWaveform.py:332 +msgid "X Axis: " +msgstr "Axa X:_" + +#: drawWaveform.py:332 +msgid "Y Axis : " +msgstr "Axa Y:_" + +#: electrical_ui.py:38 electrical_ui.py:151 +#, fuzzy +msgid "Click for DC" +msgstr "Clic pentru DC" + +#: electrical_ui.py:50 electrical_ui.py:172 +msgid "Click for Bias Off" +msgstr "" + +#: electrical_ui.py:61 electrical_ui.py:192 +msgid "Click for Frequency base" +msgstr "" + +#: electrical_ui.py:116 electrical_ui.py:256 +msgid "Pause" +msgstr "Pauză" + +#: electrical_ui.py:126 electrical_ui.py:203 +msgid "Show values" +msgstr "Afişează valori" + +#: electrical_ui.py:141 +#, fuzzy +msgid "Click for AC" +msgstr "Clic pentru DC" + +#: electrical_ui.py:163 +msgid "Click for Bias On" +msgstr "" + +#: electrical_ui.py:183 +msgid "Click for Time base" +msgstr "" + +#: electrical_ui.py:212 +msgid "Hide values" +msgstr "Ascunde valori" + +#: electrical_ui.py:249 +msgid "Resume" +msgstr "Reia" + +#: logging_ui.py:44 logging_ui.py:50 +msgid "Snapshot" +msgstr "" + +#: logging_ui.py:44 +msgid "1 second" +msgstr "o secundă" + +#: logging_ui.py:44 +msgid "1 minute" +msgstr "un minut" + +#: logging_ui.py:44 +msgid "1 hour" +msgstr "o oră" + +#: logging_ui.py:68 logging_ui.py:144 +msgid "Start Logging" +msgstr "Porneşte înregistrare" + +#: logging_ui.py:82 logging_ui.py:167 +msgid "Show Log" +msgstr "Afişează înregistrarea" + +#: logging_ui.py:134 +msgid "Stop Logging" +msgstr "Opreşte înregistrare" + +#: logging_ui.py:159 +msgid "Remove Log" +msgstr "Şterge înregistarea" + +#, fuzzy +#~ msgid "5 seconds" +#~ msgstr "o secundă" + +#, fuzzy +#~ msgid "5 minutes" +#~ msgstr "un minut" diff --git a/po/ru.po b/po/ru.po new file mode 100644 index 0000000..f4c9d17 --- /dev/null +++ b/po/ru.po @@ -0,0 +1,133 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-08-21 00:30-0400\n" +"PO-Revision-Date: 2007-12-07 11:35+0000\n" +"Last-Translator: Maxim Osipov <maxim.osipov@gmail.com>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Generator: Pootle 1.0.2\n" + +#: activity/activity.info:2 +msgid "Measure" +msgstr "Измерить" + +#: drawWaveform.py:205 drawWaveform.py:260 +msgid "Spectrum value" +msgstr "Значение спектра" + +#: drawWaveform.py:330 +msgid "RMS : " +msgstr "Среднее Квадратичное : " + +#: drawWaveform.py:330 +msgid "AVG : " +msgstr "Среднее : " + +#: drawWaveform.py:331 +msgid "Scale:" +msgstr "Масштаб:" + +#: drawWaveform.py:332 +msgid "X Axis: " +msgstr "Ось Х: " + +#: drawWaveform.py:332 +msgid "Y Axis : " +msgstr "Ось Y: " + +#: electrical_ui.py:38 electrical_ui.py:151 +msgid "Click for DC" +msgstr "Щелкните для Постоянного Тока" + +#: electrical_ui.py:50 electrical_ui.py:172 +msgid "Click for Bias Off" +msgstr "Щелкните чтобы выключить Смещение" + +#: electrical_ui.py:61 electrical_ui.py:192 +msgid "Click for Frequency base" +msgstr "Нажмите чтобы показать ось Частот" + +#: electrical_ui.py:116 electrical_ui.py:256 +msgid "Pause" +msgstr "Пауза" + +#: electrical_ui.py:126 electrical_ui.py:203 +msgid "Show values" +msgstr "Показать значения" + +#: electrical_ui.py:141 +msgid "Click for AC" +msgstr "Щелкните для Переменного Тока" + +#: electrical_ui.py:163 +msgid "Click for Bias On" +msgstr "Щелкните чтобы включить Смещение" + +#: electrical_ui.py:183 +msgid "Click for Time base" +msgstr "Щелкните для оси Времени" + +#: electrical_ui.py:212 +msgid "Hide values" +msgstr "Спрятать значения" + +#: electrical_ui.py:249 +msgid "Resume" +msgstr "Продолжить" + +#: logging_ui.py:44 logging_ui.py:50 +msgid "Snapshot" +msgstr "Снимок экрана" + +#: logging_ui.py:44 +msgid "1 second" +msgstr "1 секунда" + +#: logging_ui.py:44 +msgid "1 minute" +msgstr "1 минута" + +#: logging_ui.py:44 +msgid "1 hour" +msgstr "1 час" + +#: logging_ui.py:68 logging_ui.py:144 +msgid "Start Logging" +msgstr "Начать Запись" + +#: logging_ui.py:82 logging_ui.py:167 +msgid "Show Log" +msgstr "Показать Запись" + +#: logging_ui.py:134 +msgid "Stop Logging" +msgstr "Остановить Запись" + +#: logging_ui.py:159 +msgid "Remove Log" +msgstr "Удалить Запись" + +#, fuzzy +#~ msgid "5 seconds" +#~ msgstr "1 секунда" + +#, fuzzy +#~ msgid "5 minutes" +#~ msgstr "1 минута" + +#~ msgid "RMS: " +#~ msgstr "Среднее Квадратичное: " + +# This is quite long, may abbreviate to "Сред." or even "Ср." +#~ msgid "AVG : " +#~ msgstr "Среднее: " diff --git a/po/rw.po b/po/rw.po new file mode 100644 index 0000000..7602da4 --- /dev/null +++ b/po/rw.po @@ -0,0 +1,119 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-08-21 00:30-0400\n" +"PO-Revision-Date: 2008-08-27 11:49+0200\n" +"Last-Translator: \n" +"Language-Team: LANGUAGE <LL@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Translate Toolkit 1.0.1\n" + +#: activity/activity.info:2 +msgid "Measure" +msgstr "Gupima" + +#: drawWaveform.py:205 drawWaveform.py:260 +msgid "Spectrum value" +msgstr "Spectrum value" + +#: drawWaveform.py:330 +msgid "RMS : " +msgstr "RMS : " + +#: drawWaveform.py:330 +msgid "AVG : " +msgstr "AVG : " + +#: drawWaveform.py:331 +msgid "Scale:" +msgstr "Ihindurangano :" + +#: drawWaveform.py:332 +msgid "X Axis: " +msgstr "X Axis: " + +#: drawWaveform.py:332 +msgid "Y Axis : " +msgstr "Y Axis : " + +#: electrical_ui.py:38 electrical_ui.py:151 +msgid "Click for DC" +msgstr "Kanda kubwa DC" + +#: electrical_ui.py:50 electrical_ui.py:172 +msgid "Click for Bias Off" +msgstr "Click for Bias Off" + +#: electrical_ui.py:61 electrical_ui.py:192 +msgid "Click for Frequency base" +msgstr "Kanda kubwa ferekanse fatizo" + +#: electrical_ui.py:116 electrical_ui.py:256 +msgid "Pause" +msgstr "Hagarika by`akanya gato" + +#: electrical_ui.py:126 electrical_ui.py:203 +msgid "Show values" +msgstr "Erekana agaciro" + +#: electrical_ui.py:141 +msgid "Click for AC" +msgstr "Kanda kubwa AC" + +#: electrical_ui.py:163 +msgid "Click for Bias On" +msgstr "Click for Bias On" + +#: electrical_ui.py:183 +msgid "Click for Time base" +msgstr "Kanda kubw`igihe fatizo" + +#: electrical_ui.py:212 +msgid "Hide values" +msgstr "agaciro Gahishwe" + +#: electrical_ui.py:249 +msgid "Resume" +msgstr "Gusubukura" + +#: logging_ui.py:44 logging_ui.py:50 +msgid "Snapshot" +msgstr "Snapshot" + +#: logging_ui.py:44 +msgid "1 second" +msgstr "Isegonda rimwe" + +#: logging_ui.py:44 +msgid "1 minute" +msgstr "Umunota umwe" + +#: logging_ui.py:44 +msgid "1 hour" +msgstr "Isaha imwe" + +#: logging_ui.py:68 logging_ui.py:144 +msgid "Start Logging" +msgstr "Tangira Winjire" + +#: logging_ui.py:82 logging_ui.py:167 +msgid "Show Log" +msgstr "erekana Log" + +#: logging_ui.py:134 +msgid "Stop Logging" +msgstr "Sigaho Kwinjira" + +#: logging_ui.py:159 +msgid "Remove Log" +msgstr "Kuraho Log" + +#~ msgid "Show sheet and graphs" +#~ msgstr "Kwerekana urupapuro n'ibishushanyo" diff --git a/po/te.po b/po/te.po new file mode 100644 index 0000000..487dc8d --- /dev/null +++ b/po/te.po @@ -0,0 +1,137 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-08-21 00:30-0400\n" +"PO-Revision-Date: 2008-07-24 14:34+0100\n" +"Last-Translator: Satyanarayana Murthy Saladi <saladism@gmail.com>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Pootle 1.1.0rc2\n" + +#: activity/activity.info:2 +msgid "Measure" +msgstr "కొలువు" + +#: drawWaveform.py:205 drawWaveform.py:260 +msgid "Spectrum value" +msgstr "పటలము విలువ" + +#: drawWaveform.py:330 +msgid "RMS : " +msgstr "అర్ ఎం ఎస్ : " + +#: drawWaveform.py:330 +msgid "AVG : " +msgstr "ఎవిజి :" + +#: drawWaveform.py:331 +msgid "Scale:" +msgstr "కొలమానం:" + +#: drawWaveform.py:332 +msgid "X Axis: " +msgstr "ఎక్స్(X) అక్షం: " + +#: drawWaveform.py:332 +msgid "Y Axis : " +msgstr "వై(Y) అక్షం: " + +#: electrical_ui.py:38 electrical_ui.py:151 +msgid "Click for DC" +msgstr "డిసీ (DC) కొరకై నొక్కుము" + +#: electrical_ui.py:50 electrical_ui.py:172 +msgid "Click for Bias Off" +msgstr "బయాస్ నిలుపు చేయుటకై నొక్కుము" + +#: electrical_ui.py:61 electrical_ui.py:192 +msgid "Click for Frequency base" +msgstr "ఫ్రీక్వెంసీ మూలం కొరకై నొక్కుము" + +#: electrical_ui.py:116 electrical_ui.py:256 +msgid "Pause" +msgstr "నిలుపు" + +#: electrical_ui.py:126 electrical_ui.py:203 +msgid "Show values" +msgstr "విలువలను చూపు" + +#: electrical_ui.py:141 +msgid "Click for AC" +msgstr "ఎసీ (AC) కొరకై నొక్కుము" + +#: electrical_ui.py:163 +msgid "Click for Bias On" +msgstr "బయాస్ ఆన్ చేయుటకై నొక్కుము" + +#: electrical_ui.py:183 +msgid "Click for Time base" +msgstr "కాలం మూలం కొరకై నొక్కుము" + +#: electrical_ui.py:212 +msgid "Hide values" +msgstr "విలువలను దాచు" + +#: electrical_ui.py:249 +msgid "Resume" +msgstr "పునరారంభించు" + +#: logging_ui.py:44 logging_ui.py:50 +msgid "Snapshot" +msgstr "క్లుప్తంగా చూపు" + +#: logging_ui.py:44 +msgid "1 second" +msgstr "1 సెకను" + +#: logging_ui.py:44 +msgid "1 minute" +msgstr "1 నిమిషము" + +#: logging_ui.py:44 +msgid "1 hour" +msgstr "1 గంట" + +#: logging_ui.py:68 logging_ui.py:144 +msgid "Start Logging" +msgstr "గమనించు" + +#: logging_ui.py:82 logging_ui.py:167 +msgid "Show Log" +msgstr "గమనిక చూపు" + +#: logging_ui.py:134 +msgid "Stop Logging" +msgstr "గమనించటం నిలిపి వేయి" + +#: logging_ui.py:159 +msgid "Remove Log" +msgstr "గమనిక తీసివేయి" + +#~ msgid "Show sheet and graphs" +#~ msgstr "గ్రాఫులు చూపు" + +#~ msgid "Show waveform" +#~ msgstr "తరంగాన్నిచూపు" + +#~ msgid "Resistance Sensor" +#~ msgstr "రెసిస్టాంశ్ శెన్సర్" + +#~ msgid "Voltage Sensor" +#~ msgstr "వోల్టేజీ శెన్సర్" + +#~ msgid "Picture" +#~ msgstr "బొమ్మ" + +#~ msgid "5 seconds" +#~ msgstr "5 సెకనులు" + +#~ msgid "5 minutes" +#~ msgstr "5 నిమిషములు" diff --git a/po/th.po b/po/th.po new file mode 100644 index 0000000..d41ae45 --- /dev/null +++ b/po/th.po @@ -0,0 +1,131 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-08-21 00:30-0400\n" +"PO-Revision-Date: 2007-12-11 16:45+0000\n" +"Last-Translator: Hugh Thaweesak Koanantakool <htk999@gmail.com>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Pootle 1.0.2\n" + +#: activity/activity.info:2 +msgid "Measure" +msgstr "วัดค่า" + +# correction +#: drawWaveform.py:205 drawWaveform.py:260 +msgid "Spectrum value" +msgstr "ค่าสเป็กตรัม" + +#: drawWaveform.py:330 +msgid "RMS : " +msgstr "ค่าอาร์เอ็มเอส_ _ _: _" + +#: drawWaveform.py:330 +msgid "AVG : " +msgstr "ค่าเฉลี่ย_ _ _: _" + +#: drawWaveform.py:331 +msgid "Scale:" +msgstr "มาตราส่วน:" + +#: drawWaveform.py:332 +msgid "X Axis: " +msgstr "แกน X: _" + +#: drawWaveform.py:332 +msgid "Y Axis : " +msgstr "แกน Y: _" + +#: electrical_ui.py:38 electrical_ui.py:151 +msgid "Click for DC" +msgstr "กดเพื่อใช้กระแสตรง" + +#: electrical_ui.py:50 electrical_ui.py:172 +msgid "Click for Bias Off" +msgstr "กดเพื่อปิดไบแอส" + +#: electrical_ui.py:61 electrical_ui.py:192 +msgid "Click for Frequency base" +msgstr "กดเพื่อใช้ฐานความถี่" + +#: electrical_ui.py:116 electrical_ui.py:256 +msgid "Pause" +msgstr "พัก" + +#: electrical_ui.py:126 electrical_ui.py:203 +msgid "Show values" +msgstr "แสดงค่า" + +#: electrical_ui.py:141 +msgid "Click for AC" +msgstr "กดเพื่อใช้กระแสสลับ" + +#: electrical_ui.py:163 +msgid "Click for Bias On" +msgstr "กดเพื่อเปิดไบแอส" + +#: electrical_ui.py:183 +msgid "Click for Time base" +msgstr "กดเพื่อใช้ฐานเวลา" + +#: electrical_ui.py:212 +msgid "Hide values" +msgstr "ซ่อนค่า" + +#: electrical_ui.py:249 +msgid "Resume" +msgstr "ทำต่อ" + +#: logging_ui.py:44 logging_ui.py:50 +msgid "Snapshot" +msgstr "บันทึกภาพ" + +#: logging_ui.py:44 +msgid "1 second" +msgstr "1 วินาที" + +#: logging_ui.py:44 +msgid "1 minute" +msgstr "1 นาที" + +#: logging_ui.py:44 +msgid "1 hour" +msgstr "1 ชั่วโมง" + +#: logging_ui.py:68 logging_ui.py:144 +msgid "Start Logging" +msgstr "เริ่มบันทึกค่า" + +#: logging_ui.py:82 logging_ui.py:167 +msgid "Show Log" +msgstr "แสดงค่าที่บันทึกไว้" + +#: logging_ui.py:134 +msgid "Stop Logging" +msgstr "หยุดการบันทึกค่า" + +#: logging_ui.py:159 +msgid "Remove Log" +msgstr "ลบค่าที่บันทึกไว้" + +#, fuzzy +#~ msgid "5 seconds" +#~ msgstr "1 วินาที" + +#, fuzzy +#~ msgid "5 minutes" +#~ msgstr "1 นาที" + +#~ msgid "RMS: " +#~ msgstr "อาร์เอ็มเอส:_" + +#~ msgid "AVG : " +#~ msgstr "ค่าเฉลี่ย :_" diff --git a/po/ur.po b/po/ur.po new file mode 100644 index 0000000..f3ca807 --- /dev/null +++ b/po/ur.po @@ -0,0 +1,153 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-08-21 00:30-0400\n" +"PO-Revision-Date: 2008-04-14 02:15-0400\n" +"Last-Translator: Huda Sarfraz <huda.sarfraz@nu.edu.pk>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Pootle 1.1.0rc2\n" + +#: activity/activity.info:2 +msgid "Measure" +msgstr "ناپیں" + +#: drawWaveform.py:205 drawWaveform.py:260 +msgid "Spectrum value" +msgstr "سپیکٹرم قدر" + +#: drawWaveform.py:330 +msgid "RMS : " +msgstr "RMS _ _ _: _" + +#: drawWaveform.py:330 +msgid "AVG : " +msgstr "AVG _ _ _: _" + +#: drawWaveform.py:331 +msgid "Scale:" +msgstr " پيمانہ:" + +#: drawWaveform.py:332 +msgid "X Axis: " +msgstr "X محور: _" + +#: drawWaveform.py:332 +msgid "Y Axis : " +msgstr "Y محور: _" + +#: electrical_ui.py:38 electrical_ui.py:151 +msgid "Click for DC" +msgstr "DC کے لئے کلک کريں" + +#: electrical_ui.py:50 electrical_ui.py:172 +msgid "Click for Bias Off" +msgstr "بائيس بند کرنے کے ليے کلک کريں" + +#: electrical_ui.py:61 electrical_ui.py:192 +msgid "Click for Frequency base" +msgstr "تعدد اساس کے ليے کلک کريں" + +#: electrical_ui.py:116 electrical_ui.py:256 +msgid "Pause" +msgstr "روکیں" + +#: electrical_ui.py:126 electrical_ui.py:203 +msgid "Show values" +msgstr "قدر ديکھائيں" + +#: electrical_ui.py:141 +msgid "Click for AC" +msgstr "AC کے ليے کلک کريں" + +#: electrical_ui.py:163 +msgid "Click for Bias On" +msgstr "بائيس چلانے کے ليے کلک کريں" + +#: electrical_ui.py:183 +msgid "Click for Time base" +msgstr "وقت اساس کے ليے کلک کريں" + +#: electrical_ui.py:212 +msgid "Hide values" +msgstr "قدریں چھپائيں" + +#: electrical_ui.py:249 +msgid "Resume" +msgstr "دوبارہ سے شروع کریں" + +#: logging_ui.py:44 logging_ui.py:50 +msgid "Snapshot" +msgstr "فوری تصوير" + +#: logging_ui.py:44 +msgid "1 second" +msgstr "1 سيکنڈ" + +#: logging_ui.py:44 +msgid "1 minute" +msgstr "1 منٹ" + +#: logging_ui.py:44 +msgid "1 hour" +msgstr "1 گھنٹہ" + +#: logging_ui.py:68 logging_ui.py:144 +msgid "Start Logging" +msgstr "لاگ کرنا شروع کريں" + +#: logging_ui.py:82 logging_ui.py:167 +msgid "Show Log" +msgstr "لاگ ديکھائيں" + +#: logging_ui.py:134 +msgid "Stop Logging" +msgstr "لاگ کرنا روک دیں" + +#: logging_ui.py:159 +msgid "Remove Log" +msgstr "لاگ ہٹائيں" + +#~ msgid "Show sheet and graphs" +#~ msgstr "شيٹ اور گراف دکھائيں" + +#~ msgid "Show waveform" +#~ msgstr "ويو فارم دکھائيں" + +#~ msgid "Time base" +#~ msgstr "وقت بيس" + +#~ msgid "Frequency base" +#~ msgstr "تعدد بیس" + +#~ msgid "Resistance Sensor" +#~ msgstr "رزسٹنس سینسر" + +#~ msgid "Voltage Sensor" +#~ msgstr "وولٹیج سینسر" + +#~ msgid "Picture" +#~ msgstr "تصویر" + +#~ msgid "5 seconds" +#~ msgstr "5 سيکنڈ" + +#~ msgid "5 minutes" +#~ msgstr "5 منٹ" + +#~ msgid "Spectral power" +#~ msgstr "سپيکٹريل پاور" + +#~ msgid "RMS: " +#~ msgstr "RMS:_ " + +#~ msgid "AVG : " +#~ msgstr "AVG:_" diff --git a/po/yo.po b/po/yo.po new file mode 100644 index 0000000..f58cfdc --- /dev/null +++ b/po/yo.po @@ -0,0 +1,117 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-08-21 00:30-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Translate Toolkit 1.0.1\n" + +#: activity/activity.info:2 +msgid "Measure" +msgstr "" + +#: drawWaveform.py:205 drawWaveform.py:260 +msgid "Spectrum value" +msgstr "" + +#: drawWaveform.py:330 +msgid "RMS : " +msgstr "" + +#: drawWaveform.py:330 +msgid "AVG : " +msgstr "" + +#: drawWaveform.py:331 +msgid "Scale:" +msgstr "" + +#: drawWaveform.py:332 +msgid "X Axis: " +msgstr "" + +#: drawWaveform.py:332 +msgid "Y Axis : " +msgstr "" + +#: electrical_ui.py:38 electrical_ui.py:151 +msgid "Click for DC" +msgstr "" + +#: electrical_ui.py:50 electrical_ui.py:172 +msgid "Click for Bias Off" +msgstr "" + +#: electrical_ui.py:61 electrical_ui.py:192 +msgid "Click for Frequency base" +msgstr "" + +#: electrical_ui.py:116 electrical_ui.py:256 +msgid "Pause" +msgstr "" + +#: electrical_ui.py:126 electrical_ui.py:203 +msgid "Show values" +msgstr "" + +#: electrical_ui.py:141 +msgid "Click for AC" +msgstr "" + +#: electrical_ui.py:163 +msgid "Click for Bias On" +msgstr "" + +#: electrical_ui.py:183 +msgid "Click for Time base" +msgstr "" + +#: electrical_ui.py:212 +msgid "Hide values" +msgstr "" + +#: electrical_ui.py:249 +msgid "Resume" +msgstr "" + +#: logging_ui.py:44 logging_ui.py:50 +msgid "Snapshot" +msgstr "" + +#: logging_ui.py:44 +msgid "1 second" +msgstr "" + +#: logging_ui.py:44 +msgid "1 minute" +msgstr "" + +#: logging_ui.py:44 +msgid "1 hour" +msgstr "" + +#: logging_ui.py:68 logging_ui.py:144 +msgid "Start Logging" +msgstr "" + +#: logging_ui.py:82 logging_ui.py:167 +msgid "Show Log" +msgstr "" + +#: logging_ui.py:134 +msgid "Stop Logging" +msgstr "" + +#: logging_ui.py:159 +msgid "Remove Log" +msgstr "" diff --git a/sensor_toolbar.py b/sensor_toolbar.py new file mode 100644 index 0000000..6fa643e --- /dev/null +++ b/sensor_toolbar.py @@ -0,0 +1,240 @@ +#! /usr/bin/python +# +# Author: Arjun Sarwal arjun@laptop.org +# Copyright (C) 2007, OLPC +# +# +# 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 pygtk +import gtk +import time +from gettext import gettext as _ + +import config #This has all the globals + +from sugar.graphics.toolbutton import ToolButton +from sugar.graphics.toolbutton import ToolButton +from sugar.graphics.combobox import ComboBox +from sugar.graphics.toolcombobox import ToolComboBox +from sugar import profile + +# 'Sensor' toolbar class +class SensorToolbar(gtk.Toolbar): + + def __init__(self, audiograb, textbox, journal): + + gtk.Toolbar.__init__(self) + + self._STR_BASIC = _("Sensors, DC (connect sensor to pink 'Mic In' on left side of XO) ") + self._STR1 = _("Bias/Offset Enabled ") + self._STR2 = _("Bias/Offset Disabled ") + + self.gain_state = None + self.boost_state = None + + self.string_for_textbox = "" + + self._LOG_SEPARATOR_DIST = 20 + + + self.ag = audiograb + self.textbox_copy = textbox + self.ji = journal + + self.logging_status = False + + #######################Resistance##################### + self._resistance = ToolButton('bias-on2') + self.insert(self._resistance, -1) + self._resistance.show() + self._resistance.set_tooltip(_('Resistance Sensor')) + self._resistance.connect('clicked', self.set_resistance_voltage_mode, 'resistance') + ################################################### + + #######################Voltage######################## + self._voltage = ToolButton('bias-off') + self.insert(self._voltage, -1) + self._voltage.show() + self._voltage.set_tooltip(_('Voltage Sensor')) + self._voltage.connect('clicked', self.set_resistance_voltage_mode, 'voltage') + #################################################### + + + for seperator_count_temp in range( 1, self._LOG_SEPARATOR_DIST): + separator = gtk.SeparatorToolItem() + separator.set_draw(False) + self.insert(separator, -1) + + self.loginterval_img = gtk.Image() + 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##################### + self._loginterval_combo = ComboBox() + self.interval = [_('1 second') , _('30 seconds'), _('5 minutes'), _('30 minutes')] + + 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) + if s == _('1 second'): + self._loginterval_combo.set_active(i) + + self._loginterval_tool = ToolComboBox(self._loginterval_combo) + self.insert(self._loginterval_tool,-1) + self._loginterval_tool.show() + self.logginginterval_status = '1second' + ############################################################ + + #######################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 + a logging session, or just logs the current buffer""" + + # config.LOGGING_IN_SESSION appears to be a duplicate of + # self.logging_status. + # + if config.LOGGING_IN_SESSION == False: + Xscale = (1.00/self.ag.get_sampling_rate()) + Yscale = 0.0 + interval = self.interval_convert() + username = profile.get_nick_name() + self.ji.start_new_session(username, Xscale, Yscale, self.logginginterval_status) + self.ag.set_logging_params(True, interval, False) + config.LOGGING_IN_SESSION = True + self.logging_status = True + + self._record.set_icon('media-playback-stop') + self._record.show() + self._record.set_tooltip(_('Stop Recording')) + else: + if self.logging_status == True: + self.ag.set_logging_params(False) + time.sleep(0.2) + self.ji.stop_session() + config.LOGGING_IN_SESSION = False + self.logging_status = False + + self._record.set_icon('media-record') + self._record.show() + self._record.set_tooltip(_('Start Recording')) + + + def interval_convert(self): + """Converts picture/1second/5seconds/1minute/5minutes 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""" + if self.logginginterval_status == '1second': + return 89 + elif self.logginginterval_status == '30second': + return 2667 + elif self.logginginterval_status == '5minute': + return 26667 + 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 = '1second' + if (self._loginterval_combo.get_active() == 1): + self.logginginterval_status = '30second' + if (self._loginterval_combo.get_active() == 2): + self.logginginterval_status = '5minute' + if (self._loginterval_combo.get_active() == 3): + self.logginginterval_status = '30minute' + + + + def set_resistance_voltage_mode(self, data=None, mode_to_set='resistance'): + if mode_to_set == 'resistance' and self.get_mode()=='voltage' : + self.set_mode('resistance') + self._resistance.set_icon('bias-on2') + self._voltage.set_icon('bias-off') + self._resistance.show() + self._voltage.show() + self._update_string_for_textbox() + return False + + if mode_to_set == 'voltage' and self.get_mode()=='resistance' : + self.set_mode('voltage') + self._resistance.set_icon('bias-on') + self._voltage.set_icon('bias-off2') + self._resistance.show() + self._voltage.show() + self._update_string_for_textbox() + return False + return False + + + def get_mode(self): + if self.ag.get_bias()==False and self.ag.get_dc_mode()==True : + return 'voltage' + elif self.ag.get_bias()==True and self.ag.get_dc_mode()==True : + return 'resistance' + else: + return 'error' + + + def set_mode(self, mode='resistance'): + if mode=='resistance': + self.ag.set_bias(True) + else: + self.ag.set_bias(False) + return + + + def context_off(self): + self.ag.pause_grabbing() + + def context_on(self): + self.ag.resume_grabbing() + self.ag.set_dc_mode(True) + self.ag.set_bias(True) + self._update_string_for_textbox() + #self.gain_state = self.ag.get_capture_gain() + #self.boost_state = self.ag.get_mic_boost() + self.ag.set_capture_gain(0) + self.ag.set_mic_boost(False) + + + def _update_string_for_textbox(self): + self.string_for_textbox = "" + self.string_for_textbox += (self._STR_BASIC + "\n") + if self.ag.get_bias() == True: + self.string_for_textbox += self._STR1 + else: + self.string_for_textbox += self._STR2 + self.textbox_copy.set_data_params(0, self.string_for_textbox) + + + diff --git a/sheet.py b/sheet.py new file mode 100755 index 0000000..6194989 --- /dev/null +++ b/sheet.py @@ -0,0 +1,102 @@ +"""import gtk +from gtk import gdk +import pygtk +import matplotlib +matplotlib.use('GTKAgg') # or 'GTK' +from matplotlib.backends.backend_gtk import FigureCanvasGTK as FigureCanvas +from matplotlib.figure import Figure +from numpy.random import random + + +class Sheet(gtk.DrawingArea): + + def __init__(self, filepath, journal): + gtk.DrawingArea.__init__(self) + + self.filepath = filepath + self.ji = journal + self.numpy_arrays = [] + + self.numRows = 0 + self.numCols = 0 + self.set_rows_and_cols() + + self.vbox = gtk.VBox(False, 8) + + self.sw = gtk.ScrolledWindow() + self.sw.set_shadow_type(gtk.SHADOW_ETCHED_IN) + self.sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) + + model = self.create_model() + self.treeview = gtk.TreeView(model) + self.treeview.set_rules_hint(True) + + # matplotlib stuff + fig = Figure(figsize=(6,4)) + self.canvas = FigureCanvas(fig) # a gtk.DrawingArea + self.sw_canvas = gtk.ScrolledWindow() + self.sw_canvas.set_shadow_type(gtk.SHADOW_ETCHED_IN) + self.sw_canvas.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) + self.sw_canvas.add_with_viewport(self.canvas) + self.vbox.pack_start(self.sw_canvas,True, True) + + + ax = fig.add_subplot(111) + self.line, = ax.plot(self.data[0,:], 'go') # plot the first row + self.treeview.connect('row-activated', self.plot_row) + self.sw.add_with_viewport(self.treeview) + + label = gtk.Label('Double click a row to plot the data') + self.vbox.pack_start(label, False, False) + + self.vbox.pack_start(self.sw, True, True) + self.sw.set_size_request(100,100) + self.treeview.set_size_request(100,100) + + self.add_columns() + + self.add_events(gdk.BUTTON_PRESS_MASK | gdk.KEY_PRESS_MASK | gdk.KEY_RELEASE_MASK) + self.show_all() + + + + self.sw_canvas.set_size_request(100,100) + + + def set_rows_and_cols(self): + """Sets the rows and columns""" + self.numRows = self.ji.get_number_of_records() + self.numCols = self.ji.get_number_of_cols() + + + + def plot_row(self, treeview, path, view_column): + ind, = path # get the index into data + points = self.data[ind,:] + self.line.set_ydata(points) + self.canvas.draw() + + + def add_columns(self): + for i in range(self.numCols): + column = gtk.TreeViewColumn('%d'%i, gtk.CellRendererText(), text=i) + self.treeview.append_column(column) + + + def create_model(self): + types = [float]*self.numCols + store = gtk.ListStore(*types) + + for row in self.data: + store.append(row) + return store +""" + + def read_all_records(self): + """Reads the complete csv file into the gtk Tree view""" + self.data = self.ji.get_all_records() ##This, for now gets just all the numerical values + + + def draw_dotted_plot(self): + """Draws the dotted plot""" + diff --git a/sheet_ui.py b/sheet_ui.py new file mode 100755 index 0000000..ce90e6b --- /dev/null +++ b/sheet_ui.py @@ -0,0 +1,46 @@ +""" +import pygtk +import gtk +import gobject +from gettext import gettext as _ + + +import config #This has all the globals + +from sugar.activity.activity import ActivityToolbox, EditToolbar +from sugar.graphics.toolcombobox import ToolComboBox +from sugar.graphics.toolbutton import ToolButton +from sugar.graphics.toggletoolbutton import ToggleToolButton +from sugar.graphics.combobox import ComboBox +from sugar.graphics.menuitem import MenuItem + +class SheetToolbar(gtk.Toolbar): + + def __init__(self, sheet, activity): + + gtk.Toolbar.__init__(self) + + self.activity = activity + + self._sheet_show = ToolButton('media-record') + self.insert(self._sheet_show, -1) + self._sheet_show.show() + self._sheet_show.set_tooltip(_('Show sheet and graphs')) + self._sheet_show.connect('clicked', self.sheet_show_control) + self.show_window = 'wave' #other is sheet + + """ + def sheet_show_control(self, data=None): + """Controls whether to show the real time waveform or the sheet+graph interface""" + if self.show_window=='sheet': + self.activity.set_show_hide_windows(0) + self._sheet_show.set_tooltip(_('Show sheet and graphs')) + self.show_window='wave' + return + elif self.show_window=='wave': + self.activity.set_show_hide_windows(1) + self._sheet_show.set_tooltip(_('Show waveform')) + self.show_window='sheet' + return + + diff --git a/sound_toolbar.py b/sound_toolbar.py new file mode 100644 index 0000000..589698e --- /dev/null +++ b/sound_toolbar.py @@ -0,0 +1,355 @@ +#! /usr/bin/python +# +# Author: Arjun Sarwal arjun@laptop.org +# Copyright (C) 2007, OLPC +# +# +# 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 pygst +pygst.require("0.10") +import pygtk +import gtk +import os +import gobject +from time import * +from gettext import gettext as _ + +import config #This has all the globals +import audioop + +from sugar.graphics.toolbutton import ToolButton +from sugar.graphics.combobox import ComboBox +from sugar.graphics.toolcombobox import ToolComboBox + + +class SoundToolbar(gtk.Toolbar): + + def __init__(self, wave, audiograb, textbox, journal, activity): + + gtk.Toolbar.__init__(self) + + self.wave_copy = wave + self.audiograb_copy = audiograb + self.textbox_copy = textbox + self.ji = journal + self.activity = activity + + self._LOG_SEPARATOR_DIST = 10 + + self._STR_BASIC = _("Sound ") + self._STR1 = _("Time Base ") + self._STR2 = _("Frequency Base ") + self._STR_SCALEX = "" + self._STR_XAXIS1 = _("X Axis Scale: 1 division = ") + self._STR_XAXIS2 = _("ms ") + self._STR_XAXIS3 = _("Hz ") + + + self.string_for_textbox = "" + + self.g = 1.0 + self.y_mag = 3.0 + self.capture_gain = config.CAPTURE_GAIN + self.mic_boost = config.MIC_BOOST + + self.logging_status = False + + #######################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###################### + self._freq = ToolButton('domain-freq') + self.insert(self._freq, -1) + self._freq.show() + self._freq.set_tooltip(_('Frequency base')) + self._freq.connect('clicked', self._timefreq_control_cb, False) + #################################################### + + #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.freq_low_img = gtk.Image() + self.freq_high_img = gtk.Image() + + self.freq_low_img.set_from_file(config.ICONS_DIR + '/freq-high.svg') + self.freq_high_img.set_from_file(config.ICONS_DIR + '/freq-low.svg') + + self.freq_low_img_tool = gtk.ToolItem() + self.freq_high_img_tool = gtk.ToolItem() + + self.freq_low_img_tool.add(self.freq_low_img) + self.freq_high_img_tool.add(self.freq_high_img) + + + #######################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._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) + self.insert(self.freq_high_img_tool,-1) + + self.freq_low_img.show() + self.freq_high_img.show() + + self.freq_low_img_tool.show() + self.freq_high_img_tool.show() + + #######################pause button###################### + self._pause = ToolButton('media-playback-pause') + self.insert(self._pause, -1) + self._pause.show() + self._pause.set_tooltip(_('Freeze the display')) + self._pause.connect('clicked', self._pauseplay_control_cb) + #################################################### + + for seperator_count_temp in range( 1, self._LOG_SEPARATOR_DIST): + separator = gtk.SeparatorToolItem() + separator.set_draw(False) + self.insert(separator, -1) + + + self.loginterval_img = gtk.Image() + 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##################### + self._loginterval_combo = ComboBox() + self.interval = [_('Now'), _('30 seconds') , _('2 minutes'), _('10 minutes') , _('30 minutes') ] + + 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) + if s == 'Now': + self._loginterval_combo.set_active(i) + + self._loginterval_tool = ToolComboBox(self._loginterval_combo) + self.insert(self._loginterval_tool,-1) + self._loginterval_tool.show() + self.logginginterval_status = 'picture' + ############################################################ + + #######################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 + a logging session, or just logs the current buffer""" + if config.LOGGING_IN_SESSION == False: + interval = self.interval_convert() + self.audiograb_copy.set_logging_params(True, interval, True) + config.LOGGING_IN_SESSION = True + self.logging_status = True + 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() + self._record.set_tooltip(_('Start Recording')) + self.record_state = False + config.LOGGING_IN_SESSION = False + self.logging_status = False + else: + if self.logging_status == True: + self.audiograb_copy.set_logging_params(False) + config.LOGGING_IN_SESSION = False + self.logging_status = False + self._record.set_icon('media-record') + 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. + When set to 0, the whole of current buffer will be written + 1second= about 66 ticks at 48khz sampling""" + if self.logginginterval_status == 'picture': + return 0 + elif self.logginginterval_status == '30second': + return 2667 + elif self.logginginterval_status == '2minute': + return 10668 + elif self.logginginterval_status == '10minute': + 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' + if (self._loginterval_combo.get_active() == 1): + self.logginginterval_status = '30second' + if (self._loginterval_combo.get_active() == 2): + self.logginginterval_status = '2minute' + if (self._loginterval_combo.get_active() == 3): + self.logginginterval_status = '10minute' + 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: + 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') + self._freq.set_icon('domain-freq') + self._time.show() + 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') + self._freq.set_icon('domain-freq2') + self._time.show() + self._freq.show() + self._update_string_for_textbox() + return False + + 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 + 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 + + + def context_off(self): + """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() + self.audiograb_copy.set_dc_mode(False) + self.audiograb_copy.set_bias(True) + self.audiograb_copy.set_capture_gain(self.capture_gain) + self.audiograb_copy.set_mic_boost(self.mic_boost) + self.wave_copy.set_fft_mode(False) + 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 = "" + self.string_for_textbox += (self._STR_BASIC + "\t") + if self.wave_copy.get_fft_mode() == False: + self.string_for_textbox += self._STR1 + else: + self.string_for_textbox += self._STR2 + self.string_for_textbox += ("\n" + self._STR_SCALEX) + self.textbox_copy.set_data_params(0, self.string_for_textbox) + diff --git a/textbox.py b/textbox.py new file mode 100644 index 0000000..7ee9885 --- /dev/null +++ b/textbox.py @@ -0,0 +1,81 @@ +import gtk +import pygtk +from gettext import gettext as _ +import gobject + +import config #This has all the globals + +from sugar.graphics.toolbutton import ToolButton + + +# Textbox class +class TextBox: + + def __init__(self): + self.box_main = gtk.HBox() + self.text_buffer = gtk.TextBuffer() + self.text_box = gtk.TextView(self.text_buffer) + self.box_main.pack_start(self.text_box, False, True, 0) + self.box_main.show_all() + #gobject.timeout_add(300, self.refresh_text_box) + + + self._SIZE_X = 1200 + self._SIZE_Y = 50 + + self._data_params = [] + self._data_show_state = [] + + self._set_default_data_params() + self._set_default_data_show_state() + + + def _set_default_data_params(self): + self._data_params.append('Time Scale') + + + + def _set_default_data_show_state(self): + self._data_show_state.append(True) + + + def write_text(self, text_to_show=''): + self.text_buffer.set_text(text_to_show) + self.text_box.set_size_request(self._SIZE_X, self._SIZE_Y) + self.text_box.realize() + + + def refresh_text_box(self): + print "within textbox.py refresh_textbox called" + self._set_final_string() + self.write_text(self._final_string) + return True + + + def _set_final_string(self): + self._final_string = self._data_params[0] + + + + def set_data_params(self, param_id = 0 , value = None): + """ + Updates the parameters to show within the textbox + Param_id String + 0 string from sensors toolbar + + """ + if param_id==0: + self._data_params[0] = value + else: + pass + + + self.refresh_text_box() + + + + def set_data_show_state(self, param_id = 0 , state = True): + self._data_show_state[param_id] = state + + + diff --git a/toolbar_side.py b/toolbar_side.py new file mode 100755 index 0000000..2766158 --- /dev/null +++ b/toolbar_side.py @@ -0,0 +1,65 @@ +#! /usr/bin/python +import pygtk +import gtk +import os + +import config #This has all the globals + + +class SideToolbar(gtk.DrawingArea): + + def __init__(self, wave): + gtk.DrawingArea.__init__(self) + + self.wave_copy = wave + self.show_toolbar = True + + self.adjustmenty = gtk.Adjustment(3.0, 0.0, 4.0 ,0.1, 0.1, 0.0) + self.adjustmenty.connect("value_changed", self.cb_page_sizey,\ + self.adjustmenty) + self.yscrollbar = gtk.VScale(self.adjustmenty) + self.yscrollbar.set_draw_value(False) + self.yscrollbar.set_inverted(True) + self.yscrollbar.set_update_policy(gtk.UPDATE_CONTINUOUS) + + self.img_amphigh = gtk.Image() + self.img_amplow = gtk.Image() + + self.img_amphigh.set_from_file(config.ICONS_DIR + '/amp-high.svg') + self.img_amplow.set_from_file(config.ICONS_DIR + '/amp-low.svg') + + self.box1 = gtk.VBox(False,0) + self.box1.pack_start(self.img_amphigh, False, True, 0) + self.box1.pack_start(self.yscrollbar, True, True, 0) + self.box1.pack_start(self.img_amplow, False, True, 0) + + ##test + self.set_show_hide(False) + + + def cb_page_sizey(self, get, data=None): + if(get.value<=1.5): + self.wave_copy.y_mag= get.value + os.system("amixer set 'Capture' 50%, 0% unmute captur") + self.wave_copy.g = 1 #0dB + if(get.value>1.5 and get.value<=2.5 ): + self.wave_copy.y_mag= (get.value*1.5) + os.system("amixer set 'Capture' 50%, 25% unmute captur") + self.wave_copy.g = 1.9952 #6dB + if(get.value>2.5 and get.value<=3.5 ): + self.wave_copy.y_mag= (get.value*3) + os.system("amixer set 'Capture' 50%, 50% unmute captur") + self.wave_copy.g = 3.981 #12dB + if(get.value>3.5 and get.value<=4.0 ): + self.wave_copy.y_mag= (get.value*4) + os.system("amixer set 'Capture' 50%, 100% unmute captur") + self.wave_copy.g = 13.335 #22.5dB + return True + + + def set_show_hide(self, show=True): + self.show_toolbar = show + #self.yscrollbar.show(self.show_toolbar) + + def get_show_hide(self): + return self.show_toolbar diff --git a/toolbar_top.py b/toolbar_top.py new file mode 100755 index 0000000..f8996a6 --- /dev/null +++ b/toolbar_top.py @@ -0,0 +1,121 @@ +#! /usr/bin/python +# +# Author: Arjun Sarwal arjun@laptop.org +# Copyright (C) 2007, OLPC +# +# +# 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 pygtk +import gtk +import time + +import config + +from sugar.activity.activity import ActivityToolbox + +from sound_toolbar import SoundToolbar +from sensor_toolbar import SensorToolbar +from logging_ui import LogToolbar +from gettext import gettext as _ + +class Toolbar(ActivityToolbox): + + def __init__(self, activity, wave, audiograb, journal, textbox): + + ActivityToolbox.__init__(self, activity) + + self._SOUND_TOOLBAR = 1 + self._SENSOR_TOOLBAR = 2 + + self._sound_toolbar = SoundToolbar(wave, audiograb, textbox, journal, activity) + self.add_toolbar(_('Sound'), self._sound_toolbar) + self._sound_toolbar.show() + + self._sensors_toolbar = SensorToolbar(audiograb, textbox, journal) + self.add_toolbar(_('Sensors'), self._sensors_toolbar) + self._sensors_toolbar.show() + + """ + self._camera_toolbar = CameraToolbar(activity, camera_ui) + self.add_toolbar('Camera', self._camera_toolbar) + self._camera_toolbar.show() + + self._wifi_toolbar = MeasureToolbar(wave, audiograb) + self.add_toolbar('Wireless', self._wifi_toolbar) + self._wifi_toolbar.show() + + self._log_toolbar = LogToolbar(audiograb, journal, activity) + self.add_toolbar('Log View', self._log_toolbar) + self._log_toolbar.show() + """ + + self.connect("current-toolbar-changed", self._toolbar_changed_cb) + self.wave = wave + self.activity = activity + self.toolbar_active_id = 1 + self.set_current_toolbar(self._SOUND_TOOLBAR) + + + def _toolbar_changed_cb(self, tbox, num): + if num==0: #Activity + pass + + elif num==self._SOUND_TOOLBAR: #Sound + self.activity.set_show_hide_windows(self._SOUND_TOOLBAR) + self._sensors_toolbar.context_off() + time.sleep(0.5) + self._sound_toolbar.context_on() + config.CONTEXT = self._SOUND_TOOLBAR + + elif num==self._SENSOR_TOOLBAR: #Sensor + self._sound_toolbar.context_off() + time.sleep(0.5) + self._sensors_toolbar.context_on() + self.activity.set_show_hide_windows(self._SENSOR_TOOLBAR) + config.CONTEXT = self._SENSOR_TOOLBAR + + self.toolbar_active_id = num + """ + elif num==3: #Camera + self.activity.set_show_hide_windows(1) + self._sound_toolbar.context_off() + self.wave.set_context_off() + time.sleep(0.5) + self._camera_toolbar.set_context_on() + elif num==4: + self.wave.set_context_off() + self._sound_toolbar.context_off() + self._camera_toolbar.set_context_off() + time.sleep(0.5) + elif num==5: + self.wave.set_context_off() + self._sound_toolbar.context_off() + self._camera_toolbar.set_context_off() + time.sleep(0.5) + """ + return True + + + def get_which_toolbar_active(self): + """Returns which toolbar is active + Activity toolbar - 1 + Sound toolbar - 2 + Sensors toolbar - 3 + """ + return self.toolbar_active_id + + + |