5
from gettext import bindtextdomain, textdomain
10
import mayanna_globals
11
from mayanna_bar import MayannaBarDock
12
from mayanna_applications import ApplicationsTopic
13
from mayanna_computer import ComputerTopic
14
from mayanna_library import DocumentsTopic
15
from mayanna_people import PeopleTopic
16
from mayanna_util import gconf_bridge
26
def _load_mayanna_bar(topics):
27
'''Create a new GimmieBar, and destroy the existing one if it exists.'''
32
swapbar = gconf_bridge.get("swapbar")
33
autohide = gconf_bridge.get("autohide")
34
vertical = gconf_bridge.get("vertical")
36
# Use a single bottom bar by default.
37
gravity = (vertical and gtk.gdk.GRAVITY_WEST) or gtk.gdk.GRAVITY_SOUTH
41
mayanna_bar = MayannaBarDock(topics)
46
def _setup_session_manager():
47
'''Enables session manager auto-restart on login, and after a crash.'''
48
session_mgr = gnome.ui.master_client()
51
session_mgr.set_restart_command(argv)
53
# Fedora systems have a broken gnome-python wrapper for this function.
54
session_mgr.set_restart_command(len(argv), argv)
55
session_mgr.set_restart_style(gnome.ui.RESTART_IF_RUNNING | gnome.ui.RESTART_IMMEDIATELY)
56
session_mgr.connect("die", lambda x: gtk.main_quit())
59
def _cancel_session_manager():
60
'''Resets session manager to avoid immediate restart.'''
61
session_mgr = gnome.ui.master_client()
62
session_mgr.set_restart_style(gnome.ui.RESTART_IF_RUNNING)
67
bindtextdomain('mayanna', mayanna_globals.localedir)
70
### Uncomment to spew leak debug info
71
#gc.set_debug(gc.DEBUG_LEAK)
73
# Tell gobject/gtk we are threaded
74
gtk.gdk.threads_init()
76
gnome.program_init("mayanna", mayanna_globals.version)
78
_setup_session_manager()
79
signal.signal(signal.SIGTERM, lambda x: _cancel_session_manager()) # Don't restart after kill
82
topics = [ApplicationsTopic(), DocumentsTopic(), PeopleTopic(), ComputerTopic()]
83
load_it = lambda: _load_mayanna_bar(topics)
85
gconf_bridge.connect("changed::swapbar", lambda gb: load_it())
86
gconf_bridge.connect("changed::autohide", lambda gb: load_it())
87
gconf_bridge.connect("changed::vertical", lambda gb: load_it())
91
except (KeyboardInterrupt, SystemExit):
92
# Don't restart if user pressed Ctrl-C, or sys.exit called
93
_cancel_session_manager()
96
if __name__ == "__main__":