openall_time_applet 0.0.4 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Gemfile +1 -0
- data/Gemfile.lock +2 -0
- data/VERSION +1 -1
- data/classes/translations.rb +13 -0
- data/glade/win_preferences.glade +414 -182
- data/gui/trayicon.rb +71 -1
- data/gui/win_preferences.rb +32 -6
- data/gui/win_timelog_edit.rb +1 -1
- data/gui/win_worktime_overview.rb +14 -2
- data/lib/openall_time_applet.rb +32 -0
- data/locales/da_DK/LC_MESSAGES/default.mo +0 -0
- data/locales/da_DK/LC_MESSAGES/default.po +30 -2
- data/openall_time_applet.gemspec +5 -1
- metadata +24 -12
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -33,6 +33,7 @@ GEM
|
|
33
33
|
rcov (0.9.11)
|
34
34
|
rdoc (3.12)
|
35
35
|
json (~> 1.4)
|
36
|
+
rmagick (2.13.1)
|
36
37
|
rspec (2.8.0)
|
37
38
|
rspec-core (~> 2.8.0)
|
38
39
|
rspec-expectations (~> 2.8.0)
|
@@ -55,5 +56,6 @@ DEPENDENCIES
|
|
55
56
|
knjrbfw
|
56
57
|
rcov
|
57
58
|
rdoc (~> 3.12)
|
59
|
+
rmagick
|
58
60
|
rspec (~> 2.8.0)
|
59
61
|
sqlite3
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.5
|
data/glade/win_preferences.glade
CHANGED
@@ -8,246 +8,478 @@
|
|
8
8
|
<property name="window_position">center</property>
|
9
9
|
<property name="default_width">400</property>
|
10
10
|
<child>
|
11
|
-
<object class="
|
11
|
+
<object class="GtkNotebook" id="notebook1">
|
12
12
|
<property name="visible">True</property>
|
13
|
-
<property name="can_focus">
|
13
|
+
<property name="can_focus">True</property>
|
14
14
|
<child>
|
15
|
-
<object class="
|
15
|
+
<object class="GtkVBox" id="vbox1">
|
16
16
|
<property name="visible">True</property>
|
17
17
|
<property name="can_focus">False</property>
|
18
|
-
<property name="label_xalign">0</property>
|
19
|
-
<property name="shadow_type">none</property>
|
20
18
|
<child>
|
21
|
-
<object class="
|
19
|
+
<object class="GtkVBox" id="vbox2">
|
22
20
|
<property name="visible">True</property>
|
23
21
|
<property name="can_focus">False</property>
|
24
|
-
<property name="left_padding">12</property>
|
25
22
|
<child>
|
26
|
-
<object class="
|
23
|
+
<object class="GtkTable" id="table1">
|
27
24
|
<property name="visible">True</property>
|
28
25
|
<property name="can_focus">False</property>
|
26
|
+
<property name="n_rows">5</property>
|
27
|
+
<property name="n_columns">2</property>
|
28
|
+
<property name="column_spacing">3</property>
|
29
|
+
<property name="row_spacing">3</property>
|
29
30
|
<child>
|
30
|
-
<object class="
|
31
|
+
<object class="GtkLabel" id="label4">
|
31
32
|
<property name="visible">True</property>
|
32
33
|
<property name="can_focus">False</property>
|
33
|
-
<property name="
|
34
|
-
<property name="
|
35
|
-
<property name="column_spacing">3</property>
|
36
|
-
<property name="row_spacing">3</property>
|
37
|
-
<child>
|
38
|
-
<object class="GtkLabel" id="label3">
|
39
|
-
<property name="visible">True</property>
|
40
|
-
<property name="can_focus">False</property>
|
41
|
-
<property name="xalign">0</property>
|
42
|
-
<property name="label" translatable="yes">Host</property>
|
43
|
-
</object>
|
44
|
-
<packing>
|
45
|
-
<property name="x_options">GTK_FILL</property>
|
46
|
-
</packing>
|
47
|
-
</child>
|
48
|
-
<child>
|
49
|
-
<object class="GtkLabel" id="label4">
|
50
|
-
<property name="visible">True</property>
|
51
|
-
<property name="can_focus">False</property>
|
52
|
-
<property name="xalign">0</property>
|
53
|
-
<property name="label" translatable="yes">Username</property>
|
54
|
-
</object>
|
55
|
-
<packing>
|
56
|
-
<property name="top_attach">3</property>
|
57
|
-
<property name="bottom_attach">4</property>
|
58
|
-
<property name="x_options">GTK_FILL</property>
|
59
|
-
<property name="y_options">GTK_FILL</property>
|
60
|
-
</packing>
|
61
|
-
</child>
|
62
|
-
<child>
|
63
|
-
<object class="GtkEntry" id="txtHost">
|
64
|
-
<property name="visible">True</property>
|
65
|
-
<property name="can_focus">True</property>
|
66
|
-
<property name="invisible_char">•</property>
|
67
|
-
<property name="primary_icon_activatable">False</property>
|
68
|
-
<property name="secondary_icon_activatable">False</property>
|
69
|
-
<property name="primary_icon_sensitive">True</property>
|
70
|
-
<property name="secondary_icon_sensitive">True</property>
|
71
|
-
</object>
|
72
|
-
<packing>
|
73
|
-
<property name="left_attach">1</property>
|
74
|
-
<property name="right_attach">2</property>
|
75
|
-
</packing>
|
76
|
-
</child>
|
77
|
-
<child>
|
78
|
-
<object class="GtkEntry" id="txtUsername">
|
79
|
-
<property name="visible">True</property>
|
80
|
-
<property name="can_focus">True</property>
|
81
|
-
<property name="invisible_char">•</property>
|
82
|
-
<property name="primary_icon_activatable">False</property>
|
83
|
-
<property name="secondary_icon_activatable">False</property>
|
84
|
-
<property name="primary_icon_sensitive">True</property>
|
85
|
-
<property name="secondary_icon_sensitive">True</property>
|
86
|
-
</object>
|
87
|
-
<packing>
|
88
|
-
<property name="left_attach">1</property>
|
89
|
-
<property name="right_attach">2</property>
|
90
|
-
<property name="top_attach">3</property>
|
91
|
-
<property name="bottom_attach">4</property>
|
92
|
-
</packing>
|
93
|
-
</child>
|
94
|
-
<child>
|
95
|
-
<object class="GtkLabel" id="label5">
|
96
|
-
<property name="visible">True</property>
|
97
|
-
<property name="can_focus">False</property>
|
98
|
-
<property name="xalign">0</property>
|
99
|
-
<property name="label" translatable="yes">Password</property>
|
100
|
-
</object>
|
101
|
-
<packing>
|
102
|
-
<property name="top_attach">4</property>
|
103
|
-
<property name="bottom_attach">5</property>
|
104
|
-
<property name="x_options">GTK_FILL</property>
|
105
|
-
</packing>
|
106
|
-
</child>
|
107
|
-
<child>
|
108
|
-
<object class="GtkEntry" id="txtPassword">
|
109
|
-
<property name="visible">True</property>
|
110
|
-
<property name="can_focus">True</property>
|
111
|
-
<property name="visibility">False</property>
|
112
|
-
<property name="invisible_char">•</property>
|
113
|
-
<property name="primary_icon_activatable">False</property>
|
114
|
-
<property name="secondary_icon_activatable">False</property>
|
115
|
-
<property name="primary_icon_sensitive">True</property>
|
116
|
-
<property name="secondary_icon_sensitive">True</property>
|
117
|
-
</object>
|
118
|
-
<packing>
|
119
|
-
<property name="left_attach">1</property>
|
120
|
-
<property name="right_attach">2</property>
|
121
|
-
<property name="top_attach">4</property>
|
122
|
-
<property name="bottom_attach">5</property>
|
123
|
-
</packing>
|
124
|
-
</child>
|
125
|
-
<child>
|
126
|
-
<object class="GtkLabel" id="label6">
|
127
|
-
<property name="visible">True</property>
|
128
|
-
<property name="can_focus">False</property>
|
129
|
-
<property name="xalign">0</property>
|
130
|
-
<property name="label" translatable="yes">Port</property>
|
131
|
-
</object>
|
132
|
-
<packing>
|
133
|
-
<property name="top_attach">1</property>
|
134
|
-
<property name="bottom_attach">2</property>
|
135
|
-
<property name="x_options">GTK_FILL</property>
|
136
|
-
<property name="y_options">GTK_FILL</property>
|
137
|
-
</packing>
|
138
|
-
</child>
|
139
|
-
<child>
|
140
|
-
<object class="GtkEntry" id="txtPort">
|
141
|
-
<property name="visible">True</property>
|
142
|
-
<property name="can_focus">True</property>
|
143
|
-
<property name="invisible_char">•</property>
|
144
|
-
<property name="primary_icon_activatable">False</property>
|
145
|
-
<property name="secondary_icon_activatable">False</property>
|
146
|
-
<property name="primary_icon_sensitive">True</property>
|
147
|
-
<property name="secondary_icon_sensitive">True</property>
|
148
|
-
</object>
|
149
|
-
<packing>
|
150
|
-
<property name="left_attach">1</property>
|
151
|
-
<property name="right_attach">2</property>
|
152
|
-
<property name="top_attach">1</property>
|
153
|
-
<property name="bottom_attach">2</property>
|
154
|
-
</packing>
|
155
|
-
</child>
|
156
|
-
<child>
|
157
|
-
<object class="GtkCheckButton" id="cbSSL">
|
158
|
-
<property name="label" translatable="yes">SSL</property>
|
159
|
-
<property name="visible">True</property>
|
160
|
-
<property name="can_focus">True</property>
|
161
|
-
<property name="receives_default">False</property>
|
162
|
-
<property name="use_action_appearance">False</property>
|
163
|
-
<property name="draw_indicator">True</property>
|
164
|
-
</object>
|
165
|
-
<packing>
|
166
|
-
<property name="right_attach">2</property>
|
167
|
-
<property name="top_attach">2</property>
|
168
|
-
<property name="bottom_attach">3</property>
|
169
|
-
</packing>
|
170
|
-
</child>
|
34
|
+
<property name="xalign">0</property>
|
35
|
+
<property name="label" translatable="yes">Host</property>
|
171
36
|
</object>
|
172
37
|
<packing>
|
173
|
-
<property name="
|
174
|
-
|
175
|
-
|
38
|
+
<property name="x_options">GTK_FILL</property>
|
39
|
+
</packing>
|
40
|
+
</child>
|
41
|
+
<child>
|
42
|
+
<object class="GtkLabel" id="label5">
|
43
|
+
<property name="visible">True</property>
|
44
|
+
<property name="can_focus">False</property>
|
45
|
+
<property name="xalign">0</property>
|
46
|
+
<property name="label" translatable="yes">Username</property>
|
47
|
+
</object>
|
48
|
+
<packing>
|
49
|
+
<property name="top_attach">3</property>
|
50
|
+
<property name="bottom_attach">4</property>
|
51
|
+
<property name="x_options">GTK_FILL</property>
|
52
|
+
<property name="y_options">GTK_FILL</property>
|
53
|
+
</packing>
|
54
|
+
</child>
|
55
|
+
<child>
|
56
|
+
<object class="GtkEntry" id="txtHost">
|
57
|
+
<property name="visible">True</property>
|
58
|
+
<property name="can_focus">True</property>
|
59
|
+
<property name="invisible_char">•</property>
|
60
|
+
<property name="invisible_char_set">True</property>
|
61
|
+
<property name="primary_icon_activatable">False</property>
|
62
|
+
<property name="secondary_icon_activatable">False</property>
|
63
|
+
<property name="primary_icon_sensitive">True</property>
|
64
|
+
<property name="secondary_icon_sensitive">True</property>
|
65
|
+
</object>
|
66
|
+
<packing>
|
67
|
+
<property name="left_attach">1</property>
|
68
|
+
<property name="right_attach">2</property>
|
69
|
+
</packing>
|
70
|
+
</child>
|
71
|
+
<child>
|
72
|
+
<object class="GtkEntry" id="txtUsername">
|
73
|
+
<property name="visible">True</property>
|
74
|
+
<property name="can_focus">True</property>
|
75
|
+
<property name="invisible_char">•</property>
|
76
|
+
<property name="invisible_char_set">True</property>
|
77
|
+
<property name="primary_icon_activatable">False</property>
|
78
|
+
<property name="secondary_icon_activatable">False</property>
|
79
|
+
<property name="primary_icon_sensitive">True</property>
|
80
|
+
<property name="secondary_icon_sensitive">True</property>
|
81
|
+
</object>
|
82
|
+
<packing>
|
83
|
+
<property name="left_attach">1</property>
|
84
|
+
<property name="right_attach">2</property>
|
85
|
+
<property name="top_attach">3</property>
|
86
|
+
<property name="bottom_attach">4</property>
|
87
|
+
</packing>
|
88
|
+
</child>
|
89
|
+
<child>
|
90
|
+
<object class="GtkLabel" id="label6">
|
91
|
+
<property name="visible">True</property>
|
92
|
+
<property name="can_focus">False</property>
|
93
|
+
<property name="xalign">0</property>
|
94
|
+
<property name="label" translatable="yes">Password</property>
|
95
|
+
</object>
|
96
|
+
<packing>
|
97
|
+
<property name="top_attach">4</property>
|
98
|
+
<property name="bottom_attach">5</property>
|
99
|
+
<property name="x_options">GTK_FILL</property>
|
100
|
+
</packing>
|
101
|
+
</child>
|
102
|
+
<child>
|
103
|
+
<object class="GtkEntry" id="txtPassword">
|
104
|
+
<property name="visible">True</property>
|
105
|
+
<property name="can_focus">True</property>
|
106
|
+
<property name="visibility">False</property>
|
107
|
+
<property name="invisible_char">•</property>
|
108
|
+
<property name="invisible_char_set">True</property>
|
109
|
+
<property name="primary_icon_activatable">False</property>
|
110
|
+
<property name="secondary_icon_activatable">False</property>
|
111
|
+
<property name="primary_icon_sensitive">True</property>
|
112
|
+
<property name="secondary_icon_sensitive">True</property>
|
113
|
+
</object>
|
114
|
+
<packing>
|
115
|
+
<property name="left_attach">1</property>
|
116
|
+
<property name="right_attach">2</property>
|
117
|
+
<property name="top_attach">4</property>
|
118
|
+
<property name="bottom_attach">5</property>
|
119
|
+
</packing>
|
120
|
+
</child>
|
121
|
+
<child>
|
122
|
+
<object class="GtkLabel" id="label7">
|
123
|
+
<property name="visible">True</property>
|
124
|
+
<property name="can_focus">False</property>
|
125
|
+
<property name="xalign">0</property>
|
126
|
+
<property name="label" translatable="yes">Port</property>
|
127
|
+
</object>
|
128
|
+
<packing>
|
129
|
+
<property name="top_attach">1</property>
|
130
|
+
<property name="bottom_attach">2</property>
|
131
|
+
<property name="x_options">GTK_FILL</property>
|
132
|
+
<property name="y_options">GTK_FILL</property>
|
133
|
+
</packing>
|
134
|
+
</child>
|
135
|
+
<child>
|
136
|
+
<object class="GtkEntry" id="txtPort">
|
137
|
+
<property name="visible">True</property>
|
138
|
+
<property name="can_focus">True</property>
|
139
|
+
<property name="invisible_char">•</property>
|
140
|
+
<property name="invisible_char_set">True</property>
|
141
|
+
<property name="primary_icon_activatable">False</property>
|
142
|
+
<property name="secondary_icon_activatable">False</property>
|
143
|
+
<property name="primary_icon_sensitive">True</property>
|
144
|
+
<property name="secondary_icon_sensitive">True</property>
|
145
|
+
</object>
|
146
|
+
<packing>
|
147
|
+
<property name="left_attach">1</property>
|
148
|
+
<property name="right_attach">2</property>
|
149
|
+
<property name="top_attach">1</property>
|
150
|
+
<property name="bottom_attach">2</property>
|
151
|
+
</packing>
|
152
|
+
</child>
|
153
|
+
<child>
|
154
|
+
<object class="GtkCheckButton" id="cbSSL">
|
155
|
+
<property name="label" translatable="yes">SSL</property>
|
156
|
+
<property name="visible">True</property>
|
157
|
+
<property name="can_focus">True</property>
|
158
|
+
<property name="receives_default">False</property>
|
159
|
+
<property name="use_action_appearance">False</property>
|
160
|
+
<property name="draw_indicator">True</property>
|
161
|
+
</object>
|
162
|
+
<packing>
|
163
|
+
<property name="right_attach">2</property>
|
164
|
+
<property name="top_attach">2</property>
|
165
|
+
<property name="bottom_attach">3</property>
|
176
166
|
</packing>
|
177
167
|
</child>
|
178
168
|
</object>
|
169
|
+
<packing>
|
170
|
+
<property name="expand">True</property>
|
171
|
+
<property name="fill">True</property>
|
172
|
+
<property name="position">0</property>
|
173
|
+
</packing>
|
179
174
|
</child>
|
180
175
|
</object>
|
176
|
+
<packing>
|
177
|
+
<property name="expand">True</property>
|
178
|
+
<property name="fill">True</property>
|
179
|
+
<property name="position">0</property>
|
180
|
+
</packing>
|
181
181
|
</child>
|
182
|
-
<child
|
183
|
-
<object class="
|
182
|
+
<child>
|
183
|
+
<object class="GtkHButtonBox" id="hbuttonbox1">
|
184
184
|
<property name="visible">True</property>
|
185
185
|
<property name="can_focus">False</property>
|
186
|
-
<property name="
|
187
|
-
<property name="
|
188
|
-
<
|
186
|
+
<property name="spacing">3</property>
|
187
|
+
<property name="layout_style">end</property>
|
188
|
+
<child>
|
189
|
+
<object class="GtkButton" id="btnTest">
|
190
|
+
<property name="label" translatable="yes">Test</property>
|
191
|
+
<property name="visible">True</property>
|
192
|
+
<property name="can_focus">True</property>
|
193
|
+
<property name="receives_default">True</property>
|
194
|
+
<property name="use_action_appearance">False</property>
|
195
|
+
<signal name="clicked" handler="on_btnTest_clicked" swapped="no"/>
|
196
|
+
</object>
|
197
|
+
<packing>
|
198
|
+
<property name="expand">False</property>
|
199
|
+
<property name="fill">False</property>
|
200
|
+
<property name="position">0</property>
|
201
|
+
</packing>
|
202
|
+
</child>
|
203
|
+
<child>
|
204
|
+
<object class="GtkButton" id="btnSave">
|
205
|
+
<property name="label">gtk-save</property>
|
206
|
+
<property name="visible">True</property>
|
207
|
+
<property name="can_focus">True</property>
|
208
|
+
<property name="receives_default">True</property>
|
209
|
+
<property name="use_action_appearance">False</property>
|
210
|
+
<property name="use_stock">True</property>
|
211
|
+
<signal name="clicked" handler="on_btnSave_clicked" swapped="no"/>
|
212
|
+
</object>
|
213
|
+
<packing>
|
214
|
+
<property name="expand">False</property>
|
215
|
+
<property name="fill">False</property>
|
216
|
+
<property name="position">1</property>
|
217
|
+
</packing>
|
218
|
+
</child>
|
189
219
|
</object>
|
220
|
+
<packing>
|
221
|
+
<property name="expand">False</property>
|
222
|
+
<property name="fill">True</property>
|
223
|
+
<property name="position">1</property>
|
224
|
+
</packing>
|
190
225
|
</child>
|
226
|
+
<child>
|
227
|
+
<object class="GtkLabel" id="label9">
|
228
|
+
<property name="visible">True</property>
|
229
|
+
<property name="can_focus">False</property>
|
230
|
+
</object>
|
231
|
+
<packing>
|
232
|
+
<property name="expand">True</property>
|
233
|
+
<property name="fill">True</property>
|
234
|
+
<property name="position">2</property>
|
235
|
+
</packing>
|
236
|
+
</child>
|
237
|
+
</object>
|
238
|
+
</child>
|
239
|
+
<child type="tab">
|
240
|
+
<object class="GtkLabel" id="label1">
|
241
|
+
<property name="visible">True</property>
|
242
|
+
<property name="can_focus">False</property>
|
243
|
+
<property name="label" translatable="yes">OpenAll</property>
|
191
244
|
</object>
|
192
245
|
<packing>
|
193
|
-
<property name="
|
194
|
-
<property name="fill">True</property>
|
195
|
-
<property name="position">0</property>
|
246
|
+
<property name="tab_fill">False</property>
|
196
247
|
</packing>
|
197
248
|
</child>
|
198
249
|
<child>
|
199
|
-
<object class="
|
250
|
+
<object class="GtkVBox" id="vbox3">
|
200
251
|
<property name="visible">True</property>
|
201
252
|
<property name="can_focus">False</property>
|
202
|
-
<property name="spacing">3</property>
|
203
|
-
<property name="layout_style">end</property>
|
204
253
|
<child>
|
205
|
-
<object class="
|
206
|
-
<property name="label" translatable="yes">Test</property>
|
254
|
+
<object class="GtkVBox" id="vbox4">
|
207
255
|
<property name="visible">True</property>
|
208
|
-
<property name="can_focus">
|
209
|
-
<
|
210
|
-
|
211
|
-
|
256
|
+
<property name="can_focus">False</property>
|
257
|
+
<child>
|
258
|
+
<object class="GtkTable" id="table2">
|
259
|
+
<property name="visible">True</property>
|
260
|
+
<property name="can_focus">False</property>
|
261
|
+
<property name="n_rows">2</property>
|
262
|
+
<property name="n_columns">2</property>
|
263
|
+
<property name="column_spacing">3</property>
|
264
|
+
<property name="row_spacing">3</property>
|
265
|
+
<child>
|
266
|
+
<object class="GtkCheckButton" id="cbReminderEnabled">
|
267
|
+
<property name="label" translatable="yes">Reminder enabled</property>
|
268
|
+
<property name="visible">True</property>
|
269
|
+
<property name="can_focus">True</property>
|
270
|
+
<property name="receives_default">False</property>
|
271
|
+
<property name="use_action_appearance">False</property>
|
272
|
+
<property name="draw_indicator">True</property>
|
273
|
+
</object>
|
274
|
+
<packing>
|
275
|
+
<property name="right_attach">2</property>
|
276
|
+
</packing>
|
277
|
+
</child>
|
278
|
+
<child>
|
279
|
+
<object class="GtkLabel" id="label8">
|
280
|
+
<property name="visible">True</property>
|
281
|
+
<property name="can_focus">False</property>
|
282
|
+
<property name="xalign">0</property>
|
283
|
+
<property name="label" translatable="yes">Remind every minute</property>
|
284
|
+
</object>
|
285
|
+
<packing>
|
286
|
+
<property name="top_attach">1</property>
|
287
|
+
<property name="bottom_attach">2</property>
|
288
|
+
<property name="x_options">GTK_FILL</property>
|
289
|
+
<property name="y_options">GTK_FILL</property>
|
290
|
+
</packing>
|
291
|
+
</child>
|
292
|
+
<child>
|
293
|
+
<object class="GtkEntry" id="txtReminderEveryMinute">
|
294
|
+
<property name="visible">True</property>
|
295
|
+
<property name="can_focus">True</property>
|
296
|
+
<property name="invisible_char">•</property>
|
297
|
+
<property name="primary_icon_activatable">False</property>
|
298
|
+
<property name="secondary_icon_activatable">False</property>
|
299
|
+
<property name="primary_icon_sensitive">True</property>
|
300
|
+
<property name="secondary_icon_sensitive">True</property>
|
301
|
+
</object>
|
302
|
+
<packing>
|
303
|
+
<property name="left_attach">1</property>
|
304
|
+
<property name="right_attach">2</property>
|
305
|
+
<property name="top_attach">1</property>
|
306
|
+
<property name="bottom_attach">2</property>
|
307
|
+
</packing>
|
308
|
+
</child>
|
309
|
+
</object>
|
310
|
+
<packing>
|
311
|
+
<property name="expand">True</property>
|
312
|
+
<property name="fill">True</property>
|
313
|
+
<property name="position">0</property>
|
314
|
+
</packing>
|
315
|
+
</child>
|
316
|
+
<child>
|
317
|
+
<object class="GtkHButtonBox" id="hbuttonbox2">
|
318
|
+
<property name="visible">True</property>
|
319
|
+
<property name="can_focus">False</property>
|
320
|
+
<property name="spacing">3</property>
|
321
|
+
<property name="layout_style">end</property>
|
322
|
+
<child>
|
323
|
+
<object class="GtkButton" id="btnReminderSave">
|
324
|
+
<property name="label">gtk-save</property>
|
325
|
+
<property name="visible">True</property>
|
326
|
+
<property name="can_focus">True</property>
|
327
|
+
<property name="receives_default">True</property>
|
328
|
+
<property name="use_action_appearance">False</property>
|
329
|
+
<property name="use_stock">True</property>
|
330
|
+
<signal name="clicked" handler="on_btnReminderSave_clicked" swapped="no"/>
|
331
|
+
</object>
|
332
|
+
<packing>
|
333
|
+
<property name="expand">False</property>
|
334
|
+
<property name="fill">False</property>
|
335
|
+
<property name="position">0</property>
|
336
|
+
</packing>
|
337
|
+
</child>
|
338
|
+
</object>
|
339
|
+
<packing>
|
340
|
+
<property name="expand">True</property>
|
341
|
+
<property name="fill">True</property>
|
342
|
+
<property name="position">1</property>
|
343
|
+
</packing>
|
344
|
+
</child>
|
212
345
|
</object>
|
213
346
|
<packing>
|
214
347
|
<property name="expand">False</property>
|
215
|
-
<property name="fill">
|
348
|
+
<property name="fill">True</property>
|
216
349
|
<property name="position">0</property>
|
217
350
|
</packing>
|
218
351
|
</child>
|
219
352
|
<child>
|
220
|
-
<object class="
|
221
|
-
<property name="label">gtk-save</property>
|
353
|
+
<object class="GtkLabel" id="label3">
|
222
354
|
<property name="visible">True</property>
|
223
|
-
<property name="can_focus">
|
224
|
-
<property name="receives_default">True</property>
|
225
|
-
<property name="use_action_appearance">False</property>
|
226
|
-
<property name="use_stock">True</property>
|
227
|
-
<signal name="clicked" handler="on_btnSave_clicked" swapped="no"/>
|
355
|
+
<property name="can_focus">False</property>
|
228
356
|
</object>
|
229
357
|
<packing>
|
230
|
-
<property name="expand">
|
231
|
-
<property name="fill">
|
358
|
+
<property name="expand">True</property>
|
359
|
+
<property name="fill">True</property>
|
232
360
|
<property name="position">1</property>
|
233
361
|
</packing>
|
234
362
|
</child>
|
235
363
|
</object>
|
236
364
|
<packing>
|
237
|
-
<property name="expand">False</property>
|
238
|
-
<property name="fill">True</property>
|
239
365
|
<property name="position">1</property>
|
240
366
|
</packing>
|
241
367
|
</child>
|
368
|
+
<child type="tab">
|
369
|
+
<object class="GtkLabel" id="label2">
|
370
|
+
<property name="visible">True</property>
|
371
|
+
<property name="can_focus">False</property>
|
372
|
+
<property name="label" translatable="yes">Reminder</property>
|
373
|
+
</object>
|
374
|
+
<packing>
|
375
|
+
<property name="position">1</property>
|
376
|
+
<property name="tab_fill">False</property>
|
377
|
+
</packing>
|
378
|
+
</child>
|
242
379
|
<child>
|
243
|
-
<object class="
|
380
|
+
<object class="GtkVBox" id="vbox5">
|
381
|
+
<property name="visible">True</property>
|
382
|
+
<property name="can_focus">False</property>
|
383
|
+
<child>
|
384
|
+
<object class="GtkVBox" id="vbox6">
|
385
|
+
<property name="visible">True</property>
|
386
|
+
<property name="can_focus">False</property>
|
387
|
+
<property name="spacing">3</property>
|
388
|
+
<child>
|
389
|
+
<object class="GtkTable" id="table3">
|
390
|
+
<property name="visible">True</property>
|
391
|
+
<property name="can_focus">False</property>
|
392
|
+
<property name="n_columns">2</property>
|
393
|
+
<child>
|
394
|
+
<object class="GtkLabel" id="label12">
|
395
|
+
<property name="visible">True</property>
|
396
|
+
<property name="can_focus">False</property>
|
397
|
+
<property name="xalign">0</property>
|
398
|
+
<property name="label" translatable="yes">Text color</property>
|
399
|
+
</object>
|
400
|
+
<packing>
|
401
|
+
<property name="x_options">GTK_FILL</property>
|
402
|
+
<property name="y_options">GTK_FILL</property>
|
403
|
+
</packing>
|
404
|
+
</child>
|
405
|
+
<child>
|
406
|
+
<object class="GtkComboBox" id="cbTrayTextColor">
|
407
|
+
<property name="visible">True</property>
|
408
|
+
<property name="can_focus">False</property>
|
409
|
+
</object>
|
410
|
+
<packing>
|
411
|
+
<property name="left_attach">1</property>
|
412
|
+
<property name="right_attach">2</property>
|
413
|
+
<property name="y_options">GTK_FILL</property>
|
414
|
+
</packing>
|
415
|
+
</child>
|
416
|
+
</object>
|
417
|
+
<packing>
|
418
|
+
<property name="expand">True</property>
|
419
|
+
<property name="fill">True</property>
|
420
|
+
<property name="position">0</property>
|
421
|
+
</packing>
|
422
|
+
</child>
|
423
|
+
<child>
|
424
|
+
<object class="GtkHButtonBox" id="hbuttonbox3">
|
425
|
+
<property name="visible">True</property>
|
426
|
+
<property name="can_focus">False</property>
|
427
|
+
<property name="layout_style">end</property>
|
428
|
+
<child>
|
429
|
+
<object class="GtkButton" id="btnTraySave">
|
430
|
+
<property name="label">gtk-save</property>
|
431
|
+
<property name="visible">True</property>
|
432
|
+
<property name="can_focus">True</property>
|
433
|
+
<property name="receives_default">True</property>
|
434
|
+
<property name="use_action_appearance">False</property>
|
435
|
+
<property name="use_stock">True</property>
|
436
|
+
<signal name="clicked" handler="on_btnTraySave_clicked" swapped="no"/>
|
437
|
+
</object>
|
438
|
+
<packing>
|
439
|
+
<property name="expand">False</property>
|
440
|
+
<property name="fill">False</property>
|
441
|
+
<property name="position">0</property>
|
442
|
+
</packing>
|
443
|
+
</child>
|
444
|
+
</object>
|
445
|
+
<packing>
|
446
|
+
<property name="expand">True</property>
|
447
|
+
<property name="fill">True</property>
|
448
|
+
<property name="position">1</property>
|
449
|
+
</packing>
|
450
|
+
</child>
|
451
|
+
</object>
|
452
|
+
<packing>
|
453
|
+
<property name="expand">False</property>
|
454
|
+
<property name="fill">True</property>
|
455
|
+
<property name="position">0</property>
|
456
|
+
</packing>
|
457
|
+
</child>
|
458
|
+
<child>
|
459
|
+
<object class="GtkLabel" id="label11">
|
460
|
+
<property name="visible">True</property>
|
461
|
+
<property name="can_focus">False</property>
|
462
|
+
</object>
|
463
|
+
<packing>
|
464
|
+
<property name="expand">True</property>
|
465
|
+
<property name="fill">True</property>
|
466
|
+
<property name="position">1</property>
|
467
|
+
</packing>
|
468
|
+
</child>
|
469
|
+
</object>
|
470
|
+
<packing>
|
471
|
+
<property name="position">2</property>
|
472
|
+
</packing>
|
473
|
+
</child>
|
474
|
+
<child type="tab">
|
475
|
+
<object class="GtkLabel" id="label10">
|
244
476
|
<property name="visible">True</property>
|
245
477
|
<property name="can_focus">False</property>
|
478
|
+
<property name="label" translatable="yes">Tray</property>
|
246
479
|
</object>
|
247
480
|
<packing>
|
248
|
-
<property name="expand">True</property>
|
249
|
-
<property name="fill">True</property>
|
250
481
|
<property name="position">2</property>
|
482
|
+
<property name="tab_fill">False</property>
|
251
483
|
</packing>
|
252
484
|
</child>
|
253
485
|
</object>
|
data/gui/trayicon.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
#This class controls the behaviour around the trayicon.
|
1
2
|
class Openall_time_applet::Gui::Trayicon
|
2
3
|
attr_reader :args
|
3
4
|
|
@@ -5,8 +6,77 @@ class Openall_time_applet::Gui::Trayicon
|
|
5
6
|
@args = args
|
6
7
|
|
7
8
|
@ti = Gtk::StatusIcon.new
|
8
|
-
@ti.file = "../gfx/icon_time.png"
|
9
9
|
@ti.signal_connect("popup-menu", &self.method(:on_statusicon_rightclick))
|
10
|
+
self.update_icon
|
11
|
+
|
12
|
+
#Start icon-updater-thread.
|
13
|
+
self.icon_updater
|
14
|
+
end
|
15
|
+
|
16
|
+
#This methods starts the thread that updates the tray-icon.
|
17
|
+
def icon_updater
|
18
|
+
Knj::Thread.new do
|
19
|
+
loop do
|
20
|
+
self.update_icon
|
21
|
+
sleep 60
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
#This updates the icon in the system-tray. It draws seconds on the icon, if a timelog is being tracked.
|
27
|
+
def update_icon
|
28
|
+
if !@args[:oata].timelog_active
|
29
|
+
@ti.file = "../gfx/icon_time.png"
|
30
|
+
return nil
|
31
|
+
end
|
32
|
+
|
33
|
+
#Calculate minutes tracked and generate variables.
|
34
|
+
secs = Time.now.to_i - @args[:oata].timelog_active_time.to_i
|
35
|
+
mins = (secs.to_f / 60.0)
|
36
|
+
mins = 1 if mins < 1
|
37
|
+
|
38
|
+
if mins >= 60
|
39
|
+
hours = mins / 60
|
40
|
+
text = "#{Knj::Locales.number_out(hours, 1)}t"
|
41
|
+
else
|
42
|
+
text = "#{Knj::Locales.number_out(mins, 0)}m"
|
43
|
+
end
|
44
|
+
|
45
|
+
if text.length <= 2
|
46
|
+
padding_left = 9
|
47
|
+
elsif text.length <= 3
|
48
|
+
padding_left = 4
|
49
|
+
elsif text.length <= 4
|
50
|
+
padding_left = 2
|
51
|
+
else
|
52
|
+
padding_left = 0
|
53
|
+
end
|
54
|
+
|
55
|
+
#Generate image.
|
56
|
+
require "RMagick"
|
57
|
+
canvas = Magick::Image.new(53, 48){
|
58
|
+
self.background_color = "transparent"
|
59
|
+
self.format = "png"
|
60
|
+
}
|
61
|
+
|
62
|
+
color = Knj::Opts.get("tray_text_color")
|
63
|
+
color = "black" if color.to_s.strip.length <= 0
|
64
|
+
|
65
|
+
gc = Magick::Draw.new
|
66
|
+
gc.fill(color)
|
67
|
+
gc.pointsize = 23
|
68
|
+
gc.text(padding_left, 35, text)
|
69
|
+
gc.draw(canvas)
|
70
|
+
|
71
|
+
tmp_path = "#{Knj::Os.tmpdir}/openall_time_applet_icon.png"
|
72
|
+
canvas.write(tmp_path)
|
73
|
+
canvas.destroy!
|
74
|
+
|
75
|
+
#Set icon for tray.
|
76
|
+
@ti.file = tmp_path
|
77
|
+
|
78
|
+
|
79
|
+
return nil
|
10
80
|
end
|
11
81
|
|
12
82
|
def on_statusicon_rightclick(tray, button, time)
|
data/gui/win_preferences.rb
CHANGED
@@ -15,16 +15,21 @@ class Openall_time_applet::Gui::Win_preferences
|
|
15
15
|
|
16
16
|
#Loads values from database into widgets.
|
17
17
|
def load_values
|
18
|
+
#OpenAll settings.
|
18
19
|
@gui["txtHost"].text = Knj::Opts.get("openall_host")
|
19
20
|
@gui["txtPort"].text = Knj::Opts.get("openall_port")
|
20
21
|
@gui["txtUsername"].text = Knj::Opts.get("openall_username")
|
21
22
|
@gui["txtPassword"].text = Base64.strict_decode64(Knj::Opts.get("openall_password"))
|
23
|
+
@gui["cbSSL"].active = Knj::Strings.yn_str(Knj::Opts.get("openall_ssl"), true, false)
|
22
24
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
25
|
+
#Reminder settings.
|
26
|
+
@gui["cbReminderEnabled"].active = Knj::Strings.yn_str(Knj::Opts.get("reminder_enabled"), true, false)
|
27
|
+
@gui["txtReminderEveryMinute"].text = Knj::Opts.get("reminder_every_minute")
|
28
|
+
|
29
|
+
#Tray settings.
|
30
|
+
@tray_colors = {"black" => _("Black"), "white" => _("White")}
|
31
|
+
@gui["cbTrayTextColor"].init(@tray_colors.values)
|
32
|
+
@gui["cbTrayTextColor"].sel = @tray_colors[Knj::Opts.get("tray_text_color")] if Knj::Opts.get("tray_text_color").to_s.strip.length > 0
|
28
33
|
end
|
29
34
|
|
30
35
|
#Saves values from widgets into database.
|
@@ -34,7 +39,28 @@ class Openall_time_applet::Gui::Win_preferences
|
|
34
39
|
Knj::Opts.set("openall_ssl", Knj::Strings.yn_str(@gui["cbSSL"].active?, 1, 0))
|
35
40
|
Knj::Opts.set("openall_username", @gui["txtUsername"].text)
|
36
41
|
Knj::Opts.set("openall_password", Base64.strict_encode64(@gui["txtPassword"].text))
|
37
|
-
|
42
|
+
Knj::Gtk2.msgbox(_("The OpenAll-settings was saved."), "info")
|
43
|
+
end
|
44
|
+
|
45
|
+
def on_btnReminderSave_clicked
|
46
|
+
if !Knj::Php.is_numeric(@gui["txtReminderEveryMinute"].text)
|
47
|
+
Knj::Gtk2.msgbox(_("Reminder-minute was not numeric."))
|
48
|
+
return nil
|
49
|
+
end
|
50
|
+
|
51
|
+
Knj::Opts.set("reminder_enabled", Knj::Strings.yn_str(@gui["cbReminderEnabled"].active?, 1, 0))
|
52
|
+
Knj::Opts.set("reminder_every_minute", @gui["txtReminderEveryMinute"].text)
|
53
|
+
|
54
|
+
#Reset reminder.
|
55
|
+
@args[:oata].reminder_next = nil
|
56
|
+
|
57
|
+
Knj::Gtk2.msgbox(_("The reminder-settings was saved."), "info")
|
58
|
+
end
|
59
|
+
|
60
|
+
def on_btnTraySave_clicked
|
61
|
+
color_key = @tray_colors.keys[@gui["cbTrayTextColor"].sel["active"]]
|
62
|
+
Knj::Opts.set("tray_text_color", color_key)
|
63
|
+
Knj::Gtk2.msgbox(_("The tray-settings was saved."), "info")
|
38
64
|
end
|
39
65
|
|
40
66
|
#Tries to connect to OpenAll with the given information and receive a task-list as well to validate information and connectivity.
|
data/gui/win_timelog_edit.rb
CHANGED
@@ -34,6 +34,11 @@ class Openall_time_applet::Gui::Win_worktime_overview
|
|
34
34
|
stats[:days_total][date.date][:secs] += wt[:worktime].to_i
|
35
35
|
stats[:days_total][date.date][:tasks][task.id] = task
|
36
36
|
|
37
|
+
#Generate first worktime of that date.
|
38
|
+
if !stats[:days_total][date.date].key?(:first_time) or stats[:days_total][date.date][:first_time].to_i > wt.timestamp.to_i
|
39
|
+
stats[:days_total][date.date][:first_time] = wt.timestamp
|
40
|
+
end
|
41
|
+
|
37
42
|
stats[:week_total] += wt[:worktime].to_i
|
38
43
|
end
|
39
44
|
|
@@ -46,6 +51,7 @@ class Openall_time_applet::Gui::Win_worktime_overview
|
|
46
51
|
#Draw top total-row.
|
47
52
|
week_total_title = Gtk::Label.new
|
48
53
|
week_total_title.markup = "<b>#{sprintf(_("Week total: %s hours"), Knj::Locales.number_out(stats[:week_total].to_f / 3600.0, 2))}</b>"
|
54
|
+
week_total_title.selectable = true
|
49
55
|
table.attach(week_total_title, 0, 5, row, row + 1)
|
50
56
|
row += 1
|
51
57
|
|
@@ -60,31 +66,37 @@ class Openall_time_applet::Gui::Win_worktime_overview
|
|
60
66
|
date = Knj::Datet.in(Time.new(date.year, date.month, day_no))
|
61
67
|
|
62
68
|
day_title = Gtk::Label.new
|
63
|
-
day_title.markup = "<b>#{date.
|
69
|
+
day_title.markup = "<b>#{date.day_str(:short => true)} #{date.time.strftime("%d/%m")} - #{stats[:days_total][day_no][:first_time].time.strftime("%H:%M")}</b>"
|
64
70
|
day_title.xalign = 0
|
71
|
+
day_title.selectable = true
|
65
72
|
|
66
73
|
day_sum_float = stats[:days_total][day_no][:secs].to_f / 3600.to_f
|
67
74
|
day_sum = Gtk::Label.new
|
68
75
|
day_sum.markup = "<b>#{Knj::Locales.number_out(day_sum_float, 2)}</b>"
|
69
76
|
day_sum.xalign = 1
|
77
|
+
day_sum.selectable = true
|
70
78
|
|
71
79
|
table.attach(day_title, 0, 3, row, row + 1)
|
72
80
|
table.attach(day_sum, 4, 5, row, row + 1)
|
73
81
|
row += 1
|
74
82
|
|
75
83
|
stats[:days_total][day_no][:tasks].each do |task_id, task|
|
76
|
-
uid_title = Gtk::Label.new(
|
84
|
+
uid_title = Gtk::Label.new(task[:openall_uid].to_s)
|
77
85
|
uid_title.xalign = 0
|
86
|
+
uid_title.selectable = true
|
78
87
|
|
79
88
|
task_title = Gtk::Label.new(task.title)
|
80
89
|
task_title.xalign = 0
|
90
|
+
task_title.selectable = true
|
81
91
|
|
82
92
|
task_sum_float = stats[:task_total][task_id][:secs].to_f / 3600.to_f
|
83
93
|
task_sum = Gtk::Label.new(Knj::Locales.number_out(task_sum_float, 2))
|
84
94
|
task_sum.xalign = 1
|
95
|
+
task_sum.selectable = true
|
85
96
|
|
86
97
|
company_title = Gtk::Label.new(task.organisation_name)
|
87
98
|
company_title.xalign = 0
|
99
|
+
company_title.selectable = true
|
88
100
|
|
89
101
|
table.attach(Gtk::Label.new(""), 0, 1, row, row + 1)
|
90
102
|
table.attach(uid_title, 1, 2, row, row + 1)
|
data/lib/openall_time_applet.rb
CHANGED
@@ -59,6 +59,7 @@ class Openall_time_applet
|
|
59
59
|
|
60
60
|
#Various readable variables.
|
61
61
|
attr_reader :db, :ob, :timelog_active, :timelog_active_time
|
62
|
+
attr_accessor :reminder_next
|
62
63
|
|
63
64
|
#Config controlling paths and more.
|
64
65
|
CONFIG = {
|
@@ -95,6 +96,9 @@ class Openall_time_applet
|
|
95
96
|
|
96
97
|
#Set crash-operation to save tracked time instead of loosing it.
|
97
98
|
Kernel.at_exit(&self.method(:destroy))
|
99
|
+
|
100
|
+
#Start reminder.
|
101
|
+
self.reminding
|
98
102
|
end
|
99
103
|
|
100
104
|
#Updates the database according to the db-schema.
|
@@ -103,6 +107,32 @@ class Openall_time_applet
|
|
103
107
|
Knj::Db::Revision.new.init_db("db" => @db, "schema" => Openall_time_applet::DB_SCHEMA)
|
104
108
|
end
|
105
109
|
|
110
|
+
#This method starts the reminder-thread, that checks if a reminder should be shown.
|
111
|
+
def reminding
|
112
|
+
Knj::Thread.new do
|
113
|
+
loop do
|
114
|
+
enabled = Knj::Strings.yn_str(Knj::Opts.get("reminder_enabled"), true, false)
|
115
|
+
if enabled and !@reminder_next
|
116
|
+
@reminder_next = Knj::Datet.new
|
117
|
+
@reminder_next.mins + Knj::Opts.get("reminder_every_minute").to_i
|
118
|
+
elsif enabled and @reminder_next and Time.now >= @reminder_next
|
119
|
+
self.reminding_exec
|
120
|
+
@reminder_next = nil
|
121
|
+
end
|
122
|
+
|
123
|
+
sleep 30
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
127
|
+
return nil
|
128
|
+
end
|
129
|
+
|
130
|
+
#This executes the notification that notifies if a timelog is being tracked.
|
131
|
+
def reminding_exec
|
132
|
+
return nil unless @timelog_active
|
133
|
+
Knj::Notify.send("time" => 5, "msg" => sprintf(_("Tracking task: %s"), @timelog_active[:descr]))
|
134
|
+
end
|
135
|
+
|
106
136
|
#Creates a connection to OpenAll, logs in, yields the connection and destroys it again.
|
107
137
|
#===Examples
|
108
138
|
# oata.oa_conn do |conn|
|
@@ -220,6 +250,7 @@ class Openall_time_applet
|
|
220
250
|
|
221
251
|
@timelog_active = nil
|
222
252
|
@timelog_active_time = nil
|
253
|
+
@ti.update_icon if @ti
|
223
254
|
end
|
224
255
|
|
225
256
|
#Sets a new timelog to track. Stops tracking of previous timelog if already tracking.
|
@@ -228,6 +259,7 @@ class Openall_time_applet
|
|
228
259
|
|
229
260
|
@timelog_active = timelog
|
230
261
|
@timelog_active_time = Time.new
|
262
|
+
@ti.update_icon if @ti
|
231
263
|
end
|
232
264
|
|
233
265
|
#Saves tracking-status if tracking. Stops Gtks main loop.
|
Binary file
|
@@ -1,8 +1,8 @@
|
|
1
1
|
msgid ""
|
2
2
|
msgstr ""
|
3
3
|
"Project-Id-Version: Openall_time_applet\n"
|
4
|
-
"POT-Creation-Date: 2012-05-21
|
5
|
-
"PO-Revision-Date: 2012-05-21
|
4
|
+
"POT-Creation-Date: 2012-05-21 13:20+0100\n"
|
5
|
+
"PO-Revision-Date: 2012-05-21 13:20+0100\n"
|
6
6
|
"Last-Translator: Kasper Johansen <k@spernj.org>\n"
|
7
7
|
"Language-Team: Kasper Johansen <k@spernj.org>\n"
|
8
8
|
"Language: \n"
|
@@ -28,6 +28,34 @@ msgstr "Tom body returneret fra OpenAll."
|
|
28
28
|
msgid "Could not parse JSON from: %s"
|
29
29
|
msgstr "Kunne ikke oversætte JSON fra: %s"
|
30
30
|
|
31
|
+
#: classes/translations.rb:4
|
32
|
+
msgid "Monday"
|
33
|
+
msgstr "Mandag"
|
34
|
+
|
35
|
+
#: classes/translations.rb:5
|
36
|
+
msgid "Thuesday"
|
37
|
+
msgstr "Tirsday"
|
38
|
+
|
39
|
+
#: classes/translations.rb:6
|
40
|
+
msgid "Wednesday"
|
41
|
+
msgstr "Onsdag"
|
42
|
+
|
43
|
+
#: classes/translations.rb:7
|
44
|
+
msgid "Thursday"
|
45
|
+
msgstr "Torsday"
|
46
|
+
|
47
|
+
#: classes/translations.rb:8
|
48
|
+
msgid "Friday"
|
49
|
+
msgstr "Freday"
|
50
|
+
|
51
|
+
#: classes/translations.rb:9
|
52
|
+
msgid "Saturday"
|
53
|
+
msgstr "Lørday"
|
54
|
+
|
55
|
+
#: classes/translations.rb:10
|
56
|
+
msgid "Sunday"
|
57
|
+
msgstr "Søndag"
|
58
|
+
|
31
59
|
#: gui/trayicon.rb:15
|
32
60
|
msgid "New timelog"
|
33
61
|
msgstr "Ny tidslog"
|
data/openall_time_applet.gemspec
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{openall_time_applet}
|
8
|
-
s.version = "0.0.
|
8
|
+
s.version = "0.0.5"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Kasper Johansen"]
|
@@ -29,6 +29,7 @@ Gem::Specification.new do |s|
|
|
29
29
|
"VERSION",
|
30
30
|
"bin/openall_time_applet.rb",
|
31
31
|
"classes/connection.rb",
|
32
|
+
"classes/translations.rb",
|
32
33
|
"conf/db_schema.rb",
|
33
34
|
"gfx/icon_time.png",
|
34
35
|
"glade/win_overview.glade",
|
@@ -66,6 +67,7 @@ Gem::Specification.new do |s|
|
|
66
67
|
s.add_runtime_dependency(%q<sqlite3>, [">= 0"])
|
67
68
|
s.add_runtime_dependency(%q<gettext>, [">= 0"])
|
68
69
|
s.add_runtime_dependency(%q<json>, [">= 0"])
|
70
|
+
s.add_runtime_dependency(%q<rmagick>, [">= 0"])
|
69
71
|
s.add_development_dependency(%q<rspec>, ["~> 2.8.0"])
|
70
72
|
s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
|
71
73
|
s.add_development_dependency(%q<bundler>, [">= 1.0.0"])
|
@@ -77,6 +79,7 @@ Gem::Specification.new do |s|
|
|
77
79
|
s.add_dependency(%q<sqlite3>, [">= 0"])
|
78
80
|
s.add_dependency(%q<gettext>, [">= 0"])
|
79
81
|
s.add_dependency(%q<json>, [">= 0"])
|
82
|
+
s.add_dependency(%q<rmagick>, [">= 0"])
|
80
83
|
s.add_dependency(%q<rspec>, ["~> 2.8.0"])
|
81
84
|
s.add_dependency(%q<rdoc>, ["~> 3.12"])
|
82
85
|
s.add_dependency(%q<bundler>, [">= 1.0.0"])
|
@@ -89,6 +92,7 @@ Gem::Specification.new do |s|
|
|
89
92
|
s.add_dependency(%q<sqlite3>, [">= 0"])
|
90
93
|
s.add_dependency(%q<gettext>, [">= 0"])
|
91
94
|
s.add_dependency(%q<json>, [">= 0"])
|
95
|
+
s.add_dependency(%q<rmagick>, [">= 0"])
|
92
96
|
s.add_dependency(%q<rspec>, ["~> 2.8.0"])
|
93
97
|
s.add_dependency(%q<rdoc>, ["~> 3.12"])
|
94
98
|
s.add_dependency(%q<bundler>, [">= 1.0.0"])
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: openall_time_applet
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.0.
|
5
|
+
version: 0.0.5
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Kasper Johansen
|
@@ -69,8 +69,19 @@ dependencies:
|
|
69
69
|
prerelease: false
|
70
70
|
version_requirements: *id005
|
71
71
|
- !ruby/object:Gem::Dependency
|
72
|
-
name:
|
72
|
+
name: rmagick
|
73
73
|
requirement: &id006 !ruby/object:Gem::Requirement
|
74
|
+
none: false
|
75
|
+
requirements:
|
76
|
+
- - ">="
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: "0"
|
79
|
+
type: :runtime
|
80
|
+
prerelease: false
|
81
|
+
version_requirements: *id006
|
82
|
+
- !ruby/object:Gem::Dependency
|
83
|
+
name: rspec
|
84
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
74
85
|
none: false
|
75
86
|
requirements:
|
76
87
|
- - ~>
|
@@ -78,10 +89,10 @@ dependencies:
|
|
78
89
|
version: 2.8.0
|
79
90
|
type: :development
|
80
91
|
prerelease: false
|
81
|
-
version_requirements: *
|
92
|
+
version_requirements: *id007
|
82
93
|
- !ruby/object:Gem::Dependency
|
83
94
|
name: rdoc
|
84
|
-
requirement: &
|
95
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
85
96
|
none: false
|
86
97
|
requirements:
|
87
98
|
- - ~>
|
@@ -89,10 +100,10 @@ dependencies:
|
|
89
100
|
version: "3.12"
|
90
101
|
type: :development
|
91
102
|
prerelease: false
|
92
|
-
version_requirements: *
|
103
|
+
version_requirements: *id008
|
93
104
|
- !ruby/object:Gem::Dependency
|
94
105
|
name: bundler
|
95
|
-
requirement: &
|
106
|
+
requirement: &id009 !ruby/object:Gem::Requirement
|
96
107
|
none: false
|
97
108
|
requirements:
|
98
109
|
- - ">="
|
@@ -100,10 +111,10 @@ dependencies:
|
|
100
111
|
version: 1.0.0
|
101
112
|
type: :development
|
102
113
|
prerelease: false
|
103
|
-
version_requirements: *
|
114
|
+
version_requirements: *id009
|
104
115
|
- !ruby/object:Gem::Dependency
|
105
116
|
name: jeweler
|
106
|
-
requirement: &
|
117
|
+
requirement: &id010 !ruby/object:Gem::Requirement
|
107
118
|
none: false
|
108
119
|
requirements:
|
109
120
|
- - ~>
|
@@ -111,10 +122,10 @@ dependencies:
|
|
111
122
|
version: 1.8.3
|
112
123
|
type: :development
|
113
124
|
prerelease: false
|
114
|
-
version_requirements: *
|
125
|
+
version_requirements: *id010
|
115
126
|
- !ruby/object:Gem::Dependency
|
116
127
|
name: rcov
|
117
|
-
requirement: &
|
128
|
+
requirement: &id011 !ruby/object:Gem::Requirement
|
118
129
|
none: false
|
119
130
|
requirements:
|
120
131
|
- - ">="
|
@@ -122,7 +133,7 @@ dependencies:
|
|
122
133
|
version: "0"
|
123
134
|
type: :development
|
124
135
|
prerelease: false
|
125
|
-
version_requirements: *
|
136
|
+
version_requirements: *id011
|
126
137
|
description: Off-line time-tracking for OpenAll with syncing when online.
|
127
138
|
email: k@spernj.org
|
128
139
|
executables:
|
@@ -143,6 +154,7 @@ files:
|
|
143
154
|
- VERSION
|
144
155
|
- bin/openall_time_applet.rb
|
145
156
|
- classes/connection.rb
|
157
|
+
- classes/translations.rb
|
146
158
|
- conf/db_schema.rb
|
147
159
|
- gfx/icon_time.png
|
148
160
|
- glade/win_overview.glade
|
@@ -178,7 +190,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
178
190
|
requirements:
|
179
191
|
- - ">="
|
180
192
|
- !ruby/object:Gem::Version
|
181
|
-
hash:
|
193
|
+
hash: -3134655013415234649
|
182
194
|
segments:
|
183
195
|
- 0
|
184
196
|
version: "0"
|