openall_time_applet 0.0.4 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- 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"
|