~jhonnyc/cgmail/jonathanc-branch

« back to all changes in this revision

Viewing changes to src/mainloop.py

  • Committer: Marco Ferragina
  • Date: 2007-05-06 15:51:12 UTC
  • Revision ID: marco.ferragina@gmail.com-20070506155112-874uk2m8blrknyuf
Restructured package source dir. Now is much more organized. Implemented right click menu on account window treeview

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
import gtk
2
 
import thread
3
 
import checker
4
 
import time
5
 
 
6
 
if gtk.pygtk_version < (2, 10, 0):
7
 
        import sys
8
 
        print _("You need pygtk >= 2.10 to run cgmail.")
9
 
        sys.exit(1)
10
 
 
11
 
import dbus
12
 
import dbus.mainloop.glib
13
 
import gobject
14
 
 
15
 
from statusicon import StatusIcon
16
 
from statusawn import StatusAWN
17
 
from gconfhelper import GconfHelper
18
 
 
19
 
from dbusinterface import CgmailDbusService
20
 
 
21
 
 
22
 
class MainLoop:
23
 
        def __init__(self):
24
 
                
25
 
                self.checker = checker.Checker()
26
 
 
27
 
                statusicon = StatusIcon(self.checker, self.stop)
28
 
 
29
 
                self.gconf_helper = GconfHelper()
30
 
 
31
 
                if self.gconf_helper.get_key("awn_enabled") == True:
32
 
                        print "Enabling AWN notifications"
33
 
                        awn_app_name = self.gconf_helper.get_key("awn_application_name")
34
 
                        self.statusawn = StatusAWN(self.checker, awn_app_name)
35
 
                
36
 
                # start dbus service
37
 
                dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
38
 
                session_bus = dbus.SessionBus()
39
 
                name = dbus.service.BusName("org.tuxfamily.cgmail.Service", session_bus)
40
 
                dbus_service = CgmailDbusService(session_bus, '/Object')
41
 
                dbus_service.set_on_exit_cb(self.stop)
42
 
                dbus_service.set_on_refresh_cb(self.force_check)
43
 
 
44
 
                self.must_exit = False
45
 
                try:
46
 
                        self.run()
47
 
                except KeyboardInterrupt:
48
 
                        self.must_exit = True
49
 
        
50
 
        def force_check(self):
51
 
                print "force check"
52
 
                self.checker.check()
53
 
 
54
 
        def stop(self):
55
 
                print "stop called"
56
 
                self.must_exit = True
57
 
 
58
 
        def run(self):
59
 
                stime = 0 
60
 
                sleep_time = self.gconf_helper.get_key("check_interval")
61
 
                while not self.must_exit:
62
 
                        while gtk.events_pending():
63
 
                                gtk.main_iteration()
64
 
                        time.sleep(0.01)
65
 
                        ctime = time.time()
66
 
                        elapsed = ctime - stime
67
 
                        if elapsed > sleep_time:
68
 
                                sleep_time = self.gconf_helper.get_key("check_interval")
69
 
                                stime = ctime
70
 
 
71
 
                                try:
72
 
                                        #thread.start_new_thread(self.checker.check, ())
73
 
                                        self.checker.check()
74
 
                                        #pass
75
 
                                except Exception, e:
76
 
                                        import traceback
77
 
                                        traceback.print_exc()
78
 
                                        print "Warning: ", e
79