1
from shell.Plugin import Plugin
7
# Plugin for switching profiles.
9
class Shell_Profiles(Plugin):
12
self.__is_blocked = False
14
self.__client = self._get_plugin("Core_Client")
16
self.__menu = self._get_plugin("UI_Menu")
17
self.__menu.insert("Slot1", "Profiles")
18
self.__menu.set_item("Profiles", None, _("_Profiles"), None)
19
self.__menu.set_item("Profiles/New", gtk.STOCK_NEW,
20
_("New profile..."), self.__new_profile)
21
self.__menu.set_separator("Profiles/Separator")
22
self.__menu.set_slot("Profiles/Slot")
27
def __build_menu(self):
29
for item, profile in self.__items:
30
self.__menu.remove_item(item)
33
profiles = self.__client.get_profiles()
37
item = "Profiles/" + p
38
self.__menu.insert("Profiles/Slot", p)
39
self.__menu.set_check_item(item, p, self.__switch, p)
40
self.__items.append((item, p))
45
def __set_checks(self):
47
self.__is_blocked = True
49
profile = self.__client.get_profile()
51
for item, p in self.__items:
52
self.__menu.set_checked(item, (p == profile))
54
self.__is_blocked = False
57
def __switch(self, profile):
59
current_profile = self.__client.get_profile()
61
if (self.__is_blocked or profile == current_profile):
65
self.__client.set_profile(profile)
69
def __new_profile(self):
71
from utils.HIGDialog import HIGDialog
73
dialog = HIGDialog((gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,
74
gtk.STOCK_OK, gtk.RESPONSE_OK),
75
gtk.STOCK_NEW, _("New profile"),
76
_("Enter the name for a new profile"))
78
align = gtk.Alignment(0.0, 0.0, 1.0, 0.0)
79
align.set_property("border-width", 6)
83
def response(dialog, response):
84
if (response == gtk.RESPONSE_OK):
85
self.__create_profile(entry.get_text())
89
dialog.connect("response", response)
90
dialog.vbox.pack_end(align, False, False, 0)
94
def __create_profile(self, profile):
96
self.__switch(profile)
100
def get_class(): return Shell_Profiles