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