diff options
author | samr7 <samr7@126591fb-c623-4b62-a76d-97a8e4f34109> | 2008-12-23 20:51:35 +0000 |
---|---|---|
committer | samr7 <samr7@126591fb-c623-4b62-a76d-97a8e4f34109> | 2008-12-23 20:51:35 +0000 |
commit | 29c9219b80f70e88e5e1f70f3ed6a42b62ef9307 (patch) | |
tree | ee6cf7870c1d032cb7acbd9cd0755216f2bc1774 | |
parent | a50d988cb2420fbeca743b0663949ebe79f8b5cf (diff) | |
download | nohands-29c9219b80f70e88e5e1f70f3ed6a42b62ef9307.tar.gz |
Checkpoint hfconsole overhaul.
git-svn-id: http://nohands.svn.sourceforge.net/svnroot/nohands/trunk@78 126591fb-c623-4b62-a76d-97a8e4f34109
65 files changed, 8968 insertions, 2000 deletions
diff --git a/data/Makefile.am b/data/Makefile.am index 62a8f33..efb28ce 100644 --- a/data/Makefile.am +++ b/data/Makefile.am @@ -9,8 +9,17 @@ $(service_DATA): $(service_in_files) Makefile @sed -e "s|\@bindir\@|$(bindir)|" $< > $@ endif -# Glade XML file -glade_DATA = hfconsole.glade dsp-sidebar.png +# Glade XML files +hfconsole_IMAGES = icon.png agconnect.png audioconnect.png \ + contacts.png dialpad.png tel-cell.png \ + battery-0.png battery-1.png battery-2.png battery-3.png \ + battery-4.png battery-5.png \ + mute.png nobt.png noag.png message.png \ + pickup.png redial.png hangup.png holdcall.png swapcall.png \ + signal-0.png signal-1.png signal-2.png signal-3.png signal-4.png \ + signal-5.png signal.png signal-none.png + +glade_DATA = hfconsole.glade $(hfconsole_IMAGES) gladedir = $(datadir)/hfconsole bin_PROGRAMS = hfconsole diff --git a/data/agconnect.png b/data/agconnect.png Binary files differnew file mode 100644 index 0000000..5900680 --- /dev/null +++ b/data/agconnect.png diff --git a/data/audioconnect.png b/data/audioconnect.png Binary files differnew file mode 100644 index 0000000..345b140 --- /dev/null +++ b/data/audioconnect.png diff --git a/data/battery-0.png b/data/battery-0.png Binary files differnew file mode 100644 index 0000000..5fa8700 --- /dev/null +++ b/data/battery-0.png diff --git a/data/battery-1.png b/data/battery-1.png Binary files differnew file mode 100644 index 0000000..9f5fb6b --- /dev/null +++ b/data/battery-1.png diff --git a/data/battery-2.png b/data/battery-2.png Binary files differnew file mode 100644 index 0000000..5dae78d --- /dev/null +++ b/data/battery-2.png diff --git a/data/battery-3.png b/data/battery-3.png Binary files differnew file mode 100644 index 0000000..ec6ba76 --- /dev/null +++ b/data/battery-3.png diff --git a/data/battery-4.png b/data/battery-4.png Binary files differnew file mode 100644 index 0000000..8d71640 --- /dev/null +++ b/data/battery-4.png diff --git a/data/battery-5.png b/data/battery-5.png Binary files differnew file mode 100644 index 0000000..3ea7cf2 --- /dev/null +++ b/data/battery-5.png diff --git a/data/contacts.png b/data/contacts.png Binary files differnew file mode 100644 index 0000000..17cbf87 --- /dev/null +++ b/data/contacts.png diff --git a/data/dialpad.png b/data/dialpad.png Binary files differnew file mode 100644 index 0000000..b2e78f1 --- /dev/null +++ b/data/dialpad.png diff --git a/data/dsp-sidebar.png b/data/dsp-sidebar.png Binary files differdeleted file mode 100644 index fef826e..0000000 --- a/data/dsp-sidebar.png +++ /dev/null diff --git a/data/hangup.png b/data/hangup.png Binary files differnew file mode 100644 index 0000000..c61ee6e --- /dev/null +++ b/data/hangup.png diff --git a/data/hfconsole.glade b/data/hfconsole.glade index d62c845..8df3a37 100644 --- a/data/hfconsole.glade +++ b/data/hfconsole.glade @@ -1,585 +1,1392 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd"> -<!--Generated with glade3 3.4.5 on Sun Dec 14 16:36:47 2008 --> +<!--Generated with glade3 3.4.5 on Tue Dec 23 12:42:43 2008 --> <glade-interface> <widget class="GtkWindow" id="MainWindow"> <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> <property name="title" translatable="yes">Hands Free Console</property> + <property name="icon">icon.png</property> <signal name="destroy" handler="on_MainWindow_destroy"/> <child> - <widget class="GtkVBox" id="vbox1"> + <widget class="GtkNotebook" id="HiddenNotebook"> <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="show_tabs">False</property> + <property name="show_border">False</property> <child> - <widget class="GtkMenuBar" id="menubar1"> - <child> - <widget class="GtkMenuItem" id="menuitem1"> - <property name="visible">True</property> - <property name="label" translatable="yes">_Devices</property> - <property name="use_underline">True</property> - <child> - <widget class="GtkMenu" id="menu1"> - <property name="visible">True</property> - <child> - <widget class="GtkImageMenuItem" id="imagemenuitem2"> - <property name="visible">True</property> - <property name="label">gtk-find</property> - <property name="use_underline">True</property> - <property name="use_stock">True</property> - <signal name="activate" handler="ScanButton_clicked_cb"/> - </widget> - </child> - <child> - <widget class="GtkImageMenuItem" id="imagemenuitem3"> - <property name="visible">True</property> - <property name="label">gtk-preferences</property> - <property name="use_underline">True</property> - <property name="use_stock">True</property> - <signal name="activate" handler="ConfigButton_clicked_cb"/> - </widget> - </child> - <child> - <widget class="GtkSeparatorMenuItem" id="separatormenuitem1"> - <property name="visible">True</property> - </widget> - </child> - <child> - <widget class="GtkImageMenuItem" id="imagemenuitem5"> - <property name="visible">True</property> - <property name="label">gtk-quit</property> - <property name="use_underline">True</property> - <property name="use_stock">True</property> - </widget> - </child> - </widget> - </child> - </widget> - </child> - <child> - <widget class="GtkMenuItem" id="menuitem4"> - <property name="visible">True</property> - <property name="label" translatable="yes">_Help</property> - <property name="use_underline">True</property> - <child> - <widget class="GtkMenu" id="menu3"> - <property name="visible">True</property> - <child> - <widget class="GtkImageMenuItem" id="imagemenuitem10"> - <property name="visible">True</property> - <property name="label">gtk-about</property> - <property name="use_underline">True</property> - <property name="use_stock">True</property> - <signal name="activate" handler="gtk_widget_show" object="AboutDialog"/> - </widget> - </child> - </widget> - </child> - </widget> - </child> - </widget> - <packing> - <property name="expand">False</property> - </packing> - </child> - <child> - <widget class="GtkHBox" id="hbox1"> + <widget class="GtkVBox" id="vbox1"> <property name="visible">True</property> - <property name="border_width">8</property> - <property name="spacing">8</property> <child> <widget class="GtkVBox" id="vbox2"> <property name="visible">True</property> + <property name="border_width">8</property> <property name="spacing">8</property> <child> - <widget class="GtkVBox" id="AudioGatewayBox"> - <property name="width_request">250</property> - <property name="visible">True</property> - <property name="spacing">8</property> - </widget> - </child> - <child> <widget class="GtkHBox" id="hbox2"> <property name="visible">True</property> <property name="spacing">8</property> - <property name="homogeneous">True</property> <child> - <widget class="GtkButton" id="ScanButton"> + <widget class="GtkToggleButton" id="AgSelector"> <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">True</property> - <property name="label">gtk-find</property> - <property name="use_stock">True</property> + <property name="focus_on_click">False</property> <property name="response_id">0</property> - <signal name="clicked" handler="ScanButton_clicked_cb"/> + <signal name="button_press_event" handler="AgSelector_button_press_event_cb"/> + <signal name="toggled" handler="AgSelector_toggled_cb"/> + <child> + <widget class="GtkHBox" id="hbox15"> + <property name="visible">True</property> + <child> + <widget class="GtkLabel" id="AgSelectorLabel"> + <property name="visible">True</property> + <property name="xalign">0</property> + </widget> + </child> + <child> + <widget class="GtkArrow" id="AgSelectorArrow"> + <property name="visible">True</property> + <property name="xpad">4</property> + <property name="arrow_type">GTK_ARROW_DOWN</property> + </widget> + <packing> + <property name="expand">False</property> + <property name="position">1</property> + </packing> + </child> + </widget> + </child> </widget> + <packing> + <property name="expand">False</property> + </packing> </child> <child> - <widget class="GtkButton" id="ConfigButton"> + <widget class="GtkNotebook" id="AgMainStatus"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="receives_default">True</property> - <property name="label">gtk-preferences</property> - <property name="use_stock">True</property> - <property name="response_id">0</property> - <signal name="clicked" handler="ConfigButton_clicked_cb"/> + <property name="show_tabs">False</property> + <property name="show_border">False</property> + <child> + <widget class="GtkImage" id="image22"> + <property name="visible">True</property> + <property name="tooltip" translatable="yes">Has Service</property> + <property name="pixbuf">signal-0.png</property> + </widget> + </child> + <child> + <placeholder/> + <packing> + <property name="type">tab</property> + </packing> + </child> + <child> + <widget class="GtkImage" id="image23"> + <property name="visible">True</property> + <property name="tooltip" translatable="yes">Has Service</property> + <property name="pixbuf">signal-1.png</property> + </widget> + <packing> + <property name="position">1</property> + </packing> + </child> + <child> + <placeholder/> + <packing> + <property name="type">tab</property> + </packing> + </child> + <child> + <widget class="GtkImage" id="image24"> + <property name="visible">True</property> + <property name="tooltip" translatable="yes">Has Service</property> + <property name="pixbuf">signal-2.png</property> + </widget> + <packing> + <property name="position">2</property> + </packing> + </child> + <child> + <placeholder/> + <packing> + <property name="type">tab</property> + </packing> + </child> + <child> + <widget class="GtkImage" id="image25"> + <property name="visible">True</property> + <property name="tooltip" translatable="yes">Has Service</property> + <property name="pixbuf">signal-3.png</property> + </widget> + <packing> + <property name="position">3</property> + </packing> + </child> + <child> + <placeholder/> + <packing> + <property name="type">tab</property> + </packing> + </child> + <child> + <widget class="GtkImage" id="image26"> + <property name="visible">True</property> + <property name="tooltip" translatable="yes">Has Service</property> + <property name="pixbuf">signal-4.png</property> + </widget> + <packing> + <property name="position">4</property> + </packing> + </child> + <child> + <placeholder/> + <packing> + <property name="type">tab</property> + </packing> + </child> + <child> + <widget class="GtkImage" id="image27"> + <property name="visible">True</property> + <property name="tooltip" translatable="yes">Has Service</property> + <property name="pixbuf">signal-5.png</property> + </widget> + <packing> + <property name="position">5</property> + </packing> + </child> + <child> + <placeholder/> + <packing> + <property name="type">tab</property> + </packing> + </child> + <child> + <widget class="GtkImage" id="AgSignalUnknownIndicator"> + <property name="visible">True</property> + <property name="tooltip" translatable="yes">Has Service</property> + <property name="pixbuf">signal.png</property> + </widget> + <packing> + <property name="position">6</property> + </packing> + </child> + <child> + <placeholder/> + <packing> + <property name="type">tab</property> + </packing> + </child> + <child> + <widget class="GtkImage" id="image28"> + <property name="visible">True</property> + <property name="tooltip" translatable="yes">No Service</property> + <property name="pixbuf">signal-none.png</property> + </widget> + <packing> + <property name="position">7</property> + </packing> + </child> + <child> + <placeholder/> + <packing> + <property name="type">tab</property> + </packing> + </child> + <child> + <widget class="GtkImage" id="image29"> + <property name="visible">True</property> + <property name="pixbuf">noag.png</property> + </widget> + <packing> + <property name="position">8</property> + </packing> + </child> + <child> + <placeholder/> + <packing> + <property name="type">tab</property> + </packing> + </child> + <child> + <widget class="GtkImage" id="NoBluetoothIndicator"> + <property name="visible">True</property> + <property name="pixbuf">nobt.png</property> + </widget> + <packing> + <property name="position">9</property> + </packing> + </child> + <child> + <placeholder/> + <packing> + <property name="type">tab</property> + </packing> + </child> </widget> <packing> + <property name="expand">False</property> + <property name="fill">False</property> <property name="position">1</property> </packing> </child> - </widget> - <packing> - <property name="expand">False</property> - <property name="position">1</property> - </packing> - </child> - </widget> - </child> - <child> - <widget class="GtkVBox" id="DialPad"> - <property name="visible">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="spacing">8</property> - <child> - <widget class="GtkHBox" id="PhoneNumEntryBox"> - <property name="visible">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="spacing">8</property> <child> - <widget class="GtkEntry" id="PhoneNumEntry"> + <widget class="GtkNotebook" id="AgBatteryStatus"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="has_focus">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="show_tabs">False</property> + <property name="show_border">False</property> + <child> + <widget class="GtkImage" id="image34"> + <property name="visible">True</property> + <property name="pixbuf">battery-0.png</property> + </widget> + </child> + <child> + <placeholder/> + <packing> + <property name="type">tab</property> + </packing> + </child> + <child> + <widget class="GtkImage" id="image33"> + <property name="visible">True</property> + <property name="pixbuf">battery-1.png</property> + </widget> + <packing> + <property name="position">1</property> + </packing> + </child> + <child> + <placeholder/> + <packing> + <property name="type">tab</property> + </packing> + </child> + <child> + <widget class="GtkImage" id="image32"> + <property name="visible">True</property> + <property name="pixbuf">battery-2.png</property> + </widget> + <packing> + <property name="position">2</property> + </packing> + </child> + <child> + <placeholder/> + <packing> + <property name="type">tab</property> + </packing> + </child> + <child> + <widget class="GtkImage" id="image31"> + <property name="visible">True</property> + <property name="pixbuf">battery-3.png</property> + </widget> + <packing> + <property name="position">3</property> + </packing> + </child> + <child> + <placeholder/> + <packing> + <property name="type">tab</property> + </packing> + </child> + <child> + <widget class="GtkImage" id="image17"> + <property name="visible">True</property> + <property name="pixbuf">battery-4.png</property> + </widget> + <packing> + <property name="position">4</property> + </packing> + </child> + <child> + <placeholder/> + <packing> + <property name="type">tab</property> + </packing> + </child> + <child> + <widget class="GtkImage" id="image8"> + <property name="visible">True</property> + <property name="pixbuf">battery-5.png</property> + </widget> + <packing> + <property name="position">5</property> + </packing> + </child> + <child> + <placeholder/> + <packing> + <property name="type">tab</property> + </packing> + </child> </widget> + <packing> + <property name="expand">False</property> + <property name="position">2</property> + </packing> </child> <child> - <widget class="GtkButton" id="PhoneNumBs"> + <widget class="GtkImage" id="MessageIndicator"> <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="label"><</property> - <property name="response_id">0</property> - <signal name="clicked" handler="PhoneNumBs_clicked_cb"/> + <property name="tooltip" translatable="yes">Message Waiting</property> + <property name="pixbuf">message.png</property> </widget> <packing> <property name="expand">False</property> <property name="fill">False</property> - <property name="position">1</property> + <property name="position">3</property> </packing> </child> - </widget> - </child> - <child> - <widget class="GtkTable" id="DigitButtonBox"> - <property name="visible">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="n_rows">4</property> - <property name="n_columns">3</property> - <property name="column_spacing">8</property> - <property name="row_spacing">8</property> - <property name="homogeneous">True</property> <child> - <widget class="GtkButton" id="DigitButtonPnd"> + <widget class="GtkVSeparator" id="vseparator1"> <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="focus_on_click">False</property> - <property name="response_id">0</property> - <signal name="pressed" handler="DigitButton_pressed_cb" object="#"/> - <signal name="clicked" handler="DigitButton_clicked_cb" object="#"/> - <child> - <widget class="GtkLabel" id="DigitLabelPnd"> - <property name="visible">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="label" translatable="yes"><span size="xx-large" weight="heavy">#</span> -</property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_CENTER</property> - </widget> - </child> </widget> <packing> - <property name="left_attach">2</property> - <property name="right_attach">3</property> - <property name="top_attach">3</property> - <property name="bottom_attach">4</property> + <property name="expand">False</property> + <property name="position">4</property> </packing> </child> <child> - <widget class="GtkButton" id="DigitButton0"> + <widget class="GtkLabel" id="AudioGatewayStateLabel"> <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="focus_on_click">False</property> - <property name="response_id">0</property> - <signal name="pressed" handler="DigitButton_pressed_cb" object="0"/> - <signal name="clicked" handler="DigitButton_clicked_cb" object="0"/> - <child> - <widget class="GtkLabel" id="DigitLabel0"> - <property name="visible">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="label" translatable="yes"><span size="xx-large" weight="heavy">0</span> + <property name="xalign">0</property> + <property name="label"> </property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_CENTER</property> - </widget> - </child> </widget> <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">3</property> - <property name="bottom_attach">4</property> + <property name="position">5</property> </packing> </child> + </widget> + <packing> + <property name="expand">False</property> + </packing> + </child> + <child> + <widget class="GtkHBox" id="hbox1"> + <property name="visible">True</property> + <property name="spacing">8</property> <child> - <widget class="GtkButton" id="DigitButtonAst"> + <widget class="GtkVButtonBox" id="vbuttonbox1"> <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="focus_on_click">False</property> - <property name="response_id">0</property> - <signal name="pressed" handler="DigitButton_pressed_cb" object="*"/> - <signal name="clicked" handler="DigitButton_clicked_cb" object="*"/> + <property name="spacing">8</property> + <property name="layout_style">GTK_BUTTONBOX_START</property> <child> - <widget class="GtkLabel" id="DigitLabelAst"> + <widget class="GtkButton" id="BarDialPad"> <property name="visible">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="label" translatable="yes"><span size="xx-large" weight="heavy">*</span> -</property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_CENTER</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="focus_on_click">False</property> + <property name="response_id">0</property> + <signal name="clicked" handler="BarDialPad_clicked_cb"/> + <child> + <widget class="GtkImage" id="image39"> + <property name="visible">True</property> + <property name="pixbuf">dialpad.png</property> + </widget> + </child> </widget> </child> - </widget> - <packing> - <property name="top_attach">3</property> - <property name="bottom_attach">4</property> - </packing> - </child> - <child> - <widget class="GtkButton" id="DigitButton9"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="focus_on_click">False</property> - <property name="response_id">0</property> - <signal name="pressed" handler="DigitButton_pressed_cb" object="9"/> - <signal name="clicked" handler="DigitButton_clicked_cb" object="9"/> <child> - <widget class="GtkLabel" id="DigitLabel9"> + <widget class="GtkButton" id="BarContacts"> <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="focus_on_click">False</property> + <property name="response_id">0</property> + <signal name="clicked" handler="BarContacts_clicked_cb"/> + <child> + <widget class="GtkImage" id="image40"> + <property name="visible">True</property> + <property name="pixbuf">contacts.png</property> + </widget> + </child> + </widget> + <packing> + <property name="position">1</property> + </packing> + </child> + <child> + <widget class="GtkButton" id="AgConnect"> + <property name="receives_default">True</property> + <property name="tooltip" translatable="yes">Connect to Device</property> + <property name="focus_on_click">False</property> + <property name="response_id">0</property> + <signal name="clicked" handler="AgConnect_clicked_cb"/> + <child> + <widget class="GtkImage" id="image14"> + <property name="visible">True</property> + <property name="pixbuf">agconnect.png</property> + </widget> + </child> + </widget> + <packing> + <property name="position">2</property> + </packing> + </child> + <child> + <widget class="GtkButton" id="AgDial"> <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="label" translatable="yes"><span size="xx-large" weight="heavy">9</span> -wxyz</property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_CENTER</property> + <property name="tooltip" translatable="yes">Dial Phone Number</property> + <property name="focus_on_click">False</property> + <property name="response_id">0</property> + <signal name="clicked" handler="AgDial_clicked_cb"/> + <child> + <widget class="GtkImage" id="image18"> + <property name="visible">True</property> + <property name="pixbuf">pickup.png</property> + </widget> + </child> </widget> + <packing> + <property name="position">3</property> + </packing> </child> - </widget> - <packing> - <property name="left_attach">2</property> - <property name="right_attach">3</property> - <property name="top_attach">2</property> - <property name="bottom_attach">3</property> - </packing> - </child> - <child> - <widget class="GtkButton" id="DigitButton8"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="focus_on_click">False</property> - <property name="response_id">0</property> - <signal name="pressed" handler="DigitButton_pressed_cb" object="8"/> - <signal name="clicked" handler="DigitButton_clicked_cb" object="8"/> <child> - <widget class="GtkLabel" id="DigitLabel8"> - <property name="visible">True</property> + <widget class="GtkButton" id="AgRedial"> <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="label" translatable="yes"><span size="xx-large" weight="heavy">8</span> -tuv</property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_CENTER</property> + <property name="tooltip" translatable="yes">Redial Last Number</property> + <property name="focus_on_click">False</property> + <property name="response_id">0</property> + <signal name="clicked" handler="AgRedial_clicked_cb"/> + <child> + <widget class="GtkImage" id="image16"> + <property name="visible">True</property> + <property name="pixbuf">redial.png</property> + </widget> + </child> </widget> + <packing> + <property name="position">4</property> + <property name="secondary">True</property> + </packing> + </child> + <child> + <widget class="GtkButton" id="AgHangUp"> + <property name="receives_default">True</property> + <property name="tooltip" translatable="yes">Hang Up Active Call</property> + <property name="focus_on_click">False</property> + <property name="response_id">0</property> + <signal name="clicked" handler="AgHangUp_clicked_cb"/> + <child> + <widget class="GtkImage" id="image20"> + <property name="visible">True</property> + <property name="pixbuf">hangup.png</property> + </widget> + </child> + </widget> + <packing> + <property name="position">5</property> + </packing> + </child> + <child> + <widget class="GtkButton" id="AgHoldCall"> + <property name="receives_default">True</property> + <property name="tooltip" translatable="yes">Hold Active Call</property> + <property name="focus_on_click">False</property> + <property name="response_id">0</property> + <signal name="clicked" handler="AgHoldCall_clicked_cb"/> + <child> + <widget class="GtkImage" id="image15"> + <property name="visible">True</property> + <property name="pixbuf">holdcall.png</property> + <property name="icon_size">6</property> + </widget> + </child> + </widget> + <packing> + <property name="position">6</property> + </packing> + </child> + <child> + <widget class="GtkButton" id="AgSwapCall"> + <property name="receives_default">True</property> + <property name="tooltip" translatable="yes">Hold Active Call</property> + <property name="focus_on_click">False</property> + <property name="response_id">0</property> + <signal name="clicked" handler="AgSwapCall_clicked_cb"/> + <child> + <widget class="GtkImage" id="image21"> + <property name="visible">True</property> + <property name="pixbuf">swapcall.png</property> + <property name="icon_size">6</property> + </widget> + </child> + </widget> + <packing> + <property name="position">7</property> + </packing> </child> </widget> <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">2</property> - <property name="bottom_attach">3</property> + <property name="expand">False</property> </packing> </child> <child> - <widget class="GtkButton" id="DigitButton7"> + <widget class="GtkNotebook" id="FrontNotebook"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="receives_default">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="focus_on_click">False</property> - <property name="response_id">0</property> - <signal name="pressed" handler="DigitButton_pressed_cb" object="7"/> - <signal name="clicked" handler="DigitButton_clicked_cb" object="7"/> + <property name="show_tabs">False</property> + <property name="show_border">False</property> + <property name="homogeneous">True</property> + <signal name="switch_page" handler="FrontNotebook_switch_page_cb"/> <child> - <widget class="GtkLabel" id="DigitLabel7"> + <widget class="GtkAspectFrame" id="DialPadTab"> <property name="visible">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="label" translatable="yes"><span size="xx-large" weight="heavy">7</span> + <property name="label_xalign">0</property> + <property name="label_yalign">0</property> + <property name="shadow_type">GTK_SHADOW_NONE</property> + <property name="xalign">0</property> + <property name="yalign">0</property> + <property name="ratio">0.75</property> + <property name="obey_child">False</property> + <child> + <widget class="GtkVBox" id="DialPad"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="spacing">8</property> + <child> + <widget class="GtkHBox" id="PhoneNumEntryBox"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="spacing">8</property> + <child> + <widget class="GtkEntry" id="PhoneNumEntry"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="has_focus">True</property> + <property name="is_focus">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + </widget> + </child> + <child> + <widget class="GtkButton" id="PhoneNumBs"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="focus_on_click">False</property> + <property name="response_id">0</property> + <signal name="clicked" handler="PhoneNumBs_clicked_cb"/> + <child> + <widget class="GtkImage" id="image19"> + <property name="visible">True</property> + <property name="stock">gtk-go-back</property> + <property name="icon_size">5</property> + </widget> + </child> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + </widget> + <packing> + <property name="expand">False</property> + </packing> + </child> + <child> + <widget class="GtkTable" id="DigitButtonBox"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="n_rows">4</property> + <property name="n_columns">3</property> + <property name="column_spacing">8</property> + <property name="row_spacing">8</property> + <property name="homogeneous">True</property> + <child> + <widget class="GtkButton" id="DigitButtonAst"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="focus_on_click">False</property> + <property name="response_id">0</property> + <signal name="pressed" handler="DigitButton_pressed_cb" object="*"/> + <signal name="clicked" handler="DigitButton_clicked_cb" object="*"/> + <child> + <widget class="GtkLabel" id="DigitLabelAst"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="label" translatable="yes"><span size="xx-large" weight="heavy">*</span> +</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_CENTER</property> + </widget> + </child> + </widget> + <packing> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> + <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property> + <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property> + </packing> + </child> + <child> + <widget class="GtkButton" id="DigitButton7"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="focus_on_click">False</property> + <property name="response_id">0</property> + <signal name="pressed" handler="DigitButton_pressed_cb" object="7"/> + <signal name="clicked" handler="DigitButton_clicked_cb" object="7"/> + <child> + <widget class="GtkLabel" id="DigitLabel7"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="label" translatable="yes"><span size="xx-large" weight="heavy">7</span> pqrs</property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_CENTER</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_CENTER</property> + </widget> + </child> + </widget> + <packing> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property> + <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property> + </packing> + </child> + <child> + <widget class="GtkButton" id="DigitButton4"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="focus_on_click">False</property> + <property name="response_id">0</property> + <signal name="pressed" handler="DigitButton_pressed_cb" object="4"/> + <signal name="clicked" handler="DigitButton_clicked_cb" object="4"/> + <child> + <widget class="GtkLabel" id="DigitLabel4"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="label" translatable="yes"><span size="xx-large" weight="heavy">4</span> +ghi</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_CENTER</property> + </widget> + </child> + </widget> + <packing> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property> + <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property> + </packing> + </child> + <child> + <widget class="GtkButton" id="DigitButton1"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="focus_on_click">False</property> + <property name="response_id">0</property> + <signal name="pressed" handler="DigitButton_pressed_cb" object="1"/> + <signal name="clicked" handler="DigitButton_clicked_cb" object="1"/> + <child> + <widget class="GtkLabel" id="DigitLabel1"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="label" translatable="yes"><span size="xx-large" weight="heavy">1</span> +</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_CENTER</property> + </widget> + </child> + </widget> + <packing> + <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property> + <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property> + </packing> + </child> + <child> + <widget class="GtkButton" id="DigitButton2"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="focus_on_click">False</property> + <property name="response_id">0</property> + <signal name="pressed" handler="DigitButton_pressed_cb" object="2"/> + <signal name="clicked" handler="DigitButton_clicked_cb" object="2"/> + <child> + <widget class="GtkLabel" id="DigitLabel2"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="label" translatable="yes"><span size="xx-large" weight="heavy">2</span> +abc</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_CENTER</property> + </widget> + </child> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property> + <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property> + </packing> + </child> + <child> + <widget class="GtkButton" id="DigitButton5"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="focus_on_click">False</property> + <property name="response_id">0</property> + <signal name="pressed" handler="DigitButton_pressed_cb" object="5"/> + <signal name="clicked" handler="DigitButton_clicked_cb" object="5"/> + <child> + <widget class="GtkLabel" id="DigitLabel5"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="label" translatable="yes"><span size="xx-large" weight="heavy">5</span> +jkl</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_CENTER</property> + </widget> + </child> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property> + <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property> + </packing> + </child> + <child> + <widget class="GtkButton" id="DigitButton8"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="focus_on_click">False</property> + <property name="response_id">0</property> + <signal name="pressed" handler="DigitButton_pressed_cb" object="8"/> + <signal name="clicked" handler="DigitButton_clicked_cb" object="8"/> + <child> + <widget class="GtkLabel" id="DigitLabel8"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="label" translatable="yes"><span size="xx-large" weight="heavy">8</span> +tuv</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_CENTER</property> + </widget> + </child> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property> + <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property> + </packing> + </child> + <child> + <widget class="GtkButton" id="DigitButton0"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="focus_on_click">False</property> + <property name="response_id">0</property> + <signal name="pressed" handler="DigitButton_pressed_cb" object="0"/> + <signal name="clicked" handler="DigitButton_clicked_cb" object="0"/> + <child> + <widget class="GtkLabel" id="DigitLabel0"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="label" translatable="yes"><span size="xx-large" weight="heavy">0</span> +</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_CENTER</property> + </widget> + </child> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> + <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property> + <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property> + </packing> + </child> + <child> + <widget class="GtkButton" id="DigitButtonPnd"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="focus_on_click">False</property> + <property name="response_id">0</property> + <signal name="pressed" handler="DigitButton_pressed_cb" object="#"/> + <signal name="clicked" handler="DigitButton_clicked_cb" object="#"/> + <child> + <widget class="GtkLabel" id="DigitLabelPnd"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="label" translatable="yes"><span size="xx-large" weight="heavy">#</span> +</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_CENTER</property> + </widget> + </child> + </widget> + <packing> + <property name="left_attach">2</property> + <property name="right_attach">3</property> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> + <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property> + <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property> + </packing> + </child> + <child> + <widget class="GtkButton" id="DigitButton9"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="focus_on_click">False</property> + <property name="response_id">0</property> + <signal name="pressed" handler="DigitButton_pressed_cb" object="9"/> + <signal name="clicked" handler="DigitButton_clicked_cb" object="9"/> + <child> + <widget class="GtkLabel" id="DigitLabel9"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="label" translatable="yes"><span size="xx-large" weight="heavy">9</span> +wxyz</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_CENTER</property> + </widget> + </child> + </widget> + <packing> + <property name="left_attach">2</property> + <property name="right_attach">3</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property> + <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property> + </packing> + </child> + <child> + <widget class="GtkButton" id="DigitButton6"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="focus_on_click">False</property> + <property name="response_id">0</property> + <signal name="pressed" handler="DigitButton_pressed_cb" object="6"/> + <signal name="clicked" handler="DigitButton_clicked_cb" object="6"/> + <child> + <widget class="GtkLabel" id="DigitLabel6"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="label" translatable="yes"><span size="xx-large" weight="heavy">6</span> +mno</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_CENTER</property> + </widget> + </child> + </widget> + <packing> + <property name="left_attach">2</property> + <property name="right_attach">3</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property> + <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property> + </packing> + </child> + <child> + <widget class="GtkButton" id="DigitButton3"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="focus_on_click">False</property> + <property name="response_id">0</property> + <signal name="pressed" handler="DigitButton_pressed_cb" object="3"/> + <signal name="clicked" handler="DigitButton_clicked_cb" object="3"/> + <child> + <widget class="GtkLabel" id="DigitLabel3"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="label" translatable="yes"><span size="xx-large" weight="heavy">3</span> +def</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_CENTER</property> + </widget> + </child> + </widget> + <packing> + <property name="left_attach">2</property> + <property name="right_attach">3</property> + <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property> + <property name="y_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property> + </packing> + </child> + </widget> + <packing> + <property name="position">1</property> + </packing> + </child> + </widget> + </child> + </widget> + </child> + <child> + <placeholder/> + <packing> + <property name="type">tab</property> + </packing> + </child> + <child> + <widget class="GtkVBox" id="ContactsTab"> + <property name="visible">True</property> + <property name="spacing">8</property> + <child> + <widget class="GtkLabel" id="label67"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes"><b>Contacts</b></property> + <property name="use_markup">True</property> + <property name="ellipsize">PANGO_ELLIPSIZE_START</property> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + <child> + <widget class="GtkScrolledWindow" id="scrolledwindow3"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> + <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> + <property name="shadow_type">GTK_SHADOW_IN</property> + <child> + <widget class="GtkTreeView" id="ContactsList"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="headers_clickable">True</property> + </widget> + </child> + </widget> + <packing> + <property name="position">1</property> + </packing> + </child> + <child> + <widget class="GtkHButtonBox" id="hbuttonbox4"> + <property name="visible">True</property> + <property name="spacing">8</property> + <property name="layout_style">GTK_BUTTONBOX_END</property> + <child> + <widget class="GtkButton" id="ContactsDelete"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="label">gtk-delete</property> + <property name="use_stock">True</property> + <property name="response_id">0</property> + </widget> + </child> + <child> + <widget class="GtkButton" id="ContactsNew"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="label">gtk-new</property> + <property name="use_stock">True</property> + <property name="response_id">0</property> + </widget> + <packing> + <property name="position">1</property> + </packing> + </child> + <child> + <widget class="GtkButton" id="ContactsEdit"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="label">gtk-edit</property> + <property name="use_stock">True</property> + <property name="response_id">0</property> + </widget> + <packing> + <property name="position">2</property> + </packing> + </child> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">2</property> + </packing> + </child> </widget> + <packing> + <property name="position">1</property> + </packing> + </child> + <child> + <placeholder/> + <packing> + <property name="type">tab</property> + </packing> </child> </widget> <packing> - <property name="top_attach">2</property> - <property name="bottom_attach">3</property> + <property name="position">1</property> </packing> </child> <child> - <widget class="GtkButton" id="DigitButton6"> + <widget class="GtkVButtonBox" id="vbuttonbox2"> <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="focus_on_click">False</property> - <property name="response_id">0</property> - <signal name="pressed" handler="DigitButton_pressed_cb" object="6"/> - <signal name="clicked" handler="DigitButton_clicked_cb" object="6"/> + <property name="spacing">8</property> + <property name="layout_style">GTK_BUTTONBOX_START</property> <child> - <widget class="GtkLabel" id="DigitLabel6"> + <widget class="GtkToggleButton" id="Mute"> <property name="visible">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="label" translatable="yes"><span size="xx-large" weight="heavy">6</span> -mno</property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_CENTER</property> + <property name="tooltip" translatable="yes">Mute Microphone</property> + <property name="focus_on_click">False</property> + <property name="response_id">0</property> + <signal name="toggled" handler="Mute_toggled_cb"/> + <child> + <widget class="GtkImage" id="image12"> + <property name="visible">True</property> + <property name="pixbuf">mute.png</property> + <property name="icon_size">5</property> + </widget> + </child> </widget> + <packing> + <property name="expand">False</property> + </packing> + </child> + <child> + <widget class="GtkToggleButton" id="AgAudioToggle"> + <property name="visible">True</property> + <property name="receives_default">True</property> + <property name="tooltip" translatable="yes">Connect Audio</property> + <property name="focus_on_click">False</property> + <property name="image_position">GTK_POS_TOP</property> + <property name="response_id">0</property> + <signal name="toggled" handler="AgAudioToggle_toggled_cb"/> + <child> + <widget class="GtkImage" id="image13"> + <property name="visible">True</property> + <property name="pixbuf">audioconnect.png</property> + <property name="icon_size">6</property> + </widget> + </child> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + <child> + <widget class="GtkToggleButton" id="RecordCall"> + <property name="visible">True</property> + <property name="receives_default">True</property> + <property name="tooltip" translatable="yes">Record Call</property> + <property name="focus_on_click">False</property> + <property name="response_id">0</property> + <child> + <widget class="GtkImage" id="image11"> + <property name="visible">True</property> + <property name="stock">gtk-media-record</property> + <property name="icon_size">6</property> + </widget> + </child> + </widget> + <packing> + <property name="position">2</property> + </packing> + </child> + <child> + <widget class="GtkButton" id="ConfigOpen"> + <property name="visible">True</property> + <property name="tooltip" translatable="yes">Open Preferences</property> + <property name="focus_on_click">False</property> + <property name="response_id">0</property> + <signal name="clicked" handler="ConfigOpen_clicked_cb"/> + <child> + <widget class="GtkImage" id="image9"> + <property name="visible">True</property> + <property name="stock">gtk-preferences</property> + <property name="icon_size">6</property> + </widget> + </child> + </widget> + <packing> + <property name="position">3</property> + <property name="secondary">True</property> + </packing> </child> </widget> <packing> - <property name="left_attach">2</property> - <property name="right_attach">3</property> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> + <property name="expand">False</property> + <property name="position">2</property> </packing> </child> + </widget> + <packing> + <property name="position">1</property> + </packing> + </child> + </widget> + </child> + <child> + <widget class="GtkStatusbar" id="StatusBar"> + <property name="visible">True</property> + <property name="spacing">2</property> + </widget> + <packing> + <property name="expand">False</property> + <property name="position">1</property> + </packing> + </child> + </widget> + </child> + <child> + <placeholder/> + <packing> + <property name="type">tab</property> + </packing> + </child> + <child> + <widget class="GtkVBox" id="DevicesTab"> + <property name="visible">True</property> + <property name="border_width">8</property> + <property name="spacing">8</property> + <child> + <widget class="GtkLabel" id="label57"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes"><b>Known Devices:</b></property> + <property name="use_markup">True</property> + <property name="ellipsize">PANGO_ELLIPSIZE_START</property> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + <child> + <widget class="GtkHBox" id="hbox6"> + <property name="visible">True</property> + <property name="spacing">8</property> + <child> + <widget class="GtkScrolledWindow" id="scrolledwindow4"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="hscrollbar_policy">GTK_POLICY_NEVER</property> + <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> + <property name="shadow_type">GTK_SHADOW_IN</property> <child> - <widget class="GtkButton" id="DigitButton5"> + <widget class="GtkTreeView" id="DevicesList"> + <property name="width_request">300</property> + <property name="height_request">200</property> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="receives_default">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="focus_on_click">False</property> - <property name="response_id">0</property> - <signal name="pressed" handler="DigitButton_pressed_cb" object="5"/> - <signal name="clicked" handler="DigitButton_clicked_cb" object="5"/> + <property name="headers_clickable">True</property> + </widget> + </child> + </widget> + </child> + <child> + <widget class="GtkVBox" id="DevicesProperties"> + <property name="visible">True</property> + <property name="border_width">8</property> + <property name="spacing">12</property> + <child> + <widget class="GtkVBox" id="vbox11"> + <property name="visible">True</property> <child> - <widget class="GtkLabel" id="DigitLabel5"> + <widget class="GtkLabel" id="label58"> <property name="visible">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="label" translatable="yes"><span size="xx-large" weight="heavy">5</span> -jkl</property> + <property name="xalign">0</property> + <property name="label" translatable="yes"><b>Device Address</b></property> <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_CENTER</property> </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="DevicesDevAddr"> + <property name="visible">True</property> + </widget> + <packing> + <property name="position">1</property> + </packing> </child> </widget> <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> + <property name="expand">False</property> + <property name="fill">False</property> </packing> </child> <child> - <widget class="GtkButton" id="DigitButton4"> + <widget class="GtkButton" id="DevicesDelete"> <property name="visible">True</property> <property name="can_focus">True</property> <property name="receives_default">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="focus_on_click">False</property> + <property name="label">gtk-delete</property> + <property name="use_stock">True</property> <property name="response_id">0</property> - <signal name="pressed" handler="DigitButton_pressed_cb" object="4"/> - <signal name="clicked" handler="DigitButton_clicked_cb" object="4"/> - <child> - <widget class="GtkLabel" id="DigitLabel4"> - <property name="visible">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="label" translatable="yes"><span size="xx-large" weight="heavy">4</span> -ghi</property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_CENTER</property> - </widget> - </child> + <signal name="clicked" handler="DevicesDelete_clicked_cb"/> </widget> <packing> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> </packing> </child> <child> - <widget class="GtkButton" id="DigitButton3"> + <widget class="GtkButton" id="DevicesConnect"> <property name="visible">True</property> <property name="can_focus">True</property> <property name="receives_default">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="focus_on_click">False</property> + <property name="label">gtk-connect</property> + <property name="use_stock">True</property> <property name="response_id">0</property> - <signal name="pressed" handler="DigitButton_pressed_cb" object="3"/> - <signal name="clicked" handler="DigitButton_clicked_cb" object="3"/> - <child> - <widget class="GtkLabel" id="DigitLabel3"> - <property name="visible">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="label" translatable="yes"><span size="xx-large" weight="heavy">3</span> -def</property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_CENTER</property> - </widget> - </child> + <signal name="clicked" handler="DevicesConnect_clicked_cb"/> </widget> <packing> - <property name="left_attach">2</property> - <property name="right_attach">3</property> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">2</property> </packing> </child> <child> - <widget class="GtkButton" id="DigitButton2"> + <widget class="GtkButton" id="DevicesDisconnect"> <property name="visible">True</property> <property name="can_focus">True</property> <property name="receives_default">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="focus_on_click">False</property> + <property name="label">gtk-disconnect</property> + <property name="use_stock">True</property> <property name="response_id">0</property> - <signal name="pressed" handler="DigitButton_pressed_cb" object="2"/> - <signal name="clicked" handler="DigitButton_clicked_cb" object="2"/> - <child> - <widget class="GtkLabel" id="DigitLabel2"> - <property name="visible">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="label" translatable="yes"><span size="xx-large" weight="heavy">2</span> -abc</property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_CENTER</property> - </widget> - </child> + <signal name="clicked" handler="DevicesDisconnect_clicked_cb"/> </widget> <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">3</property> </packing> </child> <child> - <widget class="GtkButton" id="DigitButton1"> + <widget class="GtkVBox" id="vbox12"> <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="focus_on_click">False</property> - <property name="response_id">0</property> - <signal name="pressed" handler="DigitButton_pressed_cb" object="1"/> - <signal name="clicked" handler="DigitButton_clicked_cb" object="1"/> <child> - <widget class="GtkLabel" id="DigitLabel1"> + <widget class="GtkLabel" id="label1"> <property name="visible">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="label" translatable="yes"><span size="xx-large" weight="heavy">1</span> -</property> + <property name="xalign">0</property> + <property name="label" translatable="yes"><b>Auto-Connect</b></property> <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_CENTER</property> </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> </child> - </widget> - </child> - </widget> - <packing> - <property name="position">1</property> - </packing> - </child> - <child> - <widget class="GtkVBox" id="DialCommandBox"> - <property name="visible">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="spacing">8</property> - <property name="homogeneous">True</property> - <child> - <widget class="GtkHBox" id="hbox6"> - <property name="visible">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="spacing">8</property> - <property name="homogeneous">True</property> <child> - <widget class="GtkButton" id="DialPadRedial"> + <widget class="GtkRadioButton" id="DevicesAutoConnectNever"> <property name="visible">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="label" translatable="yes">Redial</property> - <property name="focus_on_click">False</property> + <property name="can_focus">True</property> + <property name="tooltip_text">Auto-Connect Disabled</property> + <property name="label" translatable="yes">Never</property> <property name="response_id">0</property> - <signal name="clicked" handler="DialPadRedial_clicked_cb"/> + <property name="active">True</property> + <property name="draw_indicator">True</property> + <signal name="toggled" handler="DevicesAutoConnectNever_toggled_cb"/> </widget> + <packing> + <property name="position">1</property> + </packing> </child> <child> - <widget class="GtkButton" id="DialPadXfer"> + <widget class="GtkRadioButton" id="DevicesAutoConnectDisabled"> <property name="visible">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="label" translatable="yes">Transfer Voice</property> - <property name="focus_on_click">False</property> + <property name="can_focus">True</property> + <property name="tooltip_text">Auto-Connect Enabled on Successful Connection</property> + <property name="label" translatable="yes">Voluntary</property> <property name="response_id">0</property> - <signal name="activate" handler="DialPadXfer_activate_cb"/> + <property name="active">True</property> + <property name="draw_indicator">True</property> + <property name="group">DevicesAutoConnectNever</property> + <signal name="toggled" handler="DevicesAutoConnectDisabled_toggled_cb"/> </widget> <packing> - <property name="position">1</property> + <property name="position">2</property> + </packing> + </child> + <child> + <widget class="GtkRadioButton" id="DevicesAutoConnectEnabled"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="tooltip_text">Auto-Connect Enabled</property> + <property name="label" translatable="yes">Enabled</property> + <property name="response_id">0</property> + <property name="active">True</property> + <property name="draw_indicator">True</property> + <property name="group">DevicesAutoConnectNever</property> + <signal name="toggled" handler="DevicesAutoConnectEnabled_toggled_cb"/> + </widget> + <packing> + <property name="position">3</property> </packing> </child> </widget> <packing> <property name="expand">False</property> - </packing> - </child> - <child> - <widget class="GtkButton" id="DialPadDial"> - <property name="visible">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="label" translatable="yes">Dial</property> - <property name="focus_on_click">False</property> - <property name="response_id">0</property> - <signal name="clicked" handler="DialPadDial_clicked_cb"/> - </widget> - <packing> - <property name="expand">False</property> - <property name="position">1</property> + <property name="fill">False</property> + <property name="position">4</property> </packing> </child> </widget> <packing> <property name="expand">False</property> - <property name="position">2</property> + <property name="fill">False</property> + <property name="position">1</property> </packing> </child> + </widget> + <packing> + <property name="position">1</property> + </packing> + </child> + <child> + <widget class="GtkHButtonBox" id="hbuttonbox8"> + <property name="visible">True</property> + <property name="spacing">8</property> + <property name="layout_style">GTK_BUTTONBOX_END</property> + <child> + <widget class="GtkButton" id="DevicesAdd"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="label">gtk-add</property> + <property name="use_stock">True</property> + <property name="response_id">0</property> + <signal name="clicked" handler="DevicesAdd_clicked_cb"/> + </widget> + </child> <child> - <widget class="GtkToggleButton" id="Mute"> + <widget class="GtkButton" id="DevicesClose"> <property name="visible">True</property> - <property name="label" translatable="yes">Mute</property> - <property name="focus_on_click">False</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="label">gtk-close</property> + <property name="use_stock">True</property> <property name="response_id">0</property> - <signal name="toggled" handler="Mute_toggled_cb"/> + <signal name="clicked" handler="DevicesClose_clicked_cb"/> </widget> <packing> - <property name="position">3</property> + <property name="position">1</property> </packing> </child> </widget> <packing> <property name="expand">False</property> - <property name="position">1</property> + <property name="position">2</property> </packing> </child> </widget> @@ -588,569 +1395,1528 @@ abc</property> </packing> </child> <child> - <widget class="GtkStatusbar" id="StatusBar"> - <property name="visible">True</property> - <property name="spacing">2</property> - </widget> + <placeholder/> <packing> - <property name="expand">False</property> - <property name="position">2</property> + <property name="type">tab</property> </packing> </child> - </widget> - </child> - </widget> - <widget class="GtkDialog" id="ConfigDialog"> - <property name="width_request">460</property> - <property name="border_width">5</property> - <property name="title" translatable="yes">Configuration</property> - <property name="modal">True</property> - <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property> - <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> - <property name="transient_for">MainWindow</property> - <property name="has_separator">False</property> - <signal name="close" handler="on_ConfigDialog_close"/> - <child internal-child="vbox"> - <widget class="GtkVBox" id="dialog-vbox1"> - <property name="visible">True</property> - <property name="spacing">2</property> <child> - <widget class="GtkNotebook" id="notebook1"> + <widget class="GtkVBox" id="ScanTab"> <property name="visible">True</property> - <property name="can_focus">True</property> + <property name="border_width">8</property> + <property name="spacing">8</property> + <child> + <widget class="GtkLabel" id="label41"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes"><b>Discovered Devices:</b></property> + <property name="use_markup">True</property> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + <child> + <widget class="GtkScrolledWindow" id="scrolledwindow1"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="hscrollbar_policy">GTK_POLICY_NEVER</property> + <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> + <property name="shadow_type">GTK_SHADOW_IN</property> + <child> + <widget class="GtkTreeView" id="ScanResults"> + <property name="width_request">300</property> + <property name="height_request">200</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="headers_clickable">True</property> + </widget> + </child> + </widget> + <packing> + <property name="position">1</property> + </packing> + </child> <child> - <widget class="GtkVBox" id="vbox3"> + <widget class="GtkHBox" id="ScanActivity"> + <property name="no_show_all">True</property> + <child> + <widget class="GtkProgressBar" id="ScanActivityIndicator"> + <property name="visible">True</property> + <property name="activity_mode">True</property> + <property name="pulse_step">0.14999999999999999</property> + <property name="text" translatable="yes">Searching...</property> + </widget> + </child> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">2</property> + </packing> + </child> + <child> + <widget class="GtkHButtonBox" id="hbuttonbox2"> <property name="visible">True</property> - <property name="border_width">18</property> <property name="spacing">8</property> + <property name="layout_style">GTK_BUTTONBOX_END</property> <child> - <widget class="GtkFrame" id="frame1"> + <widget class="GtkButton" id="ScanHistory"> <property name="visible">True</property> - <property name="label_xalign">0</property> - <child> - <widget class="GtkAlignment" id="alignment1"> - <property name="visible">True</property> - <property name="left_padding">8</property> - <child> - <widget class="GtkVBox" id="vbox4"> - <property name="visible">True</property> - <property name="border_width">8</property> - <property name="spacing">8</property> - <child> - <widget class="GtkRadioButton" id="ConfigSecNone"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">No security</property> - <property name="response_id">0</property> - <property name="active">True</property> - <property name="draw_indicator">True</property> - </widget> - </child> - <child> - <widget class="GtkRadioButton" id="ConfigSecAuth"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">Require device authentication</property> - <property name="response_id">1</property> - <property name="active">True</property> - <property name="draw_indicator">True</property> - <property name="group">ConfigSecNone</property> - </widget> - <packing> - <property name="position">1</property> - </packing> - </child> - <child> - <widget class="GtkRadioButton" id="ConfigSecCrypt"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">Require device authentication and encryption</property> - <property name="response_id">2</property> - <property name="active">True</property> - <property name="draw_indicator">True</property> - <property name="group">ConfigSecNone</property> - </widget> - <packing> - <property name="position">2</property> - </packing> - </child> - </widget> - </child> - </widget> - </child> - <child> - <widget class="GtkLabel" id="label5"> - <property name="visible">True</property> - <property name="label" translatable="yes"><b>Security</b></property> - <property name="use_markup">True</property> - </widget> - <packing> - <property name="type">label_item</property> - </packing> - </child> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="label" translatable="yes">History</property> + <property name="response_id">-2</property> + <signal name="clicked" handler="ScanHistory_clicked_cb"/> + </widget> + </child> + <child> + <widget class="GtkButton" id="ScanRestart"> + <property name="visible">True</property> + <property name="sensitive">False</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="label">gtk-refresh</property> + <property name="use_stock">True</property> + <property name="response_id">-1</property> + <signal name="clicked" handler="ScanRestart_clicked_cb"/> </widget> <packing> <property name="expand">False</property> + <property name="position">1</property> </packing> </child> <child> - <widget class="GtkCheckButton" id="ConfigAcceptUnknown"> + <widget class="GtkButton" id="ScanClose"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="label" translatable="yes">Accept connections from unknown devices</property> + <property name="receives_default">True</property> + <property name="label">gtk-close</property> + <property name="use_stock">True</property> <property name="response_id">0</property> - <property name="draw_indicator">True</property> + <signal name="clicked" handler="ScanClose_clicked_cb"/> </widget> <packing> - <property name="expand">False</property> - <property name="position">1</property> + <property name="position">3</property> </packing> </child> <child> - <widget class="GtkCheckButton" id="ConfigAutoReconnect"> + <widget class="GtkButton" id="ScanAdd"> <property name="visible">True</property> + <property name="sensitive">False</property> <property name="can_focus">True</property> - <property name="label" translatable="yes">Enable periodic auto-reconnection</property> + <property name="receives_default">True</property> + <property name="label">gtk-add</property> + <property name="use_stock">True</property> <property name="response_id">0</property> - <property name="draw_indicator">True</property> + <signal name="clicked" handler="ScanAdd_clicked_cb"/> </widget> <packing> - <property name="expand">False</property> + <property name="pack_type">GTK_PACK_END</property> <property name="position">2</property> </packing> </child> + </widget> + <packing> + <property name="expand">False</property> + <property name="position">3</property> + </packing> + </child> + </widget> + <packing> + <property name="position">2</property> + </packing> + </child> + <child> + <placeholder/> + <packing> + <property name="type">tab</property> + </packing> + </child> + <child> + <widget class="GtkVBox" id="HistoryTab"> + <property name="visible">True</property> + <property name="border_width">8</property> + <property name="spacing">8</property> + <child> + <widget class="GtkLabel" id="label40"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes"><b>Device History:</b></property> + <property name="use_markup">True</property> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + <child> + <widget class="GtkScrolledWindow" id="scrolledwindow2"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="hscrollbar_policy">GTK_POLICY_NEVER</property> + <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> + <property name="shadow_type">GTK_SHADOW_IN</property> <child> - <widget class="GtkCheckButton" id="ConfigVoicePersist"> + <widget class="GtkTreeView" id="HistoryResults"> + <property name="width_request">300</property> + <property name="height_request">200</property> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="label" translatable="yes">Keep existing voice connections when console terminates</property> + <property name="headers_clickable">True</property> + </widget> + </child> + </widget> + <packing> + <property name="position">1</property> + </packing> + </child> + <child> + <widget class="GtkHButtonBox" id="hbuttonbox5"> + <property name="visible">True</property> + <property name="spacing">8</property> + <property name="layout_style">GTK_BUTTONBOX_END</property> + <child> + <widget class="GtkButton" id="HistoryOK"> + <property name="visible">True</property> + <property name="sensitive">False</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="label">gtk-add</property> + <property name="use_stock">True</property> <property name="response_id">0</property> - <property name="draw_indicator">True</property> + <signal name="clicked" handler="HistoryOK_clicked_cb"/> + </widget> + </child> + <child> + <widget class="GtkButton" id="HistoryCancel"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="label">gtk-close</property> + <property name="use_stock">True</property> + <property name="response_id">1</property> + <signal name="clicked" handler="HistoryCancel_clicked_cb"/> + </widget> + <packing> + <property name="position">1</property> + </packing> + </child> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">2</property> + </packing> + </child> + </widget> + <packing> + <property name="position">3</property> + </packing> + </child> + <child> + <placeholder/> + <packing> + <property name="type">tab</property> + </packing> + </child> + <child> + <widget class="GtkVBox" id="NewDeviceTab"> + <property name="visible">True</property> + <property name="border_width">8</property> + <property name="spacing">8</property> + <child> + <widget class="GtkHBox" id="hbox14"> + <property name="visible">True</property> + <child> + <widget class="GtkImage" id="image10"> + <property name="visible">True</property> + <property name="xpad">8</property> + <property name="ypad">8</property> + <property name="stock">gtk-dialog-info</property> + <property name="icon_size">6</property> </widget> <packing> <property name="expand">False</property> - <property name="position">3</property> + <property name="fill">False</property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label65"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="xpad">8</property> + <property name="label" translatable="yes"><b>New Device Detected</b> +At least one unknown device attempted to connect. Would you like to add a device to the list of known devices?</property> + <property name="use_markup">True</property> + <property name="wrap">True</property> + <property name="wrap_mode">PANGO_WRAP_WORD_CHAR</property> + </widget> + <packing> + <property name="position">1</property> + </packing> + </child> + </widget> + <packing> + <property name="expand">False</property> + </packing> + </child> + <child> + <widget class="GtkScrolledWindow" id="scrolledwindow5"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="hscrollbar_policy">GTK_POLICY_NEVER</property> + <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> + <property name="shadow_type">GTK_SHADOW_IN</property> + <child> + <widget class="GtkTreeView" id="NewDeviceList"> + <property name="width_request">300</property> + <property name="height_request">200</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="headers_clickable">True</property> + </widget> + </child> + </widget> + <packing> + <property name="position">1</property> + </packing> + </child> + <child> + <widget class="GtkHButtonBox" id="hbuttonbox9"> + <property name="visible">True</property> + <property name="spacing">8</property> + <property name="layout_style">GTK_BUTTONBOX_END</property> + <child> + <widget class="GtkButton" id="NewDeviceClose"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="label">gtk-close</property> + <property name="use_stock">True</property> + <property name="response_id">0</property> + <signal name="clicked" handler="NewDeviceClose_clicked_cb"/> + </widget> + </child> + <child> + <widget class="GtkButton" id="NewDeviceClear"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="label">gtk-clear</property> + <property name="use_stock">True</property> + <property name="response_id">0</property> + <signal name="clicked" handler="NewDeviceClear_clicked_cb"/> + </widget> + <packing> + <property name="position">1</property> + </packing> + </child> + <child> + <widget class="GtkButton" id="NewDeviceAdd"> + <property name="visible">True</property> + <property name="sensitive">False</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="label">gtk-add</property> + <property name="use_stock">True</property> + <property name="response_id">0</property> + <signal name="clicked" handler="NewDeviceAdd_clicked_cb"/> + </widget> + <packing> + <property name="position">2</property> </packing> </child> </widget> <packing> - <property name="tab_fill">False</property> + <property name="expand">False</property> + <property name="position">2</property> </packing> </child> + </widget> + <packing> + <property name="position">4</property> + </packing> + </child> + <child> + <placeholder/> + <packing> + <property name="type">tab</property> + </packing> + </child> + <child> + <widget class="GtkVBox" id="ContactTab"> + <property name="visible">True</property> + <property name="border_width">8</property> + <property name="spacing">8</property> <child> - <widget class="GtkLabel" id="label1"> + <widget class="GtkLabel" id="label2"> <property name="visible">True</property> - <property name="label" translatable="yes">Bluetooth</property> + <property name="xalign">0</property> + <property name="label" translatable="yes"><b>Contact Information:</b></property> + <property name="use_markup">True</property> </widget> <packing> - <property name="type">tab</property> - <property name="tab_fill">False</property> + <property name="expand">False</property> + <property name="fill">False</property> </packing> </child> <child> - <widget class="GtkTable" id="table1"> + <widget class="GtkTable" id="table2"> <property name="visible">True</property> - <property name="border_width">18</property> <property name="n_rows">5</property> - <property name="n_columns">3</property> + <property name="n_columns">2</property> <property name="column_spacing">8</property> <property name="row_spacing">8</property> <child> - <widget class="GtkComboBoxEntry" id="ConfigDriverDevList"> + <widget class="GtkLabel" id="label4"> <property name="visible">True</property> - <child internal-child="entry"> - <widget class="GtkEntry" id="ConfigDriverOpts"> - <property name="visible">True</property> - <property name="can_focus">True</property> - </widget> - </child> + <property name="xalign">0</property> + <property name="label" translatable="yes">Mobile:</property> </widget> <packing> - <property name="left_attach">1</property> - <property name="right_attach">3</property> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> + <property name="y_options">GTK_FILL</property> </packing> </child> <child> - <widget class="GtkCheckButton" id="ConfigMinOutBufferHint"> + <widget class="GtkEntry" id="ContactMobile"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="label" translatable="yes">Output Buffer</property> - <property name="xalign">0</property> - <property name="response_id">0</property> - <property name="draw_indicator">True</property> - <signal name="toggled" handler="ConfigMinOutBufferHint_toggled_cb"/> </widget> <packing> - <property name="top_attach">3</property> - <property name="bottom_attach">4</property> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> + <property name="y_options">GTK_FILL</property> </packing> </child> <child> - <widget class="GtkCheckButton" id="ConfigPacketIntervalHint"> + <widget class="GtkEntry" id="ContactHome"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="label" translatable="yes">Packet Interval</property> - <property name="xalign">0</property> - <property name="response_id">0</property> - <property name="draw_indicator">True</property> - <signal name="toggled" handler="ConfigPacketIntervalHint_toggled_cb"/> </widget> <packing> - <property name="top_attach">2</property> - <property name="bottom_attach">3</property> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> + <property name="y_options">GTK_FILL</property> </packing> </child> <child> - <widget class="GtkLabel" id="ConfigMinOutBufferLabel"> + <widget class="GtkLabel" id="label36"> <property name="visible">True</property> <property name="xalign">0</property> + <property name="label" translatable="yes">Home:</property> </widget> <packing> - <property name="left_attach">2</property> - <property name="right_attach">3</property> <property name="top_attach">3</property> <property name="bottom_attach">4</property> <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> + <property name="y_options">GTK_FILL</property> </packing> </child> <child> - <widget class="GtkHScale" id="ConfigPacketInterval"> + <widget class="GtkEntry" id="ContactWork"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="adjustment">1 0 1 0.01 0.10000000000000001 0</property> - <property name="restrict_to_fill_level">False</property> - <property name="fill_level">1</property> - <property name="digits">0</property> - <property name="draw_value">False</property> - <property name="value_pos">GTK_POS_RIGHT</property> - <signal name="value_changed" handler="ConfigPacketInterval_value_changed_cb"/> </widget> <packing> <property name="left_attach">1</property> <property name="right_attach">2</property> - <property name="top_attach">2</property> - <property name="bottom_attach">3</property> - <property name="y_options"></property> + <property name="top_attach">4</property> + <property name="bottom_attach">5</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options">GTK_FILL</property> </packing> </child> <child> - <widget class="GtkLabel" id="ConfigPacketIntervalLabel"> - <property name="width_request">64</property> + <widget class="GtkLabel" id="label42"> <property name="visible">True</property> <property name="xalign">0</property> + <property name="label" translatable="yes">Work:</property> </widget> <packing> - <property name="left_attach">2</property> - <property name="right_attach">3</property> - <property name="top_attach">2</property> - <property name="bottom_attach">3</property> + <property name="top_attach">4</property> + <property name="bottom_attach">5</property> <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> + <property name="y_options">GTK_FILL</property> </packing> </child> <child> - <widget class="GtkLabel" id="label6"> + <widget class="GtkLabel" id="label44"> <property name="visible">True</property> <property name="xalign">0</property> - <property name="label" translatable="yes">Driver</property> + <property name="label" translatable="yes"><b>Telephone Numbers</b></property> + <property name="use_markup">True</property> </widget> <packing> + <property name="right_attach">2</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> + <property name="y_options">GTK_FILL</property> </packing> </child> <child> - <widget class="GtkHScale" id="ConfigMinOutBuffer"> + <widget class="GtkEntry" id="ContactName"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="adjustment">1 0 1 0.01 0.10000000000000001 0</property> - <property name="draw_value">False</property> - <property name="value_pos">GTK_POS_RIGHT</property> - <signal name="value_changed" handler="ConfigMinOutBuffer_value_changed_cb"/> </widget> <packing> <property name="left_attach">1</property> <property name="right_attach">2</property> - <property name="top_attach">3</property> - <property name="bottom_attach">4</property> - <property name="y_options"></property> + <property name="x_options">GTK_FILL</property> + <property name="y_options">GTK_FILL</property> </packing> </child> <child> - <widget class="GtkLabel" id="label7"> + <widget class="GtkLabel" id="label3"> <property name="visible">True</property> <property name="xalign">0</property> - <property name="label" translatable="yes">Device / Options</property> + <property name="label" translatable="yes">Name:</property> </widget> <packing> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> + <property name="y_options">GTK_FILL</property> </packing> </child> + </widget> + <packing> + <property name="position">1</property> + </packing> + </child> + <child> + <widget class="GtkHButtonBox" id="hbuttonbox10"> + <property name="visible">True</property> + <property name="spacing">8</property> + <property name="layout_style">GTK_BUTTONBOX_END</property> + <child> + <widget class="GtkButton" id="ContactCancel"> + <property name="visible">True</property> + <property name="sensitive">False</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="label">gtk-add</property> + <property name="use_stock">True</property> + <property name="response_id">0</property> + </widget> + </child> <child> - <widget class="GtkComboBox" id="ConfigDriver"> + <widget class="GtkButton" id="ContactOK"> <property name="visible">True</property> - <property name="items" translatable="yes"></property> - <signal name="changed" handler="ConfigDriver_changed_cb"/> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="label">gtk-close</property> + <property name="use_stock">True</property> + <property name="response_id">1</property> </widget> <packing> - <property name="left_attach">1</property> - <property name="right_attach">3</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> + <property name="position">1</property> </packing> </child> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">2</property> + </packing> + </child> + </widget> + <packing> + <property name="position">5</property> + </packing> + </child> + <child> + <placeholder/> + <packing> + <property name="type">tab</property> + </packing> + </child> + <child> + <widget class="GtkVBox" id="ChooseNumberTab"> + <property name="visible">True</property> + <property name="border_width">8</property> + <property name="spacing">8</property> + <child> + <widget class="GtkHBox" id="hbox16"> + <property name="visible">True</property> <child> - <widget class="GtkFrame" id="frame2"> + <widget class="GtkImage" id="image35"> <property name="visible">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="label_xalign">0</property> + <property name="xpad">8</property> + <property name="ypad">8</property> + <property name="pixbuf">contacts.png</property> + <property name="icon_size">6</property> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label53"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="xpad">8</property> + <property name="label" translatable="yes"><b>Select Telephone Number</b> +The contact you wish to call has multiple telephone numbers. Select the number you wish to call from the list.</property> + <property name="use_markup">True</property> + <property name="wrap">True</property> + <property name="wrap_mode">PANGO_WRAP_WORD_CHAR</property> + </widget> + <packing> + <property name="position">1</property> + </packing> + </child> + </widget> + <packing> + <property name="expand">False</property> + </packing> + </child> + <child> + <widget class="GtkVButtonBox" id="vbuttonbox3"> + <property name="visible">True</property> + <property name="spacing">8</property> + <property name="layout_style">GTK_BUTTONBOX_START</property> + <child> + <widget class="GtkButton" id="button1"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="focus_on_click">False</property> + <property name="response_id">0</property> <child> - <widget class="GtkAlignment" id="alignment2"> + <widget class="GtkHBox" id="hbox18"> <property name="visible">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="bottom_padding">8</property> - <property name="left_padding">12</property> + <property name="border_width">4</property> + <property name="spacing">8</property> <child> - <widget class="GtkVBox" id="vbox10"> + <widget class="GtkImage" id="image36"> <property name="visible">True</property> - <property name="spacing">8</property> + <property name="pixbuf">tel-cell.png</property> + <property name="icon_size">6</property> + </widget> + <packing> + <property name="expand">False</property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label64"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes"><b>Mobile</b> +</property> + <property name="use_markup">True</property> + </widget> + <packing> + <property name="position">1</property> + </packing> + </child> + </widget> + </child> + </widget> + <packing> + <property name="expand">False</property> + </packing> + </child> + <child> + <widget class="GtkButton" id="button2"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="focus_on_click">False</property> + <property name="response_id">0</property> + <child> + <widget class="GtkHBox" id="hbox19"> + <property name="visible">True</property> + <property name="border_width">4</property> + <property name="spacing">8</property> + <child> + <widget class="GtkImage" id="image37"> + <property name="visible">True</property> + <property name="stock">gtk-home</property> + <property name="icon_size">6</property> + </widget> + <packing> + <property name="expand">False</property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label68"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes"><b>Home</b> +</property> + <property name="use_markup">True</property> + </widget> + <packing> + <property name="position">1</property> + </packing> + </child> + </widget> + </child> + </widget> + <packing> + <property name="expand">False</property> + <property name="position">1</property> + </packing> + </child> + <child> + <widget class="GtkButton" id="button3"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="focus_on_click">False</property> + <property name="response_id">0</property> + <child> + <widget class="GtkHBox" id="hbox20"> + <property name="visible">True</property> + <property name="border_width">4</property> + <property name="spacing">8</property> + <child> + <widget class="GtkImage" id="image38"> + <property name="visible">True</property> + <property name="stock">gtk-home</property> + <property name="icon_size">6</property> + </widget> + <packing> + <property name="expand">False</property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label69"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes"><b>Work</b> +</property> + <property name="use_markup">True</property> + </widget> + <packing> + <property name="position">1</property> + </packing> + </child> + </widget> + </child> + </widget> + <packing> + <property name="expand">False</property> + <property name="position">2</property> + </packing> + </child> + </widget> + <packing> + <property name="position">1</property> + </packing> + </child> + <child> + <widget class="GtkHButtonBox" id="hbuttonbox11"> + <property name="visible">True</property> + <property name="spacing">8</property> + <property name="layout_style">GTK_BUTTONBOX_END</property> + <child> + <widget class="GtkButton" id="ChooseNumberCancel"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="label" translatable="yes">gtk-cancel</property> + <property name="use_stock">True</property> + <property name="response_id">0</property> + </widget> + </child> + </widget> + <packing> + <property name="expand">False</property> + <property name="position">2</property> + </packing> + </child> + </widget> + <packing> + <property name="position">6</property> + </packing> + </child> + <child> + <placeholder/> + <packing> + <property name="type">tab</property> + </packing> + </child> + <child> + <widget class="GtkVBox" id="ConfigTab"> + <property name="visible">True</property> + <property name="border_width">8</property> + <property name="spacing">8</property> + <child> + <widget class="GtkNotebook" id="notebook2"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <child> + <widget class="GtkVBox" id="vbox3"> + <property name="visible">True</property> + <property name="border_width">18</property> + <property name="spacing">8</property> + <child> + <widget class="GtkFrame" id="frame1"> + <property name="visible">True</property> + <property name="label_xalign">0</property> + <child> + <widget class="GtkAlignment" id="alignment1"> + <property name="visible">True</property> + <property name="left_padding">8</property> <child> - <widget class="GtkHBox" id="hbox8"> + <widget class="GtkVBox" id="vbox4"> <property name="visible">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="border_width">10</property> - <property name="spacing">10</property> + <property name="border_width">8</property> + <property name="spacing">8</property> <child> - <widget class="GtkToggleButton" id="ConfigFeedbackTest"> + <widget class="GtkRadioButton" id="ConfigSecNone"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="receives_default">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="label" translatable="yes">Feedback Test</property> + <property name="label" translatable="yes">No security</property> <property name="response_id">0</property> - <signal name="toggled" handler="ConfigFeedbackTest_toggled_cb"/> + <property name="draw_indicator">True</property> </widget> </child> <child> - <widget class="GtkLabel" id="label21"> + <widget class="GtkRadioButton" id="ConfigSecAuth"> <property name="visible">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="label" translatable="yes">Real Packet Size:</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">Require device authentication</property> + <property name="response_id">1</property> + <property name="draw_indicator">True</property> + <property name="group">ConfigSecNone</property> </widget> <packing> - <property name="expand">False</property> - <property name="fill">False</property> <property name="position">1</property> </packing> </child> <child> - <widget class="GtkLabel" id="ConfigRealPacketSizeLabel"> - <property name="width_request">64</property> + <widget class="GtkRadioButton" id="ConfigSecCrypt"> <property name="visible">True</property> - <property name="xalign">0</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">Require device authentication and encryption</property> + <property name="response_id">2</property> + <property name="draw_indicator">True</property> + <property name="group">ConfigSecNone</property> </widget> <packing> - <property name="expand">False</property> <property name="position">2</property> </packing> </child> </widget> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - <child> - <widget class="GtkHBox" id="hbox111"> - <property name="visible">True</property> - <property name="spacing">8</property> - <child> - <widget class="GtkImage" id="ConfigSkewNotice"> - <property name="no_show_all">True</property> - <property name="stock">gtk-dialog-warning</property> - </widget> - <packing> - <property name="expand">False</property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="ConfigSkewNoticeLabel"> - <property name="no_show_all">True</property> - <property name="xalign">0</property> - <property name="wrap">True</property> - </widget> - <packing> - <property name="expand">False</property> - <property name="padding">4</property> - <property name="position">1</property> - </packing> - </child> - </widget> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">1</property> - </packing> </child> </widget> </child> + <child> + <widget class="GtkLabel" id="label5"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>Security</b></property> + <property name="use_markup">True</property> + </widget> + <packing> + <property name="type">label_item</property> + </packing> + </child> </widget> + <packing> + <property name="expand">False</property> + </packing> </child> <child> - <widget class="GtkLabel" id="label20"> + <widget class="GtkCheckButton" id="ConfigAcceptUnknown"> <property name="visible">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="label" translatable="yes"><b>Test</b></property> - <property name="use_markup">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">Accept connections from unknown devices</property> + <property name="response_id">0</property> + <property name="draw_indicator">True</property> + </widget> + <packing> + <property name="expand">False</property> + <property name="position">1</property> + </packing> + </child> + <child> + <widget class="GtkCheckButton" id="ConfigVoicePersist"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">Keep existing voice connections when console terminates</property> + <property name="response_id">0</property> + <property name="draw_indicator">True</property> + </widget> + <packing> + <property name="expand">False</property> + <property name="position">2</property> + </packing> + </child> + <child> + <widget class="GtkHBox" id="hbox13"> + <property name="visible">True</property> + <child> + <widget class="GtkButton" id="ConfigDevices"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="label" translatable="yes">Manage Devices...</property> + <property name="response_id">0</property> + <signal name="clicked" handler="ConfigDevices_clicked_cb"/> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> </widget> <packing> - <property name="type">label_item</property> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">3</property> </packing> </child> </widget> <packing> - <property name="right_attach">3</property> - <property name="top_attach">4</property> - <property name="bottom_attach">5</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> + <property name="tab_fill">False</property> </packing> </child> - </widget> - <packing> - <property name="position">1</property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="label2"> - <property name="visible">True</property> - <property name="label" translatable="yes">Audio Device</property> - </widget> - <packing> - <property name="type">tab</property> - <property name="position">1</property> - <property name="tab_fill">False</property> - </packing> - </child> - <child> - <widget class="GtkVBox" id="vbox6"> - <property name="visible">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> <child> - <widget class="GtkVBox" id="vbox5"> + <widget class="GtkLabel" id="label6"> + <property name="visible">True</property> + <property name="label" translatable="yes">Bluetooth</property> + </widget> + <packing> + <property name="type">tab</property> + <property name="tab_fill">False</property> + </packing> + </child> + <child> + <widget class="GtkTable" id="table1"> <property name="visible">True</property> <property name="border_width">18</property> - <property name="spacing">10</property> + <property name="n_rows">6</property> + <property name="n_columns">3</property> + <property name="column_spacing">8</property> + <property name="row_spacing">8</property> <child> - <widget class="GtkTable" id="ConfigDsp"> + <widget class="GtkLabel" id="ConfigMinOutBufferLabel"> <property name="visible">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="n_rows">5</property> - <property name="n_columns">3</property> - <property name="column_spacing">10</property> - <property name="row_spacing">10</property> - <child> - <widget class="GtkLabel" id="ConfigDereverbDecayLabel"> + <property name="xalign">0</property> + </widget> + <packing> + <property name="left_attach">2</property> + <property name="right_attach">3</property> + <property name="top_attach">4</property> + <property name="bottom_attach">5</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkHScale" id="ConfigMinOutBuffer"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="adjustment">1 0 1 0.01 0.10000000000000001 0</property> + <property name="draw_value">False</property> + <property name="value_pos">GTK_POS_RIGHT</property> + <signal name="value_changed" handler="ConfigMinOutBuffer_value_changed_cb"/> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">4</property> + <property name="bottom_attach">5</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="ConfigJitterWindowLabel"> + <property name="visible">True</property> + <property name="xalign">0</property> + </widget> + <packing> + <property name="left_attach">2</property> + <property name="right_attach">3</property> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkCheckButton" id="ConfigJitterWindowHint"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">Jitter Window</property> + <property name="xalign">0</property> + <property name="response_id">0</property> + <property name="draw_indicator">True</property> + <signal name="toggled" handler="ConfigJitterWindowHint_toggled_cb"/> + </widget> + <packing> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkComboBoxEntry" id="ConfigDriverDevList"> + <property name="visible">True</property> + <child internal-child="entry"> + <widget class="GtkEntry" id="comboboxentry-entry2"> <property name="visible">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="xalign">0</property> - <property name="label">0</property> + <property name="can_focus">True</property> </widget> - <packing> - <property name="left_attach">2</property> - <property name="right_attach">3</property> - <property name="top_attach">3</property> - <property name="bottom_attach">4</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options">GTK_FILL</property> - </packing> </child> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">3</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkCheckButton" id="ConfigMinOutBufferHint"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">Output Buffer</property> + <property name="xalign">0</property> + <property name="response_id">0</property> + <property name="draw_indicator">True</property> + <signal name="toggled" handler="ConfigMinOutBufferHint_toggled_cb"/> + </widget> + <packing> + <property name="top_attach">4</property> + <property name="bottom_attach">5</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkCheckButton" id="ConfigPacketIntervalHint"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">Packet Interval</property> + <property name="xalign">0</property> + <property name="response_id">0</property> + <property name="draw_indicator">True</property> + <signal name="toggled" handler="ConfigPacketIntervalHint_toggled_cb"/> + </widget> + <packing> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkHScale" id="ConfigPacketInterval"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="adjustment">1 0 1 0.01 0.10000000000000001 0</property> + <property name="restrict_to_fill_level">False</property> + <property name="fill_level">1</property> + <property name="digits">0</property> + <property name="draw_value">False</property> + <property name="value_pos">GTK_POS_RIGHT</property> + <signal name="value_changed" handler="ConfigPacketInterval_value_changed_cb"/> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="ConfigPacketIntervalLabel"> + <property name="width_request">64</property> + <property name="visible">True</property> + <property name="xalign">0</property> + </widget> + <packing> + <property name="left_attach">2</property> + <property name="right_attach">3</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label7"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Driver</property> + </widget> + <packing> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkHScale" id="ConfigJitterWindow"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="adjustment">1 0 1 0.01 0.10000000000000001 0</property> + <property name="draw_value">False</property> + <property name="value_pos">GTK_POS_RIGHT</property> + <signal name="value_changed" handler="ConfigJitterWindow_value_changed_cb"/> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label10"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Device / Options</property> + </widget> + <packing> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkComboBox" id="ConfigDriver"> + <property name="visible">True</property> + <property name="items" translatable="yes"></property> + <signal name="changed" handler="ConfigDriver_changed_cb"/> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">3</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkFrame" id="frame2"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="label_xalign">0</property> <child> - <widget class="GtkLabel" id="ConfigDereverbValueLabel"> + <widget class="GtkAlignment" id="alignment2"> <property name="visible">True</property> <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="xalign">0</property> - <property name="label">0</property> + <property name="bottom_padding">8</property> + <property name="left_padding">12</property> + <child> + <widget class="GtkVBox" id="vbox10"> + <property name="visible">True</property> + <property name="spacing">8</property> + <child> + <widget class="GtkHBox" id="hbox8"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="border_width">10</property> + <property name="spacing">10</property> + <child> + <widget class="GtkToggleButton" id="ConfigFeedbackTest"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="label" translatable="yes">Feedback Test</property> + <property name="response_id">0</property> + <signal name="toggled" handler="ConfigFeedbackTest_toggled_cb"/> + </widget> + </child> + <child> + <widget class="GtkLabel" id="label21"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="label" translatable="yes">Real Packet Size:</property> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="ConfigRealPacketSizeLabel"> + <property name="width_request">64</property> + <property name="visible">True</property> + <property name="xalign">0</property> + </widget> + <packing> + <property name="expand">False</property> + <property name="position">2</property> + </packing> + </child> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + <child> + <widget class="GtkHBox" id="hbox111"> + <property name="visible">True</property> + <property name="spacing">8</property> + <child> + <widget class="GtkImage" id="ConfigSkewNotice"> + <property name="no_show_all">True</property> + <property name="stock">gtk-dialog-warning</property> + </widget> + <packing> + <property name="expand">False</property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="ConfigSkewNoticeLabel"> + <property name="no_show_all">True</property> + <property name="xalign">0</property> + <property name="wrap">True</property> + </widget> + <packing> + <property name="expand">False</property> + <property name="padding">4</property> + <property name="position">1</property> + </packing> + </child> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + </widget> + </child> </widget> - <packing> - <property name="left_attach">2</property> - <property name="right_attach">3</property> - <property name="top_attach">2</property> - <property name="bottom_attach">3</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options">GTK_FILL</property> - </packing> </child> <child> - <widget class="GtkCheckButton" id="ConfigDenoise"> + <widget class="GtkLabel" id="label20"> <property name="visible">True</property> - <property name="can_focus">True</property> <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="label" translatable="yes">Noise Reduction</property> - <property name="xalign">0</property> - <property name="response_id">0</property> - <property name="draw_indicator">True</property> - <signal name="toggled" handler="ConfigDenoise_toggled_cb"/> + <property name="label" translatable="yes"><b>Test</b></property> + <property name="use_markup">True</property> </widget> <packing> - <property name="right_attach">3</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> + <property name="type">label_item</property> </packing> </child> + </widget> + <packing> + <property name="right_attach">3</property> + <property name="top_attach">5</property> + <property name="bottom_attach">6</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + </widget> + <packing> + <property name="position">1</property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label19"> + <property name="visible">True</property> + <property name="label" translatable="yes">Audio Device</property> + </widget> + <packing> + <property name="type">tab</property> + <property name="position">1</property> + <property name="tab_fill">False</property> + </packing> + </child> + <child> + <widget class="GtkVBox" id="vbox6"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <child> + <widget class="GtkVBox" id="vbox5"> + <property name="visible">True</property> + <property name="border_width">18</property> + <property name="spacing">10</property> <child> - <widget class="GtkLabel" id="label10"> + <widget class="GtkTable" id="ConfigDsp"> <property name="visible">True</property> <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="xalign">0</property> - <property name="label" translatable="yes">Auto Gain</property> + <property name="n_rows">5</property> + <property name="n_columns">3</property> + <property name="column_spacing">10</property> + <property name="row_spacing">10</property> + <child> + <widget class="GtkLabel" id="ConfigDereverbDecayLabel"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="xalign">0</property> + <property name="label">0</property> + </widget> + <packing> + <property name="left_attach">2</property> + <property name="right_attach">3</property> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options">GTK_FILL</property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="ConfigDereverbValueLabel"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="xalign">0</property> + <property name="label">0</property> + </widget> + <packing> + <property name="left_attach">2</property> + <property name="right_attach">3</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options">GTK_FILL</property> + </packing> + </child> + <child> + <widget class="GtkCheckButton" id="ConfigDenoise"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="label" translatable="yes">Noise Reduction</property> + <property name="xalign">0</property> + <property name="response_id">0</property> + <property name="draw_indicator">True</property> + <signal name="toggled" handler="ConfigDenoise_toggled_cb"/> + </widget> + <packing> + <property name="right_attach">3</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label34"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Auto Gain</property> + </widget> + <packing> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkCheckButton" id="ConfigDereverb"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="label" translatable="yes">Dereverb</property> + <property name="response_id">0</property> + <property name="draw_indicator">True</property> + <signal name="toggled" handler="ConfigDereverb_toggled_cb"/> + </widget> + <packing> + <property name="top_attach">2</property> + <property name="bottom_attach">4</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkHScale" id="ConfigDereverbValue"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="adjustment">0 0 1 0.01 0.10000000000000001 0</property> + <property name="digits">2</property> + <property name="draw_value">False</property> + <property name="value_pos">GTK_POS_RIGHT</property> + <signal name="value_changed" handler="ConfigDereverbValue_value_changed_cb"/> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + <property name="y_options">GTK_FILL</property> + </packing> + </child> + <child> + <widget class="GtkHScale" id="ConfigDereverbDecay"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="adjustment">0 0 1 0.01 0.10000000000000001 0</property> + <property name="digits">2</property> + <property name="draw_value">False</property> + <property name="value_pos">GTK_POS_RIGHT</property> + <signal name="value_changed" handler="ConfigDereverbDecay_value_changed_cb"/> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> + <property name="y_options">GTK_FILL</property> + </packing> + </child> + <child> + <widget class="GtkHScale" id="ConfigAutoGain"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="adjustment">0 0 20 1 10 0</property> + <property name="digits">0</property> + <property name="draw_value">False</property> + <property name="value_pos">GTK_POS_RIGHT</property> + <signal name="value_changed" handler="ConfigAutoGain_value_changed_cb"/> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="y_options">GTK_FILL</property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="ConfigAutoGainLabel"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="xalign">0</property> + <property name="label">0</property> + </widget> + <packing> + <property name="left_attach">2</property> + <property name="right_attach">3</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options">GTK_FILL</property> + </packing> + </child> + <child> + <widget class="GtkCheckButton" id="ConfigEchoCancel"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="label" translatable="yes">Echo Cancelation</property> + <property name="response_id">0</property> + <property name="draw_indicator">True</property> + <signal name="toggled" handler="ConfigEchoCancel_toggled_cb"/> + </widget> + <packing> + <property name="top_attach">4</property> + <property name="bottom_attach">5</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkHScale" id="ConfigEchoCancelTail"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="adjustment">0 0 1 0.01 0.10000000000000001 0</property> + <property name="draw_value">False</property> + <signal name="value_changed" handler="ConfigEchoCancelTail_value_changed_cb"/> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">4</property> + <property name="bottom_attach">5</property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="ConfigEchoCancelTailLabel"> + <property name="width_request">64</property> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="xalign">0</property> + </widget> + <packing> + <property name="left_attach">2</property> + <property name="right_attach">3</property> + <property name="top_attach">4</property> + <property name="bottom_attach">5</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options">GTK_FILL</property> + </packing> + </child> </widget> <packing> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> + <property name="expand">False</property> </packing> </child> <child> - <widget class="GtkCheckButton" id="ConfigDereverb"> + <widget class="GtkButton" id="ConfigDspTest"> <property name="visible">True</property> <property name="can_focus">True</property> + <property name="receives_default">True</property> <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="label" translatable="yes">Dereverb</property> + <property name="label" translatable="yes">Test Signal Processing</property> <property name="response_id">0</property> - <property name="draw_indicator">True</property> - <signal name="toggled" handler="ConfigDereverb_toggled_cb"/> + <signal name="clicked" handler="ConfigDspTest_clicked_cb"/> </widget> <packing> - <property name="top_attach">2</property> - <property name="bottom_attach">4</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> + <property name="expand">False</property> + <property name="position">1</property> </packing> </child> + </widget> + </child> + </widget> + <packing> + <property name="position">2</property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label35"> + <property name="visible">True</property> + <property name="label" translatable="yes">Signal Processing</property> + </widget> + <packing> + <property name="type">tab</property> + <property name="position">2</property> + <property name="tab_fill">False</property> + </packing> + </child> + <child> + <widget class="GtkVBox" id="vbox7"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="border_width">18</property> + <child> + <widget class="GtkTable" id="table4"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="n_rows">3</property> + <property name="n_columns">2</property> + <property name="column_spacing">5</property> + <property name="row_spacing">5</property> <child> - <widget class="GtkHScale" id="ConfigDereverbValue"> + <widget class="GtkEntry" id="ConfigAudioDetachCommand"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="adjustment">0 0 1 0.01 0.10000000000000001 0</property> - <property name="digits">2</property> - <property name="draw_value">False</property> - <property name="value_pos">GTK_POS_RIGHT</property> - <signal name="value_changed" handler="ConfigDereverbValue_value_changed_cb"/> </widget> <packing> <property name="left_attach">1</property> @@ -1161,205 +2927,431 @@ abc</property> </packing> </child> <child> - <widget class="GtkHScale" id="ConfigDereverbDecay"> + <widget class="GtkEntry" id="ConfigAudioAttachCommand"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="adjustment">0 0 1 0.01 0.10000000000000001 0</property> - <property name="digits">2</property> - <property name="draw_value">False</property> - <property name="value_pos">GTK_POS_RIGHT</property> - <signal name="value_changed" handler="ConfigDereverbDecay_value_changed_cb"/> </widget> <packing> <property name="left_attach">1</property> <property name="right_attach">2</property> - <property name="top_attach">3</property> - <property name="bottom_attach">4</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> <property name="y_options">GTK_FILL</property> </packing> </child> <child> - <widget class="GtkHScale" id="ConfigAutoGain"> + <widget class="GtkLabel" id="label38"> <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="adjustment">0 0 20 1 10 0</property> - <property name="digits">0</property> - <property name="draw_value">False</property> - <property name="value_pos">GTK_POS_RIGHT</property> - <signal name="value_changed" handler="ConfigAutoGain_value_changed_cb"/> + <property name="xalign">0</property> + <property name="label" translatable="yes">Audio Detach Command:</property> </widget> <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="y_options">GTK_FILL</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkLabel" id="ConfigAutoGainLabel"> + <widget class="GtkLabel" id="label37"> <property name="visible">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> <property name="xalign">0</property> - <property name="label">0</property> + <property name="label" translatable="yes">Audio Attach Command:</property> </widget> <packing> - <property name="left_attach">2</property> - <property name="right_attach">3</property> <property name="top_attach">1</property> <property name="bottom_attach">2</property> <property name="x_options">GTK_FILL</property> - <property name="y_options">GTK_FILL</property> + <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkCheckButton" id="ConfigEchoCancel"> + <widget class="GtkLabel" id="label39"> <property name="visible">True</property> - <property name="can_focus">True</property> <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="label" translatable="yes">Echo Cancelation</property> - <property name="response_id">0</property> - <property name="draw_indicator">True</property> - <signal name="toggled" handler="ConfigEchoCancel_toggled_cb"/> + <property name="xalign">0</property> + <property name="label" translatable="yes">Ringer Sound:</property> </widget> <packing> - <property name="top_attach">4</property> - <property name="bottom_attach">5</property> <property name="x_options">GTK_FILL</property> <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkHScale" id="ConfigEchoCancelTail"> + <widget class="GtkFileChooserButton" id="ConfigRingerFile"> <property name="visible">True</property> - <property name="can_focus">True</property> <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="adjustment">0 0 1 0.01 0.10000000000000001 0</property> - <property name="draw_value">False</property> - <signal name="value_changed" handler="ConfigEchoCancelTail_value_changed_cb"/> + <signal name="file_set" handler="ConfigRingerFile_file_set_cb"/> </widget> <packing> <property name="left_attach">1</property> <property name="right_attach">2</property> - <property name="top_attach">4</property> - <property name="bottom_attach">5</property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="ConfigEchoCancelTailLabel"> - <property name="width_request">64</property> - <property name="visible">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="xalign">0</property> - </widget> - <packing> - <property name="left_attach">2</property> - <property name="right_attach">3</property> - <property name="top_attach">4</property> - <property name="bottom_attach">5</property> - <property name="x_options">GTK_FILL</property> <property name="y_options">GTK_FILL</property> </packing> </child> </widget> - <packing> - <property name="expand">False</property> - </packing> - </child> - <child> - <widget class="GtkButton" id="ConfigDspTest"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="label" translatable="yes">Test Signal Processing</property> - <property name="response_id">0</property> - <signal name="clicked" handler="ConfigDspTest_clicked_cb"/> - </widget> - <packing> - <property name="expand">False</property> - <property name="position">1</property> - </packing> </child> </widget> + <packing> + <property name="position">3</property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label66"> + <property name="visible">True</property> + <property name="label" translatable="yes">Alerting</property> + </widget> + <packing> + <property name="type">tab</property> + <property name="position">3</property> + <property name="tab_fill">False</property> + </packing> + </child> + </widget> + </child> + <child> + <widget class="GtkHButtonBox" id="hbuttonbox3"> + <property name="visible">True</property> + <property name="spacing">8</property> + <property name="layout_style">GTK_BUTTONBOX_END</property> + <child> + <widget class="GtkButton" id="ConfigCancel"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="label">gtk-cancel</property> + <property name="use_stock">True</property> + <property name="response_id">0</property> + <signal name="clicked" handler="ConfigCancel_clicked_cb"/> + </widget> + </child> + <child> + <widget class="GtkButton" id="ConfigInit"> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="label" translatable="yes">Assistant</property> + <property name="response_id">0</property> + <signal name="clicked" handler="ConfigInit_clicked_cb"/> + </widget> + <packing> + <property name="position">2</property> + <property name="secondary">True</property> + </packing> + </child> + <child> + <widget class="GtkButton" id="ConfigOK"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="label">gtk-ok</property> + <property name="use_stock">True</property> + <property name="response_id">0</property> + <signal name="clicked" handler="ConfigOK_clicked_cb"/> + </widget> + <packing> + <property name="pack_type">GTK_PACK_END</property> + <property name="position">1</property> + </packing> </child> </widget> <packing> - <property name="position">2</property> + <property name="expand">False</property> + <property name="position">1</property> </packing> </child> + </widget> + <packing> + <property name="position">7</property> + </packing> + </child> + <child> + <placeholder/> + <packing> + <property name="type">tab</property> + </packing> + </child> + <child> + <widget class="GtkVBox" id="DspTestTab"> + <property name="visible">True</property> + <property name="border_width">8</property> + <property name="spacing">8</property> <child> - <widget class="GtkLabel" id="label3"> + <widget class="GtkLabel" id="label48"> <property name="visible">True</property> - <property name="label" translatable="yes">Signal Processing</property> + <property name="xalign">0</property> + <property name="label" translatable="yes"><span size="xx-large" weight="bold">Digital Signal Processing Test</span></property> + <property name="use_markup">True</property> + <property name="ellipsize">PANGO_ELLIPSIZE_END</property> </widget> <packing> - <property name="type">tab</property> - <property name="position">2</property> - <property name="tab_fill">False</property> + <property name="expand">False</property> + <property name="fill">False</property> </packing> </child> <child> - <widget class="GtkVBox" id="vbox7"> + <widget class="GtkNotebook" id="DspTestNotebook"> <property name="visible">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="border_width">18</property> + <property name="can_focus">True</property> + <property name="show_tabs">False</property> + <property name="show_border">False</property> + <signal name="switch_page" handler="DspTestNotebook_switch_page_cb"/> <child> - <widget class="GtkTable" id="table4"> + <widget class="GtkTable" id="DspTestPage0"> <property name="visible">True</property> <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="n_rows">3</property> + <property name="border_width">18</property> + <property name="n_rows">5</property> <property name="n_columns">2</property> - <property name="column_spacing">5</property> - <property name="row_spacing">5</property> + <property name="column_spacing">8</property> + <property name="row_spacing">8</property> <child> - <widget class="GtkEntry" id="ConfigAudioDetachCommand"> + <widget class="GtkLabel" id="label24"> <property name="visible">True</property> - <property name="can_focus">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">The first step will begin when you click <i>Forward</i>.</property> + <property name="use_markup">True</property> </widget> <packing> <property name="left_attach">1</property> <property name="right_attach">2</property> + <property name="top_attach">4</property> + <property name="bottom_attach">5</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="emptylabel2"> + <property name="visible">True</property> + </widget> + <packing> <property name="top_attach">2</property> - <property name="bottom_attach">3</property> + <property name="bottom_attach">5</property> + <property name="x_options">GTK_FILL</property> <property name="y_options">GTK_FILL</property> </packing> </child> <child> - <widget class="GtkEntry" id="ConfigAudioAttachCommand"> + <widget class="GtkLabel" id="emptylabel"> <property name="visible">True</property> - <property name="can_focus">True</property> + </widget> + <packing> + <property name="x_options">GTK_FILL</property> + <property name="y_options">GTK_FILL</property> + </packing> + </child> + <child> + <widget class="GtkArrow" id="arrow1"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + </widget> + <packing> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options">GTK_FILL</property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label18"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="xalign">0</property> + <property name="label" translatable="yes"><b>3.</b> Play back the second clip + <i>This is what the remote party would hear for the + conversation as simulated in step two.</i></property> + <property name="use_markup">True</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label17"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="xalign">0</property> + <property name="label" translatable="yes"><b>2.</b> Play back the sound clip while recording a second clip + <i>This will simulate a full duplex conversation, with the clip + recorded in step one as coming from the remote party.</i></property> + <property name="use_markup">True</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label11"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">To test your signal processing settings, we will perform +three steps:</property> + <property name="use_markup">True</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label14"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="xalign">0</property> + <property name="label" translatable="yes"><b>1. Record a sound clip of spoken language + <i>Try to leave pauses and quiet moments during + this clip.</i></b></property> + <property name="use_markup">True</property> </widget> <packing> <property name="left_attach">1</property> <property name="right_attach">2</property> <property name="top_attach">1</property> <property name="bottom_attach">2</property> - <property name="y_options">GTK_FILL</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> </packing> </child> + </widget> + </child> + <child> + <widget class="GtkLabel" id="label45"> + <property name="visible">True</property> + <property name="label">page 1</property> + </widget> + <packing> + <property name="type">tab</property> + <property name="tab_fill">False</property> + </packing> + </child> + <child> + <widget class="GtkTable" id="DspTestPage1"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="border_width">18</property> + <property name="n_rows">6</property> + <property name="n_columns">2</property> + <property name="column_spacing">8</property> + <property name="row_spacing">8</property> <child> - <widget class="GtkLabel" id="label35"> + <widget class="GtkLabel" id="label8"> <property name="visible">True</property> <property name="xalign">0</property> - <property name="label" translatable="yes">Audio Detach Command:</property> + <property name="label" translatable="yes"> Click <i>Record</i> to begin</property> + <property name="use_markup">True</property> + <property name="ellipsize">PANGO_ELLIPSIZE_END</property> </widget> <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> <property name="top_attach">2</property> <property name="bottom_attach">3</property> + </packing> + </child> + <child> + <widget class="GtkProgressBar" id="DspTestRecPosition1"> + <property name="visible">True</property> + <property name="show_text">True</property> + <property name="text" translatable="yes">Record Progress</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options">GTK_FILL</property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="emptylabel4"> + <property name="visible">True</property> + </widget> + <packing> + <property name="top_attach">2</property> + <property name="bottom_attach">6</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options">GTK_FILL</property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="emptylabel1"> + <property name="visible">True</property> + </widget> + <packing> + <property name="x_options">GTK_FILL</property> + <property name="y_options">GTK_FILL</property> + </packing> + </child> + <child> + <widget class="GtkProgressBar" id="DspTestMicVolume1"> + <property name="visible">True</property> + <property name="show_text">True</property> + <property name="text" translatable="yes">Mic Volume</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">4</property> + <property name="bottom_attach">5</property> + <property name="y_options">GTK_FILL</property> + </packing> + </child> + <child> + <widget class="GtkArrow" id="arrow2"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + </widget> + <packing> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options">GTK_FILL</property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label22"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">To test your signal processing settings, we will perform +three steps:</property> + <property name="use_markup">True</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> <property name="x_options">GTK_FILL</property> <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkLabel" id="label34"> + <widget class="GtkLabel" id="label12"> <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> <property name="xalign">0</property> - <property name="label" translatable="yes">Audio Attach Command:</property> + <property name="label" translatable="yes"><b>1. Record a sound clip of spoken language + <i>Try to leave pauses and quiet moments during + this clip.</i></b></property> + <property name="use_markup">True</property> </widget> <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> <property name="top_attach">1</property> <property name="bottom_attach">2</property> <property name="x_options">GTK_FILL</property> @@ -1367,812 +3359,784 @@ abc</property> </packing> </child> <child> - <widget class="GtkLabel" id="label19"> + <widget class="GtkToggleButton" id="DspTestRecStart1"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="label">gtk-media-record</property> + <property name="use_stock">True</property> + <property name="response_id">0</property> + <signal name="toggled" handler="DspTestRecStart1_toggled_cb"/> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">5</property> + <property name="bottom_attach">6</property> + <property name="x_options"></property> + <property name="y_options"></property> + </packing> + </child> + </widget> + <packing> + <property name="position">1</property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label46"> + <property name="visible">True</property> + <property name="label">page 2</property> + </widget> + <packing> + <property name="type">tab</property> + <property name="position">1</property> + <property name="tab_fill">False</property> + </packing> + </child> + <child> + <widget class="GtkTable" id="DspTestPage2"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="border_width">18</property> + <property name="n_rows">6</property> + <property name="n_columns">2</property> + <property name="column_spacing">8</property> + <property name="row_spacing">8</property> + <child> + <widget class="GtkLabel" id="label9"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="xalign">0</property> + <property name="label" translatable="yes"><b>2. Play back the sound clip while recording a second clip + <i>This will simulate a full duplex conversation, with + the clip recorded in step one as coming from the + remote party.</i></b></property> + <property name="use_markup">True</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkToggleButton" id="DspTestRecStart2"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="label">gtk-media-record</property> + <property name="use_stock">True</property> + <property name="response_id">0</property> + <signal name="toggled" handler="DspTestRecStart2_toggled_cb"/> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">5</property> + <property name="bottom_attach">6</property> + <property name="x_options"></property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label25"> <property name="visible">True</property> <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> <property name="xalign">0</property> - <property name="label" translatable="yes">Ringer Sound:</property> + <property name="label" translatable="yes">You are currently on Step 2 of the digital signal processing test:</property> + <property name="use_markup">True</property> </widget> <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> <property name="x_options">GTK_FILL</property> <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkFileChooserButton" id="ConfigRingerFile"> + <widget class="GtkArrow" id="arrow4"> <property name="visible">True</property> <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <signal name="file_set" handler="ConfigRingerFile_file_set_cb"/> + </widget> + <packing> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options">GTK_FILL</property> + </packing> + </child> + <child> + <widget class="GtkProgressBar" id="DspTestMicVolume2"> + <property name="visible">True</property> + <property name="show_text">True</property> + <property name="text" translatable="yes">Mic Volume</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">4</property> + <property name="bottom_attach">5</property> + <property name="y_options">GTK_FILL</property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="emptylabel7"> + <property name="visible">True</property> + </widget> + <packing> + <property name="x_options">GTK_FILL</property> + <property name="y_options">GTK_FILL</property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="emptylabel8"> + <property name="visible">True</property> + </widget> + <packing> + <property name="top_attach">2</property> + <property name="bottom_attach">6</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options">GTK_FILL</property> + </packing> + </child> + <child> + <widget class="GtkProgressBar" id="DspTestRecPosition2"> + <property name="visible">True</property> + <property name="show_text">True</property> + <property name="text" translatable="yes">Record Progress</property> </widget> <packing> <property name="left_attach">1</property> <property name="right_attach">2</property> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> + <property name="x_options">GTK_FILL</property> <property name="y_options">GTK_FILL</property> </packing> </child> + <child> + <widget class="GtkLabel" id="label26"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes"> Click <i>Record</i> to begin</property> + <property name="use_markup">True</property> + <property name="ellipsize">PANGO_ELLIPSIZE_END</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + </packing> + </child> </widget> + <packing> + <property name="position">2</property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label47"> + <property name="visible">True</property> + <property name="label">page 3</property> + </widget> + <packing> + <property name="type">tab</property> + <property name="position">2</property> + <property name="tab_fill">False</property> + </packing> + </child> + <child> + <widget class="GtkTable" id="DspTestPage3"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="border_width">18</property> + <property name="n_rows">5</property> + <property name="n_columns">2</property> + <property name="column_spacing">8</property> + <property name="row_spacing">8</property> + <child> + <widget class="GtkToggleButton" id="DspTestPlayStart"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="label">gtk-media-play</property> + <property name="use_stock">True</property> + <property name="response_id">0</property> + <signal name="toggled" handler="DspTestPlayStart_toggled_cb"/> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">4</property> + <property name="bottom_attach">5</property> + <property name="x_options"></property> + <property name="y_options">GTK_EXPAND</property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label16"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">You are currently on Step 3 of the digital signal processing test:</property> + <property name="use_markup">True</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkArrow" id="arrow3"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + </widget> + <packing> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options">GTK_FILL</property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="emptylabel6"> + <property name="visible">True</property> + </widget> + <packing> + <property name="x_options">GTK_FILL</property> + <property name="y_options">GTK_FILL</property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="emptylabel5"> + <property name="visible">True</property> + </widget> + <packing> + <property name="top_attach">2</property> + <property name="bottom_attach">5</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options">GTK_FILL</property> + </packing> + </child> + <child> + <widget class="GtkProgressBar" id="DspTestPlayPosition"> + <property name="visible">True</property> + <property name="show_text">True</property> + <property name="text" translatable="yes">Playback Progress</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options">GTK_FILL</property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label13"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes"> Click <i>Play</i> to begin</property> + <property name="use_markup">True</property> + <property name="ellipsize">PANGO_ELLIPSIZE_END</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label23"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="xalign">0</property> + <property name="label" translatable="yes"><b>3. Play back the second clip + <i>This is what the remote party would hear for the + conversation as simulated in step two.</i></b></property> + <property name="use_markup">True</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + </widget> + <packing> + <property name="position">3</property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label50"> + <property name="visible">True</property> + <property name="label">page 4</property> + </widget> + <packing> + <property name="type">tab</property> + <property name="position">3</property> + <property name="tab_fill">False</property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label15"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="xalign">0</property> + <property name="xpad">18</property> + <property name="ypad">18</property> + <property name="label" translatable="yes"><b>Tips to Improve Sound Quality:</b> + - TODO</property> + <property name="use_markup">True</property> + <property name="ellipsize">PANGO_ELLIPSIZE_MIDDLE</property> + </widget> + <packing> + <property name="position">4</property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label51"> + <property name="visible">True</property> + <property name="label">page 5</property> + </widget> + <packing> + <property name="type">tab</property> + <property name="position">4</property> + <property name="tab_fill">False</property> + </packing> </child> </widget> <packing> - <property name="position">3</property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="label4"> - <property name="visible">True</property> - <property name="label" translatable="yes">Alerting</property> - </widget> - <packing> - <property name="type">tab</property> - <property name="position">3</property> - <property name="tab_fill">False</property> + <property name="position">1</property> </packing> </child> - </widget> - <packing> - <property name="position">1</property> - </packing> - </child> - <child internal-child="action_area"> - <widget class="GtkHButtonBox" id="dialog-action_area1"> - <property name="visible">True</property> - <property name="layout_style">GTK_BUTTONBOX_END</property> <child> - <widget class="GtkButton" id="ConfigOk"> + <widget class="GtkHButtonBox" id="hbuttonbox7"> <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">True</property> - <property name="label">gtk-ok</property> - <property name="use_stock">True</property> - <property name="response_id">0</property> - <signal name="clicked" handler="ConfigOk_clicked_cb"/> - </widget> - </child> - <child> - <widget class="GtkButton" id="ConfigCancel"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">True</property> - <property name="label">gtk-cancel</property> - <property name="use_stock">True</property> - <property name="response_id">1</property> - <signal name="clicked" handler="ConfigCancel_clicked_cb"/> + <property name="spacing">8</property> + <property name="layout_style">GTK_BUTTONBOX_END</property> + <child> + <widget class="GtkButton" id="DspTestClose"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="label">gtk-close</property> + <property name="use_stock">True</property> + <property name="response_id">1</property> + <signal name="clicked" handler="DspTestClose_clicked_cb"/> + </widget> + </child> + <child> + <widget class="GtkButton" id="DspTestBack"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="label">gtk-go-back</property> + <property name="use_stock">True</property> + <property name="response_id">0</property> + <signal name="clicked" handler="DspTestBack_clicked_cb"/> + </widget> + <packing> + <property name="position">1</property> + </packing> + </child> + <child> + <widget class="GtkButton" id="DspTestForward"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="is_focus">True</property> + <property name="receives_default">True</property> + <property name="label">gtk-go-forward</property> + <property name="use_stock">True</property> + <property name="response_id">0</property> + <signal name="clicked" handler="DspTestForward_clicked_cb"/> + </widget> + <packing> + <property name="position">2</property> + </packing> + </child> </widget> <packing> - <property name="position">1</property> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">2</property> </packing> </child> </widget> <packing> - <property name="expand">False</property> - <property name="pack_type">GTK_PACK_END</property> - </packing> - </child> - </widget> - </child> - </widget> - <widget class="GtkAssistant" id="DspTestAssistant"> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="border_width">5</property> - <property name="title" translatable="yes">DSP Test</property> - <property name="modal">True</property> - <property name="transient_for">ConfigDialog</property> - <signal name="close" handler="DspTestAssistant_close_cb"/> - <signal name="cancel" handler="DspTestAssistant_cancel_cb"/> - <signal name="prepare" handler="DspTestAssistant_prepare_cb"/> - <child> - <widget class="GtkTable" id="DspTestPage0"> - <property name="visible">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="border_width">18</property> - <property name="n_rows">5</property> - <property name="n_columns">2</property> - <property name="column_spacing">8</property> - <property name="row_spacing">8</property> - <child> - <widget class="GtkLabel" id="label24"> - <property name="visible">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="xalign">0</property> - <property name="label" translatable="yes">The first step will begin when you click <i>Forward</i>.</property> - <property name="use_markup">True</property> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">4</property> - <property name="bottom_attach">5</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="emptylabel2"> - <property name="visible">True</property> - </widget> - <packing> - <property name="top_attach">2</property> - <property name="bottom_attach">5</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options">GTK_FILL</property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="emptylabel"> - <property name="visible">True</property> - </widget> - <packing> - <property name="x_options">GTK_FILL</property> - <property name="y_options">GTK_FILL</property> - </packing> - </child> - <child> - <widget class="GtkArrow" id="arrow1"> - <property name="visible">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - </widget> - <packing> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options">GTK_FILL</property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="label18"> - <property name="visible">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="xalign">0</property> - <property name="label" translatable="yes"><b>3.</b> Play back the second clip - <i>This is what the remote party would hear for the - conversation as simulated in step two.</i></property> - <property name="use_markup">True</property> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">3</property> - <property name="bottom_attach">4</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="label17"> - <property name="visible">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="xalign">0</property> - <property name="label" translatable="yes"><b>2.</b> Play back the sound clip while recording a second clip - <i>This will simulate a full duplex conversation, with the clip - recorded in step one as coming from the remote party.</i></property> - <property name="use_markup">True</property> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">2</property> - <property name="bottom_attach">3</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="label11"> - <property name="visible">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="xalign">0</property> - <property name="label" translatable="yes">To test your signal processing settings, we will perform three steps:</property> - <property name="use_markup">True</property> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="label14"> - <property name="visible">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="xalign">0</property> - <property name="label" translatable="yes"><b>1. Record a sound clip of spoken language - <i>Try to leave pauses and quiet moments during this clip.</i></b></property> - <property name="use_markup">True</property> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> - </packing> - </child> - </widget> - <packing> - <property name="page_type">GTK_ASSISTANT_PAGE_INTRO</property> - <property name="title">Digital Signal Processing Test</property> - <property name="sidebar_image">dsp-sidebar.png</property> - </packing> - </child> - <child> - <widget class="GtkTable" id="DspTestPage1"> - <property name="visible">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="border_width">18</property> - <property name="n_rows">6</property> - <property name="n_columns">2</property> - <property name="column_spacing">8</property> - <property name="row_spacing">8</property> - <child> - <widget class="GtkLabel" id="label8"> - <property name="visible">True</property> - <property name="xalign">0</property> - <property name="label" translatable="yes"> Click <i>Record</i> to begin</property> - <property name="use_markup">True</property> - <property name="ellipsize">PANGO_ELLIPSIZE_END</property> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">2</property> - <property name="bottom_attach">3</property> - </packing> - </child> - <child> - <widget class="GtkProgressBar" id="DspTestRecPosition1"> - <property name="visible">True</property> - <property name="show_text">True</property> - <property name="text" translatable="yes">Record Progress</property> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">3</property> - <property name="bottom_attach">4</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options">GTK_FILL</property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="emptylabel4"> - <property name="visible">True</property> - </widget> - <packing> - <property name="top_attach">2</property> - <property name="bottom_attach">6</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options">GTK_FILL</property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="emptylabel1"> - <property name="visible">True</property> - </widget> - <packing> - <property name="x_options">GTK_FILL</property> - <property name="y_options">GTK_FILL</property> - </packing> - </child> - <child> - <widget class="GtkProgressBar" id="DspTestMicVolume1"> - <property name="visible">True</property> - <property name="show_text">True</property> - <property name="text" translatable="yes">Mic Volume</property> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">4</property> - <property name="bottom_attach">5</property> - <property name="y_options">GTK_FILL</property> - </packing> - </child> - <child> - <widget class="GtkArrow" id="arrow2"> - <property name="visible">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - </widget> - <packing> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options">GTK_FILL</property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="label22"> - <property name="visible">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="xalign">0</property> - <property name="label" translatable="yes">To test your signal processing settings, we will perform three steps:</property> - <property name="use_markup">True</property> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="label12"> - <property name="visible">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="xalign">0</property> - <property name="label" translatable="yes"><b>1. Record a sound clip of spoken language - <i>Try to leave pauses and quiet moments during this clip.</i></b></property> - <property name="use_markup">True</property> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> - </packing> - </child> - <child> - <widget class="GtkToggleButton" id="DspTestRecStart1"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="label">gtk-media-record</property> - <property name="use_stock">True</property> - <property name="response_id">0</property> - <signal name="toggled" handler="DspTestRecStart1_toggled_cb"/> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">5</property> - <property name="bottom_attach">6</property> - <property name="x_options"></property> - <property name="y_options"></property> - </packing> - </child> - </widget> - <packing> - <property name="title">Digital Signal Processing Test (1/4)</property> - <property name="sidebar_image">dsp-sidebar.png</property> - </packing> - </child> - <child> - <widget class="GtkTable" id="DspTestPage2"> - <property name="visible">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="border_width">18</property> - <property name="n_rows">6</property> - <property name="n_columns">2</property> - <property name="column_spacing">8</property> - <property name="row_spacing">8</property> - <child> - <widget class="GtkLabel" id="label9"> - <property name="visible">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="xalign">0</property> - <property name="label" translatable="yes"><b>2. Play back the sound clip while recording a second clip - <i>This will simulate a full duplex conversation, with the clip - recorded in step one as coming from the remote party.</i></b></property> - <property name="use_markup">True</property> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> - </packing> - </child> - <child> - <widget class="GtkToggleButton" id="DspTestRecStart2"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="label">gtk-media-record</property> - <property name="use_stock">True</property> - <property name="response_id">0</property> - <signal name="toggled" handler="DspTestRecStart2_toggled_cb"/> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">5</property> - <property name="bottom_attach">6</property> - <property name="x_options"></property> - <property name="y_options"></property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="label25"> - <property name="visible">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="xalign">0</property> - <property name="label" translatable="yes">You are currently on Step 2 of the digital signal processing test:</property> - <property name="use_markup">True</property> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> - </packing> - </child> - <child> - <widget class="GtkArrow" id="arrow4"> - <property name="visible">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - </widget> - <packing> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options">GTK_FILL</property> - </packing> - </child> - <child> - <widget class="GtkProgressBar" id="DspTestMicVolume2"> - <property name="visible">True</property> - <property name="show_text">True</property> - <property name="text" translatable="yes">Mic Volume</property> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">4</property> - <property name="bottom_attach">5</property> - <property name="y_options">GTK_FILL</property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="emptylabel7"> - <property name="visible">True</property> - </widget> - <packing> - <property name="x_options">GTK_FILL</property> - <property name="y_options">GTK_FILL</property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="emptylabel8"> - <property name="visible">True</property> - </widget> - <packing> - <property name="top_attach">2</property> - <property name="bottom_attach">6</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options">GTK_FILL</property> - </packing> - </child> - <child> - <widget class="GtkProgressBar" id="DspTestRecPosition2"> - <property name="visible">True</property> - <property name="show_text">True</property> - <property name="text" translatable="yes">Record Progress</property> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">3</property> - <property name="bottom_attach">4</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options">GTK_FILL</property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="label26"> - <property name="visible">True</property> - <property name="xalign">0</property> - <property name="label" translatable="yes"> Click <i>Record</i> to begin</property> - <property name="use_markup">True</property> - <property name="ellipsize">PANGO_ELLIPSIZE_END</property> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">2</property> - <property name="bottom_attach">3</property> - </packing> - </child> - </widget> - <packing> - <property name="title">Digital Signal Processing Test (2/4)</property> - <property name="sidebar_image">dsp-sidebar.png</property> - </packing> - </child> - <child> - <widget class="GtkTable" id="DspTestPage3"> - <property name="visible">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="border_width">18</property> - <property name="n_rows">5</property> - <property name="n_columns">2</property> - <property name="column_spacing">8</property> - <property name="row_spacing">8</property> - <child> - <widget class="GtkToggleButton" id="DspTestPlayStart"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="label">gtk-media-play</property> - <property name="use_stock">True</property> - <property name="response_id">0</property> - <signal name="toggled" handler="DspTestPlayStart_toggled_cb"/> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">4</property> - <property name="bottom_attach">5</property> - <property name="x_options"></property> - <property name="y_options">GTK_EXPAND</property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="label16"> - <property name="visible">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="xalign">0</property> - <property name="label" translatable="yes">You are currently on Step 3 of the digital signal processing test:</property> - <property name="use_markup">True</property> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> - </packing> - </child> - <child> - <widget class="GtkArrow" id="arrow3"> - <property name="visible">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - </widget> - <packing> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options">GTK_FILL</property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="emptylabel6"> - <property name="visible">True</property> - </widget> - <packing> - <property name="x_options">GTK_FILL</property> - <property name="y_options">GTK_FILL</property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="emptylabel5"> - <property name="visible">True</property> - </widget> - <packing> - <property name="top_attach">2</property> - <property name="bottom_attach">5</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options">GTK_FILL</property> - </packing> - </child> - <child> - <widget class="GtkProgressBar" id="DspTestPlayPosition"> - <property name="visible">True</property> - <property name="show_text">True</property> - <property name="text" translatable="yes">Playback Progress</property> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">3</property> - <property name="bottom_attach">4</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options">GTK_FILL</property> + <property name="position">8</property> </packing> </child> <child> - <widget class="GtkLabel" id="label13"> - <property name="visible">True</property> - <property name="xalign">0</property> - <property name="label" translatable="yes"> Click <i>Play</i> to begin</property> - <property name="use_markup">True</property> - <property name="ellipsize">PANGO_ELLIPSIZE_END</property> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">2</property> - <property name="bottom_attach">3</property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="label23"> - <property name="visible">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="xalign">0</property> - <property name="label" translatable="yes"><b>3. Play back the second clip - <i>This is what the remote party would hear for the - conversation as simulated in step two.</i></b></property> - <property name="use_markup">True</property> - </widget> + <placeholder/> <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> + <property name="type">tab</property> </packing> </child> - </widget> - <packing> - <property name="title">Digital Signal Processing Test (3/4)</property> - <property name="sidebar_image">dsp-sidebar.png</property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="label15"> - <property name="visible">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="xalign">0</property> - <property name="xpad">18</property> - <property name="ypad">18</property> - <property name="label" translatable="yes"><b>Tips to Improve Sound Quality:</b> - - TODO</property> - <property name="use_markup">True</property> - <property name="ellipsize">PANGO_ELLIPSIZE_MIDDLE</property> - </widget> - <packing> - <property name="page_type">GTK_ASSISTANT_PAGE_SUMMARY</property> - <property name="title">Digital Signal Processing Test (4/4)</property> - <property name="sidebar_image">dsp-sidebar.png</property> - </packing> - </child> - </widget> - <widget class="GtkDialog" id="ScanDialog"> - <property name="border_width">5</property> - <property name="title" translatable="yes">Bluetooth Scan</property> - <property name="modal">True</property> - <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property> - <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> - <property name="transient_for">MainWindow</property> - <property name="has_separator">False</property> - <signal name="close" handler="on_ScanDialog_close"/> - <child internal-child="vbox"> - <widget class="GtkVBox" id="dialog-vbox2"> - <property name="visible">True</property> - <property name="spacing">2</property> <child> - <widget class="GtkScrolledWindow" id="scrolledwindow1"> + <widget class="GtkVBox" id="InitConfTab"> <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="hscrollbar_policy">GTK_POLICY_NEVER</property> - <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> - <property name="shadow_type">GTK_SHADOW_IN</property> - <child> - <widget class="GtkTreeView" id="ScanResults"> - <property name="width_request">300</property> - <property name="height_request">200</property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="headers_clickable">True</property> - </widget> - </child> - </widget> - <packing> - <property name="position">1</property> - </packing> - </child> - <child internal-child="action_area"> - <widget class="GtkHButtonBox" id="dialog-action_area2"> - <property name="visible">True</property> - <property name="layout_style">GTK_BUTTONBOX_END</property> + <property name="border_width">8</property> + <property name="spacing">8</property> <child> - <widget class="GtkButton" id="ScanRestart"> + <widget class="GtkHBox" id="hbox12"> <property name="visible">True</property> - <property name="sensitive">False</property> - <property name="can_focus">True</property> - <property name="receives_default">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="label">gtk-refresh</property> - <property name="use_stock">True</property> - <property name="response_id">-1</property> - <signal name="clicked" handler="ScanRestart_clicked_cb"/> + <property name="spacing">8</property> + <child> + <widget class="GtkImage" id="image30"> + <property name="visible">True</property> + <property name="pixbuf">icon.png</property> + </widget> + <packing> + <property name="expand">False</property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label49"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes"><span size="xx-large" weight="bold">HFP for Linux Initial Configuration</span></property> + <property name="use_markup">True</property> + </widget> + <packing> + <property name="position">1</property> + </packing> + </child> </widget> <packing> <property name="expand">False</property> - <property name="secondary">True</property> </packing> </child> <child> - <widget class="GtkButton" id="ScanHistory"> + <widget class="GtkNotebook" id="InitConfNotebook"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="receives_default">True</property> - <property name="label" translatable="yes">History</property> - <property name="response_id">-2</property> - <signal name="clicked" handler="ScanHistory_clicked_cb"/> + <property name="show_border">False</property> + <signal name="switch_page" handler="InitConfNotebook_switch_page_cb"/> + <child> + <widget class="GtkTable" id="InitPage0"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="border_width">18</property> + <property name="n_rows">4</property> + <property name="n_columns">2</property> + <property name="column_spacing">8</property> + <property name="row_spacing">8</property> + <child> + <widget class="GtkLabel" id="label52"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">The first step will begin when you click <i>Forward</i>.</property> + <property name="use_markup">True</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="emptylabel3"> + <property name="visible">True</property> + </widget> + <packing> + <property name="top_attach">2</property> + <property name="bottom_attach">4</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options">GTK_FILL</property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="emptylabel9"> + <property name="visible">True</property> + </widget> + <packing> + <property name="x_options">GTK_FILL</property> + <property name="y_options">GTK_FILL</property> + </packing> + </child> + <child> + <widget class="GtkArrow" id="arrow5"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + </widget> + <packing> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options">GTK_FILL</property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label54"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="xalign">0</property> + <property name="label" translatable="yes"><b>2.</b> Configure your Bluetooth mobile phone</property> + <property name="use_markup">True</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label55"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">To set up HFP for Linux for the first time, the following steps +will be taken:</property> + <property name="use_markup">True</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label56"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="xalign">0</property> + <property name="label" translatable="yes"><b>1. Configure and test your local sound card</b></property> + <property name="use_markup">True</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + </widget> + </child> + <child> + <widget class="GtkLabel" id="label43"> + <property name="visible">True</property> + <property name="label">page 1</property> + </widget> + <packing> + <property name="type">tab</property> + <property name="tab_fill">False</property> + </packing> + </child> + <child> + <widget class="GtkTable" id="InitPage1"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="border_width">18</property> + <property name="n_rows">4</property> + <property name="n_columns">2</property> + <property name="column_spacing">8</property> + <property name="row_spacing">8</property> + <child> + <widget class="GtkLabel" id="label60"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">The first step will begin when you click <i>Forward</i>.</property> + <property name="use_markup">True</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="emptylabel10"> + <property name="visible">True</property> + </widget> + <packing> + <property name="top_attach">2</property> + <property name="bottom_attach">4</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options">GTK_FILL</property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="emptylabel11"> + <property name="visible">True</property> + </widget> + <packing> + <property name="x_options">GTK_FILL</property> + <property name="y_options">GTK_FILL</property> + </packing> + </child> + <child> + <widget class="GtkArrow" id="arrow6"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + </widget> + <packing> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options">GTK_FILL</property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label61"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="xalign">0</property> + <property name="label" translatable="yes"><b>2.</b> Configure your Bluetooth mobile phone</property> + <property name="use_markup">True</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label62"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">To set up HFP for Linux for the first time, the following steps +will be taken:</property> + <property name="use_markup">True</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label63"> + <property name="visible">True</property> + <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> + <property name="xalign">0</property> + <property name="label" translatable="yes"><b>1. Configure and test your local sound card</b></property> + <property name="use_markup">True</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + </widget> + <packing> + <property name="position">1</property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label59"> + <property name="visible">True</property> + <property name="label">page 2</property> + </widget> + <packing> + <property name="type">tab</property> + <property name="position">1</property> + <property name="tab_fill">False</property> + </packing> + </child> </widget> <packing> <property name="position">1</property> - <property name="secondary">True</property> </packing> </child> <child> - <widget class="GtkButton" id="ScanCancel"> + <widget class="GtkHButtonBox" id="hbuttonbox6"> <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">True</property> - <property name="label">gtk-cancel</property> - <property name="use_stock">True</property> - <property name="response_id">1</property> - <signal name="clicked" handler="ScanCancel_clicked_cb"/> - </widget> - <packing> - <property name="pack_type">GTK_PACK_END</property> - <property name="position">3</property> - </packing> - </child> - <child> - <widget class="GtkButton" id="ScanOK"> - <property name="visible">True</property> - <property name="sensitive">False</property> - <property name="can_focus">True</property> - <property name="receives_default">True</property> - <property name="label">gtk-ok</property> - <property name="use_stock">True</property> - <property name="response_id">0</property> - <signal name="clicked" handler="ScanOK_clicked_cb"/> + <property name="spacing">8</property> + <property name="layout_style">GTK_BUTTONBOX_END</property> + <child> + <widget class="GtkButton" id="InitConfDone"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="label">gtk-close</property> + <property name="use_stock">True</property> + <property name="response_id">1</property> + <signal name="clicked" handler="InitConfDone_clicked_cb"/> + </widget> + </child> + <child> + <widget class="GtkButton" id="InitConfBack"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="label">gtk-go-back</property> + <property name="use_stock">True</property> + <property name="response_id">0</property> + <signal name="clicked" handler="InitConfBack_clicked_cb"/> + </widget> + <packing> + <property name="position">1</property> + </packing> + </child> + <child> + <widget class="GtkButton" id="InitConfForward"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="is_focus">True</property> + <property name="receives_default">True</property> + <property name="label">gtk-go-forward</property> + <property name="use_stock">True</property> + <property name="response_id">0</property> + <signal name="clicked" handler="InitConfForward_clicked_cb"/> + </widget> + <packing> + <property name="position">2</property> + </packing> + </child> </widget> <packing> + <property name="expand">False</property> + <property name="fill">False</property> <property name="pack_type">GTK_PACK_END</property> <property name="position">2</property> </packing> </child> </widget> <packing> - <property name="expand">False</property> - <property name="pack_type">GTK_PACK_END</property> + <property name="position">9</property> </packing> </child> - </widget> - </child> - </widget> - <widget class="GtkAboutDialog" id="AboutDialog"> - <property name="border_width">5</property> - <property name="title" translatable="yes">About Hands Free Console</property> - <property name="resizable">False</property> - <property name="modal">True</property> - <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property> - <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> - <property name="has_separator">False</property> - <property name="program_name">Hands Free Console</property> - <property name="comments" translatable="yes">Part of HFP for Linux</property> - <property name="website">http://nohands.sf.net/</property> - <property name="website_label" translatable="yes">HFP for Linux</property> - <property name="authors">Sam Revitch <samr7@cs.washington.edu></property> - <child internal-child="vbox"> - <widget class="GtkVBox" id="dialog-vbox3"> - <property name="visible">True</property> - <property name="spacing">2</property> <child> <placeholder/> - </child> - <child internal-child="action_area"> - <widget class="GtkHButtonBox" id="dialog-action_area3"> - <property name="visible">True</property> - <property name="layout_style">GTK_BUTTONBOX_END</property> - </widget> <packing> - <property name="expand">False</property> - <property name="pack_type">GTK_PACK_END</property> + <property name="type">tab</property> </packing> </child> </widget> @@ -2247,7 +4211,7 @@ abc</property> <child> <widget class="GtkImage" id="image4"> <property name="visible">True</property> - <property name="stock">gtk-yes</property> + <property name="pixbuf">pickup.png</property> <property name="icon_size">5</property> </widget> </child> @@ -2278,7 +4242,7 @@ abc</property> <child> <widget class="GtkImage" id="image6"> <property name="visible">True</property> - <property name="stock">gtk-yes</property> + <property name="pixbuf">pickup.png</property> <property name="icon_size">5</property> </widget> </child> @@ -2313,7 +4277,7 @@ Hold Active</property> <child> <widget class="GtkImage" id="image5"> <property name="visible">True</property> - <property name="stock">gtk-yes</property> + <property name="pixbuf">pickup.png</property> <property name="icon_size">5</property> </widget> </child> @@ -2348,7 +4312,7 @@ Drop Active</property> <child> <widget class="GtkImage" id="image3"> <property name="visible">True</property> - <property name="stock">gtk-cancel</property> + <property name="pixbuf">hangup.png</property> <property name="icon_size">5</property> </widget> </child> @@ -2447,80 +4411,4 @@ Drop Active</property> </widget> </child> </widget> - <widget class="GtkDialog" id="HistoryDialog"> - <property name="border_width">5</property> - <property name="modal">True</property> - <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property> - <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> - <property name="transient_for">ScanDialog</property> - <property name="has_separator">False</property> - <child internal-child="vbox"> - <widget class="GtkVBox" id="dialog-vbox4"> - <property name="visible">True</property> - <property name="spacing">2</property> - <child> - <widget class="GtkScrolledWindow" id="scrolledwindow2"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="hscrollbar_policy">GTK_POLICY_NEVER</property> - <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> - <property name="shadow_type">GTK_SHADOW_IN</property> - <child> - <widget class="GtkTreeView" id="HistoryResults"> - <property name="width_request">300</property> - <property name="height_request">200</property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="headers_clickable">True</property> - </widget> - </child> - </widget> - <packing> - <property name="position">1</property> - </packing> - </child> - <child internal-child="action_area"> - <widget class="GtkHButtonBox" id="dialog-action_area4"> - <property name="visible">True</property> - <property name="layout_style">GTK_BUTTONBOX_END</property> - <child> - <widget class="GtkButton" id="HistoryCancel"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">True</property> - <property name="label">gtk-cancel</property> - <property name="use_stock">True</property> - <property name="response_id">1</property> - <signal name="clicked" handler="HistoryCancel_clicked_cb"/> - </widget> - <packing> - <property name="position">1</property> - </packing> - </child> - <child> - <widget class="GtkButton" id="HistoryOK"> - <property name="visible">True</property> - <property name="sensitive">False</property> - <property name="can_focus">True</property> - <property name="receives_default">True</property> - <property name="label">gtk-ok</property> - <property name="use_stock">True</property> - <property name="response_id">0</property> - <signal name="clicked" handler="HistoryOK_clicked_cb"/> - </widget> - <packing> - <property name="pack_type">GTK_PACK_END</property> - <property name="position">1</property> - </packing> - </child> - </widget> - <packing> - <property name="expand">False</property> - <property name="pack_type">GTK_PACK_END</property> - </packing> - </child> - </widget> - </child> - </widget> </glade-interface> diff --git a/data/hfconsole.in b/data/hfconsole.in index feb65f1..4573982 100755 --- a/data/hfconsole.in +++ b/data/hfconsole.in @@ -114,17 +114,204 @@ class GtkAlerter: if not self.removed: self.complete() +# This is really _really_ stupid +# If there was a vCard parser that was part of the standard +# Python distribution, it would be used here. But there isn't +# and the job isn't very complicated. +class VCard: + """A hacky vCard representation""" + +class VCardSet: + """A hacky vCard container/manager object""" + + def __init__(self): + self._file_line = 0 + self._save_line = None + self._current_object = None + pass + + def _isalpha(self, c): + x = ord(c) + return ((x >= ord('a') and x <= ord('z')) or + (x >= ord('A') and x <= ord('Z'))) + def _isnum(self, c): + x = ord(c) + return (x >= ord('0') and x <= ord('9')) + def _iswsp(self, c): + return c == ' ' or c == '\t' + def _issafe(self, c): + x = ord(c) + return (self._iswsp(c) + or x == 0x21 or + (x >= 0x23 and x <= 0x2b) or + (x >= 0x2d and x <= 0x39) or + (x >= 0x3c and x <= 0x7e) or + x > 0x7f) + def _isqsafe(self, c): + x = ord(c) + return (_iswsp(c) + or x == 0x21 or + (x >= 0x23 and x <= 0x7e) or + x > 0x7f) + + def _process_line(self, name, groups, params, value): + print "Name:%s groups:%s value:%s" % (name, groups, value) + for param in params: + print "\t%s=%s" % (param, params[param]) + + def _parse_error(self, message): + raise Exception('Line %d: %s' % (self._file_line, message)) + def _parse_name_groups(self, line): + groups = [] + name = None + sep = 0 + while True: + if len(line) > sep: + x = line[sep] + if (self._isalpha(x) or + self._isnum(x) or + x == '-'): + sep += 1 + continue + elif x == '.': + if not sep: + self._parse_error( + _('Empty group definition')) + groups.append(line[:sep]) + line = line[(sep + 1):] + sep = 0 + continue + if not sep: + self._parse_error(_("Empty content name")) + name = line[:sep] + line = line[sep:] + return (groups, name, line) + def _parse_param_value(self, line): + sep = 0 + if line[0] == '"': + line = line[1:] + while True: + if len(line) <= sep: + self._parse_error( + _("Malformed quoted " + "parameter value")) + x = line[sep] + if self._isqsafe(x): + sep += 1 + continue + elif x == '"': + break + else: + self._parse_error( + _("Malformed quoted " + "parameter value")) + + value = '' + if sep: + value = line[:sep] + line = line[(sep + 1):] + return (value, line) + + while True: + if len(line) > sep: + x = line[sep] + if self._issafe(x): + sep += 1 + continue + break + value = '' + if sep: + value = line[:sep] + line = line[sep:] + return (value, line) + + def _parse_param(self, line): + name = None + values = [] + sep = 0 + while True: + if len(line) <= sep: + self._parse_error(_("Malformed parameter")) + x = line[sep] + if self._isalpha(x) or self._isnum(x) or x == '-': + sep += 1 + else: + if not sep: + self._parse_error( + _("Empty parameter name")) + name = line[:sep] + if x == '=': + line = line[(sep + 1):] + break + line = line[sep:] + return (name, values, line) + + while True: + (x, line) = self._parse_param_value(line) + values.append(x) + if not len(line): + return (name, values, line) + x = line[0] + if x != ',': + return (name, values, line) + line = line[1:] + def _parse_line(self, line): + print "Line:%s" % line + (groups, name, line) = self._parse_name_groups(line) + params = {} + if not line: + self._parse_error(_('Malformed content line')) + while line[0] == ';': + (param, values, line) = self._parse_param(line[1:]) + if param in params: + params[param].extend(values) + else: + params[param] = values + if line[0] != ':': + self._parse_error(_('Malformed content line')) + self._process_line(name, groups, params, line[1:]) + + def _feed_line(self, line): + if not line or not self._iswsp(line[0]): + if self._save_line: + self._parse_line(self._save_line) + self._save_line = line + elif self._save_line: + self._save_line += line[1:] + else: + self._save_line = line[1:] + self._file_line += 1 + def _feed_done(self): + self._feed_line(None) + if self._current_object: + self._parse_error(_('Unterminated object in stream')) + def import_string(self, str): + self._file_line = 0 + line = '' + for x in str.splitlines(): + self._feed_line(x) + self._feed_done() + def import_file(self, path): + f = open(path, 'r') + contents = f.read() + f.close() + self.import_string(contents) + + class HfConsole: """This is a user interface for the hfpd Bluetooth hands-free profile server""" + DBUS_SERVICE_NAME = 'org.freedesktop.DBus' DBUS_INTERFACE_DBUS = 'org.freedesktop.DBus' DBUS_INTERFACE_PROPERTIES = 'org.freedesktop.DBus.Properties' + DBUS_BUS_OBJECT = '/org/freedesktop/DBus' HFPD_HANDSFREE_INTERFACE_NAME = 'net.sf.nohands.hfpd.HandsFree' HFPD_SOUNDIO_INTERFACE_NAME = 'net.sf.nohands.hfpd.SoundIo' HFPD_AUDIOGATEWAY_INTERFACE_NAME = 'net.sf.nohands.hfpd.AudioGateway' HFPD_SERVICE_NAME = 'net.sf.nohands.hfpd' HFPD_HANDSFREE_OBJECT = '/net/sf/nohands/hfpd' + HFPD_SOUNDIO_OBJECT = '/net/sf/nohands/hfpd/soundio' def addr_transform(self, addr): val = (str(addr[0:2]) + str(addr[3:5]) + str(addr[6:8]) + @@ -160,38 +347,77 @@ class HfConsole: # Create our dictionay and connect it dic = { # Callbacks for the main window + "AgSelector_button_press_event_cb" : + self.ag_selector_open, + "AgSelector_toggled_cb" : self.ag_selector_toggle, + "AgScan_clicked_cb" : self.bar_ag_scan_clicked, + "AgConnect_clicked_cb" : self.bar_ag_connect_clicked, + "BarDialPad_clicked_cb" : self.bar_dialpad_clicked, + "BarContacts_clicked_cb" : self.bar_contacts_clicked, + "AgAudioToggle_toggled_cb" : self.bar_ag_audio_toggled, + "AgHangUp_clicked_cb" : self.bar_ag_hangup_clicked, + "AgHoldCall_clicked_cb" : self.bar_ag_swaphold_clicked, + "AgSwapCall_clicked_cb" : self.bar_ag_swaphold_clicked, + "AgDial_clicked_cb" : self.bar_ag_dial_clicked, + "AgRedial_clicked_cb" : self.bar_ag_redial_clicked, + "ConfigOpen_clicked_cb" : self.bar_config_clicked, "DigitButton_pressed_cb" : self.digit_button_pressed, "DigitButton_clicked_cb" : self.digit_button_clicked, "PhoneNumBs_clicked_cb" : self.phone_num_bs, - "DialPadDial_clicked_cb" : self.dial_dial_clicked, - "DialPadRedial_clicked_cb" : self.dial_redial_clicked, - "DialPadXfer_activate_cb" : self.dial_xfer_clicked, - "ScanButton_clicked_cb" : self.scan_open, - "ConfigButton_clicked_cb" : self.config_open, "Mute_toggled_cb" : self.mute_toggled, "on_MainWindow_destroy" : gtk.main_quit, - # Callbacks for the scan dialog - "on_ScanDialog_close" : gtk.main_quit, - "ScanOK_clicked_cb" : self.scan_ok_clicked, - "ScanCancel_clicked_cb" : self.scan_cancel_clicked, + # Known Devices tab + "DevicesClose_clicked_cb" : self.devices_close_clicked, + "DevicesAdd_clicked_cb" : self.devices_add_clicked, + "DevicesDelete_clicked_cb" : + self.devices_delete_clicked, + "DevicesConnect_clicked_cb" : + self.devices_connect_clicked, + "DevicesDisconnect_clicked_cb" : + self.devices_disconnect_clicked, + "DevicesAutoConnectNever_toggled_cb" : + self.devices_autoconnect_never_toggled, + "DevicesAutoConnectDisabled_toggled_cb" : + self.devices_autoconnect_disabled_toggled, + "DevicesAutoConnectEnabled_toggled_cb" : + self.devices_autoconnect_enabled_toggled, + + # New Device tab + "NewDeviceClose_clicked_cb" : + self.newdevice_close_clicked, + "NewDeviceAdd_clicked_cb" : + self.newdevice_add_clicked, + "NewDeviceClear_clicked_cb" : + self.newdevice_clear_clicked, + + # Callbacks for the scan tab + "ScanAdd_clicked_cb" : self.scan_add_clicked, + "ScanClose_clicked_cb" : self.scan_close_clicked, "ScanHistory_clicked_cb" : self.scan_history_clicked, "ScanRestart_clicked_cb" : self.scan_restart_clicked, - # Callbacks for the history dialog + # Callbacks for the history tab "HistoryOK_clicked_cb" : self.history_ok_clicked, "HistoryCancel_clicked_cb" : self.history_cancel_clicked, - # Callbacks for the config dialog - "ConfigOk_clicked_cb" : self.config_ok_clicked, + # Callbacks for the config tab + "ConfigOK_clicked_cb" : self.config_ok_clicked, "ConfigCancel_clicked_cb" : self.config_cancel_clicked, + "ConfigInit_clicked_cb" : self.config_init_clicked, + "ConfigDevices_clicked_cb" : + self.config_devices_clicked, "ConfigDriver_changed_cb" : self.config_driver_changed, "ConfigPacketIntervalHint_toggled_cb" : self.config_packet_interval_toggled, "ConfigPacketInterval_value_changed_cb" : self.config_packet_interval_changed, + "ConfigJitterWindowHint_toggled_cb" : + self.config_jitter_window_toggled, + "ConfigJitterWindow_value_changed_cb" : + self.config_jitter_window_changed, "ConfigMinOutBufferHint_toggled_cb" : self.config_min_out_buffer_toggled, "ConfigMinOutBuffer_value_changed_cb" : @@ -217,22 +443,88 @@ class HfConsole: "ConfigDspTest_clicked_cb" : self.config_dsptest_open, "on_ConfigDialog_close" : gtk.main_quit, - # Callbacks for the DSP test assistant - "DspTestAssistant_prepare_cb" : - self.config_dsptest_prepare, - "DspTestAssistant_cancel_cb" : - self.config_dsptest_cancel, - "DspTestAssistant_close_cb" : + # Callbacks for the DSP test + "DspTestForward_clicked_cb" : + self.config_dsptest_forward, + "DspTestBack_clicked_cb" : + self.config_dsptest_back, + "DspTestClose_clicked_cb" : self.config_dsptest_close, + "DspTestNotebook_switch_page_cb" : + self.config_dsptest_switch_page, "DspTestRecStart1_toggled_cb" : self.config_dsptest_recstart1_toggled, "DspTestRecStart2_toggled_cb" : self.config_dsptest_recstart2_toggled, "DspTestPlayStart_toggled_cb" : self.config_dsptest_playstart_toggled, + + # Callbacks for the initial configuration page + "InitConfDone_clicked_cb" : self.initconf_done_clicked, + "InitConfBack_clicked_cb" : self.initconf_back_clicked, + "InitConfForward_clicked_cb" : + self.initconf_forward_clicked, + "InitConfNotebook_switch_page_cb" : + self.initconf_switch_page, + } self.widgets.signal_autoconnect(dic) + self.ag_list = gtk.Menu() + self.ag_list_separator = gtk.SeparatorMenuItem() + self.ag_list_separator.set_no_show_all(True) + self.ag_list.append(self.ag_list_separator) + self.ag_list_scan = gtk.MenuItem(_('Search for Device...')) + self.ag_list_scan.connect('activate', + self.ag_selector_scan_activate) + self.ag_list.append(self.ag_list_scan) + self.ag_list_manage = gtk.MenuItem(_('Manage Devices...')) + self.ag_list_manage.connect('activate', + self.ag_selector_manage_activate) + self.ag_list.append(self.ag_list_manage) + self.ag_list.connect('selection-done', self.ag_selector_close) + self.ag_list.show_all() + + self.ag_list_detail = gtk.ListStore(gobject.TYPE_STRING, + gobject.TYPE_STRING, + gobject.TYPE_PYOBJECT) + self['DevicesList'].set_model(self.ag_list_detail) + tvcolumn = gtk.TreeViewColumn(_('Name')) + self['DevicesList'].append_column(tvcolumn) + cell = gtk.CellRendererText() + tvcolumn.pack_start(cell, True) + tvcolumn.add_attribute(cell, 'text', 0) + tvcolumn = gtk.TreeViewColumn(_('Address')) + self['DevicesList'].append_column(tvcolumn) + cell = gtk.CellRendererText() + tvcolumn.pack_start(cell, True) + tvcolumn.add_attribute(cell, 'text', 1) + self['DevicesList'].get_selection().connect('changed', + self.devices_select) + self.devices_ag = None + + self.ag_list_new = gtk.ListStore(gobject.TYPE_STRING, + gobject.TYPE_STRING, + gobject.TYPE_PYOBJECT) + self['NewDeviceList'].set_model(self.ag_list_new) + tvcolumn = gtk.TreeViewColumn(_('Name')) + self['NewDeviceList'].append_column(tvcolumn) + cell = gtk.CellRendererText() + tvcolumn.pack_start(cell, True) + tvcolumn.add_attribute(cell, 'text', 0) + tvcolumn = gtk.TreeViewColumn(_('Address')) + self['NewDeviceList'].append_column(tvcolumn) + cell = gtk.CellRendererText() + tvcolumn.pack_start(cell, True) + tvcolumn.add_attribute(cell, 'text', 1) + self['NewDeviceList'].get_selection().connect('changed', + self.newdevice_select) + self.ag_list_new.connect('row-inserted', + self.newdevice_row_added) + self.ag_list_new.connect('row-deleted', + self.newdevice_row_removed) + self.newdevice_ag = None + self['ConfigDriverDevList'].set_model( gtk.ListStore(gobject.TYPE_STRING, gobject.TYPE_STRING)) @@ -249,7 +541,7 @@ class HfConsole: gobject.TYPE_UINT, gobject.TYPE_STRING) self['ScanResults'].set_model(self.scanresults) - tvcolumn = gtk.TreeViewColumn('Device') + tvcolumn = gtk.TreeViewColumn(_('Device')) self['ScanResults'].append_column(tvcolumn) cell = gtk.CellRendererText() tvcolumn.pack_start(cell, True) @@ -261,7 +553,7 @@ class HfConsole: gobject.TYPE_UINT, gobject.TYPE_STRING) self['HistoryResults'].set_model(self.historyresults) - tvcolumn = gtk.TreeViewColumn('Device') + tvcolumn = gtk.TreeViewColumn(_('Device')) self['HistoryResults'].append_column(tvcolumn) cell = gtk.CellRendererText() tvcolumn.pack_start(cell, True) @@ -276,9 +568,14 @@ class HfConsole: self.ags = {} self.ags_added = {} self.soundmonitor = False - self.autoreconnect = True self.selected_ag = None + self.selected_ag_lock = False self.command_audio_attach_state = False + self.nobt = False + self.nested = False + + self.frontpage = 0 #1 + self.frontnotebook_set(self.frontpage) self.alerter_factory = (lambda x: GtkAlerter(self.gladefile, x)) @@ -296,24 +593,24 @@ class HfConsole: p = subprocess.Popen(exc, shell=True) def getprop_hfpd(self, prop): - return self.hfpd_props.Get('net.sf.nohands.hfpd.HandsFree', + return self.hfpd_props.Get(self.HFPD_HANDSFREE_INTERFACE_NAME, prop) def getprop_soundio(self, prop): - return self.soundio_props.Get('net.sf.nohands.hfpd.SoundIo', + return self.soundio_props.Get(self.HFPD_SOUNDIO_INTERFACE_NAME, prop) def setprop_hfpd(self, name, value): - self.hfpd_props.Set('net.sf.nohands.hfpd.HandsFree', + self.hfpd_props.Set(self.HFPD_HANDSFREE_INTERFACE_NAME, name, value) def setprop_soundio(self, name, value): - self.soundio_props.Set('net.sf.nohands.hfpd.SoundIo', + self.soundio_props.Set(self.HFPD_SOUNDIO_INTERFACE_NAME, name, value) def Start(self): try: self.busctl = dbus.Interface( - self.dbus.get_object('org.freedesktop.DBus', - '/org/freedesktop/DBus'), - dbus_interface='org.freedesktop.DBus') + self.dbus.get_object(self.DBUS_SERVICE_NAME, + self.DBUS_BUS_OBJECT), + dbus_interface=self.DBUS_INTERFACE_DBUS) except dbus.exceptions.DBusException, (ex): self.fatal(_('Could not connect to D-Bus:\n%s') % str(ex)) @@ -321,21 +618,23 @@ class HfConsole: try: self.hfpd = dbus.Interface( - self.dbus.get_object('net.sf.nohands.hfpd', - '/net/sf/nohands/hfpd'), - dbus_interface='net.sf.nohands.hfpd.HandsFree') + self.dbus.get_object(self.HFPD_SERVICE_NAME, + self.HFPD_HANDSFREE_OBJECT), + dbus_interface = + self.HFPD_HANDSFREE_INTERFACE_NAME) self.hfpd_props = dbus.Interface( - self.dbus.get_object('net.sf.nohands.hfpd', - '/net/sf/nohands/hfpd'), - dbus_interface='org.freedesktop.DBus.Properties') + self.dbus.get_object(self.HFPD_SERVICE_NAME, + self.HFPD_HANDSFREE_OBJECT), + dbus_interface=self.DBUS_INTERFACE_PROPERTIES) self.soundio = dbus.Interface( - self.dbus.get_object('net.sf.nohands.hfpd', - '/net/sf/nohands/hfpd/soundio'), - dbus_interface='net.sf.nohands.hfpd.SoundIo') + self.dbus.get_object(self.HFPD_SERVICE_NAME, + self.HFPD_SOUNDIO_OBJECT), + dbus_interface = + self.HFPD_SOUNDIO_INTERFACE_NAME) self.soundio_props = dbus.Interface( - self.dbus.get_object('net.sf.nohands.hfpd', - '/net/sf/nohands/hfpd/soundio'), - dbus_interface='org.freedesktop.DBus.Properties') + self.dbus.get_object(self.HFPD_SERVICE_NAME, + self.HFPD_SOUNDIO_OBJECT), + dbus_interface=self.DBUS_INTERFACE_PROPERTIES) except dbus.exceptions.DBusException, (ex): self.fatal(_('Could not connect to hfpd:\n%s\n\n' 'Ensure that hfpd and its D-Bus ' @@ -351,7 +650,7 @@ class HfConsole: except: v = 0 - my_version = 2 + my_version = 3 if v < my_version: self.fatal(_('Version mismatch with hfpd!\n' 'hfpd version: %(hfpdver)d\n' @@ -393,7 +692,7 @@ class HfConsole: loadags = self.configfile.items('devices') for x in loadags: x = self.addr_untransform(x[0]) - self.add_audiogateway(x) + self.add_audiogateway(x, False) self.busctl.connect_to_signal("NameOwnerChanged", self.hfpd_lost) @@ -426,20 +725,24 @@ class HfConsole: self.soundio_status_ctx = self['StatusBar'].get_context_id( 'SoundIoStatus') self.soundio_skew_monitor = None - st = self.getprop_hfpd('SystemState') - self.hfpd_system_state(st) - if not st: + self.nobt = not self.getprop_hfpd('SystemState') + self.hfpd_system_state(not self.nobt) + if self.nobt: try: self.hfpd.Start() + self.nobt = False except dbus.exceptions.DBusException, (ex): if (ex.get_dbus_name() != 'net.sf.nohands.hfpd.Error'): - self.fatal(ex.get_dbus_message()) + self.fatal(str(ex)) return self.setprop_hfpd('AutoRestart', True) ags = self.getprop_hfpd('AudioGateways') for x in ags: self.hfpd_ag_added(str(x)) + if not self.selected_ag: + self.ag_none_selected() + self.soundio_state_changed(self.getprop_soundio('State')) hwg['MainWindow'].show() @@ -449,13 +752,12 @@ class HfConsole: def error_closed(self, dlg, response): dlg.hide() - def error_message(self, msg, window=None): + def error_message(self, msg): dlg = gtk.MessageDialog(None, gtk.DIALOG_MODAL, gtk.MESSAGE_ERROR, gtk.BUTTONS_OK, msg) - if not window: - window = self['MainWindow'] + window = self['MainWindow'] dlg.set_title(window.get_title()) dlg.set_transient_for(window) dlg.set_position(gtk.WIN_POS_CENTER_ON_PARENT) @@ -471,75 +773,36 @@ class HfConsole: dlg.connect('response', self.fatal_closed) class AudioGateway: - def image_button(self, toggle, stock, tip): - if toggle: - but = gtk.ToggleButton() - else: - but = gtk.Button() - img = gtk.Image() - img.set_from_stock(stock, - gtk.ICON_SIZE_LARGE_TOOLBAR) - but.add(img) - img.show() - but.set_no_show_all(True) - - # Fail gracefully if not available - try: but.set_tooltip_text(tip) - except: pass - return but - + def reset_indicators(self): + self.signal = -1 + self.battery = -1 + self.message = False + self.vm = False + self.noservice = False def __init__(self, hfc, sbus, hfpd, agpath, box): self.hfc = hfc self.path = agpath self.hfpd = hfpd self.alerter = None self.caller_id = None + self.reset_indicators() + self.autoreconnect = 1 + self.autoreconnect_flag = False - frame = gtk.Frame('') - box.pack_start(frame, expand=False) - vbox = gtk.VBox(spacing = 8) - vbox.set_border_width(8) - frame.add(vbox) - hbox = gtk.HBox(spacing = 8) - vbox.pack_start(hbox) - lab = gtk.Label('State Here') - lab.set_alignment(0.0, 0.5) - hbox.pack_start(lab, expand=True) - self.statelab = lab - but = self.image_button(False, gtk.STOCK_DELETE, - _('Remove Device')) - hbox.pack_end(but, expand=False) - but.connect('clicked', self.remove_clicked) - self.remove_but = but - but = self.image_button(False, gtk.STOCK_CONNECT, - _('Connect Now')) - hbox.pack_end(but, expand=False) - but.connect('clicked', self.connect_clicked) - self.connect_but = but - but = self.image_button(True, gtk.STOCK_APPLY, - _('Set Device as Primary')) - hbox.pack_end(but, expand=False) - but.connect('toggled', self.select_toggled) - self.select_but = but - but = self.image_button(False, gtk.STOCK_ADD, - _('Remember This Device')) - hbox.pack_end(but, expand=False) - but.connect('clicked', self.add_clicked) - self.add_but = but - self.frame = frame self.state = 0 self.callstate = 0 self.audiostate = 0 - self.noservice = False + self.disp = hfc.ag_disp_new(self) - self.dbusobj = sbus.get_object('net.sf.nohands.hfpd', - agpath) + self.dbusobj = sbus.get_object( + hfc.HFPD_SERVICE_NAME, + agpath) self.ag = dbus.Interface(self.dbusobj, dbus_interface = - 'net.sf.nohands.hfpd.AudioGateway') + hfc.HFPD_AUDIOGATEWAY_INTERFACE_NAME) self.agprops = dbus.Interface(self.dbusobj, - dbus_interface = - 'org.freedesktop.DBus.Properties') + dbus_interface = + hfc.DBUS_INTERFACE_PROPERTIES) self.sigs = [] sig = self.ag.connect_to_signal("NameResolved", @@ -554,6 +817,9 @@ class HfConsole: sig = self.ag.connect_to_signal("AudioStateChanged", self.audio_state_changed) self.sigs.append(sig) + sig = self.ag.connect_to_signal("AutoReconnectChanged", + self.autoreconnect_changed) + self.sigs.append(sig) sig = self.ag.connect_to_signal("IndicatorChanged", self.indicator_changed) self.sigs.append(sig) @@ -562,111 +828,168 @@ class HfConsole: self.sigs.append(sig) self.addr = self.getprop('Address') - name = self.getprop('Name') - self.frame.set_label(name) + self.name = self.getprop('Name') + if self.name == self.addr: + self.name = self.hfc.ag_history_getname( + self.addr) self.state = self.getprop('State') self.callstate = self.getprop('CallState') self.audiostate = self.getprop('AudioState') self.state_changed(self.state, False) self.call_state_changed(self.callstate) self.audio_state_changed(self.audiostate) - self.frame.show_all() + self.disp.set_name(self.name) self.hfc.ag_update_history(self.addr, None) - def set_state_labels(self): - state = self.state - callstate = self.callstate - lab = 'Invalid State' - self.remove_but.show() - if state != 4: - if state == 1: - lab = _('Destroyed') + '\n' - if state == 2: - lab = _('Detached') + '\n' - self.connect_but.show() - self.connect_but.set_sensitive(True) - if state == 3: - lab = _('Attaching') + '\n' - self.connect_but.show() - self.connect_but.set_sensitive(False) - self.statelab.set_markup(lab) - self.select_but.hide() - self.hfc.ag_state_changed(self) - return - self.connect_but.hide() - self.select_but.show() - if callstate == 1: - lab = _('Ready') + '\n' - if self.noservice: - lab = _('No Service') + '\n' - if callstate == 2: - lab = _('Dialing') + '\n' - if callstate == 3: - lab = _('Call Established') + '\n' - if callstate == 4: - lab = _('Ringing') + '\n' - if callstate == 5: - lab = _('Waiting Call') + '\n' - if self.has_audio(): - lab += _('Audio Open') - self.statelab.set_markup(lab) - self.hfc.ag_state_changed(self) - def has_feature(self, feat): return (hasattr(self, 'features') and self.features[feat]) + def is_connecting(self): + return self.state == 3 + def is_connected(self): + return self.state == 4 def can_dial(self): - return self.state == 4 and (self.callstate == 1 or - self.callstate == 4) + return self.is_connected() and (self.callstate == 1 or + self.callstate == 4) def can_dtmf(self): - return self.state == 4 and (self.callstate == 2 or - self.callstate == 3 or - self.callstate == 5) + return self.is_connected() and (self.callstate == 2 or + self.callstate == 3 or + self.callstate == 5) + def can_hold(self): + return (self.is_connected() and + self.has_feature('SwapHoldActive') and + ((self.callstate == 3) or + (self.callstate == 5))) + def has_any_call(self): + return self.is_connected() and (self.callstate != 1) + def has_waiting_call(self): + return self.is_connected() and (self.callstate == 4 or + self.callstate == 5) + def has_message(self): + return self.is_connected() and (self.message or self.vm) def can_drop_waiting(self): return self.has_feature('RejectCall') def can_drop_held_udub(self): return self.has_feature('DropHeldUdub') def selectable(self): - return self.state == 4 + return self.is_mine() + def select_priority(self): + if self.has_audio(): + return 4 + if self.has_any_call(): + return 3 + if self.has_service(): + return 2 + if self.is_connected(): + return 1 + return 0 + def is_mine(self): + return self.hfc.ags_added.has_key(self.addr) + def load_config(self): + ar = True + if self.hfc.ag_config_has_option(self.addr, + 'autoreconnect'): + ar = self.hfc.ag_config_get_option(self.addr, + 'autoreconnect') + try: ar = int(ar) + except: ar = 2 + if ar != self.autoreconnect: + self.autoreconnect = ar + if ar == 2: self.set_autoreconnect_flag(True) + else: self.set_autoreconnect_flag(False) + def save_config(self): + self.hfc.ag_config_set_option(self.addr, + 'autoreconnect', + self.autoreconnect) + def update_mine(self): + self.disp.set_name(None) + self.disp.set_name(self.name) + def get_autoreconnect(self): + return self.autoreconnect + def set_autoreconnect(self, value): + if value == self.autoreconnect: + return + self.autoreconnect = value + if value == 2: self.set_autoreconnect_flag(True) + else: self.set_autoreconnect_flag(False) + self.save_config() + self.disp.set_state() + def get_autoreconnect_flag(self): + return self.autoreconnect_flag + def set_autoreconnect_flag(self, value): + value = bool(value) + if value != self.autoreconnect_flag: + self.setprop('AutoReconnect', + dbus.Boolean(value)) + self.autoreconnect_flag = value + def has_service(self): + return self.is_connected() and not self.noservice + def signal_level(self): + return self.signal + def battery_level(self): + return self.battery + def audio_connecting(self): + return self.audiostate == 2 def has_audio(self): return self.audiostate == 3 def wants_audio(self): return (self.callstate == 2 or self.callstate == 3 or self.callstate == 5) - def select(self, state): - if state and not self.selectable(): - return False - self.nested = True - self.select_but.set_active(state) - del self.nested - return True def name_resolved(self, name): - self.frame.set_label(name) - self.hfc.ag_update_history(self.addr, name) + self.name = name + self.disp.set_name(self.name) + self.hfc.ag_update_history(self.addr, self.name) def state_changed(self, state, voluntary): self.state = int(state) - if self.state == 4: + if self.is_connected(): self.features = self.getprop('Features') + if (self.is_mine() and + self.get_autoreconnect() == 1): + self.set_autoreconnect(2) else: + self.reset_indicators() self.call_state_changed(1) if hasattr(self, 'features'): del self.features - self.set_state_labels() + self.disp.set_state() def call_state_changed(self, state): self.callstate = int(state) - self.set_state_labels() + self.disp.set_state() if (self.callstate != 4 and self.callstate != 5): self.alert_close() def audio_state_changed(self, state): self.audiostate = int(state) - self.set_state_labels() + self.disp.set_state() + def soundio_state_changed(self): + self.disp.set_state() + def autoreconnect_changed(self, value): + value = bool(value) + if self.autoreconnect_flag != value: + self.autoreconnect_flag = value + if value and self.get_autoreconnect() == 0: + self.set_autoreconnect(2) + elif not value and self.get_autoreconnect() ==2: + self.set_autoreconnect(1) def indicator_changed(self, name, val): + #print "Indicator %s -> %d" % (name, int(val)) if name == 'service': self.noservice = not val - self.set_state_labels() + self.disp.set_state() + elif name == 'signal': + self.signal = int(val) + self.disp.set_state() + elif name == 'battchg': + self.battery = int(val) + self.disp.set_state() + elif name == 'voice mail': + self.vm = int(val) + self.disp.set_state() + elif name == 'message': + self.vm = int(val) + self.disp.set_state() def alert_close(self): if self.alerter: @@ -685,20 +1008,14 @@ class HfConsole: def waiting_caller_info(self): return (self.caller_id, self.caller_phbook) - def connect_clicked(self, widget): + def connect(self): self.ag.Connect() - def not_mine(self): - self.add_but.show() - def add_clicked(self, widget): - self.hfc.ag_add_to_config(self.addr) - widget.hide() - def select_toggled(self, widget): - if hasattr(self, 'nested'): - return - self.hfc.ag_select(self, widget.get_active()) - + def disconnect(self): + self.ag.Disconnect() def command_failed(self, reason): print _("Command failed: %s") % reason + def open_audio(self): + self.ag.OpenAudio() def close_audio(self): self.ag.CloseAudio() def dial(self, number): @@ -733,32 +1050,239 @@ class HfConsole: self.ag.SendDtmf(char[0], reply_handler=lambda : None, error_handler=self.command_failed) - def remove_clicked(self, widget): - if self.hfc.configfile.remove_option('devices', - self.hfc.addr_transform(self.addr)): - self.hfc.configfile.write(open( - self.hfc.configfile_name, 'w+')) - self.setprop('Known', False) + def do_remove(self): + self.hfc.ag_remove_from_config(self.addr) + if self.hfc.ags_added.has_key(self.addr): + del self.hfc.ags_added[self.addr] + x = self.setprop('Known', False) self.hfpd.RemoveDevice(self.addr) def remove(self): - self.frame.get_parent().remove(self.frame) - del self.frame + self.disp.remove() + del self.disp while self.sigs: sig = self.sigs.pop() sig.remove() def getprop(self, prop): return self.agprops.Get( - 'net.sf.nohands.hfpd.AudioGateway', + self.hfc.HFPD_AUDIOGATEWAY_INTERFACE_NAME, prop) def setprop(self, prop, val): return self.agprops.Set( - 'net.sf.nohands.hfpd.AudioGateway', + self.hfc.HFPD_AUDIOGATEWAY_INTERFACE_NAME, prop, val) + class AgStateDisplay: + def __init__(self, hf, ag): + self.hf = hf + self.ag = ag + self.item = None + self.row_detail = None + self.row_new = None + def selector_toggle(self, widget): + if widget.get_active(): + self.hf.ag_selector_changed(self.ag) + def remove_item(self): + if self.item: + self.hf.ag_list.remove(self.item) + self.item = None + kids = self.hf.ag_list.get_children() + count = len(kids) + if count == 3: + self.hf.ag_list_separator.hide() + def set_name(self, name): + if not name: + self.remove_item() + if self.row_detail: + self.hf.ag_list_detail.remove( + self.row_detail) + self.row_detail = None + if self.row_new: + self.hf.ag_list_new.remove( + self.row_new) + self.row_new = None + return + + if not self.ag.is_mine(): + if not self.row_new: + self.row_new = (self.hf.ag_list_new. + append( + row=[name, self.ag.addr, self])) + else: + self.hf.ag_list_new.set(self.row_new, + 0, name) + return + + self.remove_item() + group = None + kids = self.hf.ag_list.get_children() + count = len(kids) + if count > 3: + group = kids[0] + self.hf.ag_list_separator.show() + self.item = gtk.RadioMenuItem(group, name) + self.item.connect('toggled', self.selector_toggle) + self.item.show_all() + if self.ag == self.hf.selected_ag: + self.item.set_active(True) + self.hf.ag_list.insert(self.item, count - 3) + if self.ag == self.hf.selected_ag: + self.hf['AgSelectorLabel'].set_text(name) + + if not self.row_detail: + self.row_detail = (self.hf.ag_list_detail. + append( + row=[name, self.ag.addr, self])) + else: + self.hf.ag_list_detail.set(self.row_detail, + 0, name) + def remove(self): + if self.ag == self.hf.selected_ag: + self.hf.selected_ag = None + self.hf.ag_none_selected() + self.ag = None + self.set_name(None) + + def do_mainwindow_state(self, string): + self.hf['AudioGatewayStateLabel'].set_markup( + string) + def mainwindow_state(self): + if self.hf.selected_ag != self.ag: + return + state = self.ag.state + callstate = self.ag.callstate + lab = 'Invalid State' + if not self.ag.is_connected(): + if state == 1: + lab = _('Destroyed') + if state == 2: + lab = _('Detached') + if state == 3: + lab = _('Attaching') + lab += '\n' + else: + if callstate == 1: + lab = _('Ready') + if not self.ag.has_service(): + lab = _('No Service') + if callstate == 2: + lab = _('Dialing') + if callstate == 3: + lab = _('Call Established') + if callstate == 4: + lab = _('Ringing') + if callstate == 5: + lab = _('Waiting Call') + lab += '\n' + if self.ag.has_audio(): + lab += _('Audio Open') + elif self.ag.audio_connecting(): + lab += _('Audio Connecting') + self.do_mainwindow_state(lab) + self.hf.ag_configure_gui(self.ag) + + def devices_state(self): + if self.hf.devices_ag != self.ag: + return + self.hf.nested = True + self.hf['DevicesProperties'].set_sensitive(True) + self.hf['DevicesDevAddr'].set_text(self.ag.addr) + v = self.ag.get_autoreconnect() + if v == 0: v = 'DevicesAutoConnectNever' + elif v == 1: v = 'DevicesAutoConnectDisabled' + else: v = 'DevicesAutoConnectEnabled' + self.hf[v].set_active(True) + if self.ag.is_connected(): + self.hf['DevicesConnect'].hide() + self.hf['DevicesDisconnect'].show() + else: + self.hf['DevicesConnect'].show() + self.hf['DevicesConnect'].set_sensitive( + not self.ag.is_connecting()) + self.hf['DevicesDisconnect'].hide() + self.hf.nested = False + + def update_state(self): + self.mainwindow_state() + self.devices_state() + + def set_state(self): + self.hf.ag_state_changed(self.ag) + self.update_state() + + def ag_disp_new(self, ag): + disp = self.AgStateDisplay(self, ag) + return disp + + def ag_selector_set(self, ag): + do_arrow = False + if ag: + lab = ag.name + ag.disp.item.set_active(True) + self['AgSelectorArrow'].show() + else: + lab = _('Search for Device...') + self['AgSelectorArrow'].hide() + self['AgSelectorLabel'].set_text(lab) + def ag_selector_menu_position(self, menu): + widget = self['AgSelector'] + alloc = widget.get_allocation() + (x, y) = widget.get_parent_window().get_origin() + x += alloc.x + y += alloc.y + alloc.height + return (x, y, True) + def ag_selector_open(self, widget, event): + kids = self.ag_list.get_children() + count = len(kids) + if count == 3: + return + self.nested = True + self['AgSelector'].set_active(True) + self.nested = False + self.ag_list.popup(None, None, + self.ag_selector_menu_position, + event.button, + event.get_time()) + + def ag_selector_close(self, widget): + self.nested = True + self['AgSelector'].set_active(False) + self.nested = False + def ag_selector_toggle(self, widget): + if self.nested: + return + self.nested = True + if widget.get_active(): + widget.set_active(False) + self.scan_open() + self.nested = False + def ag_selector_scan_activate(self, widget): + self.scan_open() + def ag_selector_manage_activate(self, widget): + self.devices_open() + def ag_selector_changed(self, ag): + if not ag.selectable(): + ag = None + if self.selected_ag and self.selected_ag.selectable(): + self.selected_ag.item.set_active(True) + ag = self.selected_ag + self.ag_selector_set(ag) + return + + # If the user explicitly picks an audio gateway of lesser + # priority than the currently selected AG, consider the + # selection to be locked to that audio gateway. + lock = False + if self.selected_ag and (self.selected_ag.select_priority() > + ag.select_priority()): + lock = True + self.ag_select_changed(ag, lock) + def hfpd_lost(self, name, old_owner, new_owner): - if name != 'net.sf.nohands.hfpd' or new_owner != '': + if name != self.HFPD_SERVICE_NAME or new_owner != '': return - self.fatal(_('HFPD Process Disconnected')) + msg = _('HFPD Process Disconnected') + print msg + self.fatal(msg) def hfpd_ag_added(self, agpath): if agpath not in self.ags: @@ -768,21 +1292,36 @@ class HfConsole: agpath, self['AudioGatewayBox']) self.ags[agpath] = ag - self.ag_mine(ag) + if ag.is_mine(): + ag.load_config() + else: + self.newdevice_open() + if (self.ags_added.has_key(ag.addr) and + self.ags_added[ag.addr] == 2): + if (not self.selected_ag or + not self.selected_ag.wants_audio()): + self.ags_added[ag.addr] = 1 + self.ag_select_changed(ag) def hfpd_ag_removed(self, agpath): if agpath in self.ags: self.ags[agpath].remove() del self.ags[agpath] - def ag_select_search(self): - for xag in self.ags.values(): - if xag.has_audio() and xag.select(True): - self.ag_select_changed(xag) - return + if not self.selected_ag: + self.ag_none_selected() + def ag_none_selected(self): + (ag, prio) = self.ag_best() + self.ag_select_changed(ag) + def ag_best(self): + best_ag = None + best_prio = -1 for xag in self.ags.values(): - if xag.select(True): - self.ag_select_changed(xag) - return + if xag.selectable() and ( + not best_ag or (best_prio < + xag.select_priority())): + best_ag = xag + best_prio = xag.select_priority() + return (best_ag, best_prio) def ag_stop_audio_unselected(self): for xag in self.ags.values(): if xag != self.selected_ag and xag.has_audio(): @@ -808,58 +1347,66 @@ class HfConsole: self.selected_ag.close_audio() self.ag_stop_audio_unselected() def ag_state_changed(self, ag): - if ((not ag.selectable() and ag == self.selected_ag) or - (ag.has_audio() and self.selected_ag and - not self.selected_ag.has_audio())): - ag.select(False) - self.ag_select_changed(None) - - if not self.selected_ag: - # Find another AG and select it - self.ag_select_search() - # If we still didn't find one, stop audio. - if not self.selected_ag: - self.ag_stop_audio_unselected() - elif ag == self.selected_ag: - # Maybe update buttons to reflect state - self.ag_select_changed(ag) - - def ag_select(self, ag, state): - if ((not state and ag == self.selected_ag) or - (state and ag != self.selected_ag)): - ag.select(False) - self.ag_select_changed(None) - if state and ag.select(True): - self.ag_select_changed(ag) + #print "AG state changed %s %slock" % (ag.name, self.selected_ag_lock) + if ag and ag == self.selected_ag: + self.ag_push_audio() + if self.selected_ag_lock and self.selected_ag.selectable(): + self.ag_stop_audio_unselected() + return + # Evaluate all AGs and maybe change selection + (best, prio) = self.ag_best() + if (not self.selected_ag or + not self.selected_ag.selectable() or + (self.selected_ag.select_priority() < prio)): + self.ag_select_changed(best) if not self.selected_ag: - self.ag_select_search() + self.ag_stop_audio_unselected() - def ag_select_changed(self, ag): - if self.selected_ag: - if self.selected_ag != ag: - self.selected_ag.select(False) - self.selected_ag = ag + def ag_select_changed(self, ag, lock = False): if not ag: - self.command_mode(0) - elif ag.can_dial(): - self.command_mode(1) - elif ag.can_dtmf(): - self.command_mode(2) + lock = False + elif not lock and self.selected_ag == ag: + lock = self.selected_ag_lock + self.selected_ag = ag + self.selected_ag_lock = lock + self.ag_selector_set(ag) + if ag: + ag.disp.update_state() else: - self.command_mode(0) + self.ag_configure_gui(None) if ag: self.ag_push_audio() - def ag_mine(self, ag): - if self.ags_added.has_key(ag.addr): - ag.setprop('AutoReconnect', self.autoreconnect) - else: - ag.not_mine() + def ag_config_has_option(self, addr, name): + section = 'ag_' + self.addr_transform(addr) + if not self.configfile.has_section(section): + return False + return self.configfile.has_option(section, name) + + def ag_config_get_option(self, addr, name): + section = 'ag_' + self.addr_transform(addr) + if not self.configfile.has_section(section): + return None + return self.configfile.get(section, name, raw=True) + + def ag_config_set_option(self, addr, name, value): + section = 'ag_' + self.addr_transform(addr) + if not self.configfile.has_section(section): + self.configfile.add_section(section) + self.configfile.set(section, name, value) + self.configfile.write(open(self.configfile_name, 'w+')) def ag_add_to_config(self, addr): self.configfile.set('devices', self.addr_transform(addr), True) self.configfile.write(open(self.configfile_name, 'w+')) + def ag_remove_from_config(self, addr): + self.configfile.remove_option('devices', + self.addr_transform(addr)) + section = 'ag_' + self.addr_transform(addr) + self.configfile.remove_section(section) + self.configfile.write(open(self.configfile_name, 'w+')) + def ag_update_history(self, addr, name): addrx = self.addr_transform(addr) has = self.configfile.has_option('history', addrx) @@ -872,9 +1419,19 @@ class HfConsole: self.configfile.set('history', addrx, name) self.configfile.write(open(self.configfile_name, 'w+')) - def add_audiogateway(self, addr): + def ag_history_getname(self, addr): + addrx = self.addr_transform(addr) + if not self.configfile.has_option('history', addrx): + return None + return self.configfile.get('history', addrx) + + def add_audiogateway(self, addr, selectit): + agpath = None try: - self.ags_added[addr] = True + if selectit: + self.ags_added[addr] = 2 + else: + self.ags_added[addr] = 1 # We will use the accompanying AudioGatewayAdded # signal to construct the AudioGateway object above agpath = self.hfpd.AddDevice(addr, False) @@ -910,42 +1467,179 @@ class HfConsole: def phone_num_bs(self, but): entry = self['PhoneNumEntry'] entry.set_text(entry.get_text()[:-1]) - def command_mode(self, val): - if val == 0: - self['DigitButtonBox'].set_sensitive(False) - self['PhoneNumEntryBox'].set_sensitive(False) - self['DialCommandBox'].set_sensitive(False) - self['DialPadDial'].set_label('Dial') - elif val == 1: - self['DigitButtonBox'].set_sensitive(True) - self['PhoneNumEntryBox'].set_sensitive(True) - self['DialCommandBox'].set_sensitive(True) - self['DialPadRedial'].set_sensitive(True) - self['DialPadDial'].set_label('Dial') - elif val == 2: - self['DigitButtonBox'].set_sensitive(True) - self['PhoneNumEntryBox'].set_sensitive(False) - self['DialCommandBox'].set_sensitive(True) - self['DialPadRedial'].set_sensitive(False) - self['DialPadDial'].set_label('Hang Up') - def dial_dial_clicked(self, widget): + def ag_configure_gui(self, ag): + sel_dis = False + connect = False + connect_ip = False + digits = False + do_notebook = False + dial = False + hold = False + swap = False + hangup = False + audio = False + audio_ip = False + audio_dn = False + record = False + record_dn = False + mainstatus = False + status_page = 0 + battstatus = False + batt_page = 0 + message = False + if ag: + mainstatus = True + if not ag.is_connected(): + connect = True + connect_ip = ag.is_connecting() or self.nobt + status_page = 8 + else: + status_page = 7 + if ag.has_service(): + status_page = ag.signal_level() + if status_page < 0 or status_page > 5: + status_page = 6 + digits = ag.can_dial() or ag.can_dtmf() + dial = ag.can_dial() + hold = ag.can_hold() + do_notebook = not ag.can_dial() + hangup = not dial + if hold: + swap = ag.has_waiting_call() + hold = not swap + audio = True + if ag.has_audio(): + audio_dn = True + elif ag.audio_connecting(): + audio_ip = True + message = ag.has_message() + batt_page = ag.battery_level() + battstatus = True + if batt_page < 0 or batt_page > 5: + batt_page = 0 + battstatus = False + + # Display the "no bluetooth" icon if BT is disconnected + # and the AG is not connected + if self.nobt and (not ag or (not ag.is_connected() and + not ag.is_connecting())): + mainstatus = True + status_page = 9 + sel_dis = True + + def set_vis(widget, visible): + if visible: widget.show() + else: widget.hide() + + self['AgSelector'].set_sensitive(not sel_dis) + self['DigitButtonBox'].set_sensitive(digits) + self['PhoneNumEntryBox'].set_sensitive(dial) + set_vis(self['AgConnect'], connect) + self['AgConnect'].set_sensitive(not connect_ip) + set_vis(self['AgHangUp'], hangup) + set_vis(self['AgHoldCall'], hold) + set_vis(self['AgSwapCall'], swap) + set_vis(self['AgDial'], dial) + set_vis(self['AgRedial'], dial) + set_vis(self['AgAudioToggle'], audio) + self['AgAudioToggle'].set_active(audio_dn) + self['AgAudioToggle'].set_sensitive(not audio_ip) + set_vis(self['RecordCall'], record) + self['RecordCall'].set_active(record_dn) + set_vis(self['AgMainStatus'], mainstatus) + self['AgMainStatus'].set_current_page(status_page) + set_vis(self['AgBatteryStatus'], battstatus) + self['AgBatteryStatus'].set_current_page(batt_page) + set_vis(self['MessageIndicator'], message) + if do_notebook: + self.frontnotebook_set(0) + else: + self.frontnotebook_set(self.frontpage) + + def bar_ag_dial_clicked(self, widget): ag = self.selected_ag entry = self['PhoneNumEntry'] if not ag: return if not ag.can_dial(): - ag.hangup() return num = entry.get_text() entry.set_text('') ag.dial(num) - def dial_redial_clicked(self, widget): + + def bar_ag_scan_clicked(self, widget): + self.scan_open() + def bar_ag_connect_clicked(self, widget): + try: + if self.selected_ag: + self.selected_ag.connect() + except dbus.exceptions.DBusException, (ex): + self.error_message( + _('Could not attach Audio Gateway: %s') % + str(ex)) + + def frontnotebook_set(self, page): + dialpad_but = False + contacts_but = False + if page == 0: + #contacts_but = True + if (self.selected_ag and + self.selected_ag.is_connected() and + not self.selected_ag.can_dial()): + contacts_but = False + if page == 1: + dialpad_but = True + + def set_vis(widget, visible): + if visible: widget.show() + else: widget.hide() + + self['FrontNotebook'].set_current_page(page) + set_vis(self['BarDialPad'], dialpad_but) + set_vis(self['BarContacts'], contacts_but) + + def bar_dialpad_clicked(self, widget): + self.frontpage = 0 + self.frontnotebook_set(0) + def bar_contacts_clicked(self, widget): + self.frontpage = 1 + self.frontnotebook_set(1) + + def bar_ag_hangup_clicked(self, widget): + ag = self.selected_ag + if not ag: + return + ag.hangup() + def bar_ag_swaphold_clicked(self, widget): + ag = self.selected_ag + if not ag or not ag.can_hold(): + return + ag.swap_hold_active() + def bar_ag_redial_clicked(self, widget): ag = self.selected_ag if not ag or not ag.can_dial(): return ag.redial() - def dial_xfer_clicked(self, widget): - pass + def bar_ag_audio_toggled(self, widget): + if not self.selected_ag: + return + if not widget.get_active(): + if (self.selected_ag.has_audio() or + self.selected_ag.audio_connecting()): + self.selected_ag.close_audio() + return + if (self.selected_ag.has_audio() or + self.selected_ag.audio_connecting()): + return + try: + self.selected_ag.open_audio() + except dbus.exceptions.DBusException, (ex): + self.error_message( + _('Could not open audio connection: %s') % + str(ex)) + widget.set_active(False) + def bar_config_clicked(self, widget): + self.config_open() def hfpd_system_msg_clear(self): if hasattr(self, 'system_msg'): self['StatusBar'].remove(self.system_ctx, @@ -954,6 +1648,7 @@ class HfConsole: if hasattr(self, 'system_msg_timeout'): gobject.source_remove(self.system_msg_timeout) del self.system_msg_timeout + return False def hfpd_system_msg(self, msg, timeout): self.hfpd_system_msg_clear() self.system_msg = self['StatusBar'].push(self.system_ctx, msg) @@ -963,59 +1658,173 @@ class HfConsole: def hfpd_system_state(self, state): if not state: + self.nobt = True self.hfpd_system_msg(_('Bluetooth Unavailable'), None) else: + self.nobt = False self.hfpd_system_msg_clear() + self.ag_configure_gui(self.selected_ag) + + def topnotebook_set(self, page): + nb = self['HiddenNotebook'] + if not hasattr(self, 'notebook_stack'): + self.notebook_stack = [] + if page: + self.notebook_stack.append(nb.get_current_page()) + nb.set_current_page(nb.page_num(page)) + elif len(self.notebook_stack): + nb.set_current_page(self.notebook_stack.pop()) + else: + nb.set_current_page(0) + def topnotebook_get(self): + nb = self['HiddenNotebook'] + return nb.get_nth_page(nb.get_current_page()) + + def devices_open(self): + self.topnotebook_set(self['DevicesTab']) + def devices_close_clicked(self, widget): + self.topnotebook_set(None) + def devices_add_clicked(self, widget): + self.scan_open() + def devices_delete_clicked(self, widget): + if self.devices_ag: + self.ag_remove_from_config(self.devices_ag.addr) + self.devices_ag.do_remove() + def devices_connect_clicked(self, widget): + if self.devices_ag: + self.devices_ag.connect() + def devices_disconnect_clicked(self, widget): + if self.devices_ag: + self.devices_ag.disconnect() + def devices_autoconnect_toggled(self, widget, value): + if self.nested or not widget.get_active(): + return + if self.devices_ag: + self.devices_ag.set_autoreconnect(value) + def devices_autoconnect_never_toggled(self, widget): + self.devices_autoconnect_toggled(widget, 0) + def devices_autoconnect_disabled_toggled(self, widget): + self.devices_autoconnect_toggled(widget, 1) + def devices_autoconnect_enabled_toggled(self, widget): + self.devices_autoconnect_toggled(widget, 2) + def devices_select(self, selection): + if not selection.count_selected_rows(): + self.devices_ag = None + self['DevicesDevAddr'].set_text('') + self['DevicesConnect'].hide() + self['DevicesDisconnect'].show() + self['DevicesProperties'].set_sensitive(False) + return + (store, iter) = selection.get_selected() + disp = store.get_value(iter, 2) + self.devices_ag = disp.ag + disp.devices_state() + self['DevicesProperties'].show() + + def newdevice_open(self): + tab = self['NewDeviceTab'] + if self.topnotebook_get() == tab: + return + itx = self.ag_list_new.get_iter_root() + if itx: + self['NewDeviceList'].get_selection().select_iter(itx) + self.topnotebook_set(tab) + def newdevice_close_clicked(self, widget): + self.topnotebook_set(None) + def newdevice_add_clicked(self, widget): + ag = self.newdevice_ag + self.add_audiogateway(ag.addr, False) + ag.update_mine() + self.ag_add_to_config(ag.addr) + ag.set_autoreconnect(2) + self.ag_select_changed(ag) + def newdevice_clear_clicked(self, widget): + xiter = self.ag_list_new.get_iter_root() + while xiter: + disp = self.ag_list_new.get_value(xiter, 2) + disp.ag.do_remove() + xiter = self.ag_list_new.iter_next(xiter) + def newdevice_select(self, selection): + if not selection.count_selected_rows(): + self['NewDeviceAdd'].set_sensitive(False) + return + (store, iter) = selection.get_selected() + disp = store.get_value(iter, 2) + self.newdevice_ag = disp.ag + self['NewDeviceAdd'].set_sensitive(True) + def newdevice_row_added(self, list, path, iter): + self['NewDeviceClear'].set_sensitive(True) + def newdevice_row_removed(self, list, path): + if not list.get_iter_root(): + self['NewDeviceClear'].set_sensitive(False) + tab = self['NewDeviceTab'] + if self.topnotebook_get() == tab: + self.topnotebook_set(None) + + def inquiry_show_activity(self): + self['ScanActivityIndicator'].pulse() + return True + def inquiry_started(self): + self.inquiry = True + self['ScanRestart'].set_sensitive(False) + self['ScanActivityIndicator'].set_fraction(0) + self['ScanActivity'].show() + self.inquiry_animation_timeout = gobject.timeout_add( + 175, self.inquiry_show_activity) + + def inquiry_stopped(self): + self.inquiry = False + self['ScanActivity'].hide() + self['ScanRestart'].set_sensitive(True) + if hasattr(self, 'inquiry_animation_timeout'): + gobject.source_remove(self.inquiry_animation_timeout) + del self.inquiry_animation_timeout def scan_restart(self): self.scanresults.clear() - self['ScanOK'].set_sensitive(False) + self['ScanAdd'].set_sensitive(False) try: self.hfpd.StartInquiry() except: return False - self.inquiry = True - self['ScanRestart'].set_sensitive(False) + self.inquiry_started() return True - def scan_open(self, but): - dlg = self['ScanDialog'] + def scan_open(self): if not self.scan_restart(): - self.error_message(_('Could not start inquiry'), - self['ScanDialog']) + self.error_message(_('Could not start inquiry')) return - dlg.show() + self.topnotebook_set(self['ScanTab']) def scan_close(self): - dlg = self['ScanDialog'] - dlg.hide() + self.topnotebook_set(None) if self.inquiry: try: self.hfpd.StopInquiry() except: pass - self.inquiry = False + self.inquiry_stopped() def scan_create_session(self, store, iter): # Create a session for the selected bdaddr self.scan_close() assert store and iter addr = store.get_value(iter, 2) self.ag_add_to_config(addr) - self.add_audiogateway(addr) - def scan_ok_clicked(self, widget): + self.ag_config_set_option(addr, 'autoreconnect', 2) + self.add_audiogateway(addr, True) + def scan_add_clicked(self, widget): assert (self.scanselect.count_selected_rows() <= 1) (store, iter) = self.scanselect.get_selected() self.scan_create_session(store, iter) - def scan_cancel_clicked(self,widget): + def scan_close_clicked(self,widget): self.scan_close() def scan_history_clicked(self, widget): self.history_open() def scan_restart_clicked(self, widget): if not self.scan_restart(): - self.error_message(_('Could not start inquiry'), - self['ScanDialog']) + self.error_message(_('Could not start inquiry')) def scan_select(self, selection): if not selection.count_selected_rows(): - self['ScanOK'].set_sensitive(False) + self['ScanAdd'].set_sensitive(False) else: - self['ScanOK'].set_sensitive(True) + self['ScanAdd'].set_sensitive(True) class NameResolveReq: def __init__(self, hfc, addr, store): self.addr = addr @@ -1047,8 +1856,7 @@ class HfConsole: return if not self.inquiry: return - self.inquiry = False - self['ScanRestart'].set_sensitive(True) + self.inquiry_stopped() ix = self.scanresults.get_iter_first() while ix: addr = self.scanresults.get_value(ix, 2) @@ -1060,7 +1868,6 @@ class HfConsole: # History box def history_open(self): - dlg = self['HistoryDialog'] self.historyresults.clear() self['HistoryOK'].set_sensitive(False) @@ -1074,10 +1881,9 @@ class HfConsole: else: name = "%s (%s)" % (name, addr) self.historyresults.append(row=[name, 0, addr]) - dlg.show() + self.topnotebook_set(self['HistoryTab']) def history_close(self): - dlg = self['HistoryDialog'] - dlg.hide() + self.topnotebook_set(None) def history_ok_clicked(self, widget): self.history_close() assert self.historyselect.count_selected_rows() <= 1 @@ -1092,10 +1898,10 @@ class HfConsole: self['HistoryOK'].set_sensitive(True) # Configuration dialog related methods - def config_open(self, widget): - dlg = self['ConfigDialog'] + def config_open(self): savecfg = self.config_get_vals() savecfg['packetintervalsave'] = savecfg['packetinterval'] + savecfg['jitterwindowsave'] = savecfg['jitterwindow'] savecfg['minbufferfillsave'] = savecfg['minbufferfill'] savecfg['echocancelsave'] = savecfg['echocancel'] if savecfg['echocancelsave'] == 0: @@ -1113,8 +1919,6 @@ class HfConsole: savecfg['acceptunknown']) self['ConfigVoicePersist'].set_active( savecfg['voicepersist']) - self['ConfigAutoReconnect'].set_active( - savecfg['autoreconnect']) self['ConfigDriver'].get_model().clear() for x in savecfg['drivers']: self['ConfigDriver'].append_text(x) @@ -1122,6 +1926,7 @@ class HfConsole: self['ConfigDriverDevList'].child.set_text( savecfg['driveropts']) self.config_packet_interval(savecfg['packetinterval']) + self.config_jitter_window(savecfg['jitterwindow']) self.config_min_out_buffer(savecfg['minbufferfill']) self['ConfigDenoise'].set_active(savecfg['denoise']) self.config_echo_cancel(savecfg['echocancel']) @@ -1149,35 +1954,40 @@ class HfConsole: if cmd: self['ConfigAudioDetachCommand'].set_text(cmd) self.config_savecfg = savecfg - dlg.show() + self.topnotebook_set(self['ConfigTab']) def config_close(self): - dlg = self['ConfigDialog'] - dlg.hide() + self['ConfigFeedbackTest'].set_active(False) del self.config if hasattr(self, 'loopback_active'): del self.loopback_active if hasattr(self, 'config_savecfg'): del self.config_savecfg + self.topnotebook_set(None) def config_ok_clicked(self, widget): try: self.config_save_vals() except dbus.exceptions.DBusException, (ex): - self.error_message(ex.get_dbus_message()) + self.error_message(str(ex)) self.config_close() def config_cancel_clicked(self, widget): # Restore the save values try: self.config_restore_vals(self.config_savecfg) except dbus.exceptions.DBusException, (ex): - self.error_message(ex.get_dbus_message()) + self.error_message(str(ex)) self.config_close() + def config_init_clicked(self, widget): + self.initconf_open() + def config_devices_clicked(self, widget): + self.devices_open() def config_get_vals(self): - spr = self.soundio_props.GetAll('net.sf.nohands.hfpd.SoundIo') - hfpr = self.hfpd_props.GetAll('net.sf.nohands.hfpd.HandsFree') + spr = self.soundio_props.GetAll( + self.HFPD_SOUNDIO_INTERFACE_NAME) + hfpr = self.hfpd_props.GetAll( + self.HFPD_HANDSFREE_INTERFACE_NAME) vals = dict() vals['secmode'] = int(hfpr['SecMode']) vals['acceptunknown'] = hfpr['AcceptUnknown'] vals['voicepersist'] = hfpr['VoicePersist'] - vals['autoreconnect'] = self.autoreconnect vals['drivers'] = [] vals['driver'] = 0 index = 0 @@ -1189,6 +1999,7 @@ class HfConsole: index += 1 vals['driveropts'] = str(spr['DriverOpts']) vals['packetinterval'] = int(spr['PacketIntervalHint']) + vals['jitterwindow'] = spr['JitterWindowHint'] vals['minbufferfill'] = spr['MinBufferFillHint'] vals['denoise'] = spr['Denoise'] vals['echocancel'] = int(spr['EchoCancelTail']) @@ -1214,7 +2025,6 @@ class HfConsole: self['ConfigDriverDevList'].child. get_text()) self.hfpd.SaveSettings() - self.autoreconnect = self['ConfigAutoReconnect'].get_active() cmd = self['ConfigAudioAttachCommand'].get_text() self.command_audio_attach_acmd = cmd self.configfile.set('options', 'attach_command', cmd) @@ -1229,6 +2039,8 @@ class HfConsole: self.config['driveropts']) self.setprop_soundio('PacketIntervalHint', dbus.UInt32(vals['packetinterval'])) + self.setprop_soundio('JitterWindowHint', + dbus.UInt32(vals['jitterwindow'])) self.setprop_soundio('MinBufferFillHint', dbus.UInt32(vals['minbufferfill'])) self.setprop_soundio('Denoise', dbus.Boolean(vals['denoise'])) @@ -1304,6 +2116,41 @@ class HfConsole: value = self.value_transform(widget.get_value(), 3, 5, 1000) if not self.nested: self.config_packet_interval(value) + def config_jitter_window(self, value): + self.nested = True + if value != 0: + value = self.constrain(value, 5, 1000) + self['ConfigJitterWindowHint'].set_active(True) + self['ConfigJitterWindowLabel'].set_text( + self.format_ms(value)) + self['ConfigJitterWindow'].set_sensitive(True) + self['ConfigJitterWindow'].set_value( + self.value_untransform(value, 3, 5, 1000)) + else: + value = 0 + self['ConfigJitterWindowHint'].set_active(False) + self['ConfigJitterWindowLabel'].set_text('') + self['ConfigJitterWindow'].set_sensitive(False) + self['ConfigJitterWindow'].set_value(0) + if self.config['jitterwindow'] != value: + self.config['jitterwindow'] = value + self.setprop_soundio('JitterWindowHint', + dbus.UInt32(value)) + self.nested = False + def config_jitter_window_toggled(self, widget): + if widget.get_active(): + value = self.config['jitterwindowsave'] + value = self.constrain(value, 5, 1000) + else: + self.config['jitterwindowsave'] = ( + self.config['jitterwindow']) + value = 0 + if not self.nested: + self.config_jitter_window(value) + def config_jitter_window_changed(self, widget): + value = self.value_transform(widget.get_value(), 3, 5, 1000) + if not self.nested: + self.config_jitter_window(value) def config_min_out_buffer(self, value): self.nested = True if value != 0: @@ -1353,8 +2200,7 @@ class HfConsole: except: widget.set_active(False) self.error_message(_('Cannot Apply ' - 'Sound Driver Settings'), - self['ConfigDialog']) + 'Sound Driver Settings')) return try: @@ -1366,8 +2212,7 @@ class HfConsole: widget.set_active(False) self.error_message(_('Could not open ' 'Audio Device:\n' - '%s') % str(ex), - self['ConfigDialog']) + '%s') % str(ex)) return self.loopback_active = True @@ -1391,6 +2236,7 @@ class HfConsole: if hasattr(self, 'config_skew_timeout'): gobject.source_remove(self.config_skew_timeout) del self.config_skew_timeout + return False def config_skew_notify(self, skewtype, count): timeout = 1500 if skewtype == 0: @@ -1505,7 +2351,7 @@ class HfConsole: def config_dsptest_pageid(self, widget): - return int(widget.get_name()[11:]) + return widget.get_current_page() def config_dsptest_open(self, widget): self['ConfigFeedbackTest'].set_active(False) try: @@ -1515,12 +2361,12 @@ class HfConsole: get_text()) except: self.error_message(_('Cannot Apply Sound Driver ' - 'Settings'), - self['ConfigDialog']) + 'Settings')) return - assist = self['DspTestAssistant'] - assist.set_current_page(0) - assist.show() + self['DspTestNotebook'].set_current_page(1) + self['DspTestNotebook'].set_current_page(0) + self.topnotebook_set(self['DspTestTab']) + self['DspTestForward'].grab_focus() def connect_soundmonitor(self, to): if self.soundmonitor: self.soundmonitor.remove() @@ -1540,47 +2386,52 @@ class HfConsole: pow(float(amp) / 65535, 0.33)) def config_dsptest_mon3(self, pos, amp): self['DspTestPlayPosition'].set_fraction(float(pos)/80000) - def config_dsptest_prepare(self, widget, page): - assist = self['DspTestAssistant'] - pageid = self.config_dsptest_pageid(page) + def config_dsptest_set_buttons(self, back, fwd): + self['DspTestBack'].set_sensitive(back) + self['DspTestForward'].set_sensitive(fwd) + def config_dsptest_back(self, widget): + self['DspTestNotebook'].prev_page() + def config_dsptest_forward(self, widget): + self['DspTestNotebook'].next_page() + def config_dsptest_setup(self, pageid): if not hasattr(self, 'membuf_active'): self.membuf_active = False if self.membuf_active: self.soundio.Stop() if pageid == 0: self.maxvol = 0 - assist.set_page_complete(page, True) + self.config_dsptest_set_buttons(False, True) elif pageid == 1: - assist.set_page_complete(page, False) + self.config_dsptest_set_buttons(True, False) self['DspTestRecPosition1'].set_fraction(0.0) self.connect_soundmonitor(self.config_dsptest_mon1) self['DspTestRecStart1'].set_active(True) elif pageid == 2: + self.config_dsptest_set_buttons(True, True) self['DspTestRecPosition2'].set_fraction(0.0) - assist.set_page_complete(page, True) self.connect_soundmonitor(self.config_dsptest_mon2) elif pageid == 3: + self.config_dsptest_set_buttons(True, True) self['DspTestPlayPosition'].set_fraction(0.0) - assist.set_page_complete(page, True) self.connect_soundmonitor(self.config_dsptest_mon3) self['DspTestPlayStart'].set_active(True) - def config_dsptest_cancel(self, widget): - assist = self['DspTestAssistant'] - assist.hide() - if self.membuf_active: - self.soundio.Stop() - self.connect_soundmonitor(None) - if hasattr(self, 'maxvol'): - del self.maxvol + else: + self.config_dsptest_set_buttons(True, False) + def config_dsptest_close(self, widget): + self['DspTestRecStart1'].set_active(False) + self['DspTestRecStart2'].set_active(False) + self['DspTestPlayStart'].set_active(False) + self.topnotebook_set(None) if hasattr(self, 'membuf_active'): + if self.membuf_active: + self.soundio.Stop() del self.membuf_active - def config_dsptest_close(self, widget): - assist = self['DspTestAssistant'] - assist.hide() self.connect_soundmonitor(None) - print "DSP close" + if hasattr(self, 'maxvol'): + del self.maxvol + def config_dsptest_switch_page(self, widget, page, page_num): + self.config_dsptest_setup(page_num) def config_dsptest_xxx_toggled(self, widget, page, doin, doout): - assist = self['DspTestAssistant'] if widget.get_active(): if doin and not doout: self.soundio.MembufClear() @@ -1593,12 +2444,11 @@ class HfConsole: except: widget.set_active(False) self.error_message(_('Could not open ' - 'Audio Device'), - self['DspTestAssistant']) + 'Audio Device')) return self.membuf_active = True - assist.set_page_complete(page, True) + self.config_dsptest_set_buttons(True, True) return if self.membuf_active: try: @@ -1642,7 +2492,7 @@ class HfConsole: if agpath: ag = self.ags[agpath] if ag: - self.ag_select(ag, True) + ag.soundio_state_changed() def soundio_stream_aborted(self, excode, descr): if (excode == 'net.sf.nohands.hfpd.Error.SoundIoSoundCardFailed'): @@ -1667,6 +2517,7 @@ class HfConsole: del self.soundio_status_timeout if hasattr(self, 'soundio_skew_type'): del self.soundio_skew_type + return False def soundio_status_msg(self, msg, timeout): self.soundio_status_msg_clear() self.soundio_status_msgid = self['StatusBar'].push( @@ -1695,8 +2546,29 @@ class HfConsole: if self.soundio_skew_monitor: self.soundio_skew_monitor(skewtype, count) + def initconf_open(self): + self['InitConfNotebook'].set_current_page(1) + self['InitConfNotebook'].set_current_page(0) + self.topnotebook_set(self['InitConfTab']) + self['InitConfForward'].grab_focus() + def initconf_close(self): + self.topnotebook_set(None) + + def initconf_set_buttons(self, back, fwd): + self['InitConfBack'].set_sensitive(back) + self['InitConfForward'].set_sensitive(fwd) + def initconf_done_clicked(self, widget): + self.initconf_close() + def initconf_back_clicked(self, widget): + self['InitConfNotebook'].prev_page() + def initconf_forward_clicked(self, widget): + self['InitConfNotebook'].next_page() + def initconf_switch_page(self, widget, page, page_num): + if page_num == 0: + self.initconf_set_buttons(False, True) + elif page_num == 1: + self.initconf_set_buttons(True, False) if __name__ == "__main__": hwg = HfConsole() - hwg.Start() gtk.main() diff --git a/data/holdcall.png b/data/holdcall.png Binary files differnew file mode 100644 index 0000000..13ea402 --- /dev/null +++ b/data/holdcall.png diff --git a/data/icon.png b/data/icon.png Binary files differnew file mode 100644 index 0000000..91a8690 --- /dev/null +++ b/data/icon.png diff --git a/data/iconsrc/agconnect.svg b/data/iconsrc/agconnect.svg new file mode 100644 index 0000000..26c218d --- /dev/null +++ b/data/iconsrc/agconnect.svg @@ -0,0 +1,216 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="48px" + height="48px" + id="svg3039" + sodipodi:version="0.32" + inkscape:version="0.46" + inkscape:export-filename="/vhome/samr7/sf/nohands/trunk/data/agconnect.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" + sodipodi:docname="agconnect.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape"> + <defs + id="defs3041"> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 24 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="48 : 24 : 1" + inkscape:persp3d-origin="24 : 16 : 1" + id="perspective3047" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="7" + inkscape:cx="24" + inkscape:cy="24" + inkscape:current-layer="layer1" + showgrid="true" + inkscape:grid-bbox="true" + inkscape:document-units="px" + inkscape:window-width="640" + inkscape:window-height="681" + inkscape:window-x="0" + inkscape:window-y="6" /> + <metadata + id="metadata3044"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + id="layer1" + inkscape:label="Layer 1" + inkscape:groupmode="layer"> + <g + id="g6777" + transform="matrix(2.5083118,0,0,2.5083118,-27.59323,-5.9722859)"> + <path + id="path6721" + d="M 13.18249,7.3017703 C 12.710607,7.5872624 12.24915,7.8631391 12.020815,8.5139533 C 11.96684,8.8439865 11.823317,9.2187941 12.020815,9.4230906 C 12.059533,11.064068 18.384776,16.090098 21.566757,19.423601 L 22.475894,19.625631 L 23.536554,19.171063 L 26.61752,17.150758 L 26.769042,15.989082 L 26.415489,15.029437 C 24.44366,11.291672 19.316925,5.6301037 17.273609,5.3319728 C 15.873206,5.402986 14.495689,6.5778276 13.18249,7.3017703 z" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + id="path6719" + d="M 13.232999,7.3017702 C 15.660926,10.07189 18.528893,13.229592 22.425387,17.201265 C 22.807587,17.558874 23.025795,18.019099 24.597214,16.948727 C 26.126241,16.057186 25.361346,15.840139 25.354829,15.332483 C 23.787955,12.950557 23.108724,11.137632 16.515994,5.5340033" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + id="path6695" + d="M 12.576399,7.6553237 C 15.330014,10.307924 22.467902,17.878424 22.576909,18.413448 C 22.685916,18.948472 22.526402,19.575124 22.526402,19.575124" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + sodipodi:nodetypes="cc" + id="path6703" + d="M 18.046017,12.617327 C 19.526312,12.225298 20.856897,11.633654 21.768787,10.483751" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + sodipodi:nodetypes="cc" + id="path6705" + d="M 18.602901,13.281073 C 20.083196,12.889044 21.413781,12.2974 22.325671,11.147497" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + sodipodi:nodetypes="cc" + id="path6707" + d="M 19.245758,13.888217 C 20.726053,13.496188 22.056638,12.904544 22.968528,11.754641" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + sodipodi:nodetypes="cc" + id="path6709" + d="M 19.817187,14.49536 C 21.297482,14.103331 22.520924,13.547401 23.432814,12.397498" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + sodipodi:nodetypes="cc" + id="path6711" + d="M 20.406472,15.084645 C 21.886767,14.692616 22.931638,14.208115 23.843528,13.058212" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + sodipodi:nodetypes="cc" + id="path6713" + d="M 21.29933,16.013217 C 22.779625,15.621188 23.681638,15.243829 24.593528,14.093926" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + sodipodi:nodetypes="cc" + id="path6715" + d="M 22.1029,16.816789 C 23.583195,16.42476 24.306637,16.190258 25.218527,15.040355" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.02;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + sodipodi:nodetypes="cczzc" + id="path6723" + d="M 23.464286,18.785714 L 25.964286,17.178571 C 25.979933,17.115389 26.116736,16.88849 25.756128,16.861475 C 25.420628,16.836341 23.835673,17.681082 23.55484,18.174239 C 23.280401,18.656167 23.366429,18.62457 23.464286,18.785714 z" + style="fill:#808080;fill-rule:evenodd;stroke:#000000;stroke-width:0.09999997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + sodipodi:nodetypes="cccccc" + id="path6725" + d="M 17.399878,11.847457 C 18.128534,11.730919 18.727619,11.601424 18.788837,11.418142 L 19.066629,11.569665 C 19.397026,11.129807 19.840557,11.029349 20.304066,10.988827 L 20.228305,10.685781 C 20.607135,10.438863 20.981485,10.190451 21.162696,9.8776592" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + transform="translate(0.2272843,-0.2525381)" + d="M 16.036172,7.2765164 A 0.65659916,0.45456865 0 1 1 14.722974,7.2765164 A 0.65659916,0.45456865 0 1 1 16.036172,7.2765164 z" + sodipodi:ry="0.45456865" + sodipodi:rx="0.65659916" + sodipodi:cy="7.2765164" + sodipodi:cx="15.379573" + id="path6727" + style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-width:0.05;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + sodipodi:type="arc" /> + <path + id="path6729" + d="M 16.312034,10.646572 C 15.29154,9.5267798 13.32449,7.323327 13.32449,7.2999806 C 13.32449,7.2936201 13.389834,7.2516246 13.4697,7.2066566 C 13.549565,7.1616887 13.899014,6.94658 14.246254,6.728638 C 15.272509,6.0845186 15.671039,5.8631767 16.155419,5.6682978 C 16.327663,5.5989996 16.47223,5.5529483 16.47668,5.5659618 C 16.481129,5.5789756 16.719628,5.7917804 17.006676,6.0388617 C 17.68735,6.6247618 18.543013,7.3848831 19.158121,7.9500784 C 19.872309,8.6063139 21.102665,9.807559 21.102665,9.8486131 C 21.102665,9.9211161 20.761264,10.242032 20.468152,10.445053 C 20.138386,10.673462 20.161047,10.637022 20.208048,10.863323 C 20.223125,10.935917 20.218772,10.945398 20.170366,10.945398 C 20.140265,10.945398 20.028043,10.962809 19.920984,10.984089 C 19.659332,11.036098 19.354166,11.188062 19.18428,11.350947 L 19.047881,11.481726 L 18.910247,11.414225 L 18.772615,11.346723 L 18.697421,11.423632 C 18.602698,11.520518 18.345848,11.603897 17.832933,11.704263 C 17.624239,11.7451 17.433137,11.783311 17.408262,11.789176 C 17.374863,11.797051 17.088189,11.498249 16.312034,10.646572 L 16.312034,10.646572 z M 15.969616,7.4361256 C 16.43466,7.2339312 16.387926,6.742493 15.887752,6.5752716 C 15.7471,6.528248 15.45873,6.5327765 15.306114,6.5844057 C 15.236226,6.6080486 15.135377,6.6633875 15.082006,6.7073806 C 14.768429,6.9658577 14.923505,7.3689149 15.382676,7.488846 C 15.522124,7.5252691 15.827722,7.4978192 15.969616,7.4361256 z" + style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.00126269;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + id="path6735" + d="M 18.406635,12.920568 L 18.151383,12.646077 L 18.282259,12.612979 C 18.739882,12.49725 19.510698,12.209537 19.937779,11.995044 C 20.632593,11.646088 21.234785,11.2015 21.61034,10.760222 C 21.699193,10.65582 21.778955,10.569543 21.78759,10.568495 C 21.811962,10.565539 22.250707,11.06755 22.259653,11.108629 C 22.2718,11.164404 21.650946,11.774589 21.380457,11.972716 C 20.771878,12.418488 20.094608,12.749919 19.208629,13.03553 C 18.613644,13.227334 18.703937,13.240276 18.406636,12.920568 L 18.406635,12.920568 z" + style="fill:#808080;fill-opacity:1;stroke:#000000;stroke-width:0.00126269;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + id="path6737" + d="M 19.018414,13.568396 C 18.883889,13.42976 18.779259,13.310893 18.785905,13.304247 C 18.792552,13.297601 18.950045,13.246369 19.135891,13.190397 C 19.769571,12.999552 20.458668,12.703586 20.93787,12.416451 C 21.378271,12.152565 21.670641,11.923752 22.031391,11.560644 C 22.215786,11.375044 22.370967,11.22319 22.376239,11.22319 C 22.390283,11.22319 22.831051,11.750994 22.840973,11.779693 C 22.852798,11.813896 22.602196,12.08722 22.370767,12.292528 C 21.62871,12.950835 20.72128,13.405212 19.393655,13.783259 L 19.263008,13.820461 L 19.018414,13.568396 z" + style="fill:#808080;fill-opacity:1;stroke:#000000;stroke-width:0.00126269;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + id="path6739" + d="M 19.591994,14.177928 L 19.35664,13.925433 L 19.423173,13.900138 C 19.459768,13.886224 19.499554,13.874841 19.511587,13.874841 C 19.563985,13.874841 20.357225,13.606006 20.610215,13.502507 C 21.488712,13.143113 22.131757,12.726174 22.700021,12.147513 C 22.835473,12.009583 22.950153,11.901442 22.954865,11.9072 C 23.201249,12.208308 23.326376,12.391255 23.313559,12.431639 C 23.290728,12.503572 22.797525,12.991542 22.561798,13.175422 C 21.931689,13.666945 21.112991,14.058153 20.117766,14.343284 C 19.985815,14.381087 19.866491,14.416159 19.852601,14.42122 C 19.838711,14.426282 19.721438,14.316799 19.591993,14.177928 L 19.591994,14.177928 z" + style="fill:#808080;fill-opacity:1;stroke:#000000;stroke-width:0.00126269;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + id="path6741" + d="M 20.160109,14.770901 L 19.937285,14.531599 L 20.003916,14.506265 C 20.040563,14.492332 20.080084,14.480932 20.091742,14.480932 C 20.1034,14.480932 20.275964,14.42862 20.475219,14.364682 C 21.709279,13.968692 22.648606,13.39772 23.3045,12.644896 L 23.418985,12.513491 L 23.601695,12.765594 C 23.81751,13.063373 23.832834,13.001237 23.442598,13.410693 C 23.064451,13.807463 22.559696,14.178976 22.045786,14.438783 C 21.690656,14.618319 20.556375,15.014089 20.406574,15.010733 C 20.39357,15.010442 20.282661,14.902517 20.160108,14.7709 L 20.160109,14.770901 z" + style="fill:#808080;fill-opacity:1;stroke:#000000;stroke-width:0.00126269;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + sodipodi:nodetypes="cc" + id="path6743" + d="M 19.041375,11.54441 L 21.869803,14.625376" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + id="path6745" + d="M 20.304066,10.988827 L 22.98097,13.867762" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + d="M 24.496199,16.330009 A 0.65659916,0.49244937 0 1 1 23.183,16.330009 A 0.65659916,0.49244937 0 1 1 24.496199,16.330009 z" + sodipodi:ry="0.49244937" + sodipodi:rx="0.65659916" + sodipodi:cy="16.330009" + sodipodi:cx="23.8396" + id="path6751" + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + sodipodi:type="arc" /> + <path + d="M 24.092138,16.330009 A 0.18940361,0.16414979 0 1 1 23.713331,16.330009 A 0.18940361,0.16414979 0 1 1 24.092138,16.330009 z" + sodipodi:ry="0.16414979" + sodipodi:rx="0.18940361" + sodipodi:cy="16.330009" + sodipodi:cx="23.902735" + id="path6753" + style="fill:#cccccc;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + sodipodi:type="arc" /> + <path + id="path6757" + d="M 20.893118,15.535279 C 20.54563,15.171526 20.507291,15.123051 20.555654,15.108594 C 21.256845,14.898976 21.80128,14.700461 22.143063,14.529783 C 22.641485,14.280883 23.14848,13.900641 23.562929,13.464895 L 23.872982,13.138907 L 24.100607,13.487934 C 24.225802,13.679898 24.365024,13.896894 24.409992,13.970146 L 24.49175,14.103332 L 24.429599,14.184803 C 24.040356,14.695037 23.358514,15.207216 22.696045,15.486997 C 22.343346,15.635951 21.402255,15.945653 21.302324,15.945653 C 21.292874,15.945653 21.108732,15.760985 20.893118,15.535279 L 20.893118,15.535279 z" + style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.00252538;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + id="path6759" + d="M 21.897451,16.570685 C 21.786558,16.456096 21.629241,16.292502 21.547857,16.207144 L 21.399887,16.051946 L 21.548008,16.011311 C 21.887481,15.918183 22.54822,15.690215 22.805366,15.577498 C 23.444042,15.297543 24.0068,14.875665 24.482194,14.320444 C 24.528041,14.266899 24.569236,14.227125 24.573741,14.232056 C 24.578245,14.236986 24.706613,14.434983 24.859002,14.672048 L 25.136072,15.103076 L 25.061533,15.189752 C 24.912744,15.362765 24.497018,15.771881 24.40489,15.835953 L 24.310477,15.901615 L 24.177606,15.844254 C 24.075318,15.800096 23.996904,15.786854 23.836937,15.786724 C 23.650805,15.786572 23.61131,15.795507 23.45813,15.872417 C 23.221539,15.991208 23.135597,16.11526 23.135597,16.337969 C 23.135597,16.459057 23.126263,16.501366 23.097716,16.509678 C 23.076882,16.515745 22.860217,16.57883 22.61624,16.649869 C 22.372263,16.720907 22.156091,16.779029 22.13586,16.779029 C 22.115629,16.779029 22.008344,16.685275 21.897451,16.570685 L 21.897451,16.570685 z" + style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.00252538;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + id="path6761" + d="M 23.03306,17.534423 C 22.962776,17.525431 22.860498,17.489212 22.805776,17.453937 C 22.650958,17.354135 22.146647,16.834095 22.190066,16.819022 C 22.210082,16.812072 22.368512,16.766443 22.542132,16.717623 C 22.715752,16.668803 22.926794,16.607485 23.011115,16.581361 L 23.164425,16.533862 L 23.246574,16.63171 C 23.291754,16.685525 23.387546,16.760156 23.459443,16.797555 C 23.573993,16.857141 23.619846,16.865669 23.830077,16.866486 C 24.043058,16.867314 24.08623,16.859442 24.214682,16.796365 C 24.557674,16.627935 24.658134,16.268507 24.431555,16.020434 L 24.354351,15.935906 L 24.45208,15.858885 C 24.615585,15.730027 24.813266,15.538919 24.99149,15.337411 L 25.160911,15.145855 L 25.225197,15.249022 C 25.260554,15.305764 25.297613,15.391964 25.307551,15.440577 C 25.317489,15.489191 25.356623,15.602833 25.394516,15.693115 C 25.490169,15.921013 25.502186,15.983494 25.471954,16.095769 C 25.417439,16.298221 25.160852,16.521655 24.499303,16.942745 C 23.740555,17.425704 23.365683,17.576978 23.03306,17.534423 L 23.03306,17.534423 z" + style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.00252538;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + id="path6763" + d="M 20.543483,11.153648 C 20.392072,10.995169 20.351185,10.93502 20.329017,10.838147 L 20.301628,10.718457 L 20.58219,10.519993 C 20.7365,10.410838 20.940702,10.23877 21.035973,10.137619 L 21.209192,9.9537091 L 21.450914,10.195431 C 21.657204,10.401721 21.68919,10.444567 21.669128,10.487737 C 21.599836,10.636849 20.847547,11.348825 20.758775,11.349306 C 20.743256,11.349391 20.646375,11.261345 20.543483,11.153649 L 20.543483,11.153648 z" + style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.00252538;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + id="path6765" + d="M 19.36497,11.804742 C 19.163798,11.586603 19.157434,11.576016 19.193961,11.520268 C 19.298465,11.360775 19.643714,11.169248 19.9327,11.110452 C 20.276962,11.040409 20.259411,11.035739 20.467142,11.252658 L 20.652367,11.446076 L 20.372915,11.611957 C 20.143742,11.747991 19.608808,12.031312 19.581136,12.031312 C 19.577167,12.031312 19.479892,11.929355 19.36497,11.804741 L 19.36497,11.804742 z" + style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.00252538;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + id="path6773" + d="M 22.643337,19.292186 C 22.657138,19.181731 22.667746,18.947681 22.666912,18.772074 C 22.664779,18.323127 22.649044,18.295518 21.878375,17.388434 C 20.368228,15.610978 16.476224,11.463173 13.742227,8.7175369 C 13.187316,8.1602634 12.733298,7.6981251 12.733298,7.6905616 C 12.733298,7.6682244 13.155113,7.3884341 13.188789,7.3884341 C 13.205751,7.3884341 13.628507,7.8504173 14.128249,8.4150634 C 15.185541,9.6096723 16.998696,11.605854 17.818408,12.47772 C 18.132361,12.811648 18.61497,13.325934 18.890873,13.620577 C 19.166774,13.91522 19.570836,14.341113 19.788787,14.567006 C 22.67958,17.563146 22.695646,17.578957 22.910077,17.638526 C 23.171147,17.711053 23.513304,17.643974 23.91147,17.442208 C 24.280116,17.2554 25.185169,16.652941 25.364184,16.47519 C 25.669006,16.172519 25.677263,16.083604 25.456816,15.47772 C 25.28495,15.005355 23.85956,12.8354 23.083821,11.865168 C 21.763342,10.213617 19.649281,8.1221587 17.132748,5.9777198 C 16.856134,5.7420055 16.62899,5.5382341 16.627984,5.5248948 C 16.625249,5.4886223 16.994974,5.4190123 17.207657,5.4157566 C 17.86219,5.4057376 19.185784,6.3230101 20.797224,7.9033851 C 22.334816,9.4113359 23.708719,11.034441 24.956436,12.817006 C 25.789275,14.00685 26.294538,14.880689 26.534701,15.546572 L 26.701224,16.008281 L 26.627882,16.561545 C 26.587545,16.865841 26.550565,17.117387 26.545705,17.120537 C 26.540847,17.123687 25.85585,17.572242 25.023492,18.117326 C 23.756053,18.947329 23.437645,19.139641 23.06418,19.300701 L 22.618245,19.493013 L 22.643337,19.292186 z M 24.744365,18.044891 C 25.4356,17.600586 26.012963,17.21889 26.027394,17.196677 C 26.078294,17.118334 26.054964,16.935434 25.986126,16.873136 C 25.892346,16.788265 25.640529,16.793133 25.396224,16.884539 C 24.897802,17.071024 24.119583,17.530548 23.759943,17.850736 C 23.578736,18.012067 23.363629,18.344414 23.324185,18.524001 C 23.298914,18.639064 23.381104,18.85272 23.45064,18.85272 C 23.470955,18.85272 24.053131,18.489197 24.744366,18.044892 L 24.744365,18.044891 z" + style="fill:#cccccc;fill-opacity:1;stroke:#000000;stroke-width:0.00357143;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + id="path6775" + d="M 21.956508,19.44645 L 21.626147,19.369825 L 20.992223,18.742196 C 20.283972,18.040978 19.491605,17.291321 18.090104,15.996504 C 16.091873,14.150381 15.503282,13.591392 14.481321,12.56921 C 12.908053,10.995604 12.285319,10.204891 12.110342,9.5586769 C 12.082329,9.4552226 12.038997,9.3189684 12.014048,9.2558912 C 11.976273,9.1603884 11.978583,9.0898612 12.027859,8.8342512 C 12.103893,8.4398505 12.221693,8.1859623 12.433942,7.9590512 L 12.603867,7.7773873 L 13.49343,8.6632676 C 16.632223,11.789061 21.751453,17.298446 22.38248,18.229784 C 22.544674,18.469169 22.575162,18.669376 22.521991,19.145955 C 22.500711,19.336699 22.483298,19.501431 22.483298,19.512027 C 22.483298,19.547736 22.288805,19.523524 21.956508,19.44645 z" + style="fill:#cccccc;fill-opacity:1;stroke:#000000;stroke-width:0.00357143;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + </g> + <path + id="path6482" + style="fill:#00b000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.5480032;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 21.528431,11.242009 L 21.528431,7.3193087 L 13.545431,13.857142 L 21.528431,20.394976 L 21.528431,16.472276 L 36.571554,16.472276 L 36.571554,19.799459 L 45.597427,13.976886 L 36.571554,8.1543137 L 36.571554,11.481498 L 21.528431,11.242009 z" + sodipodi:nodetypes="ccccccccccc" /> + </g> +</svg> diff --git a/data/iconsrc/audioconnect.svg b/data/iconsrc/audioconnect.svg new file mode 100644 index 0000000..46ca7e6 --- /dev/null +++ b/data/iconsrc/audioconnect.svg @@ -0,0 +1,117 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="48px" + height="48px" + id="svg5945" + sodipodi:version="0.32" + inkscape:version="0.46" + sodipodi:docname="audioconnect.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + inkscape:export-filename="/vhome/samr7/sf/nohands/trunk/data/audioconnect.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"> + <defs + id="defs5947"> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 24 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="48 : 24 : 1" + inkscape:persp3d-origin="24 : 16 : 1" + id="perspective5953" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="4" + inkscape:cx="20.050649" + inkscape:cy="31.149092" + inkscape:current-layer="layer1" + showgrid="true" + inkscape:grid-bbox="true" + inkscape:document-units="px" + objecttolerance="11" + gridtolerance="11" + guidetolerance="11" + inkscape:window-width="1069" + inkscape:window-height="681" + inkscape:window-x="5" + inkscape:window-y="31"> + <inkscape:grid + type="xygrid" + id="grid5957" + visible="true" + enabled="true" /> + </sodipodi:namedview> + <metadata + id="metadata5950"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + id="layer1" + inkscape:label="Layer 1" + inkscape:groupmode="layer"> + <path + sodipodi:type="arc" + style="fill:#919191;fill-opacity:1;stroke:#000000;stroke-width:0.50000000000000000;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="path5955" + sodipodi:cx="31.714285" + sodipodi:cy="23.285715" + sodipodi:rx="7.2857141" + sodipodi:ry="13" + d="M 38.999999,23.285715 A 7.2857141,13 0 1 1 24.428571,23.285715 A 7.2857141,13 0 1 1 38.999999,23.285715 z" + transform="matrix(1.6242948,0.8274672,0,1.5315401,-18.129867,-37.015729)" /> + <path + sodipodi:type="arc" + style="fill:#cccccc;fill-opacity:1;stroke:#000000;stroke-width:0.96901637;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="path6468" + sodipodi:cx="31.714285" + sodipodi:cy="23.285715" + sodipodi:rx="7.2857141" + sodipodi:ry="13" + d="M 38.999999,23.285715 A 7.2857141,13 0 1 1 24.428571,23.285715 A 7.2857141,13 0 1 1 38.999999,23.285715 z" + transform="matrix(0.5028692,0.2561775,0,0.474153,15.302229,7.61865)" /> + <path + sodipodi:type="arc" + style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.96901637;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="path6472" + sodipodi:cx="31.714285" + sodipodi:cy="23.285715" + sodipodi:rx="7.2857141" + sodipodi:ry="13" + d="M 28.071428,12.027385 A 7.2857141,13 0 0 1 37.295466,14.929476" + transform="matrix(0.4436841,0.3724649,0,0.6893868,17.551571,3.2722363)" + sodipodi:start="4.1887902" + sodipodi:end="5.5850536" + sodipodi:open="true" /> + <path + style="fill:#333333;fill-rule:evenodd;stroke:#000000;stroke-width:0.78861785;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 21.495104,18.610008 L 19.228913,22.275651 L 18.223933,23.504631 L 16.470198,24.837042 C 17.035003,29.65608 18.252202,34.500001 20.346553,37.155738 L 25,38 L 27.524989,39.050922 L 27.668559,39.186292 C 23.034964,32.529922 21.549672,25.626174 21.495104,18.610008 z" + id="path6474" + sodipodi:nodetypes="ccccccccc" /> + <path + id="path6482" + style="fill:#00b000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.5480032;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 12.983,10.384866 L 12.983,6.4621653 L 5,13 L 12.983,19.537834 L 12.983,15.615134 L 28.026123,15.615134 L 28.026123,18.942317 L 37.051996,13.119744 L 28.026123,7.297171 L 28.026123,10.624356 L 12.983,10.384866 z" + sodipodi:nodetypes="ccccccccccc" /> + </g> +</svg> diff --git a/data/iconsrc/battery-0.svg b/data/iconsrc/battery-0.svg new file mode 100644 index 0000000..f5c26cf --- /dev/null +++ b/data/iconsrc/battery-0.svg @@ -0,0 +1,125 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="32" + height="32" + id="svg2383" + sodipodi:version="0.32" + inkscape:version="0.46" + version="1.0" + sodipodi:docname="battery-0.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + inkscape:export-filename="/vhome/samr7/sf/nohands/trunk/data/battery-0.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"> + <defs + id="defs2385"> + <linearGradient + id="linearGradient3165"> + <stop + style="stop-color:#8a8a8a;stop-opacity:1;" + offset="0" + id="stop3167" /> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="1" + id="stop3169" /> + </linearGradient> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 24 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="48 : 24 : 1" + inkscape:persp3d-origin="24 : 16 : 1" + id="perspective2391" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="9.8994949" + inkscape:cx="4.3830811" + inkscape:cy="14.197799" + inkscape:current-layer="layer1" + showgrid="true" + inkscape:grid-bbox="true" + inkscape:document-units="px" + objecttolerance="11" + gridtolerance="11" + guidetolerance="11" + inkscape:window-width="1077" + inkscape:window-height="700" + inkscape:window-x="152" + inkscape:window-y="281"> + <inkscape:grid + type="xygrid" + id="grid3207" + visible="true" + enabled="true" /> + </sodipodi:namedview> + <metadata + id="metadata2388"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + id="layer1" + inkscape:label="Layer 1" + inkscape:groupmode="layer"> + <path + style="fill:none;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 6,14 L 6,34 L 41,34 L 41,14 L 6,14 z" + id="path3209" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 28,11 L 23,11 L 20,23 L 28,23 C 28,21 28,19 30,19 C 30,19 30,15 30,15 C 28,15 28,13 28,11 z" + id="path3240" + sodipodi:nodetypes="ccccccc" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 21,23 L 24,11 L 18,11 L 15,23 L 21,23 z" + id="path3242" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 16,23 L 19,11 L 13,11 L 10,23 L 16,23 z" + id="path3238" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 11,23 L 14,11 L 8,11 L 5,23 L 11,23 z" + id="path3236" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 6,23 L 9,11 L 2,11 C 2,11 2,23 2,23 L 6,23 z" + id="path3212" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 2,11 L 28,11 L 28,14 L 30,14 C 30,16 30,18 30,20 L 28,20 L 28,23 L 2,23 C 2,23 2,11 2,11 z" + id="rect3204" + sodipodi:nodetypes="ccccccccc" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.39999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 20,7 L 14,25" + id="path5268" + sodipodi:nodetypes="cc" /> + </g> +</svg> diff --git a/data/iconsrc/battery-1.svg b/data/iconsrc/battery-1.svg new file mode 100644 index 0000000..48d5f27 --- /dev/null +++ b/data/iconsrc/battery-1.svg @@ -0,0 +1,125 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="32" + height="32" + id="svg2383" + sodipodi:version="0.32" + inkscape:version="0.46" + version="1.0" + sodipodi:docname="battery-1.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + inkscape:export-filename="/vhome/samr7/sf/nohands/trunk/data/battery-1.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"> + <defs + id="defs2385"> + <linearGradient + id="linearGradient3165"> + <stop + style="stop-color:#8a8a8a;stop-opacity:1;" + offset="0" + id="stop3167" /> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="1" + id="stop3169" /> + </linearGradient> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 24 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="48 : 24 : 1" + inkscape:persp3d-origin="24 : 16 : 1" + id="perspective2391" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="9.8994949" + inkscape:cx="21.126365" + inkscape:cy="14.197799" + inkscape:current-layer="layer1" + showgrid="true" + inkscape:grid-bbox="true" + inkscape:document-units="px" + objecttolerance="11" + gridtolerance="11" + guidetolerance="11" + inkscape:window-width="1077" + inkscape:window-height="700" + inkscape:window-x="142" + inkscape:window-y="231"> + <inkscape:grid + type="xygrid" + id="grid3207" + visible="true" + enabled="true" /> + </sodipodi:namedview> + <metadata + id="metadata2388"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + id="layer1" + inkscape:label="Layer 1" + inkscape:groupmode="layer"> + <path + style="fill:none;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 6,14 L 6,34 L 41,34 L 41,14 L 6,14 z" + id="path3209" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 28,11 L 23,11 L 20,23 L 28,23 C 28,21 28,19 30,19 C 30,19 30,15 30,15 C 28,15 28,13 28,11 z" + id="path3240" + sodipodi:nodetypes="ccccccc" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 21,23 L 24,11 L 18,11 L 15,23 L 21,23 z" + id="path3242" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 16,23 L 19,11 L 13,11 L 10,23 L 16,23 z" + id="path3238" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 11,23 L 14,11 L 8,11 L 5,23 L 11,23 z" + id="path3236" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:#ffa000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 6,23 L 9,11 L 2,11 C 2,11 2,23 2,23 L 6,23 z" + id="path3212" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 2,11 L 28,11 L 28,14 L 30,14 C 30,16 30,18 30,20 L 28,20 L 28,23 L 2,23 C 2,23 2,11 2,11 z" + id="rect3204" + sodipodi:nodetypes="ccccccccc" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.39999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 9,11 L 6,23 L 6,23" + id="path5268" + sodipodi:nodetypes="ccc" /> + </g> +</svg> diff --git a/data/iconsrc/battery-2.svg b/data/iconsrc/battery-2.svg new file mode 100644 index 0000000..2fd56ce --- /dev/null +++ b/data/iconsrc/battery-2.svg @@ -0,0 +1,125 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="32" + height="32" + id="svg2383" + sodipodi:version="0.32" + inkscape:version="0.46" + version="1.0" + sodipodi:docname="battery-2.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + inkscape:export-filename="/vhome/samr7/sf/nohands/trunk/data/battery-2.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"> + <defs + id="defs2385"> + <linearGradient + id="linearGradient3165"> + <stop + style="stop-color:#8a8a8a;stop-opacity:1;" + offset="0" + id="stop3167" /> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="1" + id="stop3169" /> + </linearGradient> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 24 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="48 : 24 : 1" + inkscape:persp3d-origin="24 : 16 : 1" + id="perspective2391" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="9.8994949" + inkscape:cx="21.126365" + inkscape:cy="13.539034" + inkscape:current-layer="layer1" + showgrid="true" + inkscape:grid-bbox="true" + inkscape:document-units="px" + objecttolerance="11" + gridtolerance="11" + guidetolerance="11" + inkscape:window-width="1077" + inkscape:window-height="700" + inkscape:window-x="142" + inkscape:window-y="231"> + <inkscape:grid + type="xygrid" + id="grid3207" + visible="true" + enabled="true" /> + </sodipodi:namedview> + <metadata + id="metadata2388"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + id="layer1" + inkscape:label="Layer 1" + inkscape:groupmode="layer"> + <path + style="fill:none;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 6,8 L 6,28 L 41,28 L 41,8 L 6,8 z" + id="path3209" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 28,11 L 23,11 L 20,23 L 28,23 C 28,21 28,19 30,19 C 30,19 30,15 30,15 C 28,15 28,13 28,11 z" + id="path3240" + sodipodi:nodetypes="ccccccc" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 21,23 L 24,11 L 18,11 L 15,23 L 21,23 z" + id="path3242" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 16,23 L 19,11 L 13,11 L 10,23 L 16,23 z" + id="path3238" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:#ffff00;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 11,23 L 14,11 L 8,11 L 5,23 L 11,23 z" + id="path3236" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:#ffff00;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 6,23 L 9,11 L 2,11 C 2,11 2,23 2,23 L 6,23 z" + id="path3212" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 2,11 L 28,11 L 28,14 L 30,14 C 30,16 30,18 30,20 L 28,20 L 28,23 L 2,23 C 2,23 2,11 2,11 z" + id="rect3204" + sodipodi:nodetypes="ccccccccc" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.39999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 14,11 L 11,23 L 11,23" + id="path5268" + sodipodi:nodetypes="ccc" /> + </g> +</svg> diff --git a/data/iconsrc/battery-3.svg b/data/iconsrc/battery-3.svg new file mode 100644 index 0000000..c705fc6 --- /dev/null +++ b/data/iconsrc/battery-3.svg @@ -0,0 +1,125 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="32" + height="32" + id="svg2383" + sodipodi:version="0.32" + inkscape:version="0.46" + version="1.0" + sodipodi:docname="battery-3.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + inkscape:export-filename="/vhome/samr7/sf/nohands/trunk/data/battery-3.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"> + <defs + id="defs2385"> + <linearGradient + id="linearGradient3165"> + <stop + style="stop-color:#8a8a8a;stop-opacity:1;" + offset="0" + id="stop3167" /> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="1" + id="stop3169" /> + </linearGradient> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 24 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="48 : 24 : 1" + inkscape:persp3d-origin="24 : 16 : 1" + id="perspective2391" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="9.8994949" + inkscape:cx="21.126365" + inkscape:cy="14.197799" + inkscape:current-layer="layer1" + showgrid="true" + inkscape:grid-bbox="true" + inkscape:document-units="px" + objecttolerance="11" + gridtolerance="11" + guidetolerance="11" + inkscape:window-width="1077" + inkscape:window-height="700" + inkscape:window-x="142" + inkscape:window-y="231"> + <inkscape:grid + type="xygrid" + id="grid3207" + visible="true" + enabled="true" /> + </sodipodi:namedview> + <metadata + id="metadata2388"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + id="layer1" + inkscape:label="Layer 1" + inkscape:groupmode="layer"> + <path + style="fill:none;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 6,8 L 6,28 L 41,28 L 41,8 L 6,8 z" + id="path3209" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 28,11 L 23,11 L 20,23 L 28,23 C 28,21 28,19 30,19 C 30,19 30,15 30,15 C 28,15 28,13 28,11 z" + id="path3240" + sodipodi:nodetypes="ccccccc" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 21,23 L 24,11 L 18,11 L 15,23 L 21,23 z" + id="path3242" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:#d0ff00;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 16,23 L 19,11 L 13,11 L 10,23 L 16,23 z" + id="path3238" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:#d0ff00;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 11,23 L 14,11 L 8,11 L 5,23 L 11,23 z" + id="path3236" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:#d0ff00;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 6,23 L 9,11 L 2,11 C 2,11 2,23 2,23 L 6,23 z" + id="path3212" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 2,11 L 28,11 L 28,14 L 30,14 C 30,16 30,18 30,20 L 28,20 L 28,23 L 2,23 C 2,23 2,11 2,11 z" + id="rect3204" + sodipodi:nodetypes="ccccccccc" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.39999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 19,11 L 16,23 L 16,23" + id="path5268" + sodipodi:nodetypes="ccc" /> + </g> +</svg> diff --git a/data/iconsrc/battery-4.svg b/data/iconsrc/battery-4.svg new file mode 100644 index 0000000..1eae0c1 --- /dev/null +++ b/data/iconsrc/battery-4.svg @@ -0,0 +1,125 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="32" + height="32" + id="svg2383" + sodipodi:version="0.32" + inkscape:version="0.46" + version="1.0" + sodipodi:docname="battery-4.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + inkscape:export-filename="/vhome/samr7/sf/nohands/trunk/data/battery-4.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"> + <defs + id="defs2385"> + <linearGradient + id="linearGradient3165"> + <stop + style="stop-color:#8a8a8a;stop-opacity:1;" + offset="0" + id="stop3167" /> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="1" + id="stop3169" /> + </linearGradient> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 24 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="48 : 24 : 1" + inkscape:persp3d-origin="24 : 16 : 1" + id="perspective2391" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="9.8994949" + inkscape:cx="21.126365" + inkscape:cy="14.197799" + inkscape:current-layer="layer1" + showgrid="true" + inkscape:grid-bbox="true" + inkscape:document-units="px" + objecttolerance="11" + gridtolerance="11" + guidetolerance="11" + inkscape:window-width="1077" + inkscape:window-height="700" + inkscape:window-x="147" + inkscape:window-y="256"> + <inkscape:grid + type="xygrid" + id="grid3207" + visible="true" + enabled="true" /> + </sodipodi:namedview> + <metadata + id="metadata2388"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + id="layer1" + inkscape:label="Layer 1" + inkscape:groupmode="layer"> + <path + style="fill:none;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 6,14 L 6,34 L 41,34 L 41,14 L 6,14 z" + id="path3209" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 28,11 L 23,11 L 20,23 L 28,23 C 28,21 28,19 30,19 C 30,19 30,15 30,15 C 28,15 28,13 28,11 z" + id="path3240" + sodipodi:nodetypes="ccccccc" /> + <path + style="fill:#00b000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 21,23 L 24,11 L 18,11 L 15,23 L 21,23 z" + id="path3242" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:#00b000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 16,23 L 19,11 L 13,11 L 10,23 L 16,23 z" + id="path3238" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:#00b000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 11,23 L 14,11 L 8,11 L 5,23 L 11,23 z" + id="path3236" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:#00b000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 6,23 L 9,11 L 2,11 C 2,11 2,23 2,23 L 6,23 z" + id="path3212" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 2,11 L 28,11 L 28,14 L 30,14 C 30,16 30,18 30,20 L 28,20 L 28,23 L 2,23 C 2,23 2,11 2,11 z" + id="rect3204" + sodipodi:nodetypes="ccccccccc" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.39999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 24,11 L 21,23 L 21,23" + id="path5268" + sodipodi:nodetypes="ccc" /> + </g> +</svg> diff --git a/data/iconsrc/battery-5.svg b/data/iconsrc/battery-5.svg new file mode 100644 index 0000000..e4ef3c0 --- /dev/null +++ b/data/iconsrc/battery-5.svg @@ -0,0 +1,120 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="32" + height="32" + id="svg2383" + sodipodi:version="0.32" + inkscape:version="0.46" + version="1.0" + sodipodi:docname="battery-5.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + inkscape:export-filename="/vhome/samr7/sf/nohands/trunk/data/battery-5.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"> + <defs + id="defs2385"> + <linearGradient + id="linearGradient3165"> + <stop + style="stop-color:#8a8a8a;stop-opacity:1;" + offset="0" + id="stop3167" /> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="1" + id="stop3169" /> + </linearGradient> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 24 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="48 : 24 : 1" + inkscape:persp3d-origin="24 : 16 : 1" + id="perspective2391" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="9.8994949" + inkscape:cx="21.126365" + inkscape:cy="14.197799" + inkscape:current-layer="layer1" + showgrid="true" + inkscape:grid-bbox="true" + inkscape:document-units="px" + objecttolerance="11" + gridtolerance="11" + guidetolerance="11" + inkscape:window-width="1077" + inkscape:window-height="700" + inkscape:window-x="147" + inkscape:window-y="256"> + <inkscape:grid + type="xygrid" + id="grid3207" + visible="true" + enabled="true" /> + </sodipodi:namedview> + <metadata + id="metadata2388"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + id="layer1" + inkscape:label="Layer 1" + inkscape:groupmode="layer"> + <path + style="fill:none;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 6,8 L 6,28 L 41,28 L 41,8 L 6,8 z" + id="path3209" /> + <path + style="fill:#00b000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 28,11 L 23,11 L 20,23 L 28,23 C 28,21 28,19 30,19 C 30,19 30,15 30,15 C 28,15 28,13 28,11 z" + id="path3240" + sodipodi:nodetypes="ccccccc" /> + <path + style="fill:#00b000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 21,23 L 24,11 L 18,11 L 15,23 L 21,23 z" + id="path3242" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:#00b000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 16,23 L 19,11 L 13,11 L 10,23 L 16,23 z" + id="path3238" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:#00b000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 11,23 L 14,11 L 8,11 L 5,23 L 11,23 z" + id="path3236" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:#00b000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 6,23 L 9,11 L 2,11 C 2,11 2,23 2,23 L 6,23 z" + id="path3212" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 2,11 L 28,11 L 28,14 L 30,14 C 30,16 30,18 30,20 L 28,20 L 28,23 L 2,23 C 2,23 2,11 2,11 z" + id="rect3204" + sodipodi:nodetypes="ccccccccc" /> + </g> +</svg> diff --git a/data/iconsrc/contacts.svg b/data/iconsrc/contacts.svg new file mode 100644 index 0000000..94d395f --- /dev/null +++ b/data/iconsrc/contacts.svg @@ -0,0 +1,112 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="48px" + height="48px" + id="svg3393" + sodipodi:version="0.32" + inkscape:version="0.46" + sodipodi:docname="contacts.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + inkscape:export-filename="/vhome/samr7/sf/nohands/trunk/data/contacts.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"> + <defs + id="defs3395"> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 24 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="48 : 24 : 1" + inkscape:persp3d-origin="24 : 16 : 1" + id="perspective3401" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="9.8994949" + inkscape:cx="28.881265" + inkscape:cy="35.428571" + inkscape:current-layer="layer1" + showgrid="true" + inkscape:grid-bbox="true" + inkscape:document-units="px" + objecttolerance="11" + gridtolerance="11" + guidetolerance="11" + inkscape:window-width="1078" + inkscape:window-height="940" + inkscape:window-x="10" + inkscape:window-y="160"> + <inkscape:grid + type="xygrid" + id="grid3407" + visible="true" + enabled="true" /> + </sodipodi:namedview> + <metadata + id="metadata3398"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + id="layer1" + inkscape:label="Layer 1" + inkscape:groupmode="layer"> + <g + id="g3930" + transform="matrix(-1,0,0,1,30,-3.363636)"> + <path + sodipodi:nodetypes="ccc" + id="path3920" + d="M 7.0000005,39.363636 L 25,39.363636 C 25,14.818182 7.0000005,14.818182 7.0000005,39.363636 z" + style="fill:#51342f;fill-opacity:1;fill-rule:evenodd;stroke:#5c5c5c;stroke-width:0.81818181px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + <path + transform="matrix(0.8181818,0,0,0.8181818,-4.454545,4.1818186)" + d="M 35,13 A 10,10 0 1 1 15,13 A 10,10 0 1 1 35,13 z" + sodipodi:ry="10" + sodipodi:rx="10" + sodipodi:cy="13" + sodipodi:cx="25" + id="path3922" + style="fill:#c2b5a4;fill-opacity:1;stroke:#5c5c5c;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + sodipodi:type="arc" /> + </g> + <g + id="g3934" + transform="matrix(-1,0,0,1,62,-1)"> + <path + sodipodi:nodetypes="ccc" + id="path3405" + d="M 20,46 L 42,46 C 42,16 20,16 20,46 z" + style="fill:#000080;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + <path + transform="translate(6,3)" + d="M 35,13 A 10,10 0 1 1 15,13 A 10,10 0 1 1 35,13 z" + sodipodi:ry="10" + sodipodi:rx="10" + sodipodi:cy="13" + sodipodi:cx="25" + id="path3409" + style="fill:#deb887;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + sodipodi:type="arc" /> + </g> + </g> +</svg> diff --git a/data/iconsrc/dialpad.svg b/data/iconsrc/dialpad.svg new file mode 100644 index 0000000..7df31a6 --- /dev/null +++ b/data/iconsrc/dialpad.svg @@ -0,0 +1,90 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="48px" + height="48px" + id="svg2510" + sodipodi:version="0.32" + inkscape:version="0.46" + sodipodi:docname="dialpad.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + inkscape:export-filename="/vhome/samr7/sf/nohands/trunk/data/dialpad.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"> + <defs + id="defs2512"> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 24 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="48 : 24 : 1" + inkscape:persp3d-origin="24 : 16 : 1" + id="perspective2518" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="7" + inkscape:cx="26.729142" + inkscape:cy="24" + inkscape:current-layer="layer1" + showgrid="true" + inkscape:grid-bbox="true" + inkscape:document-units="px" + inkscape:window-width="904" + inkscape:window-height="674" + inkscape:window-x="73" + inkscape:window-y="417" /> + <metadata + id="metadata2515"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + id="layer1" + inkscape:label="Layer 1" + inkscape:groupmode="layer"> + <path + style="fill:#deb887;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 4.8070562,42.390819 L 4.3990762,30.767616 L 8.3928811,23.495322 L 10.093408,21.620123 L 12.249707,15.522 L 13.249205,13.783779 L 14.489155,10.892328 L 16.339225,10.67639 L 17.629432,11.61787 L 17.646186,12.895514 L 16.671817,16.5502 L 15.983352,17.64541 L 15.000608,20.661274 L 12.831743,25.801165 L 14.051368,26.232424 L 15.129826,25.643245 L 16.092246,25.950091 L 17.009213,27.663182 L 19.054279,27.700261 L 20.410882,28.832549 L 20.104037,29.79497 L 22.086896,29.960649 L 23.754534,30.449927 L 24.339525,31.208974 L 23.659437,32.943007 L 22.469131,34.747623 L 20.304454,40.206924 L 14.559863,45.521488 L 4.8070562,42.390819 z" + id="path2524" /> + <g + id="g3368" + transform="translate(-0.7142857,0)"> + <rect + y="2.4767151" + x="25.762424" + height="20.475147" + width="21.046576" + id="rect3296" + style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.35342371;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <text + id="text3298" + y="19.17425" + x="28.740303" + style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Sans;-inkscape-font-specification:Caption" + xml:space="preserve"><tspan + y="19.17425" + x="28.740303" + id="tspan3300" + sodipodi:role="line">#</tspan></text> + </g> + </g> +</svg> diff --git a/data/iconsrc/handset.svg b/data/iconsrc/handset.svg new file mode 100644 index 0000000..60b0745 --- /dev/null +++ b/data/iconsrc/handset.svg @@ -0,0 +1,230 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="744.09448819" + height="1052.3622047" + id="svg2" + sodipodi:version="0.32" + inkscape:version="0.46" + sodipodi:docname="handset.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape"> + <defs + id="defs4"> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective10" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + gridtolerance="10" + guidetolerance="10" + objecttolerance="10" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="2.8" + inkscape:cx="341.2983" + inkscape:cy="238.44874" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1135" + inkscape:window-height="763" + inkscape:window-x="271" + inkscape:window-y="37" + inkscape:snap-bbox="true" + inkscape:object-nodes="true" + inkscape:object-paths="true"> + <sodipodi:guide + orientation="0,1" + position="161.42857,590" + id="guide2385" /> + <sodipodi:guide + orientation="1,0" + position="190,804.28572" + id="guide2387" /> + <sodipodi:guide + orientation="1,0" + position="490,742.85714" + id="guide2389" /> + <sodipodi:guide + orientation="0,1" + position="152.14286,632.14286" + id="guide2391" /> + <sodipodi:guide + orientation="1,0" + position="290,821.42857" + id="guide2393" /> + <sodipodi:guide + orientation="1,0" + position="390,809.28572" + id="guide2395" /> + <sodipodi:guide + orientation="1,0" + position="340,770.71429" + id="guide2397" /> + <sodipodi:guide + orientation="0,1" + position="373.57143,700" + id="guide2399" /> + <sodipodi:guide + orientation="0,1" + position="292.14286,639.28571" + id="guide2401" /> + <sodipodi:guide + orientation="1,0" + position="270,812.85714" + id="guide2403" /> + <sodipodi:guide + orientation="1,0" + position="410,805.71429" + id="guide2405" /> + <sodipodi:guide + orientation="0,1" + position="263.14474,400.02041" + id="guide3830" /> + <sodipodi:guide + orientation="0,1" + position="208.09142,450.02296" + id="guide3832" /> + <sodipodi:guide + orientation="0,1" + position="226.77925,350.01786" + id="guide3834" /> + <sodipodi:guide + orientation="1,0" + position="310,486.42857" + id="guide3836" /> + <sodipodi:guide + orientation="1,0" + position="370,504.64286" + id="guide3838" /> + <sodipodi:guide + orientation="0,1" + position="243.21429,430" + id="guide3840" /> + <sodipodi:guide + orientation="0,1" + position="252.5,370" + id="guide3842" /> + <sodipodi:guide + orientation="0,1" + position="321.78571,460" + id="guide3864" /> + <sodipodi:guide + orientation="0,1" + position="331.78571,420" + id="guide3866" /> + <sodipodi:guide + orientation="1,0" + position="360,426.42857" + id="guide3868" /> + <sodipodi:guide + orientation="0,1" + position="329.46429,440" + id="guide3870" /> + <sodipodi:guide + orientation="0,1" + position="315.92521,469.97347" + id="guide3893" /> + <sodipodi:guide + orientation="0,1" + position="243.19423,301.278" + id="guide3895" /> + <sodipodi:guide + orientation="0,1" + position="354.81608,330.06734" + id="guide3897" /> + <sodipodi:guide + orientation="0,1" + position="262.13459,200.0102" + id="guide4049" /> + <sodipodi:guide + orientation="0,1" + position="337.89603,250.01276" + id="guide4051" /> + <sodipodi:guide + orientation="0,1" + position="288.39855,229.8097" + id="guide4053" /> + <sodipodi:guide + orientation="0,1" + position="263.64981,170.2107" + id="guide4057" /> + <sodipodi:guide + orientation="0,1" + position="226.77925,150.00765" + id="guide4059" /> + <sodipodi:guide + orientation="0,1" + position="299.00515,264.91251" + id="guide4070" /> + <sodipodi:guide + orientation="0,1" + position="314.91506,214.90995" + id="guide4072" /> + <sodipodi:guide + orientation="0,1" + position="319.71328,239.91123" + id="guide4074" /> + </sodipodi:namedview> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <g + id="g3903"> + <path + transform="matrix(1.9788733,0,0,1.9788591,-401.8275,-707.51428)" + d="M 410,687.3183 A 35,34.976536 0 1 1 340,687.3183 A 35,34.976536 0 1 1 410,687.3183 z" + sodipodi:ry="34.976536" + sodipodi:rx="35" + sodipodi:cy="687.3183" + sodipodi:cx="375" + id="path3899" + style="fill:#00b000;fill-opacity:1;stroke:#000000;stroke-opacity:1;stroke-width:0.50533987999999996;stroke-miterlimit:4;stroke-dasharray:none" + sodipodi:type="arc" /> + <path + sodipodi:nodetypes="cssscccccssscc" + d="M 386.67765,635.34486 C 396.05572,661.11487 382.75533,689.64202 356.98927,699.02154 C 331.2232,708.40106 302.70042,695.09862 293.32234,669.32861 C 283.94426,643.5586 297.24465,615.03145 323.01072,605.65193 C 328.73651,603.5676 331.63389,602.49752 340,602.33922 L 340,592.36218 L 360,612.36218 L 340,632.36218 L 340,622.36218 C 336.34405,622.36218 333.24191,623.09916 329.80644,624.3497 C 314.3468,629.97712 306.36656,647.09254 311.99341,662.55376 C 317.62026,678.01498 334.73393,685.99603 350.19357,680.3686 C 365.65321,674.74118 373.63345,657.62577 368.0066,642.16455 L 386.78572,635.3979" + style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-opacity:1" + id="path3826" /> + </g> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 190,462.36218 C 190,352.36218 270,352.36218 340,352.36218 C 410,352.36218 490,352.36218 490,462.36218 L 490,462.36218 L 410,462.36218 C 410,462.36218 390,420.21933 390,420.21932 C 390,413.07647 290,413.07647 290,420.21932 C 290,420.21932 270,462.36218 270,462.36218 L 190,462.36218 C 190,462.36218 190,462.36218 190,462.36218 z" + id="path2383" + sodipodi:nodetypes="ccsccccccc" /> + <path + id="path4061" + style="fill:#0000ff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1" + d="M 340,822.55249 C 323.44,822.55249 310,835.90265 310,852.35198 C 310,852.35198 310,852.35198 310,852.35198 L 290,852.35198 C 290,824.75057 312.4,802.34943 340,802.34943 L 340,787.44967 L 370,812.45095 L 340,837.45223 L 340.16887,822.55248" + sodipodi:nodetypes="ccccccccc" /> + </g> +</svg> diff --git a/data/iconsrc/hangup.svg b/data/iconsrc/hangup.svg new file mode 100644 index 0000000..c26290c --- /dev/null +++ b/data/iconsrc/hangup.svg @@ -0,0 +1,84 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="48px" + height="48px" + id="svg3254" + sodipodi:version="0.32" + inkscape:version="0.46" + sodipodi:docname="hangup.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + inkscape:export-filename="/vhome/samr7/sf/nohands/trunk/data/hangup.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"> + <defs + id="defs3256"> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 24 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="48 : 24 : 1" + inkscape:persp3d-origin="24 : 16 : 1" + id="perspective3262" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="9.8994949" + inkscape:cx="29.404316" + inkscape:cy="24" + inkscape:current-layer="layer1" + showgrid="true" + inkscape:grid-bbox="true" + inkscape:document-units="px" + showguides="true" + inkscape:guide-bbox="true" + gridtolerance="10" + guidetolerance="10" + inkscape:window-width="1020" + inkscape:window-height="727" + inkscape:window-x="5" + inkscape:window-y="31"> + <sodipodi:guide + orientation="1,0" + position="24.041631,50.002551" + id="guide3281" /> + </sodipodi:namedview> + <metadata + id="metadata3259"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + id="layer1" + inkscape:label="Layer 1" + inkscape:groupmode="layer"> + <path + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.60000002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 3.614281,26.887446 C 3.614281,11.93792 14.486668,11.93792 24,11.93792 C 33.513332,11.93792 44.385719,11.93792 44.385719,26.887446 L 44.385719,26.887446 L 33.513332,26.887446 C 33.513332,26.887446 30.79524,21.160031 30.79524,21.16003 C 30.79524,20.189282 17.204761,20.189282 17.204761,21.16003 C 17.204761,21.16003 14.486668,26.887446 14.486668,26.887446 L 3.614281,26.887446 C 3.614281,26.887446 3.614281,26.887446 3.614281,26.887446 z" + id="path2383" + sodipodi:nodetypes="ccsccccccc" /> + <path + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.60473979;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 14.950258,31.787052 L 33.031988,31.787052 L 24.041631,37.746952 L 14.950258,31.787052 z" + id="path3230" + sodipodi:nodetypes="cccc" /> + </g> +</svg> diff --git a/data/iconsrc/holdcall.svg b/data/iconsrc/holdcall.svg new file mode 100644 index 0000000..5feb5ca --- /dev/null +++ b/data/iconsrc/holdcall.svg @@ -0,0 +1,84 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="48px" + height="48px" + id="svg3992" + sodipodi:version="0.32" + inkscape:version="0.46" + sodipodi:docname="holdcall.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + inkscape:export-filename="/vhome/samr7/sf/nohands/trunk/data/holdcall.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"> + <defs + id="defs3994"> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 24 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="48 : 24 : 1" + inkscape:persp3d-origin="24 : 16 : 1" + id="perspective4000" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="7" + inkscape:cx="6.6428571" + inkscape:cy="24" + inkscape:current-layer="layer1" + showgrid="true" + inkscape:grid-bbox="true" + inkscape:document-units="px" + inkscape:window-width="1056" + inkscape:window-height="681" + inkscape:window-x="0" + inkscape:window-y="6" /> + <metadata + id="metadata3997"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + id="layer1" + inkscape:label="Layer 1" + inkscape:groupmode="layer"> + <path + style="fill:#ffff00;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.60000002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 43.249526,44.385719 C 28.3,44.385719 28.3,33.513332 28.3,24 C 28.3,14.486668 28.3,3.6142807 43.249526,3.6142807 L 43.249526,3.6142807 L 43.249526,14.486668 C 43.249526,14.486668 37.522111,17.20476 37.52211,17.20476 C 36.551362,17.20476 36.551362,30.795239 37.52211,30.795239 C 37.52211,30.795239 43.249526,33.513332 43.249526,33.513332 L 43.249526,44.385719 C 43.249526,44.385719 43.249526,44.385719 43.249526,44.385719 z" + id="path2383" + sodipodi:nodetypes="ccsccccccc" /> + <rect + style="fill:#ffff00;fill-opacity:0.92653061;stroke:#000000;stroke-width:0.67731994;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4003" + width="5.32268" + height="15.32268" + x="14.338659" + y="16.338659" /> + <rect + style="fill:#ffff00;fill-opacity:0.92653061;stroke:#000000;stroke-width:0.67731994;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4005" + width="5.32268" + height="15.32268" + x="6.3386602" + y="16.338659" /> + </g> +</svg> diff --git a/data/iconsrc/logomain.svg b/data/iconsrc/logomain.svg new file mode 100644 index 0000000..996f55e --- /dev/null +++ b/data/iconsrc/logomain.svg @@ -0,0 +1,114 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="48px" + height="48px" + id="svg2383" + sodipodi:version="0.32" + inkscape:version="0.46" + sodipodi:docname="logomain.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + inkscape:export-filename="/vhome/samr7/sf/nohands/trunk/data/icon.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"> + <defs + id="defs2385"> + <linearGradient + id="linearGradient2639"> + <stop + style="stop-color:#002b60;stop-opacity:1;" + offset="0" + id="stop2641" /> + <stop + id="stop2647" + offset="0.5" + style="stop-color:#ffca63;stop-opacity:0.49803922;" /> + <stop + style="stop-color:#002c5d;stop-opacity:1;" + offset="1" + id="stop2643" /> + </linearGradient> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="-22.875 : 46.75 : 1" + inkscape:vp_y="6.1230318e-14 : 1000 : 0" + inkscape:vp_z="67.75 : 56 : 1" + inkscape:persp3d-origin="19 : 14.25 : 1" + id="perspective2391" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="15.999999" + inkscape:cx="20.478674" + inkscape:cy="22.891045" + inkscape:current-layer="layer1" + showgrid="true" + inkscape:grid-bbox="true" + inkscape:document-units="px" + objecttolerance="11" + gridtolerance="11" + guidetolerance="11" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1227" + inkscape:window-height="940" + inkscape:window-x="-2" + inkscape:window-y="120"> + <inkscape:grid + type="xygrid" + id="grid3485" + visible="true" + enabled="true" /> + </sodipodi:namedview> + <metadata + id="metadata2388"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + id="layer1" + inkscape:label="Layer 1" + inkscape:groupmode="layer"> + <g + id="g6808" + transform="matrix(0.4427666,0,0,0.4427666,21.475903,16.911767)" /> + <g + id="g2650" + transform="matrix(0.2350258,0,0,0.2350258,23.837022,16.299093)" /> + <g + id="g3178" + transform="matrix(1.2575359,0,0,1.2575359,-6.1808616,-6.1808616)"> + <rect + width="28.093035" + height="38.169884" + rx="11.603645" + ry="16.261848" + x="9.9534826" + y="4.9150581" + style="fill:#002c60;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.87800002;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" + id="rect3481" /> + <path + id="path3172" + d="M 25.5,8.375 L 22.9375,10.9375 L 11.9375,21.9375 L 14.0625,24.0625 L 22.5,15.625 L 22.5,36 L 22.5,39.625 L 25.0625,37.0625 L 36.0625,26.0625 L 33.9375,23.9375 L 25.5,32.375 L 25.5,12 L 25.5,8.375 z" + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + </g> + </g> +</svg> diff --git a/data/iconsrc/message.svg b/data/iconsrc/message.svg new file mode 100644 index 0000000..205ea5b --- /dev/null +++ b/data/iconsrc/message.svg @@ -0,0 +1,86 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="32px" + height="32px" + id="svg6507" + sodipodi:version="0.32" + inkscape:version="0.46" + sodipodi:docname="message.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + inkscape:export-filename="/vhome/samr7/sf/nohands/trunk/data/message.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"> + <defs + id="defs6509"> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 16 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="32 : 16 : 1" + inkscape:persp3d-origin="16 : 10.666667 : 1" + id="perspective6515" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="11.313708" + inkscape:cx="15.5791" + inkscape:cy="14.135545" + inkscape:current-layer="layer1" + showgrid="true" + inkscape:grid-bbox="true" + inkscape:document-units="px" + objecttolerance="11" + gridtolerance="11" + guidetolerance="11" + inkscape:window-width="1062" + inkscape:window-height="681" + inkscape:window-x="85" + inkscape:window-y="272"> + <inkscape:grid + type="xygrid" + id="grid6517" + visible="true" + enabled="true" /> + </sodipodi:namedview> + <metadata + id="metadata6512"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + id="layer1" + inkscape:label="Layer 1" + inkscape:groupmode="layer"> + <path + style="fill:#f7f8e9;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.51661348;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 1.9583068,7.04105 L 1.9583068,24.041693 L 30.041693,24.041693 L 30.041693,7.04105 L 1.9583068,7.04105 z" + id="path6523" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.55499452;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 1.9774973,24.022503 L 16,12.063212 L 30.022503,24.022503 L 1.9774973,24.022503 z" + id="path7034" /> + <path + style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:0.55499452;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 1.9774973,7.040709 L 16,19 L 30.022503,7.040709 L 1.9774973,7.040709 z" + id="path7036" /> + </g> +</svg> diff --git a/data/iconsrc/mute.svg b/data/iconsrc/mute.svg new file mode 100644 index 0000000..eb95aeb --- /dev/null +++ b/data/iconsrc/mute.svg @@ -0,0 +1,646 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="48px" + height="48px" + id="svg2383" + sodipodi:version="0.32" + inkscape:version="0.46" + sodipodi:docname="mute.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + inkscape:export-filename="/vhome/samr7/sf/nohands/trunk/data/mute.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"> + <defs + id="defs2385"> + <linearGradient + inkscape:collect="always" + id="linearGradient5183"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop5185" /> + <stop + style="stop-color:#b3b3b3;stop-opacity:1" + offset="1" + id="stop5187" /> + </linearGradient> + <linearGradient + id="linearGradient4693"> + <stop + style="stop-color:#ffffff;stop-opacity:0.24705882;" + offset="0" + id="stop4703" /> + <stop + style="stop-color:#000000;stop-opacity:0;" + offset="1" + id="stop4697" /> + </linearGradient> + <pattern + inkscape:collect="always" + xlink:href="#Strips1_1" + id="pattern4685" + patternTransform="matrix(10,0,0,10,-16.089427,-3.9364852)" /> + <pattern + inkscape:stockid="Stripes 1:1" + id="Strips1_1" + patternTransform="translate(0,0) scale(10,10)" + height="1" + width="2" + patternUnits="userSpaceOnUse" + inkscape:collect="always"> + <rect + id="rect3954" + height="2" + width="1" + y="-0.5" + x="0" + style="fill:black;stroke:none" /> + </pattern> + <linearGradient + inkscape:collect="always" + id="linearGradient3220"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop3222" /> + <stop + style="stop-color:#000000;stop-opacity:1" + offset="1" + id="stop3224" /> + </linearGradient> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 24 : 1" + inkscape:vp_y="6.1230318e-14 : 1000 : 0" + inkscape:vp_z="42.545176 : 25.818275 : 1" + inkscape:persp3d-origin="24 : 16 : 1" + id="perspective2391" /> + <pattern + patternUnits="userSpaceOnUse" + width="15.821146" + height="18.818178" + patternTransform="translate(16.089427,3.9364852)" + id="pattern4682"> + <path + sodipodi:nodetypes="cczzc" + id="path3232" + d="M 0,18.818178 L 15.821146,18.818178 L 15.821146,8.6944748 C 15.821146,-3.0586208 0,-2.7365774 0,8.6944748 L 0,18.818178 z" + style="fill:url(#pattern4685);fill-opacity:1;stroke:none;stroke-width:0.79204983;stroke-linecap:butt;stroke-miterlimit:4;stroke-opacity:1" /> + </pattern> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5183" + id="linearGradient5737" + gradientUnits="userSpaceOnUse" + x1="17.125" + y1="4.9000001" + x2="20.5" + y2="8.5" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3220" + id="linearGradient5739" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.7463892,0,0,0.5373438,5.7134639,12.368942)" + x1="23.444445" + y1="20.000004" + x2="23.444445" + y2="21.500004" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3220" + id="linearGradient5741" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.7463892,0,0,0.5373438,5.7134636,14.78699)" + x1="23.444445" + y1="20" + x2="23.444445" + y2="21.5" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3220" + id="linearGradient5893" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.9614258,0,0,0.6921539,-4.2897993,16.430534)" + x1="23.444445" + y1="20" + x2="23.444445" + y2="21.5" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3220" + id="linearGradient5896" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.9614258,0,0,0.6921539,-4.2897989,13.315841)" + x1="23.444445" + y1="20.000004" + x2="23.444445" + y2="21.500004" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5183" + id="linearGradient5902" + gradientUnits="userSpaceOnUse" + x1="17.125" + y1="4.9000001" + x2="20.5" + y2="8.5" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1" + inkscape:cx="24.000001" + inkscape:cy="22.471243" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:grid-bbox="true" + inkscape:document-units="px" + showguides="true" + inkscape:guide-bbox="true" + inkscape:object-nodes="true" + gridtolerance="11" + objecttolerance="11" + guidetolerance="11" + inkscape:window-width="1366" + inkscape:window-height="840" + inkscape:window-x="38" + inkscape:window-y="156"> + <inkscape:grid + type="xygrid" + id="grid3169" + visible="true" + enabled="true" /> + </sodipodi:namedview> + <metadata + id="metadata2388"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + id="layer1" + inkscape:label="Layer 1" + inkscape:groupmode="layer"> + <g + id="g5904"> + <path + sodipodi:nodetypes="cczzcczcccczc" + id="path3171" + d="M 5.0573969,21.005998 L 8.1019122,21.005998 L 8.1019122,33.464768 C 8.1019122,40.163169 30.428356,39.889091 30.428356,33.464768 L 30.428356,21.005998 L 33.472871,21.005998 L 33.472871,36.579461 C 33.472871,41.770616 22.309649,41.770616 22.309649,41.770616 L 22.309649,48.000002 L 17.235458,48.000002 L 17.235458,41.770616 C 17.235458,41.770616 5.0573969,41.770616 5.0573969,36.579461 L 5.0573969,21.005998 z" + style="fill:#666666;fill-rule:evenodd;stroke:#000000;stroke-width:0.51323408;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + sodipodi:nodetypes="cczzc" + id="path4689" + d="M 11.237181,24.827742 L 27.293087,24.827742 L 27.293087,14.316999 C 27.293087,2.1145715 11.237181,2.448927 11.237181,14.316999 L 11.237181,24.827742 z" + style="fill:#cccccc;fill-opacity:1;stroke:none;stroke-width:0.79204983;stroke-linecap:butt;stroke-miterlimit:4;stroke-opacity:1" /> + <path + transform="matrix(1.8041571,0,0,1.7303851,-16.705249,-8.1239e-3)" + sodipodi:open="true" + sodipodi:end="4.712389" + sodipodi:start="3.1415927" + d="M 16,8.4999998 A 4.5,4.5 0 0 1 20.5,4" + sodipodi:ry="4.5" + sodipodi:rx="4.5" + sodipodi:cy="8.5" + sodipodi:cx="20.5" + id="path5181" + style="fill:url(#linearGradient5902);fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + sodipodi:type="arc" /> + <path + sodipodi:nodetypes="cczzc" + id="rect3205" + d="M 11.146427,25.082459 L 27.383842,25.082459 L 27.383842,31.311845 C 27.383842,38.54384 11.146427,38.345678 11.146427,31.311845 L 11.146427,25.082459 z" + style="fill:#333333;fill-opacity:1;stroke:#000000;stroke-width:0.6294263;stroke-linecap:butt;stroke-miterlimit:4;stroke-opacity:1" /> + <rect + rx="0" + y="27.158918" + x="10.131588" + height="2.076462" + width="18.267092" + id="rect3210" + style="fill:url(#linearGradient5896);fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <rect + rx="0" + y="30.273613" + x="10.131588" + height="2.076462" + width="18.267092" + id="rect3228" + style="fill:url(#linearGradient5893);fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <rect + id="rect4687" + y="5.2901268" + x="11.23718" + height="19.537617" + width="16.055906" + style="fill:none;stroke:none" /> + <path + inkscape:transform-center-y="-1" + inkscape:transform-center-x="-0.5" + transform="matrix(1.0148384,0,0,1.038231,0.9980431,18.333957)" + d="M 16,3.5 A 0.5,0.5 0 1 1 15,3.5 A 0.5,0.5 0 1 1 16,3.5 z" + sodipodi:ry="0.5" + sodipodi:rx="0.5" + sodipodi:cy="3.5" + sodipodi:cx="15.5" + id="path5079" + style="fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + sodipodi:type="arc" /> + <path + inkscape:transform-center-y="-1" + inkscape:transform-center-x="-0.5" + transform="matrix(1.0148384,0,0,1.038231,5.0573969,18.333957)" + d="M 16,3.5 A 0.5,0.5 0 1 1 15,3.5 A 0.5,0.5 0 1 1 16,3.5 z" + sodipodi:ry="0.5" + sodipodi:rx="0.5" + sodipodi:cy="3.5" + sodipodi:cx="15.5" + id="path5083" + style="fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + sodipodi:type="arc" /> + <path + inkscape:transform-center-y="-1" + inkscape:transform-center-x="-0.5" + transform="matrix(1.0148384,0,0,1.038231,9.1167502,18.333957)" + d="M 16,3.5 A 0.5,0.5 0 1 1 15,3.5 A 0.5,0.5 0 1 1 16,3.5 z" + sodipodi:ry="0.5" + sodipodi:rx="0.5" + sodipodi:cy="3.5" + sodipodi:cx="15.5" + id="path5085" + style="fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + sodipodi:type="arc" /> + <path + inkscape:transform-center-y="-1" + inkscape:transform-center-x="-0.5" + transform="matrix(1.0148384,0,0,1.038231,-1.5390529,19.891304)" + d="M 16,3.5 A 0.5,0.5 0 1 1 15,3.5 A 0.5,0.5 0 1 1 16,3.5 z" + sodipodi:ry="0.5" + sodipodi:rx="0.5" + sodipodi:cy="3.5" + sodipodi:cx="15.5" + id="path5087" + style="fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + sodipodi:type="arc" /> + <path + inkscape:transform-center-y="-1" + inkscape:transform-center-x="-0.5" + transform="matrix(1.0148384,0,0,1.038231,2.5203,19.891304)" + d="M 16,3.5 A 0.5,0.5 0 1 1 15,3.5 A 0.5,0.5 0 1 1 16,3.5 z" + sodipodi:ry="0.5" + sodipodi:rx="0.5" + sodipodi:cy="3.5" + sodipodi:cx="15.5" + id="path5091" + style="fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + sodipodi:type="arc" /> + <path + inkscape:transform-center-y="-1" + inkscape:transform-center-x="-0.5" + transform="matrix(1.0148384,0,0,1.038231,6.5796533,19.891304)" + d="M 16,3.5 A 0.5,0.5 0 1 1 15,3.5 A 0.5,0.5 0 1 1 16,3.5 z" + sodipodi:ry="0.5" + sodipodi:rx="0.5" + sodipodi:cy="3.5" + sodipodi:cx="15.5" + id="path5095" + style="fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + sodipodi:type="arc" /> + <path + inkscape:transform-center-y="-1" + inkscape:transform-center-x="-0.5" + transform="matrix(1.0148384,0,0,1.038231,10.639008,19.891304)" + d="M 16,3.5 A 0.5,0.5 0 1 1 15,3.5 A 0.5,0.5 0 1 1 16,3.5 z" + sodipodi:ry="0.5" + sodipodi:rx="0.5" + sodipodi:cy="3.5" + sodipodi:cx="15.5" + id="path5101" + style="fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + sodipodi:type="arc" /> + <path + inkscape:transform-center-y="-1" + inkscape:transform-center-x="-0.5" + transform="matrix(1.0148384,0,0,1.038231,-3.0613103,18.333957)" + d="M 16,3.5 A 0.5,0.5 0 1 1 15,3.5 A 0.5,0.5 0 1 1 16,3.5 z" + sodipodi:ry="0.5" + sodipodi:rx="0.5" + sodipodi:cy="3.5" + sodipodi:cx="15.5" + id="path5103" + style="fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + sodipodi:type="arc" /> + <path + inkscape:transform-center-y="-1" + inkscape:transform-center-x="-0.5" + transform="matrix(1.0148384,0,0,1.038231,0.9980431,15.219263)" + d="M 16,3.5 A 0.5,0.5 0 1 1 15,3.5 A 0.5,0.5 0 1 1 16,3.5 z" + sodipodi:ry="0.5" + sodipodi:rx="0.5" + sodipodi:cy="3.5" + sodipodi:cx="15.5" + id="path5133" + style="fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + sodipodi:type="arc" /> + <path + inkscape:transform-center-y="-1" + inkscape:transform-center-x="-0.5" + transform="matrix(1.0148384,0,0,1.038231,5.0573969,15.219263)" + d="M 16,3.5 A 0.5,0.5 0 1 1 15,3.5 A 0.5,0.5 0 1 1 16,3.5 z" + sodipodi:ry="0.5" + sodipodi:rx="0.5" + sodipodi:cy="3.5" + sodipodi:cx="15.5" + id="path5135" + style="fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + sodipodi:type="arc" /> + <path + inkscape:transform-center-y="-1" + inkscape:transform-center-x="-0.5" + transform="matrix(1.0148384,0,0,1.038231,9.1167502,15.219263)" + d="M 16,3.5 A 0.5,0.5 0 1 1 15,3.5 A 0.5,0.5 0 1 1 16,3.5 z" + sodipodi:ry="0.5" + sodipodi:rx="0.5" + sodipodi:cy="3.5" + sodipodi:cx="15.5" + id="path5137" + style="fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + sodipodi:type="arc" /> + <path + inkscape:transform-center-y="-1" + inkscape:transform-center-x="-0.5" + transform="matrix(1.0148384,0,0,1.038231,-1.5390529,16.77661)" + d="M 16,3.5 A 0.5,0.5 0 1 1 15,3.5 A 0.5,0.5 0 1 1 16,3.5 z" + sodipodi:ry="0.5" + sodipodi:rx="0.5" + sodipodi:cy="3.5" + sodipodi:cx="15.5" + id="path5139" + style="fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + sodipodi:type="arc" /> + <path + inkscape:transform-center-y="-1" + inkscape:transform-center-x="-0.5" + transform="matrix(1.0148384,0,0,1.038231,2.5203,16.77661)" + d="M 16,3.5 A 0.5,0.5 0 1 1 15,3.5 A 0.5,0.5 0 1 1 16,3.5 z" + sodipodi:ry="0.5" + sodipodi:rx="0.5" + sodipodi:cy="3.5" + sodipodi:cx="15.5" + id="path5141" + style="fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + sodipodi:type="arc" /> + <path + inkscape:transform-center-y="-1" + inkscape:transform-center-x="-0.5" + transform="matrix(1.0148384,0,0,1.038231,6.5796533,16.77661)" + d="M 16,3.5 A 0.5,0.5 0 1 1 15,3.5 A 0.5,0.5 0 1 1 16,3.5 z" + sodipodi:ry="0.5" + sodipodi:rx="0.5" + sodipodi:cy="3.5" + sodipodi:cx="15.5" + id="path5143" + style="fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + sodipodi:type="arc" /> + <path + inkscape:transform-center-y="-1" + inkscape:transform-center-x="-0.5" + transform="matrix(1.0148384,0,0,1.038231,10.639008,16.77661)" + d="M 16,3.5 A 0.5,0.5 0 1 1 15,3.5 A 0.5,0.5 0 1 1 16,3.5 z" + sodipodi:ry="0.5" + sodipodi:rx="0.5" + sodipodi:cy="3.5" + sodipodi:cx="15.5" + id="path5145" + style="fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + sodipodi:type="arc" /> + <path + inkscape:transform-center-y="-1" + inkscape:transform-center-x="-0.5" + transform="matrix(1.0148384,0,0,1.038231,-3.0613103,15.219263)" + d="M 16,3.5 A 0.5,0.5 0 1 1 15,3.5 A 0.5,0.5 0 1 1 16,3.5 z" + sodipodi:ry="0.5" + sodipodi:rx="0.5" + sodipodi:cy="3.5" + sodipodi:cx="15.5" + id="path5147" + style="fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + sodipodi:type="arc" /> + <path + inkscape:transform-center-y="-1" + inkscape:transform-center-x="-0.5" + transform="matrix(1.0148384,0,0,1.038231,0.9980431,12.104571)" + d="M 16,3.5 A 0.5,0.5 0 1 1 15,3.5 A 0.5,0.5 0 1 1 16,3.5 z" + sodipodi:ry="0.5" + sodipodi:rx="0.5" + sodipodi:cy="3.5" + sodipodi:cx="15.5" + id="path5149" + style="fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + sodipodi:type="arc" /> + <path + inkscape:transform-center-y="-1" + inkscape:transform-center-x="-0.5" + transform="matrix(1.0148384,0,0,1.038231,5.0573969,12.104571)" + d="M 16,3.5 A 0.5,0.5 0 1 1 15,3.5 A 0.5,0.5 0 1 1 16,3.5 z" + sodipodi:ry="0.5" + sodipodi:rx="0.5" + sodipodi:cy="3.5" + sodipodi:cx="15.5" + id="path5151" + style="fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + sodipodi:type="arc" /> + <path + inkscape:transform-center-y="-1" + inkscape:transform-center-x="-0.5" + transform="matrix(1.0148384,0,0,1.038231,9.1167502,12.104571)" + d="M 16,3.5 A 0.5,0.5 0 1 1 15,3.5 A 0.5,0.5 0 1 1 16,3.5 z" + sodipodi:ry="0.5" + sodipodi:rx="0.5" + sodipodi:cy="3.5" + sodipodi:cx="15.5" + id="path5153" + style="fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + sodipodi:type="arc" /> + <path + inkscape:transform-center-y="-1" + inkscape:transform-center-x="-0.5" + transform="matrix(1.0148384,0,0,1.038231,-1.5390529,13.661918)" + d="M 16,3.5 A 0.5,0.5 0 1 1 15,3.5 A 0.5,0.5 0 1 1 16,3.5 z" + sodipodi:ry="0.5" + sodipodi:rx="0.5" + sodipodi:cy="3.5" + sodipodi:cx="15.5" + id="path5155" + style="fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + sodipodi:type="arc" /> + <path + inkscape:transform-center-y="-1" + inkscape:transform-center-x="-0.5" + transform="matrix(1.0148384,0,0,1.038231,2.5203,13.661918)" + d="M 16,3.5 A 0.5,0.5 0 1 1 15,3.5 A 0.5,0.5 0 1 1 16,3.5 z" + sodipodi:ry="0.5" + sodipodi:rx="0.5" + sodipodi:cy="3.5" + sodipodi:cx="15.5" + id="path5157" + style="fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + sodipodi:type="arc" /> + <path + inkscape:transform-center-y="-1" + inkscape:transform-center-x="-0.5" + transform="matrix(1.0148384,0,0,1.038231,6.5796533,13.661918)" + d="M 16,3.5 A 0.5,0.5 0 1 1 15,3.5 A 0.5,0.5 0 1 1 16,3.5 z" + sodipodi:ry="0.5" + sodipodi:rx="0.5" + sodipodi:cy="3.5" + sodipodi:cx="15.5" + id="path5159" + style="fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + sodipodi:type="arc" /> + <path + inkscape:transform-center-y="-1" + inkscape:transform-center-x="-0.5" + transform="matrix(1.0148384,0,0,1.038231,10.639008,13.661918)" + d="M 16,3.5 A 0.5,0.5 0 1 1 15,3.5 A 0.5,0.5 0 1 1 16,3.5 z" + sodipodi:ry="0.5" + sodipodi:rx="0.5" + sodipodi:cy="3.5" + sodipodi:cx="15.5" + id="path5161" + style="fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + sodipodi:type="arc" /> + <path + inkscape:transform-center-y="-1" + inkscape:transform-center-x="-0.5" + transform="matrix(1.0148384,0,0,1.038231,-3.0613103,12.104571)" + d="M 16,3.5 A 0.5,0.5 0 1 1 15,3.5 A 0.5,0.5 0 1 1 16,3.5 z" + sodipodi:ry="0.5" + sodipodi:rx="0.5" + sodipodi:cy="3.5" + sodipodi:cx="15.5" + id="path5163" + style="fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + sodipodi:type="arc" /> + <path + inkscape:transform-center-y="-1" + inkscape:transform-center-x="-0.5" + transform="matrix(1.0148384,0,0,1.038231,0.9980431,8.989878)" + d="M 16,3.5 A 0.5,0.5 0 1 1 15,3.5 A 0.5,0.5 0 1 1 16,3.5 z" + sodipodi:ry="0.5" + sodipodi:rx="0.5" + sodipodi:cy="3.5" + sodipodi:cx="15.5" + id="path5165" + style="fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + sodipodi:type="arc" /> + <path + inkscape:transform-center-y="-1" + inkscape:transform-center-x="-0.5" + transform="matrix(1.0148384,0,0,1.038231,5.0573969,8.989878)" + d="M 16,3.5 A 0.5,0.5 0 1 1 15,3.5 A 0.5,0.5 0 1 1 16,3.5 z" + sodipodi:ry="0.5" + sodipodi:rx="0.5" + sodipodi:cy="3.5" + sodipodi:cx="15.5" + id="path5167" + style="fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + sodipodi:type="arc" /> + <path + inkscape:transform-center-y="-1" + inkscape:transform-center-x="-0.5" + transform="matrix(1.0148384,0,0,1.038231,9.1167502,8.989878)" + d="M 16,3.5 A 0.5,0.5 0 1 1 15,3.5 A 0.5,0.5 0 1 1 16,3.5 z" + sodipodi:ry="0.5" + sodipodi:rx="0.5" + sodipodi:cy="3.5" + sodipodi:cx="15.5" + id="path5169" + style="fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + sodipodi:type="arc" /> + <path + inkscape:transform-center-y="-1" + inkscape:transform-center-x="-0.5" + transform="matrix(1.0148384,0,0,1.038231,-1.5390529,10.547224)" + d="M 16,3.5 A 0.5,0.5 0 1 1 15,3.5 A 0.5,0.5 0 1 1 16,3.5 z" + sodipodi:ry="0.5" + sodipodi:rx="0.5" + sodipodi:cy="3.5" + sodipodi:cx="15.5" + id="path5171" + style="fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + sodipodi:type="arc" /> + <path + inkscape:transform-center-y="-1" + inkscape:transform-center-x="-0.5" + transform="matrix(1.0148384,0,0,1.038231,2.5203,10.547224)" + d="M 16,3.5 A 0.5,0.5 0 1 1 15,3.5 A 0.5,0.5 0 1 1 16,3.5 z" + sodipodi:ry="0.5" + sodipodi:rx="0.5" + sodipodi:cy="3.5" + sodipodi:cx="15.5" + id="path5173" + style="fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + sodipodi:type="arc" /> + <path + inkscape:transform-center-y="-1" + inkscape:transform-center-x="-0.5" + transform="matrix(1.0148384,0,0,1.038231,6.5796533,10.547224)" + d="M 16,3.5 A 0.5,0.5 0 1 1 15,3.5 A 0.5,0.5 0 1 1 16,3.5 z" + sodipodi:ry="0.5" + sodipodi:rx="0.5" + sodipodi:cy="3.5" + sodipodi:cx="15.5" + id="path5175" + style="fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + sodipodi:type="arc" /> + <path + inkscape:transform-center-y="-1" + inkscape:transform-center-x="-0.5" + transform="matrix(1.0148384,0,0,1.038231,10.639008,10.547224)" + d="M 16,3.5 A 0.5,0.5 0 1 1 15,3.5 A 0.5,0.5 0 1 1 16,3.5 z" + sodipodi:ry="0.5" + sodipodi:rx="0.5" + sodipodi:cy="3.5" + sodipodi:cx="15.5" + id="path5177" + style="fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + sodipodi:type="arc" /> + <path + inkscape:transform-center-y="-1" + inkscape:transform-center-x="-0.5" + transform="matrix(1.0148384,0,0,1.038231,-3.0613103,8.989878)" + d="M 16,3.5 A 0.5,0.5 0 1 1 15,3.5 A 0.5,0.5 0 1 1 16,3.5 z" + sodipodi:ry="0.5" + sodipodi:rx="0.5" + sodipodi:cy="3.5" + sodipodi:cx="15.5" + id="path5179" + style="fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + sodipodi:type="arc" /> + </g> + <path + style="fill:#ff0000;fill-opacity:1;stroke:#000000;stroke-width:0.58778471;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 24.481786,7.343145 L 30.13864,13 L 24.481786,18.656854 L 26.912466,21.087534 L 32.56932,15.43068 L 38.226174,21.087534 L 40.656854,18.656854 L 35,13 L 40.656854,7.343145 L 38.226174,4.912466 L 32.56932,10.56932 L 26.912466,4.912466 L 24.481786,7.343145 z" + id="rect5385" /> + </g> +</svg> diff --git a/data/iconsrc/noag.svg b/data/iconsrc/noag.svg new file mode 100644 index 0000000..7f7c223 --- /dev/null +++ b/data/iconsrc/noag.svg @@ -0,0 +1,213 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="48" + height="32" + id="svg6170" + sodipodi:version="0.32" + inkscape:version="0.46" + version="1.0" + sodipodi:docname="noag.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape"> + <defs + id="defs6172"> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 24 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="48 : 24 : 1" + inkscape:persp3d-origin="24 : 16 : 1" + id="perspective6178" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="8" + inkscape:cx="17.683298" + inkscape:cy="20.411566" + inkscape:current-layer="layer1" + showgrid="true" + inkscape:grid-bbox="true" + inkscape:document-units="px" + inkscape:window-width="1283" + inkscape:window-height="919" + inkscape:window-x="84" + inkscape:window-y="82" /> + <metadata + id="metadata6175"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + id="layer1" + inkscape:label="Layer 1" + inkscape:groupmode="layer"> + <g + id="g6777" + transform="matrix(2.0973983,0,0,2.0973983,-22.828539,-10.638504)"> + <path + id="path6721" + d="M 13.18249,7.3017703 C 12.710607,7.5872624 12.24915,7.8631391 12.020815,8.5139533 C 11.96684,8.8439865 11.823317,9.2187941 12.020815,9.4230906 C 12.059533,11.064068 18.384776,16.090098 21.566757,19.423601 L 22.475894,19.625631 L 23.536554,19.171063 L 26.61752,17.150758 L 26.769042,15.989082 L 26.415489,15.029437 C 24.44366,11.291672 19.316925,5.6301037 17.273609,5.3319728 C 15.873206,5.402986 14.495689,6.5778276 13.18249,7.3017703 z" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + id="path6719" + d="M 13.232999,7.3017702 C 15.660926,10.07189 18.528893,13.229592 22.425387,17.201265 C 22.807587,17.558874 23.025795,18.019099 24.597214,16.948727 C 26.126241,16.057186 25.361346,15.840139 25.354829,15.332483 C 23.787955,12.950557 23.108724,11.137632 16.515994,5.5340033" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + id="path6695" + d="M 12.576399,7.6553237 C 15.330014,10.307924 22.467902,17.878424 22.576909,18.413448 C 22.685916,18.948472 22.526402,19.575124 22.526402,19.575124" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + sodipodi:nodetypes="cc" + id="path6703" + d="M 18.046017,12.617327 C 19.526312,12.225298 20.856897,11.633654 21.768787,10.483751" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + sodipodi:nodetypes="cc" + id="path6705" + d="M 18.602901,13.281073 C 20.083196,12.889044 21.413781,12.2974 22.325671,11.147497" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + sodipodi:nodetypes="cc" + id="path6707" + d="M 19.245758,13.888217 C 20.726053,13.496188 22.056638,12.904544 22.968528,11.754641" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + sodipodi:nodetypes="cc" + id="path6709" + d="M 19.817187,14.49536 C 21.297482,14.103331 22.520924,13.547401 23.432814,12.397498" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + sodipodi:nodetypes="cc" + id="path6711" + d="M 20.406472,15.084645 C 21.886767,14.692616 22.931638,14.208115 23.843528,13.058212" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + sodipodi:nodetypes="cc" + id="path6713" + d="M 21.29933,16.013217 C 22.779625,15.621188 23.681638,15.243829 24.593528,14.093926" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + sodipodi:nodetypes="cc" + id="path6715" + d="M 22.1029,16.816789 C 23.583195,16.42476 24.306637,16.190258 25.218527,15.040355" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.02;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + sodipodi:nodetypes="cczzc" + id="path6723" + d="M 23.464286,18.785714 L 25.964286,17.178571 C 25.979933,17.115389 26.116736,16.88849 25.756128,16.861475 C 25.420628,16.836341 23.835673,17.681082 23.55484,18.174239 C 23.280401,18.656167 23.366429,18.62457 23.464286,18.785714 z" + style="fill:#808080;fill-rule:evenodd;stroke:#000000;stroke-width:0.09999997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + sodipodi:nodetypes="cccccc" + id="path6725" + d="M 17.399878,11.847457 C 18.128534,11.730919 18.727619,11.601424 18.788837,11.418142 L 19.066629,11.569665 C 19.397026,11.129807 19.840557,11.029349 20.304066,10.988827 L 20.228305,10.685781 C 20.607135,10.438863 20.981485,10.190451 21.162696,9.8776592" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + transform="translate(0.2272843,-0.2525381)" + d="M 16.036172,7.2765164 A 0.65659916,0.45456865 0 1 1 14.722974,7.2765164 A 0.65659916,0.45456865 0 1 1 16.036172,7.2765164 z" + sodipodi:ry="0.45456865" + sodipodi:rx="0.65659916" + sodipodi:cy="7.2765164" + sodipodi:cx="15.379573" + id="path6727" + style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-width:0.05;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + sodipodi:type="arc" /> + <path + id="path6729" + d="M 16.312034,10.646572 C 15.29154,9.5267798 13.32449,7.323327 13.32449,7.2999806 C 13.32449,7.2936201 13.389834,7.2516246 13.4697,7.2066566 C 13.549565,7.1616887 13.899014,6.94658 14.246254,6.728638 C 15.272509,6.0845186 15.671039,5.8631767 16.155419,5.6682978 C 16.327663,5.5989996 16.47223,5.5529483 16.47668,5.5659618 C 16.481129,5.5789756 16.719628,5.7917804 17.006676,6.0388617 C 17.68735,6.6247618 18.543013,7.3848831 19.158121,7.9500784 C 19.872309,8.6063139 21.102665,9.807559 21.102665,9.8486131 C 21.102665,9.9211161 20.761264,10.242032 20.468152,10.445053 C 20.138386,10.673462 20.161047,10.637022 20.208048,10.863323 C 20.223125,10.935917 20.218772,10.945398 20.170366,10.945398 C 20.140265,10.945398 20.028043,10.962809 19.920984,10.984089 C 19.659332,11.036098 19.354166,11.188062 19.18428,11.350947 L 19.047881,11.481726 L 18.910247,11.414225 L 18.772615,11.346723 L 18.697421,11.423632 C 18.602698,11.520518 18.345848,11.603897 17.832933,11.704263 C 17.624239,11.7451 17.433137,11.783311 17.408262,11.789176 C 17.374863,11.797051 17.088189,11.498249 16.312034,10.646572 L 16.312034,10.646572 z M 15.969616,7.4361256 C 16.43466,7.2339312 16.387926,6.742493 15.887752,6.5752716 C 15.7471,6.528248 15.45873,6.5327765 15.306114,6.5844057 C 15.236226,6.6080486 15.135377,6.6633875 15.082006,6.7073806 C 14.768429,6.9658577 14.923505,7.3689149 15.382676,7.488846 C 15.522124,7.5252691 15.827722,7.4978192 15.969616,7.4361256 z" + style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.00126269;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + id="path6735" + d="M 18.406635,12.920568 L 18.151383,12.646077 L 18.282259,12.612979 C 18.739882,12.49725 19.510698,12.209537 19.937779,11.995044 C 20.632593,11.646088 21.234785,11.2015 21.61034,10.760222 C 21.699193,10.65582 21.778955,10.569543 21.78759,10.568495 C 21.811962,10.565539 22.250707,11.06755 22.259653,11.108629 C 22.2718,11.164404 21.650946,11.774589 21.380457,11.972716 C 20.771878,12.418488 20.094608,12.749919 19.208629,13.03553 C 18.613644,13.227334 18.703937,13.240276 18.406636,12.920568 L 18.406635,12.920568 z" + style="fill:#808080;fill-opacity:1;stroke:#000000;stroke-width:0.00126269;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + id="path6737" + d="M 19.018414,13.568396 C 18.883889,13.42976 18.779259,13.310893 18.785905,13.304247 C 18.792552,13.297601 18.950045,13.246369 19.135891,13.190397 C 19.769571,12.999552 20.458668,12.703586 20.93787,12.416451 C 21.378271,12.152565 21.670641,11.923752 22.031391,11.560644 C 22.215786,11.375044 22.370967,11.22319 22.376239,11.22319 C 22.390283,11.22319 22.831051,11.750994 22.840973,11.779693 C 22.852798,11.813896 22.602196,12.08722 22.370767,12.292528 C 21.62871,12.950835 20.72128,13.405212 19.393655,13.783259 L 19.263008,13.820461 L 19.018414,13.568396 z" + style="fill:#808080;fill-opacity:1;stroke:#000000;stroke-width:0.00126269;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + id="path6739" + d="M 19.591994,14.177928 L 19.35664,13.925433 L 19.423173,13.900138 C 19.459768,13.886224 19.499554,13.874841 19.511587,13.874841 C 19.563985,13.874841 20.357225,13.606006 20.610215,13.502507 C 21.488712,13.143113 22.131757,12.726174 22.700021,12.147513 C 22.835473,12.009583 22.950153,11.901442 22.954865,11.9072 C 23.201249,12.208308 23.326376,12.391255 23.313559,12.431639 C 23.290728,12.503572 22.797525,12.991542 22.561798,13.175422 C 21.931689,13.666945 21.112991,14.058153 20.117766,14.343284 C 19.985815,14.381087 19.866491,14.416159 19.852601,14.42122 C 19.838711,14.426282 19.721438,14.316799 19.591993,14.177928 L 19.591994,14.177928 z" + style="fill:#808080;fill-opacity:1;stroke:#000000;stroke-width:0.00126269;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + id="path6741" + d="M 20.160109,14.770901 L 19.937285,14.531599 L 20.003916,14.506265 C 20.040563,14.492332 20.080084,14.480932 20.091742,14.480932 C 20.1034,14.480932 20.275964,14.42862 20.475219,14.364682 C 21.709279,13.968692 22.648606,13.39772 23.3045,12.644896 L 23.418985,12.513491 L 23.601695,12.765594 C 23.81751,13.063373 23.832834,13.001237 23.442598,13.410693 C 23.064451,13.807463 22.559696,14.178976 22.045786,14.438783 C 21.690656,14.618319 20.556375,15.014089 20.406574,15.010733 C 20.39357,15.010442 20.282661,14.902517 20.160108,14.7709 L 20.160109,14.770901 z" + style="fill:#808080;fill-opacity:1;stroke:#000000;stroke-width:0.00126269;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + sodipodi:nodetypes="cc" + id="path6743" + d="M 19.041375,11.54441 L 21.869803,14.625376" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + id="path6745" + d="M 20.304066,10.988827 L 22.98097,13.867762" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + d="M 24.496199,16.330009 A 0.65659916,0.49244937 0 1 1 23.183,16.330009 A 0.65659916,0.49244937 0 1 1 24.496199,16.330009 z" + sodipodi:ry="0.49244937" + sodipodi:rx="0.65659916" + sodipodi:cy="16.330009" + sodipodi:cx="23.8396" + id="path6751" + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + sodipodi:type="arc" /> + <path + d="M 24.092138,16.330009 A 0.18940361,0.16414979 0 1 1 23.713331,16.330009 A 0.18940361,0.16414979 0 1 1 24.092138,16.330009 z" + sodipodi:ry="0.16414979" + sodipodi:rx="0.18940361" + sodipodi:cy="16.330009" + sodipodi:cx="23.902735" + id="path6753" + style="fill:#cccccc;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + sodipodi:type="arc" /> + <path + id="path6757" + d="M 20.893118,15.535279 C 20.54563,15.171526 20.507291,15.123051 20.555654,15.108594 C 21.256845,14.898976 21.80128,14.700461 22.143063,14.529783 C 22.641485,14.280883 23.14848,13.900641 23.562929,13.464895 L 23.872982,13.138907 L 24.100607,13.487934 C 24.225802,13.679898 24.365024,13.896894 24.409992,13.970146 L 24.49175,14.103332 L 24.429599,14.184803 C 24.040356,14.695037 23.358514,15.207216 22.696045,15.486997 C 22.343346,15.635951 21.402255,15.945653 21.302324,15.945653 C 21.292874,15.945653 21.108732,15.760985 20.893118,15.535279 L 20.893118,15.535279 z" + style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.00252538;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + id="path6759" + d="M 21.897451,16.570685 C 21.786558,16.456096 21.629241,16.292502 21.547857,16.207144 L 21.399887,16.051946 L 21.548008,16.011311 C 21.887481,15.918183 22.54822,15.690215 22.805366,15.577498 C 23.444042,15.297543 24.0068,14.875665 24.482194,14.320444 C 24.528041,14.266899 24.569236,14.227125 24.573741,14.232056 C 24.578245,14.236986 24.706613,14.434983 24.859002,14.672048 L 25.136072,15.103076 L 25.061533,15.189752 C 24.912744,15.362765 24.497018,15.771881 24.40489,15.835953 L 24.310477,15.901615 L 24.177606,15.844254 C 24.075318,15.800096 23.996904,15.786854 23.836937,15.786724 C 23.650805,15.786572 23.61131,15.795507 23.45813,15.872417 C 23.221539,15.991208 23.135597,16.11526 23.135597,16.337969 C 23.135597,16.459057 23.126263,16.501366 23.097716,16.509678 C 23.076882,16.515745 22.860217,16.57883 22.61624,16.649869 C 22.372263,16.720907 22.156091,16.779029 22.13586,16.779029 C 22.115629,16.779029 22.008344,16.685275 21.897451,16.570685 L 21.897451,16.570685 z" + style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.00252538;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + id="path6761" + d="M 23.03306,17.534423 C 22.962776,17.525431 22.860498,17.489212 22.805776,17.453937 C 22.650958,17.354135 22.146647,16.834095 22.190066,16.819022 C 22.210082,16.812072 22.368512,16.766443 22.542132,16.717623 C 22.715752,16.668803 22.926794,16.607485 23.011115,16.581361 L 23.164425,16.533862 L 23.246574,16.63171 C 23.291754,16.685525 23.387546,16.760156 23.459443,16.797555 C 23.573993,16.857141 23.619846,16.865669 23.830077,16.866486 C 24.043058,16.867314 24.08623,16.859442 24.214682,16.796365 C 24.557674,16.627935 24.658134,16.268507 24.431555,16.020434 L 24.354351,15.935906 L 24.45208,15.858885 C 24.615585,15.730027 24.813266,15.538919 24.99149,15.337411 L 25.160911,15.145855 L 25.225197,15.249022 C 25.260554,15.305764 25.297613,15.391964 25.307551,15.440577 C 25.317489,15.489191 25.356623,15.602833 25.394516,15.693115 C 25.490169,15.921013 25.502186,15.983494 25.471954,16.095769 C 25.417439,16.298221 25.160852,16.521655 24.499303,16.942745 C 23.740555,17.425704 23.365683,17.576978 23.03306,17.534423 L 23.03306,17.534423 z" + style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.00252538;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + id="path6763" + d="M 20.543483,11.153648 C 20.392072,10.995169 20.351185,10.93502 20.329017,10.838147 L 20.301628,10.718457 L 20.58219,10.519993 C 20.7365,10.410838 20.940702,10.23877 21.035973,10.137619 L 21.209192,9.9537091 L 21.450914,10.195431 C 21.657204,10.401721 21.68919,10.444567 21.669128,10.487737 C 21.599836,10.636849 20.847547,11.348825 20.758775,11.349306 C 20.743256,11.349391 20.646375,11.261345 20.543483,11.153649 L 20.543483,11.153648 z" + style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.00252538;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + id="path6765" + d="M 19.36497,11.804742 C 19.163798,11.586603 19.157434,11.576016 19.193961,11.520268 C 19.298465,11.360775 19.643714,11.169248 19.9327,11.110452 C 20.276962,11.040409 20.259411,11.035739 20.467142,11.252658 L 20.652367,11.446076 L 20.372915,11.611957 C 20.143742,11.747991 19.608808,12.031312 19.581136,12.031312 C 19.577167,12.031312 19.479892,11.929355 19.36497,11.804741 L 19.36497,11.804742 z" + style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.00252538;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + id="path6773" + d="M 22.643337,19.292186 C 22.657138,19.181731 22.667746,18.947681 22.666912,18.772074 C 22.664779,18.323127 22.649044,18.295518 21.878375,17.388434 C 20.368228,15.610978 16.476224,11.463173 13.742227,8.7175369 C 13.187316,8.1602634 12.733298,7.6981251 12.733298,7.6905616 C 12.733298,7.6682244 13.155113,7.3884341 13.188789,7.3884341 C 13.205751,7.3884341 13.628507,7.8504173 14.128249,8.4150634 C 15.185541,9.6096723 16.998696,11.605854 17.818408,12.47772 C 18.132361,12.811648 18.61497,13.325934 18.890873,13.620577 C 19.166774,13.91522 19.570836,14.341113 19.788787,14.567006 C 22.67958,17.563146 22.695646,17.578957 22.910077,17.638526 C 23.171147,17.711053 23.513304,17.643974 23.91147,17.442208 C 24.280116,17.2554 25.185169,16.652941 25.364184,16.47519 C 25.669006,16.172519 25.677263,16.083604 25.456816,15.47772 C 25.28495,15.005355 23.85956,12.8354 23.083821,11.865168 C 21.763342,10.213617 19.649281,8.1221587 17.132748,5.9777198 C 16.856134,5.7420055 16.62899,5.5382341 16.627984,5.5248948 C 16.625249,5.4886223 16.994974,5.4190123 17.207657,5.4157566 C 17.86219,5.4057376 19.185784,6.3230101 20.797224,7.9033851 C 22.334816,9.4113359 23.708719,11.034441 24.956436,12.817006 C 25.789275,14.00685 26.294538,14.880689 26.534701,15.546572 L 26.701224,16.008281 L 26.627882,16.561545 C 26.587545,16.865841 26.550565,17.117387 26.545705,17.120537 C 26.540847,17.123687 25.85585,17.572242 25.023492,18.117326 C 23.756053,18.947329 23.437645,19.139641 23.06418,19.300701 L 22.618245,19.493013 L 22.643337,19.292186 z M 24.744365,18.044891 C 25.4356,17.600586 26.012963,17.21889 26.027394,17.196677 C 26.078294,17.118334 26.054964,16.935434 25.986126,16.873136 C 25.892346,16.788265 25.640529,16.793133 25.396224,16.884539 C 24.897802,17.071024 24.119583,17.530548 23.759943,17.850736 C 23.578736,18.012067 23.363629,18.344414 23.324185,18.524001 C 23.298914,18.639064 23.381104,18.85272 23.45064,18.85272 C 23.470955,18.85272 24.053131,18.489197 24.744366,18.044892 L 24.744365,18.044891 z" + style="fill:#cccccc;fill-opacity:1;stroke:#000000;stroke-width:0.00357143;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + id="path6775" + d="M 21.956508,19.44645 L 21.626147,19.369825 L 20.992223,18.742196 C 20.283972,18.040978 19.491605,17.291321 18.090104,15.996504 C 16.091873,14.150381 15.503282,13.591392 14.481321,12.56921 C 12.908053,10.995604 12.285319,10.204891 12.110342,9.5586769 C 12.082329,9.4552226 12.038997,9.3189684 12.014048,9.2558912 C 11.976273,9.1603884 11.978583,9.0898612 12.027859,8.8342512 C 12.103893,8.4398505 12.221693,8.1859623 12.433942,7.9590512 L 12.603867,7.7773873 L 13.49343,8.6632676 C 16.632223,11.789061 21.751453,17.298446 22.38248,18.229784 C 22.544674,18.469169 22.575162,18.669376 22.521991,19.145955 C 22.500711,19.336699 22.483298,19.501431 22.483298,19.512027 C 22.483298,19.547736 22.288805,19.523524 21.956508,19.44645 z" + style="fill:#cccccc;fill-opacity:1;stroke:#000000;stroke-width:0.00357143;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + </g> + <path + style="fill:#ff0000;fill-opacity:1;stroke:#000000;stroke-width:0.58778471;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 24.662466,7.718146 L 30.31932,13.375 L 24.662466,19.031854 L 27.093146,21.462534 L 32.75,15.80568 L 38.406854,21.462534 L 40.837534,19.031854 L 35.18068,13.375 L 40.837534,7.718146 L 38.406854,5.287466 L 32.75,10.94432 L 27.093146,5.287466 L 24.662466,7.718146 z" + id="rect5385" /> + </g> +</svg> diff --git a/data/iconsrc/nobt.svg b/data/iconsrc/nobt.svg new file mode 100644 index 0000000..9b27a04 --- /dev/null +++ b/data/iconsrc/nobt.svg @@ -0,0 +1,101 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="32px" + height="32px" + id="svg5606" + sodipodi:version="0.32" + inkscape:version="0.46" + sodipodi:docname="nobt.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape"> + <defs + id="defs5608"> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 16 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="32 : 16 : 1" + inkscape:persp3d-origin="16 : 10.666667 : 1" + id="perspective5614" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="6.5937153" + inkscape:cx="15.892761" + inkscape:cy="33.577674" + inkscape:current-layer="layer1" + showgrid="true" + inkscape:grid-bbox="true" + inkscape:document-units="px" + objecttolerance="11" + gridtolerance="11" + guidetolerance="11" + inkscape:object-nodes="true" + inkscape:snap-intersection-line-segments="true" + inkscape:window-width="1153" + inkscape:window-height="681" + inkscape:window-x="474" + inkscape:window-y="173" /> + <metadata + id="metadata5611"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + id="layer1" + inkscape:label="Layer 1" + inkscape:groupmode="layer"> + <g + id="g6808" + transform="matrix(0.2350258,0,0,0.2350258,14.212022,12.299093)" /> + <g + id="g2681"> + <rect + width="16.132931" + height="21.919743" + rx="6.6636019" + ry="9.3386593" + x="7.9335346" + y="5.0401287" + style="fill:#002c60;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.87800002;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" + id="rect2305" /> + <path + d="M 11.206885,12.346709 L 12.259032,11.294562 L 15.357022,14.275648 L 15.357022,7.1444244 L 20.793117,12.522069 L 17.227505,16.146131 L 20.910024,19.828649 L 15.357022,25.030934 L 15.357022,17.958164 L 12.375936,20.997701 L 11.148432,19.828649 L 15.064758,16.087678 L 11.206885,12.346709 zM 16.876791,10.59313 L 16.876791,14.334099 L 18.688823,12.580519 L 16.876791,10.59313 zM 16.818337,18.016617 L 16.935244,21.348418 L 18.747276,19.770196 L 16.818337,18.016617 z" + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline" + id="path2311" /> + </g> + <path + sodipodi:type="arc" + style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:2.48614555;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="path5635" + sodipodi:cx="27.460747" + sodipodi:cy="27.311581" + sodipodi:rx="11.475467" + sodipodi:ry="11.386163" + d="M 38.936213,27.311581 A 11.475467,11.386163 0 1 1 15.98528,27.311581 A 11.475467,11.386163 0 1 1 38.936213,27.311581 z" + transform="matrix(1.2019827,0,0,1.2114101,-17.007343,-17.085524)" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 27.179635,7.8230718 L 7.9335345,26.959871" + id="path6148" + sodipodi:nodetypes="cz" /> + </g> +</svg> diff --git a/data/iconsrc/pickup.svg b/data/iconsrc/pickup.svg new file mode 100644 index 0000000..36d9689 --- /dev/null +++ b/data/iconsrc/pickup.svg @@ -0,0 +1,102 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="48px" + height="48px" + id="svg2431" + sodipodi:version="0.32" + inkscape:version="0.46" + sodipodi:docname="pickup.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + inkscape:export-filename="/vhome/samr7/sf/nohands/trunk/data/pickup.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"> + <defs + id="defs2433"> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 24 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="48 : 24 : 1" + inkscape:persp3d-origin="24 : 16 : 1" + id="perspective2439" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="9.8994949" + inkscape:cx="15.688393" + inkscape:cy="26.206147" + inkscape:current-layer="layer1" + showgrid="true" + inkscape:grid-bbox="true" + inkscape:document-units="px" + showguides="true" + inkscape:guide-bbox="true" + inkscape:snap-bbox="true" + inkscape:snap-guide="true" + guidetolerance="10" + gridtolerance="10" + inkscape:window-width="1193" + inkscape:window-height="805" + inkscape:window-x="15" + inkscape:window-y="186"> + <sodipodi:guide + orientation="1,0" + position="24.041631,42.426407" + id="guide2442" /> + <sodipodi:guide + orientation="0,1" + position="11.414724,34.042141" + id="guide2444" /> + <sodipodi:guide + orientation="1,0" + position="14.950258,37.072598" + id="guide2446" /> + <sodipodi:guide + orientation="1,0" + position="33.031988,35.355339" + id="guide2448" /> + <sodipodi:guide + orientation="0,1" + position="19.192898,40.002041" + id="guide2450" /> + </sodipodi:namedview> + <metadata + id="metadata2436"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + id="layer1" + inkscape:label="Layer 1" + inkscape:groupmode="layer"> + <path + style="fill:#00b000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.60000002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 5.905659,33.243119 C 0.30546803,19.38216 10.38617,15.309292 19.206777,11.745535 C 28.027385,8.181779 38.108087,4.1089107 43.708278,17.96987 L 43.708278,17.96987 L 33.627576,22.042738 C 33.627576,22.042738 28.961878,17.750586 28.961878,17.750585 C 28.598229,16.850523 15.997356,21.941606 16.361005,22.841668 C 16.361005,22.841668 15.986361,29.170251 15.986361,29.170251 L 5.905659,33.243119 C 5.905659,33.243119 5.905659,33.243119 5.905659,33.243119 z" + id="path2383" + sodipodi:nodetypes="ccsccccccc" /> + <path + style="fill:#00b000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.60473979;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 18.586807,35.676139 L 36.668537,35.676139 L 27.67818,29.716239 L 18.586807,35.676139 z" + id="path3230" + sodipodi:nodetypes="cccc" /> + </g> +</svg> diff --git a/data/iconsrc/redial.svg b/data/iconsrc/redial.svg new file mode 100644 index 0000000..4cc5030 --- /dev/null +++ b/data/iconsrc/redial.svg @@ -0,0 +1,107 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="48px" + height="48px" + id="svg2431" + sodipodi:version="0.32" + inkscape:version="0.46" + sodipodi:docname="redial.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + inkscape:export-filename="/vhome/samr7/sf/nohands/trunk/data/redial.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"> + <defs + id="defs2433"> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 24 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="48 : 24 : 1" + inkscape:persp3d-origin="24 : 16 : 1" + id="perspective2439" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="9.8994949" + inkscape:cx="23.787383" + inkscape:cy="22.349746" + inkscape:current-layer="layer1" + showgrid="true" + inkscape:grid-bbox="true" + inkscape:document-units="px" + showguides="true" + inkscape:guide-bbox="true" + inkscape:snap-bbox="true" + inkscape:snap-guide="true" + guidetolerance="10" + gridtolerance="10" + inkscape:window-width="1193" + inkscape:window-height="805" + inkscape:window-x="10" + inkscape:window-y="161"> + <sodipodi:guide + orientation="1,0" + position="24.041631,42.426407" + id="guide2442" /> + <sodipodi:guide + orientation="0,1" + position="11.414724,34.042141" + id="guide2444" /> + <sodipodi:guide + orientation="1,0" + position="14.950258,37.072598" + id="guide2446" /> + <sodipodi:guide + orientation="1,0" + position="33.031988,35.355339" + id="guide2448" /> + <sodipodi:guide + orientation="0,1" + position="19.192898,40.002041" + id="guide2450" /> + </sodipodi:namedview> + <metadata + id="metadata2436"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + id="layer1" + inkscape:label="Layer 1" + inkscape:groupmode="layer"> + <path + sodipodi:type="arc" + style="fill:#00b000;fill-opacity:1;stroke:#000000;stroke-width:1.54037355999999992;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="path3899" + sodipodi:cx="375" + sodipodi:cy="687.3183" + sodipodi:rx="35" + sodipodi:ry="34.976536" + d="M 410,687.3183 A 35,34.976536 0 1 1 340,687.3183 A 35,34.976536 0 1 1 410,687.3183 z" + transform="matrix(0,0.5029077,-0.502904,0,369.65515,-164.5904)" /> + <path + id="path3826" + style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.77466291;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 28.38314,35.798995 C 21.833993,38.182322 14.58415,34.802182 12.200454,28.254036 C 9.8167577,21.70589 13.197419,14.457159 19.746566,12.073829 C 26.295716,9.6904993 33.545556,13.070639 35.929252,19.618785 C 36.458962,21.073927 36.730909,21.810263 36.771141,23.936412 L 41.306689,23.936412 L 34.223919,31.019181 L 27.141153,23.936412 L 31.682536,23.936412 C 31.682536,23.007294 31.495242,22.218923 31.177433,21.345839 C 29.74729,17.416951 25.397604,15.388866 21.468315,16.818864 C 17.539025,18.248862 15.510736,22.598104 16.940881,26.52699 C 18.371024,30.455878 22.720705,32.483963 26.649997,31.053965 L 28.369662,35.82646" + sodipodi:nodetypes="cssscccccssscc" /> + </g> +</svg> diff --git a/data/iconsrc/signal-0.svg b/data/iconsrc/signal-0.svg new file mode 100644 index 0000000..ee76d08 --- /dev/null +++ b/data/iconsrc/signal-0.svg @@ -0,0 +1,68 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="48" + height="32" + id="svg4681" + sodipodi:version="0.32" + inkscape:version="0.46" + version="1.0" + sodipodi:docname="signal-0.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape"> + <defs + id="defs4683"> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 24 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="48 : 24 : 1" + inkscape:persp3d-origin="24 : 16 : 1" + id="perspective4689" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="4.9497475" + inkscape:cx="24.369088" + inkscape:cy="16.183991" + inkscape:current-layer="layer1" + showgrid="true" + inkscape:grid-bbox="true" + inkscape:document-units="px" + inkscape:window-width="933" + inkscape:window-height="681" + inkscape:window-x="703" + inkscape:window-y="296" /> + <metadata + id="metadata4686"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + id="layer1" + inkscape:label="Layer 1" + inkscape:groupmode="layer"> + <path + style="fill:#ff0000;fill-rule:evenodd;stroke:#000000;stroke-width:0.60000001999999997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 11.096044,28.163673 L 14.025487,28.163673 L 14.025487,12.102247 L 22.106707,4.1220421 L 2.105687,4.1220421 L 11.096044,12.102247 L 11.096044,28.163673 z" + id="path4108" + sodipodi:nodetypes="ccccccc" /> + </g> +</svg> diff --git a/data/iconsrc/signal-1.svg b/data/iconsrc/signal-1.svg new file mode 100644 index 0000000..e48a0b1 --- /dev/null +++ b/data/iconsrc/signal-1.svg @@ -0,0 +1,75 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="48" + height="32" + id="svg4681" + sodipodi:version="0.32" + inkscape:version="0.46" + version="1.0" + sodipodi:docname="signal-1.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape"> + <defs + id="defs4683"> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 24 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="48 : 24 : 1" + inkscape:persp3d-origin="24 : 16 : 1" + id="perspective4689" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="4.9497475" + inkscape:cx="24.369088" + inkscape:cy="16.183991" + inkscape:current-layer="layer1" + showgrid="true" + inkscape:grid-bbox="true" + inkscape:document-units="px" + inkscape:window-width="933" + inkscape:window-height="681" + inkscape:window-x="703" + inkscape:window-y="296" /> + <metadata + id="metadata4686"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + id="layer1" + inkscape:label="Layer 1" + inkscape:groupmode="layer"> + <path + style="fill:#cccccc;fill-rule:evenodd;stroke:#000000;stroke-width:0.60000001999999997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 11.096044,28.163673 L 14.025487,28.163673 L 14.025487,12.102247 L 22.106707,4.1220421 L 2.105687,4.1220421 L 11.096044,12.102247 L 11.096044,28.163673 z" + id="path4108" + sodipodi:nodetypes="ccccccc" /> + <rect + style="fill:#ffa000;fill-opacity:1;stroke:#000000;stroke-width:0.60000001999999997;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4128" + width="4.0406108" + height="5.0507631" + x="17.055944" + y="23.112909" /> + </g> +</svg> diff --git a/data/iconsrc/signal-2.svg b/data/iconsrc/signal-2.svg new file mode 100644 index 0000000..d17f81c --- /dev/null +++ b/data/iconsrc/signal-2.svg @@ -0,0 +1,82 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="48" + height="32" + id="svg4681" + sodipodi:version="0.32" + inkscape:version="0.46" + version="1.0" + sodipodi:docname="signal-2.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape"> + <defs + id="defs4683"> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 24 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="48 : 24 : 1" + inkscape:persp3d-origin="24 : 16 : 1" + id="perspective4689" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="4.9497475" + inkscape:cx="24.369088" + inkscape:cy="16.183991" + inkscape:current-layer="layer1" + showgrid="true" + inkscape:grid-bbox="true" + inkscape:document-units="px" + inkscape:window-width="933" + inkscape:window-height="681" + inkscape:window-x="703" + inkscape:window-y="296" /> + <metadata + id="metadata4686"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + id="layer1" + inkscape:label="Layer 1" + inkscape:groupmode="layer"> + <path + style="fill:#cccccc;fill-rule:evenodd;stroke:#000000;stroke-width:0.60000001999999997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 11.096044,28.163673 L 14.025487,28.163673 L 14.025487,12.102247 L 22.106707,4.1220421 L 2.105687,4.1220421 L 11.096044,12.102247 L 11.096044,28.163673 z" + id="path4108" + sodipodi:nodetypes="ccccccc" /> + <rect + style="fill:#ffff00;fill-opacity:1;stroke:#000000;stroke-width:0.60000001999999997;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4128" + width="4.0406108" + height="5.0507631" + x="17.055944" + y="23.112909" /> + <rect + style="fill:#ffff00;fill-opacity:1;stroke:#000000;stroke-width:0.60000001999999997;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4639" + width="4.0406108" + height="8.0812206" + x="23.116861" + y="20.082451" /> + </g> +</svg> diff --git a/data/iconsrc/signal-3.svg b/data/iconsrc/signal-3.svg new file mode 100644 index 0000000..37b7cf0 --- /dev/null +++ b/data/iconsrc/signal-3.svg @@ -0,0 +1,89 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="48" + height="32" + id="svg4681" + sodipodi:version="0.32" + inkscape:version="0.46" + version="1.0" + sodipodi:docname="signal-3.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape"> + <defs + id="defs4683"> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 24 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="48 : 24 : 1" + inkscape:persp3d-origin="24 : 16 : 1" + id="perspective4689" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="4.9497475" + inkscape:cx="24.369088" + inkscape:cy="16.183991" + inkscape:current-layer="layer1" + showgrid="true" + inkscape:grid-bbox="true" + inkscape:document-units="px" + inkscape:window-width="933" + inkscape:window-height="681" + inkscape:window-x="703" + inkscape:window-y="296" /> + <metadata + id="metadata4686"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + id="layer1" + inkscape:label="Layer 1" + inkscape:groupmode="layer"> + <path + style="fill:#cccccc;fill-rule:evenodd;stroke:#000000;stroke-width:0.60000001999999997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 11.096044,28.163673 L 14.025487,28.163673 L 14.025487,12.102247 L 22.106707,4.1220421 L 2.105687,4.1220421 L 11.096044,12.102247 L 11.096044,28.163673 z" + id="path4108" + sodipodi:nodetypes="ccccccc" /> + <rect + style="fill:#d0ff00;fill-opacity:1;stroke:#000000;stroke-width:0.60000001999999997;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4128" + width="4.0406108" + height="5.0507631" + x="17.055944" + y="23.112909" /> + <rect + style="fill:#d0ff00;fill-opacity:1;stroke:#000000;stroke-width:0.60000001999999997;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4639" + width="4.0406108" + height="8.0812206" + x="23.116861" + y="20.082451" /> + <rect + style="fill:#d0ff00;fill-opacity:1;stroke:#000000;stroke-width:0.60000001999999997;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4641" + width="3.939595" + height="11.010663" + x="29.177776" + y="17.153009" /> + </g> +</svg> diff --git a/data/iconsrc/signal-4.svg b/data/iconsrc/signal-4.svg new file mode 100644 index 0000000..23d9e86 --- /dev/null +++ b/data/iconsrc/signal-4.svg @@ -0,0 +1,96 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="48" + height="32" + id="svg4681" + sodipodi:version="0.32" + inkscape:version="0.46" + version="1.0" + sodipodi:docname="signal-4.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape"> + <defs + id="defs4683"> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 24 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="48 : 24 : 1" + inkscape:persp3d-origin="24 : 16 : 1" + id="perspective4689" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="4.9497475" + inkscape:cx="24.369088" + inkscape:cy="16.183991" + inkscape:current-layer="layer1" + showgrid="true" + inkscape:grid-bbox="true" + inkscape:document-units="px" + inkscape:window-width="933" + inkscape:window-height="681" + inkscape:window-x="703" + inkscape:window-y="296" /> + <metadata + id="metadata4686"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + id="layer1" + inkscape:label="Layer 1" + inkscape:groupmode="layer"> + <path + style="fill:#cccccc;fill-rule:evenodd;stroke:#000000;stroke-width:0.60000001999999997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 11.096044,28.163673 L 14.025487,28.163673 L 14.025487,12.102247 L 22.106707,4.1220421 L 2.105687,4.1220421 L 11.096044,12.102247 L 11.096044,28.163673 z" + id="path4108" + sodipodi:nodetypes="ccccccc" /> + <rect + style="fill:#00ff00;fill-opacity:1;stroke:#000000;stroke-width:0.60000001999999997;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4128" + width="4.0406108" + height="5.0507631" + x="17.055944" + y="23.112909" /> + <rect + style="fill:#00ff00;fill-opacity:1;stroke:#000000;stroke-width:0.60000001999999997;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4639" + width="4.0406108" + height="8.0812206" + x="23.116861" + y="20.082451" /> + <rect + style="fill:#00ff00;fill-opacity:1;stroke:#000000;stroke-width:0.60000001999999997;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4641" + width="3.939595" + height="11.010663" + x="29.177776" + y="17.153009" /> + <rect + style="fill:#00ff00;fill-opacity:1;stroke:#000000;stroke-width:0.60000001999999997;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4657" + width="4.0406098" + height="14.041121" + x="35.036659" + y="14.122552" /> + </g> +</svg> diff --git a/data/iconsrc/signal-5.svg b/data/iconsrc/signal-5.svg new file mode 100644 index 0000000..a5ea349 --- /dev/null +++ b/data/iconsrc/signal-5.svg @@ -0,0 +1,106 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="48" + height="32" + id="svg4681" + sodipodi:version="0.32" + inkscape:version="0.46" + version="1.0" + sodipodi:docname="signal-5.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + inkscape:export-filename="/vhome/samr7/sf/nohands/trunk/data/signal-5.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"> + <defs + id="defs4683"> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 24 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="48 : 24 : 1" + inkscape:persp3d-origin="24 : 16 : 1" + id="perspective4689" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="4.9497475" + inkscape:cx="46" + inkscape:cy="16.183991" + inkscape:current-layer="layer1" + showgrid="true" + inkscape:grid-bbox="true" + inkscape:document-units="px" + inkscape:window-width="762" + inkscape:window-height="681" + inkscape:window-x="874" + inkscape:window-y="296" /> + <metadata + id="metadata4686"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + id="layer1" + inkscape:label="Layer 1" + inkscape:groupmode="layer"> + <path + style="fill:#cccccc;fill-rule:evenodd;stroke:#000000;stroke-width:0.60000001999999997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 11.096044,28.163673 L 14.025487,28.163673 L 14.025487,12.102247 L 22.106707,4.1220421 L 2.105687,4.1220421 L 11.096044,12.102247 L 11.096044,28.163673 z" + id="path4108" + sodipodi:nodetypes="ccccccc" /> + <rect + style="fill:#00ff00;fill-opacity:1;stroke:#000000;stroke-width:0.60000001999999997;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4128" + width="4.0406108" + height="5.0507631" + x="17.055944" + y="23.112909" /> + <rect + style="fill:#00ff00;fill-opacity:1;stroke:#000000;stroke-width:0.60000001999999997;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4639" + width="4.0406108" + height="8.0812206" + x="23.116861" + y="20.082451" /> + <rect + style="fill:#00ff00;fill-opacity:1;stroke:#000000;stroke-width:0.60000001999999997;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4641" + width="3.939595" + height="11.010663" + x="29.177776" + y="17.153009" /> + <rect + style="fill:#00ff00;fill-opacity:1;stroke:#000000;stroke-width:0.60000001999999997;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4657" + width="4.0406098" + height="14.041121" + x="35.036659" + y="14.122552" /> + <rect + style="fill:#00ff00;fill-opacity:1;stroke:#000000;stroke-width:0.60000001999999997;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4659" + width="3.939595" + height="17.071577" + x="41.097576" + y="11.092095" /> + </g> +</svg> diff --git a/data/iconsrc/signal-none.svg b/data/iconsrc/signal-none.svg new file mode 100644 index 0000000..a7dccfc --- /dev/null +++ b/data/iconsrc/signal-none.svg @@ -0,0 +1,72 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="48" + height="32" + id="svg4681" + sodipodi:version="0.32" + inkscape:version="0.46" + version="1.0" + sodipodi:docname="signal-none.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape"> + <defs + id="defs4683"> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 24 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="48 : 24 : 1" + inkscape:persp3d-origin="24 : 16 : 1" + id="perspective4689" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="8" + inkscape:cx="46" + inkscape:cy="16.183991" + inkscape:current-layer="layer1" + showgrid="true" + inkscape:grid-bbox="true" + inkscape:document-units="px" + inkscape:window-width="842" + inkscape:window-height="681" + inkscape:window-x="869" + inkscape:window-y="271" /> + <metadata + id="metadata4686"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + id="layer1" + inkscape:label="Layer 1" + inkscape:groupmode="layer"> + <path + style="fill:#cccccc;fill-rule:evenodd;stroke:#000000;stroke-width:0.60000001999999997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 11.096044,28.163673 L 14.025487,28.163673 L 14.025487,12.102247 L 22.106707,4.1220421 L 2.105687,4.1220421 L 11.096044,12.102247 L 11.096044,28.163673 z" + id="path4108" + sodipodi:nodetypes="ccccccc" /> + <path + style="fill:#ff0000;fill-opacity:1;stroke:#000000;stroke-width:0.58778471;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 13.162466,8.2181458 L 18.81932,13.875 L 13.162466,19.531854 L 15.593146,21.962534 L 21.25,16.30568 L 26.906854,21.962534 L 29.337534,19.531854 L 23.68068,13.875 L 29.337534,8.2181458 L 26.906854,5.7874662 L 21.25,11.44432 L 15.593146,5.7874662 L 13.162466,8.2181458 z" + id="rect5385" /> + </g> +</svg> diff --git a/data/iconsrc/signal-proto.svg b/data/iconsrc/signal-proto.svg new file mode 100644 index 0000000..906b9ae --- /dev/null +++ b/data/iconsrc/signal-proto.svg @@ -0,0 +1,195 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="48px" + height="48px" + id="svg4084" + sodipodi:version="0.32" + inkscape:version="0.46" + sodipodi:docname="signal-proto.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape"> + <defs + id="defs4086"> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 24 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="48 : 24 : 1" + inkscape:persp3d-origin="24 : 16 : 1" + id="perspective4092" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="2.4748737" + inkscape:cx="21.663814" + inkscape:cy="24" + inkscape:current-layer="layer1" + showgrid="true" + inkscape:grid-bbox="true" + inkscape:document-units="px" + showguides="true" + inkscape:guide-bbox="true" + guidetolerance="10" + gridtolerance="10" + objecttolerance="10" + inkscape:window-width="1097" + inkscape:window-height="775" + inkscape:window-x="0" + inkscape:window-y="6"> + <sodipodi:guide + orientation="0,1" + position="20.809142,40.002041" + id="guide4094" /> + <sodipodi:guide + orientation="1,0" + position="14.950258,46.972093" + id="guide4096" /> + <sodipodi:guide + orientation="1,0" + position="12.020815,46.062956" + id="guide4098" /> + <sodipodi:guide + orientation="1,0" + position="3.0304576,28.385287" + id="guide4100" /> + <sodipodi:guide + orientation="1,0" + position="24.041631,25.859905" + id="guide4102" /> + <sodipodi:guide + orientation="0,1" + position="7.0710678,15.96041" + id="guide4104" /> + <sodipodi:guide + orientation="0,1" + position="-6.9700526,32.021836" + id="guide4106" /> + <sodipodi:guide + orientation="1,0" + position="17.980715,25.152798" + id="guide4110" /> + <sodipodi:guide + orientation="1,0" + position="22.021325,25.354829" + id="guide4112" /> + <sodipodi:guide + orientation="0,1" + position="7.9802051,21.011173" + id="guide4114" /> + <sodipodi:guide + orientation="1,0" + position="27.981225,28.385287" + id="guide4116" /> + <sodipodi:guide + orientation="0,1" + position="5.6568543,24.041631" + id="guide4118" /> + <sodipodi:guide + orientation="1,0" + position="30.001531,46.163971" + id="guide4120" /> + <sodipodi:guide + orientation="1,0" + position="34.042141,51.113719" + id="guide4122" /> + <sodipodi:guide + orientation="0,1" + position="8.0812204,26.971073" + id="guide4124" /> + <sodipodi:guide + orientation="1,0" + position="35.961431,50.911688" + id="guide4643" /> + <sodipodi:guide + orientation="1,0" + position="40.002041,50.911688" + id="guide4645" /> + <sodipodi:guide + orientation="1,0" + position="42.022346,51.113719" + id="guide4647" /> + <sodipodi:guide + orientation="1,0" + position="45.961941,51.214734" + id="guide4649" /> + <sodipodi:guide + orientation="0,1" + position="-5.0507627,30.001531" + id="guide4653" /> + <sodipodi:guide + orientation="0,1" + position="0.50507627,33.031988" + id="guide4655" /> + </sodipodi:namedview> + <metadata + id="metadata4089"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + id="layer1" + inkscape:label="Layer 1" + inkscape:groupmode="layer"> + <g + id="g4691"> + <path + sodipodi:nodetypes="ccccccc" + id="path4108" + d="M 12.020815,32.03959 L 14.950258,32.03959 L 14.950258,15.978164 L 23.031478,7.997959 L 3.0304576,7.997959 L 12.020815,15.978164 L 12.020815,32.03959 z" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.6;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" /> + <rect + y="26.988827" + x="17.980715" + height="5.0507631" + width="4.0406108" + id="rect4128" + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.6;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <rect + y="23.958368" + x="24.041632" + height="8.0812206" + width="4.0406108" + id="rect4639" + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.60000002;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <rect + y="21.028927" + x="30.102547" + height="11.010663" + width="3.939595" + id="rect4641" + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.60000002;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <rect + y="17.998468" + x="35.96143" + height="14.041121" + width="4.0406098" + id="rect4657" + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.60000002;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <rect + y="14.968012" + x="42.022346" + height="17.071577" + width="3.939595" + id="rect4659" + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.60000002;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + </g> + </g> +</svg> diff --git a/data/iconsrc/signal.svg b/data/iconsrc/signal.svg new file mode 100644 index 0000000..cce95e3 --- /dev/null +++ b/data/iconsrc/signal.svg @@ -0,0 +1,73 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="48" + height="32" + id="svg4681" + sodipodi:version="0.32" + inkscape:version="0.46" + version="1.0" + sodipodi:docname="signal.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape"> + <defs + id="defs4683"> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 24 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="48 : 24 : 1" + inkscape:persp3d-origin="24 : 16 : 1" + id="perspective4689" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1" + inkscape:cx="23.1875" + inkscape:cy="16.183991" + inkscape:current-layer="layer1" + showgrid="true" + inkscape:grid-bbox="true" + inkscape:document-units="px" + inkscape:window-width="842" + inkscape:window-height="681" + inkscape:window-x="864" + inkscape:window-y="246" /> + <metadata + id="metadata4686"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + id="layer1" + inkscape:label="Layer 1" + inkscape:groupmode="layer"> + <path + style="fill:#cccccc;fill-rule:evenodd;stroke:#000000;stroke-width:0.60000001999999997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 11.096044,28.163673 L 14.025487,28.163673 L 14.025487,12.102247 L 22.106707,4.1220421 L 2.105687,4.1220421 L 11.096044,12.102247 L 11.096044,28.163673 z" + id="path4108" + sodipodi:nodetypes="ccccccc" /> + <path + style="fill:#00b000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.60000002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 19.190864,9.8161794 C 19.190864,9.8161794 25.742641,22.228553 25.992641,21.728553 C 26.242641,21.228553 40.992641,1.4785534 40.992641,1.4785534 L 25.367641,15.978553 L 19.190864,9.8161794 z" + id="path6955" + sodipodi:nodetypes="ccccc" /> + </g> +</svg> diff --git a/data/iconsrc/swapcall.svg b/data/iconsrc/swapcall.svg new file mode 100644 index 0000000..e2b9811 --- /dev/null +++ b/data/iconsrc/swapcall.svg @@ -0,0 +1,85 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="48px" + height="48px" + id="svg3992" + sodipodi:version="0.32" + inkscape:version="0.46" + sodipodi:docname="swapcall.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + inkscape:export-filename="/vhome/samr7/sf/nohands/trunk/data/swapcall.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"> + <defs + id="defs3994"> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 24 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="48 : 24 : 1" + inkscape:persp3d-origin="24 : 16 : 1" + id="perspective4000" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="3.8890872" + inkscape:cx="6.1704756" + inkscape:cy="24.31428" + inkscape:current-layer="layer1" + showgrid="true" + inkscape:grid-bbox="true" + inkscape:document-units="px" + inkscape:window-width="1056" + inkscape:window-height="681" + inkscape:window-x="-1" + inkscape:window-y="10" /> + <metadata + id="metadata3997"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + id="layer1" + inkscape:label="Layer 1" + inkscape:groupmode="layer"> + <path + style="fill:#ffff00;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.61328584;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 45.693356,44.693357 C 30.306642,44.693357 30.306642,33.656896 30.306642,23.999999 C 30.306642,14.343103 30.306642,3.3066427 45.693356,3.3066427 L 45.693356,3.3066427 L 45.693356,14.343103 C 45.693356,14.343103 39.798447,17.102214 39.798446,17.102214 C 38.79931,17.102214 38.79931,30.897784 39.798446,30.897784 C 39.798446,30.897784 45.693356,33.656896 45.693356,33.656896 L 45.693356,44.693357 C 45.693356,44.693357 45.693356,44.693357 45.693356,44.693357 z" + id="path2383" + sodipodi:nodetypes="ccsccccccc" /> + <path + style="fill:#ffff00;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.6132859;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 2.3066431,3.3066427 C 17.693358,3.3066427 17.693358,14.343103 17.693358,23.999998 C 17.693358,33.656895 17.693358,44.693357 2.3066431,44.693357 L 2.3066431,44.693357 L 2.3066431,33.656895 C 2.3066431,33.656895 8.2015525,30.897785 8.2015535,30.897785 C 9.2006904,30.897785 9.2006904,17.102215 8.2015535,17.102215 C 8.2015535,17.102215 2.3066431,14.343103 2.3066431,14.343103 L 2.3066431,3.3066427 C 2.3066431,3.3066427 2.3066431,3.3066427 2.3066431,3.3066427 z" + id="path4047" + sodipodi:nodetypes="ccsccccccc" /> + <path + id="path4061" + style="fill:#0000ff;fill-opacity:1;stroke:#000000;stroke-width:0.25087741;stroke-miterlimit:4;stroke-opacity:1" + d="M 25.78773,18.884736 C 21.88375,17.463803 17.56979,19.457851 16.158353,23.335742 C 16.158353,23.335742 16.158353,23.335742 16.158353,23.335742 L 11.4434,21.619639 C 13.811742,15.112672 21.014621,11.753691 27.521256,14.121912 L 28.799732,10.609329 L 33.726923,19.077476 L 24.509256,22.397315 L 25.827542,18.899223" + sodipodi:nodetypes="ccccccccc" /> + <path + id="path4082" + style="fill:#0000ff;fill-opacity:1;stroke:#000000;stroke-width:0.25087741;stroke-miterlimit:4;stroke-opacity:1" + d="M 21.996146,30.145756 C 25.900126,31.566689 30.214086,29.572641 31.625523,25.69475 C 31.625523,25.69475 31.625523,25.69475 31.625523,25.69475 L 36.340476,27.410853 C 33.972134,33.91782 26.769255,37.276801 20.26262,34.90858 L 18.984144,38.421163 L 14.056953,29.953016 L 23.27462,26.633177 L 21.956334,30.131269" + sodipodi:nodetypes="ccccccccc" /> + </g> +</svg> diff --git a/data/iconsrc/tel-cell.svg b/data/iconsrc/tel-cell.svg new file mode 100644 index 0000000..a6c4129 --- /dev/null +++ b/data/iconsrc/tel-cell.svg @@ -0,0 +1,211 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="48px" + height="48px" + id="svg2430" + sodipodi:version="0.32" + inkscape:version="0.46" + sodipodi:docname="tel-cell.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + inkscape:export-filename="/vhome/samr7/sf/nohands/trunk/data/tel-cell.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"> + <defs + id="defs2432"> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 24 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="48 : 24 : 1" + inkscape:persp3d-origin="24 : 16 : 1" + id="perspective2438" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="7" + inkscape:cx="25.118064" + inkscape:cy="24" + inkscape:current-layer="layer1" + showgrid="true" + inkscape:grid-bbox="true" + inkscape:document-units="px" + inkscape:window-width="977" + inkscape:window-height="674" + inkscape:window-x="0" + inkscape:window-y="6" /> + <metadata + id="metadata2435"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + id="layer1" + inkscape:label="Layer 1" + inkscape:groupmode="layer"> + <g + id="g6777" + transform="matrix(2.7068119,0,0,2.7068119,-28.361669,-9.7777695)"> + <path + id="path6721" + d="M 13.18249,7.3017703 C 12.710607,7.5872624 12.24915,7.8631391 12.020815,8.5139533 C 11.96684,8.8439865 11.823317,9.2187941 12.020815,9.4230906 C 12.059533,11.064068 18.384776,16.090098 21.566757,19.423601 L 22.475894,19.625631 L 23.536554,19.171063 L 26.61752,17.150758 L 26.769042,15.989082 L 26.415489,15.029437 C 24.44366,11.291672 19.316925,5.6301037 17.273609,5.3319728 C 15.873206,5.402986 14.495689,6.5778276 13.18249,7.3017703 z" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + id="path6719" + d="M 13.232999,7.3017702 C 15.660926,10.07189 18.528893,13.229592 22.425387,17.201265 C 22.807587,17.558874 23.025795,18.019099 24.597214,16.948727 C 26.126241,16.057186 25.361346,15.840139 25.354829,15.332483 C 23.787955,12.950557 23.108724,11.137632 16.515994,5.5340033" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + id="path6695" + d="M 12.576399,7.6553237 C 15.330014,10.307924 22.467902,17.878424 22.576909,18.413448 C 22.685916,18.948472 22.526402,19.575124 22.526402,19.575124" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + sodipodi:nodetypes="cc" + id="path6703" + d="M 18.046017,12.617327 C 19.526312,12.225298 20.856897,11.633654 21.768787,10.483751" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + sodipodi:nodetypes="cc" + id="path6705" + d="M 18.602901,13.281073 C 20.083196,12.889044 21.413781,12.2974 22.325671,11.147497" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + sodipodi:nodetypes="cc" + id="path6707" + d="M 19.245758,13.888217 C 20.726053,13.496188 22.056638,12.904544 22.968528,11.754641" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + sodipodi:nodetypes="cc" + id="path6709" + d="M 19.817187,14.49536 C 21.297482,14.103331 22.520924,13.547401 23.432814,12.397498" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + sodipodi:nodetypes="cc" + id="path6711" + d="M 20.406472,15.084645 C 21.886767,14.692616 22.931638,14.208115 23.843528,13.058212" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + sodipodi:nodetypes="cc" + id="path6713" + d="M 21.29933,16.013217 C 22.779625,15.621188 23.681638,15.243829 24.593528,14.093926" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + sodipodi:nodetypes="cc" + id="path6715" + d="M 22.1029,16.816789 C 23.583195,16.42476 24.306637,16.190258 25.218527,15.040355" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.02;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + sodipodi:nodetypes="cczzc" + id="path6723" + d="M 23.464286,18.785714 L 25.964286,17.178571 C 25.979933,17.115389 26.116736,16.88849 25.756128,16.861475 C 25.420628,16.836341 23.835673,17.681082 23.55484,18.174239 C 23.280401,18.656167 23.366429,18.62457 23.464286,18.785714 z" + style="fill:#808080;fill-rule:evenodd;stroke:#000000;stroke-width:0.09999997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + sodipodi:nodetypes="cccccc" + id="path6725" + d="M 17.399878,11.847457 C 18.128534,11.730919 18.727619,11.601424 18.788837,11.418142 L 19.066629,11.569665 C 19.397026,11.129807 19.840557,11.029349 20.304066,10.988827 L 20.228305,10.685781 C 20.607135,10.438863 20.981485,10.190451 21.162696,9.8776592" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + transform="translate(0.2272843,-0.2525381)" + d="M 16.036172,7.2765164 A 0.65659916,0.45456865 0 1 1 14.722974,7.2765164 A 0.65659916,0.45456865 0 1 1 16.036172,7.2765164 z" + sodipodi:ry="0.45456865" + sodipodi:rx="0.65659916" + sodipodi:cy="7.2765164" + sodipodi:cx="15.379573" + id="path6727" + style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-width:0.05;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + sodipodi:type="arc" /> + <path + id="path6729" + d="M 16.312034,10.646572 C 15.29154,9.5267798 13.32449,7.323327 13.32449,7.2999806 C 13.32449,7.2936201 13.389834,7.2516246 13.4697,7.2066566 C 13.549565,7.1616887 13.899014,6.94658 14.246254,6.728638 C 15.272509,6.0845186 15.671039,5.8631767 16.155419,5.6682978 C 16.327663,5.5989996 16.47223,5.5529483 16.47668,5.5659618 C 16.481129,5.5789756 16.719628,5.7917804 17.006676,6.0388617 C 17.68735,6.6247618 18.543013,7.3848831 19.158121,7.9500784 C 19.872309,8.6063139 21.102665,9.807559 21.102665,9.8486131 C 21.102665,9.9211161 20.761264,10.242032 20.468152,10.445053 C 20.138386,10.673462 20.161047,10.637022 20.208048,10.863323 C 20.223125,10.935917 20.218772,10.945398 20.170366,10.945398 C 20.140265,10.945398 20.028043,10.962809 19.920984,10.984089 C 19.659332,11.036098 19.354166,11.188062 19.18428,11.350947 L 19.047881,11.481726 L 18.910247,11.414225 L 18.772615,11.346723 L 18.697421,11.423632 C 18.602698,11.520518 18.345848,11.603897 17.832933,11.704263 C 17.624239,11.7451 17.433137,11.783311 17.408262,11.789176 C 17.374863,11.797051 17.088189,11.498249 16.312034,10.646572 L 16.312034,10.646572 z M 15.969616,7.4361256 C 16.43466,7.2339312 16.387926,6.742493 15.887752,6.5752716 C 15.7471,6.528248 15.45873,6.5327765 15.306114,6.5844057 C 15.236226,6.6080486 15.135377,6.6633875 15.082006,6.7073806 C 14.768429,6.9658577 14.923505,7.3689149 15.382676,7.488846 C 15.522124,7.5252691 15.827722,7.4978192 15.969616,7.4361256 z" + style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.00126269;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + id="path6735" + d="M 18.406635,12.920568 L 18.151383,12.646077 L 18.282259,12.612979 C 18.739882,12.49725 19.510698,12.209537 19.937779,11.995044 C 20.632593,11.646088 21.234785,11.2015 21.61034,10.760222 C 21.699193,10.65582 21.778955,10.569543 21.78759,10.568495 C 21.811962,10.565539 22.250707,11.06755 22.259653,11.108629 C 22.2718,11.164404 21.650946,11.774589 21.380457,11.972716 C 20.771878,12.418488 20.094608,12.749919 19.208629,13.03553 C 18.613644,13.227334 18.703937,13.240276 18.406636,12.920568 L 18.406635,12.920568 z" + style="fill:#808080;fill-opacity:1;stroke:#000000;stroke-width:0.00126269;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + id="path6737" + d="M 19.018414,13.568396 C 18.883889,13.42976 18.779259,13.310893 18.785905,13.304247 C 18.792552,13.297601 18.950045,13.246369 19.135891,13.190397 C 19.769571,12.999552 20.458668,12.703586 20.93787,12.416451 C 21.378271,12.152565 21.670641,11.923752 22.031391,11.560644 C 22.215786,11.375044 22.370967,11.22319 22.376239,11.22319 C 22.390283,11.22319 22.831051,11.750994 22.840973,11.779693 C 22.852798,11.813896 22.602196,12.08722 22.370767,12.292528 C 21.62871,12.950835 20.72128,13.405212 19.393655,13.783259 L 19.263008,13.820461 L 19.018414,13.568396 z" + style="fill:#808080;fill-opacity:1;stroke:#000000;stroke-width:0.00126269;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + id="path6739" + d="M 19.591994,14.177928 L 19.35664,13.925433 L 19.423173,13.900138 C 19.459768,13.886224 19.499554,13.874841 19.511587,13.874841 C 19.563985,13.874841 20.357225,13.606006 20.610215,13.502507 C 21.488712,13.143113 22.131757,12.726174 22.700021,12.147513 C 22.835473,12.009583 22.950153,11.901442 22.954865,11.9072 C 23.201249,12.208308 23.326376,12.391255 23.313559,12.431639 C 23.290728,12.503572 22.797525,12.991542 22.561798,13.175422 C 21.931689,13.666945 21.112991,14.058153 20.117766,14.343284 C 19.985815,14.381087 19.866491,14.416159 19.852601,14.42122 C 19.838711,14.426282 19.721438,14.316799 19.591993,14.177928 L 19.591994,14.177928 z" + style="fill:#808080;fill-opacity:1;stroke:#000000;stroke-width:0.00126269;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + id="path6741" + d="M 20.160109,14.770901 L 19.937285,14.531599 L 20.003916,14.506265 C 20.040563,14.492332 20.080084,14.480932 20.091742,14.480932 C 20.1034,14.480932 20.275964,14.42862 20.475219,14.364682 C 21.709279,13.968692 22.648606,13.39772 23.3045,12.644896 L 23.418985,12.513491 L 23.601695,12.765594 C 23.81751,13.063373 23.832834,13.001237 23.442598,13.410693 C 23.064451,13.807463 22.559696,14.178976 22.045786,14.438783 C 21.690656,14.618319 20.556375,15.014089 20.406574,15.010733 C 20.39357,15.010442 20.282661,14.902517 20.160108,14.7709 L 20.160109,14.770901 z" + style="fill:#808080;fill-opacity:1;stroke:#000000;stroke-width:0.00126269;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + sodipodi:nodetypes="cc" + id="path6743" + d="M 19.041375,11.54441 L 21.869803,14.625376" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + id="path6745" + d="M 20.304066,10.988827 L 22.98097,13.867762" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + d="M 24.496199,16.330009 A 0.65659916,0.49244937 0 1 1 23.183,16.330009 A 0.65659916,0.49244937 0 1 1 24.496199,16.330009 z" + sodipodi:ry="0.49244937" + sodipodi:rx="0.65659916" + sodipodi:cy="16.330009" + sodipodi:cx="23.8396" + id="path6751" + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + sodipodi:type="arc" /> + <path + d="M 24.092138,16.330009 A 0.18940361,0.16414979 0 1 1 23.713331,16.330009 A 0.18940361,0.16414979 0 1 1 24.092138,16.330009 z" + sodipodi:ry="0.16414979" + sodipodi:rx="0.18940361" + sodipodi:cy="16.330009" + sodipodi:cx="23.902735" + id="path6753" + style="fill:#cccccc;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + sodipodi:type="arc" /> + <path + id="path6757" + d="M 20.893118,15.535279 C 20.54563,15.171526 20.507291,15.123051 20.555654,15.108594 C 21.256845,14.898976 21.80128,14.700461 22.143063,14.529783 C 22.641485,14.280883 23.14848,13.900641 23.562929,13.464895 L 23.872982,13.138907 L 24.100607,13.487934 C 24.225802,13.679898 24.365024,13.896894 24.409992,13.970146 L 24.49175,14.103332 L 24.429599,14.184803 C 24.040356,14.695037 23.358514,15.207216 22.696045,15.486997 C 22.343346,15.635951 21.402255,15.945653 21.302324,15.945653 C 21.292874,15.945653 21.108732,15.760985 20.893118,15.535279 L 20.893118,15.535279 z" + style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.00252538;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + id="path6759" + d="M 21.897451,16.570685 C 21.786558,16.456096 21.629241,16.292502 21.547857,16.207144 L 21.399887,16.051946 L 21.548008,16.011311 C 21.887481,15.918183 22.54822,15.690215 22.805366,15.577498 C 23.444042,15.297543 24.0068,14.875665 24.482194,14.320444 C 24.528041,14.266899 24.569236,14.227125 24.573741,14.232056 C 24.578245,14.236986 24.706613,14.434983 24.859002,14.672048 L 25.136072,15.103076 L 25.061533,15.189752 C 24.912744,15.362765 24.497018,15.771881 24.40489,15.835953 L 24.310477,15.901615 L 24.177606,15.844254 C 24.075318,15.800096 23.996904,15.786854 23.836937,15.786724 C 23.650805,15.786572 23.61131,15.795507 23.45813,15.872417 C 23.221539,15.991208 23.135597,16.11526 23.135597,16.337969 C 23.135597,16.459057 23.126263,16.501366 23.097716,16.509678 C 23.076882,16.515745 22.860217,16.57883 22.61624,16.649869 C 22.372263,16.720907 22.156091,16.779029 22.13586,16.779029 C 22.115629,16.779029 22.008344,16.685275 21.897451,16.570685 L 21.897451,16.570685 z" + style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.00252538;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + id="path6761" + d="M 23.03306,17.534423 C 22.962776,17.525431 22.860498,17.489212 22.805776,17.453937 C 22.650958,17.354135 22.146647,16.834095 22.190066,16.819022 C 22.210082,16.812072 22.368512,16.766443 22.542132,16.717623 C 22.715752,16.668803 22.926794,16.607485 23.011115,16.581361 L 23.164425,16.533862 L 23.246574,16.63171 C 23.291754,16.685525 23.387546,16.760156 23.459443,16.797555 C 23.573993,16.857141 23.619846,16.865669 23.830077,16.866486 C 24.043058,16.867314 24.08623,16.859442 24.214682,16.796365 C 24.557674,16.627935 24.658134,16.268507 24.431555,16.020434 L 24.354351,15.935906 L 24.45208,15.858885 C 24.615585,15.730027 24.813266,15.538919 24.99149,15.337411 L 25.160911,15.145855 L 25.225197,15.249022 C 25.260554,15.305764 25.297613,15.391964 25.307551,15.440577 C 25.317489,15.489191 25.356623,15.602833 25.394516,15.693115 C 25.490169,15.921013 25.502186,15.983494 25.471954,16.095769 C 25.417439,16.298221 25.160852,16.521655 24.499303,16.942745 C 23.740555,17.425704 23.365683,17.576978 23.03306,17.534423 L 23.03306,17.534423 z" + style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.00252538;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + id="path6763" + d="M 20.543483,11.153648 C 20.392072,10.995169 20.351185,10.93502 20.329017,10.838147 L 20.301628,10.718457 L 20.58219,10.519993 C 20.7365,10.410838 20.940702,10.23877 21.035973,10.137619 L 21.209192,9.9537091 L 21.450914,10.195431 C 21.657204,10.401721 21.68919,10.444567 21.669128,10.487737 C 21.599836,10.636849 20.847547,11.348825 20.758775,11.349306 C 20.743256,11.349391 20.646375,11.261345 20.543483,11.153649 L 20.543483,11.153648 z" + style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.00252538;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + id="path6765" + d="M 19.36497,11.804742 C 19.163798,11.586603 19.157434,11.576016 19.193961,11.520268 C 19.298465,11.360775 19.643714,11.169248 19.9327,11.110452 C 20.276962,11.040409 20.259411,11.035739 20.467142,11.252658 L 20.652367,11.446076 L 20.372915,11.611957 C 20.143742,11.747991 19.608808,12.031312 19.581136,12.031312 C 19.577167,12.031312 19.479892,11.929355 19.36497,11.804741 L 19.36497,11.804742 z" + style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.00252538;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + id="path6773" + d="M 22.643337,19.292186 C 22.657138,19.181731 22.667746,18.947681 22.666912,18.772074 C 22.664779,18.323127 22.649044,18.295518 21.878375,17.388434 C 20.368228,15.610978 16.476224,11.463173 13.742227,8.7175369 C 13.187316,8.1602634 12.733298,7.6981251 12.733298,7.6905616 C 12.733298,7.6682244 13.155113,7.3884341 13.188789,7.3884341 C 13.205751,7.3884341 13.628507,7.8504173 14.128249,8.4150634 C 15.185541,9.6096723 16.998696,11.605854 17.818408,12.47772 C 18.132361,12.811648 18.61497,13.325934 18.890873,13.620577 C 19.166774,13.91522 19.570836,14.341113 19.788787,14.567006 C 22.67958,17.563146 22.695646,17.578957 22.910077,17.638526 C 23.171147,17.711053 23.513304,17.643974 23.91147,17.442208 C 24.280116,17.2554 25.185169,16.652941 25.364184,16.47519 C 25.669006,16.172519 25.677263,16.083604 25.456816,15.47772 C 25.28495,15.005355 23.85956,12.8354 23.083821,11.865168 C 21.763342,10.213617 19.649281,8.1221587 17.132748,5.9777198 C 16.856134,5.7420055 16.62899,5.5382341 16.627984,5.5248948 C 16.625249,5.4886223 16.994974,5.4190123 17.207657,5.4157566 C 17.86219,5.4057376 19.185784,6.3230101 20.797224,7.9033851 C 22.334816,9.4113359 23.708719,11.034441 24.956436,12.817006 C 25.789275,14.00685 26.294538,14.880689 26.534701,15.546572 L 26.701224,16.008281 L 26.627882,16.561545 C 26.587545,16.865841 26.550565,17.117387 26.545705,17.120537 C 26.540847,17.123687 25.85585,17.572242 25.023492,18.117326 C 23.756053,18.947329 23.437645,19.139641 23.06418,19.300701 L 22.618245,19.493013 L 22.643337,19.292186 z M 24.744365,18.044891 C 25.4356,17.600586 26.012963,17.21889 26.027394,17.196677 C 26.078294,17.118334 26.054964,16.935434 25.986126,16.873136 C 25.892346,16.788265 25.640529,16.793133 25.396224,16.884539 C 24.897802,17.071024 24.119583,17.530548 23.759943,17.850736 C 23.578736,18.012067 23.363629,18.344414 23.324185,18.524001 C 23.298914,18.639064 23.381104,18.85272 23.45064,18.85272 C 23.470955,18.85272 24.053131,18.489197 24.744366,18.044892 L 24.744365,18.044891 z" + style="fill:#cccccc;fill-opacity:1;stroke:#000000;stroke-width:0.00357143;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + id="path6775" + d="M 21.956508,19.44645 L 21.626147,19.369825 L 20.992223,18.742196 C 20.283972,18.040978 19.491605,17.291321 18.090104,15.996504 C 16.091873,14.150381 15.503282,13.591392 14.481321,12.56921 C 12.908053,10.995604 12.285319,10.204891 12.110342,9.5586769 C 12.082329,9.4552226 12.038997,9.3189684 12.014048,9.2558912 C 11.976273,9.1603884 11.978583,9.0898612 12.027859,8.8342512 C 12.103893,8.4398505 12.221693,8.1859623 12.433942,7.9590512 L 12.603867,7.7773873 L 13.49343,8.6632676 C 16.632223,11.789061 21.751453,17.298446 22.38248,18.229784 C 22.544674,18.469169 22.575162,18.669376 22.521991,19.145955 C 22.500711,19.336699 22.483298,19.501431 22.483298,19.512027 C 22.483298,19.547736 22.288805,19.523524 21.956508,19.44645 z" + style="fill:#cccccc;fill-opacity:1;stroke:#000000;stroke-width:0.00357143;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + </g> + </g> +</svg> diff --git a/data/message.png b/data/message.png Binary files differnew file mode 100644 index 0000000..29867c5 --- /dev/null +++ b/data/message.png diff --git a/data/mute.png b/data/mute.png Binary files differnew file mode 100644 index 0000000..472b1ef --- /dev/null +++ b/data/mute.png diff --git a/data/noag.png b/data/noag.png Binary files differnew file mode 100644 index 0000000..1fd8cd4 --- /dev/null +++ b/data/noag.png diff --git a/data/nobt.png b/data/nobt.png Binary files differnew file mode 100644 index 0000000..449097a --- /dev/null +++ b/data/nobt.png diff --git a/data/pickup.png b/data/pickup.png Binary files differnew file mode 100644 index 0000000..156c35f --- /dev/null +++ b/data/pickup.png diff --git a/data/redial.png b/data/redial.png Binary files differnew file mode 100644 index 0000000..20b893d --- /dev/null +++ b/data/redial.png diff --git a/data/signal-0.png b/data/signal-0.png Binary files differnew file mode 100644 index 0000000..40295b6 --- /dev/null +++ b/data/signal-0.png diff --git a/data/signal-1.png b/data/signal-1.png Binary files differnew file mode 100644 index 0000000..1f74477 --- /dev/null +++ b/data/signal-1.png diff --git a/data/signal-2.png b/data/signal-2.png Binary files differnew file mode 100644 index 0000000..046bd30 --- /dev/null +++ b/data/signal-2.png diff --git a/data/signal-3.png b/data/signal-3.png Binary files differnew file mode 100644 index 0000000..485ea0c --- /dev/null +++ b/data/signal-3.png diff --git a/data/signal-4.png b/data/signal-4.png Binary files differnew file mode 100644 index 0000000..564dd63 --- /dev/null +++ b/data/signal-4.png diff --git a/data/signal-5.png b/data/signal-5.png Binary files differnew file mode 100644 index 0000000..6491538 --- /dev/null +++ b/data/signal-5.png diff --git a/data/signal-none.png b/data/signal-none.png Binary files differnew file mode 100644 index 0000000..1d56887 --- /dev/null +++ b/data/signal-none.png diff --git a/data/signal.png b/data/signal.png Binary files differnew file mode 100644 index 0000000..441615c --- /dev/null +++ b/data/signal.png diff --git a/data/swapcall.png b/data/swapcall.png Binary files differnew file mode 100644 index 0000000..e3e9fd0 --- /dev/null +++ b/data/swapcall.png diff --git a/data/tel-cell.png b/data/tel-cell.png Binary files differnew file mode 100644 index 0000000..b8902cb --- /dev/null +++ b/data/tel-cell.png diff --git a/hfpd/objects.cpp b/hfpd/objects.cpp index 4c9733d..30c98a7 100644 --- a/hfpd/objects.cpp +++ b/hfpd/objects.cpp @@ -1814,7 +1814,7 @@ done: bool HandsFree:: GetVersion(DBusMessage *msgp, dbus_uint32_t &val) { - val = 2; + val = 3; return true; } |