[tuxdroid-svn] r740 - in software/gadgets/settings/trunk: . settings settings/Scripts/Python settin
Status: Beta
Brought to you by:
ks156
Author: Paul_R Date: 2007-11-27 17:25:48 +0100 (Tue, 27 Nov 2007) New Revision: 740 Added: software/gadgets/settings/trunk/settings/Scripts/Python/GUI/selftest/ software/gadgets/settings/trunk/settings/Scripts/Python/GUI/selftest/other.glade software/gadgets/settings/trunk/settings/Scripts/Python/GUI/selftest/other.pyp software/gadgets/settings/trunk/settings/Scripts/Python/selftest.py 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: * Changed the way to store the sounds on the flash memory, according with the new firmwares (tuxaudio rev 730, tuxcore rev 733). Now, the sounds are stored one by one. A new button to store an external wav at the end of the memory has been added. * Added a new .glade file for the self test sequence. * Switched the Configuration tab with the Sound tab in the widget window. Added: software/gadgets/settings/trunk/settings/Scripts/Python/GUI/selftest/other.glade =================================================================== --- software/gadgets/settings/trunk/settings/Scripts/Python/GUI/selftest/other.glade (rev 0) +++ software/gadgets/settings/trunk/settings/Scripts/Python/GUI/selftest/other.glade 2007-11-27 16:25:48 UTC (rev 740) @@ -0,0 +1,147 @@ +<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*--> +<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd"> + +<glade-interface> + +<widget class="GtkWindow" id="window1"> + <property name="visible">True</property> + <property name="title" translatable="yes">Widget</property> + <property name="type">GTK_WINDOW_TOPLEVEL</property> + <property name="window_position">GTK_WIN_POS_NONE</property> + <property name="modal">False</property> + <property name="resizable">False</property> + <property name="destroy_with_parent">False</property> + <property name="decorated">True</property> + <property name="skip_taskbar_hint">False</property> + <property name="skip_pager_hint">False</property> + <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property> + <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> + <property name="focus_on_map">True</property> + <property name="urgency_hint">False</property> + + <child> + <widget class="GtkVBox" id="vbox1"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">0</property> + + <child> + <widget class="GtkFixed" id="fixed1"> + <property name="width_request">420</property> + <property name="height_request">200</property> + <property name="visible">True</property> + + <child> + <widget class="GtkProgressBar" id="progressbar2T"> + <property name="width_request">384</property> + <property name="height_request">16</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">16</property> + <property name="y">176</property> + </packing> + </child> + + <child> + <widget class="GtkScrolledWindow" id="scrolledwindow2T"> + <property name="width_request">384</property> + <property name="height_request">160</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="hscrollbar_policy">GTK_POLICY_NEVER</property> + <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> + <property name="shadow_type">GTK_SHADOW_NONE</property> + <property name="window_placement">GTK_CORNER_TOP_LEFT</property> + + <child> + <placeholder/> + </child> + </widget> + <packing> + <property name="x">16</property> + <property name="y">8</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="GtkFixed" id="fixed2"> + <property name="height_request">49</property> + <property name="visible">True</property> + + <child> + <widget class="GtkButton" id="btnStopT"> + <property name="width_request">100</property> + <property name="height_request">30</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">button3</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_btnStopT_clicked" last_modification_time="Tue, 27 Nov 2007 13:58:00 GMT"/> + </widget> + <packing> + <property name="x">8</property> + <property name="y">8</property> + </packing> + </child> + + <child> + <widget class="GtkButton" id="btnCancelT"> + <property name="width_request">100</property> + <property name="height_request">30</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_btnCancelT_clicked" last_modification_time="Tue, 27 Nov 2007 13:58:10 GMT"/> + </widget> + <packing> + <property name="x">192</property> + <property name="y">8</property> + </packing> + </child> + + <child> + <widget class="GtkButton" id="btnOKT"> + <property name="width_request">100</property> + <property name="height_request">30</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_btnOKT_clicked" last_modification_time="Tue, 27 Nov 2007 13:58:04 GMT"/> + </widget> + <packing> + <property name="x">296</property> + <property name="y">8</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + </child> +</widget> + +</glade-interface> Added: software/gadgets/settings/trunk/settings/Scripts/Python/GUI/selftest/other.pyp =================================================================== --- software/gadgets/settings/trunk/settings/Scripts/Python/GUI/selftest/other.pyp (rev 0) +++ software/gadgets/settings/trunk/settings/Scripts/Python/GUI/selftest/other.pyp 2007-11-27 16:25:48 UTC (rev 740) @@ -0,0 +1,505 @@ +bindtextdomain("params", "") + +import subprocess +import commands +import time +import threading + +class Window(SimpleGladeApp): + + def __init__(self, + path=_me.get_path('root') + '/Scripts/Python/GUI/selftest/other.glade', + root="window1", + domain="params", **kwargs): + SimpleGladeApp.__init__(self, path, root, domain, **kwargs) + self.ok_flag = False + self.cancel_flag = False + + def new(self): + self.get_widget("window1").set_title(_me.string('name_to_read')) + thread.start_new_thread(self.update,()) + +#================================================================== +# SELF TEST FUNCTIONS +#================================================================== + def update(self): + self.get_widget('btnOKT').set_label(_me.string('Start')) + self.get_widget('btnCancelT').set_label(_me.string('btnCancelT')) + self.get_widget('btnCancelT').hide() + self.get_widget('btnStopT').set_label(_me.string('btnStopT')) + + self.tree_store = gtk.TreeStore(str) + self.view = gtk.TreeView(self.tree_store) + self.renderer = gtk.CellRendererText() + self.column = gtk.TreeViewColumn('', self.renderer, text=0) + self.column.set_min_width(300) + self.column.add_attribute(self.renderer, 'text', 0) + self.view.set_property("headers-visible", False) + self.view.append_column( self.column ) + self.get_widget("scrolledwindow2T").add(self.view) + self.get_widget("scrolledwindow2T").show_all() + + self.testmode() + + def testmode(self): + ## Test init + self.path = commands.getoutput('echo $USER') + y, m, d, h, mn = time.localtime()[0:5] + self.date = ('%i%i%i-%i:%i' %(m, d, y, h, mn)) + self.tree_store.append(None, [_me.string('Selftest')+'/home/%s/TuxSelftest_%s.txt' %(self.path, self.date)]) + self.get_widget('progressbar2T').set_fraction(0) + + STEPS = 28.0 + self.fraction = float(1.0 / STEPS) + self.actual_fraction = 0 + + while(self.ok_flag == False): + tux.sys.wait(0.1) + self.get_widget('btnOKT').hide() + self.get_widget('btnOKT').set_label(_me.string('btnOKT')) + + self.reset_tux() + self.measure_tests() + self.buttons_tests() + self.leds_tests() + self.sound_tests() + self.motors_tests() + + def reset_tux(self): + #Get the local time to create the file + self.f = open('/home/%s/TuxSelftest_%s.txt' %(self.path, self.date), 'w') + self.f.write('%s : Self test start \n'%time.asctime()) + self.f.write('%s : ============================================================= \n'%time.asctime()) + self.f.write('%s : First step - Reset tux \n'%time.asctime()) + self.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() + self.f.write('%s :\n'%time.asctime()) + + if tux.status.power_plug() == 0: + self.warning(_me.string('Connect')) + if tux.status.power_plug() == 0: + self.f.write('%s : The power plug is not detected\n'%time.asctime()) + else: + self.f.write('%s : Power plug detected\n'%time.asctime()) + else: + self.f.write('%s : Power plug detected\n'%time.asctime()) + + self.progress_bar() + + tux.sys.wait(2) + if tux.status.charger_state() == 1: + self.f.write('%s : Battery charger active\n'%time.asctime()) + else: + self.f.write('%s : Battery charger not active ...\n'%time.asctime()) + + self.progress_bar() + + def measure_tests(self): + self.f.write('%s :\n'%time.asctime()) + self.f.write('%s : Second step : Measures\n'%time.asctime()) + self.f.write('%s : ------------------------------------------------------------- \n'%time.asctime()) + level1 = tux.status.light_level() + self.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() + self.f.write('%s : Light level with the eyes closed : %s\n'%(time.asctime(), level2)) + + self.progress_bar() + + level = tux.status.battery_level() + self.f.write('%s : Battery level : %s'%(time.asctime(), level[0])) + if level[1] == True: + self.f.write(' with all motors off\n') + else: + self.f.write(' with one or more motor(s) running\n') + + self.progress_bar() + + tux.cmd.eyes_on(0) + tux.sys.wait(0.5) + level = tux.status.battery_level() + tux.cmd.eyes_off() + tux.sys.wait(0.5) + + self.f.write('%s : Battery level : %s'%(time.asctime(), level[0])) + if level[1] == True: + self.f.write(' with all motors off\n') + else: + self.f.write(' with one or more motor(s) running\n') + + self.progress_bar() + + tux.cmd.eyes_close() + tux.cmd.eyes_open() + + def buttons_tests(self): + self.f.write('%s :\n'%time.asctime()) + self.f.write('%s : Third step : Buttons\n'%time.asctime()) + self.f.write('%s : ------------------------------------------------------------- \n'%time.asctime()) + + self.head = [False, False] + self.lwing = [False, False] + self.rwing = [False, False] + + self.progress_bar() + + self.warning(_me.string('Switch')) + + 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) + + self.progress_bar() + + self.f.write('%s : Head button pressed : %s\n'%(time.asctime(), str(self.head[0]))) + self.f.write('%s : Head button released : %s\n'%(time.asctime(), str(self.head[1]))) + self.f.write('%s : Left wing pressed : %s\n'%(time.asctime(), str(self.lwing[0]))) + self.f.write('%s : Left wing released : %s\n'%(time.asctime(), str(self.lwing[1]))) + self.f.write('%s : Right wing pressed : %s\n'%(time.asctime(), str(self.rwing[0]))) + self.f.write('%s : Right wing released : %s\n'%(time.asctime(), str(self.rwing[1]))) + + self.progress_bar() + + def leds_tests(self): + self.f.write('%s :\n'%time.asctime()) + self.f.write('%s : Fourth step : IR and LEDs\n'%time.asctime()) + self.f.write('%s : ------------------------------------------------------------- \n'%time.asctime()) + self.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() + self.f.write(' - status : left = %i | right = %i \n'%(lled, rled)) + self.f.write('%s : Switch off the right LED '%time.asctime()) + + self.progress_bar() + + tux.cmd.ledr_off() + tux.sys.wait(0.5) + lled = tux.status.lled() + rled = tux.status.rled() + self.f.write(' - status : left = %i | right = %i \n'%(lled, rled)) + self.f.write('%s : Switch off the left LED '%time.asctime()) + + self.progress_bar() + + tux.cmd.ledl_off() + tux.sys.wait(0.5) + lled = tux.status.lled() + rled = tux.status.rled() + self.f.write(' - status : left = %i | right = %i \n'%(lled, rled)) + self.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() + self.f.write(' - status : left = %i | right = %i \n'%(lled, rled)) + + self.progress_bar() + + self.warning(_me.string('IR')) + tux.event.on_remote = self.on_remote + self.key1 = False + self.key2 = False + self.key3 = False + timer = time.time() + while time.time() <= timer + 15: + if self.key1 and self.key2 and self.key3: + self.f.write('%s : Tux received correctly the remote control signal\n'%time.asctime()) + break + tux.sys.wait(0.5) + if time.time() >= timer + 15: + self.f.write('%s : Tux not received correctly the remote control signal\n'%time.asctime()) + + self.progress_bar() + + def sound_tests(self): + self.f.write('%s :\n'%time.asctime()) + self.f.write('%s : Fifth step : Sound\n'%time.asctime()) + self.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) + while tux.status.sound_play()[0] != 0: + tux.sys.wait(0.5) + self.question(_me.string('Sound')) + + + if self.ok_flag != True: + self.warning(_me.string('Sound1')) + tux.cmd.sound_play(1) + while tux.status.sound_play()[0] != 0: + tux.sys.wait(0.5) + + self.question(_me.string('Sound')) + if self.ok_flag != True: + self.f.write('%s : No sound heard\n'%time.asctime()) + else: + self.f.write('%s : Sound OK at the second time\n'%time.asctime()) + else: + self.f.write('%s : Sound OK\n'%time.asctime()) + + self.progress_bar() + + self.warning(_me.string('Mic')) + + tux.micro.on() + tux.cmd.mouth_open() + tux.micro.capture_start('/tmp/capture.wav', 3) + tux.cmd.mouth_close() + tux.micro.off() + + self.progress_bar() + + tux.wav.play('/tmp/capture.wav') + + self.question(_me.string('Sound')) + if self.ok_flag == True: + self.f.write('%s : Microphone OK\n'%time.asctime()) + else: + self.f.write('%s : No micro signal\n'%time.asctime()) + + self.progress_bar() + + self.question(_me.string('Out')) + tux.sys.wait(0.1) + if self.ok_flag == True: + tux.cmd.sound_play(1) + + self.question(_me.string('Sound')) + if self.ok_flag == True: + self.f.write('%s : Sound output OK\n'%time.asctime()) + else: + self.f.write('%s : No sound output\n'%time.asctime()) + else: + self.f.write('%s : The sound output has not been tested\n'%time.asctime()) + + self.progress_bar() + + self.question(_me.string('In')) + if self.ok_flag == True: + tux.sys.wait(5) + self.question(_me.string('Sound')) + if self.ok_flag == True: + self.f.write('%s : Sound input OK\n'%time.asctime()) + else: + self.f.write('%s : No sound input\n'%time.asctime()) + else: + self.f.write('%s : The sound input has not been tested\n'%time.asctime()) + + self.progress_bar() + + def motors_tests(self): + self.f.write('%s :\n'%time.asctime()) + self.f.write('%s : Sixth step : Motors\n'%time.asctime()) + self.f.write('%s : ------------------------------------------------------------- \n'%time.asctime()) + + self.warning(_me.string('Disconnect')) + + self.head = [False, False] + self.lwing = [False, False] + self.rwing = [False, False] + self.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() + self.f.write('done\n') + + self.progress_bar() + + self.f.write('%s : Send a command to raise the wings'%time.asctime()) + self.send_command(tux.cmd.raw(0x39, 0, 0, 0), 0, 0) + + self.progress_bar() + + self.f.write('%s : Send a command to lower the wings'%time.asctime()) + self.send_command(tux.cmd.raw(0x3A, 0, 0, 0), 0, 0) + + self.progress_bar() + + self.f.write('%s : Move the wings 8 time'%time.asctime()) + self.send_command(tux.cmd.wings_on(8), tux.status.wings_counter, 0) + + self.progress_bar() + + self.f.write('%s : Left wing pressed : %s\n'%(time.asctime(), str(self.lwing[0]))) + self.f.write('%s : Right wing pressed : %s\n'%(time.asctime(), str(self.rwing[0]))) + self.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) + + self.progress_bar() + + self.f.write('%s : Send a command to open the eyes'%time.asctime()) + self.send_command(tux.cmd.eyes_open(), tux.status.eyes_closed, 1) + + self.progress_bar() + + self.f.write('%s : Send a command to open the mouth'%time.asctime()) + self.send_command(tux.cmd.mouth_open(), tux.status.mouth_closed, 1) + + self.progress_bar() + + self.f.write('%s : Send a command to close the mouth'%time.asctime()) + self.send_command(tux.cmd.mouth_close(), tux.status.mouth_closed, 0) + + self.progress_bar() + + self.f.write('%s : Send a command to spin right'%time.asctime()) + self.send_command(tux.cmd.spinr_on(4), tux.status.spin_counter, 0) + + self.progress_bar() + + self.f.write('%s : Send a command to spin left'%time.asctime()) + self.send_command(tux.cmd.spinl_on(4), tux.status.spin_counter, 0) + + self.progress_bar() + + self.f.write('%s\n'%time.asctime()) + tux.sys.wait(2) + if tux.status.charger_state() == 1: + self.f.write('%s : Battery charger active\n'%time.asctime()) + else: + self.f.write('%s : Battery charger not active\n'%time.asctime()) + + self.progress_bar() + + 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 + + self.f.close() + self.get_widget('progressbar2T').hide() + self.get_widget('window1').destroy() + + + def on_btnOKT_clicked(self, widget, *args): + self.ok_flag = True + + def on_btnCancelT_clicked(self, widget, *args): + self.cancel_flag = True + + def on_btnStopT_clicked(self, widget, *args): + #self.f.write('%s : Test aborted by user\n'%time.asctime()) + #self.f.close() + self.get_widget('window1').destroy() + +#----------------------------- +# Specific test functions +#----------------------------- + def on_head_bt_pushed(self): + self.head[0] = True + self.tree_store.append(None, ['head pushed']) + + def on_lwing_bt_pushed(self): + self.lwing[0] = True + self.tree_store.append(None, ['left wing pushed']) + + def on_rwing_bt_pushed(self): + self.rwing[0] = True + self.tree_store.append(None, ['right wing pushed']) + + def on_head_bt_released(self): + self.head[1] = True + self.tree_store.append(None, ['head released']) + + def on_lwing_bt_released(self): + self.lwing[1] = True + self.tree_store.append(None, ['left wing released']) + + def on_rwing_bt_released(self): + self.rwing[1] = True + self.tree_store.append(None, ['right wing released']) + + def on_remote(self, key): + if key == 1: + self.key1 = True + self.f.write("%s : Key '1' pressed\n"%time.asctime()) + self.tree_store.append(None, ['key1 pressed']) + elif key == 2: + self.key2 = True + self.f.write("%s : Key '2' pressed\n"%time.asctime()) + self.tree_store.append(None, ['key2 pressed']) + elif key == 3: + self.key3 = True + self.f.write("%s : Key '3' pressed\n"%time.asctime()) + self.tree_store.append(None, ['key3 pressed']) + else: + self.f.write("%s : Key '%d' pressed\n"%(time.asctime(), key)) + + 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 question(self, message): + self.ok_flag = False + self.cancel_flag = False + self.get_widget('btnOKT').show() + self.get_widget('btnCancelT').show() + self.tree_store.clear() + self.tree_store.append(None, [message]) + while self.ok_flag == False and self.cancel_flag == False: + tux.sys.wait(0.1) + self.get_widget('btnOKT').hide() + self.get_widget('btnCancelT').hide() + + + def warning(self, message): + self.ok_flag = False + self.cancel_flag = False + self.get_widget('btnOKT').show() + self.tree_store.clear() + self.tree_store.append(None, [message]) + while self.ok_flag == False: + tux.sys.wait(0.1) + self.get_widget('btnOKT').hide() + + + 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 + + def progress_bar(self): + self.actual_fraction += self.fraction + self.get_widget('progressbar2T').set_fraction(self.actual_fraction) 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-27 15:39:38 UTC (rev 739) +++ software/gadgets/settings/trunk/settings/Scripts/Python/GUI/widget/other.glade 2007-11-27 16:25:48 UTC (rev 740) @@ -33,939 +33,6 @@ <property name="enable_popup">False</property> <child> - <widget class="GtkVBox" id="vbox1"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">0</property> - - <child> - <widget class="GtkHBox" id="hbox1"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">0</property> - - <child> - <widget class="GtkVBox" id="vbox5"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">0</property> - - <child> - <widget class="GtkFrame" id="frame14"> - <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="alignment14"> - <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="fixed13"> - <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">29</property> - <property name="visible">True</property> - <property name="items" translatable="yes"></property> - <property name="add_tearoffs">False</property> - <property name="focus_on_click">True</property> - <signal name="changed" handler="on_cbbWifiChannel_changed" last_modification_time="Wed, 07 Nov 2007 14:23:17 GMT"/> - </widget> - <packing> - <property name="x">240</property> - <property name="y">11</property> - </packing> - </child> - - <child> - <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="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">8</property> - <property name="y">8</property> - </packing> - </child> - - <child> - <widget class="GtkSpinButton" id="spinSleepDelay"> - <property name="width_request">72</property> - <property name="height_request">26</property> - <property name="visible">True</property> - <property name="can_focus">True</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">376</property> - <property name="y">40</property> - </packing> - </child> - - <child> - <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">minutes.</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">456</property> - <property name="y">40</property> - </packing> - </child> - - <child> - <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">label1</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">8</property> - <property name="y">44</property> - </packing> - </child> - - <child> - <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">label1</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">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="lblConfigSleep"> - <property name="visible">True</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> - <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="frame16"> - <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="alignment16"> - <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="fixed15"> - <property name="visible">True</property> - - <child> - <widget class="GtkLabel" id="lblIDNum"> - <property name="width_request">144</property> - <property name="height_request">16</property> - <property name="visible">True</property> - <property name="label" translatable="yes">label3</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">0</property> - <property name="y">8</property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="lblIDName"> - <property name="width_request">144</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_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">0</property> - <property name="y">37</property> - </packing> - </child> - - <child> - <widget class="GtkEntry" id="txtIDNum"> - <property name="width_request">72</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> - </widget> - <packing> - <property name="x">168</property> - <property name="y">4</property> - </packing> - </child> - - <child> - <widget class="GtkEntry" id="txtIDName"> - <property name="width_request">72</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> - </widget> - <packing> - <property name="x">168</property> - <property name="y">32</property> - </packing> - </child> - - <child> - <widget class="GtkButton" id="btnID"> - <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_btnID_clicked" last_modification_time="Mon, 12 Nov 2007 11:35:46 GMT"/> - </widget> - <packing> - <property name="x">8</property> - <property name="y">64</property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="lblCurrentIDNum"> - <property name="width_request">224</property> - <property name="height_request">16</property> - <property name="visible">True</property> - <property name="label" translatable="yes">label3</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">264</property> - <property name="y">8</property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="lblCurrentIDName"> - <property name="width_request">224</property> - <property name="height_request">17</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_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">264</property> - <property name="y">36</property> - </packing> - </child> - </widget> - </child> - </widget> - </child> - - <child> - <widget class="GtkLabel" id="lblConfigID"> - <property name="visible">True</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> - <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="frame17"> - <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="alignment17"> - <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="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="lblConfigTest"> - <property name="visible">True</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> - <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> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - </widget> - <packing> - <property name="tab_expand">False</property> - <property name="tab_fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="lblTabConfig"> - <property name="visible">True</property> - <property name="label" translatable="yes">Configuration</property> - <property name="use_underline">False</property> - <property name="use_markup">False</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">tab</property> - </packing> - </child> - - <child> - <widget class="GtkVBox" id="vbox2"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">0</property> - - <child> - <widget class="GtkVBox" id="vbox4"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">0</property> - - <child> - <widget class="GtkFrame" id="frame12"> - <property name="visible">True</property> - <property name="label_xalign">0</property> - <property name="label_yalign">0.5</property> - <property name="shadow_type">GTK_SHADOW_NONE</property> - - <child> - <widget class="GtkAlignment" id="alignment12"> - <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="GtkScrolledWindow" id="scrolledwindow2"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="hscrollbar_policy">GTK_POLICY_NEVER</property> - <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> - <property name="shadow_type">GTK_SHADOW_NONE</property> - <property name="window_placement">GTK_CORNER_TOP_LEFT</property> - - <child> - <placeholder/> - </child> - </widget> - </child> - </widget> - </child> - - <child> - <widget class="GtkLabel" id="lblVersions"> - <property name="visible">True</property> - <property name="label" translatable="yes"><b>frame12</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="frame13"> - <property name="visible">True</property> - <property name="label_xalign">0</property> - <property name="label_yalign">0.5</property> - <property name="shadow_type">GTK_SHADOW_NONE</property> - - <child> - <widget class="GtkAlignment" id="alignment13"> - <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="GtkScrolledWindow" id="scrolledwindow3"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="hscrollbar_policy">GTK_POLICY_NEVER</property> - <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> - <property name="shadow_type">GTK_SHADOW_NONE</property> - <property name="window_placement">GTK_CORNER_TOP_LEFT</property> - - <child> - <placeholder/> - </child> - </widget> - </child> - </... [truncated message content] |