~saurabhanandiit/gtg/exportFixed

« back to all changes in this revision

Viewing changes to GTG/gtk/editor/editor.py

Merge of my work on liblarch newbase and all the backends ported to liblarch
(which mainly means porting the datastore).
One failing test, will check it.

Show diffs side-by-side

added added

removed removed

Lines of Context:
36
36
except: # pylint: disable-msg=W0702
37
37
    raise SystemExit(1)
38
38
 
39
 
from GTG                     import _
40
 
from GTG                     import ngettext
41
 
from GTG                     import PLUGIN_DIR
 
39
from GTG                     import _, ngettext
42
40
from GTG.core                import CoreConfig
43
41
from GTG.gtk.editor          import GnomeConfig
44
42
from GTG.gtk.editor.taskview import TaskView
60
58
                 requester, 
61
59
                 vmanager, 
62
60
                 task, 
63
 
                 plugins,
64
61
                 taskconfig = None,
65
 
                 plugin_apis = None,
66
62
                 thisisnew = False,
67
63
                 clipboard = None) :
68
64
        self.req = requester
69
65
        self.vmanager = vmanager
70
66
        self.config = taskconfig
71
 
        self.p_apis = plugin_apis
72
67
        self.time = None
73
68
        self.clipboard = clipboard
74
69
        self.builder = gtk.Builder() 
172
167
        self.window.connect("destroy", self.destruction)
173
168
        
174
169
        # plugins
175
 
        self.plugins = plugins
176
 
        self.pengine = PluginEngine(PLUGIN_DIR)
177
 
        self.te_plugin_api = PluginAPI(window = self.window,
178
 
                                       config = None,
179
 
                                       data_dir = CoreConfig().get_data_dir(),
180
 
                                       builder = self.builder, 
181
 
                                       requester = self.req,
182
 
                                       tagpopup = None,
183
 
                                       tagview = None,
184
 
                                       task = task, 
185
 
                                       view_manager = None,
186
 
                                       texteditor = self)
187
 
        self.p_apis.append(self.te_plugin_api)
188
 
        self.pengine.onTaskLoad(self.plugins)
 
170
        self.pengine = PluginEngine()
 
171
        self.plugin_api = PluginAPI(self.req, self.vmanager, self)
 
172
        self.pengine.register_api(self.plugin_api)
 
173
        self.pengine.onTaskLoad(self.plugin_api)
189
174
        
190
175
        #Putting the refresh callback at the end make the start a lot faster
191
176
        self.textview.refresh_callback(self.refresh_editor)
356
341
        taglist = self.req.get_used_tags()
357
342
        menu = gtk.Menu()
358
343
        tag_count = 0
359
 
        for t in taglist :
360
 
            if not self.task.has_tags(tag_list=[t]) :
 
344
        for tagname in taglist:
 
345
            tag_object = self.req.get_tag(tagname)
 
346
            if not tag_object.is_special() and \
 
347
               not self.task.has_tags(tag_list=[tagname]):
361
348
                tag_count += 1
362
 
                mi = gtk.MenuItem(label=t, use_underline=False)
363
 
                mi.connect("activate",self.inserttag,t)
 
349
                mi = gtk.MenuItem(label = tagname, use_underline=False)
 
350
                mi.connect("activate", self.inserttag, tagname)
364
351
                mi.show()
365
352
                menu.append(mi)
366
353
        if tag_count > 0 :
394
381
                self.task.set_due_date(datetoset)
395
382
            elif data == "closed" :
396
383
                self.task.set_closed_date(datetoset)
 
384
            #Set the due date to be equal to the start date
 
385
            # when it happens that the start date is later than the due date
 
386
            start_date = self.task.get_start_date()
 
387
            due_date = self.task.get_due_date()
 
388
            if start_date and (start_date > due_date):
 
389
                self.task.set_due_date(self.task.get_start_date())
397
390
        else :
398
391
            #We should write in red in the entry if the date is not valid
399
392
            widget.modify_text(gtk.STATE_NORMAL, gtk.gdk.color_parse("#F00"))
620
613
    #Will be linked to this destruction method that will save the task
621
614
    def destruction(self,a=None) :#pylint: disable-msg=W0613
622
615
        #Save should be also called when buffer is modified
623
 
        self.pengine.onTaskClose(self.plugins, self.te_plugin_api)
624
 
        self.p_apis.remove(self.te_plugin_api)
 
616
        self.pengine.onTaskClose(self.plugin_api)
 
617
        self.pengine.remove_api(self.plugin_api)
625
618
        tid = self.task.get_id()
626
619
        if self.task.is_new():
627
620
            self.req.delete_task(tid)
655
648
            self.cal_widget.disconnect(self.sigid_month)
656
649
            self.sigid_month = None
657
650
 
 
651
    def get_builder(self):
 
652
        return self.builder
 
653
 
 
654
    def get_task(self):
 
655
        return self.task
 
656
 
 
657
    def get_textview(self):
 
658
        return self.textview
 
659
 
 
660
    def get_window(self):
 
661
        return self.window