Merge lp:~francesco-marella/specto/code-to-glade into lp:specto

Proposed by Francesco Marella
Status: Needs review
Proposed branch: lp:~francesco-marella/specto/code-to-glade
Merge into: lp:specto
Diff against target: 1731 lines (+626/-427)
7 files modified
data/uis/about.ui (+59/-0)
data/uis/import_export.ui (+117/-24)
data/uis/notifier.ui (+399/-186)
spectlib/about.py (+8/-25)
spectlib/export_watch.py (+15/-59)
spectlib/import_watch.py (+15/-54)
spectlib/notifier.py (+13/-79)
To merge this branch: bzr merge lp:~francesco-marella/specto/code-to-glade
Reviewer Review Type Date Requested Status
Jeff Fortin Tam Needs Fixing
Review via email: mp+60883@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Jeff Fortin Tam (kiddo) wrote :

This is quite interesting! A couple of things though:

- mousing over the "Add" submenu makes two menus appear (the toolbar's popup menu shows up). Wtf?
- how do we actually edit the contents now? What's the difference in the glade editor?
- maybe you want to take a look at lp:~kiddo/specto/pygi too
- I guess this simplifies the code a lot, however I'd like someone else to review this too
- it looks different than the current UI... the patch below makes it ressemble the main branch more, but it still has different column headers, the checkboxes are not centered, etc.

=== modified file 'data/uis/notifier.ui'
--- data/uis/notifier.ui 2011-05-13 09:56:54 +0000
+++ data/uis/notifier.ui 2011-05-15 22:15:31 +0000
@@ -1,7 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <interface>
   <requires lib="gtk+" version="2.18"/>
- <!-- interface-naming-policy toplevel-contextual -->
   <object class="GtkAccelGroup" id="accelgroup1"/>
   <object class="GtkWindow" id="error_dialog">
     <property name="can_focus">False</property>
@@ -57,8 +56,6 @@
               <object class="GtkScrolledWindow" id="scrolledwindow1">
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
- <property name="hscrollbar_policy">automatic</property>
- <property name="vscrollbar_policy">automatic</property>
                 <child>
                   <object class="GtkTextView" id="error_message">
                     <property name="height_request">200</property>
@@ -612,18 +609,19 @@
             <property name="visible">True</property>
             <property name="can_focus">True</property>
             <property name="hscrollbar_policy">never</property>
- <property name="vscrollbar_policy">automatic</property>
             <property name="shadow_type">in</property>
             <child>
               <object class="GtkTreeView" id="treeview">
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
                 <property name="model">liststore</property>
- <property name="headers_clickable">False</property>
+ <property name="rules_hint">True</property>
                 <property name="search_column">0</property>
- <property name="enable_grid_lines">both</property>
                 <signal name="cursor-changed" handler="show_watch_info" swapped="no"/>
                 <signal name="row-activated" handler="open_watch_callback" swapped="no"/>
+ <child internal-child="selection">
+ <object class="GtkTreeSelection" id="treeview-selection1"/>
+ </child>
                 <child>
                   <object class="GtkTreeViewColumn" id="select_treeviewcolumn">
                     <property name="title" translatable="yes">Select</property>

review: Needs Fixing
168. By Francesco Marella

some fixes, but the checkboxes are still not centered

thanks to Jeff for pointing out these regressions.

169. By Francesco Marella

vertical scrollbar -> never

Revision history for this message
Francesco Marella (francesco-marella) wrote :
Download full text (3.4 KiB)

Hi Jeff, thanks for your review. Some comments inline.

> This is quite interesting! A couple of things though:
>
> - mousing over the "Add" submenu makes two menus appear (the toolbar's popup
> menu shows up). Wtf?
Fixed.
> - how do we actually edit the contents now? What's the difference in the glade
> editor?
We still edit the contents like before. We create in glade some more widgets (eg. TreeViewColumns and CellRenderers) and then we get these objects via GtkBuilder.

> - maybe you want to take a look at lp:~kiddo/specto/pygi too
Yeah, I've tried to start it but crashes. (pygi + Gtk+ 3.0)
> - I guess this simplifies the code a lot, however I'd like someone else to
> review this too
> - it looks different than the current UI... the patch below makes it ressemble
> the main branch more, but it still has different column headers, the
> checkboxes are not centered, etc.
Thanks for the patch. I've tried to align the checkboxes with no luck in glade, I wonder if it's a bug. I'll ping you again when this issue will be fixed.
>
>
>
> === modified file 'data/uis/notifier.ui'
> --- data/uis/notifier.ui 2011-05-13 09:56:54 +0000
> +++ data/uis/notifier.ui 2011-05-15 22:15:31 +0000
> @@ -1,7 +1,6 @@
> <?xml version="1.0" encoding="UTF-8"?>
> <interface>
> <requires lib="gtk+" version="2.18"/>
> - <!-- interface-naming-policy toplevel-contextual -->
> <object class="GtkAccelGroup" id="accelgroup1"/>
> <object class="GtkWindow" id="error_dialog">
> <property name="can_focus">False</property>
> @@ -57,8 +56,6 @@
> <object class="GtkScrolledWindow" id="scrolledwindow1">
> <property name="visible">True</property>
> <property name="can_focus">True</property>
> - <property name="hscrollbar_policy">automatic</property>
> - <property name="vscrollbar_policy">automatic</property>
> <child>
> <object class="GtkTextView" id="error_message">
> <property name="height_request">200</property>
> @@ -612,18 +609,19 @@
> <property name="visible">True</property>
> <property name="can_focus">True</property>
> <property name="hscrollbar_policy">never</property>
> - <property name="vscrollbar_policy">automatic</property>
> <property name="shadow_type">in</property>
> <child>
> <object class="GtkTreeView" id="treeview">
> <property name="visible">True</property>
> <property name="can_focus">True</property>
> <property name="model">liststore</property>
> - <property name="headers_clickable">False</property>
> + <property name="rules_hint">True</property>
> <property name="search_column">0</property>
> - <property name="enable_grid_lines">both</property>
> <signal name="cursor-changed" handler="show_watch_info"
> swapped="no"/>
> <signal name="row-activated" handler="open_watch_callback"
> swapped="no"/>
> + <child internal-child="selection">
> + ...

Read more...

Unmerged revisions

169. By Francesco Marella

vertical scrollbar -> never

168. By Francesco Marella

some fixes, but the checkboxes are still not centered

thanks to Jeff for pointing out these regressions.

167. By Francesco Marella

Move GUI code to Glade files (treeview related code mostly)

Glade (v. 3.8) it's a great tool for GUI creation and improved so much (read as no frequent crashes).
The process of migrate Specto to PyGI and GTK+ 3.0 will be easier and painless (hopefully).

GTK+ >= 2.18 is required.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== added file 'data/uis/about.ui'
--- data/uis/about.ui 1970-01-01 00:00:00 +0000
+++ data/uis/about.ui 2011-05-24 17:11:46 +0000
@@ -0,0 +1,59 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<interface>
3 <requires lib="gtk+" version="2.18"/>
4 <!-- interface-naming-policy project-wide -->
5 <object class="GtkAboutDialog" id="aboutdialog1">
6 <property name="can_focus">False</property>
7 <property name="border_width">5</property>
8 <property name="type_hint">dialog</property>
9 <property name="program_name">Specto</property>
10 <property name="copyright" translatable="yes">Copyright © Jean-François Fortin Tam &amp; Wout Clymans</property>
11 <property name="comments" translatable="yes">Be notified of everything</property>
12 <property name="website">http://specto.sourceforge.net</property>
13 <property name="website_label" translatable="yes">Specto's Website</property>
14 <property name="authors">Project and copyright owners
15----------------------------
16Jean-François "Kiddo" Fortin Tam
17Wout Clymans
18
19Developers
20-----------
21Jean-François "Kiddo" Fortin Tam
22Wout Clymans
23Francesco Marella &lt;fmarl@paranoici.org&gt;
24
25Past contributors
26-----------------
27Christopher Halse Rogers
28Pascal Potvin
29Giulio "Dullboy" Lotti
30Thomas McColgan
31Conor "Majikstreet" Callahan
32"Trygvebw"
33Adrian "Hikaru79" Petrescu</property>
34 <property name="translator_credits" translatable="yes">translator-credits</property>
35 <child internal-child="vbox">
36 <object class="GtkVBox" id="dialog-vbox1">
37 <property name="visible">True</property>
38 <property name="can_focus">False</property>
39 <property name="spacing">2</property>
40 <child internal-child="action_area">
41 <object class="GtkHButtonBox" id="dialog-action_area1">
42 <property name="visible">True</property>
43 <property name="can_focus">False</property>
44 <property name="layout_style">end</property>
45 </object>
46 <packing>
47 <property name="expand">False</property>
48 <property name="fill">True</property>
49 <property name="pack_type">end</property>
50 <property name="position">0</property>
51 </packing>
52 </child>
53 <child>
54 <placeholder/>
55 </child>
56 </object>
57 </child>
58 </object>
59</interface>
060
=== modified file 'data/uis/import_export.ui'
--- data/uis/import_export.ui 2010-10-28 17:50:39 +0000
+++ data/uis/import_export.ui 2011-05-24 17:11:46 +0000
@@ -1,9 +1,15 @@
1<?xml version="1.0" encoding="UTF-8"?>1<?xml version="1.0" encoding="UTF-8"?>
2<interface>2<interface>
3 <requires lib="gtk+" version="2.16"/>3 <requires lib="gtk+" version="2.18"/>
4 <!-- interface-naming-policy toplevel-contextual -->4 <!-- interface-naming-policy toplevel-contextual -->
5 <object class="GtkAdjustment" id="adjustment1">
6 <property name="upper">100</property>
7 <property name="step_increment">1</property>
8 <property name="page_increment">10</property>
9 </object>
5 <object class="GtkDialog" id="import_export">10 <object class="GtkDialog" id="import_export">
6 <property name="visible">True</property>11 <property name="visible">True</property>
12 <property name="can_focus">False</property>
7 <property name="border_width">12</property>13 <property name="border_width">12</property>
8 <property name="title">dialog1</property>14 <property name="title">dialog1</property>
9 <property name="default_height">150</property>15 <property name="default_height">150</property>
@@ -11,29 +17,12 @@
11 <child internal-child="vbox">17 <child internal-child="vbox">
12 <object class="GtkVBox" id="dialog-vbox1">18 <object class="GtkVBox" id="dialog-vbox1">
13 <property name="visible">True</property>19 <property name="visible">True</property>
20 <property name="can_focus">False</property>
14 <property name="spacing">12</property>21 <property name="spacing">12</property>
15 <child>
16 <object class="GtkScrolledWindow" id="scrolledwindow1">
17 <property name="height_request">250</property>
18 <property name="visible">True</property>
19 <property name="can_focus">True</property>
20 <property name="hscrollbar_policy">automatic</property>
21 <property name="vscrollbar_policy">automatic</property>
22 <property name="shadow_type">in</property>
23 <child>
24 <object class="GtkTreeView" id="treeview">
25 <property name="visible">True</property>
26 <property name="can_focus">True</property>
27 </object>
28 </child>
29 </object>
30 <packing>
31 <property name="position">1</property>
32 </packing>
33 </child>
34 <child internal-child="action_area">22 <child internal-child="action_area">
35 <object class="GtkHButtonBox" id="dialog-action_area1">23 <object class="GtkHButtonBox" id="dialog-action_area1">
36 <property name="visible">True</property>24 <property name="visible">True</property>
25 <property name="can_focus">False</property>
37 <property name="layout_style">end</property>26 <property name="layout_style">end</property>
38 <child>27 <child>
39 <object class="GtkButton" id="button_select_all">28 <object class="GtkButton" id="button_select_all">
@@ -42,8 +31,9 @@
42 <property name="can_focus">True</property>31 <property name="can_focus">True</property>
43 <property name="can_default">True</property>32 <property name="can_default">True</property>
44 <property name="receives_default">False</property>33 <property name="receives_default">False</property>
34 <property name="use_action_appearance">False</property>
45 <property name="use_underline">True</property>35 <property name="use_underline">True</property>
46 <signal name="clicked" handler="on_button_select_all_clicked"/>36 <signal name="clicked" handler="select_all" swapped="no"/>
47 </object>37 </object>
48 <packing>38 <packing>
49 <property name="expand">False</property>39 <property name="expand">False</property>
@@ -58,8 +48,9 @@
58 <property name="can_focus">True</property>48 <property name="can_focus">True</property>
59 <property name="can_default">True</property>49 <property name="can_default">True</property>
60 <property name="receives_default">False</property>50 <property name="receives_default">False</property>
51 <property name="use_action_appearance">False</property>
61 <property name="use_underline">True</property>52 <property name="use_underline">True</property>
62 <signal name="clicked" handler="on_button_deselect_all_clicked"/>53 <signal name="clicked" handler="deselect_all" swapped="no"/>
63 </object>54 </object>
64 <packing>55 <packing>
65 <property name="expand">False</property>56 <property name="expand">False</property>
@@ -74,8 +65,9 @@
74 <property name="can_focus">True</property>65 <property name="can_focus">True</property>
75 <property name="can_default">True</property>66 <property name="can_default">True</property>
76 <property name="receives_default">False</property>67 <property name="receives_default">False</property>
68 <property name="use_action_appearance">False</property>
77 <property name="use_stock">True</property>69 <property name="use_stock">True</property>
78 <signal name="clicked" handler="on_button_close_clicked"/>70 <signal name="clicked" handler="delete_event" swapped="no"/>
79 </object>71 </object>
80 <packing>72 <packing>
81 <property name="expand">False</property>73 <property name="expand">False</property>
@@ -89,8 +81,9 @@
89 <property name="visible">True</property>81 <property name="visible">True</property>
90 <property name="can_focus">False</property>82 <property name="can_focus">False</property>
91 <property name="receives_default">False</property>83 <property name="receives_default">False</property>
84 <property name="use_action_appearance">False</property>
92 <property name="use_stock">True</property>85 <property name="use_stock">True</property>
93 <signal name="clicked" handler="on_button_action_clicked"/>86 <signal name="clicked" handler="do_action" swapped="no"/>
94 </object>87 </object>
95 <packing>88 <packing>
96 <property name="expand">False</property>89 <property name="expand">False</property>
@@ -101,10 +94,96 @@
101 </object>94 </object>
102 <packing>95 <packing>
103 <property name="expand">False</property>96 <property name="expand">False</property>
97 <property name="fill">True</property>
104 <property name="pack_type">end</property>98 <property name="pack_type">end</property>
105 <property name="position">0</property>99 <property name="position">0</property>
106 </packing>100 </packing>
107 </child>101 </child>
102 <child>
103 <object class="GtkScrolledWindow" id="scrolledwindow1">
104 <property name="height_request">250</property>
105 <property name="visible">True</property>
106 <property name="can_focus">True</property>
107 <property name="hscrollbar_policy">automatic</property>
108 <property name="vscrollbar_policy">automatic</property>
109 <property name="shadow_type">in</property>
110 <child>
111 <object class="GtkTreeView" id="treeview">
112 <property name="visible">True</property>
113 <property name="can_focus">True</property>
114 <property name="model">liststore1</property>
115 <property name="search_column">3</property>
116 <child>
117 <object class="GtkTreeViewColumn" id="select_treeviewcolumn">
118 <property name="title" translatable="yes">Select</property>
119 <property name="clickable">True</property>
120 <child>
121 <object class="GtkCellRendererToggle" id="cellrenderertoggle1">
122 <signal name="toggled" handler="check_clicked" swapped="no"/>
123 </object>
124 <attributes>
125 <attribute name="active">0</attribute>
126 </attributes>
127 </child>
128 </object>
129 </child>
130 <child>
131 <object class="GtkTreeViewColumn" id="type_treeviewcolumn">
132 <property name="title" translatable="yes">Type</property>
133 <child>
134 <object class="GtkCellRendererPixbuf" id="cellrendererpixbuf1"/>
135 <attributes>
136 <attribute name="pixbuf">1</attribute>
137 </attributes>
138 </child>
139 </object>
140 </child>
141 <child>
142 <object class="GtkTreeViewColumn" id="name_treeviewcolumn">
143 <property name="resizable">True</property>
144 <property name="title" translatable="yes">Name</property>
145 <property name="expand">True</property>
146 <child>
147 <object class="GtkCellRendererText" id="cellrenderertext1"/>
148 <attributes>
149 <attribute name="text">2</attribute>
150 </attributes>
151 </child>
152 </object>
153 </child>
154 <child>
155 <object class="GtkTreeViewColumn" id="_ID_treeviewcolumn">
156 <property name="visible">False</property>
157 <property name="title" translatable="yes">ID</property>
158 <child>
159 <object class="GtkCellRendererText" id="cellrenderertext3"/>
160 <attributes>
161 <attribute name="text">3</attribute>
162 </attributes>
163 </child>
164 </object>
165 </child>
166 <child>
167 <object class="GtkTreeViewColumn" id="_TYPE_treeviewcolumn">
168 <property name="visible">False</property>
169 <property name="title" translatable="yes">TYPE</property>
170 <child>
171 <object class="GtkCellRendererText" id="cellrenderertext2"/>
172 <attributes>
173 <attribute name="text">4</attribute>
174 </attributes>
175 </child>
176 </object>
177 </child>
178 </object>
179 </child>
180 </object>
181 <packing>
182 <property name="expand">True</property>
183 <property name="fill">True</property>
184 <property name="position">1</property>
185 </packing>
186 </child>
108 </object>187 </object>
109 </child>188 </child>
110 <action-widgets>189 <action-widgets>
@@ -114,4 +193,18 @@
114 <action-widget response="0">button_action</action-widget>193 <action-widget response="0">button_action</action-widget>
115 </action-widgets>194 </action-widgets>
116 </object>195 </object>
196 <object class="GtkListStore" id="liststore1">
197 <columns>
198 <!-- column-name gboolean1 -->
199 <column type="gboolean"/>
200 <!-- column-name GdkPixbuf1 -->
201 <column type="GdkPixbuf"/>
202 <!-- column-name gchararray2 -->
203 <column type="gchararray"/>
204 <!-- column-name gint1 -->
205 <column type="gint"/>
206 <!-- column-name gchararray3 -->
207 <column type="gchararray"/>
208 </columns>
209 </object>
117</interface>210</interface>
118211
=== modified file 'data/uis/notifier.ui'
--- data/uis/notifier.ui 2011-01-10 18:26:51 +0000
+++ data/uis/notifier.ui 2011-05-24 17:11:46 +0000
@@ -1,70 +1,286 @@
1<?xml version="1.0" encoding="UTF-8"?>1<?xml version="1.0" encoding="UTF-8"?>
2<interface>2<interface>
3 <requires lib="gtk+" version="2.16"/>3 <requires lib="gtk+" version="2.18"/>
4 <!-- interface-naming-policy toplevel-contextual -->4 <!-- interface-naming-policy toplevel-contextual -->
5 <object class="GtkAccelGroup" id="accelgroup1"/>
6 <object class="GtkWindow" id="error_dialog">
7 <property name="can_focus">False</property>
8 <property name="title" translatable="yes">Error</property>
9 <property name="resizable">False</property>
10 <property name="window_position">center-on-parent</property>
11 <child>
12 <object class="GtkVBox" id="vbox1">
13 <property name="visible">True</property>
14 <property name="can_focus">False</property>
15 <property name="border_width">6</property>
16 <child>
17 <object class="GtkHBox" id="hbox4">
18 <property name="visible">True</property>
19 <property name="can_focus">False</property>
20 <child>
21 <object class="GtkImage" id="image">
22 <property name="visible">True</property>
23 <property name="can_focus">False</property>
24 <property name="stock">gtk-missing-image</property>
25 </object>
26 <packing>
27 <property name="expand">True</property>
28 <property name="fill">True</property>
29 <property name="position">0</property>
30 </packing>
31 </child>
32 <child>
33 <object class="GtkLabel" id="label4">
34 <property name="visible">True</property>
35 <property name="can_focus">False</property>
36 </object>
37 <packing>
38 <property name="expand">True</property>
39 <property name="fill">True</property>
40 <property name="padding">6</property>
41 <property name="position">1</property>
42 </packing>
43 </child>
44 </object>
45 <packing>
46 <property name="expand">False</property>
47 <property name="fill">False</property>
48 <property name="padding">6</property>
49 <property name="position">0</property>
50 </packing>
51 </child>
52 <child>
53 <object class="GtkExpander" id="expander1">
54 <property name="visible">True</property>
55 <property name="can_focus">True</property>
56 <child>
57 <object class="GtkScrolledWindow" id="scrolledwindow1">
58 <property name="visible">True</property>
59 <property name="can_focus">True</property>
60 <child>
61 <object class="GtkTextView" id="error_message">
62 <property name="height_request">200</property>
63 <property name="visible">True</property>
64 <property name="can_focus">True</property>
65 </object>
66 </child>
67 </object>
68 </child>
69 <child type="label">
70 <object class="GtkLabel" id="label2">
71 <property name="visible">True</property>
72 <property name="can_focus">False</property>
73 <property name="label" translatable="yes">Debug information</property>
74 </object>
75 </child>
76 </object>
77 <packing>
78 <property name="expand">True</property>
79 <property name="fill">True</property>
80 <property name="padding">6</property>
81 <property name="position">1</property>
82 </packing>
83 </child>
84 <child>
85 <object class="GtkHSeparator" id="hseparator1">
86 <property name="visible">True</property>
87 <property name="can_focus">False</property>
88 </object>
89 <packing>
90 <property name="expand">False</property>
91 <property name="fill">True</property>
92 <property name="padding">6</property>
93 <property name="position">2</property>
94 </packing>
95 </child>
96 <child>
97 <object class="GtkHBox" id="hbox3">
98 <property name="visible">True</property>
99 <property name="can_focus">False</property>
100 <child>
101 <object class="GtkButton" id="send">
102 <property name="label" translatable="yes">Visit the issue tracker</property>
103 <property name="visible">True</property>
104 <property name="can_focus">True</property>
105 <property name="receives_default">True</property>
106 <property name="use_action_appearance">False</property>
107 </object>
108 <packing>
109 <property name="expand">True</property>
110 <property name="fill">True</property>
111 <property name="padding">6</property>
112 <property name="position">0</property>
113 </packing>
114 </child>
115 <child>
116 <object class="GtkLabel" id="label3">
117 <property name="visible">True</property>
118 <property name="can_focus">False</property>
119 </object>
120 <packing>
121 <property name="expand">True</property>
122 <property name="fill">True</property>
123 <property name="padding">6</property>
124 <property name="position">1</property>
125 </packing>
126 </child>
127 <child>
128 <object class="GtkLabel" id="label1">
129 <property name="visible">True</property>
130 <property name="can_focus">False</property>
131 </object>
132 <packing>
133 <property name="expand">True</property>
134 <property name="fill">True</property>
135 <property name="position">2</property>
136 </packing>
137 </child>
138 <child>
139 <object class="GtkButton" id="ok">
140 <property name="label">gtk-ok</property>
141 <property name="visible">True</property>
142 <property name="can_focus">True</property>
143 <property name="receives_default">True</property>
144 <property name="use_action_appearance">False</property>
145 <property name="use_stock">True</property>
146 </object>
147 <packing>
148 <property name="expand">True</property>
149 <property name="fill">True</property>
150 <property name="padding">6</property>
151 <property name="position">3</property>
152 </packing>
153 </child>
154 </object>
155 <packing>
156 <property name="expand">False</property>
157 <property name="fill">False</property>
158 <property name="padding">6</property>
159 <property name="position">3</property>
160 </packing>
161 </child>
162 </object>
163 </child>
164 </object>
165 <object class="GtkImage" id="image1">
166 <property name="visible">True</property>
167 <property name="can_focus">False</property>
168 <property name="stock">gtk-open</property>
169 </object>
170 <object class="GtkImage" id="image2">
171 <property name="visible">True</property>
172 <property name="can_focus">False</property>
173 <property name="stock">gtk-save</property>
174 </object>
175 <object class="GtkImage" id="image3">
176 <property name="visible">True</property>
177 <property name="can_focus">False</property>
178 <property name="stock">gtk-clear</property>
179 </object>
180 <object class="GtkImage" id="image4">
181 <property name="visible">True</property>
182 <property name="can_focus">False</property>
183 <property name="stock">gtk-clear</property>
184 </object>
185 <object class="GtkImage" id="image5">
186 <property name="visible">True</property>
187 <property name="can_focus">False</property>
188 <property name="stock">gtk-sort-ascending</property>
189 </object>
190 <object class="GtkListStore" id="liststore">
191 <columns>
192 <!-- column-name gboolean1 -->
193 <column type="gboolean"/>
194 <!-- column-name GdkPixbuf1 -->
195 <column type="GdkPixbuf"/>
196 <!-- column-name gchararray2 -->
197 <column type="gchararray"/>
198 <!-- column-name gint1 -->
199 <column type="gint"/>
200 <!-- column-name gchararray3 -->
201 <column type="gchararray"/>
202 <!-- column-name PangoStyle1 -->
203 <column type="PangoWeight"/>
204 </columns>
205 </object>
5 <object class="GtkWindow" id="notifier">206 <object class="GtkWindow" id="notifier">
207 <property name="can_focus">False</property>
6 <property name="title" translatable="yes">Notifications</property>208 <property name="title" translatable="yes">Notifications</property>
7 <property name="icon_name">gtk-dialog-info</property>209 <property name="icon_name">gtk-dialog-info</property>
8 <accel-groups>210 <accel-groups>
9 <group name="accelgroup1"/>211 <group name="accelgroup1"/>
10 </accel-groups>212 </accel-groups>
11 <signal name="delete_event" handler="on_close_activate"/>213 <signal name="delete-event" handler="delete_event" swapped="no"/>
12 <child>214 <child>
13 <object class="GtkVBox" id="vbox">215 <object class="GtkVBox" id="vbox">
14 <property name="visible">True</property>216 <property name="visible">True</property>
217 <property name="can_focus">False</property>
15 <child>218 <child>
16 <object class="GtkMenuBar" id="menubar1">219 <object class="GtkMenuBar" id="menubar1">
17 <property name="visible">True</property>220 <property name="visible">True</property>
221 <property name="can_focus">False</property>
18 <child>222 <child>
19 <object class="GtkMenuItem" id="menu_file">223 <object class="GtkMenuItem" id="menu_file">
20 <property name="visible">True</property>224 <property name="visible">True</property>
225 <property name="can_focus">False</property>
226 <property name="use_action_appearance">False</property>
21 <property name="label" translatable="yes">_File</property>227 <property name="label" translatable="yes">_File</property>
22 <property name="use_underline">True</property>228 <property name="use_underline">True</property>
23 <child type="submenu">229 <child type="submenu">
24 <object class="GtkMenu" id="menu_file_menu">230 <object class="GtkMenu" id="menu_file_menu">
231 <property name="can_focus">False</property>
25 <child>232 <child>
26 <object class="GtkImageMenuItem" id="import_watches">233 <object class="GtkImageMenuItem" id="import_watches">
27 <property name="label" translatable="yes">_Import Watches</property>234 <property name="label" translatable="yes">_Import Watches</property>
28 <property name="visible">True</property>235 <property name="visible">True</property>
236 <property name="can_focus">False</property>
237 <property name="use_action_appearance">False</property>
29 <property name="use_underline">True</property>238 <property name="use_underline">True</property>
30 <property name="image">image1</property>239 <property name="image">image1</property>
31 <property name="use_stock">False</property>240 <property name="use_stock">False</property>
32 <signal name="activate" handler="on_import_watches_activate"/>241 <signal name="activate" handler="import_watches" swapped="no"/>
33 </object>242 </object>
34 </child>243 </child>
35 <child>244 <child>
36 <object class="GtkImageMenuItem" id="export_watches">245 <object class="GtkImageMenuItem" id="export_watches">
37 <property name="label" translatable="yes">_Export Watches</property>246 <property name="label" translatable="yes">_Export Watches</property>
38 <property name="visible">True</property>247 <property name="visible">True</property>
248 <property name="can_focus">False</property>
249 <property name="use_action_appearance">False</property>
39 <property name="use_underline">True</property>250 <property name="use_underline">True</property>
40 <property name="image">image2</property>251 <property name="image">image2</property>
41 <property name="use_stock">False</property>252 <property name="use_stock">False</property>
42 <signal name="activate" handler="on_export_watches_activate"/>253 <signal name="activate" handler="export_watches" swapped="no"/>
43 </object>254 </object>
44 </child>255 </child>
45 <child>256 <child>
46 <object class="GtkSeparatorMenuItem" id="separatormenuitem1">257 <object class="GtkSeparatorMenuItem" id="separatormenuitem1">
47 <property name="visible">True</property>258 <property name="visible">True</property>
259 <property name="can_focus">False</property>
48 </object>260 </object>
49 </child>261 </child>
50 <child>262 <child>
51 <object class="GtkImageMenuItem" id="close">263 <object class="GtkImageMenuItem" id="close">
52 <property name="label">gtk-close</property>264 <property name="label">gtk-close</property>
53 <property name="visible">True</property>265 <property name="visible">True</property>
266 <property name="can_focus">False</property>
267 <property name="use_action_appearance">False</property>
54 <property name="use_underline">True</property>268 <property name="use_underline">True</property>
55 <property name="use_stock">True</property>269 <property name="use_stock">True</property>
56 <property name="accel_group">accelgroup1</property>270 <property name="accel_group">accelgroup1</property>
57 <signal name="activate" handler="on_close_activate"/>271 <signal name="activate" handler="close_event" swapped="no"/>
58 </object>272 </object>
59 </child>273 </child>
60 <child>274 <child>
61 <object class="GtkImageMenuItem" id="quit">275 <object class="GtkImageMenuItem" id="quit">
62 <property name="label">gtk-quit</property>276 <property name="label">gtk-quit</property>
63 <property name="visible">True</property>277 <property name="visible">True</property>
278 <property name="can_focus">False</property>
279 <property name="use_action_appearance">False</property>
64 <property name="use_underline">True</property>280 <property name="use_underline">True</property>
65 <property name="use_stock">True</property>281 <property name="use_stock">True</property>
66 <property name="accel_group">accelgroup1</property>282 <property name="accel_group">accelgroup1</property>
67 <signal name="activate" handler="on_quit_activate"/>283 <signal name="activate" handler="delete_event" swapped="no"/>
68 </object>284 </object>
69 </child>285 </child>
70 </object>286 </object>
@@ -74,14 +290,19 @@
74 <child>290 <child>
75 <object class="GtkMenuItem" id="menu_edit">291 <object class="GtkMenuItem" id="menu_edit">
76 <property name="visible">True</property>292 <property name="visible">True</property>
293 <property name="can_focus">False</property>
294 <property name="use_action_appearance">False</property>
77 <property name="label" translatable="yes">_Edit</property>295 <property name="label" translatable="yes">_Edit</property>
78 <property name="use_underline">True</property>296 <property name="use_underline">True</property>
79 <child type="submenu">297 <child type="submenu">
80 <object class="GtkMenu" id="menu_edit_menu">298 <object class="GtkMenu" id="menu_edit_menu">
299 <property name="can_focus">False</property>
81 <child>300 <child>
82 <object class="GtkImageMenuItem" id="add">301 <object class="GtkImageMenuItem" id="add">
83 <property name="label">gtk-add</property>302 <property name="label">gtk-add</property>
84 <property name="visible">True</property>303 <property name="visible">True</property>
304 <property name="can_focus">False</property>
305 <property name="use_action_appearance">False</property>
85 <property name="use_underline">True</property>306 <property name="use_underline">True</property>
86 <property name="use_stock">True</property>307 <property name="use_stock">True</property>
87 <property name="accel_group">accelgroup1</property>308 <property name="accel_group">accelgroup1</property>
@@ -91,45 +312,54 @@
91 <object class="GtkImageMenuItem" id="remove">312 <object class="GtkImageMenuItem" id="remove">
92 <property name="label">gtk-remove</property>313 <property name="label">gtk-remove</property>
93 <property name="visible">True</property>314 <property name="visible">True</property>
315 <property name="can_focus">False</property>
316 <property name="use_action_appearance">False</property>
94 <property name="use_underline">True</property>317 <property name="use_underline">True</property>
95 <property name="use_stock">True</property>318 <property name="use_stock">True</property>
96 <property name="accel_group">accelgroup1</property>319 <property name="accel_group">accelgroup1</property>
97 <signal name="activate" handler="on_remove_activate"/>320 <signal name="activate" handler="remove_watch" swapped="no"/>
98 </object>321 </object>
99 </child>322 </child>
100 <child>323 <child>
101 <object class="GtkImageMenuItem" id="edit">324 <object class="GtkImageMenuItem" id="edit">
102 <property name="label">gtk-edit</property>325 <property name="label">gtk-edit</property>
103 <property name="visible">True</property>326 <property name="visible">True</property>
327 <property name="can_focus">False</property>
328 <property name="use_action_appearance">False</property>
104 <property name="use_underline">True</property>329 <property name="use_underline">True</property>
105 <property name="use_stock">True</property>330 <property name="use_stock">True</property>
106 <property name="accel_group">accelgroup1</property>331 <property name="accel_group">accelgroup1</property>
107 <signal name="activate" handler="on_edit_activate"/>332 <signal name="activate" handler="show_edit_watch" swapped="no"/>
108 </object>333 </object>
109 </child>334 </child>
110 <child>335 <child>
111 <object class="GtkImageMenuItem" id="clear">336 <object class="GtkImageMenuItem" id="clear">
112 <property name="label" translatable="yes">Mark as read</property>337 <property name="label" translatable="yes">Mark as read</property>
113 <property name="visible">True</property>338 <property name="visible">True</property>
339 <property name="can_focus">False</property>
340 <property name="use_action_appearance">False</property>
114 <property name="use_underline">True</property>341 <property name="use_underline">True</property>
115 <property name="image">image3</property>342 <property name="image">image3</property>
116 <property name="use_stock">False</property>343 <property name="use_stock">False</property>
117 <signal name="activate" handler="on_clear_activate"/>344 <signal name="activate" handler="_mark_watch_as_read" swapped="no"/>
118 </object>345 </object>
119 </child>346 </child>
120 <child>347 <child>
121 <object class="GtkSeparatorMenuItem" id="separator3">348 <object class="GtkSeparatorMenuItem" id="separator3">
122 <property name="visible">True</property>349 <property name="visible">True</property>
350 <property name="can_focus">False</property>
123 </object>351 </object>
124 </child>352 </child>
125 <child>353 <child>
126 <object class="GtkImageMenuItem" id="preferences">354 <object class="GtkImageMenuItem" id="preferences">
127 <property name="label">gtk-preferences</property>355 <property name="label">gtk-preferences</property>
128 <property name="visible">True</property>356 <property name="visible">True</property>
357 <property name="can_focus">False</property>
358 <property name="use_action_appearance">False</property>
129 <property name="use_underline">True</property>359 <property name="use_underline">True</property>
130 <property name="use_stock">True</property>360 <property name="use_stock">True</property>
131 <property name="accel_group">accelgroup1</property>361 <property name="accel_group">accelgroup1</property>
132 <signal name="activate" handler="on_preferences_activate"/>362 <signal name="activate" handler="show_preferences" swapped="no"/>
133 </object>363 </object>
134 </child>364 </child>
135 </object>365 </object>
@@ -139,83 +369,103 @@
139 <child>369 <child>
140 <object class="GtkMenuItem" id="menu_view">370 <object class="GtkMenuItem" id="menu_view">
141 <property name="visible">True</property>371 <property name="visible">True</property>
372 <property name="can_focus">False</property>
373 <property name="use_action_appearance">False</property>
142 <property name="label" translatable="yes">_View</property>374 <property name="label" translatable="yes">_View</property>
143 <property name="use_underline">True</property>375 <property name="use_underline">True</property>
144 <child type="submenu">376 <child type="submenu">
145 <object class="GtkMenu" id="menu_view_menu">377 <object class="GtkMenu" id="menu_view_menu">
378 <property name="can_focus">False</property>
146 <child>379 <child>
147 <object class="GtkImageMenuItem" id="refresh">380 <object class="GtkImageMenuItem" id="refresh">
148 <property name="label">gtk-refresh</property>381 <property name="label">gtk-refresh</property>
149 <property name="visible">True</property>382 <property name="visible">True</property>
383 <property name="can_focus">False</property>
384 <property name="use_action_appearance">False</property>
150 <property name="use_underline">True</property>385 <property name="use_underline">True</property>
151 <property name="use_stock">True</property>386 <property name="use_stock">True</property>
152 <property name="accel_group">accelgroup1</property>387 <property name="accel_group">accelgroup1</property>
153 <accelerator key="F5" signal="activate"/>388 <accelerator key="F5" signal="activate"/>
154 <signal name="activate" handler="on_refresh_activate"/>389 <signal name="activate" handler="refresh_all_watches" swapped="no"/>
155 </object>390 </object>
156 </child>391 </child>
157 <child>392 <child>
158 <object class="GtkImageMenuItem" id="clear_all1">393 <object class="GtkImageMenuItem" id="clear_all1">
159 <property name="label" translatable="yes">_Mark all read</property>394 <property name="label" translatable="yes">_Mark all read</property>
160 <property name="visible">True</property>395 <property name="visible">True</property>
396 <property name="can_focus">False</property>
397 <property name="use_action_appearance">False</property>
161 <property name="use_underline">True</property>398 <property name="use_underline">True</property>
162 <property name="image">image4</property>399 <property name="image">image4</property>
163 <property name="use_stock">False</property>400 <property name="use_stock">False</property>
164 <signal name="activate" handler="on_clear_all_activate"/>401 <signal name="activate" handler="mark_all_as_read" swapped="no"/>
165 </object>402 </object>
166 </child>403 </child>
167 <child>404 <child>
168 <object class="GtkSeparatorMenuItem" id="separator1">405 <object class="GtkSeparatorMenuItem" id="separator1">
169 <property name="visible">True</property>406 <property name="visible">True</property>
407 <property name="can_focus">False</property>
170 </object>408 </object>
171 </child>409 </child>
172 <child>410 <child>
173 <object class="GtkMenuItem" id="error_log">411 <object class="GtkMenuItem" id="error_log">
174 <property name="visible">True</property>412 <property name="visible">True</property>
413 <property name="can_focus">False</property>
414 <property name="use_action_appearance">False</property>
175 <property name="label" translatable="yes">_Error Log</property>415 <property name="label" translatable="yes">_Error Log</property>
176 <property name="use_underline">True</property>416 <property name="use_underline">True</property>
177 <signal name="activate" handler="on_error_log_activate"/>417 <signal name="activate" handler="show_error_log" swapped="no"/>
178 </object>418 </object>
179 </child>419 </child>
180 <child>420 <child>
181 <object class="GtkSeparatorMenuItem" id="separator4">421 <object class="GtkSeparatorMenuItem" id="separator4">
182 <property name="visible">True</property>422 <property name="visible">True</property>
423 <property name="can_focus">False</property>
183 </object>424 </object>
184 </child>425 </child>
185 <child>426 <child>
186 <object class="GtkImageMenuItem" id="sorting">427 <object class="GtkImageMenuItem" id="sorting">
187 <property name="label" translatable="yes">Sorting</property>428 <property name="label" translatable="yes">Sorting</property>
188 <property name="visible">True</property>429 <property name="visible">True</property>
430 <property name="can_focus">False</property>
431 <property name="use_action_appearance">False</property>
189 <property name="use_underline">True</property>432 <property name="use_underline">True</property>
190 <property name="image">image5</property>433 <property name="image">image5</property>
191 <property name="use_stock">False</property>434 <property name="use_stock">False</property>
192 <child type="submenu">435 <child type="submenu">
193 <object class="GtkMenu" id="sorting_menu">436 <object class="GtkMenu" id="sorting_menu">
437 <property name="can_focus">False</property>
194 <child>438 <child>
195 <object class="GtkRadioMenuItem" id="by_watch_type">439 <object class="GtkRadioMenuItem" id="by_watch_type">
196 <property name="visible">True</property>440 <property name="visible">True</property>
441 <property name="can_focus">False</property>
442 <property name="use_action_appearance">False</property>
197 <property name="label" translatable="yes">By Watch Type</property>443 <property name="label" translatable="yes">By Watch Type</property>
198 <property name="use_underline">True</property>444 <property name="use_underline">True</property>
199 <property name="active">True</property>445 <property name="active">True</property>
200 <signal name="activate" handler="on_by_watch_type_activate"/>446 <signal name="activate" handler="sort_type" swapped="no"/>
201 </object>447 </object>
202 </child>448 </child>
203 <child>449 <child>
204 <object class="GtkRadioMenuItem" id="by_name">450 <object class="GtkRadioMenuItem" id="by_name">
205 <property name="visible">True</property>451 <property name="visible">True</property>
452 <property name="can_focus">False</property>
453 <property name="use_action_appearance">False</property>
206 <property name="label" translatable="yes">By Name</property>454 <property name="label" translatable="yes">By Name</property>
207 <property name="use_underline">True</property>455 <property name="use_underline">True</property>
208 <property name="group">by_watch_type</property>456 <property name="group">by_watch_type</property>
209 <signal name="activate" handler="on_by_name_activate"/>457 <signal name="activate" handler="sort_name" swapped="no"/>
210 </object>458 </object>
211 </child>459 </child>
212 <child>460 <child>
213 <object class="GtkRadioMenuItem" id="by_watch_active">461 <object class="GtkRadioMenuItem" id="by_watch_active">
214 <property name="visible">True</property>462 <property name="visible">True</property>
463 <property name="can_focus">False</property>
464 <property name="use_action_appearance">False</property>
215 <property name="label" translatable="yes">By Active</property>465 <property name="label" translatable="yes">By Active</property>
216 <property name="use_underline">True</property>466 <property name="use_underline">True</property>
217 <property name="group">by_watch_type</property>467 <property name="group">by_watch_type</property>
218 <signal name="activate" handler="on_by_watch_active_activate"/>468 <signal name="activate" handler="sort_active" swapped="no"/>
219 </object>469 </object>
220 </child>470 </child>
221 </object>471 </object>
@@ -225,23 +475,28 @@
225 <child>475 <child>
226 <object class="GtkSeparatorMenuItem" id="separator2">476 <object class="GtkSeparatorMenuItem" id="separator2">
227 <property name="visible">True</property>477 <property name="visible">True</property>
478 <property name="can_focus">False</property>
228 </object>479 </object>
229 </child>480 </child>
230 <child>481 <child>
231 <object class="GtkCheckMenuItem" id="display_all_watches">482 <object class="GtkCheckMenuItem" id="display_all_watches">
232 <property name="visible">True</property>483 <property name="visible">True</property>
484 <property name="can_focus">False</property>
485 <property name="use_action_appearance">False</property>
233 <property name="label" translatable="yes">Display _All Watches</property>486 <property name="label" translatable="yes">Display _All Watches</property>
234 <property name="use_underline">True</property>487 <property name="use_underline">True</property>
235 <signal name="activate" handler="on_display_all_watches_activate"/>488 <signal name="activate" handler="toggle_show_deactivated_watches" swapped="no"/>
236 </object>489 </object>
237 </child>490 </child>
238 <child>491 <child>
239 <object class="GtkCheckMenuItem" id="display_toolbar">492 <object class="GtkCheckMenuItem" id="display_toolbar">
240 <property name="visible">True</property>493 <property name="visible">True</property>
494 <property name="can_focus">False</property>
495 <property name="use_action_appearance">False</property>
241 <property name="label" translatable="yes">Display _Toolbar</property>496 <property name="label" translatable="yes">Display _Toolbar</property>
242 <property name="use_underline">True</property>497 <property name="use_underline">True</property>
243 <property name="active">True</property>498 <property name="active">True</property>
244 <signal name="activate" handler="on_display_toolbar_activate"/>499 <signal name="activate" handler="toggle_display_toolbar" swapped="no"/>
245 </object>500 </object>
246 </child>501 </child>
247 </object>502 </object>
@@ -251,28 +506,35 @@
251 <child>506 <child>
252 <object class="GtkMenuItem" id="menu_help">507 <object class="GtkMenuItem" id="menu_help">
253 <property name="visible">True</property>508 <property name="visible">True</property>
509 <property name="can_focus">False</property>
510 <property name="use_action_appearance">False</property>
254 <property name="label" translatable="yes">_Help</property>511 <property name="label" translatable="yes">_Help</property>
255 <property name="use_underline">True</property>512 <property name="use_underline">True</property>
256 <child type="submenu">513 <child type="submenu">
257 <object class="GtkMenu" id="menu_help_menu">514 <object class="GtkMenu" id="menu_help_menu">
515 <property name="can_focus">False</property>
258 <child>516 <child>
259 <object class="GtkImageMenuItem" id="help">517 <object class="GtkImageMenuItem" id="help">
260 <property name="label">gtk-help</property>518 <property name="label">gtk-help</property>
261 <property name="visible">True</property>519 <property name="visible">True</property>
520 <property name="can_focus">False</property>
521 <property name="use_action_appearance">False</property>
262 <property name="use_underline">True</property>522 <property name="use_underline">True</property>
263 <property name="use_stock">True</property>523 <property name="use_stock">True</property>
264 <property name="accel_group">accelgroup1</property>524 <property name="accel_group">accelgroup1</property>
265 <signal name="activate" handler="on_help_activate"/>525 <signal name="activate" handler="show_help" swapped="no"/>
266 </object>526 </object>
267 </child>527 </child>
268 <child>528 <child>
269 <object class="GtkImageMenuItem" id="about">529 <object class="GtkImageMenuItem" id="about">
270 <property name="label">gtk-about</property>530 <property name="label">gtk-about</property>
271 <property name="visible">True</property>531 <property name="visible">True</property>
532 <property name="can_focus">False</property>
533 <property name="use_action_appearance">False</property>
272 <property name="use_underline">True</property>534 <property name="use_underline">True</property>
273 <property name="use_stock">True</property>535 <property name="use_stock">True</property>
274 <property name="accel_group">accelgroup1</property>536 <property name="accel_group">accelgroup1</property>
275 <signal name="activate" handler="on_about_activate"/>537 <signal name="activate" handler="show_about" swapped="no"/>
276 </object>538 </object>
277 </child>539 </child>
278 </object>540 </object>
@@ -289,14 +551,17 @@
289 <child>551 <child>
290 <object class="GtkToolbar" id="toolbar">552 <object class="GtkToolbar" id="toolbar">
291 <property name="visible">True</property>553 <property name="visible">True</property>
554 <property name="can_focus">False</property>
292 <child>555 <child>
293 <object class="GtkToolButton" id="button_refresh">556 <object class="GtkToolButton" id="button_refresh">
294 <property name="visible">True</property>557 <property name="visible">True</property>
558 <property name="can_focus">False</property>
559 <property name="use_action_appearance">False</property>
295 <property name="is_important">True</property>560 <property name="is_important">True</property>
296 <property name="label" translatable="yes">_Refresh All</property>561 <property name="label" translatable="yes">_Refresh All</property>
297 <property name="use_underline">True</property>562 <property name="use_underline">True</property>
298 <property name="stock_id">gtk-refresh</property>563 <property name="stock_id">gtk-refresh</property>
299 <signal name="clicked" handler="on_refresh_activate"/>564 <signal name="clicked" handler="refresh_all_watches" swapped="no"/>
300 </object>565 </object>
301 <packing>566 <packing>
302 <property name="expand">False</property>567 <property name="expand">False</property>
@@ -306,11 +571,13 @@
306 <child>571 <child>
307 <object class="GtkToolButton" id="button_clear_all">572 <object class="GtkToolButton" id="button_clear_all">
308 <property name="visible">True</property>573 <property name="visible">True</property>
574 <property name="can_focus">False</property>
575 <property name="use_action_appearance">False</property>
309 <property name="is_important">True</property>576 <property name="is_important">True</property>
310 <property name="label" translatable="yes">_Mark all read</property>577 <property name="label" translatable="yes">_Mark all read</property>
311 <property name="use_underline">True</property>578 <property name="use_underline">True</property>
312 <property name="stock_id">gtk-clear</property>579 <property name="stock_id">gtk-clear</property>
313 <signal name="clicked" handler="on_clear_all_activate"/>580 <signal name="clicked" handler="mark_all_as_read" swapped="no"/>
314 </object>581 </object>
315 <packing>582 <packing>
316 <property name="expand">False</property>583 <property name="expand">False</property>
@@ -320,9 +587,11 @@
320 <child>587 <child>
321 <object class="GtkMenuToolButton" id="button_add">588 <object class="GtkMenuToolButton" id="button_add">
322 <property name="visible">True</property>589 <property name="visible">True</property>
590 <property name="can_focus">False</property>
591 <property name="use_action_appearance">False</property>
323 <property name="is_important">True</property>592 <property name="is_important">True</property>
324 <property name="stock_id">gtk-add</property>593 <property name="stock_id">gtk-add</property>
325 <signal name="clicked" handler="on_add_activate"/>594 <signal name="clicked" handler="show_add_watch_menu" swapped="no"/>
326 </object>595 </object>
327 <packing>596 <packing>
328 <property name="expand">False</property>597 <property name="expand">False</property>
@@ -340,20 +609,96 @@
340 <property name="visible">True</property>609 <property name="visible">True</property>
341 <property name="can_focus">True</property>610 <property name="can_focus">True</property>
342 <property name="hscrollbar_policy">never</property>611 <property name="hscrollbar_policy">never</property>
343 <property name="vscrollbar_policy">automatic</property>612 <property name="vscrollbar_policy">never</property>
344 <property name="shadow_type">in</property>613 <property name="shadow_type">in</property>
345 <child>614 <child>
346 <object class="GtkTreeView" id="treeview">615 <object class="GtkTreeView" id="treeview">
347 <property name="visible">True</property>616 <property name="visible">True</property>
348 <property name="can_focus">True</property>617 <property name="can_focus">True</property>
618 <property name="model">liststore</property>
349 <property name="rules_hint">True</property>619 <property name="rules_hint">True</property>
350 <property name="enable_search">False</property>620 <property name="search_column">0</property>
351 <signal name="cursor_changed" handler="on_treeview_cursor_changed"/>621 <signal name="cursor-changed" handler="show_watch_info" swapped="no"/>
352 <signal name="row_activated" handler="on_treeview_row_activated"/>622 <signal name="row-activated" handler="open_watch_callback" swapped="no"/>
623 <child>
624 <object class="GtkTreeViewColumn" id="active_treeviewcolumn">
625 <property name="title" translatable="yes">Active</property>
626 <property name="reorderable">True</property>
627 <property name="sort_column_id">0</property>
628 <signal name="clicked" handler="sort_active_from_treeview_headers" swapped="no"/>
629 <child>
630 <object class="GtkCellRendererToggle" id="cellrenderertoggle1">
631 <signal name="toggled" handler="check_clicked" swapped="no"/>
632 </object>
633 <attributes>
634 <attribute name="active">0</attribute>
635 </attributes>
636 </child>
637 </object>
638 </child>
639 <child>
640 <object class="GtkTreeViewColumn" id="type_treeviewcolumn">
641 <property name="title" translatable="yes">Type</property>
642 <property name="reorderable">True</property>
643 <property name="sort_column_id">1</property>
644 <signal name="clicked" handler="sort_type_from_treeview_headers" swapped="no"/>
645 <child>
646 <object class="GtkCellRendererPixbuf" id="cellrendererpixbuf1"/>
647 <attributes>
648 <attribute name="pixbuf">1</attribute>
649 </attributes>
650 </child>
651 </object>
652 </child>
653 <child>
654 <object class="GtkTreeViewColumn" id="name_treeviewcolumn">
655 <property name="resizable">True</property>
656 <property name="title" translatable="yes">Name</property>
657 <property name="expand">True</property>
658 <property name="reorderable">True</property>
659 <property name="sort_column_id">2</property>
660 <signal name="clicked" handler="sort_name_from_treeview_headers" swapped="no"/>
661 <child>
662 <object class="GtkCellRendererText" id="cellrenderertext1">
663 <property name="editable">True</property>
664 <signal name="edited" handler="change_entry_name" swapped="no"/>
665 </object>
666 <attributes>
667 <attribute name="text">2</attribute>
668 </attributes>
669 </child>
670 </object>
671 </child>
672 <child>
673 <object class="GtkTreeViewColumn" id="_ID_treeviewcolumn">
674 <property name="visible">False</property>
675 <property name="title" translatable="yes">ID</property>
676 <child>
677 <object class="GtkCellRendererText" id="cellrenderertext2"/>
678 <attributes>
679 <attribute name="text">3</attribute>
680 </attributes>
681 </child>
682 </object>
683 </child>
684 <child>
685 <object class="GtkTreeViewColumn" id="_TYPE_treeviewcolumn">
686 <property name="visible">False</property>
687 <property name="title" translatable="yes">TYPE</property>
688 <child>
689 <object class="GtkCellRendererText" id="cellrenderertext3"/>
690 <attributes>
691 <attribute name="text">4</attribute>
692 </attributes>
693 </child>
694 </object>
695 </child>
353 </object>696 </object>
354 </child>697 </child>
355 </object>698 </object>
356 <packing>699 <packing>
700 <property name="expand">True</property>
701 <property name="fill">True</property>
357 <property name="position">2</property>702 <property name="position">2</property>
358 </packing>703 </packing>
359 </child>704 </child>
@@ -361,11 +706,13 @@
361 <object class="GtkHBox" id="hbox1">706 <object class="GtkHBox" id="hbox1">
362 <property name="height_request">145</property>707 <property name="height_request">145</property>
363 <property name="visible">True</property>708 <property name="visible">True</property>
709 <property name="can_focus">False</property>
364 <property name="border_width">6</property>710 <property name="border_width">6</property>
365 <property name="spacing">6</property>711 <property name="spacing">6</property>
366 <child>712 <child>
367 <object class="GtkHBox" id="vbox_info">713 <object class="GtkHBox" id="vbox_info">
368 <property name="visible">True</property>714 <property name="visible">True</property>
715 <property name="can_focus">False</property>
369 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>716 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
370 <child>717 <child>
371 <object class="GtkNotebook" id="notebook1">718 <object class="GtkNotebook" id="notebook1">
@@ -375,22 +722,26 @@
375 <child>722 <child>
376 <object class="GtkHBox" id="hbox2">723 <object class="GtkHBox" id="hbox2">
377 <property name="visible">True</property>724 <property name="visible">True</property>
725 <property name="can_focus">False</property>
378 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>726 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
379 <property name="spacing">6</property>727 <property name="spacing">6</property>
380 <child>728 <child>
381 <object class="GtkImage" id="watch_icon">729 <object class="GtkImage" id="watch_icon">
382 <property name="visible">True</property>730 <property name="visible">True</property>
731 <property name="can_focus">False</property>
383 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>732 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
384 <property name="stock">gtk-info</property>733 <property name="stock">gtk-info</property>
385 </object>734 </object>
386 <packing>735 <packing>
387 <property name="expand">False</property>736 <property name="expand">False</property>
737 <property name="fill">True</property>
388 <property name="position">0</property>738 <property name="position">0</property>
389 </packing>739 </packing>
390 </child>740 </child>
391 <child>741 <child>
392 <object class="GtkVBox" id="vbox_watch_info">742 <object class="GtkVBox" id="vbox_watch_info">
393 <property name="visible">True</property>743 <property name="visible">True</property>
744 <property name="can_focus">False</property>
394 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>745 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
395 <property name="border_width">6</property>746 <property name="border_width">6</property>
396 <child>747 <child>
@@ -398,6 +749,8 @@
398 </child>749 </child>
399 </object>750 </object>
400 <packing>751 <packing>
752 <property name="expand">True</property>
753 <property name="fill">True</property>
401 <property name="position">1</property>754 <property name="position">1</property>
402 </packing>755 </packing>
403 </child>756 </child>
@@ -406,6 +759,7 @@
406 <child type="tab">759 <child type="tab">
407 <object class="GtkLabel" id="label20">760 <object class="GtkLabel" id="label20">
408 <property name="visible">True</property>761 <property name="visible">True</property>
762 <property name="can_focus">False</property>
409 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>763 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
410 <property name="label" translatable="yes">General</property>764 <property name="label" translatable="yes">General</property>
411 </object>765 </object>
@@ -416,6 +770,7 @@
416 <child>770 <child>
417 <object class="GtkLabel" id="lblExtraInfo">771 <object class="GtkLabel" id="lblExtraInfo">
418 <property name="visible">True</property>772 <property name="visible">True</property>
773 <property name="can_focus">False</property>
419 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>774 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
420 <property name="xalign">0</property>775 <property name="xalign">0</property>
421 <property name="xpad">6</property>776 <property name="xpad">6</property>
@@ -431,6 +786,7 @@
431 <child type="tab">786 <child type="tab">
432 <object class="GtkLabel" id="label21">787 <object class="GtkLabel" id="label21">
433 <property name="visible">True</property>788 <property name="visible">True</property>
789 <property name="can_focus">False</property>
434 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>790 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
435 <property name="label" translatable="yes">Extra information</property>791 <property name="label" translatable="yes">Extra information</property>
436 </object>792 </object>
@@ -441,17 +797,22 @@
441 </child>797 </child>
442 </object>798 </object>
443 <packing>799 <packing>
800 <property name="expand">True</property>
801 <property name="fill">True</property>
444 <property name="position">-1</property>802 <property name="position">-1</property>
445 </packing>803 </packing>
446 </child>804 </child>
447 </object>805 </object>
448 <packing>806 <packing>
807 <property name="expand">True</property>
808 <property name="fill">True</property>
449 <property name="position">0</property>809 <property name="position">0</property>
450 </packing>810 </packing>
451 </child>811 </child>
452 <child>812 <child>
453 <object class="GtkVButtonBox" id="vbox_panel_buttons">813 <object class="GtkVButtonBox" id="vbox_panel_buttons">
454 <property name="visible">True</property>814 <property name="visible">True</property>
815 <property name="can_focus">False</property>
455 <property name="spacing">6</property>816 <property name="spacing">6</property>
456 <property name="layout_style">start</property>817 <property name="layout_style">start</property>
457 <child>818 <child>
@@ -461,8 +822,9 @@
461 <property name="can_focus">True</property>822 <property name="can_focus">True</property>
462 <property name="can_default">True</property>823 <property name="can_default">True</property>
463 <property name="receives_default">False</property>824 <property name="receives_default">False</property>
825 <property name="use_action_appearance">False</property>
464 <property name="use_stock">True</property>826 <property name="use_stock">True</property>
465 <signal name="clicked" handler="on_btnOpen_clicked"/>827 <signal name="clicked" handler="open_watch_callback" swapped="no"/>
466 </object>828 </object>
467 <packing>829 <packing>
468 <property name="expand">False</property>830 <property name="expand">False</property>
@@ -477,7 +839,8 @@
477 <property name="can_focus">True</property>839 <property name="can_focus">True</property>
478 <property name="can_default">True</property>840 <property name="can_default">True</property>
479 <property name="receives_default">False</property>841 <property name="receives_default">False</property>
480 <signal name="clicked" handler="on_btnClear_clicked"/>842 <property name="use_action_appearance">False</property>
843 <signal name="clicked" handler="mark_watch_as_read" swapped="no"/>
481 </object>844 </object>
482 <packing>845 <packing>
483 <property name="expand">False</property>846 <property name="expand">False</property>
@@ -492,8 +855,9 @@
492 <property name="can_focus">True</property>855 <property name="can_focus">True</property>
493 <property name="can_default">True</property>856 <property name="can_default">True</property>
494 <property name="receives_default">False</property>857 <property name="receives_default">False</property>
858 <property name="use_action_appearance">False</property>
495 <property name="use_stock">True</property>859 <property name="use_stock">True</property>
496 <signal name="clicked" handler="on_btnEdit_clicked"/>860 <signal name="clicked" handler="show_edit_watch" swapped="no"/>
497 </object>861 </object>
498 <packing>862 <packing>
499 <property name="expand">False</property>863 <property name="expand">False</property>
@@ -504,6 +868,7 @@
504 </object>868 </object>
505 <packing>869 <packing>
506 <property name="expand">False</property>870 <property name="expand">False</property>
871 <property name="fill">True</property>
507 <property name="pack_type">end</property>872 <property name="pack_type">end</property>
508 <property name="position">1</property>873 <property name="position">1</property>
509 </packing>874 </packing>
@@ -516,168 +881,16 @@
516 </packing>881 </packing>
517 </child>882 </child>
518 <child>883 <child>
519 <object class="GtkStatusbar" id="statusbar1"/>884 <object class="GtkStatusbar" id="statusbar1">
885 <property name="can_focus">False</property>
886 </object>
520 <packing>887 <packing>
521 <property name="expand">False</property>888 <property name="expand">False</property>
889 <property name="fill">True</property>
522 <property name="position">4</property>890 <property name="position">4</property>
523 </packing>891 </packing>
524 </child>892 </child>
525 </object>893 </object>
526 </child>894 </child>
527 </object>895 </object>
528 <object class="GtkWindow" id="error_dialog">
529 <property name="title" translatable="yes">Error</property>
530 <property name="resizable">False</property>
531 <property name="window_position">center-on-parent</property>
532 <child>
533 <object class="GtkVBox" id="vbox1">
534 <property name="visible">True</property>
535 <property name="border_width">6</property>
536 <child>
537 <object class="GtkHBox" id="hbox4">
538 <property name="visible">True</property>
539 <child>
540 <object class="GtkImage" id="image">
541 <property name="visible">True</property>
542 <property name="stock">gtk-missing-image</property>
543 </object>
544 <packing>
545 <property name="position">0</property>
546 </packing>
547 </child>
548 <child>
549 <object class="GtkLabel" id="label4">
550 <property name="visible">True</property>
551 </object>
552 <packing>
553 <property name="padding">6</property>
554 <property name="position">1</property>
555 </packing>
556 </child>
557 </object>
558 <packing>
559 <property name="expand">False</property>
560 <property name="fill">False</property>
561 <property name="padding">6</property>
562 <property name="position">0</property>
563 </packing>
564 </child>
565 <child>
566 <object class="GtkExpander" id="expander1">
567 <property name="visible">True</property>
568 <property name="can_focus">True</property>
569 <child>
570 <object class="GtkScrolledWindow" id="scrolledwindow1">
571 <property name="visible">True</property>
572 <property name="can_focus">True</property>
573 <property name="hscrollbar_policy">automatic</property>
574 <property name="vscrollbar_policy">automatic</property>
575 <child>
576 <object class="GtkTextView" id="error_message">
577 <property name="height_request">200</property>
578 <property name="visible">True</property>
579 <property name="can_focus">True</property>
580 </object>
581 </child>
582 </object>
583 </child>
584 <child type="label">
585 <object class="GtkLabel" id="label2">
586 <property name="visible">True</property>
587 <property name="label" translatable="yes">Debug information</property>
588 </object>
589 </child>
590 </object>
591 <packing>
592 <property name="padding">6</property>
593 <property name="position">1</property>
594 </packing>
595 </child>
596 <child>
597 <object class="GtkHSeparator" id="hseparator1">
598 <property name="visible">True</property>
599 </object>
600 <packing>
601 <property name="expand">False</property>
602 <property name="padding">6</property>
603 <property name="position">2</property>
604 </packing>
605 </child>
606 <child>
607 <object class="GtkHBox" id="hbox3">
608 <property name="visible">True</property>
609 <child>
610 <object class="GtkButton" id="send">
611 <property name="label" translatable="yes">Visit the issue tracker</property>
612 <property name="visible">True</property>
613 <property name="can_focus">True</property>
614 <property name="receives_default">True</property>
615 </object>
616 <packing>
617 <property name="padding">6</property>
618 <property name="position">0</property>
619 </packing>
620 </child>
621 <child>
622 <object class="GtkLabel" id="label3">
623 <property name="visible">True</property>
624 </object>
625 <packing>
626 <property name="padding">6</property>
627 <property name="position">1</property>
628 </packing>
629 </child>
630 <child>
631 <object class="GtkLabel" id="label1">
632 <property name="visible">True</property>
633 </object>
634 <packing>
635 <property name="position">2</property>
636 </packing>
637 </child>
638 <child>
639 <object class="GtkButton" id="ok">
640 <property name="label">gtk-ok</property>
641 <property name="visible">True</property>
642 <property name="can_focus">True</property>
643 <property name="receives_default">True</property>
644 <property name="use_stock">True</property>
645 </object>
646 <packing>
647 <property name="padding">6</property>
648 <property name="position">3</property>
649 </packing>
650 </child>
651 </object>
652 <packing>
653 <property name="expand">False</property>
654 <property name="fill">False</property>
655 <property name="padding">6</property>
656 <property name="position">3</property>
657 </packing>
658 </child>
659 </object>
660 </child>
661 </object>
662 <object class="GtkImage" id="image1">
663 <property name="visible">True</property>
664 <property name="stock">gtk-open</property>
665 </object>
666 <object class="GtkImage" id="image2">
667 <property name="visible">True</property>
668 <property name="stock">gtk-save</property>
669 </object>
670 <object class="GtkImage" id="image3">
671 <property name="visible">True</property>
672 <property name="stock">gtk-clear</property>
673 </object>
674 <object class="GtkImage" id="image4">
675 <property name="visible">True</property>
676 <property name="stock">gtk-clear</property>
677 </object>
678 <object class="GtkImage" id="image5">
679 <property name="visible">True</property>
680 <property name="stock">gtk-sort-ascending</property>
681 </object>
682 <object class="GtkAccelGroup" id="accelgroup1"/>
683</interface>896</interface>
684897
=== modified file 'spectlib/about.py'
--- spectlib/about.py 2010-11-23 15:42:22 +0000
+++ spectlib/about.py 2011-05-24 17:11:46 +0000
@@ -40,35 +40,18 @@
4040
41 license_file_path = (os.path.join(get_path(category="doc"), "COPYING"))41 license_file_path = (os.path.join(get_path(category="doc"), "COPYING"))
42 with open(license_file_path, "r") as license_file:42 with open(license_file_path, "r") as license_file:
43 license = license_file.read()43 _license = license_file.read()
44
45 authors_file_path = (os.path.join(get_path(category="doc"), "AUTHORS"))
46 with open(authors_file_path, "r") as authors_file:
47 # this is a hack, because gtk.AboutDialog expects a list, not a file
48 authors = authors_file.readlines()
4944
50 logo = gtk.gdk.pixbuf_new_from_file(os.path.join(self.specto.PATH, "icons/specto_about.png"))45 logo = gtk.gdk.pixbuf_new_from_file(os.path.join(self.specto.PATH, "icons/specto_about.png"))
5146
52 # gtk.AboutDialog will detect if "translator-credits" is untranslated,47 uifile = os.path.join(self.specto.PATH, "uis/about.ui")
53 # and hide the tab.48 windowname = "about"
54 translator_credits = _("translator-credits")49 self.builder = gtk.Builder()
5550 self.builder.set_translation_domain("specto")
56 #create tree51 self.builder.add_from_file(uifile)
57 self.about = gtk.AboutDialog()52 self.about = self.builder.get_object("aboutdialog1")
58
59 self.about.set_name("Specto")
60 self.about.set_version(self.specto.VERSION)53 self.about.set_version(self.specto.VERSION)
61 self.about.set_copyright("Copyright © Jean-François Fortin Tam & Wout Clymans")54 self.about.set_license(_license)
62 self.about.set_comments(_("Be notified of everything"))
63 self.about.set_license(license)
64 #self.wTree.set_wrap_license(license)
65 gtk.about_dialog_set_url_hook(lambda about, url: show_webpage(url))
66 self.about.set_website("http://specto.sourceforge.net")
67 self.about.set_website_label(_("Specto's Website"))
68 self.about.set_authors(authors)
69 #self.about.set_documenters(documenters)
70 #self.about.set_artists(artists)
71 self.about.set_translator_credits(translator_credits)
72 self.about.set_logo(logo)55 self.about.set_logo(logo)
7356
74 icon = gtk.gdk.pixbuf_new_from_file(os.path.join(self.specto.PATH, "icons/specto_window_icon.png"))57 icon = gtk.gdk.pixbuf_new_from_file(os.path.join(self.specto.PATH, "icons/specto_window_icon.png"))
7558
=== modified file 'spectlib/export_watch.py'
--- spectlib/export_watch.py 2010-11-23 15:28:11 +0000
+++ spectlib/export_watch.py 2011-05-24 17:11:46 +0000
@@ -57,80 +57,35 @@
57 self.export_watch.set_title(_("Export watches"))57 self.export_watch.set_title(_("Export watches"))
58 self.builder.get_object("button_action").set_label(_("Export watches"))58 self.builder.get_object("button_action").set_label(_("Export watches"))
5959
60 self.model = gtk.ListStore(gobject.TYPE_BOOLEAN, gtk.gdk.Pixbuf, \60 self.model = self.builder.get_object("liststore1")
61 gobject.TYPE_STRING, gobject.TYPE_INT, gobject.TYPE_STRING)
62 self.new_watch_db = {}61 self.new_watch_db = {}
6362
64 #catch some events
65 dic = {"on_button_select_all_clicked": self.select_all,
66 "on_button_deselect_all_clicked": self.deselect_all,
67 "on_button_action_clicked": self.do_action,
68 "on_button_close_clicked": self.delete_event}
69
70 #attach the events63 #attach the events
71 self.builder.connect_signals(dic)64 self.builder.connect_signals(self)
7265
73 icon = gtk.gdk.pixbuf_new_from_file(os.path.join(self.specto.PATH, "icons/specto_window_icon.png"))66 icon = gtk.gdk.pixbuf_new_from_file(os.path.join(self.specto.PATH, "icons/specto_window_icon.png"))
74 self.export_watch.set_icon(icon)67 self.export_watch.set_icon(icon)
7568
76 self.treeview = self.builder.get_object("treeview")69 self.treeview = self.builder.get_object("treeview")
77 self.treeview.set_model(self.model)
78 self.treeview.set_flags(gtk.TREE_MODEL_ITERS_PERSIST)70 self.treeview.set_flags(gtk.TREE_MODEL_ITERS_PERSIST)
79 self.iter = {}71 self.iter = {}
8072
81 ### Checkbox
82 self.renderer = gtk.CellRendererToggle()
83 self.renderer.set_property("activatable", True)
84 self.renderer.connect("toggled", self.check_clicked, self.model)
85 self.columnCheck = gtk.TreeViewColumn(_("Select"), \
86 self.renderer, active=0)
87 self.treeview.append_column(self.columnCheck)
88
89 ### Icon
90 self.renderer = gtk.CellRendererPixbuf()
91 self.columnIcon = gtk.TreeViewColumn(_("Type"), \
92 self.renderer, pixbuf=1)
93 self.treeview.append_column(self.columnIcon)
94
95 ### Titre
96 self.renderer = gtk.CellRendererText()
97 self.columnTitel = gtk.TreeViewColumn(_("Name"), \
98 self.renderer, markup=2)
99 self.columnTitel.set_expand(True)
100 self.columnTitel.set_resizable(True)
101 self.treeview.append_column(self.columnTitel)
102
103 ### ID
104 self.renderer = gtk.CellRendererText()
105 self.column = gtk.TreeViewColumn(_("ID"), self.renderer, markup=3)
106 self.column.set_visible(False)
107 #self.column.set_sort_column_id(3)
108 self.treeview.append_column(self.column)
109
110 ### type
111 self.renderer = gtk.CellRendererText()
112 self.columnType = gtk.TreeViewColumn(_("TYPE"), \
113 self.renderer, markup=4)
114 self.columnType.set_visible(False)
115 #self.columnType.set_sort_column_id(4)
116 self.treeview.append_column(self.columnType)
117
118 for watch in self.specto.watch_db:73 for watch in self.specto.watch_db:
119 if watch.deleted == False:74 if not watch.deleted:
120 self.add_watch_entry(watch.id)75 self.add_watch_entry(watch.id)
12176
122 def select_all(self, widget):77 def select_all(self, widget):
123 db = self.specto.watch_db78 db = self.specto.watch_db
12479
125 for watch in db:80 for watch in db:
126 if watch.deleted == False:81 if not watch.deleted:
127 self.model.set_value(self.iter[watch.id], 0, 1)82 self.model.set_value(self.iter[watch.id], 0, 1)
12883
129 def deselect_all(self, widget):84 def deselect_all(self, widget):
130 db = self.specto.watch_db85 db = self.specto.watch_db
13186
132 for watch in db:87 for watch in db:
133 if watch.deleted == False:88 if not watch.deleted:
134 self.model.set_value(self.iter[watch.id], 0, 0)89 self.model.set_value(self.iter[watch.id], 0, 0)
13590
136 def do_action(self, widget):91 def do_action(self, widget):
@@ -154,7 +109,7 @@
154 watch_db = self.specto.watch_db109 watch_db = self.specto.watch_db
155110
156 for watch in watch_db:111 for watch in watch_db:
157 if watch.deleted == False:112 if not watch.deleted:
158 if self.model.get_value(self.iter[watch.id], 0) == True:113 if self.model.get_value(self.iter[watch.id], 0) == True:
159 selected_watches_db[i] = watch114 selected_watches_db[i] = watch
160 i += 1115 i += 1
@@ -175,16 +130,17 @@
175 def set_new_watch_db(self, watch_db):130 def set_new_watch_db(self, watch_db):
176 self.new_watch_db = watch_db131 self.new_watch_db = watch_db
177132
178 def check_clicked(self, object, path, model):133 def check_clicked(self, obj, model):
179 """ Call the main function to start/stop the selected watch. """134 """ Call the main function to start/stop the selected watch. """
180 sel = self.treeview.get_selection()135 sel = self.treeview.get_selection()
181 sel.select_path(path)136 sel.select_path(model)
182 model, iter = self.treeview.get_selection().get_selected()137 model, _iter = sel.get_selected()
183138 if not _iter:
184 if model.get_value(iter, 0):139 return
185 model.set_value(iter, 0, 0)140 if model.get_value(_iter, 0):
141 model.set_value(_iter, 0, 0)
186 else:142 else:
187 model.set_value(iter, 0, 1)143 model.set_value(_iter, 0, 1)
188144
189145
190class ExportSaveDialog(SaveDialog):146class ExportSaveDialog(SaveDialog):
191147
=== modified file 'spectlib/import_watch.py'
--- spectlib/import_watch.py 2010-11-23 15:28:11 +0000
+++ spectlib/import_watch.py 2011-05-24 17:11:46 +0000
@@ -67,72 +67,32 @@
67 self.import_watch.set_title(_("Import watches"))67 self.import_watch.set_title(_("Import watches"))
68 self.builder.get_object("button_action").set_label(_("Import watches"))68 self.builder.get_object("button_action").set_label(_("Import watches"))
6969
70 self.model = gtk.ListStore(gobject.TYPE_BOOLEAN, gtk.gdk.Pixbuf, gobject.TYPE_STRING, gobject.TYPE_INT, gobject.TYPE_STRING)70 self.model = self.builder.get_object("liststore1")
71 self.new_watch_db = {}71 self.new_watch_db = {}
7272
73 #catch some events
74 dic = {"on_button_select_all_clicked": self.select_all,
75 "on_button_deselect_all_clicked": self.deselect_all,
76 "on_button_action_clicked": self.import_watches,
77 "on_button_close_clicked": self.delete_event}
78
79 #attach the events73 #attach the events
80 self.builder.connect_signals(dic)74 self.builder.connect_signals(self)
8175
82 icon = gtk.gdk.pixbuf_new_from_file(os.path.join(self.specto.PATH, "icons/specto_window_icon.png"))76 icon = gtk.gdk.pixbuf_new_from_file(os.path.join(self.specto.PATH, "icons/specto_window_icon.png"))
83 self.import_watch.set_icon(icon)77 self.import_watch.set_icon(icon)
8478
85 self.treeview = self.builder.get_object("treeview")79 self.treeview = self.builder.get_object("treeview")
86 self.treeview.set_model(self.model)
87 self.treeview.set_flags(gtk.TREE_MODEL_ITERS_PERSIST)80 self.treeview.set_flags(gtk.TREE_MODEL_ITERS_PERSIST)
88 self.iter = {}81 self.iter = {}
8982
90 ### Checkbox
91 self.renderer = gtk.CellRendererToggle()
92 self.renderer.set_property("activatable", True)
93 self.renderer.connect("toggled", self.check_clicked, self.model)
94 self.columnCheck = gtk.TreeViewColumn(_("Select"), self.renderer, active=0)
95 self.treeview.append_column(self.columnCheck)
96
97 ### Icon
98 self.renderer = gtk.CellRendererPixbuf()
99 self.columnIcon = gtk.TreeViewColumn(_("Type"), self.renderer, pixbuf=1)
100 self.treeview.append_column(self.columnIcon)
101
102 ### Titre
103 self.renderer = gtk.CellRendererText()
104 self.columnTitel = gtk.TreeViewColumn(_("Name"), self.renderer, markup=2)
105 self.columnTitel.set_expand(True)
106 self.columnTitel.set_resizable(True)
107 self.treeview.append_column(self.columnTitel)
108
109 ### ID
110 self.renderer = gtk.CellRendererText()
111 self.column = gtk.TreeViewColumn(_("ID"), self.renderer, markup=3)
112 self.column.set_visible(False)
113 #self.column.set_sort_column_id(3)
114 self.treeview.append_column(self.column)
115
116 ### type
117 self.renderer = gtk.CellRendererText()
118 self.columnType = gtk.TreeViewColumn(_("TYPE"), self.renderer, markup=4)
119 self.columnType.set_visible(False)
120 #self.columnType.set_sort_column_id(4)
121 self.treeview.append_column(self.columnType)
122
123 def select_all(self, widget):83 def select_all(self, widget):
124 db = self.new_watch_db84 db = self.new_watch_db
125 for watch in db:85 for watch in db:
126 if watch.deleted == False:86 if not watch.deleted:
127 self.model.set_value(self.iter[watch.id], 0, 1)87 self.model.set_value(self.iter[watch.id], 0, 1)
12888
129 def deselect_all(self, widget):89 def deselect_all(self, widget):
130 db = self.new_watch_db90 db = self.new_watch_db
131 for watch in db:91 for watch in db:
132 if watch.deleted == False:92 if not watch.deleted:
133 self.model.set_value(self.iter[watch.id], 0, 0)93 self.model.set_value(self.iter[watch.id], 0, 0)
13494
135 def import_watches(self, widget):95 def do_action(self, widget):
136 self.import_watch.hide_all()96 self.import_watch.hide_all()
13797
138 watches = self.get_selected_watches()98 watches = self.get_selected_watches()
@@ -176,7 +136,7 @@
176 i = 0136 i = 0
177 watch_db = self.new_watch_db137 watch_db = self.new_watch_db
178 for watch in watch_db:138 for watch in watch_db:
179 if watch.deleted == False:139 if not watch.deleted:
180 if self.model.get_value(self.iter[watch.id], 0) == True:140 if self.model.get_value(self.iter[watch.id], 0) == True:
181 selected_watches_db[i] = watch141 selected_watches_db[i] = watch
182 i += 1142 i += 1
@@ -197,16 +157,17 @@
197 def set_new_watch_db(self, watch_db):157 def set_new_watch_db(self, watch_db):
198 self.new_watch_db = watch_db158 self.new_watch_db = watch_db
199159
200 def check_clicked(self, object, path, model):160 def check_clicked(self, obj, model):
201 """ Call the main function to start/stop the selected watch. """161 """ Call the main function to start/stop the selected watch. """
202 sel = self.treeview.get_selection()162 sel = self.treeview.get_selection()
203 sel.select_path(path)163 sel.select_path(model)
204 model, iter = self.treeview.get_selection().get_selected()164 model, _iter = sel.get_selected()
205165 if not _iter:
206 if model.get_value(iter, 0):166 return
207 model.set_value(iter, 0, 0)167 if model.get_value(_iter, 0):
168 model.set_value(_iter, 0, 0)
208 else:169 else:
209 model.set_value(iter, 0, 1)170 model.set_value(_iter, 0, 1)
210171
211172
212class ImportOpenDialog(OpenDialog):173class ImportOpenDialog(OpenDialog):
@@ -231,7 +192,7 @@
231192
232 def read_options(self, file_name):193 def read_options(self, file_name):
233 watch_io = Watch_io(self.specto, file_name)194 watch_io = Watch_io(self.specto, file_name)
234 if watch_io.valid == False:195 if not watch_io.valid:
235 return False196 return False
236197
237 values = watch_io.read_all_watches()198 values = watch_io.read_all_watches()
238199
=== modified file 'spectlib/notifier.py'
--- spectlib/notifier.py 2010-11-23 15:28:11 +0000
+++ spectlib/notifier.py 2011-05-24 17:11:46 +0000
@@ -86,6 +86,7 @@
86 self.builder = gtk.Builder()86 self.builder = gtk.Builder()
87 self.builder.set_translation_domain("specto")87 self.builder.set_translation_domain("specto")
88 self.builder.add_from_file(uifile)88 self.builder.add_from_file(uifile)
89 self.builder.connect_signals(self)
89 self.notifier = self.builder.get_object("notifier")90 self.notifier = self.builder.get_object("notifier")
90 if INDICATOR:91 if INDICATOR:
91 self.indicator = Indicator(specto)92 self.indicator = Indicator(specto)
@@ -102,36 +103,7 @@
102103
103 #create tree104 #create tree
104 self.iter = {}105 self.iter = {}
105 self.model = gtk.ListStore(gobject.TYPE_BOOLEAN, gtk.gdk.Pixbuf, gobject.TYPE_STRING, gobject.TYPE_INT, gobject.TYPE_STRING, pango.Weight)106 self.model = self.builder.get_object('liststore')
106
107 #catch some events
108 dic = {
109 "on_add_activate": self.show_add_watch_menu,
110 "on_edit_activate": self.show_edit_watch,
111 "on_clear_all_activate": self.mark_all_as_read,
112 "on_preferences_activate": self.show_preferences,
113 "on_refresh_activate": self.refresh_all_watches,
114 "on_close_activate": self.close_event,
115 "on_quit_activate": self.delete_event,
116 "on_import_watches_activate": self.import_watches,
117 "on_export_watches_activate": self.export_watches,
118 "on_error_log_activate": self.show_error_log,
119 "on_display_all_watches_activate": self.toggle_show_deactivated_watches,
120 "on_display_toolbar_activate": self.toggle_display_toolbar,
121 "on_help_activate": self.show_help,
122 "on_about_activate": self.show_about,
123 "on_treeview_row_activated": self.open_watch_callback,
124 "on_btnOpen_clicked": self.open_watch_callback,
125 "on_btnClear_clicked": self.mark_watch_as_read,
126 "on_treeview_cursor_changed": self.show_watch_info,
127 "on_btnEdit_clicked": self.show_edit_watch,
128 "on_by_watch_type_activate": self.sort_type,
129 "on_by_name_activate": self.sort_name,
130 "on_by_watch_active_activate": self.sort_active,
131 "on_remove_clicked": self.remove_watch,
132 "on_clear_activate": self._mark_watch_as_read,
133 "on_remove_activate": self.remove_watch}
134 self.builder.connect_signals(dic)
135107
136 icon = gtk.gdk.pixbuf_new_from_file(os.path.join(self.specto.PATH, "icons/specto_window_icon.svg"))108 icon = gtk.gdk.pixbuf_new_from_file(os.path.join(self.specto.PATH, "icons/specto_window_icon.svg"))
137 self.notifier.set_icon(icon)109 self.notifier.set_icon(icon)
@@ -359,17 +331,17 @@
359 id = int(self.model.get_value(iter, 3))331 id = int(self.model.get_value(iter, 3))
360 self.model.remove(iter)332 self.model.remove(iter)
361333
362 def check_clicked(self, object, path, model):334 def check_clicked(self, obj, model):
363 """ Call the main function to start/stop the selected watch. """335 """ Call the main function to start/stop the selected watch. """
364 sel = self.treeview.get_selection()336 sel = self.treeview.get_selection()
365 sel.select_path(path)337 sel.select_path(model)
366338
367 model, iter = self.treeview.get_selection().get_selected()339 model, _iter = sel.get_selected()
368 id = int(model.get_value(iter, 3))340 id = int(model.get_value(_iter, 3))
369 watch = self.specto.watch_db[id]341 watch = self.specto.watch_db[id]
370342
371 if model.get_value(iter, 0):343 if model.get_value(_iter, 0):
372 model.set_value(iter, 0, 0)344 model.set_value(_iter, 0, 0)
373 if watch.changed:345 if watch.changed:
374 self.mark_watch_as_read("", id)346 self.mark_watch_as_read("", id)
375 self.mark_watch_status("idle", id)347 self.mark_watch_status("idle", id)
@@ -377,7 +349,7 @@
377 if not self.builder.get_object("display_all_watches").active:349 if not self.builder.get_object("display_all_watches").active:
378 self.remove_notifier_entry(id)350 self.remove_notifier_entry(id)
379 else:351 else:
380 model.set_value(iter, 0, 1)352 model.set_value(_iter, 0, 1)
381 watch.start()353 watch.start()
382354
383 def connected_message(self, connected):355 def connected_message(self, connected):
@@ -696,6 +668,10 @@
696668
697 if self.specto.specto_gconf.get_entry("show_in_windowlist") == False:669 if self.specto.specto_gconf.get_entry("show_in_windowlist") == False:
698 self.notifier.set_skip_taskbar_hint(True)670 self.notifier.set_skip_taskbar_hint(True)
671
672 self.columnTitle = self.builder.get_object('name_treeviewcolumn')
673 self.columnType = self.builder.get_object('type_treeviewcolumn')
674 self.columnCheck = self.builder.get_object('active_treeviewcolumn')
699675
700676
701 ### Initiate the window677 ### Initiate the window
@@ -718,50 +694,8 @@
718 if not self.specto.notifier_hide:694 if not self.specto.notifier_hide:
719 self.notifier.show()695 self.notifier.show()
720696
721 ### Checkbox
722 self.columnCheck_renderer = gtk.CellRendererToggle()
723 self.columnCheck_renderer.set_property("activatable", True)
724 self.columnCheck_renderer.connect("toggled", self.check_clicked, self.model)
725 self.columnCheck = gtk.TreeViewColumn(_("Active"), self.columnCheck_renderer, active=0)
726 self.columnCheck.connect("clicked", self.sort_active_from_treeview_headers)
727 self.columnCheck.set_sort_column_id(0)
728 self.treeview.append_column(self.columnCheck)
729
730 ### Icon
731 self.columnIcon_renderer = gtk.CellRendererPixbuf()
732 self.columnIcon = gtk.TreeViewColumn(_("Type"), self.columnIcon_renderer, pixbuf=1)
733 self.columnIcon.set_clickable(True)
734 self.columnIcon.connect("clicked", self.sort_type_from_treeview_headers)
735 self.treeview.append_column(self.columnIcon)
736
737 ### Titre
738 self.columnTitle_renderer = gtk.CellRendererText()
739 #self.columnTitle_renderer.set_property("editable", True)
740 #self.columnTitle_renderer.connect('edited', self.change_entry_name)
741 self.columnTitle = gtk.TreeViewColumn(_("Name"), self.columnTitle_renderer, text=2, weight=5)
742 self.columnTitle.connect("clicked", self.sort_name_from_treeview_headers)
743 self.columnTitle.set_expand(True)
744 self.columnTitle.set_resizable(True)
745 self.columnTitle.set_sort_column_id(2)
746 self.treeview.append_column(self.columnTitle)
747
748 ### ID
749 self.columnID_renderer = gtk.CellRendererText()
750 self.columnID = gtk.TreeViewColumn(_("ID"), self.columnID_renderer, markup=3)
751 self.columnID.set_visible(False)
752 self.columnID.set_sort_column_id(3)
753 self.treeview.append_column(self.columnID)
754
755 ### type
756 self.renderer = gtk.CellRendererText()
757 self.columnType = gtk.TreeViewColumn(_("TYPE"), self.renderer, markup=4)
758 self.columnType.set_visible(False)
759 self.columnType.set_sort_column_id(4)
760 self.treeview.append_column(self.columnType)
761
762 self.get_startup_sort_order()697 self.get_startup_sort_order()
763698
764
765 ###Create info-panel699 ###Create info-panel
766 vbox_info = self.builder.get_object("vbox_info")700 vbox_info = self.builder.get_object("vbox_info")
767701

Subscribers

People subscribed via source and target branches