[tuxdroid-svn] r674 - in software/gadgets/settings/trunk: . settings settings/Scripts/Python/GUI/wi
Status: Beta
Brought to you by:
ks156
From: Paul_R <c2m...@c2...> - 2007-11-09 15:56:32
|
Author: Paul_R Date: 2007-11-09 16:23:35 +0100 (Fri, 09 Nov 2007) New Revision: 674 Modified: software/gadgets/settings/trunk/settings.tgf software/gadgets/settings/trunk/settings/Scripts/Python/GUI/widget/other.glade software/gadgets/settings/trunk/settings/Scripts/Python/GUI/widget/other.pyp software/gadgets/settings/trunk/settings/Strings/fr_ALL.xml software/gadgets/settings/trunk/settings/settings.xml software/gadgets/settings/trunk/settings/strings.xml Log: * Added the self test mode. * Added the sleep section. Modified: software/gadgets/settings/trunk/settings/Scripts/Python/GUI/widget/other.glade =================================================================== --- software/gadgets/settings/trunk/settings/Scripts/Python/GUI/widget/other.glade 2007-11-09 15:19:03 UTC (rev 673) +++ software/gadgets/settings/trunk/settings/Scripts/Python/GUI/widget/other.glade 2007-11-09 15:23:35 UTC (rev 674) @@ -72,13 +72,65 @@ <child> <widget class="GtkFixed" id="fixed13"> - <property name="height_request">1</property> + <property name="height_request">0</property> <property name="visible">True</property> <child> + <widget class="GtkLabel" id="lblUsedChannel"> + <property name="width_request">224</property> + <property name="height_request">16</property> + <property name="visible">True</property> + <property name="label" translatable="yes">label5</property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_RIGHT</property> + <property name="wrap">True</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="x">0</property> + <property name="y">45</property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="lblChannel"> + <property name="width_request">152</property> + <property name="height_request">16</property> + <property name="visible">True</property> + <property name="label" translatable="yes">label7</property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">True</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="x">240</property> + <property name="y">45</property> + </packing> + </child> + + <child> <widget class="GtkComboBox" id="cbbWifiChannel"> <property name="width_request">120</property> - <property name="height_request">24</property> + <property name="height_request">29</property> <property name="visible">True</property> <property name="items" translatable="yes"></property> <property name="add_tearoffs">False</property> @@ -92,54 +144,141 @@ </child> <child> - <widget class="GtkEntry" id="txtWifiUsed"> - <property name="width_request">72</property> + <widget class="GtkLabel" id="lblWifiAvoidance"> + <property name="width_request">224</property> + <property name="height_request">16</property> + <property name="visible">True</property> + <property name="label" translatable="yes">label4</property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_RIGHT</property> + <property name="wrap">True</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="x">0</property> + <property name="y">16</property> + </packing> + </child> + </widget> + </child> + </widget> + </child> + + <child> + <widget class="GtkLabel" id="lblConfigWifi"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>frame14</b></property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="type">label_item</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkFrame" id="frame15"> + <property name="border_width">2</property> + <property name="visible">True</property> + <property name="label_xalign">0</property> + <property name="label_yalign">0.5</property> + <property name="shadow_type">GTK_SHADOW_OUT</property> + + <child> + <widget class="GtkAlignment" id="alignment15"> + <property name="visible">True</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xscale">1</property> + <property name="yscale">1</property> + <property name="top_padding">0</property> + <property name="bottom_padding">0</property> + <property name="left_padding">12</property> + <property name="right_padding">0</property> + + <child> + <widget class="GtkFixed" id="fixed14"> + <property name="height_request">0</property> + <property name="visible">True</property> + + <child> + <widget class="GtkCheckButton" id="chkSleepEnable"> + <property name="width_request">280</property> <property name="height_request">24</property> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="editable">True</property> - <property name="visibility">True</property> - <property name="max_length">0</property> - <property name="text" translatable="yes"></property> - <property name="has_frame">True</property> - <property name="invisible_char">●</property> - <property name="activates_default">False</property> + <property name="label" translatable="yes">checkbutton1</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="active">False</property> + <property name="inconsistent">False</property> + <property name="draw_indicator">True</property> + <signal name="toggled" handler="on_chkSleepEnable_toggled" last_modification_time="Wed, 07 Nov 2007 18:30:05 GMT"/> </widget> <packing> - <property name="x">240</property> - <property name="y">40</property> + <property name="x">8</property> + <property name="y">8</property> </packing> </child> <child> - <widget class="GtkEntry" id="txtWifiAvoid"> + <widget class="GtkSpinButton" id="spinSleepDelay"> <property name="width_request">72</property> - <property name="height_request">24</property> + <property name="height_request">26</property> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="editable">True</property> - <property name="visibility">True</property> - <property name="max_length">0</property> - <property name="text" translatable="yes"></property> - <property name="has_frame">True</property> - <property name="invisible_char">●</property> - <property name="activates_default">False</property> + <property name="climb_rate">1</property> + <property name="digits">0</property> + <property name="numeric">False</property> + <property name="update_policy">GTK_UPDATE_ALWAYS</property> + <property name="snap_to_ticks">False</property> + <property name="wrap">False</property> + <property name="adjustment">5 5 240 5 5 5</property> + <signal name="changed" handler="on_spinSleepDelay_changed" last_modification_time="Wed, 07 Nov 2007 18:42:10 GMT"/> </widget> <packing> - <property name="x">240</property> - <property name="y">68</property> + <property name="x">376</property> + <property name="y">40</property> </packing> </child> <child> - <widget class="GtkLabel" id="lblWifiAvoidance"> - <property name="width_request">224</property> - <property name="height_request">16</property> + <widget class="GtkLabel" id="label2"> + <property name="width_request">64</property> + <property name="height_request">25</property> <property name="visible">True</property> - <property name="label" translatable="yes">label4</property> + <property name="label" translatable="yes">minutes.</property> <property name="use_underline">False</property> <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_RIGHT</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> <property name="wrap">True</property> <property name="selectable">False</property> <property name="xalign">0.5</property> @@ -152,17 +291,17 @@ <property name="angle">0</property> </widget> <packing> - <property name="x">0</property> - <property name="y">16</property> + <property name="x">456</property> + <property name="y">40</property> </packing> </child> <child> - <widget class="GtkLabel" id="lblUsedChannel"> - <property name="width_request">224</property> + <widget class="GtkLabel" id="lblSleepDelay"> + <property name="width_request">360</property> <property name="height_request">16</property> <property name="visible">True</property> - <property name="label" translatable="yes">label5</property> + <property name="label" translatable="yes">label1</property> <property name="use_underline">False</property> <property name="use_markup">False</property> <property name="justify">GTK_JUSTIFY_RIGHT</property> @@ -178,17 +317,17 @@ <property name="angle">0</property> </widget> <packing> - <property name="x">0</property> - <property name="y">45</property> + <property name="x">8</property> + <property name="y">44</property> </packing> </child> <child> - <widget class="GtkLabel" id="lblAvoidChannel"> - <property name="width_request">224</property> + <widget class="GtkLabel" id="lblSleepState"> + <property name="width_request">360</property> <property name="height_request">16</property> <property name="visible">True</property> - <property name="label" translatable="yes">label6</property> + <property name="label" translatable="yes">label1</property> <property name="use_underline">False</property> <property name="use_markup">False</property> <property name="justify">GTK_JUSTIFY_RIGHT</property> @@ -204,19 +343,37 @@ <property name="angle">0</property> </widget> <packing> - <property name="x">0</property> + <property name="x">8</property> <property name="y">72</property> </packing> </child> + + <child> + <widget class="GtkButton" id="btnSleep"> + <property name="width_request">160</property> + <property name="height_request">28</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">button1</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <signal name="clicked" handler="on_btnSleep_clicked" last_modification_time="Thu, 08 Nov 2007 08:59:37 GMT"/> + </widget> + <packing> + <property name="x">8</property> + <property name="y">96</property> + </packing> + </child> </widget> </child> </widget> </child> <child> - <widget class="GtkLabel" id="lblConfigWifi"> + <widget class="GtkLabel" id="lblConfigSleep"> <property name="visible">True</property> - <property name="label" translatable="yes"><b>frame14</b></property> + <property name="label" translatable="yes"><b>frame15</b></property> <property name="use_underline">False</property> <property name="use_markup">True</property> <property name="justify">GTK_JUSTIFY_LEFT</property> @@ -244,7 +401,7 @@ </child> <child> - <widget class="GtkFrame" id="frame15"> + <widget class="GtkFrame" id="frame16"> <property name="border_width">2</property> <property name="visible">True</property> <property name="label_xalign">0</property> @@ -252,7 +409,7 @@ <property name="shadow_type">GTK_SHADOW_OUT</property> <child> - <widget class="GtkAlignment" id="alignment15"> + <widget class="GtkAlignment" id="alignment16"> <property name="visible">True</property> <property name="xalign">0.5</property> <property name="yalign">0.5</property> @@ -264,7 +421,7 @@ <property name="right_padding">0</property> <child> - <widget class="GtkFixed" id="fixed14"> + <widget class="GtkFixed" id="fixed15"> <property name="visible">True</property> </widget> </child> @@ -272,9 +429,9 @@ </child> <child> - <widget class="GtkLabel" id="lblConfigSleep"> + <widget class="GtkLabel" id="lblConfigID"> <property name="visible">True</property> - <property name="label" translatable="yes"><b>frame15</b></property> + <property name="label" translatable="yes"><b>frame16</b></property> <property name="use_underline">False</property> <property name="use_markup">True</property> <property name="justify">GTK_JUSTIFY_LEFT</property> @@ -302,7 +459,7 @@ </child> <child> - <widget class="GtkFrame" id="frame16"> + <widget class="GtkFrame" id="frame17"> <property name="border_width">2</property> <property name="visible">True</property> <property name="label_xalign">0</property> @@ -310,7 +467,7 @@ <property name="shadow_type">GTK_SHADOW_OUT</property> <child> - <widget class="GtkAlignment" id="alignment16"> + <widget class="GtkAlignment" id="alignment17"> <property name="visible">True</property> <property name="xalign">0.5</property> <property name="yalign">0.5</property> @@ -322,17 +479,51 @@ <property name="right_padding">0</property> <child> - <widget class="GtkFixed" id="fixed15"> + <widget class="GtkFixed" id="fixed16"> <property name="visible">True</property> + + <child> + <widget class="GtkProgressBar" id="progressbar2"> + <property name="width_request">416</property> + <property name="height_request">20</property> + <property name="visible">True</property> + <property name="orientation">GTK_PROGRESS_LEFT_TO_RIGHT</property> + <property name="fraction">0</property> + <property name="pulse_step">0.10000000149</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + </widget> + <packing> + <property name="x">192</property> + <property name="y">12</property> + </packing> + </child> + + <child> + <widget class="GtkButton" id="btnSelfTest"> + <property name="width_request">160</property> + <property name="height_request">28</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">button2</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <signal name="clicked" handler="on_btnSelfTest_clicked" last_modification_time="Thu, 08 Nov 2007 09:29:07 GMT"/> + </widget> + <packing> + <property name="x">8</property> + <property name="y">8</property> + </packing> + </child> </widget> </child> </widget> </child> <child> - <widget class="GtkLabel" id="lblConfigID"> + <widget class="GtkLabel" id="lblConfigTest"> <property name="visible">True</property> - <property name="label" translatable="yes"><b>frame16</b></property> + <property name="label" translatable="yes"><b>frame17</b></property> <property name="use_underline">False</property> <property name="use_markup">True</property> <property name="justify">GTK_JUSTIFY_LEFT</property> Modified: software/gadgets/settings/trunk/settings/Scripts/Python/GUI/widget/other.pyp =================================================================== --- software/gadgets/settings/trunk/settings/Scripts/Python/GUI/widget/other.pyp 2007-11-09 15:19:03 UTC (rev 673) +++ software/gadgets/settings/trunk/settings/Scripts/Python/GUI/widget/other.pyp 2007-11-09 15:23:35 UTC (rev 674) @@ -5,6 +5,7 @@ from xml.dom.minidom import Document import subprocess import commands +import time class Window(SimpleGladeApp): def __init__(self, @@ -21,6 +22,7 @@ def update(self): self.avoidedchannel = _me.get_param('AvoidChannel') + self.enablesleep = _me.get_param('EnableSleep') self.get_widget('lblTabConfig').set_text(_me.string('lblTabConfig')) self.get_widget('lblTabSound').set_text(_me.string('lblTabSound')) self.get_widget('lblTabVersion').set_text(_me.string('lblTabVersion')) @@ -34,29 +36,39 @@ def ConfigLabelUpdate(self): + #Frame labels self.get_widget('lblConfigWifi').set_text(_me.string('lblConfigWifi')) self.get_widget('lblConfigSleep').set_text(_me.string('lblConfigSleep')) self.get_widget('lblConfigID').set_text(_me.string('lblConfigID')) + self.get_widget('lblConfigTest').set_text(_me.string('lblConfigTest')) + #Wifi labels self.get_widget('lblWifiAvoidance').set_text(_me.string('lblWifiAvoidance')) - self.get_widget('lblUsedChannel').set_text(_me.string('lblUsedChannel')) - self.get_widget('lblAvoidChannel').set_text(_me.string('lblAvoidChannel')) - - self.get_widget('txtWifiUsed').set_text(self.channel) - self.get_widget('txtWifiUsed').set_editable(False) - self.get_widget('txtWifiAvoid').set_text(str(self.avoidedchannel)) - self.get_widget('txtWifiAvoid').set_editable(False) - self.get_widget('cbbWifiChannel').insert_text(0, 'auto') for i in range(13): channel = str(i+1) self.get_widget('cbbWifiChannel').append_text(channel) + #Sleep labels + self.get_widget('chkSleepEnable').set_label(_me.string('chkSleepEnable')) + self.get_widget('chkSleepEnable').set_active(self.enablesleep) + self.get_widget('lblSleepDelay').set_text(_me.string('lblSleepDelay')) + self.get_widget('spinSleepDelay').set_text(str(_me.get_param('SleepDelay'))) - + #Check if tux is sleeping ... + txt = _me.string('lblSleepStateWork') + self.get_widget('lblSleepState').set_text(txt) + self.get_widget('btnSleep').set_label(_me.string('btnSleepSleep')) + self.get_widget('progressbar2').hide() + # ID labels + #Tests labels + self.get_widget('btnSelfTest').set_label(_me.string('btnSelfTest')) def VersionsLabelUpdate(self): + # Hide the check for update button while the function is not implemented + # in the firmware updater gadget + self.get_widget('btnUpdate').hide() self.get_widget('btnUpdate').set_label(_me.string('btnUpdate')) self.get_widget('lblVersions').set_text(_me.string('lblVersions')) self.get_widget('lblLocal').set_text(_me.string('lblLocal')) @@ -162,24 +174,53 @@ def avoidchannel(self): self.get_widget('cbbWifiChannel').set_active(self.avoidedchannel) + if self.channel == -1: + return + if self.avoidedchannel == 0: - self.get_widget('txtWifiAvoid').set_text(str(self.channel)) tux.connect.avoid_wifi(int(self.channel)) else: tux.connect.avoid_wifi(self.avoidedchannel) - self.get_widget('txtWifiAvoid').set_text(str(self.avoidedchannel)) - - def searchWifiChannel(self): a = commands.getoutput('iwlist channel') - channel_idx = a.rfind('Channel ')+8 - channel = a[channel_idx:channel_idx+2] - if channel.find(')') != -1: - channel = channel[0:1] - self.channel = channel + if a.rfind('Current Channel') != -1: + self.get_widget('lblUsedChannel').set_text(_me.string('lblNoChannel')) + self.get_widget('lblChannel').set_text('') + self.channel = -1 + elif a.rfind('Current Frequency') != -1: + channel_idx = a.rfind('(Channel ') + 9 + channel = a[channel_idx:channel_idx + 2] + if channel.find(')') != -1: + channel = channel[0:1] + self.channel = channel + self.get_widget('lblUsedChannel').set_text(_me.string('lblUsedChannel')) + self.get_widget('lblChannel').set_text(str(self.channel)) + def on_chkSleepEnable_toggled(self, widget, *args): + _me.set_param('EnableSleep', widget.get_active()) + self.enablesleep = widget.get_active() + ## Send the active sleep command + def on_spinSleepDelay_changed(self, widget, *args): + self.sleepdelay = self.get_widget('spinSleepDelay').get_text() + _me.set_param('SleepDelay', self.sleepdelay) + ## Send the delay + + def on_btnSleep_clicked(self, widget, *args): + #if sleeping -> change label and send the wakeup command + + #else + self.get_widget('btnSleep').set_label(_me.string('btnSleepWakeup')) + self.get_widget('lblSleepState').set_text(_me.string('lblSleepStateSleep')) + + def on_btnSelfTest_clicked(self, widget, *args): + thread.start_new_thread(self.testmode,()) + + + + + #--------------------------------------------------------------------------- # # VERSION TAB @@ -328,7 +369,7 @@ title = _me.string('itemChangeLog') message = change - dialog = GdgDialog(title, message) + dialog = GdgDialog(title, message, True) os.system('rm -rf /tmp/tuxdroid-firmware*') def flashCPU(self, widget): @@ -602,6 +643,462 @@ tux.cmd.mouth_open() tux.sys.shell("arecord -D %s -d 10 -t wav rec.wav"%soundcard) tux.cmd.mouth_close() + + +#======================================================================================= +# +# Test function +# +#======================================================================================= + def testmode(self): + self.get_widget('progressbar2').show() + self.get_widget('progressbar2').set_fraction(0) + STEPS = 28.0 + fraction = float(1.0 / STEPS) + print fraction + actual_fraction = 0 + path = commands.getoutput('echo $USER') + #Get the local time to create the file + y, m, d, h, mn = time.localtime()[0:5] + date = ('%i%i%i-%i:%i' %(m, d, y, h, mn)) + #date = str(y) + '-' + str(m) + '-' + str(d) + '_' + str(h) + ':' + str(mn) + f = open('/home/%s/TuxSelftest_%s.txt' %(path, date), 'w') + self.f = f + f.write('%s : Self test start \n'%time.asctime()) + f.write('%s : ============================================================= \n'%time.asctime()) + f.write('%s : First step - Reset tux \n'%time.asctime()) + f.write('%s : ------------------------------------------------------------- \n'%time.asctime()) + tux.cmd.raw(0x31, 0, 0, 0) + tux.cmd.mouth_close() + tux.sys.wait(1) + tux.cmd.eyes_open() + f.write('%s :\n'%time.asctime()) + if tux.status.power_plug() == 0: + self.popup(_me.string('Warning'), _me.string('Connect'), True) + tux.sys.wait(0.5) + while self.popup_open == True: + tux.sys.wait(0.5) + if tux.status.power_plug() == 0: + f.write('%s : The power plug is not detected\n'%time.asctime()) + else: + f.write('%s : Power plug detected\n'%time.asctime()) + else: + f.write('%s : Power plug detected\n'%time.asctime()) + + actual_fraction += fraction + print actual_fraction + self.get_widget('progressbar2').set_fraction(actual_fraction) + + tux.sys.wait(2) + if tux.status.charger_state() == 1: + f.write('%s : Battery charger active\n'%time.asctime()) + else: + f.write('%s : Battery charger not active ...\n'%time.asctime()) + + actual_fraction += fraction + self.get_widget('progressbar2').set_fraction(actual_fraction) + + f.write('%s :\n'%time.asctime()) + f.write('%s : Second step : Measures\n'%time.asctime()) + f.write('%s : ------------------------------------------------------------- \n'%time.asctime()) + level1 = tux.status.light_level() + f.write('%s : Light level with the eyes open : %s\n'%(time.asctime(), level1)) + tux.cmd.eyes_close() + tux.sys.wait(0.5) + level2 = tux.status.light_level() + f.write('%s : Light level with the eyes closed : %s\n'%(time.asctime(), level2)) + + actual_fraction += fraction + self.get_widget('progressbar2').set_fraction(actual_fraction) + + level = tux.status.battery_level() + f.write('%s : Battery level : %s'%(time.asctime(), level[0])) + if level[1] == True: + f.write(' with all motors off\n') + else: + f.write(' with one or more motor(s) running\n') + + actual_fraction += fraction + self.get_widget('progressbar2').set_fraction(actual_fraction) + + tux.cmd.eyes_on(0) + tux.sys.wait(0.5) + level = tux.status.battery_level() + tux.cmd.eyes_off() + tux.sys.wait(0.5) + f.write('%s : Battery level : %s'%(time.asctime(), level[0])) + if level[1] == True: + f.write(' with all motors off\n') + else: + f.write(' with one or more motor(s) running\n') + + actual_fraction += fraction + self.get_widget('progressbar2').set_fraction(actual_fraction) + + tux.cmd.eyes_close() + tux.cmd.eyes_open() + + f.write('%s :\n'%time.asctime()) + f.write('%s : Third step : Buttons\n'%time.asctime()) + f.write('%s : ------------------------------------------------------------- \n'%time.asctime()) + + self.head = [False, False] + self.lwing = [False, False] + self.rwing = [False, False] + + actual_fraction += fraction + self.get_widget('progressbar2').set_fraction(actual_fraction) + + self.popup(_me.string('Warning'), _me.string('Switch'), True) + self.wait() + tux.event.on_head_bt_pushed = self.on_head_bt_pushed + tux.event.on_lwing_bt_pushed = self.on_lwing_bt_pushed + tux.event.on_rwing_bt_pushed = self.on_rwing_bt_pushed + tux.event.on_head_bt_released = self.on_head_bt_released + tux.event.on_lwing_bt_released = self.on_lwing_bt_released + tux.event.on_rwing_bt_released = self.on_rwing_bt_released + timer = time.time() + while time.time() <= timer + 15: + if self.rwing[0] and self.rwing[1] and self.lwing[0] and self.lwing[1] and self.head[0] and self.head[1]: + break + tux.sys.wait(0.5) + + actual_fraction += fraction + self.get_widget('progressbar2').set_fraction(actual_fraction) + + f.write('%s : Head button pressed : %s\n'%(time.asctime(), str(self.head[0]))) + f.write('%s : Head button released : %s\n'%(time.asctime(), str(self.head[1]))) + f.write('%s : Left wing pressed : %s\n'%(time.asctime(), str(self.lwing[0]))) + f.write('%s : Left wing released : %s\n'%(time.asctime(), str(self.lwing[1]))) + f.write('%s : Right wing pressed : %s\n'%(time.asctime(), str(self.rwing[0]))) + f.write('%s : Right wing released : %s\n'%(time.asctime(), str(self.rwing[1]))) + + actual_fraction += fraction + self.get_widget('progressbar2').set_fraction(actual_fraction) + + f.write('%s :\n'%time.asctime()) + f.write('%s : Fourth step : IR and LEDs\n'%time.asctime()) + f.write('%s : ------------------------------------------------------------- \n'%time.asctime()) + f.write('%s : Switch on the LEDs '%time.asctime()) + tux.cmd.eyes_open() + tux.cmd.leds_on() + tux.sys.wait(0.5) + lled = tux.status.lled() + rled = tux.status.rled() + f.write(' - status : left = %i | right = %i \n'%(lled, rled)) + f.write('%s : Switch off the right LED '%time.asctime()) + + actual_fraction += fraction + self.get_widget('progressbar2').set_fraction(actual_fraction) + + tux.cmd.ledr_off() + tux.sys.wait(0.5) + lled = tux.status.lled() + rled = tux.status.rled() + f.write(' - status : left = %i | right = %i \n'%(lled, rled)) + f.write('%s : Switch off the left LED '%time.asctime()) + + actual_fraction += fraction + self.get_widget('progressbar2').set_fraction(actual_fraction) + + tux.cmd.ledl_off() + tux.sys.wait(0.5) + lled = tux.status.lled() + rled = tux.status.rled() + f.write(' - status : left = %i | right = %i \n'%(lled, rled)) + f.write('%s : Blink the led 3x (final state : both on)'%time.asctime()) + tux.cmd.leds_blink(3, 100) + tux.sys.wait(1) + lled = tux.status.lled() + rled = tux.status.rled() + f.write(' - status : left = %i | right = %i \n'%(lled, rled)) + + actual_fraction += fraction + self.get_widget('progressbar2').set_fraction(actual_fraction) + + self.popup(_me.string('Warning'), _me.string('IR'), True) + self.wait() + tux.event.on_remote = self.on_remote + self.remote_count = 0 + timer = time.time() + while time.time() <= timer + 15: + if self.remote_count >= 3: + f.write('%s : Tux received correctly the remote control signal\n'%time.asctime()) + break + tux.sys.wait(0.5) + if time.time() >= timer + 15: + f.write('%s : Tux not received correctly the remote control signal\n'%time.asctime()) + + actual_fraction += fraction + self.get_widget('progressbar2').set_fraction(actual_fraction) + + + f.write('%s :\n'%time.asctime()) + f.write('%s : Fifth step : Sound\n'%time.asctime()) + f.write('%s : ------------------------------------------------------------- \n'%time.asctime()) + if tux.status.sounds_count() == 0: + f.write('%s : The sound flash is empty\n'%time.asctime()) + else: + tux.cmd.sound_play(1) + self.OK = False + self.popupQuestion(_me.string('Warning'), _me.string('Sound'), self.btnOK, True) + self.popup_wait() + tux.sys.wait(0.5) + if self.OK != True: + self.popup(_me.string('Warning'), _me.string('Sound1'), True) + self.wait() + tux.cmd.sound_play(1) + self.OK = False + self.popupQuestion(_me.string('Warning'), _me.string('Sound'), self.btnOK, True) + self.popup_wait() + tux.sys.wait(0.5) + if self.OK != True: + f.write('%s : No sound heard\n'%time.asctime()) + else: + f.write('%s : Sound OK at the second time\n'%time.asctime()) + else: + f.write('%s : Sound OK\n'%time.asctime()) + + actual_fraction += fraction + self.get_widget('progressbar2').set_fraction(actual_fraction) + + self.popup(_me.string('Warning'), _me.string('Mic'), True) + self.wait() + tux.cmd.mouth_open() + tux.micro.capture_start('/tmp/capture.wav', 3) + tux.cmd.mouth_close() + + actual_fraction += fraction + self.get_widget('progressbar2').set_fraction(actual_fraction) + + tux.wav.play('/tmp/capture.wav') + self.OK = False + self.popupQuestion(_me.string('Warning'), _me.string('Sound'), self.btnOK, True) + self.popup_wait() + tux.sys.wait(0.5) + if self.OK == True: + f.write('%s : Microphone OK\n'%time.asctime()) + else: + f.write('%s : No micro signal\n'%time.asctime()) + + actual_fraction += fraction + self.get_widget('progressbar2').set_fraction(actual_fraction) + + self.popupQuestion(_me.string('Warning'), _me.string('Out'), self.btnOK, True) + self.popup_wait() + tux.sys.wait(0.5) + if self.OK == True: + tux.cmd.sound_play(1) + self.OK = False + self.popupQuestion(_me.string('Warning'), _me.string('Sound'), self.btnOK, True) + self.popup_wait() + tux.sys.wait(0.5) + if self.OK == True: + f.write('%s : Sound output OK\n'%time.asctime()) + else: + f.write('%s : No sound output\n'%time.asctime()) + else: + f.write('%s : The sound output has not been tested\n'%time.asctime()) + + actual_fraction += fraction + self.get_widget('progressbar2').set_fraction(actual_fraction) + + self.popupQuestion(_me.string('Warning'), _me.string('In'), self.btnOK, True) + self.popup_wait() + tux.sys.wait(0.5) + print 'OK' + if self.OK == True: + tux.sys.wait(5) + self.OK = False + self.popupQuestion(_me.string('Warning'), _me.string('Sound'), self.btnOK, True) + self.popup_wait() + tux.sys.wait(0.5) + if self.OK == True: + f.write('%s : Sound input OK\n'%time.asctime()) + else: + f.write('%s : No sound input\n'%time.asctime()) + else: + f.write('%s : The sound input has not been tested\n'%time.asctime()) + + actual_fraction += fraction + self.get_widget('progressbar2').set_fraction(actual_fraction) + + + f.write('%s :\n'%time.asctime()) + f.write('%s : Sixth step : Motors\n'%time.asctime()) + f.write('%s : ------------------------------------------------------------- \n'%time.asctime()) + self.popup(_me.string('Warning'), _me.string('Disconnect'), True) + self.wait() + self.head = [False, False] + self.lwing = [False, False] + self.rwing = [False, False] + f.write('%s : Reset tux ... '%time.asctime()) + tux.cmd.raw(0x31, 0, 0, 0) + tux.cmd.mouth_close() + tux.sys.wait(1) + tux.cmd.eyes_open() + f.write('done\n') + + actual_fraction += fraction + self.get_widget('progressbar2').set_fraction(actual_fraction) + + f.write('%s : Send a command to raise the wings'%time.asctime()) + self.send_command(tux.cmd.raw(0x39, 0, 0, 0), 0, 0) + + actual_fraction += fraction + self.get_widget('progressbar2').set_fraction(actual_fraction) + + f.write('%s : Send a command to lower the wings'%time.asctime()) + self.send_command(tux.cmd.raw(0x3A, 0, 0, 0), 0, 0) + + actual_fraction += fraction + self.get_widget('progressbar2').set_fraction(actual_fraction) + + f.write('%s : Move the wings 8 time'%time.asctime()) + self.send_command(tux.cmd.wings_on(8), tux.status.wings_counter, 0) + + actual_fraction += fraction + self.get_widget('progressbar2').set_fraction(actual_fraction) + + f.write('%s : Left wing pressed : %s\n'%(time.asctime(), str(self.lwing[0]))) + f.write('%s : Right wing pressed : %s\n'%(time.asctime(), str(self.rwing[0]))) + f.write('%s : Send a command to close the eyes'%time.asctime()) + tux.cmd.eyes_open() + self.send_command(tux.cmd.eyes_close(), tux.status.eyes_closed, 0) + + actual_fraction += fraction + self.get_widget('progressbar2').set_fraction(actual_fraction) + + f.write('%s : Send a command to open the eyes'%time.asctime()) + self.send_command(tux.cmd.eyes_open(), tux.status.eyes_closed, 1) + + actual_fraction += fraction + self.get_widget('progressbar2').set_fraction(actual_fraction) + + f.write('%s : Send a command to open the mouth'%time.asctime()) + self.send_command(tux.cmd.mouth_open(), tux.status.mouth_closed, 1) + + actual_fraction += fraction + self.get_widget('progressbar2').set_fraction(actual_fraction) + + f.write('%s : Send a command to close the mouth'%time.asctime()) + self.send_command(tux.cmd.mouth_close(), tux.status.mouth_closed, 0) + + actual_fraction += fraction + self.get_widget('progressbar2').set_fraction(actual_fraction) + + f.write('%s : Send a command to spin right'%time.asctime()) + self.send_command(tux.cmd.spinr_on(4), tux.status.spin_counter, 0) + + actual_fraction += fraction + self.get_widget('progressbar2').set_fraction(actual_fraction) + + f.write('%s : Send a command to spin left'%time.asctime()) + self.send_command(tux.cmd.spinl_on(4), tux.status.spin_counter, 0) + + actual_fraction += fraction + self.get_widget('progressbar2').set_fraction(actual_fraction) + + f.write('%s\n'%time.asctime()) + tux.sys.wait(2) + if tux.status.charger_state() == 1: + f.write('%s : Battery charger active\n'%time.asctime()) + else: + f.write('%s : Battery charger not active\n'%time.asctime()) + + actual_fraction += fraction + self.get_widget('progressbar2').set_fraction(actual_fraction) + + tux.event.on_head_bt_pushed = None + tux.event.on_lwing_bt_pushed = None + tux.event.on_rwing_bt_pushed = None + tux.event.on_head_bt_released = None + tux.event.on_lwing_bt_released = None + tux.event.on_rwing_bt_released = None + + f.close() + self.get_widget('progressbar2').hide() +#----------------------------- +# Specific test functions +#----------------------------- + def on_head_bt_pushed(self): + self.head[0] = True + def on_lwing_bt_pushed(self): + self.lwing[0] = True + def on_rwing_bt_pushed(self): + self.rwing[0] = True + def on_head_bt_released(self): + self.head[1] = True + def on_lwing_bt_released(self): + self.lwing[1] = True + def on_rwing_bt_released(self): + self.rwing[1] = True + def on_remote(self, key): + self.remote_count += 1 + + def popup(self, title, message, blocked): + self.popup_open = True + gtk.gdk.threads_enter() + dialog = GdgDialog(title, message, blocked) + gtk.gdk.threads_leave() + self.popup_open = False + + def wait(self): + tux.sys.wait(0.5) + while self.popup_open == True: + tux.sys.wait(0.5) + + def popupQuestion(self, title, message, function, blocked): + self.popup_open = True + gtk.gdk.threads_enter() + dialog = GdgDialogQuestion(title, message, function, blocked) + gtk.gdk.threads_leave() + self.popup_open = False + + def popup_wait(self): + self.OK = False + tux.sys.wait(0.5) + while self.popup_open == True: + tux.sys.wait(0.5) + tux.sys.wait(0.5) + + def btnOK(self): + self.OK = True + + def send_command(self, command, status, stat_val): + for i in range(2): + + timer = time.time() + act_time = timer + command + if status != 0: + while status() != stat_val and (timer + 4) >= act_time: + act_time = time.time() + + if timer + 4 >= time.time(): + self.result_control(i) + return + + self.result_control(-1) + + + def result_control(self, val): + if val == -1: + self.f.write(' : fail...\n') + elif val == 0: + self.f.write(' : done\n') + elif val == 1: + self.f.write(' : done after the second command\n') + tux.sys.wait(1) + + def waiting(self, signal, value): + self.wait = False + while signal() == value: + tux.sys.wait(0.1) + self.wait = True + + + Modified: software/gadgets/settings/trunk/settings/Strings/fr_ALL.xml =================================================================== --- software/gadgets/settings/trunk/settings/Strings/fr_ALL.xml 2007-11-09 15:19:03 UTC (rev 673) +++ software/gadgets/settings/trunk/settings/Strings/fr_ALL.xml 2007-11-09 15:23:35 UTC (rev 674) @@ -1,16 +1,19 @@ <?xml version='1.0' encoding='UTF-8'?> <strings> - <lblAvoidChannel type='str'>Cannal rejeté :</lblAvoidChannel> + <chkSleepEnable type='str'>Permettre la mise en veille</chkSleepEnable> <lblLocal type='str'>Versions disponibles</lblLocal> + <Disconnect type='str'>Déconnectez l'alimentation de tux puis fermez cette fenêtre.</Disconnect> <gui_conf_remote_title type='str'>Télécommande</gui_conf_remote_title> <btnSoundRemove type='str'>Enlever</btnSoundRemove> + <Mic type='str'>Après avoir fermer cette fenêtre, dîtes quelque chose à Tux.</Mic> + <btnSleepSleep type='str'>Mettre en veille</btnSleepSleep> <lblSoundExternalFile type='str'>Fichier :</lblSoundExternalFile> <btnSoundAdd type='str'>Ajouter</btnSoundAdd> <treeFile type='str'>Fichier</treeFile> <gui_conf_accept_bt type='str'>Valider</gui_conf_accept_bt> <help_text type='str'> </help_text> - <lblWifiAvoidance type='str'>Eviter le cannal wifi n° :</lblWifiAvoidance> + <lblWifiAvoidance type='str'>Eviter le canal wifi n° :</lblWifiAvoidance> <itemCPU type='str'>Flasher les processeurs</itemCPU> <btnSoundPlayMic type='str'>Lire</btnSoundPlayMic> <lblSoundLocal type='str'>Lire un wave local</lblSoundLocal> @@ -19,33 +22,52 @@ <lblTabConfig type='str'>Configuration</lblTabConfig> <gui_conf_cancel_bt type='str'>Annuler</gui_conf_cancel_bt> <btnUpdate type='str'>Verifier les mises à jour</btnUpdate> + <lblNoChannel type='str'>Pas de connexion wifi trouvée</lblNoChannel> <gui_conf_delay_lb type='str'>Délai (sec)</gui_conf_delay_lb> <btnSoundRecordMic type='str'>Enregistrer</btnSoundRecordMic> - <gui_conf_about_title type='str'>A propos</gui_conf_about_title> - <chkSoundOriginal type='str'>Fichier originaux</chkSoundOriginal> + <lblConfigSleep type='str'>Configuration de la veille</lblConfigSleep> + <btnSleepWakeup type='str'>Reveiller</btnSleepWakeup> <btnSoundClear type='str'>Purger</btnSoundClear> + <Sound1 type='str'>Assurez vous que le réglage de volume soit au maximum</Sound1> + <lblSleepStateSleep type='str'>Tux est actuellement en veille</lblSleepStateSleep> <lblSoundMic type='str'>Microphone</lblSoundMic> + <Sound type='str'>Avez vous correctement entendu le son ?</Sound> <itemChangeLog type='str'>Voir les changements</itemChangeLog> <lblSoundLocalSelect type='str'>Selectionner un son :</lblSoundLocalSelect> <lblSoundExternal type='str'>Lire un wave externe</lblSoundExternal> - <lblConfigSleep type='str'>Configuration de la veille</lblConfigSleep> - <gui_conf_description_lb type='str'>Description</gui_conf_description_lb> + <IR type='str'>Après avoir fermer cette fenêtre, trois touches de la télécommande. +Vous vez 15 secondes pour realiser cette opération.</IR> + <gui_conf_about_title type='str'>A propos</gui_conf_about_title> + <btnSelfTest type='str'>Démarrer les tests</btnSelfTest> + <lblSleepStateWork type='str'>Tux n'est pas en veille pour le moment</lblSleepStateWork> + <Switch type='str'>Après avoir fermer cette fenêtre, pressez successivement sur les ailes puis sur la tête. +Vous vez 15 secondes pour realiser cette opération.</Switch> <gui_conf_author_lb type='str'>Auteur</gui_conf_author_lb> + <lblConfigTest type='str'>Auto tests</lblConfigTest> <treeVersionVer type='str'>Version</treeVersionVer> <lblConfigWifi type='str'>Configuration wifi</lblConfigWifi> - <treeVersionProg type='str'>Component</treeVersionProg> + <treeVersionProg type='str'>Composant</treeVersionProg> <lblSoundExternalPlay type='str'>Lecture</lblSoundExternalPlay> <gui_conf_current_bind_lb type='str'>Assignation</gui_conf_current_bind_lb> <speaker_name type='str'>Bruno8k</speaker_name> <gui_conf_remote_set_bt type='str'>Set</gui_conf_remote_set_bt> <name_to_read type='str'>Parametres de Tux</name_to_read> <gui_conf_window_title type='str'>Paramètres</gui_conf_window_title> - <lblUsedChannel type='str'>Cannal utilisé :</lblUsedChannel> + <lblUsedChannel type='str'>Votre wifi utilise le cannal :</lblUsedChannel> + <lblSleepDelay type='str'>Activer la veille après une période d'inactivité de </lblSleepDelay> <lblTabSound type='str'>Audio</lblTabSound> <btnSoundStore type='str'>Ecrire</btnSoundStore> <lblVersions type='str'>Versions installées</lblVersions> + <chkSoundOriginal type='str'>Fichier originaux</chkSoundOriginal> <btnSoundModify type='str'>Modifier</btnSoundModify> + <Warning type='str'>Attention</Warning> + <gui_conf_description_lb type='str'>Description</gui_conf_description_lb> + <Connect type='str'>Connectez l'alimentation de tux puis fermez cette fenêtre.</Connect> + <In type='str'>Voulez-vous tester l'entrée son de Tux? +Vous devez connecter un périphérique d'entrée dans le connecteur bleu.</In> <lblConfigID type='str'>Configuration de l'ID</lblConfigID> + <Out type='str'>Voulez-vous tester la sortie son de Tux? +Vous devez connecter des haut-parleurs dans la prise verte.</Out> <lblTabVersion type='str'>Versions</lblTabVersion> <btnSoundPlayNum type='str'>Lire</btnSoundPlayNum> <lblSoundStore type='str'>Enregistrer des fichiers wave</lblSoundStore> Modified: software/gadgets/settings/trunk/settings/settings.xml =================================================================== --- software/gadgets/settings/trunk/settings/settings.xml 2007-11-09 15:19:03 UTC (rev 673) +++ software/gadgets/settings/trunk/settings/settings.xml 2007-11-09 15:23:35 UTC (rev 674) @@ -3,13 +3,15 @@ <parameters> <AvoidChannel type='int'>0</AvoidChannel> <hidden_in_manager type='bool'>False</hidden_in_manager> + <SleepDelay type='int'>10</SleepDelay> + <EnableSleep type='bool'>True</EnableSleep> </parameters> <general> <gui_state> <widget> - <y type='int'>176</y> + <y type='int'>147</y> <visible type='bool'>True</visible> - <x type='int'>1019</x> + <x type='int'>417</x> </widget> <conf> <y type='int'>50</y> @@ -20,6 +22,7 @@ <language type='str'>en_US</language> <notified type='bool'>True</notified> <notify_delay type='int'>60</notify_delay> + <framework_version type='str'>0.0.0</framework_version> <menu_active type='bool'>True</menu_active> <main_priority type='int'>4</main_priority> <speaker type='int'>3</speaker> Modified: software/gadgets/settings/trunk/settings/strings.xml =================================================================== --- software/gadgets/settings/trunk/settings/strings.xml 2007-11-09 15:19:03 UTC (rev 673) +++ software/gadgets/settings/trunk/settings/strings.xml 2007-11-09 15:23:35 UTC (rev 674) @@ -1,9 +1,12 @@ <?xml version='1.0' encoding='UTF-8'?> <strings> - <lblAvoidChannel type='str'>Avoided channel :</lblAvoidChannel> + <chkSleepEnable type='str'>Enable sleep mode</chkSleepEnable> <lblLocal type='str'>Available versions</lblLocal> + <Disconnect type='str'>Please disconnect the power plug andpress the 'OK' button.</Disconnect> <gui_conf_remote_title type='str'>Remote</gui_conf_remote_title> <btnSoundRemove type='str'>Remove</btnSoundRemove> + <Mic type='str'>After closing this window, say anything to Tux.</Mic> + <treeVersionProg type='str'>Component</treeVersionProg> <lblSoundExternalFile type='str'>File :</lblSoundExternalFile> <btnSoundAdd type='str'>Add</btnSoundAdd> <treeFile type='str'>Fichier</treeFile> @@ -19,33 +22,52 @@ <lblTabConfig type='str'>Configuration</lblTabConfig> <gui_conf_cancel_bt type='str'>Cancel</gui_conf_cancel_bt> <btnUpdate type='str'>Check for updates</btnUpdate> + <lblNoChannel type='str'>No wifi connection found</lblNoChannel> <gui_conf_delay_lb type='str'>Delay (sec)</gui_conf_delay_lb> <btnSoundRecordMic type='str'>Record</btnSoundRecordMic> - <gui_conf_about_title type='str'>About</gui_conf_about_title> - <chkSoundOriginal type='str'>Include originals</chkSoundOriginal> + <lblConfigSleep type='str'>Sleep configuration</lblConfigSleep> + <btnSleepWakeup type='str'>Wakeup</btnSleepWakeup> <btnSoundClear type='str'>Clear list</btnSoundClear> + <Sound1 type='str'>Be sure that the sound volume control is at the maximum.</Sound1> + <lblSleepStateSleep type='str'>Tux is currently sleeping</lblSleepStateSleep> <speaker_name type='str'>Ryan8k</speaker_name> + <Sound type='str'>Have you heard the sound ?</Sound> <itemChangeLog type='str'>Show ChangeLog</itemChangeLog> <lblSoundLocalSelect type='str'>Select sound</lblSoundLocalSelect> <lblSoundExternal type='str'>Play external wave file</lblSoundExternal> - <lblConfigSleep type='str'>Sleep configuration</lblConfigSleep> - <gui_conf_description_lb type='str'>Description</gui_conf_description_lb> + <IR type='str'>After closing this window, press the keys '1', '2' and '3' of the remote control. +You've 15 seconds to perform this task.</IR> + <gui_conf_about_title type='str'>About</gui_conf_about_title> + <btnSelfTest type='str'>Start self test</btnSelfTest> + <lblSleepStateWork type='str'>Tux isn't in sleep mode</lblSleepStateWork> + <Switch type='str'>After closing this window, press on the wings and on the head. +You've 15 seconds to perform this task.</Switch> <gui_conf_author_lb type='str'>Author</gui_conf_author_lb> + <lblConfigTest type='str'>Self tests</lblConfigTest> <treeVersionVer type='str'>Version</treeVersionVer> <lblConfigWifi type='str'>Wifi configuration</lblConfigWifi> - <treeVersionProg type='str'>Component</treeVersionProg> + <btnSleepSleep type='str'>Sleep</btnSleepSleep> <lblSoundExternalPlay type='str'>Play</lblSoundExternalPlay> <gui_conf_current_bind_lb type='str'>Current</gui_conf_current_bind_lb> <lblSoundMic type='str'>Microphone</lblSoundMic> <gui_conf_remote_set_bt type='str'>Set</gui_conf_remote_set_bt> <name_to_read type='str'>Tux settings</name_to_read> <gui_conf_window_title type='str'>Parameters</gui_conf_window_title> - <lblUsedChannel type='str'>Used channel :</lblUsedChannel> + <lblUsedChannel type='str'>Your wifi use the channel :</lblUsedChannel> + <lblSleepDelay type='str'>Active the sleep mode after a inactivity period of</lblSleepDelay> <lblTabSound type='str'>Audio</lblTabSound> <btnSoundStore type='str'>Store</btnSoundStore> <lblVersions type='str'>Installed versions</lblVersions> + <chkSoundOriginal type='str'>Include originals</chkSoundOriginal> <btnSoundModify type='str'>Modify</btnSoundModify> + <Warning type='str'>Warning</Warning> + <gui_conf_description_lb type='str'>Description</gui_conf_description_lb> + <Connect type='str'>Please connect the power plug, and press the 'OK' button</Connect> + <In type='str'>Would you like to test the sound input interface? +To do this, you need to connect an input device in the blue connector and then click 'Yes'.</In> <lblConfigID type='str'>ID configuration</lblConfigID> + <Out type='str'>Would you like to test the sound output interface? +To do this, you need to connect loudspeakers in the green connector, and press the 'Yes' button.</Out> <lblTabVersion type='str'>Versions</lblTabVersion> <btnSoundPlayNum type='str'>Play</btnSoundPlayNum> <lblSoundStore type='str'>Store wave files locally</lblSoundStore> Modified: software/gadgets/settings/trunk/settings.tgf =================================================================== (Binary files differ) |