Merge lp:~pcabido/gtg/plugin-engine into lp:~gtg/gtg/old-trunk
- plugin-engine
- Merge into old-trunk
Proposed by
Paulo Cabido
Status: | Merged | ||||
---|---|---|---|---|---|
Merged at revision: | not available | ||||
Proposed branch: | lp:~pcabido/gtg/plugin-engine | ||||
Merge into: | lp:~gtg/gtg/old-trunk | ||||
Diff against target: | None lines | ||||
To merge this branch: | bzr merge lp:~pcabido/gtg/plugin-engine | ||||
Related bugs: |
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Bertrand Rousseau (community) | Approve | ||
Review via email: mp+9435@code.launchpad.net |
Commit message
Description of the change
To post a comment you must log in.
lp:~pcabido/gtg/plugin-engine
updated
- 303. By Paulo Cabido
-
fixed a bug in the plugin-engine, LoadPlugins and loadPlugin where changed
- 304. By Paulo Cabido
-
changed some of the names of the methos in the plugin api and corrected the plugins
- 305. By Paulo Cabido
-
fixed a small typo error in the hello world plugin and commented a debug line
- 306. By Paulo Cabido
-
commented some more debug prints on the engine
Revision history for this message
Bertrand Rousseau (bertrand-rousseau) : | # |
review:
Approve
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'AUTHORS' | |||
2 | --- AUTHORS 2009-07-24 06:16:28 +0000 | |||
3 | +++ AUTHORS 2009-07-29 15:14:01 +0000 | |||
4 | @@ -34,3 +34,4 @@ | |||
5 | 34 | * Ryan Paul <segphault@arstechnica.com> | 34 | * Ryan Paul <segphault@arstechnica.com> |
6 | 35 | * Jonathan Lange <jml@mumak.net> | 35 | * Jonathan Lange <jml@mumak.net> |
7 | 36 | * Kevin Mehall <km@kevinmehall.net> | 36 | * Kevin Mehall <km@kevinmehall.net> |
8 | 37 | * Paulo Cabido <paulo.cabido@gmail.com> | ||
9 | 37 | 38 | ||
10 | === modified file 'GTG/__init__.py' | |||
11 | --- GTG/__init__.py 2009-07-23 20:14:01 +0000 | |||
12 | +++ GTG/__init__.py 2009-07-29 15:14:01 +0000 | |||
13 | @@ -68,3 +68,9 @@ | |||
14 | 68 | DATA_DIR = DIST_ROOTDIR | 68 | DATA_DIR = DIST_ROOTDIR |
15 | 69 | else: | 69 | else: |
16 | 70 | DATA_DIR = os.path.join(LOCAL_ROOTDIR,'data') | 70 | DATA_DIR = os.path.join(LOCAL_ROOTDIR,'data') |
17 | 71 | |||
18 | 72 | #GTG plugin dir setup | ||
19 | 73 | if not os.path.isdir( os.path.join(LOCAL_ROOTDIR,'GTG/plugins/') ) : | ||
20 | 74 | PLUGIN_DIR = [DIST_ROOTDIR] | ||
21 | 75 | else: | ||
22 | 76 | PLUGIN_DIR = [os.path.join(LOCAL_ROOTDIR,'GTG/plugins/')] | ||
23 | 71 | 77 | ||
24 | === added directory 'GTG/core/plugins' | |||
25 | === added file 'GTG/core/plugins/__init__.py' | |||
26 | --- GTG/core/plugins/__init__.py 1970-01-01 00:00:00 +0000 | |||
27 | +++ GTG/core/plugins/__init__.py 2009-07-07 15:12:42 +0000 | |||
28 | @@ -0,0 +1,28 @@ | |||
29 | 1 | # -*- coding: utf-8 -*- | ||
30 | 2 | # ----------------------------------------------------------------------------- | ||
31 | 3 | # Gettings Things Gnome! - a personnal organizer for the GNOME desktop | ||
32 | 4 | # Copyright (c) 2008-2009 - Lionel Dricot & Bertrand Rousseau | ||
33 | 5 | # | ||
34 | 6 | # This program is free software: you can redistribute it and/or modify it under | ||
35 | 7 | # the terms of the GNU General Public License as published by the Free Software | ||
36 | 8 | # Foundation, either version 3 of the License, or (at your option) any later | ||
37 | 9 | # version. | ||
38 | 10 | # | ||
39 | 11 | # This program is distributed in the hope that it will be useful, but WITHOUT | ||
40 | 12 | # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS | ||
41 | 13 | # FOR A PARTICULAR PURPOSE. See the GNU General Public License for more | ||
42 | 14 | # details. | ||
43 | 15 | # | ||
44 | 16 | # You should have received a copy of the GNU General Public License along with | ||
45 | 17 | # this program. If not, see <http://www.gnu.org/licenses/>. | ||
46 | 18 | # ----------------------------------------------------------------------------- | ||
47 | 19 | |||
48 | 20 | |||
49 | 21 | #This is the tool package. It contains some useful function and tool | ||
50 | 22 | #that could be useful for any part of GTG. | ||
51 | 23 | |||
52 | 24 | import os | ||
53 | 25 | |||
54 | 26 | class GnomeConfig : | ||
55 | 27 | current_rep = os.path.dirname(os.path.abspath(__file__)) | ||
56 | 28 | GLADE_FILE = os.path.join(current_rep,"pluginmanager.glade") | ||
57 | 0 | 29 | ||
58 | === added file 'GTG/core/plugins/api.py' | |||
59 | --- GTG/core/plugins/api.py 1970-01-01 00:00:00 +0000 | |||
60 | +++ GTG/core/plugins/api.py 2009-07-28 00:41:33 +0000 | |||
61 | @@ -0,0 +1,185 @@ | |||
62 | 1 | # -*- coding: utf-8 -*- | ||
63 | 2 | # ----------------------------------------------------------------------------- | ||
64 | 3 | # Gettings Things Gnome! - a personnal organizer for the GNOME desktop | ||
65 | 4 | # Copyright (c) 2008-2009 - Lionel Dricot & Bertrand Rousseau | ||
66 | 5 | # | ||
67 | 6 | # This program is free software: you can redistribute it and/or modify it under | ||
68 | 7 | # the terms of the GNU General Public License as published by the Free Software | ||
69 | 8 | # Foundation, either version 3 of the License, or (at your option) any later | ||
70 | 9 | # version. | ||
71 | 10 | # | ||
72 | 11 | # This program is distributed in the hope that it will be useful, but WITHOUT | ||
73 | 12 | # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS | ||
74 | 13 | # FOR A PARTICULAR PURPOSE. See the GNU General Public License for more | ||
75 | 14 | # details. | ||
76 | 15 | # | ||
77 | 16 | # You should have received a copy of the GNU General Public License along with | ||
78 | 17 | # this program. If not, see <http://www.gnu.org/licenses/>. | ||
79 | 18 | # ----------------------------------------------------------------------------- | ||
80 | 19 | import gtk | ||
81 | 20 | |||
82 | 21 | class PluginAPI: | ||
83 | 22 | def __init__(self, window, config, wTree, requester, taskview, workview_task_filter, \ | ||
84 | 23 | tagpopup, tagview, task=None, textview=None): | ||
85 | 24 | # private vars | ||
86 | 25 | self.__window = window | ||
87 | 26 | self.config = config | ||
88 | 27 | self.__wTree = wTree | ||
89 | 28 | self.__requester = requester | ||
90 | 29 | |||
91 | 30 | self.taskview = taskview | ||
92 | 31 | self.__workview_task_filter = workview_task_filter | ||
93 | 32 | |||
94 | 33 | self.__tagpopup = tagpopup | ||
95 | 34 | self.tagview = tagview | ||
96 | 35 | |||
97 | 36 | if task: | ||
98 | 37 | self.task = task | ||
99 | 38 | |||
100 | 39 | if textview: | ||
101 | 40 | self.textview = textview | ||
102 | 41 | |||
103 | 42 | # adds items to the MenuBar of the Main Window (TaskBrowser) | ||
104 | 43 | def AddMenuItem(self, item): | ||
105 | 44 | self.__wTree.get_widget('menu_plugin').get_submenu().append(item) | ||
106 | 45 | item.show() | ||
107 | 46 | |||
108 | 47 | # removes the item from the MenuBar | ||
109 | 48 | def RemoveMenuItem(self, item): | ||
110 | 49 | try: | ||
111 | 50 | self.__wTree.get_widget('menu_plugin').get_submenu().remove(item) | ||
112 | 51 | except Exception, e: | ||
113 | 52 | print "Error removing menu item: %s" % e | ||
114 | 53 | |||
115 | 54 | def AddToolbarItem(self, item): | ||
116 | 55 | # calculates the number of items on the ToolBar and adds the item | ||
117 | 56 | # on the end | ||
118 | 57 | try: | ||
119 | 58 | i = 0 | ||
120 | 59 | while self.__wTree.get_widget('task_tb').get_nth_item(i) is not None: | ||
121 | 60 | i = i + 1 | ||
122 | 61 | self.__wTree.get_widget('task_tb').insert(item, i) | ||
123 | 62 | item.show() | ||
124 | 63 | return i | ||
125 | 64 | except Exception, e: | ||
126 | 65 | print "Error adding a toolbar item: %s" % e | ||
127 | 66 | |||
128 | 67 | def RemoveToolbarItem(self, item, n=None): | ||
129 | 68 | try: | ||
130 | 69 | if not n: | ||
131 | 70 | self.__wTree.get_widget('task_tb').remove(item) | ||
132 | 71 | else: | ||
133 | 72 | i = 0 | ||
134 | 73 | while self.__wTree.get_widget('task_tb').get_nth_item(i) is not None: | ||
135 | 74 | if i == n: | ||
136 | 75 | self.__wTree.get_widget('task_tb').remove(self.__wTree.get_widget('task_tb').get_nth_item(i)) | ||
137 | 76 | i = i + 1 | ||
138 | 77 | except Exception, e: | ||
139 | 78 | print "Error removing a toolbar item: %s" % e | ||
140 | 79 | |||
141 | 80 | # adds items to the Task Menu | ||
142 | 81 | def AddTaskToolbarItem(self, item): | ||
143 | 82 | try: | ||
144 | 83 | i = 0 | ||
145 | 84 | while self.__wTree.get_widget('task_tb1').get_nth_item(i) is not None: | ||
146 | 85 | i = i + 1 | ||
147 | 86 | self.__wTree.get_widget('task_tb1').insert(item, i) | ||
148 | 87 | item.show() | ||
149 | 88 | except Exception, e: | ||
150 | 89 | print "Error adding a toolbar item in to the TaskEditor: %s" % e | ||
151 | 90 | |||
152 | 91 | # passes the requester to the plugin | ||
153 | 92 | def getRequester(self): | ||
154 | 93 | return self.__requester | ||
155 | 94 | |||
156 | 95 | # changes the tasks TreeStore | ||
157 | 96 | def changeTaskTreeStore(self, treestore): | ||
158 | 97 | task_tview = self.__wTree.get_widget("task_tview") | ||
159 | 98 | task_tview.set_model(treestore) | ||
160 | 99 | |||
161 | 100 | def get_all_tasks(self): | ||
162 | 101 | return self.__requester.get_tasks_list() | ||
163 | 102 | |||
164 | 103 | # this method returns the task by tid or the current task in case | ||
165 | 104 | # of the edit task window | ||
166 | 105 | # by default returns the current task, in other words, it's default action | ||
167 | 106 | # is to use with the onTaskOpened method | ||
168 | 107 | def get_task(self, tid=None): | ||
169 | 108 | if tid: | ||
170 | 109 | return self.__requester.get_task(tid) | ||
171 | 110 | else: | ||
172 | 111 | return self.task | ||
173 | 112 | |||
174 | 113 | # this method only works for the onTaskOpened method | ||
175 | 114 | def get_task_title(self): | ||
176 | 115 | return self.task.get_title() | ||
177 | 116 | |||
178 | 117 | # adds a tag, updated the text buffer, inserting the tag at the end of | ||
179 | 118 | # the task | ||
180 | 119 | # this method only works for the onTaskOpened method | ||
181 | 120 | def add_tag(self, tag): | ||
182 | 121 | self.task.add_tag("@" + tag) | ||
183 | 122 | #self.textview.insert_text("@" + tag) | ||
184 | 123 | self.textview.insert_tag("@" + tag) | ||
185 | 124 | |||
186 | 125 | # adds a attribute to a tag | ||
187 | 126 | # this method only works for the onTaskOpened method | ||
188 | 127 | def add_tag_attribute(self, tag, attrib_name, attrib_value): | ||
189 | 128 | try: | ||
190 | 129 | tags = self.task.get_tags() | ||
191 | 130 | for t in tags: | ||
192 | 131 | if t.get_name() == tag: | ||
193 | 132 | t.set_attribute(attrib_name, attrib_value) | ||
194 | 133 | return True | ||
195 | 134 | except: | ||
196 | 135 | return False | ||
197 | 136 | |||
198 | 137 | # pass all the tags to the plug-in | ||
199 | 138 | # this method only works for the onTaskOpened method | ||
200 | 139 | def get_tags(self): | ||
201 | 140 | return self.task.get_tags() | ||
202 | 141 | |||
203 | 142 | # this will allow plugins to use the textview properties | ||
204 | 143 | def get_textview(self): | ||
205 | 144 | return self.textview | ||
206 | 145 | |||
207 | 146 | # defines the child's parent window | ||
208 | 147 | def set_parent_window(self, child): | ||
209 | 148 | child.set_transient_for(self.__window) | ||
210 | 149 | |||
211 | 150 | # add's a menu to the tagpopup | ||
212 | 151 | def add_menu_tagpopup(self, item): | ||
213 | 152 | self.__tagpopup.append(item) | ||
214 | 153 | item.show() | ||
215 | 154 | |||
216 | 155 | def remove_menu_tagpopup(self, item): | ||
217 | 156 | self.__tagpopup.remove(item) | ||
218 | 157 | |||
219 | 158 | # get's the selected tag in the tag view | ||
220 | 159 | def get_tagpopup_tag(self): | ||
221 | 160 | selected = self.tagview.get_selection() | ||
222 | 161 | model, iter = selected.get_selected() | ||
223 | 162 | tag = model.get_value(iter, 0) | ||
224 | 163 | return tag | ||
225 | 164 | |||
226 | 165 | # returns the task view in the main window (task browser) | ||
227 | 166 | def get_taskview(self): | ||
228 | 167 | return self.taskview | ||
229 | 168 | |||
230 | 169 | # returns the selected task in the task view | ||
231 | 170 | def get_selected_task(self): | ||
232 | 171 | selected = self.taskview.get_selection() | ||
233 | 172 | model, iter = selected.get_selected() | ||
234 | 173 | if iter: | ||
235 | 174 | return self.__requester.get_task(model.get_value(iter, 0)) | ||
236 | 175 | else: | ||
237 | 176 | return None | ||
238 | 177 | |||
239 | 178 | # returns the config object | ||
240 | 179 | def get_config(self): | ||
241 | 180 | return self.config | ||
242 | 181 | |||
243 | 182 | # add's a tid to the workview filter | ||
244 | 183 | def add_task_to_workview_filter(self, tid): | ||
245 | 184 | self.__workview_task_filter.append(tid) | ||
246 | 185 | |||
247 | 0 | \ No newline at end of file | 186 | \ No newline at end of file |
248 | 1 | 187 | ||
249 | === added file 'GTG/core/plugins/engine.py' | |||
250 | --- GTG/core/plugins/engine.py 1970-01-01 00:00:00 +0000 | |||
251 | +++ GTG/core/plugins/engine.py 2009-07-26 22:24:46 +0000 | |||
252 | @@ -0,0 +1,152 @@ | |||
253 | 1 | # -*- coding: utf-8 -*- | ||
254 | 2 | # ----------------------------------------------------------------------------- | ||
255 | 3 | # Gettings Things Gnome! - a personnal organizer for the GNOME desktop | ||
256 | 4 | # Copyright (c) 2008-2009 - Lionel Dricot & Bertrand Rousseau | ||
257 | 5 | # | ||
258 | 6 | # This program is free software: you can redistribute it and/or modify it under | ||
259 | 7 | # the terms of the GNU General Public License as published by the Free Software | ||
260 | 8 | # Foundation, either version 3 of the License, or (at your option) any later | ||
261 | 9 | # version. | ||
262 | 10 | # | ||
263 | 11 | # This program is distributed in the hope that it will be useful, but WITHOUT | ||
264 | 12 | # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS | ||
265 | 13 | # FOR A PARTICULAR PURPOSE. See the GNU General Public License for more | ||
266 | 14 | # details. | ||
267 | 15 | # | ||
268 | 16 | # You should have received a copy of the GNU General Public License along with | ||
269 | 17 | # this program. If not, see <http://www.gnu.org/licenses/>. | ||
270 | 18 | # ----------------------------------------------------------------------------- | ||
271 | 19 | |||
272 | 20 | import pkgutil | ||
273 | 21 | import imp | ||
274 | 22 | import os | ||
275 | 23 | |||
276 | 24 | try: | ||
277 | 25 | import pygtk | ||
278 | 26 | pygtk.require("2.0") | ||
279 | 27 | except: | ||
280 | 28 | sys.exit(1) | ||
281 | 29 | try: | ||
282 | 30 | import gtk | ||
283 | 31 | except: | ||
284 | 32 | sys.exit(1) | ||
285 | 33 | |||
286 | 34 | |||
287 | 35 | |||
288 | 36 | # this class manages the plug-ins | ||
289 | 37 | class PluginEngine: | ||
290 | 38 | |||
291 | 39 | # initializes the plug-in engine | ||
292 | 40 | # NOTE: the path has to be a list of paths | ||
293 | 41 | def __init__(self, plugin_path): | ||
294 | 42 | self.Plugins = [] | ||
295 | 43 | self.plugin_path = plugin_path | ||
296 | 44 | self.initialized_plugins = [] | ||
297 | 45 | |||
298 | 46 | # loads the plugins from the plugin dir | ||
299 | 47 | def LoadPlugins(self): | ||
300 | 48 | plugins = {} | ||
301 | 49 | |||
302 | 50 | # find all the folders in the plugin dir | ||
303 | 51 | plugin_dirs = [] | ||
304 | 52 | plugin_dirs.append(self.plugin_path[0]) | ||
305 | 53 | for f in os.listdir(self.plugin_path[0]): | ||
306 | 54 | if os.path.isdir(os.path.join(self.plugin_path[0], f)): | ||
307 | 55 | plugin_dirs.append(os.path.join(self.plugin_path[0], f)) | ||
308 | 56 | |||
309 | 57 | try: | ||
310 | 58 | for loader, name, ispkg in pkgutil.iter_modules(plugin_dirs): | ||
311 | 59 | file, pathname, desc = imp.find_module(name, plugin_dirs) | ||
312 | 60 | plugins[name] = imp.load_module(name, file, pathname, desc) | ||
313 | 61 | except Exception, e: | ||
314 | 62 | print "Error: %s" % e | ||
315 | 63 | |||
316 | 64 | for name, plugin in plugins.items(): | ||
317 | 65 | tmp_plgin = self.loadPlugin(plugin) | ||
318 | 66 | if tmp_plgin: | ||
319 | 67 | self.Plugins.append(tmp_plgin) | ||
320 | 68 | |||
321 | 69 | return self.Plugins | ||
322 | 70 | |||
323 | 71 | # checks if the module loaded is a plugin and gets the main class | ||
324 | 72 | def loadPlugin(self, plugin): | ||
325 | 73 | plugin_locals = plugin.__dict__ | ||
326 | 74 | is_plugin = False | ||
327 | 75 | loaded_plugin = {} | ||
328 | 76 | |||
329 | 77 | # find the plugin class | ||
330 | 78 | for key in plugin_locals.keys(): | ||
331 | 79 | try: | ||
332 | 80 | is_plugin = getattr(plugin_locals[key], 'PLUGIN_NAME', None) | ||
333 | 81 | except TypeError: | ||
334 | 82 | continue | ||
335 | 83 | |||
336 | 84 | # loads the plugin info | ||
337 | 85 | if is_plugin: | ||
338 | 86 | try: | ||
339 | 87 | loaded_plugin['plugin'] = plugin.__name__ | ||
340 | 88 | loaded_plugin['class_name'] = key | ||
341 | 89 | loaded_plugin['class'] = plugin_locals[key] | ||
342 | 90 | loaded_plugin['name'] = plugin_locals[key].PLUGIN_NAME | ||
343 | 91 | loaded_plugin['version'] = plugin_locals[key].PLUGIN_VERSION | ||
344 | 92 | loaded_plugin['authors'] = plugin_locals[key].PLUGIN_AUTHORS | ||
345 | 93 | loaded_plugin['description'] = plugin_locals[key].PLUGIN_DESCRIPTION | ||
346 | 94 | loaded_plugin['state'] = plugin_locals[key].PLUGIN_ENABLED | ||
347 | 95 | loaded_plugin['instance'] = None | ||
348 | 96 | except: | ||
349 | 97 | continue | ||
350 | 98 | |||
351 | 99 | if not loaded_plugin: | ||
352 | 100 | return None | ||
353 | 101 | return loaded_plugin | ||
354 | 102 | |||
355 | 103 | def enabledPlugins(self, plugins): | ||
356 | 104 | pe = [] | ||
357 | 105 | for p in plugins: | ||
358 | 106 | if p['state']: | ||
359 | 107 | pe.append(p['name']) | ||
360 | 108 | return pe | ||
361 | 109 | |||
362 | 110 | def disabledPlugins(self, plugins): | ||
363 | 111 | pd = [] | ||
364 | 112 | for p in plugins: | ||
365 | 113 | if not p['state']: | ||
366 | 114 | pd.append(p['name']) | ||
367 | 115 | return pd | ||
368 | 116 | |||
369 | 117 | # activates the plugins | ||
370 | 118 | def activatePlugins(self, plugins, plugin_api): | ||
371 | 119 | for plgin in plugins: | ||
372 | 120 | if plgin['state']: | ||
373 | 121 | plgin['instance'] = plgin['class']() | ||
374 | 122 | plgin['instance'].activate(plugin_api) | ||
375 | 123 | |||
376 | 124 | # deactivate the enabled plugins | ||
377 | 125 | def deactivatePlugins(self, plugins, plugin_api): | ||
378 | 126 | for plgin in plugins: | ||
379 | 127 | if plgin['state']: | ||
380 | 128 | plgin['instance'].deactivate(plugin_api) | ||
381 | 129 | |||
382 | 130 | # loads the plug-in features for a task | ||
383 | 131 | def onTaskLoad(self, plugins, plugin_api): | ||
384 | 132 | for plgin in plugins: | ||
385 | 133 | if plgin['state']: | ||
386 | 134 | plgin['instance'].onTaskOpened(plugin_api) | ||
387 | 135 | |||
388 | 136 | # rechecks the plug-ins to see if any changes where done to the state | ||
389 | 137 | def recheckPlugins(self, plugins, plugin_api): | ||
390 | 138 | for plgin in plugins: | ||
391 | 139 | if plgin['instance'] != None and plgin['state'] == False: | ||
392 | 140 | try: | ||
393 | 141 | print "deactivating plugin: " + plgin['name'] | ||
394 | 142 | plgin['instance'].deactivate(plugin_api) | ||
395 | 143 | plgin['instance'] = None | ||
396 | 144 | except Exception, e: | ||
397 | 145 | print "Error: %s" % e | ||
398 | 146 | elif plgin['instance'] == None and plgin['state'] == True: | ||
399 | 147 | try: | ||
400 | 148 | print "activating plugin: " + plgin['name'] | ||
401 | 149 | plgin['instance'] = plgin['class']() | ||
402 | 150 | plgin['instance'].activate(plugin_api) | ||
403 | 151 | except Exception, e: | ||
404 | 152 | print "Error: %s" % e | ||
405 | 0 | 153 | ||
406 | === added file 'GTG/core/plugins/manager.py' | |||
407 | --- GTG/core/plugins/manager.py 1970-01-01 00:00:00 +0000 | |||
408 | +++ GTG/core/plugins/manager.py 2009-07-17 02:01:48 +0000 | |||
409 | @@ -0,0 +1,126 @@ | |||
410 | 1 | # -*- coding: utf-8 -*- | ||
411 | 2 | # ----------------------------------------------------------------------------- | ||
412 | 3 | # Gettings Things Gnome! - a personnal organizer for the GNOME desktop | ||
413 | 4 | # Copyright (c) 2008-2009 - Lionel Dricot & Bertrand Rousseau | ||
414 | 5 | # | ||
415 | 6 | # This program is free software: you can redistribute it and/or modify it under | ||
416 | 7 | # the terms of the GNU General Public License as published by the Free Software | ||
417 | 8 | # Foundation, either version 3 of the License, or (at your option) any later | ||
418 | 9 | # version. | ||
419 | 10 | # | ||
420 | 11 | # This program is distributed in the hope that it will be useful, but WITHOUT | ||
421 | 12 | # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS | ||
422 | 13 | # FOR A PARTICULAR PURPOSE. See the GNU General Public License for more | ||
423 | 14 | # details. | ||
424 | 15 | # | ||
425 | 16 | # You should have received a copy of the GNU General Public License along with | ||
426 | 17 | # this program. If not, see <http://www.gnu.org/licenses/>. | ||
427 | 18 | # ----------------------------------------------------------------------------- | ||
428 | 19 | |||
429 | 20 | from GTG.core.plugins import GnomeConfig | ||
430 | 21 | # not being used | ||
431 | 22 | #from GTG.core.plugins.engine import PluginEngine | ||
432 | 23 | #from GTG.core.plugins.engine import PluginAPI | ||
433 | 24 | |||
434 | 25 | import sys | ||
435 | 26 | import gobject | ||
436 | 27 | |||
437 | 28 | try: | ||
438 | 29 | import pygtk | ||
439 | 30 | pygtk.require("2.0") | ||
440 | 31 | except: | ||
441 | 32 | sys.exit(1) | ||
442 | 33 | try: | ||
443 | 34 | import gtk | ||
444 | 35 | except: | ||
445 | 36 | sys.exit(1) | ||
446 | 37 | |||
447 | 38 | class PluginManager: | ||
448 | 39 | |||
449 | 40 | def __init__(self, parent, plugins, pengine, plugin_api): | ||
450 | 41 | self.plugins = plugins | ||
451 | 42 | self.pengine = pengine | ||
452 | 43 | self.plugin_api = plugin_api | ||
453 | 44 | self.gladefile = GnomeConfig.GLADE_FILE | ||
454 | 45 | self.wTree = gtk.glade.XML(self.gladefile, "PluginManagerDialog") | ||
455 | 46 | |||
456 | 47 | self.dialog = self.wTree.get_widget("PluginManagerDialog") | ||
457 | 48 | |||
458 | 49 | # stuff to populate | ||
459 | 50 | self.lblPluginName = self.wTree.get_widget("lblPluginName") | ||
460 | 51 | self.lblPluginVersion = self.wTree.get_widget("lblPluginVersion") | ||
461 | 52 | self.lblPluginAuthors = self.wTree.get_widget("lblPluginAuthors") | ||
462 | 53 | self.txtPluginDescription = self.wTree.get_widget("txtPluginDescription") | ||
463 | 54 | |||
464 | 55 | #self.btnClose = self.wTree.get_widget("close_btn") | ||
465 | 56 | #self.btnClose.connect('clicked', self.close, None) | ||
466 | 57 | |||
467 | 58 | # liststore | ||
468 | 59 | self.PluginList = gtk.ListStore(gobject.TYPE_BOOLEAN, gobject.TYPE_STRING, gobject.TYPE_STRING) | ||
469 | 60 | for plgin in self.plugins: | ||
470 | 61 | #print "file name :", name | ||
471 | 62 | self.PluginList.append([plgin['state'], plgin['name'], plgin['version']]) | ||
472 | 63 | # end - liststore | ||
473 | 64 | |||
474 | 65 | # treeview | ||
475 | 66 | self.pluginTree = self.wTree.get_widget("pluginTree") | ||
476 | 67 | |||
477 | 68 | self.rendererToggle = gtk.CellRendererToggle() | ||
478 | 69 | self.rendererToggle.set_property('activatable', True) | ||
479 | 70 | self.rendererToggle.connect('toggled', self.colToggledClicked, self.PluginList) | ||
480 | 71 | self.colToggle = gtk.TreeViewColumn("Enabled", self.rendererToggle) | ||
481 | 72 | self.colToggle.add_attribute(self.rendererToggle, "active", 0) | ||
482 | 73 | |||
483 | 74 | self.rendererText = gtk.CellRendererText() | ||
484 | 75 | self.colName = gtk.TreeViewColumn("Name", self.rendererText, text=1) | ||
485 | 76 | self.colVersion = gtk.TreeViewColumn("Version", self.rendererText, text=2) | ||
486 | 77 | |||
487 | 78 | self.pluginTree.append_column(self.colToggle) | ||
488 | 79 | self.pluginTree.append_column(self.colName) | ||
489 | 80 | self.pluginTree.append_column(self.colVersion) | ||
490 | 81 | |||
491 | 82 | self.pluginTree.set_model(self.PluginList) | ||
492 | 83 | self.pluginTree.set_search_column(2) | ||
493 | 84 | # end - treeview | ||
494 | 85 | |||
495 | 86 | self.dialog.set_transient_for(parent) | ||
496 | 87 | |||
497 | 88 | # connect signals | ||
498 | 89 | self.dialog.connect("delete_event", self.close) | ||
499 | 90 | self.dialog.connect("response", self.close) | ||
500 | 91 | self.pluginTree.connect("cursor-changed", self.pluginExtraInfo, self.plugins) | ||
501 | 92 | |||
502 | 93 | self.dialog.show_all() | ||
503 | 94 | |||
504 | 95 | |||
505 | 96 | def close(self, widget, response=None): | ||
506 | 97 | # get the plugins that are going to be initialized and the ones | ||
507 | 98 | # that are going do be desabled | ||
508 | 99 | self.pengine.recheckPlugins(self.plugins, self.plugin_api) | ||
509 | 100 | self.dialog.destroy() | ||
510 | 101 | return True | ||
511 | 102 | |||
512 | 103 | #def delete(self, widget, response=None): | ||
513 | 104 | # self.dialog.destroy() | ||
514 | 105 | # return True | ||
515 | 106 | |||
516 | 107 | def colToggledClicked(self, cell, path, model): | ||
517 | 108 | model[path][0] = not model[path][0] | ||
518 | 109 | if path: | ||
519 | 110 | iter = model.get_iter(path) | ||
520 | 111 | for plgin in self.plugins: | ||
521 | 112 | if model[path][1] == plgin['name'] and model[path][2] == plgin['version']: | ||
522 | 113 | plgin['state'] = not plgin['state'] | ||
523 | 114 | |||
524 | 115 | def pluginExtraInfo(self, treeview, plugins): | ||
525 | 116 | path = treeview.get_cursor()[0] | ||
526 | 117 | if path: | ||
527 | 118 | model = treeview.get_model() | ||
528 | 119 | iter = treeview.get_model().get_iter(path) | ||
529 | 120 | |||
530 | 121 | for plgin in plugins: | ||
531 | 122 | if (model.get_value(iter,1) == plgin['name']) and (model.get_value(iter,2) == plgin['version']): | ||
532 | 123 | self.lblPluginName.set_label("<b>" + plgin['name'] + "</b>") | ||
533 | 124 | self.lblPluginVersion.set_label(plgin['version']) | ||
534 | 125 | self.lblPluginAuthors.set_label(plgin['authors']) | ||
535 | 126 | self.txtPluginDescription.get_buffer().set_text(plgin['description'].replace("\n", " ").replace(r'\n', "\n")) | ||
536 | 0 | 127 | ||
537 | === added file 'GTG/core/plugins/pluginmanager.glade' | |||
538 | --- GTG/core/plugins/pluginmanager.glade 1970-01-01 00:00:00 +0000 | |||
539 | +++ GTG/core/plugins/pluginmanager.glade 2009-07-07 15:12:42 +0000 | |||
540 | @@ -0,0 +1,351 @@ | |||
541 | 1 | <?xml version="1.0" standalone="no"?> <!--*- mode: xml -*--> | ||
542 | 2 | <!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd"> | ||
543 | 3 | |||
544 | 4 | <glade-interface> | ||
545 | 5 | <requires lib="gnome"/> | ||
546 | 6 | |||
547 | 7 | <widget class="GtkDialog" id="PluginManagerDialog"> | ||
548 | 8 | <property name="width_request">670</property> | ||
549 | 9 | <property name="height_request">410</property> | ||
550 | 10 | <property name="visible">True</property> | ||
551 | 11 | <property name="title" translatable="yes">Plugin Manager</property> | ||
552 | 12 | <property name="type">GTK_WINDOW_TOPLEVEL</property> | ||
553 | 13 | <property name="window_position">GTK_WIN_POS_NONE</property> | ||
554 | 14 | <property name="modal">False</property> | ||
555 | 15 | <property name="resizable">True</property> | ||
556 | 16 | <property name="destroy_with_parent">False</property> | ||
557 | 17 | <property name="decorated">True</property> | ||
558 | 18 | <property name="skip_taskbar_hint">False</property> | ||
559 | 19 | <property name="skip_pager_hint">False</property> | ||
560 | 20 | <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> | ||
561 | 21 | <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> | ||
562 | 22 | <property name="focus_on_map">True</property> | ||
563 | 23 | <property name="urgency_hint">False</property> | ||
564 | 24 | <property name="has_separator">True</property> | ||
565 | 25 | |||
566 | 26 | <child internal-child="vbox"> | ||
567 | 27 | <widget class="GtkVBox" id="dialog-vbox2"> | ||
568 | 28 | <property name="visible">True</property> | ||
569 | 29 | <property name="homogeneous">False</property> | ||
570 | 30 | <property name="spacing">0</property> | ||
571 | 31 | |||
572 | 32 | <child internal-child="action_area"> | ||
573 | 33 | <widget class="GtkHButtonBox" id="dialog-action_area2"> | ||
574 | 34 | <property name="visible">True</property> | ||
575 | 35 | <property name="layout_style">GTK_BUTTONBOX_END</property> | ||
576 | 36 | |||
577 | 37 | <child> | ||
578 | 38 | <widget class="GtkButton" id="close_btn"> | ||
579 | 39 | <property name="visible">True</property> | ||
580 | 40 | <property name="can_default">True</property> | ||
581 | 41 | <property name="can_focus">True</property> | ||
582 | 42 | <property name="label">gtk-close</property> | ||
583 | 43 | <property name="use_stock">True</property> | ||
584 | 44 | <property name="relief">GTK_RELIEF_NORMAL</property> | ||
585 | 45 | <property name="focus_on_click">True</property> | ||
586 | 46 | <property name="response_id">-7</property> | ||
587 | 47 | </widget> | ||
588 | 48 | </child> | ||
589 | 49 | </widget> | ||
590 | 50 | <packing> | ||
591 | 51 | <property name="padding">0</property> | ||
592 | 52 | <property name="expand">False</property> | ||
593 | 53 | <property name="fill">True</property> | ||
594 | 54 | <property name="pack_type">GTK_PACK_END</property> | ||
595 | 55 | </packing> | ||
596 | 56 | </child> | ||
597 | 57 | |||
598 | 58 | <child> | ||
599 | 59 | <widget class="GtkHBox" id="hbox3"> | ||
600 | 60 | <property name="visible">True</property> | ||
601 | 61 | <property name="homogeneous">False</property> | ||
602 | 62 | <property name="spacing">0</property> | ||
603 | 63 | |||
604 | 64 | <child> | ||
605 | 65 | <widget class="GtkScrolledWindow" id="scrolledwindow3"> | ||
606 | 66 | <property name="width_request">240</property> | ||
607 | 67 | <property name="visible">True</property> | ||
608 | 68 | <property name="can_focus">True</property> | ||
609 | 69 | <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> | ||
610 | 70 | <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> | ||
611 | 71 | <property name="shadow_type">GTK_SHADOW_IN</property> | ||
612 | 72 | <property name="window_placement">GTK_CORNER_TOP_LEFT</property> | ||
613 | 73 | |||
614 | 74 | <child> | ||
615 | 75 | <widget class="GtkTreeView" id="pluginTree"> | ||
616 | 76 | <property name="visible">True</property> | ||
617 | 77 | <property name="can_focus">True</property> | ||
618 | 78 | <property name="headers_visible">True</property> | ||
619 | 79 | <property name="rules_hint">False</property> | ||
620 | 80 | <property name="reorderable">False</property> | ||
621 | 81 | <property name="enable_search">True</property> | ||
622 | 82 | <property name="fixed_height_mode">False</property> | ||
623 | 83 | <property name="hover_selection">False</property> | ||
624 | 84 | <property name="hover_expand">False</property> | ||
625 | 85 | </widget> | ||
626 | 86 | </child> | ||
627 | 87 | </widget> | ||
628 | 88 | <packing> | ||
629 | 89 | <property name="padding">0</property> | ||
630 | 90 | <property name="expand">False</property> | ||
631 | 91 | <property name="fill">False</property> | ||
632 | 92 | </packing> | ||
633 | 93 | </child> | ||
634 | 94 | |||
635 | 95 | <child> | ||
636 | 96 | <widget class="GtkFrame" id="frame2"> | ||
637 | 97 | <property name="visible">True</property> | ||
638 | 98 | <property name="label_xalign">0</property> | ||
639 | 99 | <property name="label_yalign">0.5</property> | ||
640 | 100 | <property name="shadow_type">GTK_SHADOW_NONE</property> | ||
641 | 101 | |||
642 | 102 | <child> | ||
643 | 103 | <widget class="GtkAlignment" id="alignment2"> | ||
644 | 104 | <property name="visible">True</property> | ||
645 | 105 | <property name="xalign">0.5</property> | ||
646 | 106 | <property name="yalign">0.5</property> | ||
647 | 107 | <property name="xscale">1</property> | ||
648 | 108 | <property name="yscale">1</property> | ||
649 | 109 | <property name="top_padding">0</property> | ||
650 | 110 | <property name="bottom_padding">0</property> | ||
651 | 111 | <property name="left_padding">12</property> | ||
652 | 112 | <property name="right_padding">0</property> | ||
653 | 113 | |||
654 | 114 | <child> | ||
655 | 115 | <widget class="GtkVBox" id="vbox2"> | ||
656 | 116 | <property name="visible">True</property> | ||
657 | 117 | <property name="homogeneous">False</property> | ||
658 | 118 | <property name="spacing">0</property> | ||
659 | 119 | |||
660 | 120 | <child> | ||
661 | 121 | <widget class="GtkHBox" id="hbox5"> | ||
662 | 122 | <property name="visible">True</property> | ||
663 | 123 | <property name="homogeneous">False</property> | ||
664 | 124 | <property name="spacing">0</property> | ||
665 | 125 | |||
666 | 126 | <child> | ||
667 | 127 | <widget class="GtkLabel" id="label10"> | ||
668 | 128 | <property name="visible">True</property> | ||
669 | 129 | <property name="label" translatable="yes">Version: </property> | ||
670 | 130 | <property name="use_underline">False</property> | ||
671 | 131 | <property name="use_markup">False</property> | ||
672 | 132 | <property name="justify">GTK_JUSTIFY_LEFT</property> | ||
673 | 133 | <property name="wrap">False</property> | ||
674 | 134 | <property name="selectable">False</property> | ||
675 | 135 | <property name="xalign">0</property> | ||
676 | 136 | <property name="yalign">0.5</property> | ||
677 | 137 | <property name="xpad">1</property> | ||
678 | 138 | <property name="ypad">4</property> | ||
679 | 139 | <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> | ||
680 | 140 | <property name="width_chars">-1</property> | ||
681 | 141 | <property name="single_line_mode">False</property> | ||
682 | 142 | <property name="angle">0</property> | ||
683 | 143 | </widget> | ||
684 | 144 | <packing> | ||
685 | 145 | <property name="padding">0</property> | ||
686 | 146 | <property name="expand">False</property> | ||
687 | 147 | <property name="fill">False</property> | ||
688 | 148 | </packing> | ||
689 | 149 | </child> | ||
690 | 150 | |||
691 | 151 | <child> | ||
692 | 152 | <widget class="GtkLabel" id="lblPluginVersion"> | ||
693 | 153 | <property name="visible">True</property> | ||
694 | 154 | <property name="label" translatable="yes"></property> | ||
695 | 155 | <property name="use_underline">False</property> | ||
696 | 156 | <property name="use_markup">False</property> | ||
697 | 157 | <property name="justify">GTK_JUSTIFY_LEFT</property> | ||
698 | 158 | <property name="wrap">False</property> | ||
699 | 159 | <property name="selectable">False</property> | ||
700 | 160 | <property name="xalign">0</property> | ||
701 | 161 | <property name="yalign">0.5</property> | ||
702 | 162 | <property name="xpad">1</property> | ||
703 | 163 | <property name="ypad">4</property> | ||
704 | 164 | <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> | ||
705 | 165 | <property name="width_chars">-1</property> | ||
706 | 166 | <property name="single_line_mode">False</property> | ||
707 | 167 | <property name="angle">0</property> | ||
708 | 168 | </widget> | ||
709 | 169 | <packing> | ||
710 | 170 | <property name="padding">0</property> | ||
711 | 171 | <property name="expand">False</property> | ||
712 | 172 | <property name="fill">False</property> | ||
713 | 173 | </packing> | ||
714 | 174 | </child> | ||
715 | 175 | </widget> | ||
716 | 176 | <packing> | ||
717 | 177 | <property name="padding">0</property> | ||
718 | 178 | <property name="expand">False</property> | ||
719 | 179 | <property name="fill">False</property> | ||
720 | 180 | </packing> | ||
721 | 181 | </child> | ||
722 | 182 | |||
723 | 183 | <child> | ||
724 | 184 | <widget class="GtkHBox" id="hbox6"> | ||
725 | 185 | <property name="visible">True</property> | ||
726 | 186 | <property name="homogeneous">False</property> | ||
727 | 187 | <property name="spacing">0</property> | ||
728 | 188 | |||
729 | 189 | <child> | ||
730 | 190 | <widget class="GtkLabel" id="label11"> | ||
731 | 191 | <property name="visible">True</property> | ||
732 | 192 | <property name="label" translatable="yes">Authors: </property> | ||
733 | 193 | <property name="use_underline">False</property> | ||
734 | 194 | <property name="use_markup">False</property> | ||
735 | 195 | <property name="justify">GTK_JUSTIFY_LEFT</property> | ||
736 | 196 | <property name="wrap">False</property> | ||
737 | 197 | <property name="selectable">False</property> | ||
738 | 198 | <property name="xalign">0</property> | ||
739 | 199 | <property name="yalign">0.5</property> | ||
740 | 200 | <property name="xpad">1</property> | ||
741 | 201 | <property name="ypad">4</property> | ||
742 | 202 | <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> | ||
743 | 203 | <property name="width_chars">-1</property> | ||
744 | 204 | <property name="single_line_mode">False</property> | ||
745 | 205 | <property name="angle">0</property> | ||
746 | 206 | </widget> | ||
747 | 207 | <packing> | ||
748 | 208 | <property name="padding">0</property> | ||
749 | 209 | <property name="expand">False</property> | ||
750 | 210 | <property name="fill">False</property> | ||
751 | 211 | </packing> | ||
752 | 212 | </child> | ||
753 | 213 | |||
754 | 214 | <child> | ||
755 | 215 | <widget class="GtkLabel" id="lblPluginAuthors"> | ||
756 | 216 | <property name="visible">True</property> | ||
757 | 217 | <property name="label" translatable="yes"></property> | ||
758 | 218 | <property name="use_underline">False</property> | ||
759 | 219 | <property name="use_markup">False</property> | ||
760 | 220 | <property name="justify">GTK_JUSTIFY_LEFT</property> | ||
761 | 221 | <property name="wrap">True</property> | ||
762 | 222 | <property name="selectable">False</property> | ||
763 | 223 | <property name="xalign">0.5</property> | ||
764 | 224 | <property name="yalign">0.5</property> | ||
765 | 225 | <property name="xpad">0</property> | ||
766 | 226 | <property name="ypad">0</property> | ||
767 | 227 | <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> | ||
768 | 228 | <property name="width_chars">-1</property> | ||
769 | 229 | <property name="single_line_mode">False</property> | ||
770 | 230 | <property name="angle">0</property> | ||
771 | 231 | </widget> | ||
772 | 232 | <packing> | ||
773 | 233 | <property name="padding">0</property> | ||
774 | 234 | <property name="expand">False</property> | ||
775 | 235 | <property name="fill">False</property> | ||
776 | 236 | </packing> | ||
777 | 237 | </child> | ||
778 | 238 | </widget> | ||
779 | 239 | <packing> | ||
780 | 240 | <property name="padding">0</property> | ||
781 | 241 | <property name="expand">False</property> | ||
782 | 242 | <property name="fill">False</property> | ||
783 | 243 | </packing> | ||
784 | 244 | </child> | ||
785 | 245 | |||
786 | 246 | <child> | ||
787 | 247 | <widget class="GtkLabel" id="label14"> | ||
788 | 248 | <property name="visible">True</property> | ||
789 | 249 | <property name="label" translatable="yes">Description:</property> | ||
790 | 250 | <property name="use_underline">False</property> | ||
791 | 251 | <property name="use_markup">False</property> | ||
792 | 252 | <property name="justify">GTK_JUSTIFY_LEFT</property> | ||
793 | 253 | <property name="wrap">False</property> | ||
794 | 254 | <property name="selectable">False</property> | ||
795 | 255 | <property name="xalign">0</property> | ||
796 | 256 | <property name="yalign">0.5</property> | ||
797 | 257 | <property name="xpad">0</property> | ||
798 | 258 | <property name="ypad">4</property> | ||
799 | 259 | <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> | ||
800 | 260 | <property name="width_chars">-1</property> | ||
801 | 261 | <property name="single_line_mode">False</property> | ||
802 | 262 | <property name="angle">0</property> | ||
803 | 263 | </widget> | ||
804 | 264 | <packing> | ||
805 | 265 | <property name="padding">0</property> | ||
806 | 266 | <property name="expand">False</property> | ||
807 | 267 | <property name="fill">False</property> | ||
808 | 268 | </packing> | ||
809 | 269 | </child> | ||
810 | 270 | |||
811 | 271 | <child> | ||
812 | 272 | <widget class="GtkScrolledWindow" id="scrolledwindow4"> | ||
813 | 273 | <property name="visible">True</property> | ||
814 | 274 | <property name="can_focus">True</property> | ||
815 | 275 | <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> | ||
816 | 276 | <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> | ||
817 | 277 | <property name="shadow_type">GTK_SHADOW_IN</property> | ||
818 | 278 | <property name="window_placement">GTK_CORNER_TOP_LEFT</property> | ||
819 | 279 | |||
820 | 280 | <child> | ||
821 | 281 | <widget class="GtkTextView" id="txtPluginDescription"> | ||
822 | 282 | <property name="visible">True</property> | ||
823 | 283 | <property name="can_focus">True</property> | ||
824 | 284 | <property name="editable">False</property> | ||
825 | 285 | <property name="overwrite">False</property> | ||
826 | 286 | <property name="accepts_tab">True</property> | ||
827 | 287 | <property name="justification">GTK_JUSTIFY_LEFT</property> | ||
828 | 288 | <property name="wrap_mode">GTK_WRAP_WORD</property> | ||
829 | 289 | <property name="cursor_visible">False</property> | ||
830 | 290 | <property name="pixels_above_lines">0</property> | ||
831 | 291 | <property name="pixels_below_lines">0</property> | ||
832 | 292 | <property name="pixels_inside_wrap">0</property> | ||
833 | 293 | <property name="left_margin">0</property> | ||
834 | 294 | <property name="right_margin">0</property> | ||
835 | 295 | <property name="indent">0</property> | ||
836 | 296 | <property name="text" translatable="yes"></property> | ||
837 | 297 | </widget> | ||
838 | 298 | </child> | ||
839 | 299 | </widget> | ||
840 | 300 | <packing> | ||
841 | 301 | <property name="padding">0</property> | ||
842 | 302 | <property name="expand">True</property> | ||
843 | 303 | <property name="fill">True</property> | ||
844 | 304 | </packing> | ||
845 | 305 | </child> | ||
846 | 306 | </widget> | ||
847 | 307 | </child> | ||
848 | 308 | </widget> | ||
849 | 309 | </child> | ||
850 | 310 | |||
851 | 311 | <child> | ||
852 | 312 | <widget class="GtkLabel" id="lblPluginName"> | ||
853 | 313 | <property name="visible">True</property> | ||
854 | 314 | <property name="label" translatable="yes"><b>No Plugin Selected</b></property> | ||
855 | 315 | <property name="use_underline">False</property> | ||
856 | 316 | <property name="use_markup">True</property> | ||
857 | 317 | <property name="justify">GTK_JUSTIFY_LEFT</property> | ||
858 | 318 | <property name="wrap">False</property> | ||
859 | 319 | <property name="selectable">False</property> | ||
860 | 320 | <property name="xalign">0.5</property> | ||
861 | 321 | <property name="yalign">0.5</property> | ||
862 | 322 | <property name="xpad">10</property> | ||
863 | 323 | <property name="ypad">4</property> | ||
864 | 324 | <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> | ||
865 | 325 | <property name="width_chars">-1</property> | ||
866 | 326 | <property name="single_line_mode">False</property> | ||
867 | 327 | <property name="angle">0</property> | ||
868 | 328 | </widget> | ||
869 | 329 | <packing> | ||
870 | 330 | <property name="type">label_item</property> | ||
871 | 331 | </packing> | ||
872 | 332 | </child> | ||
873 | 333 | </widget> | ||
874 | 334 | <packing> | ||
875 | 335 | <property name="padding">2</property> | ||
876 | 336 | <property name="expand">True</property> | ||
877 | 337 | <property name="fill">True</property> | ||
878 | 338 | </packing> | ||
879 | 339 | </child> | ||
880 | 340 | </widget> | ||
881 | 341 | <packing> | ||
882 | 342 | <property name="padding">0</property> | ||
883 | 343 | <property name="expand">True</property> | ||
884 | 344 | <property name="fill">True</property> | ||
885 | 345 | </packing> | ||
886 | 346 | </child> | ||
887 | 347 | </widget> | ||
888 | 348 | </child> | ||
889 | 349 | </widget> | ||
890 | 350 | |||
891 | 351 | </glade-interface> | ||
892 | 0 | 352 | ||
893 | === added directory 'GTG/plugins' | |||
894 | === added directory 'GTG/plugins/geolocalized-tasks' | |||
895 | === added file 'GTG/plugins/geolocalized-tasks/geolocalized-tasks.py' | |||
896 | --- GTG/plugins/geolocalized-tasks/geolocalized-tasks.py 1970-01-01 00:00:00 +0000 | |||
897 | +++ GTG/plugins/geolocalized-tasks/geolocalized-tasks.py 2009-07-29 16:20:32 +0000 | |||
898 | @@ -0,0 +1,572 @@ | |||
899 | 1 | # -*- coding: utf-8 -*- | ||
900 | 2 | # Copyright (c) 2009 - Paulo Cabido <paulo.cabido@gmail.com> | ||
901 | 3 | # | ||
902 | 4 | # This program is free software: you can redistribute it and/or modify it under | ||
903 | 5 | # the terms of the GNU General Public License as published by the Free Software | ||
904 | 6 | # Foundation, either version 3 of the License, or (at your option) any later | ||
905 | 7 | # version. | ||
906 | 8 | # | ||
907 | 9 | # This program is distributed in the hope that it will be useful, but WITHOUT | ||
908 | 10 | # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS | ||
909 | 11 | # FOR A PARTICULAR PURPOSE. See the GNU General Public License for more | ||
910 | 12 | # details. | ||
911 | 13 | # | ||
912 | 14 | # You should have received a copy of the GNU General Public License along with | ||
913 | 15 | # this program. If not, see <http://www.gnu.org/licenses/>. | ||
914 | 16 | |||
915 | 17 | import gtk, pygtk | ||
916 | 18 | import os, sys | ||
917 | 19 | from time import sleep | ||
918 | 20 | |||
919 | 21 | from xdg.BaseDirectory import * | ||
920 | 22 | from configobj import ConfigObj | ||
921 | 23 | |||
922 | 24 | import Geoclue | ||
923 | 25 | |||
924 | 26 | import clutter, cluttergtk | ||
925 | 27 | import champlain, champlaingtk | ||
926 | 28 | |||
927 | 29 | # IMPORTANT This add's the plugin's path to python sys path | ||
928 | 30 | sys.path.insert(0,os.path.dirname(os.path.abspath(__file__))) | ||
929 | 31 | from marker import MarkerLayer | ||
930 | 32 | |||
931 | 33 | |||
932 | 34 | from GTG.core.plugins.engine import PluginEngine | ||
933 | 35 | |||
934 | 36 | class geolocalizedTasks: | ||
935 | 37 | PLUGIN_NAME = 'Geolocalized Tasks' | ||
936 | 38 | PLUGIN_AUTHORS = 'Paulo Cabido <paulo.cabido@gmail.com>' | ||
937 | 39 | PLUGIN_VERSION = '0.1' | ||
938 | 40 | PLUGIN_DESCRIPTION = 'This plugin adds geolocalized tasks to GTG!.\n \ | ||
939 | 41 | WARNING: This plugin is still heavy development.' | ||
940 | 42 | |||
941 | 43 | PLUGIN_ENABLED = False | ||
942 | 44 | |||
943 | 45 | def __init__(self): | ||
944 | 46 | self.geoclue = Geoclue.DiscoverLocation() | ||
945 | 47 | self.geoclue.init() | ||
946 | 48 | self.location = self.geoclue.get_location_info() | ||
947 | 49 | |||
948 | 50 | self.plugin_path = os.path.dirname(os.path.abspath(__file__)) | ||
949 | 51 | self.glade_file = os.path.join(self.plugin_path, "geolocalized.glade") | ||
950 | 52 | |||
951 | 53 | # the preference menu for the plugin | ||
952 | 54 | self.menu_item = gtk.MenuItem("Geolocalized-tasks Preferences") | ||
953 | 55 | |||
954 | 56 | # toolbar button for the new Location view | ||
955 | 57 | # create the pixbuf with the icon and it's size. | ||
956 | 58 | # 24,24 is the TaskEditor's toolbar icon size | ||
957 | 59 | image_geolocalization_path = os.path.join(self.plugin_path, "icons/hicolor/24x24/geolocalization.png") | ||
958 | 60 | pixbuf_geolocalization = gtk.gdk.pixbuf_new_from_file_at_size(image_geolocalization_path, 24, 24) | ||
959 | 61 | |||
960 | 62 | image_assign_location_path = os.path.join(self.plugin_path, "icons/hicolor/16x16/assign-location.png") | ||
961 | 63 | pixbug_assign_location = gtk.gdk.pixbuf_new_from_file_at_size(image_assign_location_path, 16, 16) | ||
962 | 64 | |||
963 | 65 | # create the image and associate the pixbuf | ||
964 | 66 | self.icon_geolocalization = gtk.Image() | ||
965 | 67 | self.icon_geolocalization.set_from_pixbuf(pixbuf_geolocalization) | ||
966 | 68 | self.icon_geolocalization.show() | ||
967 | 69 | |||
968 | 70 | image_assign_location = gtk.Image() | ||
969 | 71 | image_assign_location.set_from_pixbuf(pixbug_assign_location) | ||
970 | 72 | image_assign_location.show() | ||
971 | 73 | |||
972 | 74 | # the menu intem for the tag context | ||
973 | 75 | self.context_item = gtk.ImageMenuItem("Assign a location to this tag") | ||
974 | 76 | self.context_item.set_image(image_assign_location) | ||
975 | 77 | # TODO: add a short cut to the menu | ||
976 | 78 | |||
977 | 79 | # toolbar button for the location_view | ||
978 | 80 | self.btn_location_view = gtk.ToggleToolButton() | ||
979 | 81 | self.btn_location_view.set_icon_widget(self.icon_geolocalization) | ||
980 | 82 | self.btn_location_view.set_label("Location View") | ||
981 | 83 | |||
982 | 84 | self.PROXIMITY_FACTOR = 5 # 5 km | ||
983 | 85 | self.LOCATION_ACCURACY = 3 # Locality | ||
984 | 86 | self.LOCATION_DETERMINATION_METHOD = ["network", "gps", "cellphone"] | ||
985 | 87 | #for provider in self.geoclue.get_available_providers(): | ||
986 | 88 | # if provider['position'] and (provider['provider'] != "Example Provider" and provider['provider'] != "Plazes"): | ||
987 | 89 | # self.LOCATION_DETERMINATION_METHOD.append(provider["provider"]) | ||
988 | 90 | |||
989 | 91 | |||
990 | 92 | |||
991 | 93 | def activate(self, plugin_api): | ||
992 | 94 | self.menu_item.connect('activate', self.on_geolocalized_preferences, plugin_api) | ||
993 | 95 | plugin_api.AddMenuItem(self.menu_item) | ||
994 | 96 | |||
995 | 97 | self.context_item.connect('activate', self.on_contextmenu_tag_location, plugin_api) | ||
996 | 98 | plugin_api.add_menu_tagpopup(self.context_item) | ||
997 | 99 | |||
998 | 100 | # get the user settings from the config file | ||
999 | 101 | self.config = plugin_api.get_config() | ||
1000 | 102 | if self.config.has_key("geolocalized-tasks"): | ||
1001 | 103 | if self.config["geolocalized-tasks"].has_key("proximity_factor"): | ||
1002 | 104 | self.PROXIMITY_FACTOR = self.config["geolocalized-tasks"]["proximity_factor"] | ||
1003 | 105 | |||
1004 | 106 | if self.config["geolocalized-tasks"].has_key("accuracy"): | ||
1005 | 107 | self.LOCATION_ACCURACY = self.config["geolocalized-tasks"]["accuracy"] | ||
1006 | 108 | |||
1007 | 109 | if self.config["geolocalized-tasks"].has_key("location_determination_method"): | ||
1008 | 110 | self.LOCATION_DETERMINATION_METHOD = self.config["geolocalized-tasks"]["location_determination_method"] | ||
1009 | 111 | |||
1010 | 112 | # filter the tasks location for the workview | ||
1011 | 113 | self.filter_workview_by_location(plugin_api) | ||
1012 | 114 | |||
1013 | 115 | def deactivate(self, plugin_api): | ||
1014 | 116 | plugin_api.RemoveMenuItem(self.menu_item) | ||
1015 | 117 | plugin_api.remove_menu_tagpopup(self.context_item) | ||
1016 | 118 | #plugin_api.RemoveToolbarItem(None, self.seperator_location_view) | ||
1017 | 119 | |||
1018 | 120 | self.config["geolocalized-tasks"] = {} | ||
1019 | 121 | self.config["geolocalized-tasks"]["proximity_factor"] = self.PROXIMITY_FACTOR | ||
1020 | 122 | self.config["geolocalized-tasks"]["accuracy"] = self.LOCATION_ACCURACY | ||
1021 | 123 | self.config["geolocalized-tasks"]["location_determination_method"] = self.LOCATION_DETERMINATION_METHOD | ||
1022 | 124 | |||
1023 | 125 | def onTaskOpened(self, plugin_api): | ||
1024 | 126 | plugin_api.AddTaskToolbarItem(gtk.SeparatorToolItem()) | ||
1025 | 127 | |||
1026 | 128 | btn_set_location = gtk.ToolButton() | ||
1027 | 129 | btn_set_location.set_icon_widget(self.icon_geolocalization) | ||
1028 | 130 | btn_set_location.set_label("Set/View location") | ||
1029 | 131 | btn_set_location.connect('clicked', self.set_task_location, plugin_api) | ||
1030 | 132 | plugin_api.AddTaskToolbarItem(btn_set_location) | ||
1031 | 133 | |||
1032 | 134 | # the task location filter | ||
1033 | 135 | def filter_workview_by_location(self, plugin_api): | ||
1034 | 136 | # TODO: if the location has a delay in being calculated it may not exist at | ||
1035 | 137 | # this point | ||
1036 | 138 | if self.location.has_key("latitude") and self.location.has_key("longitude"): | ||
1037 | 139 | tasks = plugin_api.get_all_tasks() | ||
1038 | 140 | |||
1039 | 141 | tasks_with_location = [] | ||
1040 | 142 | tasks_without_location = [] | ||
1041 | 143 | |||
1042 | 144 | for tid in tasks: | ||
1043 | 145 | task = plugin_api.get_task(tid) | ||
1044 | 146 | tags = task.get_tags() | ||
1045 | 147 | for tag in tags: | ||
1046 | 148 | if "location" in tag.get_all_attributes(): | ||
1047 | 149 | tasks_with_location.append(task) | ||
1048 | 150 | else: | ||
1049 | 151 | tasks_without_location.append(task) | ||
1050 | 152 | |||
1051 | 153 | for task in tasks_with_location: | ||
1052 | 154 | if task.is_workable(): | ||
1053 | 155 | tags = task.get_tags() | ||
1054 | 156 | for tag in tags: | ||
1055 | 157 | if tag.get_attribute("location"): | ||
1056 | 158 | position = eval(tag.get_attribute("location")) | ||
1057 | 159 | if not self.geoclue.compare_position(position[0], position[1], float(self.PROXIMITY_FACTOR)): | ||
1058 | 160 | plugin_api.add_task_to_workview_filter(task.get_id()) | ||
1059 | 161 | |||
1060 | 162 | |||
1061 | 163 | #=== GEOLOCALIZED PREFERENCES=================================================== | ||
1062 | 164 | def on_geolocalized_preferences(self, widget, plugin_api): | ||
1063 | 165 | wTree = gtk.glade.XML(self.glade_file, "Preferences") | ||
1064 | 166 | dialog = wTree.get_widget("Preferences") | ||
1065 | 167 | dialog.connect("response", self.preferences_close) | ||
1066 | 168 | plugin_api.set_parent_window(dialog) | ||
1067 | 169 | |||
1068 | 170 | cmb_accuracy = wTree.get_widget("cmb_accuracy") | ||
1069 | 171 | for i in range(len(cmb_accuracy.get_model())): | ||
1070 | 172 | if str(self.accuracy_to_value(cmb_accuracy.get_model()[i][0])) == str(self.LOCATION_ACCURACY): | ||
1071 | 173 | cmb_accuracy.set_active(i) | ||
1072 | 174 | cmb_accuracy.connect("changed", self.cmb_accuracy_changed) | ||
1073 | 175 | self.tmp_location_accuracy = self.LOCATION_ACCURACY | ||
1074 | 176 | |||
1075 | 177 | check_network = wTree.get_widget("check_network") | ||
1076 | 178 | check_cellphone = wTree.get_widget("check_cellphone") | ||
1077 | 179 | check_gps = wTree.get_widget("check_gps") | ||
1078 | 180 | |||
1079 | 181 | if "network" in self.LOCATION_DETERMINATION_METHOD: | ||
1080 | 182 | check_network.set_active(True) | ||
1081 | 183 | |||
1082 | 184 | if "cellphone" in self.LOCATION_DETERMINATION_METHOD: | ||
1083 | 185 | check_cellphone.set_active(True) | ||
1084 | 186 | |||
1085 | 187 | if "gps" in self.LOCATION_DETERMINATION_METHOD: | ||
1086 | 188 | check_gps.set_active(True) | ||
1087 | 189 | |||
1088 | 190 | |||
1089 | 191 | spin_proximityfactor = wTree.get_widget("spin_proximityfactor") | ||
1090 | 192 | spin_proximityfactor.set_value(float(self.PROXIMITY_FACTOR)) | ||
1091 | 193 | spin_proximityfactor.connect("changed", self.spin_proximityfactor_changed) | ||
1092 | 194 | self.tmp_proximityfactor = float(self.PROXIMITY_FACTOR) | ||
1093 | 195 | |||
1094 | 196 | dialog.show_all() | ||
1095 | 197 | |||
1096 | 198 | # converts the accuracy to a value | ||
1097 | 199 | def accuracy_to_value(self, accuracy): | ||
1098 | 200 | if not accuracy: | ||
1099 | 201 | return 0 | ||
1100 | 202 | elif accuracy.lower() == "Country".lower(): | ||
1101 | 203 | return 1 | ||
1102 | 204 | elif accuracy.lower() == "Region".lower(): | ||
1103 | 205 | return 2 | ||
1104 | 206 | elif accuracy.lower() == "Locality".lower(): | ||
1105 | 207 | return 3 | ||
1106 | 208 | elif accuracy.lower() == "Postalcode".lower(): | ||
1107 | 209 | return 4 | ||
1108 | 210 | elif accuracy.lower() == "Street".lower(): | ||
1109 | 211 | return 5 | ||
1110 | 212 | elif accuracy.lower() == "Detailed".lower(): | ||
1111 | 213 | return 6 | ||
1112 | 214 | return 0 | ||
1113 | 215 | |||
1114 | 216 | # converts the value of a accuracy to the accuracy | ||
1115 | 217 | def value_to_accuracy(self, value): | ||
1116 | 218 | if not value: | ||
1117 | 219 | return None | ||
1118 | 220 | elif value == 1: | ||
1119 | 221 | return "Country" | ||
1120 | 222 | elif value == 2: | ||
1121 | 223 | return "Region" | ||
1122 | 224 | elif value == 3: | ||
1123 | 225 | return "Locality" | ||
1124 | 226 | elif value == 4: | ||
1125 | 227 | return "Postalcode" | ||
1126 | 228 | elif value == 5: | ||
1127 | 229 | return "Street" | ||
1128 | 230 | elif value == 6: | ||
1129 | 231 | return "Detailed" | ||
1130 | 232 | return None | ||
1131 | 233 | |||
1132 | 234 | def cmb_accuracy_changed(self, comboboxentry): | ||
1133 | 235 | index = comboboxentry.get_active() | ||
1134 | 236 | model = comboboxentry.get_model() | ||
1135 | 237 | self.tmp_location_accuracy = self.accuracy_to_value(model[index][0]) | ||
1136 | 238 | |||
1137 | 239 | def spin_proximityfactor_changed(self, spinbutton): | ||
1138 | 240 | self.tmp_proximityfactor = spinbutton.get_value() | ||
1139 | 241 | |||
1140 | 242 | def preferences_close(self, dialog, response=None): | ||
1141 | 243 | if response == gtk.RESPONSE_OK: | ||
1142 | 244 | self.LOCATION_ACCURACY = self.tmp_location_accuracy | ||
1143 | 245 | self.PROXIMITY_FACTOR = float(self.tmp_proximityfactor) | ||
1144 | 246 | dialog.destroy() | ||
1145 | 247 | else: | ||
1146 | 248 | dialog.destroy() | ||
1147 | 249 | |||
1148 | 250 | #=== GEOLOCALIZED PREFERENCES=================================================== | ||
1149 | 251 | |||
1150 | 252 | #=== SET TASK LOCATION ========================================================= | ||
1151 | 253 | def set_task_location(self, widget, plugin_api, location=None): | ||
1152 | 254 | location = self.geoclue.get_location_info() | ||
1153 | 255 | self.plugin_api = plugin_api | ||
1154 | 256 | |||
1155 | 257 | wTree = gtk.glade.XML(self.glade_file, "SetTaskLocation") | ||
1156 | 258 | dialog = wTree.get_widget("SetTaskLocation") | ||
1157 | 259 | self.plugin_api.set_parent_window(dialog) | ||
1158 | 260 | |||
1159 | 261 | btn_zoom_in = wTree.get_widget("btn_zoom_in") | ||
1160 | 262 | btn_zoom_out = wTree.get_widget("btn_zoom_out") | ||
1161 | 263 | |||
1162 | 264 | self.radiobutton1 = wTree.get_widget("radiobutton1") | ||
1163 | 265 | self.radiobutton2 = wTree.get_widget("radiobutton2") | ||
1164 | 266 | self.txt_new_tag = wTree.get_widget("txt_new_tag") | ||
1165 | 267 | self.cmb_existing_tag = wTree.get_widget("cmb_existing_tag") | ||
1166 | 268 | |||
1167 | 269 | tabela = wTree.get_widget("tabela_set_task") | ||
1168 | 270 | vbox_map = wTree.get_widget("vbox_map") | ||
1169 | 271 | vbox_opt = wTree.get_widget("vbox_opt") | ||
1170 | 272 | |||
1171 | 273 | champlain_view = champlain.View() | ||
1172 | 274 | champlain_view.set_property("scroll-mode", champlain.SCROLL_MODE_KINETIC) | ||
1173 | 275 | #champlain_view.set_property("zoom-on-double-click", False) | ||
1174 | 276 | |||
1175 | 277 | # create a list of the tags and their attributes | ||
1176 | 278 | tag_list = [] | ||
1177 | 279 | for tag in plugin_api.get_tags(): | ||
1178 | 280 | tmp_tag = {} | ||
1179 | 281 | for attr in tag.get_all_attributes(): | ||
1180 | 282 | if attr == "color": | ||
1181 | 283 | tmp_tag[attr] = self.HTMLColorToRGB(tag.get_attribute(attr)) | ||
1182 | 284 | tmp_tag['has_color'] = "yes" | ||
1183 | 285 | elif attr == "location": | ||
1184 | 286 | tmp_tag[attr] = eval(tag.get_attribute(attr)) | ||
1185 | 287 | else: | ||
1186 | 288 | tmp_tag[attr] = tag.get_attribute(attr) | ||
1187 | 289 | tag_list.append(tmp_tag) | ||
1188 | 290 | |||
1189 | 291 | # checks if there is one tag with a location | ||
1190 | 292 | task_has_location = False | ||
1191 | 293 | for tag in tag_list: | ||
1192 | 294 | for key, item in tag.items(): | ||
1193 | 295 | if key == "location": | ||
1194 | 296 | task_has_location = True | ||
1195 | 297 | break | ||
1196 | 298 | |||
1197 | 299 | # set the markers | ||
1198 | 300 | layer = MarkerLayer() | ||
1199 | 301 | |||
1200 | 302 | self.marker_list = [] | ||
1201 | 303 | if task_has_location: | ||
1202 | 304 | for tag in tag_list: | ||
1203 | 305 | for key, item in tag.items(): | ||
1204 | 306 | if key == "location": | ||
1205 | 307 | color = None | ||
1206 | 308 | try: | ||
1207 | 309 | if tag['has_color'] == "yes": | ||
1208 | 310 | color = tag['color'] | ||
1209 | 311 | except: | ||
1210 | 312 | # PROBLEM: the tag doesn't have color | ||
1211 | 313 | # Possibility, use a color from another tag | ||
1212 | 314 | pass | ||
1213 | 315 | |||
1214 | 316 | self.marker_list.append(layer.add_marker(plugin_api.get_task_title(), tag['location'][0], tag['location'][1], color)) | ||
1215 | 317 | else: | ||
1216 | 318 | try: | ||
1217 | 319 | if location['longitude'] and location['latitude']: | ||
1218 | 320 | self.marker_list.append(layer.add_marker(plugin_api.get_task_title(), location['latitude'], location['longitude'])) | ||
1219 | 321 | except: | ||
1220 | 322 | self.marker_list.append(layer.add_marker(plugin_api.get_task_title(), None, None)) | ||
1221 | 323 | |||
1222 | 324 | champlain_view.add_layer(layer) | ||
1223 | 325 | |||
1224 | 326 | embed = cluttergtk.Embed() | ||
1225 | 327 | embed.set_size_request(400, 300) | ||
1226 | 328 | |||
1227 | 329 | if not task_has_location: | ||
1228 | 330 | # method that will change the marker's position | ||
1229 | 331 | champlain_view.set_reactive(True) | ||
1230 | 332 | champlain_view.connect("button-release-event", self.champlain_change_marker, champlain_view) | ||
1231 | 333 | |||
1232 | 334 | layer.show_all() | ||
1233 | 335 | |||
1234 | 336 | if task_has_location: | ||
1235 | 337 | champlain_view.set_property("zoom-level", 9) | ||
1236 | 338 | elif location: | ||
1237 | 339 | champlain_view.set_property("zoom-level", 5) | ||
1238 | 340 | else: | ||
1239 | 341 | champlain_view.set_property("zoom-level", 1) | ||
1240 | 342 | |||
1241 | 343 | vbox_map.add(embed) | ||
1242 | 344 | |||
1243 | 345 | embed.realize() | ||
1244 | 346 | stage = embed.get_stage() | ||
1245 | 347 | champlain_view.set_size(400, 300) | ||
1246 | 348 | stage.add(champlain_view) | ||
1247 | 349 | |||
1248 | 350 | # connect the toolbar buttons for zoom | ||
1249 | 351 | btn_zoom_in.connect("clicked", self.zoom_in, champlain_view) | ||
1250 | 352 | btn_zoom_out.connect("clicked", self.zoom_out, champlain_view) | ||
1251 | 353 | dialog.connect("response", self.set_task_location_close) | ||
1252 | 354 | |||
1253 | 355 | #if there is no location set, we want to set it | ||
1254 | 356 | if not task_has_location: | ||
1255 | 357 | self.location_defined = False | ||
1256 | 358 | if len(plugin_api.get_tags()) > 0: | ||
1257 | 359 | liststore = gtk.ListStore(str) | ||
1258 | 360 | self.cmb_existing_tag.set_model(liststore) | ||
1259 | 361 | for tag in plugin_api.get_tags(): | ||
1260 | 362 | liststore.append([tag.get_attribute("name")]) | ||
1261 | 363 | self.cmb_existing_tag.set_text_column(0) | ||
1262 | 364 | self.cmb_existing_tag.set_active(0) | ||
1263 | 365 | else: | ||
1264 | 366 | #remove radiobutton2 and the comboboxentry | ||
1265 | 367 | tabela.remove(self.radiobutton1) | ||
1266 | 368 | tabela.remove(self.radiobutton2) | ||
1267 | 369 | tabela.remove(self.cmb_existing_tag) | ||
1268 | 370 | label = gtk.Label() | ||
1269 | 371 | label.set_text("Associate with new tag: ") | ||
1270 | 372 | tabela.attach(label, 0, 1, 0, 1) | ||
1271 | 373 | label.show() | ||
1272 | 374 | else: | ||
1273 | 375 | self.location_defined = True | ||
1274 | 376 | vbox_opt.remove(tabela) | ||
1275 | 377 | dialog.set_title("View the task's location") | ||
1276 | 378 | |||
1277 | 379 | dialog.show_all() | ||
1278 | 380 | |||
1279 | 381 | if task_has_location: | ||
1280 | 382 | marker_position = (self.marker_list[0].get_property('latitude'), self.marker_list[0].get_property('longitude')) | ||
1281 | 383 | champlain_view.center_on(marker_position[0], marker_position[1]) | ||
1282 | 384 | else: | ||
1283 | 385 | try: | ||
1284 | 386 | if location['longitude'] and location['latitude']: | ||
1285 | 387 | champlain_view.center_on(location['latitude'], location['longitude']) | ||
1286 | 388 | except: | ||
1287 | 389 | pass | ||
1288 | 390 | |||
1289 | 391 | def set_task_location_close(self, dialog, response=None): | ||
1290 | 392 | if response == gtk.RESPONSE_OK: | ||
1291 | 393 | # ok | ||
1292 | 394 | # tries to get the radiobuttons value, witch may not exist | ||
1293 | 395 | if not self.location_defined: | ||
1294 | 396 | if self.radiobutton1.get_active(): | ||
1295 | 397 | # radiobutton1 | ||
1296 | 398 | if self.txt_new_tag.get_text().strip() != "": | ||
1297 | 399 | marker_position = (self.marker_list[0].get_property('latitude'), self.marker_list[0].get_property('longitude')) | ||
1298 | 400 | |||
1299 | 401 | # because users sometimes make mistakes, I'll check if the tag exists | ||
1300 | 402 | tmp_tag = "" | ||
1301 | 403 | for tag in self.plugin_api.get_tags(): | ||
1302 | 404 | t = "@" + self.txt_new_tag.get_text().replace("@", "") | ||
1303 | 405 | if tag.get_attribute("name") == t: | ||
1304 | 406 | tmp_tag = t | ||
1305 | 407 | if tmp_tag: | ||
1306 | 408 | self.plugin_api.add_tag_attribute(self.txt_new_tag.get_text().replace("@", ""), | ||
1307 | 409 | "location", | ||
1308 | 410 | marker_position) | ||
1309 | 411 | else: | ||
1310 | 412 | self.plugin_api.add_tag(self.txt_new_tag.get_text().replace("@", "")) | ||
1311 | 413 | self.plugin_api.add_tag_attribute("@" + self.txt_new_tag.get_text().replace("@", ""), | ||
1312 | 414 | "location", | ||
1313 | 415 | marker_position) | ||
1314 | 416 | dialog.destroy() | ||
1315 | 417 | else: | ||
1316 | 418 | self.errorDialog(dialog, "Error: No tag defined", "The tag has to be defined so that the location can be associated with it.") | ||
1317 | 419 | else: | ||
1318 | 420 | # radiobutton2 | ||
1319 | 421 | marker_position = (self.marker_list[0].get_property('latitude'), self.marker_list[0].get_property('longitude')) | ||
1320 | 422 | index = self.cmb_existing_tag.get_active() | ||
1321 | 423 | model = self.cmb_existing_tag.get_model() | ||
1322 | 424 | self.plugin_api.add_tag_attribute(model[index][0], "location", marker_position) | ||
1323 | 425 | dialog.destroy() | ||
1324 | 426 | else: | ||
1325 | 427 | # cancel | ||
1326 | 428 | dialog.destroy() | ||
1327 | 429 | |||
1328 | 430 | def champlain_change_marker(self, widget, event, view): | ||
1329 | 431 | if event.button != 1 or event.click_count > 1: | ||
1330 | 432 | return False | ||
1331 | 433 | |||
1332 | 434 | (latitude, longitude) = view.get_coords_at(int(event.x), int(event.y)) | ||
1333 | 435 | self.marker_list[0].set_position(latitude, longitude) | ||
1334 | 436 | |||
1335 | 437 | #=== SET TASK LOCATION ========================================================= | ||
1336 | 438 | |||
1337 | 439 | #=== TAG VIEW CONTEXT MENU ===================================================== | ||
1338 | 440 | def on_contextmenu_tag_location(self, widget, plugin_api): | ||
1339 | 441 | location = self.geoclue.get_location_info() | ||
1340 | 442 | self.plugin_api_context = plugin_api | ||
1341 | 443 | |||
1342 | 444 | wTree = gtk.glade.XML(self.glade_file, "TagLocation") | ||
1343 | 445 | dialog = wTree.get_widget("TagLocation") | ||
1344 | 446 | self.plugin_api_context.set_parent_window(dialog) | ||
1345 | 447 | |||
1346 | 448 | btn_zoom_in = wTree.get_widget("btn_zoom_in") | ||
1347 | 449 | btn_zoom_out = wTree.get_widget("btn_zoom_out") | ||
1348 | 450 | vbox_map = wTree.get_widget("vbox_map") | ||
1349 | 451 | |||
1350 | 452 | tag = self.plugin_api_context.get_tagpopup_tag() | ||
1351 | 453 | dialog.set_title(tag.get_attribute("name") + "'s Location") | ||
1352 | 454 | |||
1353 | 455 | # get the tag's location | ||
1354 | 456 | try: | ||
1355 | 457 | tag_location = eval(tag.get_attribute("location")) | ||
1356 | 458 | except: | ||
1357 | 459 | tag_location = None | ||
1358 | 460 | |||
1359 | 461 | # get the tag's color | ||
1360 | 462 | try: | ||
1361 | 463 | tag_color = self.HTMLColorToRGB(tag.get_attribute("color")) | ||
1362 | 464 | except: | ||
1363 | 465 | tag_color = None | ||
1364 | 466 | |||
1365 | 467 | champlain_view = champlain.View() | ||
1366 | 468 | champlain_view.set_property("scroll-mode", champlain.SCROLL_MODE_KINETIC) | ||
1367 | 469 | |||
1368 | 470 | layer = MarkerLayer() | ||
1369 | 471 | |||
1370 | 472 | marker_tag = None | ||
1371 | 473 | if tag_location: | ||
1372 | 474 | marker_tag = layer.add_marker(tag.get_attribute("name"), tag_location[0], tag_location[1], tag_color) | ||
1373 | 475 | else: | ||
1374 | 476 | try: | ||
1375 | 477 | if location['longitude'] and location['latitude']: | ||
1376 | 478 | marker_tag = layer.add_marker(tag.get_attribute("name"), location['latitude'], location['longitude'], tag_color) | ||
1377 | 479 | except: | ||
1378 | 480 | marker_tag = layer.add_marker(tag.get_attribute("name"), None, None) | ||
1379 | 481 | |||
1380 | 482 | champlain_view.add_layer(layer) | ||
1381 | 483 | |||
1382 | 484 | embed = cluttergtk.Embed() | ||
1383 | 485 | embed.set_size_request(400, 300) | ||
1384 | 486 | |||
1385 | 487 | champlain_view.set_reactive(True) | ||
1386 | 488 | champlain_view.connect("button-release-event", self.champlain__tag_change_marker, champlain_view, marker_tag) | ||
1387 | 489 | |||
1388 | 490 | layer.show_all() | ||
1389 | 491 | |||
1390 | 492 | if tag_location: | ||
1391 | 493 | champlain_view.set_property("zoom-level", 9) | ||
1392 | 494 | elif location: | ||
1393 | 495 | champlain_view.set_property("zoom-level", 5) | ||
1394 | 496 | else: | ||
1395 | 497 | champlain_view.set_property("zoom-level", 1) | ||
1396 | 498 | |||
1397 | 499 | vbox_map.add(embed) | ||
1398 | 500 | |||
1399 | 501 | embed.realize() | ||
1400 | 502 | stage = embed.get_stage() | ||
1401 | 503 | champlain_view.set_size(400, 300) | ||
1402 | 504 | stage.add(champlain_view) | ||
1403 | 505 | |||
1404 | 506 | # connect the toolbar buttons for zoom | ||
1405 | 507 | btn_zoom_in.connect("clicked", self.zoom_in, champlain_view) | ||
1406 | 508 | btn_zoom_out.connect("clicked", self.zoom_out, champlain_view) | ||
1407 | 509 | dialog.connect("response", self.tag_location_close, tag, marker_tag) | ||
1408 | 510 | |||
1409 | 511 | dialog.show_all() | ||
1410 | 512 | |||
1411 | 513 | if tag_location: | ||
1412 | 514 | marker_position = (marker_tag.get_property('latitude'), marker_tag.get_property('longitude')) | ||
1413 | 515 | champlain_view.center_on(marker_position[0], marker_position[1]) | ||
1414 | 516 | else: | ||
1415 | 517 | try: | ||
1416 | 518 | if location['longitude'] and location['latitude']: | ||
1417 | 519 | champlain_view.center_on(location['latitude'], location['longitude']) | ||
1418 | 520 | except: | ||
1419 | 521 | pass | ||
1420 | 522 | |||
1421 | 523 | def champlain__tag_change_marker(self, widget, event, view, marker): | ||
1422 | 524 | if event.button != 1 or event.click_count > 1: | ||
1423 | 525 | return False | ||
1424 | 526 | |||
1425 | 527 | (latitude, longitude) = view.get_coords_at(int(event.x), int(event.y)) | ||
1426 | 528 | marker.set_position(latitude, longitude) | ||
1427 | 529 | |||
1428 | 530 | def tag_location_close(self, dialog, response=None, tag=None, marker=None): | ||
1429 | 531 | if response == gtk.RESPONSE_OK: | ||
1430 | 532 | tag_location = str((marker.get_property('latitude'), marker.get_property('longitude'))) | ||
1431 | 533 | tag.set_attribute("location", tag_location) | ||
1432 | 534 | dialog.destroy() | ||
1433 | 535 | else: | ||
1434 | 536 | dialog.destroy() | ||
1435 | 537 | |||
1436 | 538 | #=== TAG VIEW CONTEXT MENU ===================================================== | ||
1437 | 539 | |||
1438 | 540 | def zoom_in(self, widget, view): | ||
1439 | 541 | view.zoom_in() | ||
1440 | 542 | |||
1441 | 543 | def zoom_out(self, widget, view): | ||
1442 | 544 | view.zoom_out() | ||
1443 | 545 | |||
1444 | 546 | # http://code.activestate.com/recipes/266466/ | ||
1445 | 547 | # original by Paul Winkler | ||
1446 | 548 | def HTMLColorToRGB(self, colorstring): | ||
1447 | 549 | """ convert #RRGGBB to a clutter color var """ | ||
1448 | 550 | colorstring = colorstring.strip() | ||
1449 | 551 | if colorstring[0] == '#': colorstring = colorstring[1:] | ||
1450 | 552 | if len(colorstring) != 6: | ||
1451 | 553 | raise ValueError, "input #%s is not in #RRGGBB format" % colorstring | ||
1452 | 554 | r, g, b = colorstring[:2], colorstring[2:4], colorstring[4:] | ||
1453 | 555 | r, g, b = [int(n, 16) for n in (r, g, b)] | ||
1454 | 556 | return clutter.Color(r, g, b) | ||
1455 | 557 | |||
1456 | 558 | # error dialog | ||
1457 | 559 | def errorDialog(self, parent, header, msg): | ||
1458 | 560 | """ | ||
1459 | 561 | Show an error message. | ||
1460 | 562 | """ | ||
1461 | 563 | |||
1462 | 564 | dialog = gtk.MessageDialog(parent, | ||
1463 | 565 | flags=gtk.DIALOG_MODAL, | ||
1464 | 566 | type=gtk.MESSAGE_ERROR, | ||
1465 | 567 | buttons=gtk.BUTTONS_CLOSE) | ||
1466 | 568 | dialog.set_title("") | ||
1467 | 569 | dialog.set_markup("<big><b>%s</b></big>\n\n%s" % (header, msg)) | ||
1468 | 570 | dialog.realize() | ||
1469 | 571 | dialog.run() | ||
1470 | 572 | dialog.destroy() | ||
1471 | 0 | \ No newline at end of file | 573 | \ No newline at end of file |
1472 | 1 | 574 | ||
1473 | === added file 'GTG/plugins/geolocalized-tasks/geolocalized.glade' | |||
1474 | --- GTG/plugins/geolocalized-tasks/geolocalized.glade 1970-01-01 00:00:00 +0000 | |||
1475 | +++ GTG/plugins/geolocalized-tasks/geolocalized.glade 2009-07-29 15:30:45 +0000 | |||
1476 | @@ -0,0 +1,790 @@ | |||
1477 | 1 | <?xml version="1.0" standalone="no"?> <!--*- mode: xml -*--> | ||
1478 | 2 | <!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd"> | ||
1479 | 3 | |||
1480 | 4 | <glade-interface> | ||
1481 | 5 | |||
1482 | 6 | <widget class="GtkDialog" id="SetTaskLocation"> | ||
1483 | 7 | <property name="visible">True</property> | ||
1484 | 8 | <property name="title" translatable="yes">Set the task's location</property> | ||
1485 | 9 | <property name="type">GTK_WINDOW_TOPLEVEL</property> | ||
1486 | 10 | <property name="window_position">GTK_WIN_POS_NONE</property> | ||
1487 | 11 | <property name="modal">False</property> | ||
1488 | 12 | <property name="resizable">True</property> | ||
1489 | 13 | <property name="destroy_with_parent">False</property> | ||
1490 | 14 | <property name="decorated">True</property> | ||
1491 | 15 | <property name="skip_taskbar_hint">False</property> | ||
1492 | 16 | <property name="skip_pager_hint">False</property> | ||
1493 | 17 | <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> | ||
1494 | 18 | <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> | ||
1495 | 19 | <property name="focus_on_map">True</property> | ||
1496 | 20 | <property name="urgency_hint">False</property> | ||
1497 | 21 | <property name="has_separator">True</property> | ||
1498 | 22 | |||
1499 | 23 | <child internal-child="vbox"> | ||
1500 | 24 | <widget class="GtkVBox" id="dialog-vbox2"> | ||
1501 | 25 | <property name="visible">True</property> | ||
1502 | 26 | <property name="homogeneous">False</property> | ||
1503 | 27 | <property name="spacing">0</property> | ||
1504 | 28 | |||
1505 | 29 | <child internal-child="action_area"> | ||
1506 | 30 | <widget class="GtkHButtonBox" id="dialog-action_area2"> | ||
1507 | 31 | <property name="visible">True</property> | ||
1508 | 32 | <property name="layout_style">GTK_BUTTONBOX_END</property> | ||
1509 | 33 | |||
1510 | 34 | <child> | ||
1511 | 35 | <widget class="GtkButton" id="cancelbutton2"> | ||
1512 | 36 | <property name="visible">True</property> | ||
1513 | 37 | <property name="can_default">True</property> | ||
1514 | 38 | <property name="can_focus">True</property> | ||
1515 | 39 | <property name="label">gtk-cancel</property> | ||
1516 | 40 | <property name="use_stock">True</property> | ||
1517 | 41 | <property name="relief">GTK_RELIEF_NORMAL</property> | ||
1518 | 42 | <property name="focus_on_click">True</property> | ||
1519 | 43 | <property name="response_id">-6</property> | ||
1520 | 44 | </widget> | ||
1521 | 45 | </child> | ||
1522 | 46 | |||
1523 | 47 | <child> | ||
1524 | 48 | <widget class="GtkButton" id="okbutton2"> | ||
1525 | 49 | <property name="visible">True</property> | ||
1526 | 50 | <property name="can_default">True</property> | ||
1527 | 51 | <property name="can_focus">True</property> | ||
1528 | 52 | <property name="label">gtk-ok</property> | ||
1529 | 53 | <property name="use_stock">True</property> | ||
1530 | 54 | <property name="relief">GTK_RELIEF_NORMAL</property> | ||
1531 | 55 | <property name="focus_on_click">True</property> | ||
1532 | 56 | <property name="response_id">-5</property> | ||
1533 | 57 | </widget> | ||
1534 | 58 | </child> | ||
1535 | 59 | </widget> | ||
1536 | 60 | <packing> | ||
1537 | 61 | <property name="padding">0</property> | ||
1538 | 62 | <property name="expand">False</property> | ||
1539 | 63 | <property name="fill">True</property> | ||
1540 | 64 | <property name="pack_type">GTK_PACK_END</property> | ||
1541 | 65 | </packing> | ||
1542 | 66 | </child> | ||
1543 | 67 | |||
1544 | 68 | <child> | ||
1545 | 69 | <widget class="GtkVBox" id="vbox_map"> | ||
1546 | 70 | <property name="width_request">400</property> | ||
1547 | 71 | <property name="visible">True</property> | ||
1548 | 72 | <property name="homogeneous">False</property> | ||
1549 | 73 | <property name="spacing">0</property> | ||
1550 | 74 | |||
1551 | 75 | <child> | ||
1552 | 76 | <widget class="GtkToolbar" id="toolbar2"> | ||
1553 | 77 | <property name="visible">True</property> | ||
1554 | 78 | <property name="orientation">GTK_ORIENTATION_HORIZONTAL</property> | ||
1555 | 79 | <property name="toolbar_style">GTK_TOOLBAR_BOTH</property> | ||
1556 | 80 | <property name="tooltips">True</property> | ||
1557 | 81 | <property name="show_arrow">True</property> | ||
1558 | 82 | |||
1559 | 83 | <child> | ||
1560 | 84 | <widget class="GtkToolButton" id="btn_zoom_in"> | ||
1561 | 85 | <property name="visible">True</property> | ||
1562 | 86 | <property name="stock_id">gtk-zoom-in</property> | ||
1563 | 87 | <property name="visible_horizontal">True</property> | ||
1564 | 88 | <property name="visible_vertical">True</property> | ||
1565 | 89 | <property name="is_important">False</property> | ||
1566 | 90 | </widget> | ||
1567 | 91 | <packing> | ||
1568 | 92 | <property name="expand">False</property> | ||
1569 | 93 | <property name="homogeneous">True</property> | ||
1570 | 94 | </packing> | ||
1571 | 95 | </child> | ||
1572 | 96 | |||
1573 | 97 | <child> | ||
1574 | 98 | <widget class="GtkToolButton" id="btn_zoom_out"> | ||
1575 | 99 | <property name="visible">True</property> | ||
1576 | 100 | <property name="stock_id">gtk-zoom-out</property> | ||
1577 | 101 | <property name="visible_horizontal">True</property> | ||
1578 | 102 | <property name="visible_vertical">True</property> | ||
1579 | 103 | <property name="is_important">False</property> | ||
1580 | 104 | </widget> | ||
1581 | 105 | <packing> | ||
1582 | 106 | <property name="expand">False</property> | ||
1583 | 107 | <property name="homogeneous">True</property> | ||
1584 | 108 | </packing> | ||
1585 | 109 | </child> | ||
1586 | 110 | </widget> | ||
1587 | 111 | <packing> | ||
1588 | 112 | <property name="padding">0</property> | ||
1589 | 113 | <property name="expand">False</property> | ||
1590 | 114 | <property name="fill">False</property> | ||
1591 | 115 | </packing> | ||
1592 | 116 | </child> | ||
1593 | 117 | |||
1594 | 118 | <child> | ||
1595 | 119 | <widget class="GtkVBox" id="vbox_map"> | ||
1596 | 120 | <property name="visible">True</property> | ||
1597 | 121 | <property name="homogeneous">False</property> | ||
1598 | 122 | <property name="spacing">0</property> | ||
1599 | 123 | |||
1600 | 124 | <child> | ||
1601 | 125 | <placeholder/> | ||
1602 | 126 | </child> | ||
1603 | 127 | </widget> | ||
1604 | 128 | <packing> | ||
1605 | 129 | <property name="padding">0</property> | ||
1606 | 130 | <property name="expand">True</property> | ||
1607 | 131 | <property name="fill">True</property> | ||
1608 | 132 | </packing> | ||
1609 | 133 | </child> | ||
1610 | 134 | |||
1611 | 135 | <child> | ||
1612 | 136 | <widget class="GtkVBox" id="vbox_opt"> | ||
1613 | 137 | <property name="visible">True</property> | ||
1614 | 138 | <property name="homogeneous">False</property> | ||
1615 | 139 | <property name="spacing">0</property> | ||
1616 | 140 | |||
1617 | 141 | <child> | ||
1618 | 142 | <widget class="GtkTable" id="tabela_set_task"> | ||
1619 | 143 | <property name="visible">True</property> | ||
1620 | 144 | <property name="n_rows">2</property> | ||
1621 | 145 | <property name="n_columns">2</property> | ||
1622 | 146 | <property name="homogeneous">False</property> | ||
1623 | 147 | <property name="row_spacing">0</property> | ||
1624 | 148 | <property name="column_spacing">0</property> | ||
1625 | 149 | |||
1626 | 150 | <child> | ||
1627 | 151 | <widget class="GtkRadioButton" id="radiobutton1"> | ||
1628 | 152 | <property name="width_request">198</property> | ||
1629 | 153 | <property name="visible">True</property> | ||
1630 | 154 | <property name="can_focus">True</property> | ||
1631 | 155 | <property name="label" translatable="yes">Associate with new tag</property> | ||
1632 | 156 | <property name="use_underline">True</property> | ||
1633 | 157 | <property name="relief">GTK_RELIEF_NORMAL</property> | ||
1634 | 158 | <property name="focus_on_click">True</property> | ||
1635 | 159 | <property name="active">False</property> | ||
1636 | 160 | <property name="inconsistent">False</property> | ||
1637 | 161 | <property name="draw_indicator">True</property> | ||
1638 | 162 | </widget> | ||
1639 | 163 | <packing> | ||
1640 | 164 | <property name="left_attach">0</property> | ||
1641 | 165 | <property name="right_attach">1</property> | ||
1642 | 166 | <property name="top_attach">0</property> | ||
1643 | 167 | <property name="bottom_attach">1</property> | ||
1644 | 168 | <property name="x_options">fill</property> | ||
1645 | 169 | <property name="y_options"></property> | ||
1646 | 170 | </packing> | ||
1647 | 171 | </child> | ||
1648 | 172 | |||
1649 | 173 | <child> | ||
1650 | 174 | <widget class="GtkRadioButton" id="radiobutton2"> | ||
1651 | 175 | <property name="visible">True</property> | ||
1652 | 176 | <property name="can_focus">True</property> | ||
1653 | 177 | <property name="label" translatable="yes">Associate with existing tag</property> | ||
1654 | 178 | <property name="use_underline">True</property> | ||
1655 | 179 | <property name="relief">GTK_RELIEF_NORMAL</property> | ||
1656 | 180 | <property name="focus_on_click">True</property> | ||
1657 | 181 | <property name="active">False</property> | ||
1658 | 182 | <property name="inconsistent">False</property> | ||
1659 | 183 | <property name="draw_indicator">True</property> | ||
1660 | 184 | <property name="group">radiobutton1</property> | ||
1661 | 185 | </widget> | ||
1662 | 186 | <packing> | ||
1663 | 187 | <property name="left_attach">0</property> | ||
1664 | 188 | <property name="right_attach">1</property> | ||
1665 | 189 | <property name="top_attach">1</property> | ||
1666 | 190 | <property name="bottom_attach">2</property> | ||
1667 | 191 | <property name="x_options">fill</property> | ||
1668 | 192 | <property name="y_options"></property> | ||
1669 | 193 | </packing> | ||
1670 | 194 | </child> | ||
1671 | 195 | |||
1672 | 196 | <child> | ||
1673 | 197 | <widget class="GtkEntry" id="txt_new_tag"> | ||
1674 | 198 | <property name="visible">True</property> | ||
1675 | 199 | <property name="can_focus">True</property> | ||
1676 | 200 | <property name="editable">True</property> | ||
1677 | 201 | <property name="visibility">True</property> | ||
1678 | 202 | <property name="max_length">0</property> | ||
1679 | 203 | <property name="text" translatable="yes"></property> | ||
1680 | 204 | <property name="has_frame">True</property> | ||
1681 | 205 | <property name="invisible_char">â—Ź</property> | ||
1682 | 206 | <property name="activates_default">False</property> | ||
1683 | 207 | </widget> | ||
1684 | 208 | <packing> | ||
1685 | 209 | <property name="left_attach">1</property> | ||
1686 | 210 | <property name="right_attach">2</property> | ||
1687 | 211 | <property name="top_attach">0</property> | ||
1688 | 212 | <property name="bottom_attach">1</property> | ||
1689 | 213 | <property name="y_options"></property> | ||
1690 | 214 | </packing> | ||
1691 | 215 | </child> | ||
1692 | 216 | |||
1693 | 217 | <child> | ||
1694 | 218 | <widget class="GtkComboBoxEntry" id="cmb_existing_tag"> | ||
1695 | 219 | <property name="visible">True</property> | ||
1696 | 220 | <property name="add_tearoffs">False</property> | ||
1697 | 221 | <property name="has_frame">True</property> | ||
1698 | 222 | <property name="focus_on_click">True</property> | ||
1699 | 223 | </widget> | ||
1700 | 224 | <packing> | ||
1701 | 225 | <property name="left_attach">1</property> | ||
1702 | 226 | <property name="right_attach">2</property> | ||
1703 | 227 | <property name="top_attach">1</property> | ||
1704 | 228 | <property name="bottom_attach">2</property> | ||
1705 | 229 | <property name="x_options">fill</property> | ||
1706 | 230 | <property name="y_options"></property> | ||
1707 | 231 | </packing> | ||
1708 | 232 | </child> | ||
1709 | 233 | </widget> | ||
1710 | 234 | <packing> | ||
1711 | 235 | <property name="padding">0</property> | ||
1712 | 236 | <property name="expand">True</property> | ||
1713 | 237 | <property name="fill">True</property> | ||
1714 | 238 | </packing> | ||
1715 | 239 | </child> | ||
1716 | 240 | </widget> | ||
1717 | 241 | <packing> | ||
1718 | 242 | <property name="padding">2</property> | ||
1719 | 243 | <property name="expand">False</property> | ||
1720 | 244 | <property name="fill">False</property> | ||
1721 | 245 | </packing> | ||
1722 | 246 | </child> | ||
1723 | 247 | </widget> | ||
1724 | 248 | <packing> | ||
1725 | 249 | <property name="padding">0</property> | ||
1726 | 250 | <property name="expand">False</property> | ||
1727 | 251 | <property name="fill">False</property> | ||
1728 | 252 | </packing> | ||
1729 | 253 | </child> | ||
1730 | 254 | </widget> | ||
1731 | 255 | </child> | ||
1732 | 256 | </widget> | ||
1733 | 257 | |||
1734 | 258 | <widget class="GtkDialog" id="TagLocation"> | ||
1735 | 259 | <property name="visible">True</property> | ||
1736 | 260 | <property name="title" translatable="yes"></property> | ||
1737 | 261 | <property name="type">GTK_WINDOW_TOPLEVEL</property> | ||
1738 | 262 | <property name="window_position">GTK_WIN_POS_NONE</property> | ||
1739 | 263 | <property name="modal">False</property> | ||
1740 | 264 | <property name="resizable">True</property> | ||
1741 | 265 | <property name="destroy_with_parent">False</property> | ||
1742 | 266 | <property name="decorated">True</property> | ||
1743 | 267 | <property name="skip_taskbar_hint">False</property> | ||
1744 | 268 | <property name="skip_pager_hint">False</property> | ||
1745 | 269 | <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> | ||
1746 | 270 | <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> | ||
1747 | 271 | <property name="focus_on_map">True</property> | ||
1748 | 272 | <property name="urgency_hint">False</property> | ||
1749 | 273 | <property name="has_separator">True</property> | ||
1750 | 274 | |||
1751 | 275 | <child internal-child="vbox"> | ||
1752 | 276 | <widget class="GtkVBox" id="dialog-vbox3"> | ||
1753 | 277 | <property name="visible">True</property> | ||
1754 | 278 | <property name="homogeneous">False</property> | ||
1755 | 279 | <property name="spacing">0</property> | ||
1756 | 280 | |||
1757 | 281 | <child internal-child="action_area"> | ||
1758 | 282 | <widget class="GtkHButtonBox" id="dialog-action_area3"> | ||
1759 | 283 | <property name="visible">True</property> | ||
1760 | 284 | <property name="layout_style">GTK_BUTTONBOX_END</property> | ||
1761 | 285 | |||
1762 | 286 | <child> | ||
1763 | 287 | <widget class="GtkButton" id="cancelbutton3"> | ||
1764 | 288 | <property name="visible">True</property> | ||
1765 | 289 | <property name="can_default">True</property> | ||
1766 | 290 | <property name="can_focus">True</property> | ||
1767 | 291 | <property name="label">gtk-cancel</property> | ||
1768 | 292 | <property name="use_stock">True</property> | ||
1769 | 293 | <property name="relief">GTK_RELIEF_NORMAL</property> | ||
1770 | 294 | <property name="focus_on_click">True</property> | ||
1771 | 295 | <property name="response_id">-6</property> | ||
1772 | 296 | </widget> | ||
1773 | 297 | </child> | ||
1774 | 298 | |||
1775 | 299 | <child> | ||
1776 | 300 | <widget class="GtkButton" id="okbutton3"> | ||
1777 | 301 | <property name="visible">True</property> | ||
1778 | 302 | <property name="can_default">True</property> | ||
1779 | 303 | <property name="can_focus">True</property> | ||
1780 | 304 | <property name="label">gtk-ok</property> | ||
1781 | 305 | <property name="use_stock">True</property> | ||
1782 | 306 | <property name="relief">GTK_RELIEF_NORMAL</property> | ||
1783 | 307 | <property name="focus_on_click">True</property> | ||
1784 | 308 | <property name="response_id">-5</property> | ||
1785 | 309 | </widget> | ||
1786 | 310 | </child> | ||
1787 | 311 | </widget> | ||
1788 | 312 | <packing> | ||
1789 | 313 | <property name="padding">0</property> | ||
1790 | 314 | <property name="expand">False</property> | ||
1791 | 315 | <property name="fill">True</property> | ||
1792 | 316 | <property name="pack_type">GTK_PACK_END</property> | ||
1793 | 317 | </packing> | ||
1794 | 318 | </child> | ||
1795 | 319 | |||
1796 | 320 | <child> | ||
1797 | 321 | <widget class="GtkVBox" id="vbox3"> | ||
1798 | 322 | <property name="visible">True</property> | ||
1799 | 323 | <property name="homogeneous">False</property> | ||
1800 | 324 | <property name="spacing">0</property> | ||
1801 | 325 | |||
1802 | 326 | <child> | ||
1803 | 327 | <widget class="GtkToolbar" id="toolbar3"> | ||
1804 | 328 | <property name="visible">True</property> | ||
1805 | 329 | <property name="orientation">GTK_ORIENTATION_HORIZONTAL</property> | ||
1806 | 330 | <property name="toolbar_style">GTK_TOOLBAR_BOTH</property> | ||
1807 | 331 | <property name="tooltips">True</property> | ||
1808 | 332 | <property name="show_arrow">True</property> | ||
1809 | 333 | |||
1810 | 334 | <child> | ||
1811 | 335 | <widget class="GtkToolButton" id="btn_zoom_in"> | ||
1812 | 336 | <property name="visible">True</property> | ||
1813 | 337 | <property name="stock_id">gtk-zoom-in</property> | ||
1814 | 338 | <property name="visible_horizontal">True</property> | ||
1815 | 339 | <property name="visible_vertical">True</property> | ||
1816 | 340 | <property name="is_important">False</property> | ||
1817 | 341 | </widget> | ||
1818 | 342 | <packing> | ||
1819 | 343 | <property name="expand">False</property> | ||
1820 | 344 | <property name="homogeneous">True</property> | ||
1821 | 345 | </packing> | ||
1822 | 346 | </child> | ||
1823 | 347 | |||
1824 | 348 | <child> | ||
1825 | 349 | <widget class="GtkToolButton" id="btn_zoom_out"> | ||
1826 | 350 | <property name="visible">True</property> | ||
1827 | 351 | <property name="stock_id">gtk-zoom-out</property> | ||
1828 | 352 | <property name="visible_horizontal">True</property> | ||
1829 | 353 | <property name="visible_vertical">True</property> | ||
1830 | 354 | <property name="is_important">False</property> | ||
1831 | 355 | </widget> | ||
1832 | 356 | <packing> | ||
1833 | 357 | <property name="expand">False</property> | ||
1834 | 358 | <property name="homogeneous">True</property> | ||
1835 | 359 | </packing> | ||
1836 | 360 | </child> | ||
1837 | 361 | </widget> | ||
1838 | 362 | <packing> | ||
1839 | 363 | <property name="padding">0</property> | ||
1840 | 364 | <property name="expand">False</property> | ||
1841 | 365 | <property name="fill">False</property> | ||
1842 | 366 | </packing> | ||
1843 | 367 | </child> | ||
1844 | 368 | |||
1845 | 369 | <child> | ||
1846 | 370 | <widget class="GtkVBox" id="vbox_map"> | ||
1847 | 371 | <property name="width_request">400</property> | ||
1848 | 372 | <property name="visible">True</property> | ||
1849 | 373 | <property name="homogeneous">False</property> | ||
1850 | 374 | <property name="spacing">0</property> | ||
1851 | 375 | |||
1852 | 376 | <child> | ||
1853 | 377 | <placeholder/> | ||
1854 | 378 | </child> | ||
1855 | 379 | </widget> | ||
1856 | 380 | <packing> | ||
1857 | 381 | <property name="padding">0</property> | ||
1858 | 382 | <property name="expand">True</property> | ||
1859 | 383 | <property name="fill">True</property> | ||
1860 | 384 | </packing> | ||
1861 | 385 | </child> | ||
1862 | 386 | </widget> | ||
1863 | 387 | <packing> | ||
1864 | 388 | <property name="padding">0</property> | ||
1865 | 389 | <property name="expand">False</property> | ||
1866 | 390 | <property name="fill">False</property> | ||
1867 | 391 | </packing> | ||
1868 | 392 | </child> | ||
1869 | 393 | </widget> | ||
1870 | 394 | </child> | ||
1871 | 395 | </widget> | ||
1872 | 396 | |||
1873 | 397 | <widget class="GtkDialog" id="Preferences"> | ||
1874 | 398 | <property name="width_request">350</property> | ||
1875 | 399 | <property name="visible">True</property> | ||
1876 | 400 | <property name="title" translatable="yes">Geolocalized-tasks Preferences</property> | ||
1877 | 401 | <property name="type">GTK_WINDOW_TOPLEVEL</property> | ||
1878 | 402 | <property name="window_position">GTK_WIN_POS_NONE</property> | ||
1879 | 403 | <property name="modal">False</property> | ||
1880 | 404 | <property name="resizable">True</property> | ||
1881 | 405 | <property name="destroy_with_parent">False</property> | ||
1882 | 406 | <property name="decorated">True</property> | ||
1883 | 407 | <property name="skip_taskbar_hint">False</property> | ||
1884 | 408 | <property name="skip_pager_hint">False</property> | ||
1885 | 409 | <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> | ||
1886 | 410 | <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> | ||
1887 | 411 | <property name="focus_on_map">True</property> | ||
1888 | 412 | <property name="urgency_hint">False</property> | ||
1889 | 413 | <property name="has_separator">True</property> | ||
1890 | 414 | |||
1891 | 415 | <child internal-child="vbox"> | ||
1892 | 416 | <widget class="GtkVBox" id="dialog-vbox4"> | ||
1893 | 417 | <property name="visible">True</property> | ||
1894 | 418 | <property name="homogeneous">False</property> | ||
1895 | 419 | <property name="spacing">0</property> | ||
1896 | 420 | |||
1897 | 421 | <child internal-child="action_area"> | ||
1898 | 422 | <widget class="GtkHButtonBox" id="dialog-action_area4"> | ||
1899 | 423 | <property name="visible">True</property> | ||
1900 | 424 | <property name="layout_style">GTK_BUTTONBOX_END</property> | ||
1901 | 425 | |||
1902 | 426 | <child> | ||
1903 | 427 | <widget class="GtkButton" id="cancelbutton4"> | ||
1904 | 428 | <property name="visible">True</property> | ||
1905 | 429 | <property name="can_default">True</property> | ||
1906 | 430 | <property name="can_focus">True</property> | ||
1907 | 431 | <property name="label">gtk-cancel</property> | ||
1908 | 432 | <property name="use_stock">True</property> | ||
1909 | 433 | <property name="relief">GTK_RELIEF_NORMAL</property> | ||
1910 | 434 | <property name="focus_on_click">True</property> | ||
1911 | 435 | <property name="response_id">-6</property> | ||
1912 | 436 | </widget> | ||
1913 | 437 | </child> | ||
1914 | 438 | |||
1915 | 439 | <child> | ||
1916 | 440 | <widget class="GtkButton" id="okbutton4"> | ||
1917 | 441 | <property name="visible">True</property> | ||
1918 | 442 | <property name="can_default">True</property> | ||
1919 | 443 | <property name="can_focus">True</property> | ||
1920 | 444 | <property name="label">gtk-ok</property> | ||
1921 | 445 | <property name="use_stock">True</property> | ||
1922 | 446 | <property name="relief">GTK_RELIEF_NORMAL</property> | ||
1923 | 447 | <property name="focus_on_click">True</property> | ||
1924 | 448 | <property name="response_id">-5</property> | ||
1925 | 449 | </widget> | ||
1926 | 450 | </child> | ||
1927 | 451 | </widget> | ||
1928 | 452 | <packing> | ||
1929 | 453 | <property name="padding">0</property> | ||
1930 | 454 | <property name="expand">False</property> | ||
1931 | 455 | <property name="fill">True</property> | ||
1932 | 456 | <property name="pack_type">GTK_PACK_END</property> | ||
1933 | 457 | </packing> | ||
1934 | 458 | </child> | ||
1935 | 459 | |||
1936 | 460 | <child> | ||
1937 | 461 | <widget class="GtkVBox" id="vbox4"> | ||
1938 | 462 | <property name="visible">True</property> | ||
1939 | 463 | <property name="homogeneous">False</property> | ||
1940 | 464 | <property name="spacing">0</property> | ||
1941 | 465 | |||
1942 | 466 | <child> | ||
1943 | 467 | <widget class="GtkFrame" id="frame3"> | ||
1944 | 468 | <property name="border_width">3</property> | ||
1945 | 469 | <property name="visible">True</property> | ||
1946 | 470 | <property name="label_xalign">0</property> | ||
1947 | 471 | <property name="label_yalign">0.5</property> | ||
1948 | 472 | <property name="shadow_type">GTK_SHADOW_NONE</property> | ||
1949 | 473 | |||
1950 | 474 | <child> | ||
1951 | 475 | <widget class="GtkAlignment" id="alignment3"> | ||
1952 | 476 | <property name="visible">True</property> | ||
1953 | 477 | <property name="xalign">0.5</property> | ||
1954 | 478 | <property name="yalign">0.5</property> | ||
1955 | 479 | <property name="xscale">1</property> | ||
1956 | 480 | <property name="yscale">1</property> | ||
1957 | 481 | <property name="top_padding">0</property> | ||
1958 | 482 | <property name="bottom_padding">0</property> | ||
1959 | 483 | <property name="left_padding">12</property> | ||
1960 | 484 | <property name="right_padding">0</property> | ||
1961 | 485 | |||
1962 | 486 | <child> | ||
1963 | 487 | <widget class="GtkHBox" id="hbox4"> | ||
1964 | 488 | <property name="visible">True</property> | ||
1965 | 489 | <property name="homogeneous">False</property> | ||
1966 | 490 | <property name="spacing">0</property> | ||
1967 | 491 | |||
1968 | 492 | <child> | ||
1969 | 493 | <widget class="GtkComboBoxEntry" id="cmb_accuracy"> | ||
1970 | 494 | <property name="visible">True</property> | ||
1971 | 495 | <property name="items" translatable="yes">Country | ||
1972 | 496 | Region | ||
1973 | 497 | Locality | ||
1974 | 498 | Postalcode | ||
1975 | 499 | Street | ||
1976 | 500 | Detailed</property> | ||
1977 | 501 | <property name="add_tearoffs">False</property> | ||
1978 | 502 | <property name="has_frame">True</property> | ||
1979 | 503 | <property name="focus_on_click">True</property> | ||
1980 | 504 | </widget> | ||
1981 | 505 | <packing> | ||
1982 | 506 | <property name="padding">0</property> | ||
1983 | 507 | <property name="expand">False</property> | ||
1984 | 508 | <property name="fill">False</property> | ||
1985 | 509 | </packing> | ||
1986 | 510 | </child> | ||
1987 | 511 | </widget> | ||
1988 | 512 | </child> | ||
1989 | 513 | </widget> | ||
1990 | 514 | </child> | ||
1991 | 515 | |||
1992 | 516 | <child> | ||
1993 | 517 | <widget class="GtkLabel" id="label5"> | ||
1994 | 518 | <property name="visible">True</property> | ||
1995 | 519 | <property name="label" translatable="yes"><b>Accuracy</b></property> | ||
1996 | 520 | <property name="use_underline">False</property> | ||
1997 | 521 | <property name="use_markup">True</property> | ||
1998 | 522 | <property name="justify">GTK_JUSTIFY_LEFT</property> | ||
1999 | 523 | <property name="wrap">False</property> | ||
2000 | 524 | <property name="selectable">False</property> | ||
2001 | 525 | <property name="xalign">0.5</property> | ||
2002 | 526 | <property name="yalign">0.5</property> | ||
2003 | 527 | <property name="xpad">0</property> | ||
2004 | 528 | <property name="ypad">0</property> | ||
2005 | 529 | <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> | ||
2006 | 530 | <property name="width_chars">-1</property> | ||
2007 | 531 | <property name="single_line_mode">False</property> | ||
2008 | 532 | <property name="angle">0</property> | ||
2009 | 533 | </widget> | ||
2010 | 534 | <packing> | ||
2011 | 535 | <property name="type">label_item</property> | ||
2012 | 536 | </packing> | ||
2013 | 537 | </child> | ||
2014 | 538 | </widget> | ||
2015 | 539 | <packing> | ||
2016 | 540 | <property name="padding">0</property> | ||
2017 | 541 | <property name="expand">False</property> | ||
2018 | 542 | <property name="fill">False</property> | ||
2019 | 543 | </packing> | ||
2020 | 544 | </child> | ||
2021 | 545 | |||
2022 | 546 | <child> | ||
2023 | 547 | <widget class="GtkFrame" id="frame4"> | ||
2024 | 548 | <property name="border_width">3</property> | ||
2025 | 549 | <property name="visible">True</property> | ||
2026 | 550 | <property name="label_xalign">0</property> | ||
2027 | 551 | <property name="label_yalign">0.5</property> | ||
2028 | 552 | <property name="shadow_type">GTK_SHADOW_NONE</property> | ||
2029 | 553 | |||
2030 | 554 | <child> | ||
2031 | 555 | <widget class="GtkAlignment" id="alignment4"> | ||
2032 | 556 | <property name="visible">True</property> | ||
2033 | 557 | <property name="xalign">0.5</property> | ||
2034 | 558 | <property name="yalign">0.5</property> | ||
2035 | 559 | <property name="xscale">1</property> | ||
2036 | 560 | <property name="yscale">1</property> | ||
2037 | 561 | <property name="top_padding">0</property> | ||
2038 | 562 | <property name="bottom_padding">0</property> | ||
2039 | 563 | <property name="left_padding">12</property> | ||
2040 | 564 | <property name="right_padding">0</property> | ||
2041 | 565 | |||
2042 | 566 | <child> | ||
2043 | 567 | <widget class="GtkHBox" id="hbox5"> | ||
2044 | 568 | <property name="visible">True</property> | ||
2045 | 569 | <property name="homogeneous">False</property> | ||
2046 | 570 | <property name="spacing">0</property> | ||
2047 | 571 | |||
2048 | 572 | <child> | ||
2049 | 573 | <widget class="GtkVBox" id="vbox5"> | ||
2050 | 574 | <property name="visible">True</property> | ||
2051 | 575 | <property name="homogeneous">False</property> | ||
2052 | 576 | <property name="spacing">0</property> | ||
2053 | 577 | |||
2054 | 578 | <child> | ||
2055 | 579 | <widget class="GtkCheckButton" id="check_network"> | ||
2056 | 580 | <property name="visible">True</property> | ||
2057 | 581 | <property name="can_focus">True</property> | ||
2058 | 582 | <property name="label" translatable="yes">Use network</property> | ||
2059 | 583 | <property name="use_underline">True</property> | ||
2060 | 584 | <property name="relief">GTK_RELIEF_NORMAL</property> | ||
2061 | 585 | <property name="focus_on_click">True</property> | ||
2062 | 586 | <property name="active">False</property> | ||
2063 | 587 | <property name="inconsistent">False</property> | ||
2064 | 588 | <property name="draw_indicator">True</property> | ||
2065 | 589 | </widget> | ||
2066 | 590 | <packing> | ||
2067 | 591 | <property name="padding">0</property> | ||
2068 | 592 | <property name="expand">False</property> | ||
2069 | 593 | <property name="fill">False</property> | ||
2070 | 594 | </packing> | ||
2071 | 595 | </child> | ||
2072 | 596 | |||
2073 | 597 | <child> | ||
2074 | 598 | <widget class="GtkCheckButton" id="check_cellphone"> | ||
2075 | 599 | <property name="visible">True</property> | ||
2076 | 600 | <property name="can_focus">True</property> | ||
2077 | 601 | <property name="label" translatable="yes">Use cellphone (if available)</property> | ||
2078 | 602 | <property name="use_underline">True</property> | ||
2079 | 603 | <property name="relief">GTK_RELIEF_NORMAL</property> | ||
2080 | 604 | <property name="focus_on_click">True</property> | ||
2081 | 605 | <property name="active">False</property> | ||
2082 | 606 | <property name="inconsistent">False</property> | ||
2083 | 607 | <property name="draw_indicator">True</property> | ||
2084 | 608 | </widget> | ||
2085 | 609 | <packing> | ||
2086 | 610 | <property name="padding">0</property> | ||
2087 | 611 | <property name="expand">False</property> | ||
2088 | 612 | <property name="fill">False</property> | ||
2089 | 613 | </packing> | ||
2090 | 614 | </child> | ||
2091 | 615 | |||
2092 | 616 | <child> | ||
2093 | 617 | <widget class="GtkCheckButton" id="check_gps"> | ||
2094 | 618 | <property name="visible">True</property> | ||
2095 | 619 | <property name="can_focus">True</property> | ||
2096 | 620 | <property name="label" translatable="yes">Use gps (if available)</property> | ||
2097 | 621 | <property name="use_underline">True</property> | ||
2098 | 622 | <property name="relief">GTK_RELIEF_NORMAL</property> | ||
2099 | 623 | <property name="focus_on_click">True</property> | ||
2100 | 624 | <property name="active">False</property> | ||
2101 | 625 | <property name="inconsistent">False</property> | ||
2102 | 626 | <property name="draw_indicator">True</property> | ||
2103 | 627 | </widget> | ||
2104 | 628 | <packing> | ||
2105 | 629 | <property name="padding">0</property> | ||
2106 | 630 | <property name="expand">False</property> | ||
2107 | 631 | <property name="fill">False</property> | ||
2108 | 632 | </packing> | ||
2109 | 633 | </child> | ||
2110 | 634 | </widget> | ||
2111 | 635 | <packing> | ||
2112 | 636 | <property name="padding">0</property> | ||
2113 | 637 | <property name="expand">True</property> | ||
2114 | 638 | <property name="fill">True</property> | ||
2115 | 639 | </packing> | ||
2116 | 640 | </child> | ||
2117 | 641 | </widget> | ||
2118 | 642 | </child> | ||
2119 | 643 | </widget> | ||
2120 | 644 | </child> | ||
2121 | 645 | |||
2122 | 646 | <child> | ||
2123 | 647 | <widget class="GtkLabel" id="label6"> | ||
2124 | 648 | <property name="visible">True</property> | ||
2125 | 649 | <property name="label" translatable="yes"><b>Location Determination Method</b></property> | ||
2126 | 650 | <property name="use_underline">False</property> | ||
2127 | 651 | <property name="use_markup">True</property> | ||
2128 | 652 | <property name="justify">GTK_JUSTIFY_LEFT</property> | ||
2129 | 653 | <property name="wrap">False</property> | ||
2130 | 654 | <property name="selectable">False</property> | ||
2131 | 655 | <property name="xalign">0.5</property> | ||
2132 | 656 | <property name="yalign">0.5</property> | ||
2133 | 657 | <property name="xpad">0</property> | ||
2134 | 658 | <property name="ypad">0</property> | ||
2135 | 659 | <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> | ||
2136 | 660 | <property name="width_chars">-1</property> | ||
2137 | 661 | <property name="single_line_mode">False</property> | ||
2138 | 662 | <property name="angle">0</property> | ||
2139 | 663 | </widget> | ||
2140 | 664 | <packing> | ||
2141 | 665 | <property name="type">label_item</property> | ||
2142 | 666 | </packing> | ||
2143 | 667 | </child> | ||
2144 | 668 | </widget> | ||
2145 | 669 | <packing> | ||
2146 | 670 | <property name="padding">0</property> | ||
2147 | 671 | <property name="expand">True</property> | ||
2148 | 672 | <property name="fill">True</property> | ||
2149 | 673 | </packing> | ||
2150 | 674 | </child> | ||
2151 | 675 | |||
2152 | 676 | <child> | ||
2153 | 677 | <widget class="GtkFrame" id="frame5"> | ||
2154 | 678 | <property name="border_width">3</property> | ||
2155 | 679 | <property name="visible">True</property> | ||
2156 | 680 | <property name="label_xalign">0</property> | ||
2157 | 681 | <property name="label_yalign">0.5</property> | ||
2158 | 682 | <property name="shadow_type">GTK_SHADOW_NONE</property> | ||
2159 | 683 | |||
2160 | 684 | <child> | ||
2161 | 685 | <widget class="GtkAlignment" id="alignment5"> | ||
2162 | 686 | <property name="visible">True</property> | ||
2163 | 687 | <property name="xalign">0.5</property> | ||
2164 | 688 | <property name="yalign">0.5</property> | ||
2165 | 689 | <property name="xscale">1</property> | ||
2166 | 690 | <property name="yscale">1</property> | ||
2167 | 691 | <property name="top_padding">0</property> | ||
2168 | 692 | <property name="bottom_padding">0</property> | ||
2169 | 693 | <property name="left_padding">12</property> | ||
2170 | 694 | <property name="right_padding">0</property> | ||
2171 | 695 | |||
2172 | 696 | <child> | ||
2173 | 697 | <widget class="GtkHBox" id="hbox3"> | ||
2174 | 698 | <property name="visible">True</property> | ||
2175 | 699 | <property name="homogeneous">False</property> | ||
2176 | 700 | <property name="spacing">0</property> | ||
2177 | 701 | |||
2178 | 702 | <child> | ||
2179 | 703 | <widget class="GtkSpinButton" id="spin_proximityfactor"> | ||
2180 | 704 | <property name="visible">True</property> | ||
2181 | 705 | <property name="can_focus">True</property> | ||
2182 | 706 | <property name="climb_rate">1</property> | ||
2183 | 707 | <property name="digits">1</property> | ||
2184 | 708 | <property name="numeric">False</property> | ||
2185 | 709 | <property name="update_policy">GTK_UPDATE_ALWAYS</property> | ||
2186 | 710 | <property name="snap_to_ticks">False</property> | ||
2187 | 711 | <property name="wrap">False</property> | ||
2188 | 712 | <property name="adjustment">5 1 100 0.10000000149 10 10</property> | ||
2189 | 713 | </widget> | ||
2190 | 714 | <packing> | ||
2191 | 715 | <property name="padding">0</property> | ||
2192 | 716 | <property name="expand">False</property> | ||
2193 | 717 | <property name="fill">False</property> | ||
2194 | 718 | </packing> | ||
2195 | 719 | </child> | ||
2196 | 720 | |||
2197 | 721 | <child> | ||
2198 | 722 | <widget class="GtkLabel" id="label8"> | ||
2199 | 723 | <property name="visible">True</property> | ||
2200 | 724 | <property name="label" translatable="yes">km</property> | ||
2201 | 725 | <property name="use_underline">False</property> | ||
2202 | 726 | <property name="use_markup">False</property> | ||
2203 | 727 | <property name="justify">GTK_JUSTIFY_LEFT</property> | ||
2204 | 728 | <property name="wrap">False</property> | ||
2205 | 729 | <property name="selectable">False</property> | ||
2206 | 730 | <property name="xalign">0.5</property> | ||
2207 | 731 | <property name="yalign">0.5</property> | ||
2208 | 732 | <property name="xpad">4</property> | ||
2209 | 733 | <property name="ypad">0</property> | ||
2210 | 734 | <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> | ||
2211 | 735 | <property name="width_chars">-1</property> | ||
2212 | 736 | <property name="single_line_mode">False</property> | ||
2213 | 737 | <property name="angle">0</property> | ||
2214 | 738 | </widget> | ||
2215 | 739 | <packing> | ||
2216 | 740 | <property name="padding">0</property> | ||
2217 | 741 | <property name="expand">False</property> | ||
2218 | 742 | <property name="fill">False</property> | ||
2219 | 743 | </packing> | ||
2220 | 744 | </child> | ||
2221 | 745 | </widget> | ||
2222 | 746 | </child> | ||
2223 | 747 | </widget> | ||
2224 | 748 | </child> | ||
2225 | 749 | |||
2226 | 750 | <child> | ||
2227 | 751 | <widget class="GtkLabel" id="label7"> | ||
2228 | 752 | <property name="visible">True</property> | ||
2229 | 753 | <property name="label" translatable="yes"><b>Proximity Factor</b></property> | ||
2230 | 754 | <property name="use_underline">False</property> | ||
2231 | 755 | <property name="use_markup">True</property> | ||
2232 | 756 | <property name="justify">GTK_JUSTIFY_LEFT</property> | ||
2233 | 757 | <property name="wrap">False</property> | ||
2234 | 758 | <property name="selectable">False</property> | ||
2235 | 759 | <property name="xalign">0.5</property> | ||
2236 | 760 | <property name="yalign">0.5</property> | ||
2237 | 761 | <property name="xpad">0</property> | ||
2238 | 762 | <property name="ypad">0</property> | ||
2239 | 763 | <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> | ||
2240 | 764 | <property name="width_chars">-1</property> | ||
2241 | 765 | <property name="single_line_mode">False</property> | ||
2242 | 766 | <property name="angle">0</property> | ||
2243 | 767 | </widget> | ||
2244 | 768 | <packing> | ||
2245 | 769 | <property name="type">label_item</property> | ||
2246 | 770 | </packing> | ||
2247 | 771 | </child> | ||
2248 | 772 | </widget> | ||
2249 | 773 | <packing> | ||
2250 | 774 | <property name="padding">0</property> | ||
2251 | 775 | <property name="expand">True</property> | ||
2252 | 776 | <property name="fill">True</property> | ||
2253 | 777 | </packing> | ||
2254 | 778 | </child> | ||
2255 | 779 | </widget> | ||
2256 | 780 | <packing> | ||
2257 | 781 | <property name="padding">0</property> | ||
2258 | 782 | <property name="expand">True</property> | ||
2259 | 783 | <property name="fill">True</property> | ||
2260 | 784 | </packing> | ||
2261 | 785 | </child> | ||
2262 | 786 | </widget> | ||
2263 | 787 | </child> | ||
2264 | 788 | </widget> | ||
2265 | 789 | |||
2266 | 790 | </glade-interface> | ||
2267 | 0 | 791 | ||
2268 | === added directory 'GTG/plugins/geolocalized-tasks/icons' | |||
2269 | === added directory 'GTG/plugins/geolocalized-tasks/icons/hicolor' | |||
2270 | === added directory 'GTG/plugins/geolocalized-tasks/icons/hicolor/16x16' | |||
2271 | === added file 'GTG/plugins/geolocalized-tasks/icons/hicolor/16x16/assign-location.png' | |||
2272 | 1 | Binary files GTG/plugins/geolocalized-tasks/icons/hicolor/16x16/assign-location.png 1970-01-01 00:00:00 +0000 and GTG/plugins/geolocalized-tasks/icons/hicolor/16x16/assign-location.png 2009-07-27 14:37:04 +0000 differ | 792 | Binary files GTG/plugins/geolocalized-tasks/icons/hicolor/16x16/assign-location.png 1970-01-01 00:00:00 +0000 and GTG/plugins/geolocalized-tasks/icons/hicolor/16x16/assign-location.png 2009-07-27 14:37:04 +0000 differ |
2273 | === added directory 'GTG/plugins/geolocalized-tasks/icons/hicolor/24x24' | |||
2274 | === added file 'GTG/plugins/geolocalized-tasks/icons/hicolor/24x24/geolocalization.png' | |||
2275 | 2 | Binary files GTG/plugins/geolocalized-tasks/icons/hicolor/24x24/geolocalization.png 1970-01-01 00:00:00 +0000 and GTG/plugins/geolocalized-tasks/icons/hicolor/24x24/geolocalization.png 2009-07-27 14:37:04 +0000 differ | 793 | Binary files GTG/plugins/geolocalized-tasks/icons/hicolor/24x24/geolocalization.png 1970-01-01 00:00:00 +0000 and GTG/plugins/geolocalized-tasks/icons/hicolor/24x24/geolocalization.png 2009-07-27 14:37:04 +0000 differ |
2276 | === added directory 'GTG/plugins/geolocalized-tasks/icons/hicolor/svg' | |||
2277 | === added file 'GTG/plugins/geolocalized-tasks/icons/hicolor/svg/assign-location.svg' | |||
2278 | --- GTG/plugins/geolocalized-tasks/icons/hicolor/svg/assign-location.svg 1970-01-01 00:00:00 +0000 | |||
2279 | +++ GTG/plugins/geolocalized-tasks/icons/hicolor/svg/assign-location.svg 2009-07-27 14:37:04 +0000 | |||
2280 | @@ -0,0 +1,57 @@ | |||
2281 | 1 | <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||
2282 | 2 | <!-- Created with Inkscape (http://www.inkscape.org/) --> | ||
2283 | 3 | <svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="16" height="16" id="svg2" sodipodi:version="0.32" inkscape:version="0.46" sodipodi:docname="assign-location.svg" inkscape:output_extension="org.inkscape.output.svg.inkscape" version="1.0" inkscape:export-filename="/home/kj/Dropbox/Public/assign-location.png" inkscape:export-xdpi="90" inkscape:export-ydpi="90"> | ||
2284 | 4 | <defs id="defs4"> | ||
2285 | 5 | <linearGradient inkscape:collect="always" id="linearGradient7943"> | ||
2286 | 6 | <stop style="stop-color: rgb(249, 166, 166); stop-opacity: 1;" offset="0" id="stop7945"/> | ||
2287 | 7 | <stop style="stop-color: rgb(243, 156, 156); stop-opacity: 1;" offset="1" id="stop7947"/> | ||
2288 | 8 | </linearGradient> | ||
2289 | 9 | <linearGradient inkscape:collect="always" id="linearGradient7935"> | ||
2290 | 10 | <stop style="stop-color: rgb(132, 0, 0); stop-opacity: 1;" offset="0" id="stop7937"/> | ||
2291 | 11 | <stop style="stop-color: rgb(203, 0, 0); stop-opacity: 1;" offset="1" id="stop7939"/> | ||
2292 | 12 | </linearGradient> | ||
2293 | 13 | <linearGradient inkscape:collect="always" id="linearGradient7874"> | ||
2294 | 14 | <stop style="stop-color: rgb(182, 178, 140); stop-opacity: 0.941785;" offset="0" id="stop7876"/> | ||
2295 | 15 | <stop style="stop-color: rgb(145, 140, 92); stop-opacity: 1;" offset="1" id="stop7878"/> | ||
2296 | 16 | </linearGradient> | ||
2297 | 17 | <linearGradient inkscape:collect="always" id="linearGradient7741"> | ||
2298 | 18 | <stop style="stop-color: rgb(254, 244, 164); stop-opacity: 1;" offset="0" id="stop7743"/> | ||
2299 | 19 | <stop style="stop-color: rgb(255, 252, 225); stop-opacity: 1;" offset="1" id="stop7745"/> | ||
2300 | 20 | </linearGradient> | ||
2301 | 21 | <inkscape:perspective sodipodi:type="inkscape:persp3d" inkscape:vp_x="0 : 526.18109 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_z="744.09448 : 526.18109 : 1" inkscape:persp3d-origin="372.04724 : 350.78739 : 1" id="perspective10"/> | ||
2302 | 22 | <linearGradient inkscape:collect="always" xlink:href="#linearGradient7741" id="linearGradient8081" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.07143, 0, 0, 1.06757, -13.9643, -7.45285)" x1="15.727029" y1="6.9999995" x2="23.542524" y2="14.983313"/> | ||
2303 | 23 | <linearGradient inkscape:collect="always" xlink:href="#linearGradient7874" id="linearGradient8083" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.07143, 0, 0, 1.06757, -46.1072, -7.45285)" x1="44.812893" y1="7.2946024" x2="52.456104" y2="21.549175"/> | ||
2304 | 24 | <linearGradient inkscape:collect="always" xlink:href="#linearGradient7874" id="linearGradient8085" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.07143, 0, 0, 1.06757, -46.1072, -7.45285)" x1="47.146225" y1="11.041414" x2="52.339439" y2="21.968351"/> | ||
2305 | 25 | <linearGradient inkscape:collect="always" xlink:href="#linearGradient7935" id="linearGradient8117" gradientUnits="userSpaceOnUse" x1="57.438805" y1="14.430664" x2="54.385418" y2="9.703125"/> | ||
2306 | 26 | <linearGradient inkscape:collect="always" xlink:href="#linearGradient7943" id="linearGradient8119" gradientUnits="userSpaceOnUse" x1="55.795582" y1="10.903276" x2="55.84375" y2="14.84375"/> | ||
2307 | 27 | </defs> | ||
2308 | 28 | <sodipodi:namedview id="base" pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" gridtolerance="10000" guidetolerance="10" objecttolerance="10" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="1" inkscape:cx="15.281524" inkscape:cy="5.7182209" inkscape:document-units="px" inkscape:current-layer="layer1" showgrid="false" inkscape:snap-bbox="true" inkscape:snap-nodes="false" inkscape:window-width="1440" inkscape:window-height="794" inkscape:window-x="0" inkscape:window-y="25" showborder="false"> | ||
2309 | 29 | <inkscape:grid type="xygrid" id="grid8091" visible="true" enabled="true"/> | ||
2310 | 30 | </sodipodi:namedview> | ||
2311 | 31 | <metadata id="metadata7"> | ||
2312 | 32 | <rdf:RDF> | ||
2313 | 33 | <cc:Work rdf:about=""> | ||
2314 | 34 | <dc:format>image/svg+xml</dc:format> | ||
2315 | 35 | <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/> | ||
2316 | 36 | </cc:Work> | ||
2317 | 37 | </rdf:RDF> | ||
2318 | 38 | </metadata> | ||
2319 | 39 | <g inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1"> | ||
2320 | 40 | <rect style="overflow: visible; marker: none; fill: url(#linearGradient8081) rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; stroke: url(#linearGradient8083) rgb(0, 0, 0); stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-dasharray: none; stroke-dashoffset: 0pt; stroke-opacity: 1; visibility: visible; display: inline;" id="rect7868" width="14.999999" height="14.946039" x="0.50000006" y="0.55396086" rx="1.9905777" ry="1.9905777"/> | ||
2321 | 41 | <rect transform="matrix(0, 1, -1, 0, 0, 0)" style="overflow: visible; marker: none; fill: rgb(255, 253, 236); fill-opacity: 1; fill-rule: nonzero; stroke: rgb(193, 190, 157); stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-dasharray: none; stroke-dashoffset: 0pt; stroke-opacity: 1; visibility: visible; display: inline;" id="rect7905" width="14.946039" height="2" x="0.55396086" y="-12.5" rx="0" ry="0"/> | ||
2322 | 42 | <rect ry="0" rx="0" y="2.5539608" x="0.50000006" height="2.9460392" width="15" id="rect7907" style="overflow: visible; marker: none; fill: rgb(255, 253, 236); fill-opacity: 1; fill-rule: nonzero; stroke: rgb(193, 190, 157); stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-dasharray: none; stroke-dashoffset: 0pt; stroke-opacity: 1; visibility: visible; display: inline;"/> | ||
2323 | 43 | <rect ry="0" rx="0" y="-5.5" x="0.55396086" height="2" width="14.946039" id="rect7909" style="overflow: visible; marker: none; fill: rgb(255, 253, 236); fill-opacity: 1; fill-rule: nonzero; stroke: rgb(193, 190, 157); stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-dasharray: none; stroke-dashoffset: 0pt; stroke-opacity: 1; visibility: visible; display: inline;" transform="matrix(0, 1, -1, 0, 0, 0)"/> | ||
2324 | 44 | <rect style="overflow: visible; marker: none; fill: rgb(255, 253, 236); fill-opacity: 1; fill-rule: nonzero; stroke: rgb(193, 190, 157); stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-dasharray: none; stroke-dashoffset: 0pt; stroke-opacity: 1; visibility: visible; display: inline;" id="rect7911" width="15" height="2" x="0.50000006" y="10.553965" rx="0" ry="0"/> | ||
2325 | 45 | <rect ry="1.9905776" rx="1.9905776" y="0.55396092" x="0.50000012" height="14.946039" width="15" id="rect7913" style="overflow: visible; marker: none; fill: none; fill-opacity: 1; fill-rule: nonzero; stroke: url(#linearGradient8085) rgb(0, 0, 0); stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-dasharray: none; stroke-dashoffset: 0pt; stroke-opacity: 1; visibility: visible; display: inline;"/> | ||
2326 | 46 | <rect style="overflow: visible; marker: none; fill: rgb(255, 253, 236); fill-opacity: 1; fill-rule: nonzero; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-dasharray: none; stroke-dashoffset: 0pt; stroke-opacity: 1; visibility: visible; display: inline;" id="rect7915" width="12" height="1.9460392" x="1" y="3.0539608" rx="0" ry="0"/> | ||
2327 | 47 | <rect ry="0" rx="0" y="2.0539608" x="4" height="11" width="1" id="rect7917" style="overflow: visible; marker: none; fill: rgb(255, 253, 236); fill-opacity: 1; fill-rule: nonzero; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-dasharray: none; stroke-dashoffset: 0pt; stroke-opacity: 1; visibility: visible; display: inline;"/> | ||
2328 | 48 | <rect style="overflow: visible; marker: none; fill: rgb(255, 253, 236); fill-opacity: 1; fill-rule: nonzero; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-dasharray: none; stroke-dashoffset: 0pt; stroke-opacity: 1; visibility: visible; display: inline;" id="rect7919" width="1" height="11" x="11" y="2.0539608" rx="0" ry="0"/> | ||
2329 | 49 | <rect ry="0" rx="0" y="11.053965" x="1" height="1" width="12" id="rect7921" style="overflow: visible; marker: none; fill: rgb(255, 253, 236); fill-opacity: 1; fill-rule: nonzero; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-dasharray: none; stroke-dashoffset: 0pt; stroke-opacity: 1; visibility: visible; display: inline;"/> | ||
2330 | 50 | <g id="g8112" transform="translate(1, -2)"> | ||
2331 | 51 | <path transform="matrix(0.685714, 0, 0, 0.680851, -30.2929, 2.44758)" d="M 58.03125,12.640625 A 2.1875,2.203125 0 1 1 53.65625,12.640625 A 2.1875,2.203125 0 1 1 58.03125,12.640625 z" sodipodi:ry="2.203125" sodipodi:rx="2.1875" sodipodi:cy="12.640625" sodipodi:cx="55.84375" id="path7925" style="overflow: visible; marker: none; fill: rgb(242, 72, 72); fill-opacity: 1; fill-rule: nonzero; stroke: url(#linearGradient8117) rgb(0, 0, 0); stroke-width: 1.46353px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-dasharray: none; stroke-dashoffset: 0pt; stroke-opacity: 1; visibility: visible; display: inline;" sodipodi:type="arc"/> | ||
2332 | 52 | <path sodipodi:type="arc" style="overflow: visible; marker: none; fill: url(#linearGradient8119) rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; stroke: none; stroke-width: 1.46353px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-dasharray: none; stroke-dashoffset: 0pt; stroke-opacity: 1; visibility: visible; display: inline;" id="path7933" sodipodi:cx="55.84375" sodipodi:cy="12.640625" sodipodi:rx="2.1875" sodipodi:ry="2.203125" d="M 58.03125,12.640625 A 2.1875,2.203125 0 1 1 53.65625,12.640625 A 2.1875,2.203125 0 1 1 58.03125,12.640625 z" transform="matrix(0.228571, 0, 0, 0.22695, -5.26429, 7.68517)"/> | ||
2333 | 53 | <path sodipodi:type="arc" style="overflow: visible; marker: none; opacity: 0.303738; fill: none; fill-opacity: 1; fill-rule: nonzero; stroke: rgb(255, 255, 255); stroke-width: 0.87812px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-dasharray: none; stroke-dashoffset: 0pt; stroke-opacity: 1; visibility: visible; display: inline;" id="path7951" sodipodi:cx="55.84375" sodipodi:cy="12.640625" sodipodi:rx="2.1875" sodipodi:ry="2.203125" d="M 58.03125,12.640625 A 2.1875,2.203125 0 1 1 53.65625,12.640625 A 2.1875,2.203125 0 1 1 58.03125,12.640625 z" transform="matrix(1.14286, 0, 0, 1.13475, -55.8214, -3.29)"/> | ||
2334 | 54 | </g> | ||
2335 | 55 | <rect style="overflow: visible; marker: none; opacity: 0.350962; fill: none; fill-opacity: 1; fill-rule: nonzero; stroke: rgb(255, 255, 255); stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-dasharray: none; stroke-dashoffset: 0pt; stroke-opacity: 1; visibility: visible; display: inline;" id="rect8093" width="13.000001" height="13.053962" x="1.5" y="1.5" rx="1.2367706" ry="1.2367706"/> | ||
2336 | 56 | </g> | ||
2337 | 57 | </svg> | ||
2338 | 0 | \ No newline at end of file | 58 | \ No newline at end of file |
2339 | 1 | 59 | ||
2340 | === added file 'GTG/plugins/geolocalized-tasks/icons/hicolor/svg/geolocalization.svg' | |||
2341 | --- GTG/plugins/geolocalized-tasks/icons/hicolor/svg/geolocalization.svg 1970-01-01 00:00:00 +0000 | |||
2342 | +++ GTG/plugins/geolocalized-tasks/icons/hicolor/svg/geolocalization.svg 2009-07-27 14:37:04 +0000 | |||
2343 | @@ -0,0 +1,101 @@ | |||
2344 | 1 | <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||
2345 | 2 | <!-- Created with Inkscape (http://www.inkscape.org/) --> | ||
2346 | 3 | <svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="24" height="24" id="svg2" sodipodi:version="0.32" inkscape:version="0.46" sodipodi:docname="geolocalization.svg" inkscape:output_extension="org.inkscape.output.svg.inkscape" version="1.0" inkscape:export-filename="/home/kj/Dropbox/Public/geolocalization.png" inkscape:export-xdpi="90" inkscape:export-ydpi="90"> | ||
2347 | 4 | <defs id="defs4"> | ||
2348 | 5 | <linearGradient inkscape:collect="always" id="linearGradient7943"> | ||
2349 | 6 | <stop style="stop-color: rgb(249, 166, 166); stop-opacity: 1;" offset="0" id="stop7945"/> | ||
2350 | 7 | <stop style="stop-color: rgb(243, 156, 156); stop-opacity: 1;" offset="1" id="stop7947"/> | ||
2351 | 8 | </linearGradient> | ||
2352 | 9 | <linearGradient inkscape:collect="always" id="linearGradient7935"> | ||
2353 | 10 | <stop style="stop-color: rgb(132, 0, 0); stop-opacity: 1;" offset="0" id="stop7937"/> | ||
2354 | 11 | <stop style="stop-color: rgb(203, 0, 0); stop-opacity: 1;" offset="1" id="stop7939"/> | ||
2355 | 12 | </linearGradient> | ||
2356 | 13 | <linearGradient inkscape:collect="always" id="linearGradient7874"> | ||
2357 | 14 | <stop style="stop-color: rgb(182, 178, 140); stop-opacity: 0.941785;" offset="0" id="stop7876"/> | ||
2358 | 15 | <stop style="stop-color: rgb(145, 140, 92); stop-opacity: 1;" offset="1" id="stop7878"/> | ||
2359 | 16 | </linearGradient> | ||
2360 | 17 | <linearGradient id="linearGradient7838" inkscape:collect="always"> | ||
2361 | 18 | <stop id="stop7840" offset="0" style="stop-color: rgb(250, 173, 173); stop-opacity: 1;"/> | ||
2362 | 19 | <stop id="stop7842" offset="1" style="stop-color: rgb(204, 0, 0); stop-opacity: 1;"/> | ||
2363 | 20 | </linearGradient> | ||
2364 | 21 | <linearGradient id="linearGradient7765" inkscape:collect="always"> | ||
2365 | 22 | <stop id="stop7767" offset="0" style="stop-color: rgb(238, 238, 236); stop-opacity: 1;"/> | ||
2366 | 23 | <stop id="stop7769" offset="1" style="stop-color: rgb(173, 173, 173); stop-opacity: 1;"/> | ||
2367 | 24 | </linearGradient> | ||
2368 | 25 | <linearGradient id="linearGradient7757" inkscape:collect="always"> | ||
2369 | 26 | <stop id="stop7759" offset="0" style="stop-color: rgb(85, 87, 83); stop-opacity: 1;"/> | ||
2370 | 27 | <stop id="stop7761" offset="1" style="stop-color: rgb(146, 148, 144); stop-opacity: 1;"/> | ||
2371 | 28 | </linearGradient> | ||
2372 | 29 | <linearGradient inkscape:collect="always" id="linearGradient7741"> | ||
2373 | 30 | <stop style="stop-color: rgb(254, 244, 164); stop-opacity: 1;" offset="0" id="stop7743"/> | ||
2374 | 31 | <stop style="stop-color: rgb(255, 252, 225); stop-opacity: 1;" offset="1" id="stop7745"/> | ||
2375 | 32 | </linearGradient> | ||
2376 | 33 | <linearGradient inkscape:collect="always" id="linearGradient7081"> | ||
2377 | 34 | <stop style="stop-color: rgb(182, 178, 140); stop-opacity: 1;" offset="0" id="stop7083"/> | ||
2378 | 35 | <stop style="stop-color: rgb(145, 140, 92); stop-opacity: 1;" offset="1" id="stop7085"/> | ||
2379 | 36 | </linearGradient> | ||
2380 | 37 | <linearGradient inkscape:collect="always" id="linearGradient7013"> | ||
2381 | 38 | <stop style="stop-color: rgb(125, 0, 0); stop-opacity: 1;" offset="0" id="stop7015"/> | ||
2382 | 39 | <stop style="stop-color: rgb(204, 0, 0); stop-opacity: 1;" offset="1" id="stop7017"/> | ||
2383 | 40 | </linearGradient> | ||
2384 | 41 | <linearGradient inkscape:collect="always" id="linearGradient7003"> | ||
2385 | 42 | <stop style="stop-color: rgb(255, 255, 255); stop-opacity: 1;" offset="0" id="stop7005"/> | ||
2386 | 43 | <stop style="stop-color: rgb(255, 255, 255); stop-opacity: 0;" offset="1" id="stop7007"/> | ||
2387 | 44 | </linearGradient> | ||
2388 | 45 | <inkscape:perspective sodipodi:type="inkscape:persp3d" inkscape:vp_x="0 : 526.18109 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_z="744.09448 : 526.18109 : 1" inkscape:persp3d-origin="372.04724 : 350.78739 : 1" id="perspective10"/> | ||
2389 | 46 | <filter inkscape:collect="always" id="filter7386" x="-0.18793105" width="1.3758621" y="-0.26054078" height="1.5210816"> | ||
2390 | 47 | <feGaussianBlur inkscape:collect="always" stdDeviation="0.59707262" id="feGaussianBlur7388"/> | ||
2391 | 48 | </filter> | ||
2392 | 49 | <inkscape:perspective id="perspective7482" inkscape:persp3d-origin="372.04724 : 350.78739 : 1" inkscape:vp_z="744.09448 : 526.18109 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 526.18109 : 1" sodipodi:type="inkscape:persp3d"/> | ||
2393 | 50 | <filter inkscape:collect="always" id="filter7589" x="-0.077992738" width="1.1559855" y="-0.38996369" height="1.7799274"> | ||
2394 | 51 | <feGaussianBlur inkscape:collect="always" stdDeviation="0.64993949" id="feGaussianBlur7591"/> | ||
2395 | 52 | </filter> | ||
2396 | 53 | <inkscape:perspective id="perspective7600" inkscape:persp3d-origin="372.04724 : 350.78739 : 1" inkscape:vp_z="744.09448 : 526.18109 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 526.18109 : 1" sodipodi:type="inkscape:persp3d"/> | ||
2397 | 54 | <linearGradient inkscape:collect="always" xlink:href="#linearGradient7081" id="linearGradient7707" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.904762, 0, 0, 1, 1.14286, 0)" x1="5.2149124" y1="15.558913" x2="6.9804454" y2="22"/> | ||
2398 | 55 | <linearGradient inkscape:collect="always" xlink:href="#linearGradient7741" id="linearGradient7747" x1="-25.013903" y1="4" x2="-18" y2="17.119036" gradientUnits="userSpaceOnUse" gradientTransform="translate(30)"/> | ||
2399 | 56 | <linearGradient inkscape:collect="always" xlink:href="#linearGradient7765" id="linearGradient7828" gradientUnits="userSpaceOnUse" gradientTransform="translate(20, 3)" x1="13.866498" y1="13.029231" x2="15.55635" y2="5.924583"/> | ||
2400 | 57 | <linearGradient inkscape:collect="always" xlink:href="#linearGradient7757" id="linearGradient7830" gradientUnits="userSpaceOnUse" gradientTransform="translate(20, 3)" x1="15.642897" y1="9.4588156" x2="13.90625" y2="8.4726801"/> | ||
2401 | 58 | <radialGradient inkscape:collect="always" xlink:href="#linearGradient7838" id="radialGradient7832" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.088672, 0.799838, -1.00097, 0.100044, 17.8398, -9.21998)" cx="14.825197" cy="3.6196058" fx="14.825197" fy="3.6196058" r="3.524409"/> | ||
2402 | 59 | <linearGradient inkscape:collect="always" xlink:href="#linearGradient7013" id="linearGradient7834" gradientUnits="userSpaceOnUse" x1="16.304688" y1="8.2946424" x2="14.868303" y2="4.9375"/> | ||
2403 | 60 | <linearGradient inkscape:collect="always" xlink:href="#linearGradient7003" id="linearGradient7836" gradientUnits="userSpaceOnUse" x1="14.844542" y1="9.349679" x2="18.449074" y2="0.33173633"/> | ||
2404 | 61 | <linearGradient inkscape:collect="always" xlink:href="#linearGradient7874" id="linearGradient7880" x1="44.812893" y1="7.2946024" x2="52.456104" y2="21.549175" gradientUnits="userSpaceOnUse"/> | ||
2405 | 62 | <linearGradient inkscape:collect="always" xlink:href="#linearGradient7741" id="linearGradient7903" gradientUnits="userSpaceOnUse" gradientTransform="translate(30)" x1="15.727029" y1="6.9999995" x2="23.542524" y2="14.983313"/> | ||
2406 | 63 | <linearGradient inkscape:collect="always" xlink:href="#linearGradient7874" id="linearGradient7923" gradientUnits="userSpaceOnUse" x1="44.812893" y1="7.2946024" x2="54.206104" y2="20.549175"/> | ||
2407 | 64 | <linearGradient inkscape:collect="always" xlink:href="#linearGradient7935" id="linearGradient7941" x1="57.438805" y1="14.430664" x2="54.385418" y2="9.703125" gradientUnits="userSpaceOnUse"/> | ||
2408 | 65 | <linearGradient inkscape:collect="always" xlink:href="#linearGradient7943" id="linearGradient7949" x1="55.795582" y1="10.903276" x2="55.84375" y2="14.84375" gradientUnits="userSpaceOnUse"/> | ||
2409 | 66 | </defs> | ||
2410 | 67 | <sodipodi:namedview id="base" pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" gridtolerance="10000" guidetolerance="10" objecttolerance="10" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="1" inkscape:cx="44.238097" inkscape:cy="9.3925275" inkscape:document-units="px" inkscape:current-layer="layer1" showgrid="false" inkscape:snap-bbox="true" inkscape:snap-nodes="false" inkscape:window-width="1440" inkscape:window-height="794" inkscape:window-x="0" inkscape:window-y="25" showborder="false"> | ||
2411 | 68 | <inkscape:grid type="xygrid" id="grid6922" visible="true" enabled="true"/> | ||
2412 | 69 | </sodipodi:namedview> | ||
2413 | 70 | <metadata id="metadata7"> | ||
2414 | 71 | <rdf:RDF> | ||
2415 | 72 | <cc:Work rdf:about=""> | ||
2416 | 73 | <dc:format>image/svg+xml</dc:format> | ||
2417 | 74 | <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/> | ||
2418 | 75 | </cc:Work> | ||
2419 | 76 | </rdf:RDF> | ||
2420 | 77 | </metadata> | ||
2421 | 78 | <g inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1"> | ||
2422 | 79 | <rect style="overflow: visible; marker: none; opacity: 0.191589; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-dasharray: none; stroke-dashoffset: 0pt; stroke-opacity: 1; visibility: visible; display: inline; filter: url(#filter7589);" id="rect7089" width="20" height="4" x="2" y="19" rx="2.1022727" ry="1.5416666" transform="matrix(1.1, 0, 0, 1.5, -1.2, -11.5)"/> | ||
2423 | 80 | <rect style="overflow: visible; marker: none; fill: url(#linearGradient7747) rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-dasharray: none; stroke-dashoffset: 0pt; stroke-opacity: 1; visibility: visible; display: inline;" id="rect6924" width="18" height="17" x="3" y="4" rx="0" ry="0"/> | ||
2424 | 81 | <rect style="overflow: visible; marker: none; fill: rgb(255, 253, 236); fill-opacity: 1; fill-rule: nonzero; stroke: rgb(193, 190, 157); stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-dasharray: none; stroke-dashoffset: 0pt; stroke-opacity: 1; visibility: visible; display: inline;" id="rect6943" width="19" height="3" x="2.5" y="5.5" rx="0" ry="0"/> | ||
2425 | 82 | <rect ry="0" rx="0" y="-9.5" x="11.5" height="2" width="9.9999981" id="rect6945" style="overflow: visible; marker: none; fill: rgb(255, 253, 236); fill-opacity: 1; fill-rule: nonzero; stroke: rgb(193, 190, 157); stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-dasharray: none; stroke-dashoffset: 0pt; stroke-opacity: 1; visibility: visible; display: inline;" transform="matrix(0, 1, -1, 0, 0, 0)"/> | ||
2426 | 83 | <rect ry="0" rx="0" y="12.5" x="2.4999998" height="2" width="15.999999" id="rect7488" style="overflow: visible; marker: none; fill: rgb(255, 253, 236); fill-opacity: 1; fill-rule: nonzero; stroke: rgb(193, 190, 157); stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-dasharray: none; stroke-dashoffset: 0pt; stroke-opacity: 1; visibility: visible; display: inline;"/> | ||
2427 | 84 | <rect transform="matrix(0, 1, -1, 0, 0, 0)" style="overflow: visible; marker: none; fill: rgb(255, 253, 236); fill-opacity: 1; fill-rule: nonzero; stroke: rgb(193, 190, 157); stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-dasharray: none; stroke-dashoffset: 0pt; stroke-opacity: 1; visibility: visible; display: inline;" id="rect6949" width="12.000001" height="2" x="9.5" y="-19.5" rx="0" ry="0"/> | ||
2428 | 85 | <rect style="overflow: visible; marker: none; fill: rgb(255, 253, 236); fill-opacity: 1; fill-rule: nonzero; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-dasharray: none; stroke-dashoffset: 0pt; stroke-opacity: 1; visibility: visible; display: inline;" id="rect7509" width="1" height="7" x="8" y="13"/> | ||
2429 | 86 | <rect ry="0.92807764" rx="0.92807764" y="3.5" x="2.5" height="18" width="19" id="rect6969" style="overflow: visible; marker: none; fill: none; fill-opacity: 1; fill-rule: nonzero; stroke: url(#linearGradient7707) rgb(0, 0, 0); stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-dasharray: none; stroke-dashoffset: 0pt; stroke-opacity: 1; visibility: visible; display: inline;"/> | ||
2430 | 87 | <rect ry="0.16215134" rx="0.16215134" y="4.5" x="3.5" height="16.000002" width="16.999998" id="rect6967" style="overflow: visible; marker: none; opacity: 0.266355; fill: none; fill-opacity: 1; fill-rule: nonzero; stroke: rgb(255, 255, 255); stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-dasharray: none; stroke-dashoffset: 0pt; stroke-opacity: 1; visibility: visible; display: inline;"/> | ||
2431 | 88 | <rect y="13" x="17" height="1" width="1" id="rect7781" style="overflow: visible; marker: none; fill: rgb(255, 253, 236); fill-opacity: 1; fill-rule: nonzero; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-dasharray: none; stroke-dashoffset: 0pt; stroke-opacity: 1; visibility: visible; display: inline;"/> | ||
2432 | 89 | <g id="g7820" transform="translate(-19, -1)"> | ||
2433 | 90 | <path sodipodi:nodetypes="ccccc" transform="matrix(1.18033, 0, 0, 1.09091, 18.0164, 1)" id="path7135" d="M 10.947049,16.958333 C 14.13631,17.001634 16.454712,14.258591 17.969243,11.734888 L 17.760387,11.041703 L 11.189471,14.412416 L 10.947049,16.958333 z" style="opacity: 0.420561; fill: rgb(0, 0, 0); fill-rule: evenodd; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1; filter: url(#filter7386);"/> | ||
2434 | 91 | <path sodipodi:nodetypes="cccccc" id="path6955" d="M 35.558846,7.5 L 31.53125,16.562501 L 31.553739,18.537462 L 33.477077,17.548192 L 37.40625,8.3643436 L 35.558846,7.5 z" style="fill: url(#linearGradient7828) rgb(0, 0, 0); fill-opacity: 1; fill-rule: evenodd; stroke: url(#linearGradient7830) rgb(0, 0, 0); stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1;"/> | ||
2435 | 92 | <path style="opacity: 0.257009; fill: rgb(0, 0, 0); fill-rule: evenodd; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1;" d="M 33.481904,10.990773 C 34.207813,11.574681 34.893276,11.98175 36.351844,12 L 37.081048,10.464566 L 34.318912,9 L 33.481904,10.990773 z" id="path7771" sodipodi:nodetypes="ccccc"/> | ||
2436 | 93 | <path transform="matrix(1.29293, 0, 0, 1.3617, 17.4192, -0.223404)" d="M 18.625,4.9375 A 3.09375,2.9375 0 1 1 12.4375,4.9375 A 3.09375,2.9375 0 1 1 18.625,4.9375 z" sodipodi:ry="2.9375" sodipodi:rx="3.09375" sodipodi:cy="4.9375" sodipodi:cx="15.53125" id="path6953" style="overflow: visible; marker: none; fill: url(#radialGradient7832) rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; stroke: url(#linearGradient7834) rgb(0, 0, 0); stroke-width: 0.753653px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-dasharray: none; stroke-dashoffset: 0pt; stroke-opacity: 1; visibility: visible; display: inline;" sodipodi:type="arc"/> | ||
2437 | 94 | <path sodipodi:type="arc" style="overflow: visible; marker: none; opacity: 0.429907; fill: none; fill-opacity: 1; fill-rule: nonzero; stroke: url(#linearGradient7836) rgb(0, 0, 0); stroke-width: 1.00487px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-dasharray: none; stroke-dashoffset: 0pt; stroke-opacity: 1; visibility: visible; display: inline;" id="path6979" sodipodi:cx="15.53125" sodipodi:cy="4.9375" sodipodi:rx="3.09375" sodipodi:ry="2.9375" d="M 18.625,4.9375 A 3.09375,2.9375 0 1 1 12.4375,4.9375 A 3.09375,2.9375 0 1 1 18.625,4.9375 z" transform="matrix(0.969697, 0, 0, 1.02128, 22.4394, 1.45745)"/> | ||
2438 | 95 | </g> | ||
2439 | 96 | <rect style="overflow: visible; marker: none; fill: rgb(255, 253, 236); fill-opacity: 1; fill-rule: nonzero; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-dasharray: none; stroke-dashoffset: 0pt; stroke-opacity: 1; visibility: visible; display: inline;" id="rect7854" width="8.8817842e-16" height="3" x="5" y="11"/> | ||
2440 | 97 | <rect ry="0" rx="0" y="-9.5" x="9.5" height="2" width="5" id="rect7864" style="overflow: visible; marker: none; fill: rgb(255, 253, 236); fill-opacity: 1; fill-rule: nonzero; stroke: rgb(193, 190, 157); stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-dasharray: none; stroke-dashoffset: 0pt; stroke-opacity: 1; visibility: visible; display: inline;" transform="matrix(0, 1, -1, 0, 0, 0)"/> | ||
2441 | 98 | <rect style="overflow: visible; marker: none; fill: rgb(255, 253, 236); fill-opacity: 1; fill-rule: nonzero; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-dasharray: none; stroke-dashoffset: 0pt; stroke-opacity: 1; visibility: visible; display: inline;" id="rect7866" width="1" height="8" x="8" y="7"/> | ||
2442 | 99 | <rect style="overflow: visible; marker: none; fill: rgb(255, 253, 236); fill-opacity: 1; fill-rule: nonzero; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-dasharray: none; stroke-dashoffset: 0pt; stroke-opacity: 1; visibility: visible; display: inline;" id="rect7490" width="6" height="1" x="5" y="13"/> | ||
2443 | 100 | </g> | ||
2444 | 101 | </svg> | ||
2445 | 0 | \ No newline at end of file | 102 | \ No newline at end of file |
2446 | 1 | 103 | ||
2447 | === added file 'GTG/plugins/geolocalized-tasks/marker.py' | |||
2448 | --- GTG/plugins/geolocalized-tasks/marker.py 1970-01-01 00:00:00 +0000 | |||
2449 | +++ GTG/plugins/geolocalized-tasks/marker.py 2009-07-25 18:58:39 +0000 | |||
2450 | @@ -0,0 +1,47 @@ | |||
2451 | 1 | # -*- coding: utf-8 -*- | ||
2452 | 2 | # Copyright (c) 2009 - Paulo Cabido <paulo.cabido@gmail.com> | ||
2453 | 3 | # | ||
2454 | 4 | # This program is free software: you can redistribute it and/or modify it under | ||
2455 | 5 | # the terms of the GNU General Public License as published by the Free Software | ||
2456 | 6 | # Foundation, either version 3 of the License, or (at your option) any later | ||
2457 | 7 | # version. | ||
2458 | 8 | # | ||
2459 | 9 | # This program is distributed in the hope that it will be useful, but WITHOUT | ||
2460 | 10 | # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS | ||
2461 | 11 | # FOR A PARTICULAR PURPOSE. See the GNU General Public License for more | ||
2462 | 12 | # details. | ||
2463 | 13 | # | ||
2464 | 14 | # You should have received a copy of the GNU General Public License along with | ||
2465 | 15 | # this program. If not, see <http://www.gnu.org/licenses/>. | ||
2466 | 16 | |||
2467 | 17 | import clutter | ||
2468 | 18 | import champlain | ||
2469 | 19 | import champlaingtk | ||
2470 | 20 | |||
2471 | 21 | class MarkerLayer(champlain.Layer): | ||
2472 | 22 | |||
2473 | 23 | def __init__(self): | ||
2474 | 24 | champlain.Layer.__init__(self) | ||
2475 | 25 | # a marker can also be set in RGB with ints | ||
2476 | 26 | self.gray = clutter.Color(51, 51, 51) | ||
2477 | 27 | |||
2478 | 28 | #RGBA | ||
2479 | 29 | self.white = clutter.Color(0xff, 0xff, 0xff, 0xff) | ||
2480 | 30 | self.black = clutter.Color(0x00, 0x00, 0x00, 0xff) | ||
2481 | 31 | |||
2482 | 32 | self.hide() | ||
2483 | 33 | |||
2484 | 34 | def add_marker(self, text, latitude, longitude, bg_color=None, text_color=None, font="Airmole 8"): | ||
2485 | 35 | if not text_color: | ||
2486 | 36 | text_color = self.white | ||
2487 | 37 | |||
2488 | 38 | if not bg_color: | ||
2489 | 39 | bg_color = self.gray | ||
2490 | 40 | |||
2491 | 41 | marker = champlain.marker_new_with_text(text, font, text_color, bg_color) | ||
2492 | 42 | |||
2493 | 43 | #marker.set_position(38.575935, -7.921326) | ||
2494 | 44 | if latitude and longitude: | ||
2495 | 45 | marker.set_position(latitude, longitude) | ||
2496 | 46 | self.add(marker) | ||
2497 | 47 | return marker | ||
2498 | 0 | \ No newline at end of file | 48 | \ No newline at end of file |
2499 | 1 | 49 | ||
2500 | === added directory 'GTG/plugins/helloworld' | |||
2501 | === added file 'GTG/plugins/helloworld/hello_world.glade' | |||
2502 | --- GTG/plugins/helloworld/hello_world.glade 1970-01-01 00:00:00 +0000 | |||
2503 | +++ GTG/plugins/helloworld/hello_world.glade 2009-07-14 16:32:20 +0000 | |||
2504 | @@ -0,0 +1,122 @@ | |||
2505 | 1 | <?xml version="1.0" standalone="no"?> <!--*- mode: xml -*--> | ||
2506 | 2 | <!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd"> | ||
2507 | 3 | |||
2508 | 4 | <glade-interface> | ||
2509 | 5 | |||
2510 | 6 | <widget class="GtkDialog" id="helloworld"> | ||
2511 | 7 | <property name="width_request">300</property> | ||
2512 | 8 | <property name="height_request">150</property> | ||
2513 | 9 | <property name="title" translatable="yes">Hello World</property> | ||
2514 | 10 | <property name="type">GTK_WINDOW_TOPLEVEL</property> | ||
2515 | 11 | <property name="window_position">GTK_WIN_POS_NONE</property> | ||
2516 | 12 | <property name="modal">False</property> | ||
2517 | 13 | <property name="resizable">True</property> | ||
2518 | 14 | <property name="destroy_with_parent">False</property> | ||
2519 | 15 | <property name="decorated">True</property> | ||
2520 | 16 | <property name="skip_taskbar_hint">False</property> | ||
2521 | 17 | <property name="skip_pager_hint">False</property> | ||
2522 | 18 | <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> | ||
2523 | 19 | <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> | ||
2524 | 20 | <property name="focus_on_map">True</property> | ||
2525 | 21 | <property name="urgency_hint">False</property> | ||
2526 | 22 | <property name="has_separator">True</property> | ||
2527 | 23 | |||
2528 | 24 | <child internal-child="vbox"> | ||
2529 | 25 | <widget class="GtkVBox" id="dialog-vbox1"> | ||
2530 | 26 | <property name="visible">True</property> | ||
2531 | 27 | <property name="homogeneous">False</property> | ||
2532 | 28 | <property name="spacing">0</property> | ||
2533 | 29 | |||
2534 | 30 | <child internal-child="action_area"> | ||
2535 | 31 | <widget class="GtkHButtonBox" id="dialog-action_area1"> | ||
2536 | 32 | <property name="visible">True</property> | ||
2537 | 33 | <property name="layout_style">GTK_BUTTONBOX_END</property> | ||
2538 | 34 | |||
2539 | 35 | <child> | ||
2540 | 36 | <widget class="GtkButton" id="btn_close"> | ||
2541 | 37 | <property name="visible">True</property> | ||
2542 | 38 | <property name="can_default">True</property> | ||
2543 | 39 | <property name="can_focus">True</property> | ||
2544 | 40 | <property name="label">gtk-close</property> | ||
2545 | 41 | <property name="use_stock">True</property> | ||
2546 | 42 | <property name="relief">GTK_RELIEF_NORMAL</property> | ||
2547 | 43 | <property name="focus_on_click">True</property> | ||
2548 | 44 | <property name="response_id">-7</property> | ||
2549 | 45 | </widget> | ||
2550 | 46 | </child> | ||
2551 | 47 | </widget> | ||
2552 | 48 | <packing> | ||
2553 | 49 | <property name="padding">0</property> | ||
2554 | 50 | <property name="expand">False</property> | ||
2555 | 51 | <property name="fill">True</property> | ||
2556 | 52 | <property name="pack_type">GTK_PACK_END</property> | ||
2557 | 53 | </packing> | ||
2558 | 54 | </child> | ||
2559 | 55 | |||
2560 | 56 | <child> | ||
2561 | 57 | <widget class="GtkVBox" id="vbox1"> | ||
2562 | 58 | <property name="visible">True</property> | ||
2563 | 59 | <property name="homogeneous">False</property> | ||
2564 | 60 | <property name="spacing">0</property> | ||
2565 | 61 | |||
2566 | 62 | <child> | ||
2567 | 63 | <widget class="GtkLabel" id="label1"> | ||
2568 | 64 | <property name="visible">True</property> | ||
2569 | 65 | <property name="label" translatable="yes">Hello World Plugin</property> | ||
2570 | 66 | <property name="use_underline">False</property> | ||
2571 | 67 | <property name="use_markup">False</property> | ||
2572 | 68 | <property name="justify">GTK_JUSTIFY_LEFT</property> | ||
2573 | 69 | <property name="wrap">False</property> | ||
2574 | 70 | <property name="selectable">False</property> | ||
2575 | 71 | <property name="xalign">0.5</property> | ||
2576 | 72 | <property name="yalign">0.5</property> | ||
2577 | 73 | <property name="xpad">0</property> | ||
2578 | 74 | <property name="ypad">6</property> | ||
2579 | 75 | <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> | ||
2580 | 76 | <property name="width_chars">-1</property> | ||
2581 | 77 | <property name="single_line_mode">False</property> | ||
2582 | 78 | <property name="angle">0</property> | ||
2583 | 79 | </widget> | ||
2584 | 80 | <packing> | ||
2585 | 81 | <property name="padding">0</property> | ||
2586 | 82 | <property name="expand">False</property> | ||
2587 | 83 | <property name="fill">False</property> | ||
2588 | 84 | </packing> | ||
2589 | 85 | </child> | ||
2590 | 86 | |||
2591 | 87 | <child> | ||
2592 | 88 | <widget class="GtkLabel" id="lbl_helloworld"> | ||
2593 | 89 | <property name="visible">True</property> | ||
2594 | 90 | <property name="label" translatable="yes"></property> | ||
2595 | 91 | <property name="use_underline">False</property> | ||
2596 | 92 | <property name="use_markup">False</property> | ||
2597 | 93 | <property name="justify">GTK_JUSTIFY_LEFT</property> | ||
2598 | 94 | <property name="wrap">True</property> | ||
2599 | 95 | <property name="selectable">False</property> | ||
2600 | 96 | <property name="xalign">0.5</property> | ||
2601 | 97 | <property name="yalign">0.5</property> | ||
2602 | 98 | <property name="xpad">0</property> | ||
2603 | 99 | <property name="ypad">24</property> | ||
2604 | 100 | <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> | ||
2605 | 101 | <property name="width_chars">-1</property> | ||
2606 | 102 | <property name="single_line_mode">False</property> | ||
2607 | 103 | <property name="angle">0</property> | ||
2608 | 104 | </widget> | ||
2609 | 105 | <packing> | ||
2610 | 106 | <property name="padding">0</property> | ||
2611 | 107 | <property name="expand">False</property> | ||
2612 | 108 | <property name="fill">False</property> | ||
2613 | 109 | </packing> | ||
2614 | 110 | </child> | ||
2615 | 111 | </widget> | ||
2616 | 112 | <packing> | ||
2617 | 113 | <property name="padding">0</property> | ||
2618 | 114 | <property name="expand">True</property> | ||
2619 | 115 | <property name="fill">True</property> | ||
2620 | 116 | </packing> | ||
2621 | 117 | </child> | ||
2622 | 118 | </widget> | ||
2623 | 119 | </child> | ||
2624 | 120 | </widget> | ||
2625 | 121 | |||
2626 | 122 | </glade-interface> | ||
2627 | 0 | 123 | ||
2628 | === added file 'GTG/plugins/helloworld/helloworld.py' | |||
2629 | --- GTG/plugins/helloworld/helloworld.py 1970-01-01 00:00:00 +0000 | |||
2630 | +++ GTG/plugins/helloworld/helloworld.py 2009-07-17 02:27:18 +0000 | |||
2631 | @@ -0,0 +1,77 @@ | |||
2632 | 1 | # -*- coding: utf-8 -*- | ||
2633 | 2 | import gtk, pygtk | ||
2634 | 3 | import os | ||
2635 | 4 | |||
2636 | 5 | class pluginTest: | ||
2637 | 6 | |||
2638 | 7 | PLUGIN_NAME = 'Hello World' | ||
2639 | 8 | PLUGIN_AUTHORS = 'Paulo Cabido <paulo.cabido@gmail.com>' | ||
2640 | 9 | PLUGIN_VERSION = '0.1.1' | ||
2641 | 10 | PLUGIN_DESCRIPTION = 'Plugin Description goes here. Helo World!' | ||
2642 | 11 | PLUGIN_ENABLED = False | ||
2643 | 12 | |||
2644 | 13 | def __init__(self): | ||
2645 | 14 | self.menu_item = gtk.MenuItem("Hello World Plugin") | ||
2646 | 15 | self.menu_item.connect('activate', self.onTesteMenu) | ||
2647 | 16 | |||
2648 | 17 | self.tb_button = gtk.ToolButton(gtk.STOCK_INFO) | ||
2649 | 18 | self.tb_button.set_label("Hello World") | ||
2650 | 19 | self.tb_button.connect('clicked', self.onTbButton) | ||
2651 | 20 | |||
2652 | 21 | |||
2653 | 22 | # plugin engine methods | ||
2654 | 23 | def activate(self, plugin_api): | ||
2655 | 24 | # add a menu item to the menu bar | ||
2656 | 25 | plugin_api.AddMenuItem(self.menu_item) | ||
2657 | 26 | |||
2658 | 27 | # saves the separator's index to later remove it | ||
2659 | 28 | self.separator = plugin_api.AddToolbarItem(gtk.SeparatorToolItem()) | ||
2660 | 29 | # add a item (button) to the ToolBar | ||
2661 | 30 | plugin_api.AddToolbarItem(self.tb_button) | ||
2662 | 31 | |||
2663 | 32 | def onTaskOpened(self, plugin_api): | ||
2664 | 33 | # add a item (button) to the ToolBar | ||
2665 | 34 | self.tb_Taskbutton = gtk.ToolButton(gtk.STOCK_EXECUTE) | ||
2666 | 35 | self.tb_Taskbutton.set_label("Hello World") | ||
2667 | 36 | self.tb_Taskbutton.connect('clicked', self.onTbTaskButton, plugin_api) | ||
2668 | 37 | plugin_api.AddTaskToolbarItem(gtk.SeparatorToolItem()) | ||
2669 | 38 | plugin_api.AddTaskToolbarItem(self.tb_Taskbutton) | ||
2670 | 39 | |||
2671 | 40 | def deactivate(self, plugin_api): | ||
2672 | 41 | plugin_api.RemoveMenuItem(self.menu_item) | ||
2673 | 42 | plugin_api.RemoveToolbarItem(self.tb_button) | ||
2674 | 43 | plugin_api.RemoveToolbarItem(None, self.separator) | ||
2675 | 44 | |||
2676 | 45 | #load a dialog with a String | ||
2677 | 46 | def loadDialog(self, msg): | ||
2678 | 47 | path = os.path.dirname(os.path.abspath(__file__)) | ||
2679 | 48 | glade_file = os.path.join(path, "hello_world.glade") | ||
2680 | 49 | wTree = gtk.glade.XML(glade_file, "helloworld") | ||
2681 | 50 | self.dialog = wTree.get_widget("helloworld") | ||
2682 | 51 | lblHelloWorld = wTree.get_widget("lbl_helloworld") | ||
2683 | 52 | lblHelloWorld.set_text(msg) | ||
2684 | 53 | |||
2685 | 54 | self.dialog.connect("delete_event", self.close_dialog) | ||
2686 | 55 | self.dialog.connect("response", self.close_dialog) | ||
2687 | 56 | |||
2688 | 57 | self.dialog.show_all() | ||
2689 | 58 | |||
2690 | 59 | def close_dialog(self, widget, data=None): | ||
2691 | 60 | self.dialog.destroy() | ||
2692 | 61 | return True | ||
2693 | 62 | |||
2694 | 63 | # plugin features | ||
2695 | 64 | def onTesteMenu(self, widget): | ||
2696 | 65 | self.loadDialog("Hello World! From the MenuBar! :-)") | ||
2697 | 66 | |||
2698 | 67 | def onTbButton(self, widget): | ||
2699 | 68 | self.loadDialog("Hello World! From the ToolBar! :-)") | ||
2700 | 69 | |||
2701 | 70 | def onTbTaskButton(self, widget, plugin_api): | ||
2702 | 71 | self.loadDialog("Hello World! The tag @hello_world was just added to the end of the task!") | ||
2703 | 72 | plugin_api.add_tag("hello_world") | ||
2704 | 73 | #plugin_api.add_tag_attribute("@addingtag", "atrrib_teste", "teste") | ||
2705 | 74 | |||
2706 | 75 | def teste(self): | ||
2707 | 76 | print "TESTE!" | ||
2708 | 77 | |||
2709 | 0 | 78 | ||
2710 | === modified file 'GTG/taskbrowser/browser.py' | |||
2711 | --- GTG/taskbrowser/browser.py 2009-07-28 15:57:10 +0000 | |||
2712 | +++ GTG/taskbrowser/browser.py 2009-07-29 15:14:01 +0000 | |||
2713 | @@ -40,6 +40,9 @@ | |||
2714 | 40 | from GTG.taskbrowser import GnomeConfig | 40 | from GTG.taskbrowser import GnomeConfig |
2715 | 41 | from GTG.taskbrowser import browser_tools | 41 | from GTG.taskbrowser import browser_tools |
2716 | 42 | from GTG.tools import colors, openurl | 42 | from GTG.tools import colors, openurl |
2717 | 43 | from GTG.core.plugins.manager import PluginManager | ||
2718 | 44 | from GTG.core.plugins.engine import PluginEngine | ||
2719 | 45 | from GTG.core.plugins.api import PluginAPI | ||
2720 | 43 | 46 | ||
2721 | 44 | #=== OBJECTS ================================================================== | 47 | #=== OBJECTS ================================================================== |
2722 | 45 | 48 | ||
2723 | @@ -120,6 +123,9 @@ | |||
2724 | 120 | 123 | ||
2725 | 121 | # Define accelerator keys | 124 | # Define accelerator keys |
2726 | 122 | self.init_accelerators() | 125 | self.init_accelerators() |
2727 | 126 | |||
2728 | 127 | # Initialize the plugin-engine | ||
2729 | 128 | self.init_plugin_engine() | ||
2730 | 123 | 129 | ||
2731 | 124 | # NOTES | 130 | # NOTES |
2732 | 125 | self.init_note_support() | 131 | self.init_note_support() |
2733 | @@ -138,6 +144,7 @@ | |||
2734 | 138 | self.priv['selected_rows'] = None | 144 | self.priv['selected_rows'] = None |
2735 | 139 | self.priv['workview'] = False | 145 | self.priv['workview'] = False |
2736 | 140 | self.priv['noteview'] = False | 146 | self.priv['noteview'] = False |
2737 | 147 | self.priv['workview_task_filter'] = [] | ||
2738 | 141 | 148 | ||
2739 | 142 | def init_icon_theme(self): | 149 | def init_icon_theme(self): |
2740 | 143 | icon_dirs = [GTG.DATA_DIR, os.path.join(GTG.DATA_DIR, "icons")] | 150 | icon_dirs = [GTG.DATA_DIR, os.path.join(GTG.DATA_DIR, "icons")] |
2741 | @@ -262,7 +269,10 @@ | |||
2742 | 262 | "on_about_close": | 269 | "on_about_close": |
2743 | 263 | self.on_about_close, | 270 | self.on_about_close, |
2744 | 264 | "on_nonworkviewtag_toggled": | 271 | "on_nonworkviewtag_toggled": |
2746 | 265 | self.on_nonworkviewtag_toggled} | 272 | self.on_nonworkviewtag_toggled, |
2747 | 273 | "on_pluginmanager_activate": | ||
2748 | 274 | self.on_pluginmanager_activate | ||
2749 | 275 | } | ||
2750 | 266 | 276 | ||
2751 | 267 | self.wTree.signal_autoconnect(SIGNAL_CONNECTIONS_DIC) | 277 | self.wTree.signal_autoconnect(SIGNAL_CONNECTIONS_DIC) |
2752 | 268 | if (self.window): | 278 | if (self.window): |
2753 | @@ -329,6 +339,33 @@ | |||
2754 | 329 | key, mod = gtk.accelerator_parse('<Control>i') | 339 | key, mod = gtk.accelerator_parse('<Control>i') |
2755 | 330 | task_dismiss.add_accelerator( | 340 | task_dismiss.add_accelerator( |
2756 | 331 | 'activate', agr, key, mod, gtk.ACCEL_VISIBLE) | 341 | 'activate', agr, key, mod, gtk.ACCEL_VISIBLE) |
2757 | 342 | |||
2758 | 343 | def init_plugin_engine(self): | ||
2759 | 344 | # plugins - Init | ||
2760 | 345 | self.pengine = PluginEngine(GTG.PLUGIN_DIR) | ||
2761 | 346 | # loads the plugins in the plugin dir | ||
2762 | 347 | self.plugins = self.pengine.LoadPlugins() | ||
2763 | 348 | |||
2764 | 349 | # checks the conf for user settings | ||
2765 | 350 | if self.config.has_key("plugins"): | ||
2766 | 351 | if self.config["plugins"].has_key("enabled"): | ||
2767 | 352 | plugins_enabled = self.config["plugins"]["enabled"] | ||
2768 | 353 | for p in self.plugins: | ||
2769 | 354 | if p['name'] in plugins_enabled: | ||
2770 | 355 | p['state'] = True | ||
2771 | 356 | |||
2772 | 357 | if self.config["plugins"].has_key("disabled"): | ||
2773 | 358 | plugins_disabled = self.config["plugins"]["disabled"] | ||
2774 | 359 | for p in self.plugins: | ||
2775 | 360 | if p['name'] in plugins_disabled: | ||
2776 | 361 | p['state'] = False | ||
2777 | 362 | |||
2778 | 363 | # initializes the plugin api class | ||
2779 | 364 | self.plugin_api = PluginAPI(self.window, self.config, self.wTree, self.req, \ | ||
2780 | 365 | self.task_tview, self.priv['workview_task_filter'], \ | ||
2781 | 366 | self.tagpopup, self.tag_tview, None, None) | ||
2782 | 367 | # initializes and activates each plugin (that is enabled) | ||
2783 | 368 | self.pengine.activatePlugins(self.plugins, self.plugin_api) | ||
2784 | 332 | 369 | ||
2785 | 333 | def init_note_support(self): | 370 | def init_note_support(self): |
2786 | 334 | self.notes = EXPERIMENTAL_NOTES | 371 | self.notes = EXPERIMENTAL_NOTES |
2787 | @@ -667,9 +704,9 @@ | |||
2788 | 667 | self.opened_task[uid].present() | 704 | self.opened_task[uid].present() |
2789 | 668 | else: | 705 | else: |
2790 | 669 | tv = TaskEditor( | 706 | tv = TaskEditor( |
2794 | 670 | self.req, t, self.do_refresh, self.on_delete_task, | 707 | self.req, t, self.plugins, self.do_refresh, |
2795 | 671 | self.close_task, self.open_task, self.get_tasktitle, | 708 | self.on_delete_task, self.close_task, self.open_task, |
2796 | 672 | notes=self.notes) | 709 | self.get_tasktitle, notes=self.notes) |
2797 | 673 | #registering as opened | 710 | #registering as opened |
2798 | 674 | self.opened_task[uid] = tv | 711 | self.opened_task[uid] = tv |
2799 | 675 | 712 | ||
2800 | @@ -861,6 +898,9 @@ | |||
2801 | 861 | view = "workview" | 898 | view = "workview" |
2802 | 862 | else: | 899 | else: |
2803 | 863 | view = "default" | 900 | view = "default" |
2804 | 901 | |||
2805 | 902 | # plugins are deactivated | ||
2806 | 903 | self.pengine.deactivatePlugins(self.plugins, self.plugin_api) | ||
2807 | 864 | 904 | ||
2808 | 865 | # Populate configuration dictionary | 905 | # Populate configuration dictionary |
2809 | 866 | self.config["browser"] = { | 906 | self.config["browser"] = { |
2810 | @@ -899,6 +939,11 @@ | |||
2811 | 899 | self.config["browser"]["view"] = view | 939 | self.config["browser"]["view"] = view |
2812 | 900 | if self.notes: | 940 | if self.notes: |
2813 | 901 | self.config["browser"]["experimental_notes"] = True | 941 | self.config["browser"]["experimental_notes"] = True |
2814 | 942 | |||
2815 | 943 | # adds the plugin settings to the conf | ||
2816 | 944 | self.config["plugins"] = {} | ||
2817 | 945 | self.config["plugins"]["disabled"] = self.pengine.disabledPlugins(self.plugins) | ||
2818 | 946 | self.config["plugins"]["enabled"] = self.pengine.enabledPlugins(self.plugins) | ||
2819 | 902 | 947 | ||
2820 | 903 | def on_about_clicked(self, widget): | 948 | def on_about_clicked(self, widget): |
2821 | 904 | self.about.show() | 949 | self.about.show() |
2822 | @@ -1275,6 +1320,9 @@ | |||
2823 | 1275 | if selection.count_selected_rows() > 0: | 1320 | if selection.count_selected_rows() > 0: |
2824 | 1276 | self.ctask_tview.get_selection().unselect_all() | 1321 | self.ctask_tview.get_selection().unselect_all() |
2825 | 1277 | self.task_tview.get_selection().unselect_all() | 1322 | self.task_tview.get_selection().unselect_all() |
2826 | 1323 | |||
2827 | 1324 | def on_pluginmanager_activate(self, widget) : | ||
2828 | 1325 | PluginManager(self.window, self.plugins, self.pengine, self.plugin_api) | ||
2829 | 1278 | 1326 | ||
2830 | 1279 | def on_close(self, widget=None): | 1327 | def on_close(self, widget=None): |
2831 | 1280 | """Closing the window.""" | 1328 | """Closing the window.""" |
2832 | @@ -1358,6 +1406,10 @@ | |||
2833 | 1358 | if self.priv['workview']: | 1406 | if self.priv['workview']: |
2834 | 1359 | count = len(\ | 1407 | count = len(\ |
2835 | 1360 | self.req.get_active_tasks_list(tags=[tag], workable=True)) | 1408 | self.req.get_active_tasks_list(tags=[tag], workable=True)) |
2836 | 1409 | for tid in self.priv['workview_task_filter']: | ||
2837 | 1410 | for t in self.req.get_task(tid).get_tags(): | ||
2838 | 1411 | if tag == t: | ||
2839 | 1412 | count = count -1 | ||
2840 | 1361 | else: | 1413 | else: |
2841 | 1362 | count = len(\ | 1414 | count = len(\ |
2842 | 1363 | self.req.get_tasks_list(started_only=False, tags=[tag])) | 1415 | self.req.get_tasks_list(started_only=False, tags=[tag])) |
2843 | @@ -1399,9 +1451,10 @@ | |||
2844 | 1399 | tags=tag_list, notag_only=notag_only, workable=True, | 1451 | tags=tag_list, notag_only=notag_only, workable=True, |
2845 | 1400 | started_only=False) | 1452 | started_only=False) |
2846 | 1401 | for tid in tasks: | 1453 | for tid in tasks: |
2850 | 1402 | self.add_task_tree_to_list( | 1454 | if tid not in self.priv['workview_task_filter']: # this filters out tasks |
2851 | 1403 | new_taskts, tid, None, selected_uid, treeview=False) | 1455 | self.add_task_tree_to_list(new_taskts,tid, None,\ |
2852 | 1404 | nbr_of_tasks = len(tasks) | 1456 | selected_uid, treeview=False) |
2853 | 1457 | nbr_of_tasks = len(tasks) - len(self.priv['workview_task_filter']) | ||
2854 | 1405 | 1458 | ||
2855 | 1406 | else: | 1459 | else: |
2856 | 1407 | #building the classical treeview | 1460 | #building the classical treeview |
2857 | 1408 | 1461 | ||
2858 | === modified file 'GTG/taskbrowser/taskbrowser.glade' | |||
2859 | --- GTG/taskbrowser/taskbrowser.glade 2009-07-14 13:02:15 +0000 | |||
2860 | +++ GTG/taskbrowser/taskbrowser.glade 2009-07-29 15:14:01 +0000 | |||
2861 | @@ -1,991 +1,1353 @@ | |||
2865 | 1 | <?xml version="1.0" encoding="UTF-8" standalone="no"?> | 1 | <?xml version="1.0" standalone="no"?> <!--*- mode: xml -*--> |
2866 | 2 | <!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd"> | 2 | <!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd"> |
2867 | 3 | <!--Generated with glade3 3.4.5 on Tue Mar 31 14:57:26 2009 --> | 3 | |
2868 | 4 | <glade-interface> | 4 | <glade-interface> |
3495 | 5 | <widget class="GtkWindow" id="MainWindow"> | 5 | |
3496 | 6 | <property name="title" translatable="yes">Getting Things Gnome!</property> | 6 | <widget class="GtkWindow" id="MainWindow"> |
3497 | 7 | <property name="default_width">640</property> | 7 | <property name="title" translatable="yes">Getting Things Gnome!</property> |
3498 | 8 | <property name="default_height">480</property> | 8 | <property name="type">GTK_WINDOW_TOPLEVEL</property> |
3499 | 9 | <signal name="configure_event" handler="on_move"/> | 9 | <property name="window_position">GTK_WIN_POS_NONE</property> |
3500 | 10 | <signal name="size_allocate" handler="on_size_allocate"/> | 10 | <property name="modal">False</property> |
3501 | 11 | <signal name="delete_event" handler="on_delete"/> | 11 | <property name="default_width">640</property> |
3502 | 12 | <child> | 12 | <property name="default_height">480</property> |
3503 | 13 | <widget class="GtkVBox" id="vbox1"> | 13 | <property name="resizable">True</property> |
3504 | 14 | <property name="visible">True</property> | 14 | <property name="destroy_with_parent">False</property> |
3505 | 15 | <child> | 15 | <property name="decorated">True</property> |
3506 | 16 | <widget class="GtkMenuBar" id="browser_menu"> | 16 | <property name="skip_taskbar_hint">False</property> |
3507 | 17 | <property name="visible">True</property> | 17 | <property name="skip_pager_hint">False</property> |
3508 | 18 | <child> | 18 | <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property> |
3509 | 19 | <widget class="GtkMenuItem" id="menuitem1"> | 19 | <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> |
3510 | 20 | <property name="visible">True</property> | 20 | <property name="focus_on_map">True</property> |
3511 | 21 | <property name="label" translatable="yes">_File</property> | 21 | <property name="urgency_hint">False</property> |
3512 | 22 | <property name="use_underline">True</property> | 22 | <signal name="configure_event" handler="on_move"/> |
3513 | 23 | <child> | 23 | <signal name="size_allocate" handler="on_size_allocate"/> |
3514 | 24 | <widget class="GtkMenu" id="menu1"> | 24 | <signal name="delete_event" handler="on_delete"/> |
3515 | 25 | <property name="visible">True</property> | 25 | |
3516 | 26 | <child> | 26 | <child> |
3517 | 27 | <widget class="GtkImageMenuItem" id="file_quit"> | 27 | <widget class="GtkVBox" id="vbox1"> |
3518 | 28 | <property name="visible">True</property> | 28 | <property name="visible">True</property> |
3519 | 29 | <property name="label">gtk-quit</property> | 29 | <property name="homogeneous">False</property> |
3520 | 30 | <property name="use_underline">True</property> | 30 | <property name="spacing">0</property> |
3521 | 31 | <property name="use_stock">True</property> | 31 | |
3522 | 32 | <signal name="activate" handler="gtk_main_quit"/> | 32 | <child> |
3523 | 33 | </widget> | 33 | <widget class="GtkMenuBar" id="browser_menu"> |
3524 | 34 | </child> | 34 | <property name="visible">True</property> |
3525 | 35 | </widget> | 35 | <property name="pack_direction">GTK_PACK_DIRECTION_LTR</property> |
3526 | 36 | </child> | 36 | <property name="child_pack_direction">GTK_PACK_DIRECTION_LTR</property> |
3527 | 37 | </widget> | 37 | |
3528 | 38 | </child> | 38 | <child> |
3529 | 39 | <child> | 39 | <widget class="GtkMenuItem" id="menuitem1"> |
3530 | 40 | <widget class="GtkMenuItem" id="menu_edit"> | 40 | <property name="visible">True</property> |
3531 | 41 | <property name="label" translatable="yes">_Edit</property> | 41 | <property name="label" translatable="yes">_File</property> |
3532 | 42 | <property name="use_underline">True</property> | 42 | <property name="use_underline">True</property> |
3533 | 43 | <child> | 43 | |
3534 | 44 | <widget class="GtkMenu" id="menu2"> | 44 | <child> |
3535 | 45 | <property name="visible">True</property> | 45 | <widget class="GtkMenu" id="menuitem1_menu"> |
3536 | 46 | <child> | 46 | |
3537 | 47 | <widget class="GtkImageMenuItem" id="edit_undo"> | 47 | <child> |
3538 | 48 | <property name="visible">True</property> | 48 | <widget class="GtkImageMenuItem" id="file_quit"> |
3539 | 49 | <property name="label">gtk-undo</property> | 49 | <property name="visible">True</property> |
3540 | 50 | <property name="use_underline">True</property> | 50 | <property name="label">gtk-quit</property> |
3541 | 51 | <property name="use_stock">True</property> | 51 | <property name="use_stock">True</property> |
3542 | 52 | </widget> | 52 | <signal name="activate" handler="gtk_main_quit"/> |
3543 | 53 | </child> | 53 | </widget> |
3544 | 54 | <child> | 54 | </child> |
3545 | 55 | <widget class="GtkImageMenuItem" id="edit_redo"> | 55 | </widget> |
3546 | 56 | <property name="visible">True</property> | 56 | </child> |
3547 | 57 | <property name="label">gtk-redo</property> | 57 | </widget> |
3548 | 58 | <property name="use_underline">True</property> | 58 | </child> |
3549 | 59 | <property name="use_stock">True</property> | 59 | |
3550 | 60 | </widget> | 60 | <child> |
3551 | 61 | </child> | 61 | <widget class="GtkMenuItem" id="menu_edit"> |
3552 | 62 | </widget> | 62 | <property name="label" translatable="yes">_Edit</property> |
3553 | 63 | </child> | 63 | <property name="use_underline">True</property> |
3554 | 64 | </widget> | 64 | |
3555 | 65 | </child> | 65 | <child> |
3556 | 66 | <child> | 66 | <widget class="GtkMenu" id="menu_edit_menu"> |
3557 | 67 | <widget class="GtkMenuItem" id="menu_view"> | 67 | |
3558 | 68 | <property name="visible">True</property> | 68 | <child> |
3559 | 69 | <property name="label" translatable="yes">_View</property> | 69 | <widget class="GtkImageMenuItem" id="edit_undo"> |
3560 | 70 | <property name="use_underline">True</property> | 70 | <property name="visible">True</property> |
3561 | 71 | <child> | 71 | <property name="label">gtk-undo</property> |
3562 | 72 | <widget class="GtkMenu" id="menu5"> | 72 | <property name="use_stock">True</property> |
3563 | 73 | <property name="visible">True</property> | 73 | </widget> |
3564 | 74 | <child> | 74 | </child> |
3565 | 75 | <widget class="GtkCheckMenuItem" id="view_workview"> | 75 | |
3566 | 76 | <property name="visible">True</property> | 76 | <child> |
3567 | 77 | <property name="label" translatable="yes">_Work View</property> | 77 | <widget class="GtkImageMenuItem" id="edit_redo"> |
3568 | 78 | <property name="use_underline">True</property> | 78 | <property name="visible">True</property> |
3569 | 79 | <signal name="toggled" handler="on_view_workview_toggled"/> | 79 | <property name="label">gtk-redo</property> |
3570 | 80 | </widget> | 80 | <property name="use_stock">True</property> |
3571 | 81 | </child> | 81 | </widget> |
3572 | 82 | <child> | 82 | </child> |
3573 | 83 | <widget class="GtkSeparatorMenuItem" id="separator1"> | 83 | </widget> |
3574 | 84 | <property name="visible">True</property> | 84 | </child> |
3575 | 85 | </widget> | 85 | </widget> |
3576 | 86 | </child> | 86 | </child> |
3577 | 87 | <child> | 87 | |
3578 | 88 | <widget class="GtkCheckMenuItem" id="bgcol_enable"> | 88 | <child> |
3579 | 89 | <property name="visible">True</property> | 89 | <widget class="GtkMenuItem" id="menu_view"> |
3580 | 90 | <property name="label" translatable="yes">_Background Colors</property> | 90 | <property name="visible">True</property> |
3581 | 91 | <property name="use_underline">True</property> | 91 | <property name="label" translatable="yes">_View</property> |
3582 | 92 | <property name="active">True</property> | 92 | <property name="use_underline">True</property> |
3583 | 93 | <signal name="toggled" handler="on_bg_color_toggled"/> | 93 | |
3584 | 94 | </widget> | 94 | <child> |
3585 | 95 | </child> | 95 | <widget class="GtkMenu" id="menu_view_menu"> |
3586 | 96 | <child> | 96 | |
3587 | 97 | <widget class="GtkSeparatorMenuItem" id="separatormenuitem1"> | 97 | <child> |
3588 | 98 | <property name="visible">True</property> | 98 | <widget class="GtkCheckMenuItem" id="view_workview"> |
3589 | 99 | </widget> | 99 | <property name="visible">True</property> |
3590 | 100 | </child> | 100 | <property name="label" translatable="yes">_Work View</property> |
3591 | 101 | <child> | 101 | <property name="use_underline">True</property> |
3592 | 102 | <widget class="GtkCheckMenuItem" id="view_sidebar"> | 102 | <property name="active">False</property> |
3593 | 103 | <property name="visible">True</property> | 103 | <signal name="toggled" handler="on_view_workview_toggled"/> |
3594 | 104 | <property name="label" translatable="yes">_Tags Sidebar</property> | 104 | </widget> |
3595 | 105 | <property name="use_underline">True</property> | 105 | </child> |
3596 | 106 | <signal name="toggled" handler="on_view_sidebar_toggled"/> | 106 | |
3597 | 107 | </widget> | 107 | <child> |
3598 | 108 | </child> | 108 | <widget class="GtkSeparatorMenuItem" id="separator1"> |
3599 | 109 | <child> | 109 | <property name="visible">True</property> |
3600 | 110 | <widget class="GtkCheckMenuItem" id="view_closed"> | 110 | </widget> |
3601 | 111 | <property name="visible">True</property> | 111 | </child> |
3602 | 112 | <property name="label" translatable="yes">_Closed Tasks Pane</property> | 112 | |
3603 | 113 | <property name="use_underline">True</property> | 113 | <child> |
3604 | 114 | <signal name="toggled" handler="on_view_closed_toggled"/> | 114 | <widget class="GtkCheckMenuItem" id="bgcol_enable"> |
3605 | 115 | </widget> | 115 | <property name="visible">True</property> |
3606 | 116 | </child> | 116 | <property name="label" translatable="yes">_Background Colors</property> |
3607 | 117 | <child><widget class="GtkCheckMenuItem" id="view_toolbar"> | 117 | <property name="use_underline">True</property> |
3608 | 118 | <property name="visible">True</property> | 118 | <property name="active">True</property> |
3609 | 119 | <property name="label" translatable="yes">T_oolbar</property> | 119 | <signal name="toggled" handler="on_bg_color_toggled"/> |
3610 | 120 | <property name="use_underline">True</property> | 120 | </widget> |
3611 | 121 | <signal name="toggled" handler="on_view_toolbar_toggled" /> | 121 | </child> |
3612 | 122 | </widget></child> | 122 | |
3613 | 123 | <child> | 123 | <child> |
3614 | 124 | <widget class="GtkCheckMenuItem" id="view_quickadd"> | 124 | <widget class="GtkSeparatorMenuItem" id="separatormenuitem1"> |
3615 | 125 | <property name="visible">True</property> | 125 | <property name="visible">True</property> |
3616 | 126 | <property name="label" translatable="yes">_Quick Add Entry</property> | 126 | </widget> |
3617 | 127 | <property name="use_underline">True</property> | 127 | </child> |
3618 | 128 | <signal name="toggled" handler="on_view_quickadd_toggled"/> | 128 | |
3619 | 129 | </widget> | 129 | <child> |
3620 | 130 | </child></widget> | 130 | <widget class="GtkCheckMenuItem" id="view_sidebar"> |
3621 | 131 | </child> | 131 | <property name="visible">True</property> |
3622 | 132 | </widget> | 132 | <property name="label" translatable="yes">_Tags Sidebar</property> |
3623 | 133 | </child> | 133 | <property name="use_underline">True</property> |
3624 | 134 | <child> | 134 | <property name="active">False</property> |
3625 | 135 | <widget class="GtkMenuItem" id="bm_task"> | 135 | <signal name="toggled" handler="on_view_sidebar_toggled"/> |
3626 | 136 | <property name="visible">True</property> | 136 | </widget> |
3627 | 137 | <property name="label" translatable="yes">_Tasks</property> | 137 | </child> |
3628 | 138 | <property name="use_underline">True</property> | 138 | |
3629 | 139 | <child> | 139 | <child> |
3630 | 140 | <widget class="GtkMenu" id="menu4"> | 140 | <widget class="GtkCheckMenuItem" id="view_closed"> |
3631 | 141 | <property name="visible">True</property> | 141 | <property name="visible">True</property> |
3632 | 142 | <child> | 142 | <property name="label" translatable="yes">_Closed Tasks Pane</property> |
3633 | 143 | <widget class="GtkImageMenuItem" id="new_task_mi"> | 143 | <property name="use_underline">True</property> |
3634 | 144 | <property name="visible">True</property> | 144 | <property name="active">False</property> |
3635 | 145 | <property name="tooltip" translatable="yes">Create a new task</property> | 145 | <signal name="toggled" handler="on_view_closed_toggled"/> |
3636 | 146 | <property name="label" translatable="yes">New _Task</property> | 146 | </widget> |
3637 | 147 | <property name="use_underline">True</property> | 147 | </child> |
3638 | 148 | <signal name="activate" handler="on_add_task"/> | 148 | |
3639 | 149 | <child internal-child="image"> | 149 | <child> |
3640 | 150 | <widget class="GtkImage" id="image1"> | 150 | <widget class="GtkCheckMenuItem" id="view_toolbar"> |
3641 | 151 | <property name="visible">True</property> | 151 | <property name="visible">True</property> |
3642 | 152 | <property name="pixel_size">16</property> | 152 | <property name="label" translatable="yes">T_oolbar</property> |
3643 | 153 | <property name="icon_name">gtg-task-new</property> | 153 | <property name="use_underline">True</property> |
3644 | 154 | </widget> | 154 | <property name="active">False</property> |
3645 | 155 | </child> | 155 | <signal name="toggled" handler="on_view_toolbar_toggled"/> |
3646 | 156 | </widget> | 156 | </widget> |
3647 | 157 | </child> | 157 | </child> |
3648 | 158 | <child> | 158 | |
3649 | 159 | <widget class="GtkImageMenuItem" id="new_subtask_mi"> | 159 | <child> |
3650 | 160 | <property name="visible">True</property> | 160 | <widget class="GtkCheckMenuItem" id="view_quickadd"> |
3651 | 161 | <property name="label" translatable="yes">New _Subtask</property> | 161 | <property name="visible">True</property> |
3652 | 162 | <property name="use_underline">True</property> | 162 | <property name="label" translatable="yes">_Quick Add Entry</property> |
3653 | 163 | <signal name="activate" handler="on_add_subtask"/> | 163 | <property name="use_underline">True</property> |
3654 | 164 | <child internal-child="image"> | 164 | <property name="active">False</property> |
3655 | 165 | <widget class="GtkImage" id="image2"> | 165 | <signal name="toggled" handler="on_view_quickadd_toggled"/> |
3656 | 166 | <property name="visible">True</property> | 166 | </widget> |
3657 | 167 | <property name="pixel_size">16</property> | 167 | </child> |
3658 | 168 | <property name="icon_name">gtg-task-new</property> | 168 | </widget> |
3659 | 169 | </widget> | 169 | </child> |
3660 | 170 | </child> | 170 | </widget> |
3661 | 171 | </widget> | 171 | </child> |
3662 | 172 | </child> | 172 | |
3663 | 173 | <child> | 173 | <child> |
3664 | 174 | <widget class="GtkImageMenuItem" id="edit_mi"> | 174 | <widget class="GtkMenuItem" id="bm_task"> |
3665 | 175 | <property name="visible">True</property> | 175 | <property name="visible">True</property> |
3666 | 176 | <property name="label">gtk-edit</property> | 176 | <property name="label" translatable="yes">_Tasks</property> |
3667 | 177 | <property name="use_underline">True</property> | 177 | <property name="use_underline">True</property> |
3668 | 178 | <property name="use_stock">True</property> | 178 | |
3669 | 179 | <signal name="activate" handler="on_edit_active_task"/> | 179 | <child> |
3670 | 180 | </widget> | 180 | <widget class="GtkMenu" id="bm_task_menu"> |
3671 | 181 | </child> | 181 | |
3672 | 182 | <child> | 182 | <child> |
3673 | 183 | <widget class="GtkSeparatorMenuItem" id="separatormenuitem2"> | 183 | <widget class="GtkMenuItem" id="new_task_mi"> |
3674 | 184 | <property name="visible">True</property> | 184 | <property name="visible">True</property> |
3675 | 185 | </widget> | 185 | <property name="tooltip" translatable="yes">Create a new task</property> |
3676 | 186 | </child> | 186 | <property name="label" translatable="yes">New _Task</property> |
3677 | 187 | <child> | 187 | <property name="use_underline">True</property> |
3678 | 188 | <widget class="GtkImageMenuItem" id="mark_done_mi"> | 188 | <signal name="activate" handler="on_add_task"/> |
3679 | 189 | <property name="visible">True</property> | 189 | </widget> |
3680 | 190 | <property name="label" translatable="yes">Mark as _Done</property> | 190 | </child> |
3681 | 191 | <property name="use_underline">True</property> | 191 | |
3682 | 192 | <signal name="activate" handler="on_mark_as_done"/> | 192 | <child> |
3683 | 193 | <child internal-child="image"> | 193 | <widget class="GtkMenuItem" id="new_subtask_mi"> |
3684 | 194 | <widget class="GtkImage" id="image3"> | 194 | <property name="visible">True</property> |
3685 | 195 | <property name="visible">True</property> | 195 | <property name="label" translatable="yes">New _Subtask</property> |
3686 | 196 | <property name="pixel_size">16</property> | 196 | <property name="use_underline">True</property> |
3687 | 197 | <property name="icon_name">gtg-task-done</property> | 197 | <signal name="activate" handler="on_add_subtask"/> |
3688 | 198 | </widget> | 198 | </widget> |
3689 | 199 | </child> | 199 | </child> |
3690 | 200 | </widget> | 200 | |
3691 | 201 | </child> | 201 | <child> |
3692 | 202 | <child> | 202 | <widget class="GtkImageMenuItem" id="edit_mi"> |
3693 | 203 | <widget class="GtkImageMenuItem" id="task_dismiss"> | 203 | <property name="visible">True</property> |
3694 | 204 | <property name="visible">True</property> | 204 | <property name="label">gtk-edit</property> |
3695 | 205 | <property name="label" translatable="yes">D_ismiss</property> | 205 | <property name="use_stock">True</property> |
3696 | 206 | <property name="use_underline">True</property> | 206 | <signal name="activate" handler="on_edit_active_task"/> |
3697 | 207 | <signal name="activate" handler="on_dismiss_task"/> | 207 | </widget> |
3698 | 208 | <child internal-child="image"> | 208 | </child> |
3699 | 209 | <widget class="GtkImage" id="image4"> | 209 | |
3700 | 210 | <property name="visible">True</property> | 210 | <child> |
3701 | 211 | <property name="pixel_size">16</property> | 211 | <widget class="GtkSeparatorMenuItem" id="separatormenuitem2"> |
3702 | 212 | <property name="icon_name">gtg-task-dismiss</property> | 212 | <property name="visible">True</property> |
3703 | 213 | </widget> | 213 | </widget> |
3704 | 214 | </child> | 214 | </child> |
3705 | 215 | </widget> | 215 | |
3706 | 216 | </child> | 216 | <child> |
3707 | 217 | <child> | 217 | <widget class="GtkMenuItem" id="mark_done_mi"> |
3708 | 218 | <widget class="GtkImageMenuItem" id="delete_mi"> | 218 | <property name="visible">True</property> |
3709 | 219 | <property name="visible">True</property> | 219 | <property name="label" translatable="yes">Mark as _Done</property> |
3710 | 220 | <property name="label">gtk-delete</property> | 220 | <property name="use_underline">True</property> |
3711 | 221 | <property name="use_underline">True</property> | 221 | <signal name="activate" handler="on_mark_as_done"/> |
3712 | 222 | <property name="use_stock">True</property> | 222 | </widget> |
3713 | 223 | <signal name="activate" handler="on_delete_task"/> | 223 | </child> |
3714 | 224 | </widget> | 224 | |
3715 | 225 | </child> | 225 | <child> |
3716 | 226 | </widget> | 226 | <widget class="GtkMenuItem" id="task_dismiss"> |
3717 | 227 | </child> | 227 | <property name="visible">True</property> |
3718 | 228 | </widget> | 228 | <property name="label" translatable="yes">D_ismiss</property> |
3719 | 229 | </child> | 229 | <property name="use_underline">True</property> |
3720 | 230 | <child> | 230 | <signal name="activate" handler="on_dismiss_task"/> |
3721 | 231 | <widget class="GtkMenuItem" id="menuitem4"> | 231 | </widget> |
3722 | 232 | <property name="visible">True</property> | 232 | </child> |
3723 | 233 | <property name="label" translatable="yes">_Help</property> | 233 | |
3724 | 234 | <property name="use_underline">True</property> | 234 | <child> |
3725 | 235 | <child> | 235 | <widget class="GtkImageMenuItem" id="delete_mi"> |
3726 | 236 | <widget class="GtkMenu" id="menu3"> | 236 | <property name="visible">True</property> |
3727 | 237 | <property name="visible">True</property> | 237 | <property name="label">gtk-delete</property> |
3728 | 238 | <child> | 238 | <property name="use_stock">True</property> |
3729 | 239 | <widget class="GtkImageMenuItem" id="imagemenuitem10"> | 239 | <signal name="activate" handler="on_delete_task"/> |
3730 | 240 | <property name="visible">True</property> | 240 | </widget> |
3731 | 241 | <property name="label">gtk-about</property> | 241 | </child> |
3732 | 242 | <property name="use_underline">True</property> | 242 | </widget> |
3733 | 243 | <property name="use_stock">True</property> | 243 | </child> |
3734 | 244 | <signal name="activate" handler="on_about_clicked"/> | 244 | </widget> |
3735 | 245 | </widget> | 245 | </child> |
3736 | 246 | </child> | 246 | |
3737 | 247 | </widget> | 247 | <child> |
3738 | 248 | </child> | 248 | <widget class="GtkMenuItem" id="menu_plugin"> |
3739 | 249 | </widget> | 249 | <property name="visible">True</property> |
3740 | 250 | </child> | 250 | <property name="label" translatable="yes">_Plugins</property> |
3741 | 251 | </widget> | 251 | <property name="use_underline">True</property> |
3742 | 252 | <packing> | 252 | |
3743 | 253 | <property name="expand">False</property> | 253 | <child> |
3744 | 254 | </packing> | 254 | <widget class="GtkMenu" id="menu_plugin_menu"> |
3745 | 255 | </child> | 255 | |
3746 | 256 | <child> | 256 | <child> |
3747 | 257 | <widget class="GtkToolbar" id="task_tb"> | 257 | <widget class="GtkMenuItem" id="pluginmanager_menu"> |
3748 | 258 | <property name="visible">True</property> | 258 | <property name="visible">True</property> |
3749 | 259 | <child> | 259 | <property name="label" translatable="yes">_Plugin Preferences</property> |
3750 | 260 | <widget class="GtkToolButton" id="new_task_b"> | 260 | <property name="use_underline">True</property> |
3751 | 261 | <property name="visible">True</property> | 261 | <signal name="activate" handler="on_pluginmanager_activate" last_modification_time="Wed, 29 Jul 2009 14:36:59 GMT"/> |
3752 | 262 | <property name="label" translatable="yes">New Task</property> | 262 | </widget> |
3753 | 263 | <property name="icon_name">gtg-task-new</property> | 263 | </child> |
3754 | 264 | <signal name="clicked" handler="on_add_task"/> | 264 | </widget> |
3755 | 265 | </widget> | 265 | </child> |
3756 | 266 | <packing> | 266 | </widget> |
3757 | 267 | <property name="homogeneous">True</property> | 267 | </child> |
3758 | 268 | </packing> | 268 | |
3759 | 269 | </child> | 269 | <child> |
3760 | 270 | <child> | 270 | <widget class="GtkMenuItem" id="menuitem4"> |
3761 | 271 | <widget class="GtkToolButton" id="new_subtask_b"> | 271 | <property name="visible">True</property> |
3762 | 272 | <property name="label" translatable="yes">New Subtask</property> | 272 | <property name="label" translatable="yes">_Help</property> |
3763 | 273 | <property name="icon_name">gtg-task-new</property> | 273 | <property name="use_underline">True</property> |
3764 | 274 | <signal name="clicked" handler="on_add_subtask"/> | 274 | |
3765 | 275 | </widget> | 275 | <child> |
3766 | 276 | <packing> | 276 | <widget class="GtkMenu" id="menuitem4_menu"> |
3767 | 277 | <property name="homogeneous">True</property> | 277 | |
3768 | 278 | </packing> | 278 | <child> |
3769 | 279 | </child> | 279 | <widget class="GtkImageMenuItem" id="imagemenuitem10"> |
3770 | 280 | <child> | 280 | <property name="visible">True</property> |
3771 | 281 | <widget class="GtkToolButton" id="new_note_button"> | 281 | <property name="label">gtk-about</property> |
3772 | 282 | <property name="visible">True</property> | 282 | <property name="use_stock">True</property> |
3773 | 283 | <property name="label" translatable="yes">New Note</property> | 283 | <signal name="activate" handler="on_about_clicked"/> |
3774 | 284 | <property name="icon_name">gtg-note-new</property> | 284 | </widget> |
3775 | 285 | <signal name="clicked" handler="on_add_note"/> | 285 | </child> |
3776 | 286 | </widget> | 286 | </widget> |
3777 | 287 | <packing> | 287 | </child> |
3778 | 288 | <property name="homogeneous">True</property> | 288 | </widget> |
3779 | 289 | </packing> | 289 | </child> |
3780 | 290 | </child> | 290 | </widget> |
3781 | 291 | <child> | 291 | <packing> |
3782 | 292 | <widget class="GtkToolButton" id="edit_b"> | 292 | <property name="padding">0</property> |
3783 | 293 | <property name="visible">True</property> | 293 | <property name="expand">False</property> |
3784 | 294 | <property name="label" translatable="yes">Edit</property> | 294 | <property name="fill">True</property> |
3785 | 295 | <property name="stock_id">gtk-edit</property> | 295 | </packing> |
3786 | 296 | <signal name="clicked" handler="on_edit_active_task"/> | 296 | </child> |
3787 | 297 | </widget> | 297 | |
3788 | 298 | <packing> | 298 | <child> |
3789 | 299 | <property name="homogeneous">True</property> | 299 | <widget class="GtkToolbar" id="task_tb"> |
3790 | 300 | </packing> | 300 | <property name="visible">True</property> |
3791 | 301 | </child> | 301 | <property name="orientation">GTK_ORIENTATION_HORIZONTAL</property> |
3792 | 302 | <child> | 302 | <property name="toolbar_style">GTK_TOOLBAR_BOTH</property> |
3793 | 303 | <widget class="GtkSeparatorToolItem" id="<separateur>"> | 303 | <property name="tooltips">True</property> |
3794 | 304 | </widget> | 304 | <property name="show_arrow">True</property> |
3795 | 305 | <packing> | 305 | |
3796 | 306 | <property name="homogeneous">True</property> | 306 | <child> |
3797 | 307 | </packing> | 307 | <widget class="GtkToolButton" id="new_task_b"> |
3798 | 308 | </child> | 308 | <property name="visible">True</property> |
3799 | 309 | <child> | 309 | <property name="label" translatable="yes">New Task</property> |
3800 | 310 | <widget class="GtkToolButton" id="Undo"> | 310 | <property name="use_underline">True</property> |
3801 | 311 | <property name="label" translatable="yes">Undo</property> | 311 | <property name="visible_horizontal">True</property> |
3802 | 312 | <property name="stock_id">gtk-undo</property> | 312 | <property name="visible_vertical">True</property> |
3803 | 313 | </widget> | 313 | <property name="is_important">False</property> |
3804 | 314 | <packing> | 314 | <signal name="clicked" handler="on_add_task"/> |
3805 | 315 | <property name="homogeneous">True</property> | 315 | </widget> |
3806 | 316 | </packing> | 316 | <packing> |
3807 | 317 | </child> | 317 | <property name="expand">False</property> |
3808 | 318 | <child> | 318 | <property name="homogeneous">True</property> |
3809 | 319 | <widget class="GtkToolButton" id="Redo"> | 319 | </packing> |
3810 | 320 | <property name="label" translatable="yes">Redo</property> | 320 | </child> |
3811 | 321 | <property name="stock_id">gtk-redo</property> | 321 | |
3812 | 322 | </widget> | 322 | <child> |
3813 | 323 | <packing> | 323 | <widget class="GtkToolButton" id="new_subtask_b"> |
3814 | 324 | <property name="homogeneous">True</property> | 324 | <property name="label" translatable="yes">New Subtask</property> |
3815 | 325 | </packing> | 325 | <property name="use_underline">True</property> |
3816 | 326 | </child> | 326 | <property name="visible_horizontal">True</property> |
3817 | 327 | <child> | 327 | <property name="visible_vertical">True</property> |
3818 | 328 | <widget class="GtkSeparatorToolItem" id="toolbutton2"> | 328 | <property name="is_important">False</property> |
3819 | 329 | <property name="visible">True</property> | 329 | <signal name="clicked" handler="on_add_subtask"/> |
3820 | 330 | </widget> | 330 | </widget> |
3821 | 331 | <packing> | 331 | <packing> |
3822 | 332 | <property name="homogeneous">True</property> | 332 | <property name="expand">False</property> |
3823 | 333 | </packing> | 333 | <property name="homogeneous">True</property> |
3824 | 334 | </child> | 334 | </packing> |
3825 | 335 | <child> | 335 | </child> |
3826 | 336 | <widget class="GtkToolButton" id="mark_as_done_b"> | 336 | |
3827 | 337 | <property name="visible">True</property> | 337 | <child> |
3828 | 338 | <property name="label" translatable="yes">Mark as Done</property> | 338 | <widget class="GtkToolButton" id="new_note_button"> |
3829 | 339 | <property name="icon_name">gtg-task-done</property> | 339 | <property name="visible">True</property> |
3830 | 340 | <signal name="clicked" handler="on_mark_as_done"/> | 340 | <property name="label" translatable="yes">New Note</property> |
3831 | 341 | </widget> | 341 | <property name="use_underline">True</property> |
3832 | 342 | <packing> | 342 | <property name="visible_horizontal">True</property> |
3833 | 343 | <property name="homogeneous">True</property> | 343 | <property name="visible_vertical">True</property> |
3834 | 344 | </packing> | 344 | <property name="is_important">False</property> |
3835 | 345 | </child> | 345 | <signal name="clicked" handler="on_add_note"/> |
3836 | 346 | <child> | 346 | </widget> |
3837 | 347 | <widget class="GtkToolButton" id="dismiss"> | 347 | <packing> |
3838 | 348 | <property name="visible">True</property> | 348 | <property name="expand">False</property> |
3839 | 349 | <property name="label" translatable="yes">Dismiss</property> | 349 | <property name="homogeneous">True</property> |
3840 | 350 | <property name="icon_name">gtg-task-dismiss</property> | 350 | </packing> |
3841 | 351 | <signal name="clicked" handler="on_dismiss_task"/> | 351 | </child> |
3842 | 352 | </widget> | 352 | |
3843 | 353 | <packing> | 353 | <child> |
3844 | 354 | <property name="homogeneous">True</property> | 354 | <widget class="GtkToolButton" id="edit_b"> |
3845 | 355 | </packing> | 355 | <property name="visible">True</property> |
3846 | 356 | </child> | 356 | <property name="label" translatable="yes">Edit</property> |
3847 | 357 | <child> | 357 | <property name="use_underline">True</property> |
3848 | 358 | <widget class="GtkSeparatorToolItem" id="toolbutton1"> | 358 | <property name="stock_id">gtk-edit</property> |
3849 | 359 | <property name="visible">True</property> | 359 | <property name="visible_horizontal">True</property> |
3850 | 360 | </widget> | 360 | <property name="visible_vertical">True</property> |
3851 | 361 | <packing> | 361 | <property name="is_important">False</property> |
3852 | 362 | <property name="homogeneous">True</property> | 362 | <signal name="clicked" handler="on_edit_active_task"/> |
3853 | 363 | </packing> | 363 | </widget> |
3854 | 364 | </child> | 364 | <packing> |
3855 | 365 | <child> | 365 | <property name="expand">False</property> |
3856 | 366 | <widget class="GtkToggleToolButton" id="note_toggle"> | 366 | <property name="homogeneous">True</property> |
3857 | 367 | <property name="visible">True</property> | 367 | </packing> |
3858 | 368 | <property name="label" translatable="yes">View Notes</property> | 368 | </child> |
3859 | 369 | <property name="stock_id">gtk-file</property> | 369 | |
3860 | 370 | <signal name="toggled" handler="on_note_toggled"/> | 370 | <child> |
3861 | 371 | </widget> | 371 | <widget class="GtkSeparatorToolItem" id="<separateur>"> |
3862 | 372 | <packing> | 372 | <property name="draw">True</property> |
3863 | 373 | <property name="homogeneous">True</property> | 373 | <property name="visible_horizontal">True</property> |
3864 | 374 | </packing> | 374 | <property name="visible_vertical">True</property> |
3865 | 375 | </child> | 375 | </widget> |
3866 | 376 | <child> | 376 | <packing> |
3867 | 377 | <widget class="GtkToggleToolButton" id="workview_toggle"> | 377 | <property name="expand">False</property> |
3868 | 378 | <property name="visible">True</property> | 378 | <property name="homogeneous">True</property> |
3869 | 379 | <property name="label" translatable="yes">Work View</property> | 379 | </packing> |
3870 | 380 | <property name="stock_id">gtk-index</property> | 380 | </child> |
3871 | 381 | <signal name="toggled" handler="on_workview_toggled"/> | 381 | |
3872 | 382 | </widget> | 382 | <child> |
3873 | 383 | <packing> | 383 | <widget class="GtkToolButton" id="Undo"> |
3874 | 384 | <property name="homogeneous">True</property> | 384 | <property name="label" translatable="yes">Undo</property> |
3875 | 385 | </packing> | 385 | <property name="use_underline">True</property> |
3876 | 386 | </child> | 386 | <property name="stock_id">gtk-undo</property> |
3877 | 387 | </widget> | 387 | <property name="visible_horizontal">True</property> |
3878 | 388 | <packing> | 388 | <property name="visible_vertical">True</property> |
3879 | 389 | <property name="expand">False</property> | 389 | <property name="is_important">False</property> |
3880 | 390 | <property name="position">1</property> | 390 | </widget> |
3881 | 391 | </packing> | 391 | <packing> |
3882 | 392 | </child> | 392 | <property name="expand">False</property> |
3883 | 393 | <child> | 393 | <property name="homogeneous">True</property> |
3884 | 394 | <widget class="GtkHPaned" id="hpaned1"> | 394 | </packing> |
3885 | 395 | <property name="visible">True</property> | 395 | </child> |
3886 | 396 | <property name="can_focus">True</property> | 396 | |
3887 | 397 | <property name="position">200</property> | 397 | <child> |
3888 | 398 | <property name="position_set">True</property> | 398 | <widget class="GtkToolButton" id="Redo"> |
3889 | 399 | <child> | 399 | <property name="label" translatable="yes">Redo</property> |
3890 | 400 | <widget class="GtkVBox" id="sidebar"> | 400 | <property name="use_underline">True</property> |
3891 | 401 | <child> | 401 | <property name="stock_id">gtk-redo</property> |
3892 | 402 | <widget class="GtkHBox" id="hbox4"> | 402 | <property name="visible_horizontal">True</property> |
3893 | 403 | <property name="visible">True</property> | 403 | <property name="visible_vertical">True</property> |
3894 | 404 | <child> | 404 | <property name="is_important">False</property> |
3895 | 405 | <widget class="GtkImage" id="image8"> | 405 | </widget> |
3896 | 406 | <property name="visible">True</property> | 406 | <packing> |
3897 | 407 | <property name="xpad">5</property> | 407 | <property name="expand">False</property> |
3898 | 408 | <property name="icon_name">gtg-tag</property> | 408 | <property name="homogeneous">True</property> |
3899 | 409 | </widget> | 409 | </packing> |
3900 | 410 | <packing> | 410 | </child> |
3901 | 411 | <property name="expand">False</property> | 411 | |
3902 | 412 | </packing> | 412 | <child> |
3903 | 413 | </child> | 413 | <widget class="GtkSeparatorToolItem" id="toolbutton2"> |
3904 | 414 | <child> | 414 | <property name="visible">True</property> |
3905 | 415 | <widget class="GtkLabel" id="label4"> | 415 | <property name="draw">True</property> |
3906 | 416 | <property name="visible">True</property> | 416 | <property name="visible_horizontal">True</property> |
3907 | 417 | <property name="xalign">0</property> | 417 | <property name="visible_vertical">True</property> |
3908 | 418 | <property name="label" translatable="yes">Tags</property> | 418 | </widget> |
3909 | 419 | </widget> | 419 | <packing> |
3910 | 420 | <packing> | 420 | <property name="expand">False</property> |
3911 | 421 | <property name="position">1</property> | 421 | <property name="homogeneous">True</property> |
3912 | 422 | </packing> | 422 | </packing> |
3913 | 423 | </child> | 423 | </child> |
3914 | 424 | <child> | 424 | |
3915 | 425 | <widget class="GtkButton" id="button-sidebar-close"> | 425 | <child> |
3916 | 426 | <property name="visible">True</property> | 426 | <widget class="GtkToolButton" id="mark_as_done_b"> |
3917 | 427 | <property name="can_focus">True</property> | 427 | <property name="visible">True</property> |
3918 | 428 | <property name="receives_default">True</property> | 428 | <property name="label" translatable="yes">Mark as Done</property> |
3919 | 429 | <property name="relief">GTK_RELIEF_NONE</property> | 429 | <property name="use_underline">True</property> |
3920 | 430 | <property name="response_id">0</property> | 430 | <property name="visible_horizontal">True</property> |
3921 | 431 | <signal name="clicked" handler="on_view_sidebar_toggled"/> | 431 | <property name="visible_vertical">True</property> |
3922 | 432 | <child> | 432 | <property name="is_important">False</property> |
3923 | 433 | <widget class="GtkImage" id="image9"> | 433 | <signal name="clicked" handler="on_mark_as_done"/> |
3924 | 434 | <property name="visible">True</property> | 434 | </widget> |
3925 | 435 | <property name="stock">gtk-close</property> | 435 | <packing> |
3926 | 436 | <property name="icon_size">1</property> | 436 | <property name="expand">False</property> |
3927 | 437 | </widget> | 437 | <property name="homogeneous">True</property> |
3928 | 438 | </child> | 438 | </packing> |
3929 | 439 | </widget> | 439 | </child> |
3930 | 440 | <packing> | 440 | |
3931 | 441 | <property name="expand">False</property> | 441 | <child> |
3932 | 442 | <property name="position">2</property> | 442 | <widget class="GtkToolButton" id="dismiss"> |
3933 | 443 | </packing> | 443 | <property name="visible">True</property> |
3934 | 444 | </child> | 444 | <property name="label" translatable="yes">Dismiss</property> |
3935 | 445 | </widget> | 445 | <property name="use_underline">True</property> |
3936 | 446 | <packing> | 446 | <property name="visible_horizontal">True</property> |
3937 | 447 | <property name="expand">False</property> | 447 | <property name="visible_vertical">True</property> |
3938 | 448 | </packing> | 448 | <property name="is_important">False</property> |
3939 | 449 | </child> | 449 | <signal name="clicked" handler="on_dismiss_task"/> |
3940 | 450 | <child> | 450 | </widget> |
3941 | 451 | <widget class="GtkScrolledWindow" id="sidebar-scroll"> | 451 | <packing> |
3942 | 452 | <property name="visible">True</property> | 452 | <property name="expand">False</property> |
3943 | 453 | <property name="can_focus">True</property> | 453 | <property name="homogeneous">True</property> |
3944 | 454 | <property name="hscrollbar_policy">GTK_POLICY_NEVER</property> | 454 | </packing> |
3945 | 455 | <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> | 455 | </child> |
3946 | 456 | <property name="shadow_type">GTK_SHADOW_IN</property> | 456 | |
3947 | 457 | <child> | 457 | <child> |
3948 | 458 | <widget class="GtkTreeView" id="tag_tview"> | 458 | <widget class="GtkSeparatorToolItem" id="toolbutton1"> |
3949 | 459 | <property name="visible">True</property> | 459 | <property name="visible">True</property> |
3950 | 460 | <property name="can_focus">True</property> | 460 | <property name="draw">True</property> |
3951 | 461 | <signal name="button_press_event" handler="on_tag_treeview_button_press_event"/> | 461 | <property name="visible_horizontal">True</property> |
3952 | 462 | <signal name="row_activated" handler="on_select_tag"/> | 462 | <property name="visible_vertical">True</property> |
3953 | 463 | <signal name="cursor_changed" handler="on_select_tag"/> | 463 | </widget> |
3954 | 464 | </widget> | 464 | <packing> |
3955 | 465 | </child> | 465 | <property name="expand">False</property> |
3956 | 466 | </widget> | 466 | <property name="homogeneous">True</property> |
3957 | 467 | <packing> | 467 | </packing> |
3958 | 468 | <property name="position">1</property> | 468 | </child> |
3959 | 469 | </packing> | 469 | |
3960 | 470 | </child> | 470 | <child> |
3961 | 471 | </widget> | 471 | <widget class="GtkToggleToolButton" id="note_toggle"> |
3962 | 472 | <packing> | 472 | <property name="visible">True</property> |
3963 | 473 | <property name="resize">True</property> | 473 | <property name="label" translatable="yes">View Notes</property> |
3964 | 474 | <property name="shrink">True</property> | 474 | <property name="use_underline">True</property> |
3965 | 475 | </packing> | 475 | <property name="stock_id">gtk-file</property> |
3966 | 476 | </child> | 476 | <property name="visible_horizontal">True</property> |
3967 | 477 | <child> | 477 | <property name="visible_vertical">True</property> |
3968 | 478 | <widget class="GtkVBox" id="vbox2"> | 478 | <property name="is_important">False</property> |
3969 | 479 | <property name="visible">True</property> | 479 | <property name="active">False</property> |
3970 | 480 | <child> | 480 | <signal name="toggled" handler="on_note_toggled"/> |
3971 | 481 | <widget class="GtkHBox" id="quickadd_pane"> | 481 | </widget> |
3972 | 482 | <property name="visible">True</property> | 482 | <packing> |
3973 | 483 | <child> | 483 | <property name="expand">False</property> |
3974 | 484 | <widget class="GtkEntry" id="quickadd_field"> | 484 | <property name="homogeneous">True</property> |
3975 | 485 | <property name="visible">True</property> | 485 | </packing> |
3976 | 486 | <property name="can_focus">True</property> | 486 | </child> |
3977 | 487 | <property name="has_focus">True</property> | 487 | |
3978 | 488 | <property name="is_focus">True</property> | 488 | <child> |
3979 | 489 | <property name="can_default">True</property> | 489 | <widget class="GtkToggleToolButton" id="workview_toggle"> |
3980 | 490 | <signal name="activate" handler="on_quickadd_field_activate"/> | 490 | <property name="visible">True</property> |
3981 | 491 | </widget> | 491 | <property name="label" translatable="yes">Work View</property> |
3982 | 492 | </child> | 492 | <property name="use_underline">True</property> |
3983 | 493 | <child> | 493 | <property name="stock_id">gtk-index</property> |
3984 | 494 | <widget class="GtkButton" id="button1"> | 494 | <property name="visible_horizontal">True</property> |
3985 | 495 | <property name="visible">True</property> | 495 | <property name="visible_vertical">True</property> |
3986 | 496 | <property name="can_focus">True</property> | 496 | <property name="is_important">False</property> |
3987 | 497 | <property name="receives_default">True</property> | 497 | <property name="active">False</property> |
3988 | 498 | <property name="label">gtk-add</property> | 498 | <signal name="toggled" handler="on_workview_toggled"/> |
3989 | 499 | <property name="use_stock">True</property> | 499 | </widget> |
3990 | 500 | <property name="response_id">0</property> | 500 | <packing> |
3991 | 501 | <signal name="clicked" handler="on_quickadd_button_activate"/> | 501 | <property name="expand">False</property> |
3992 | 502 | </widget> | 502 | <property name="homogeneous">True</property> |
3993 | 503 | <packing> | 503 | </packing> |
3994 | 504 | <property name="expand">False</property> | 504 | </child> |
3995 | 505 | <property name="fill">False</property> | 505 | </widget> |
3996 | 506 | <property name="position">1</property> | 506 | <packing> |
3997 | 507 | </packing> | 507 | <property name="padding">0</property> |
3998 | 508 | </child> | 508 | <property name="expand">False</property> |
3999 | 509 | </widget> | 509 | <property name="fill">True</property> |
4000 | 510 | <packing> | 510 | </packing> |
4001 | 511 | <property name="expand">False</property> | 511 | </child> |
4002 | 512 | <property name="fill">False</property> | 512 | |
4003 | 513 | <property name="padding">2</property> | 513 | <child> |
4004 | 514 | </packing> | 514 | <widget class="GtkHPaned" id="hpaned1"> |
4005 | 515 | </child> | 515 | <property name="visible">True</property> |
4006 | 516 | <child> | 516 | <property name="can_focus">True</property> |
4007 | 517 | <widget class="GtkVPaned" id="vpaned1"> | 517 | <property name="position">200</property> |
4008 | 518 | <property name="visible">True</property> | 518 | |
4009 | 519 | <property name="can_focus">True</property> | 519 | <child> |
4010 | 520 | <property name="position">330</property> | 520 | <widget class="GtkVBox" id="sidebar"> |
4011 | 521 | <property name="position_set">True</property> | 521 | <property name="homogeneous">False</property> |
4012 | 522 | <child> | 522 | <property name="spacing">0</property> |
4013 | 523 | <widget class="GtkScrolledWindow" id="main_pane"> | 523 | |
4014 | 524 | <property name="visible">True</property> | 524 | <child> |
4015 | 525 | <property name="can_focus">True</property> | 525 | <widget class="GtkHBox" id="hbox4"> |
4016 | 526 | <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> | 526 | <property name="visible">True</property> |
4017 | 527 | <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> | 527 | <property name="homogeneous">False</property> |
4018 | 528 | <child> | 528 | <property name="spacing">0</property> |
4019 | 529 | <widget class="GtkTreeView" id="task_tview"> | 529 | |
4020 | 530 | <property name="visible">True</property> | 530 | <child> |
4021 | 531 | <property name="can_focus">True</property> | 531 | <widget class="GtkImage" id="image8"> |
4022 | 532 | <property name="reorderable">True</property> | 532 | <property name="visible">True</property> |
4023 | 533 | <property name="rules_hint">True</property> | 533 | <property name="icon_size">4</property> |
4024 | 534 | <property name="enable_search">False</property> | 534 | <property name="icon_name">gtg-tag</property> |
4025 | 535 | <property name="search_column">8</property> | 535 | <property name="xalign">0.5</property> |
4026 | 536 | <property name="rubber_banding">True</property> | 536 | <property name="yalign">0.5</property> |
4027 | 537 | <property name="enable_tree_lines">True</property> | 537 | <property name="xpad">5</property> |
4028 | 538 | <signal name="button_press_event" handler="on_task_treeview_button_press_event"/> | 538 | <property name="ypad">0</property> |
4029 | 539 | <signal name="key_press_event" handler="on_task_treeview_key_press_event"/> | 539 | </widget> |
4030 | 540 | <signal name="row_activated" handler="on_edit_active_task"/> | 540 | <packing> |
4031 | 541 | <signal name="cursor_changed" handler="on_task_tview_cursor_changed"/> | 541 | <property name="padding">0</property> |
4032 | 542 | </widget> | 542 | <property name="expand">False</property> |
4033 | 543 | </child> | 543 | <property name="fill">True</property> |
4034 | 544 | </widget> | 544 | </packing> |
4035 | 545 | <packing> | 545 | </child> |
4036 | 546 | <property name="resize">True</property> | 546 | |
4037 | 547 | <property name="shrink">True</property> | 547 | <child> |
4038 | 548 | </packing> | 548 | <widget class="GtkLabel" id="label4"> |
4039 | 549 | </child> | 549 | <property name="visible">True</property> |
4040 | 550 | <child> | 550 | <property name="label" translatable="yes">Tags</property> |
4041 | 551 | <widget class="GtkScrolledWindow" id="closed_pane"> | 551 | <property name="use_underline">False</property> |
4042 | 552 | <property name="height_request">200</property> | 552 | <property name="use_markup">False</property> |
4043 | 553 | <property name="can_focus">True</property> | 553 | <property name="justify">GTK_JUSTIFY_LEFT</property> |
4044 | 554 | <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> | 554 | <property name="wrap">False</property> |
4045 | 555 | <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> | 555 | <property name="selectable">False</property> |
4046 | 556 | <child> | 556 | <property name="xalign">0</property> |
4047 | 557 | <widget class="GtkTreeView" id="taskdone_tview"> | 557 | <property name="yalign">0.5</property> |
4048 | 558 | <property name="visible">True</property> | 558 | <property name="xpad">0</property> |
4049 | 559 | <property name="can_focus">True</property> | 559 | <property name="ypad">0</property> |
4050 | 560 | <property name="rules_hint">True</property> | 560 | <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> |
4051 | 561 | <property name="search_column">8</property> | 561 | <property name="width_chars">-1</property> |
4052 | 562 | <signal name="button_press_event" handler="on_closed_task_treeview_button_press_event"/> | 562 | <property name="single_line_mode">False</property> |
4053 | 563 | <signal name="key_press_event" handler="on_closed_task_treeview_key_press_event"/> | 563 | <property name="angle">0</property> |
4054 | 564 | <signal name="row_activated" handler="on_edit_done_task"/> | 564 | </widget> |
4055 | 565 | </widget> | 565 | <packing> |
4056 | 566 | </child> | 566 | <property name="padding">0</property> |
4057 | 567 | </widget> | 567 | <property name="expand">True</property> |
4058 | 568 | <packing> | 568 | <property name="fill">True</property> |
4059 | 569 | <property name="resize">True</property> | 569 | </packing> |
4060 | 570 | <property name="shrink">True</property> | 570 | </child> |
4061 | 571 | </packing> | 571 | |
4062 | 572 | </child> | 572 | <child> |
4063 | 573 | </widget> | 573 | <widget class="GtkButton" id="button-sidebar-close"> |
4064 | 574 | <packing> | 574 | <property name="visible">True</property> |
4065 | 575 | <property name="position">1</property> | 575 | <property name="can_focus">True</property> |
4066 | 576 | </packing> | 576 | <property name="relief">GTK_RELIEF_NONE</property> |
4067 | 577 | </child> | 577 | <property name="focus_on_click">True</property> |
4068 | 578 | </widget> | 578 | <signal name="clicked" handler="on_view_sidebar_toggled"/> |
4069 | 579 | <packing> | 579 | |
4070 | 580 | <property name="resize">True</property> | 580 | <child> |
4071 | 581 | <property name="shrink">True</property> | 581 | <widget class="GtkImage" id="image9"> |
4072 | 582 | </packing> | 582 | <property name="visible">True</property> |
4073 | 583 | </child> | 583 | <property name="stock">gtk-close</property> |
4074 | 584 | </widget> | 584 | <property name="icon_size">1</property> |
4075 | 585 | <packing> | 585 | <property name="xalign">0.5</property> |
4076 | 586 | <property name="position">2</property> | 586 | <property name="yalign">0.5</property> |
4077 | 587 | </packing> | 587 | <property name="xpad">0</property> |
4078 | 588 | </child> | 588 | <property name="ypad">0</property> |
4079 | 589 | <child> | 589 | </widget> |
4080 | 590 | <widget class="GtkStatusbar" id="statusbar1"> | 590 | </child> |
4081 | 591 | <property name="visible">True</property> | 591 | </widget> |
4082 | 592 | <property name="spacing">2</property> | 592 | <packing> |
4083 | 593 | </widget> | 593 | <property name="padding">0</property> |
4084 | 594 | <packing> | 594 | <property name="expand">False</property> |
4085 | 595 | <property name="expand">False</property> | 595 | <property name="fill">True</property> |
4086 | 596 | <property name="position">3</property> | 596 | </packing> |
4087 | 597 | </packing> | 597 | </child> |
4088 | 598 | </child> | 598 | </widget> |
4089 | 599 | </widget> | 599 | <packing> |
4090 | 600 | </child> | 600 | <property name="padding">0</property> |
4091 | 601 | </widget> | 601 | <property name="expand">False</property> |
4092 | 602 | <widget class="GtkDialog" id="confirm_delete"> | 602 | <property name="fill">True</property> |
4093 | 603 | <property name="border_width">5</property> | 603 | </packing> |
4094 | 604 | <property name="title" translatable="yes">Confirm task deletion</property> | 604 | </child> |
4095 | 605 | <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property> | 605 | |
4096 | 606 | <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> | 606 | <child> |
4097 | 607 | <property name="has_separator">False</property> | 607 | <widget class="GtkScrolledWindow" id="sidebar-scroll"> |
4098 | 608 | <signal name="close" handler="on_delete_cancel"/> | 608 | <property name="visible">True</property> |
4099 | 609 | <child internal-child="vbox"> | 609 | <property name="can_focus">True</property> |
4100 | 610 | <widget class="GtkVBox" id="dialog-vbox1"> | 610 | <property name="hscrollbar_policy">GTK_POLICY_NEVER</property> |
4101 | 611 | <property name="visible">True</property> | 611 | <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> |
4102 | 612 | <property name="spacing">2</property> | 612 | <property name="shadow_type">GTK_SHADOW_IN</property> |
4103 | 613 | <child> | 613 | <property name="window_placement">GTK_CORNER_TOP_LEFT</property> |
4104 | 614 | <widget class="GtkHBox" id="hbox3"> | 614 | |
4105 | 615 | <property name="visible">True</property> | 615 | <child> |
4106 | 616 | <child> | 616 | <widget class="GtkTreeView" id="tag_tview"> |
4107 | 617 | <widget class="GtkImage" id="image5"> | 617 | <property name="visible">True</property> |
4108 | 618 | <property name="visible">True</property> | 618 | <property name="can_focus">True</property> |
4109 | 619 | <property name="stock">gtk-dialog-question</property> | 619 | <property name="headers_visible">True</property> |
4110 | 620 | <property name="icon_size">6</property> | 620 | <property name="rules_hint">False</property> |
4111 | 621 | </widget> | 621 | <property name="reorderable">False</property> |
4112 | 622 | <packing> | 622 | <property name="enable_search">True</property> |
4113 | 623 | <property name="fill">False</property> | 623 | <property name="fixed_height_mode">False</property> |
4114 | 624 | <property name="padding">16</property> | 624 | <property name="hover_selection">False</property> |
4115 | 625 | </packing> | 625 | <property name="hover_expand">False</property> |
4116 | 626 | </child> | 626 | <signal name="button_press_event" handler="on_tag_treeview_button_press_event"/> |
4117 | 627 | <child> | 627 | <signal name="row_activated" handler="on_select_tag"/> |
4118 | 628 | <widget class="GtkLabel" id="label1"> | 628 | <signal name="cursor_changed" handler="on_select_tag"/> |
4119 | 629 | <property name="visible">True</property> | 629 | </widget> |
4120 | 630 | <property name="label" translatable="yes"><span weight="bold" size="large">Are you sure you want delete this task?</span> | 630 | </child> |
4121 | 631 | </widget> | ||
4122 | 632 | <packing> | ||
4123 | 633 | <property name="padding">0</property> | ||
4124 | 634 | <property name="expand">True</property> | ||
4125 | 635 | <property name="fill">True</property> | ||
4126 | 636 | </packing> | ||
4127 | 637 | </child> | ||
4128 | 638 | </widget> | ||
4129 | 639 | <packing> | ||
4130 | 640 | <property name="shrink">True</property> | ||
4131 | 641 | <property name="resize">True</property> | ||
4132 | 642 | </packing> | ||
4133 | 643 | </child> | ||
4134 | 644 | |||
4135 | 645 | <child> | ||
4136 | 646 | <widget class="GtkVBox" id="vbox2"> | ||
4137 | 647 | <property name="visible">True</property> | ||
4138 | 648 | <property name="homogeneous">False</property> | ||
4139 | 649 | <property name="spacing">0</property> | ||
4140 | 650 | |||
4141 | 651 | <child> | ||
4142 | 652 | <widget class="GtkHBox" id="quickadd_pane"> | ||
4143 | 653 | <property name="visible">True</property> | ||
4144 | 654 | <property name="homogeneous">False</property> | ||
4145 | 655 | <property name="spacing">0</property> | ||
4146 | 656 | |||
4147 | 657 | <child> | ||
4148 | 658 | <widget class="GtkEntry" id="quickadd_field"> | ||
4149 | 659 | <property name="visible">True</property> | ||
4150 | 660 | <property name="can_default">True</property> | ||
4151 | 661 | <property name="can_focus">True</property> | ||
4152 | 662 | <property name="has_focus">True</property> | ||
4153 | 663 | <property name="editable">True</property> | ||
4154 | 664 | <property name="visibility">True</property> | ||
4155 | 665 | <property name="max_length">0</property> | ||
4156 | 666 | <property name="text" translatable="yes"></property> | ||
4157 | 667 | <property name="has_frame">True</property> | ||
4158 | 668 | <property name="invisible_char">â—Ź</property> | ||
4159 | 669 | <property name="activates_default">False</property> | ||
4160 | 670 | <signal name="activate" handler="on_quickadd_field_activate"/> | ||
4161 | 671 | </widget> | ||
4162 | 672 | <packing> | ||
4163 | 673 | <property name="padding">0</property> | ||
4164 | 674 | <property name="expand">True</property> | ||
4165 | 675 | <property name="fill">True</property> | ||
4166 | 676 | </packing> | ||
4167 | 677 | </child> | ||
4168 | 678 | |||
4169 | 679 | <child> | ||
4170 | 680 | <widget class="GtkButton" id="button1"> | ||
4171 | 681 | <property name="visible">True</property> | ||
4172 | 682 | <property name="can_focus">True</property> | ||
4173 | 683 | <property name="label">gtk-add</property> | ||
4174 | 684 | <property name="use_stock">True</property> | ||
4175 | 685 | <property name="relief">GTK_RELIEF_NORMAL</property> | ||
4176 | 686 | <property name="focus_on_click">True</property> | ||
4177 | 687 | <signal name="clicked" handler="on_quickadd_button_activate"/> | ||
4178 | 688 | </widget> | ||
4179 | 689 | <packing> | ||
4180 | 690 | <property name="padding">0</property> | ||
4181 | 691 | <property name="expand">False</property> | ||
4182 | 692 | <property name="fill">False</property> | ||
4183 | 693 | </packing> | ||
4184 | 694 | </child> | ||
4185 | 695 | </widget> | ||
4186 | 696 | <packing> | ||
4187 | 697 | <property name="padding">2</property> | ||
4188 | 698 | <property name="expand">False</property> | ||
4189 | 699 | <property name="fill">False</property> | ||
4190 | 700 | </packing> | ||
4191 | 701 | </child> | ||
4192 | 702 | |||
4193 | 703 | <child> | ||
4194 | 704 | <widget class="GtkVPaned" id="vpaned1"> | ||
4195 | 705 | <property name="visible">True</property> | ||
4196 | 706 | <property name="can_focus">True</property> | ||
4197 | 707 | <property name="position">330</property> | ||
4198 | 708 | |||
4199 | 709 | <child> | ||
4200 | 710 | <widget class="GtkScrolledWindow" id="main_pane"> | ||
4201 | 711 | <property name="visible">True</property> | ||
4202 | 712 | <property name="can_focus">True</property> | ||
4203 | 713 | <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> | ||
4204 | 714 | <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> | ||
4205 | 715 | <property name="shadow_type">GTK_SHADOW_NONE</property> | ||
4206 | 716 | <property name="window_placement">GTK_CORNER_TOP_LEFT</property> | ||
4207 | 717 | |||
4208 | 718 | <child> | ||
4209 | 719 | <widget class="GtkTreeView" id="task_tview"> | ||
4210 | 720 | <property name="visible">True</property> | ||
4211 | 721 | <property name="can_focus">True</property> | ||
4212 | 722 | <property name="headers_visible">True</property> | ||
4213 | 723 | <property name="rules_hint">True</property> | ||
4214 | 724 | <property name="reorderable">True</property> | ||
4215 | 725 | <property name="enable_search">False</property> | ||
4216 | 726 | <property name="fixed_height_mode">False</property> | ||
4217 | 727 | <property name="hover_selection">False</property> | ||
4218 | 728 | <property name="hover_expand">False</property> | ||
4219 | 729 | <signal name="button_press_event" handler="on_task_treeview_button_press_event"/> | ||
4220 | 730 | <signal name="key_press_event" handler="on_task_treeview_key_press_event"/> | ||
4221 | 731 | <signal name="row_activated" handler="on_edit_active_task"/> | ||
4222 | 732 | <signal name="cursor_changed" handler="on_task_tview_cursor_changed"/> | ||
4223 | 733 | </widget> | ||
4224 | 734 | </child> | ||
4225 | 735 | </widget> | ||
4226 | 736 | <packing> | ||
4227 | 737 | <property name="shrink">True</property> | ||
4228 | 738 | <property name="resize">True</property> | ||
4229 | 739 | </packing> | ||
4230 | 740 | </child> | ||
4231 | 741 | |||
4232 | 742 | <child> | ||
4233 | 743 | <widget class="GtkScrolledWindow" id="closed_pane"> | ||
4234 | 744 | <property name="height_request">200</property> | ||
4235 | 745 | <property name="can_focus">True</property> | ||
4236 | 746 | <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> | ||
4237 | 747 | <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> | ||
4238 | 748 | <property name="shadow_type">GTK_SHADOW_NONE</property> | ||
4239 | 749 | <property name="window_placement">GTK_CORNER_TOP_LEFT</property> | ||
4240 | 750 | |||
4241 | 751 | <child> | ||
4242 | 752 | <widget class="GtkTreeView" id="taskdone_tview"> | ||
4243 | 753 | <property name="visible">True</property> | ||
4244 | 754 | <property name="can_focus">True</property> | ||
4245 | 755 | <property name="headers_visible">True</property> | ||
4246 | 756 | <property name="rules_hint">True</property> | ||
4247 | 757 | <property name="reorderable">False</property> | ||
4248 | 758 | <property name="enable_search">True</property> | ||
4249 | 759 | <property name="fixed_height_mode">False</property> | ||
4250 | 760 | <property name="hover_selection">False</property> | ||
4251 | 761 | <property name="hover_expand">False</property> | ||
4252 | 762 | <signal name="button_press_event" handler="on_closed_task_treeview_button_press_event"/> | ||
4253 | 763 | <signal name="key_press_event" handler="on_closed_task_treeview_key_press_event"/> | ||
4254 | 764 | <signal name="row_activated" handler="on_edit_done_task"/> | ||
4255 | 765 | </widget> | ||
4256 | 766 | </child> | ||
4257 | 767 | </widget> | ||
4258 | 768 | <packing> | ||
4259 | 769 | <property name="shrink">True</property> | ||
4260 | 770 | <property name="resize">True</property> | ||
4261 | 771 | </packing> | ||
4262 | 772 | </child> | ||
4263 | 773 | </widget> | ||
4264 | 774 | <packing> | ||
4265 | 775 | <property name="padding">0</property> | ||
4266 | 776 | <property name="expand">True</property> | ||
4267 | 777 | <property name="fill">True</property> | ||
4268 | 778 | </packing> | ||
4269 | 779 | </child> | ||
4270 | 780 | </widget> | ||
4271 | 781 | <packing> | ||
4272 | 782 | <property name="shrink">True</property> | ||
4273 | 783 | <property name="resize">True</property> | ||
4274 | 784 | </packing> | ||
4275 | 785 | </child> | ||
4276 | 786 | </widget> | ||
4277 | 787 | <packing> | ||
4278 | 788 | <property name="padding">0</property> | ||
4279 | 789 | <property name="expand">True</property> | ||
4280 | 790 | <property name="fill">True</property> | ||
4281 | 791 | </packing> | ||
4282 | 792 | </child> | ||
4283 | 793 | |||
4284 | 794 | <child> | ||
4285 | 795 | <widget class="GtkStatusbar" id="statusbar1"> | ||
4286 | 796 | <property name="visible">True</property> | ||
4287 | 797 | <property name="has_resize_grip">True</property> | ||
4288 | 798 | </widget> | ||
4289 | 799 | <packing> | ||
4290 | 800 | <property name="padding">0</property> | ||
4291 | 801 | <property name="expand">False</property> | ||
4292 | 802 | <property name="fill">True</property> | ||
4293 | 803 | </packing> | ||
4294 | 804 | </child> | ||
4295 | 805 | </widget> | ||
4296 | 806 | </child> | ||
4297 | 807 | </widget> | ||
4298 | 808 | |||
4299 | 809 | <widget class="GtkDialog" id="confirm_delete"> | ||
4300 | 810 | <property name="border_width">5</property> | ||
4301 | 811 | <property name="title" translatable="yes">Confirm task deletion</property> | ||
4302 | 812 | <property name="type">GTK_WINDOW_TOPLEVEL</property> | ||
4303 | 813 | <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property> | ||
4304 | 814 | <property name="modal">False</property> | ||
4305 | 815 | <property name="resizable">True</property> | ||
4306 | 816 | <property name="destroy_with_parent">False</property> | ||
4307 | 817 | <property name="decorated">True</property> | ||
4308 | 818 | <property name="skip_taskbar_hint">False</property> | ||
4309 | 819 | <property name="skip_pager_hint">False</property> | ||
4310 | 820 | <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> | ||
4311 | 821 | <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> | ||
4312 | 822 | <property name="focus_on_map">True</property> | ||
4313 | 823 | <property name="urgency_hint">False</property> | ||
4314 | 824 | <property name="has_separator">False</property> | ||
4315 | 825 | <signal name="close" handler="on_delete_cancel"/> | ||
4316 | 826 | |||
4317 | 827 | <child internal-child="vbox"> | ||
4318 | 828 | <widget class="GtkVBox" id="dialog-vbox1"> | ||
4319 | 829 | <property name="visible">True</property> | ||
4320 | 830 | <property name="homogeneous">False</property> | ||
4321 | 831 | <property name="spacing">2</property> | ||
4322 | 832 | |||
4323 | 833 | <child internal-child="action_area"> | ||
4324 | 834 | <widget class="GtkHButtonBox" id="dialog-action_area1"> | ||
4325 | 835 | <property name="visible">True</property> | ||
4326 | 836 | <property name="layout_style">GTK_BUTTONBOX_END</property> | ||
4327 | 837 | |||
4328 | 838 | <child> | ||
4329 | 839 | <widget class="GtkButton" id="cancel"> | ||
4330 | 840 | <property name="visible">True</property> | ||
4331 | 841 | <property name="can_focus">True</property> | ||
4332 | 842 | <property name="relief">GTK_RELIEF_NORMAL</property> | ||
4333 | 843 | <property name="focus_on_click">True</property> | ||
4334 | 844 | <property name="response_id">0</property> | ||
4335 | 845 | <signal name="released" handler="on_delete_cancel"/> | ||
4336 | 846 | |||
4337 | 847 | <child> | ||
4338 | 848 | <widget class="GtkHBox" id="hbox1"> | ||
4339 | 849 | <property name="visible">True</property> | ||
4340 | 850 | <property name="homogeneous">False</property> | ||
4341 | 851 | <property name="spacing">0</property> | ||
4342 | 852 | |||
4343 | 853 | <child> | ||
4344 | 854 | <widget class="GtkImage" id="image6"> | ||
4345 | 855 | <property name="visible">True</property> | ||
4346 | 856 | <property name="stock">gtk-cancel</property> | ||
4347 | 857 | <property name="icon_size">4</property> | ||
4348 | 858 | <property name="xalign">0.5</property> | ||
4349 | 859 | <property name="yalign">0.5</property> | ||
4350 | 860 | <property name="xpad">0</property> | ||
4351 | 861 | <property name="ypad">0</property> | ||
4352 | 862 | </widget> | ||
4353 | 863 | <packing> | ||
4354 | 864 | <property name="padding">0</property> | ||
4355 | 865 | <property name="expand">True</property> | ||
4356 | 866 | <property name="fill">True</property> | ||
4357 | 867 | </packing> | ||
4358 | 868 | </child> | ||
4359 | 869 | |||
4360 | 870 | <child> | ||
4361 | 871 | <widget class="GtkLabel" id="label2"> | ||
4362 | 872 | <property name="visible">True</property> | ||
4363 | 873 | <property name="label" translatable="yes">_Keep selected task</property> | ||
4364 | 874 | <property name="use_underline">True</property> | ||
4365 | 875 | <property name="use_markup">False</property> | ||
4366 | 876 | <property name="justify">GTK_JUSTIFY_LEFT</property> | ||
4367 | 877 | <property name="wrap">False</property> | ||
4368 | 878 | <property name="selectable">False</property> | ||
4369 | 879 | <property name="xalign">0</property> | ||
4370 | 880 | <property name="yalign">0.5</property> | ||
4371 | 881 | <property name="xpad">0</property> | ||
4372 | 882 | <property name="ypad">0</property> | ||
4373 | 883 | <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> | ||
4374 | 884 | <property name="width_chars">-1</property> | ||
4375 | 885 | <property name="single_line_mode">False</property> | ||
4376 | 886 | <property name="angle">0</property> | ||
4377 | 887 | </widget> | ||
4378 | 888 | <packing> | ||
4379 | 889 | <property name="padding">0</property> | ||
4380 | 890 | <property name="expand">True</property> | ||
4381 | 891 | <property name="fill">True</property> | ||
4382 | 892 | </packing> | ||
4383 | 893 | </child> | ||
4384 | 894 | </widget> | ||
4385 | 895 | </child> | ||
4386 | 896 | </widget> | ||
4387 | 897 | </child> | ||
4388 | 898 | |||
4389 | 899 | <child> | ||
4390 | 900 | <widget class="GtkButton" id="delete"> | ||
4391 | 901 | <property name="visible">True</property> | ||
4392 | 902 | <property name="can_focus">True</property> | ||
4393 | 903 | <property name="relief">GTK_RELIEF_NORMAL</property> | ||
4394 | 904 | <property name="focus_on_click">True</property> | ||
4395 | 905 | <property name="response_id">0</property> | ||
4396 | 906 | <signal name="activate" handler="on_delete_confirm"/> | ||
4397 | 907 | <signal name="released" handler="on_delete_confirm"/> | ||
4398 | 908 | |||
4399 | 909 | <child> | ||
4400 | 910 | <widget class="GtkHBox" id="hbox2"> | ||
4401 | 911 | <property name="visible">True</property> | ||
4402 | 912 | <property name="homogeneous">False</property> | ||
4403 | 913 | <property name="spacing">0</property> | ||
4404 | 914 | |||
4405 | 915 | <child> | ||
4406 | 916 | <widget class="GtkImage" id="image7"> | ||
4407 | 917 | <property name="visible">True</property> | ||
4408 | 918 | <property name="stock">gtk-delete</property> | ||
4409 | 919 | <property name="icon_size">4</property> | ||
4410 | 920 | <property name="xalign">0.5</property> | ||
4411 | 921 | <property name="yalign">0.5</property> | ||
4412 | 922 | <property name="xpad">0</property> | ||
4413 | 923 | <property name="ypad">0</property> | ||
4414 | 924 | </widget> | ||
4415 | 925 | <packing> | ||
4416 | 926 | <property name="padding">0</property> | ||
4417 | 927 | <property name="expand">True</property> | ||
4418 | 928 | <property name="fill">True</property> | ||
4419 | 929 | </packing> | ||
4420 | 930 | </child> | ||
4421 | 931 | |||
4422 | 932 | <child> | ||
4423 | 933 | <widget class="GtkLabel" id="label3"> | ||
4424 | 934 | <property name="visible">True</property> | ||
4425 | 935 | <property name="label" translatable="yes">Permanently _remove task</property> | ||
4426 | 936 | <property name="use_underline">True</property> | ||
4427 | 937 | <property name="use_markup">False</property> | ||
4428 | 938 | <property name="justify">GTK_JUSTIFY_LEFT</property> | ||
4429 | 939 | <property name="wrap">False</property> | ||
4430 | 940 | <property name="selectable">False</property> | ||
4431 | 941 | <property name="xalign">0.5</property> | ||
4432 | 942 | <property name="yalign">0.5</property> | ||
4433 | 943 | <property name="xpad">0</property> | ||
4434 | 944 | <property name="ypad">0</property> | ||
4435 | 945 | <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> | ||
4436 | 946 | <property name="width_chars">-1</property> | ||
4437 | 947 | <property name="single_line_mode">False</property> | ||
4438 | 948 | <property name="angle">0</property> | ||
4439 | 949 | </widget> | ||
4440 | 950 | <packing> | ||
4441 | 951 | <property name="padding">0</property> | ||
4442 | 952 | <property name="expand">True</property> | ||
4443 | 953 | <property name="fill">True</property> | ||
4444 | 954 | </packing> | ||
4445 | 955 | </child> | ||
4446 | 956 | </widget> | ||
4447 | 957 | </child> | ||
4448 | 958 | </widget> | ||
4449 | 959 | </child> | ||
4450 | 960 | </widget> | ||
4451 | 961 | <packing> | ||
4452 | 962 | <property name="padding">0</property> | ||
4453 | 963 | <property name="expand">False</property> | ||
4454 | 964 | <property name="fill">True</property> | ||
4455 | 965 | <property name="pack_type">GTK_PACK_END</property> | ||
4456 | 966 | </packing> | ||
4457 | 967 | </child> | ||
4458 | 968 | |||
4459 | 969 | <child> | ||
4460 | 970 | <widget class="GtkHBox" id="hbox3"> | ||
4461 | 971 | <property name="visible">True</property> | ||
4462 | 972 | <property name="homogeneous">False</property> | ||
4463 | 973 | <property name="spacing">0</property> | ||
4464 | 974 | |||
4465 | 975 | <child> | ||
4466 | 976 | <widget class="GtkImage" id="image5"> | ||
4467 | 977 | <property name="visible">True</property> | ||
4468 | 978 | <property name="stock">gtk-dialog-question</property> | ||
4469 | 979 | <property name="icon_size">6</property> | ||
4470 | 980 | <property name="xalign">0.5</property> | ||
4471 | 981 | <property name="yalign">0.5</property> | ||
4472 | 982 | <property name="xpad">0</property> | ||
4473 | 983 | <property name="ypad">0</property> | ||
4474 | 984 | </widget> | ||
4475 | 985 | <packing> | ||
4476 | 986 | <property name="padding">16</property> | ||
4477 | 987 | <property name="expand">True</property> | ||
4478 | 988 | <property name="fill">False</property> | ||
4479 | 989 | </packing> | ||
4480 | 990 | </child> | ||
4481 | 991 | |||
4482 | 992 | <child> | ||
4483 | 993 | <widget class="GtkLabel" id="label1"> | ||
4484 | 994 | <property name="visible">True</property> | ||
4485 | 995 | <property name="label" translatable="yes"><span weight="bold" size="large">Are you sure you want delete this task?</span> | ||
4486 | 631 | 996 | ||
4487 | 632 | Deleting a task cannot be undone.</property> | 997 | Deleting a task cannot be undone.</property> |
4692 | 633 | <property name="use_markup">True</property> | 998 | <property name="use_underline">False</property> |
4693 | 634 | <property name="wrap">True</property> | 999 | <property name="use_markup">True</property> |
4694 | 635 | </widget> | 1000 | <property name="justify">GTK_JUSTIFY_LEFT</property> |
4695 | 636 | <packing> | 1001 | <property name="wrap">True</property> |
4696 | 637 | <property name="padding">16</property> | 1002 | <property name="selectable">False</property> |
4697 | 638 | <property name="position">1</property> | 1003 | <property name="xalign">0.5</property> |
4698 | 639 | </packing> | 1004 | <property name="yalign">0.5</property> |
4699 | 640 | </child> | 1005 | <property name="xpad">0</property> |
4700 | 641 | </widget> | 1006 | <property name="ypad">0</property> |
4701 | 642 | <packing> | 1007 | <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> |
4702 | 643 | <property name="padding">16</property> | 1008 | <property name="width_chars">-1</property> |
4703 | 644 | <property name="position">1</property> | 1009 | <property name="single_line_mode">False</property> |
4704 | 645 | </packing> | 1010 | <property name="angle">0</property> |
4705 | 646 | </child> | 1011 | </widget> |
4706 | 647 | <child internal-child="action_area"> | 1012 | <packing> |
4707 | 648 | <widget class="GtkHButtonBox" id="dialog-action_area1"> | 1013 | <property name="padding">16</property> |
4708 | 649 | <property name="visible">True</property> | 1014 | <property name="expand">True</property> |
4709 | 650 | <property name="layout_style">GTK_BUTTONBOX_END</property> | 1015 | <property name="fill">True</property> |
4710 | 651 | <child> | 1016 | </packing> |
4711 | 652 | <widget class="GtkButton" id="cancel"> | 1017 | </child> |
4712 | 653 | <property name="visible">True</property> | 1018 | </widget> |
4713 | 654 | <property name="can_focus">True</property> | 1019 | <packing> |
4714 | 655 | <property name="receives_default">True</property> | 1020 | <property name="padding">16</property> |
4715 | 656 | <property name="response_id">0</property> | 1021 | <property name="expand">True</property> |
4716 | 657 | <signal name="released" handler="on_delete_cancel"/> | 1022 | <property name="fill">True</property> |
4717 | 658 | <child> | 1023 | </packing> |
4718 | 659 | <widget class="GtkHBox" id="hbox1"> | 1024 | </child> |
4719 | 660 | <property name="visible">True</property> | 1025 | </widget> |
4720 | 661 | <child> | 1026 | </child> |
4721 | 662 | <widget class="GtkImage" id="image6"> | 1027 | </widget> |
4722 | 663 | <property name="visible">True</property> | 1028 | |
4723 | 664 | <property name="stock">gtk-cancel</property> | 1029 | <widget class="GtkMenu" id="ProjectContextMenu"> |
4724 | 665 | </widget> | 1030 | <property name="visible">True</property> |
4725 | 666 | </child> | 1031 | |
4726 | 667 | <child> | 1032 | <child> |
4727 | 668 | <widget class="GtkLabel" id="label2"> | 1033 | <widget class="GtkImageMenuItem" id="edit_item"> |
4728 | 669 | <property name="visible">True</property> | 1034 | <property name="visible">True</property> |
4729 | 670 | <property name="xalign">0</property> | 1035 | <property name="label">gtk-edit</property> |
4730 | 671 | <property name="label" translatable="yes">_Keep selected task</property> | 1036 | <property name="use_stock">True</property> |
4731 | 672 | <property name="use_underline">True</property> | 1037 | <signal name="activate" handler="on_edit_item_activate"/> |
4732 | 673 | </widget> | 1038 | </widget> |
4733 | 674 | <packing> | 1039 | </child> |
4734 | 675 | <property name="position">1</property> | 1040 | |
4735 | 676 | </packing> | 1041 | <child> |
4736 | 677 | </child> | 1042 | <widget class="GtkImageMenuItem" id="delete_item"> |
4737 | 678 | </widget> | 1043 | <property name="visible">True</property> |
4738 | 679 | </child> | 1044 | <property name="label">gtk-delete</property> |
4739 | 680 | </widget> | 1045 | <property name="use_stock">True</property> |
4740 | 681 | <packing> | 1046 | <signal name="activate" handler="on_delete_item_activate"/> |
4741 | 682 | <property name="expand">False</property> | 1047 | </widget> |
4742 | 683 | <property name="fill">False</property> | 1048 | </child> |
4743 | 684 | </packing> | 1049 | </widget> |
4744 | 685 | </child> | 1050 | |
4745 | 686 | <child> | 1051 | <widget class="GtkMenu" id="TagContextMenu"> |
4746 | 687 | <widget class="GtkButton" id="delete"> | 1052 | <property name="visible">True</property> |
4747 | 688 | <property name="visible">True</property> | 1053 | |
4748 | 689 | <property name="can_focus">True</property> | 1054 | <child> |
4749 | 690 | <property name="receives_default">True</property> | 1055 | <widget class="GtkImageMenuItem" id="colorchooser"> |
4750 | 691 | <property name="response_id">0</property> | 1056 | <property name="visible">True</property> |
4751 | 692 | <signal name="activate" handler="on_delete_confirm"/> | 1057 | <property name="label">gtk-select-color</property> |
4752 | 693 | <signal name="released" handler="on_delete_confirm"/> | 1058 | <property name="use_stock">True</property> |
4753 | 694 | <child> | 1059 | <signal name="activate" handler="on_colorchooser_activate"/> |
4754 | 695 | <widget class="GtkHBox" id="hbox2"> | 1060 | </widget> |
4755 | 696 | <property name="visible">True</property> | 1061 | </child> |
4756 | 697 | <child> | 1062 | |
4757 | 698 | <widget class="GtkImage" id="image7"> | 1063 | <child> |
4758 | 699 | <property name="visible">True</property> | 1064 | <widget class="GtkCheckMenuItem" id="nonworkviewtag"> |
4759 | 700 | <property name="stock">gtk-delete</property> | 1065 | <property name="visible">True</property> |
4760 | 701 | </widget> | 1066 | <property name="label" translatable="yes">Tag is displayed in the workview</property> |
4761 | 702 | </child> | 1067 | <property name="use_underline">True</property> |
4762 | 703 | <child> | 1068 | <property name="active">True</property> |
4763 | 704 | <widget class="GtkLabel" id="label3"> | 1069 | <signal name="toggled" handler="on_nonworkviewtag_toggled"/> |
4764 | 705 | <property name="visible">True</property> | 1070 | </widget> |
4765 | 706 | <property name="label" translatable="yes">Permanently _remove task</property> | 1071 | </child> |
4766 | 707 | <property name="use_underline">True</property> | 1072 | </widget> |
4767 | 708 | </widget> | 1073 | |
4768 | 709 | <packing> | 1074 | <widget class="GtkColorSelectionDialog" id="ColorChooser"> |
4769 | 710 | <property name="position">1</property> | 1075 | <property name="border_width">5</property> |
4770 | 711 | </packing> | 1076 | <property name="title" translatable="yes">Choose a color</property> |
4771 | 712 | </child> | 1077 | <property name="type">GTK_WINDOW_TOPLEVEL</property> |
4772 | 713 | </widget> | 1078 | <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property> |
4773 | 714 | </child> | 1079 | <property name="modal">False</property> |
4774 | 715 | </widget> | 1080 | <property name="resizable">False</property> |
4775 | 716 | <packing> | 1081 | <property name="destroy_with_parent">False</property> |
4776 | 717 | <property name="expand">False</property> | 1082 | <property name="decorated">True</property> |
4777 | 718 | <property name="fill">False</property> | 1083 | <property name="skip_taskbar_hint">False</property> |
4778 | 719 | <property name="position">1</property> | 1084 | <property name="skip_pager_hint">False</property> |
4779 | 720 | </packing> | 1085 | <property name="type_hint">GDK_WINDOW_TYPE_HINT_MENU</property> |
4780 | 721 | </child> | 1086 | <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> |
4781 | 722 | </widget> | 1087 | <property name="focus_on_map">True</property> |
4782 | 723 | <packing> | 1088 | <property name="urgency_hint">False</property> |
4783 | 724 | <property name="expand">False</property> | 1089 | <signal name="response" handler="on_color_response"/> |
4784 | 725 | <property name="pack_type">GTK_PACK_END</property> | 1090 | |
4785 | 726 | </packing> | 1091 | <child internal-child="cancel_button"> |
4786 | 727 | </child> | 1092 | <widget class="GtkButton" id="colorsel-cancel_button1"> |
4787 | 728 | </widget> | 1093 | <property name="visible">True</property> |
4788 | 729 | </child> | 1094 | <property name="can_default">True</property> |
4789 | 730 | </widget> | 1095 | <property name="can_focus">True</property> |
4790 | 731 | <widget class="GtkMenu" id="ProjectContextMenu"> | 1096 | <property name="label">gtk-cancel</property> |
4791 | 732 | <property name="visible">True</property> | 1097 | <property name="use_stock">True</property> |
4792 | 733 | <child> | 1098 | <property name="relief">GTK_RELIEF_NORMAL</property> |
4793 | 734 | <widget class="GtkImageMenuItem" id="edit_item"> | 1099 | <property name="focus_on_click">True</property> |
4794 | 735 | <property name="visible">True</property> | 1100 | </widget> |
4795 | 736 | <property name="label">gtk-edit</property> | 1101 | </child> |
4796 | 737 | <property name="use_underline">True</property> | 1102 | |
4797 | 738 | <property name="use_stock">True</property> | 1103 | <child internal-child="ok_button"> |
4798 | 739 | <signal name="activate" handler="on_edit_item_activate"/> | 1104 | <widget class="GtkButton" id="colorsel-ok_button1"> |
4799 | 740 | </widget> | 1105 | <property name="visible">True</property> |
4800 | 741 | </child> | 1106 | <property name="can_default">True</property> |
4801 | 742 | <child> | 1107 | <property name="has_default">True</property> |
4802 | 743 | <widget class="GtkImageMenuItem" id="delete_item"> | 1108 | <property name="can_focus">True</property> |
4803 | 744 | <property name="visible">True</property> | 1109 | <property name="label">gtk-ok</property> |
4804 | 745 | <property name="label">gtk-delete</property> | 1110 | <property name="use_stock">True</property> |
4805 | 746 | <property name="use_underline">True</property> | 1111 | <property name="relief">GTK_RELIEF_NORMAL</property> |
4806 | 747 | <property name="use_stock">True</property> | 1112 | <property name="focus_on_click">True</property> |
4807 | 748 | <signal name="activate" handler="on_delete_item_activate"/> | 1113 | </widget> |
4808 | 749 | </widget> | 1114 | </child> |
4809 | 750 | </child> | 1115 | |
4810 | 751 | </widget> | 1116 | <child internal-child="help_button"> |
4811 | 752 | <widget class="GtkMenu" id="TagContextMenu"> | 1117 | <widget class="GtkButton" id="colorsel-help_button1"> |
4812 | 753 | <property name="visible">True</property> | 1118 | <property name="visible">True</property> |
4813 | 754 | <property name="no_show_all">True</property> | 1119 | <property name="can_default">True</property> |
4814 | 755 | <child> | 1120 | <property name="can_focus">True</property> |
4815 | 756 | <widget class="GtkImageMenuItem" id="colorchooser"> | 1121 | <property name="label">gtk-help</property> |
4816 | 757 | <property name="visible">True</property> | 1122 | <property name="use_stock">True</property> |
4817 | 758 | <property name="label">gtk-select-color</property> | 1123 | <property name="relief">GTK_RELIEF_NORMAL</property> |
4818 | 759 | <property name="use_underline">True</property> | 1124 | <property name="focus_on_click">True</property> |
4819 | 760 | <property name="use_stock">True</property> | 1125 | </widget> |
4820 | 761 | <signal name="activate" handler="on_colorchooser_activate"/> | 1126 | </child> |
4821 | 762 | </widget> | 1127 | |
4822 | 763 | </child> | 1128 | <child internal-child="color_selection"> |
4823 | 764 | <child> | 1129 | <widget class="GtkColorSelection" id="colorsel-color_selection1"> |
4824 | 765 | <widget class="GtkCheckMenuItem" id="nonworkviewtag"> | 1130 | <property name="border_width">5</property> |
4825 | 766 | <property name="visible">True</property> | 1131 | <property name="visible">True</property> |
4826 | 767 | <property name="label" translatable="yes">Tag is displayed in the workview</property> | 1132 | <property name="has_opacity_control">False</property> |
4827 | 768 | <property name="use_underline">True</property> | 1133 | <property name="has_palette">False</property> |
4828 | 769 | <property name="active">True</property> | 1134 | |
4829 | 770 | <signal name="toggled" handler="on_nonworkviewtag_toggled"/> | 1135 | <child> |
4830 | 771 | </widget> | 1136 | <placeholder/> |
4831 | 772 | </child> | 1137 | </child> |
4832 | 773 | </widget> | 1138 | |
4833 | 774 | <widget class="GtkColorSelectionDialog" id="ColorChooser"> | 1139 | <child> |
4834 | 775 | <property name="border_width">5</property> | 1140 | <placeholder/> |
4835 | 776 | <property name="title" translatable="yes">Choose a color</property> | 1141 | </child> |
4836 | 777 | <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property> | 1142 | </widget> |
4837 | 778 | <property name="type_hint">GDK_WINDOW_TYPE_HINT_MENU</property> | 1143 | <packing> |
4838 | 779 | <signal name="response" handler="on_color_response"/> | 1144 | <property name="padding">0</property> |
4839 | 780 | <child internal-child="color_selection"> | 1145 | <property name="expand">True</property> |
4840 | 781 | <widget class="GtkColorSelection" id="colorsel-color_selection1"> | 1146 | <property name="fill">True</property> |
4841 | 782 | <property name="visible">True</property> | 1147 | </packing> |
4842 | 783 | <property name="border_width">5</property> | 1148 | </child> |
4843 | 784 | <property name="current_color">#ffffffffffff</property> | 1149 | </widget> |
4844 | 785 | <child> | 1150 | |
4845 | 786 | <placeholder/> | 1151 | <widget class="GtkAboutDialog" id="aboutdialog1"> |
4846 | 787 | </child> | 1152 | <property name="border_width">5</property> |
4847 | 788 | <child> | 1153 | <property name="destroy_with_parent">False</property> |
4848 | 789 | <placeholder/> | 1154 | <property name="name" translatable="yes">Application Name</property> |
4849 | 790 | </child> | 1155 | <property name="copyright" translatable="yes">Copyrights© 2008, 2009 Lionel Dricot, Bertrand Rousseau</property> |
4850 | 791 | </widget> | 1156 | <property name="comments" translatable="yes"> |
4647 | 792 | </child> | ||
4648 | 793 | <child internal-child="help_button"> | ||
4649 | 794 | <widget class="GtkButton" id="colorsel-help_button1"> | ||
4650 | 795 | <property name="visible">True</property> | ||
4651 | 796 | <property name="can_focus">True</property> | ||
4652 | 797 | <property name="can_default">True</property> | ||
4653 | 798 | <property name="receives_default">True</property> | ||
4654 | 799 | <property name="label">gtk-help</property> | ||
4655 | 800 | <property name="use_stock">True</property> | ||
4656 | 801 | <property name="response_id">0</property> | ||
4657 | 802 | </widget> | ||
4658 | 803 | </child> | ||
4659 | 804 | <child internal-child="cancel_button"> | ||
4660 | 805 | <widget class="GtkButton" id="colorsel-cancel_button1"> | ||
4661 | 806 | <property name="visible">True</property> | ||
4662 | 807 | <property name="can_focus">True</property> | ||
4663 | 808 | <property name="can_default">True</property> | ||
4664 | 809 | <property name="receives_default">True</property> | ||
4665 | 810 | <property name="label">gtk-cancel</property> | ||
4666 | 811 | <property name="use_stock">True</property> | ||
4667 | 812 | <property name="response_id">0</property> | ||
4668 | 813 | </widget> | ||
4669 | 814 | </child> | ||
4670 | 815 | <child internal-child="ok_button"> | ||
4671 | 816 | <widget class="GtkButton" id="colorsel-ok_button1"> | ||
4672 | 817 | <property name="visible">True</property> | ||
4673 | 818 | <property name="can_focus">True</property> | ||
4674 | 819 | <property name="can_default">True</property> | ||
4675 | 820 | <property name="has_default">True</property> | ||
4676 | 821 | <property name="receives_default">True</property> | ||
4677 | 822 | <property name="label">gtk-ok</property> | ||
4678 | 823 | <property name="use_stock">True</property> | ||
4679 | 824 | <property name="response_id">0</property> | ||
4680 | 825 | </widget> | ||
4681 | 826 | </child> | ||
4682 | 827 | </widget> | ||
4683 | 828 | <widget class="GtkAboutDialog" id="aboutdialog1"> | ||
4684 | 829 | <property name="border_width">5</property> | ||
4685 | 830 | <property name="title" translatable="yes">About GTG!</property> | ||
4686 | 831 | <property name="resizable">False</property> | ||
4687 | 832 | <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property> | ||
4688 | 833 | <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> | ||
4689 | 834 | <property name="program_name">Getting Things Gnome!</property> | ||
4690 | 835 | <property name="copyright" translatable="yes">Copyrights© 2008, 2009 Lionel Dricot, Bertrand Rousseau</property> | ||
4691 | 836 | <property name="comments" translatable="yes"> | ||
4851 | 837 | Getting Things Gnome! is an organizer for the GNOME desktop environment.</property> | 1157 | Getting Things Gnome! is an organizer for the GNOME desktop environment.</property> |
4854 | 838 | <property name="website_label" translatable="yes">GTG website</property> | 1158 | <property name="license" translatable="yes">Getting Things Gnome! is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. |
4853 | 839 | <property name="license" translatable="yes">Getting Things Gnome! is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. | ||
4855 | 840 | 1159 | ||
4856 | 841 | Getting Things Gnome! is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. | 1160 | Getting Things Gnome! is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. |
4857 | 842 | 1161 | ||
4858 | 843 | You should have received a copy of the GNU General Public License along with Getting Things Gnome!; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</property> | 1162 | You should have received a copy of the GNU General Public License along with Getting Things Gnome!; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</property> |
4860 | 844 | <property name="authors">Lionel Dricot (ploum@ploum.net), | 1163 | <property name="wrap_license">True</property> |
4861 | 1164 | <property name="website_label" translatable="yes">GTG website</property> | ||
4862 | 1165 | <property name="authors">Lionel Dricot (ploum@ploum.net), | ||
4863 | 845 | Bertrand Rousseau (bertrand.rousseau@gmail.com)</property> | 1166 | Bertrand Rousseau (bertrand.rousseau@gmail.com)</property> |
4864 | 846 | <property name="logo_icon_name">gtg</property> | ||
4865 | 847 | <property name="wrap_license">True</property> | ||
4866 | 848 | <signal name="response" handler="on_about_close"/> | ||
4867 | 849 | <child internal-child="vbox"> | ||
4868 | 850 | <widget class="GtkVBox" id="dialog-vbox2"> | ||
4869 | 851 | <property name="visible">True</property> | ||
4870 | 852 | <property name="spacing">2</property> | ||
4871 | 853 | <child internal-child="action_area"> | ||
4872 | 854 | <widget class="GtkHButtonBox" id="dialog-action_area2"> | ||
4873 | 855 | <property name="visible">True</property> | ||
4874 | 856 | <property name="layout_style">GTK_BUTTONBOX_END</property> | ||
4875 | 857 | </widget> | ||
4876 | 858 | <packing> | ||
4877 | 859 | <property name="expand">False</property> | ||
4878 | 860 | <property name="pack_type">GTK_PACK_END</property> | ||
4879 | 861 | </packing> | ||
4880 | 862 | </child> | ||
4881 | 863 | </widget> | ||
4882 | 864 | </child> | ||
4883 | 865 | </widget> | ||
4884 | 866 | <widget class="GtkMenu" id="TaskContextMenu"> | ||
4885 | 867 | <property name="visible">True</property> | ||
4886 | 868 | <child> | ||
4887 | 869 | <widget class="GtkImageMenuItem" id="tcm_add_subtask"> | ||
4888 | 870 | <property name="visible">True</property> | ||
4889 | 871 | <property name="label">Add a subtask</property> | ||
4890 | 872 | <signal name="activate" handler="on_add_subtask"/> | ||
4891 | 873 | <child internal-child="image"> | ||
4892 | 874 | <widget class="GtkImage" id="menu-item-image5"> | ||
4893 | 875 | <property name="visible">True</property> | ||
4894 | 876 | <property name="pixel_size">16</property> | ||
4895 | 877 | <property name="icon_name">gtg-task-new</property> | ||
4896 | 878 | </widget> | ||
4897 | 879 | </child> | ||
4898 | 880 | </widget> | ||
4899 | 881 | </child> | ||
4900 | 882 | <child> | ||
4901 | 883 | <widget class="GtkImageMenuItem" id="tcm_edit"> | ||
4902 | 884 | <property name="visible">True</property> | ||
4903 | 885 | <property name="label">gtk-edit</property> | ||
4904 | 886 | <property name="use_underline">True</property> | ||
4905 | 887 | <property name="use_stock">True</property> | ||
4906 | 888 | <signal name="activate" handler="on_edit_active_task"/> | ||
4907 | 889 | </widget> | ||
4908 | 890 | </child> | ||
4909 | 891 | <child> | ||
4910 | 892 | <widget class="GtkSeparatorMenuItem" id="separatormenuitem3"> | ||
4911 | 893 | <property name="visible">True</property> | ||
4912 | 894 | </widget> | ||
4913 | 895 | </child> | ||
4914 | 896 | <child> | ||
4915 | 897 | <widget class="GtkImageMenuItem" id="tcm_mark_as_done"> | ||
4916 | 898 | <property name="visible">True</property> | ||
4917 | 899 | <property name="label">Mark as _Done</property> | ||
4918 | 900 | <property name="use_underline">True</property> | ||
4919 | 901 | <signal name="activate" handler="on_mark_as_done"/> | ||
4920 | 902 | <child internal-child="image"> | ||
4921 | 903 | <widget class="GtkImage" id="menu-item-image6"> | ||
4922 | 904 | <property name="visible">True</property> | ||
4923 | 905 | <property name="pixel_size">16</property> | ||
4924 | 906 | <property name="icon_name">gtg-task-done</property> | ||
4925 | 907 | </widget> | ||
4926 | 908 | </child> | ||
4927 | 909 | </widget> | ||
4928 | 910 | </child> | ||
4929 | 911 | <child> | ||
4930 | 912 | <widget class="GtkImageMenuItem" id="tcm_dismiss"> | ||
4931 | 913 | <property name="visible">True</property> | ||
4932 | 914 | <property name="label">D_ismiss</property> | ||
4933 | 915 | <property name="use_underline">True</property> | ||
4934 | 916 | <signal name="activate" handler="on_dismiss_task"/> | ||
4935 | 917 | <child internal-child="image"> | ||
4936 | 918 | <widget class="GtkImage" id="menu-item-image7"> | ||
4937 | 919 | <property name="visible">True</property> | ||
4938 | 920 | <property name="pixel_size">16</property> | ||
4939 | 921 | <property name="icon_name">gtg-task-dismiss</property> | ||
4940 | 922 | </widget> | ||
4941 | 923 | </child> | ||
4942 | 924 | </widget> | ||
4943 | 925 | </child> | ||
4944 | 926 | <child> | ||
4945 | 927 | <widget class="GtkImageMenuItem" id="tcm_delete"> | ||
4946 | 928 | <property name="visible">True</property> | ||
4947 | 929 | <property name="label">gtk-delete</property> | ||
4948 | 930 | <property name="use_underline">True</property> | ||
4949 | 931 | <property name="use_stock">True</property> | ||
4950 | 932 | <signal name="activate" handler="on_delete_task"/> | ||
4951 | 933 | </widget> | ||
4952 | 934 | </child> | ||
4953 | 935 | </widget> | ||
4954 | 936 | <widget class="GtkMenu" id="ClosedTaskContextMenu"> | ||
4955 | 937 | <property name="visible">True</property> | ||
4956 | 938 | <child> | ||
4957 | 939 | <widget class="GtkImageMenuItem" id="ctcm_edit"> | ||
4958 | 940 | <property name="visible">True</property> | ||
4959 | 941 | <property name="label">gtk-edit</property> | ||
4960 | 942 | <property name="use_underline">True</property> | ||
4961 | 943 | <property name="use_stock">True</property> | ||
4962 | 944 | <signal name="activate" handler="on_edit_done_task"/> | ||
4963 | 945 | </widget> | ||
4964 | 946 | </child> | ||
4965 | 947 | <child> | ||
4966 | 948 | <widget class="GtkSeparatorMenuItem" id="separatormenuitem4"> | ||
4967 | 949 | <property name="visible">True</property> | ||
4968 | 950 | </widget> | ||
4969 | 951 | </child> | ||
4970 | 952 | <child> | ||
4971 | 953 | <widget class="GtkImageMenuItem" id="ctcm_mark_as_not_done"> | ||
4972 | 954 | <property name="visible">True</property> | ||
4973 | 955 | <property name="label" translatable="yes">Mark as Not Done</property> | ||
4974 | 956 | <signal name="activate" handler="on_mark_as_done"/> | ||
4975 | 957 | <child internal-child="image"> | ||
4976 | 958 | <widget class="GtkImage" id="menu-item-image8"> | ||
4977 | 959 | <property name="visible">True</property> | ||
4978 | 960 | <property name="pixel_size">16</property> | ||
4979 | 961 | <property name="icon_name">gtg-task-undone</property> | ||
4980 | 962 | </widget> | ||
4981 | 963 | </child> | ||
4982 | 964 | </widget> | ||
4983 | 965 | </child> | ||
4984 | 966 | <child> | ||
4985 | 967 | <widget class="GtkImageMenuItem" id="ctcm_undismiss"> | ||
4986 | 968 | <property name="visible">True</property> | ||
4987 | 969 | <property name="label" translatable="yes">Und_ismiss</property> | ||
4988 | 970 | <property name="use_underline">True</property> | ||
4989 | 971 | <signal name="activate" handler="on_dismiss_task"/> | ||
4990 | 972 | <child internal-child="image"> | ||
4991 | 973 | <widget class="GtkImage" id="menu-item-image9"> | ||
4992 | 974 | <property name="visible">True</property> | ||
4993 | 975 | <property name="pixel_size">16</property> | ||
4994 | 976 | <property name="icon_name">gtg-task-undismiss</property> | ||
4995 | 977 | </widget> | ||
4996 | 978 | </child> | ||
4997 | 979 | </widget> | ||
4998 | 980 | </child> | ||
4999 | 981 | <child> | ||
5000 | 982 | <widget class="GtkImageMenuItem" id="ctcm_delete"> |
The diff has been truncated for viewing.