from StateSaver import DefaultStateSaver
from ConfigDialog import ConfigDialog
from main import ICON, VERSION
from utils.datatypes import *
import settings
import getopt
import sys
class DaemonConfigger(ConfigDialog):
"""
Configuration Dialog for the daemon.
"""
__ITEMS = (
("title", {"label": _("Editor to view/edit the desklet source code")}),
("uri", {"label": _("Your favorite editor"),
"bind": "editor"}),
("title", {"label": _("XComposite support (requires composition manager)" +
"\n " +
_("this does not work with GTK 2.8 or higher for "
"technical reasons") + "")}),
("boolean", {"label": _("Translucency (takes effect after restarting a display)"),
"bind": "translucency"}),
("title", {"label": _("Screen Resolution (DPI)")}),
("dpi", {"label": "" +
_("Adjust the value above so that the bar will be "
"exactly 5 cm or 1.97\" wide") +
"",
"bind": "dpi", "value": 96}),
("title", {"label": _("Behavior")}),
("boolean", {"label": _("Show _tray icon (takes effect after restart)"),
"bind": "trayicon"}),
("boolean", {"label": _("Show _notification while loading a desklet"),
"bind": "loadsplash"}),
("keybinding", {"label": _("Key for toggling Float mode:"),
"bind": "float_key"})
)
def __init__(self):
self.__backend = DefaultStateSaver()
ConfigDialog.__init__(self)
self.set_property("title", _("Configuration"))
self.set_banner(ICON, "gDesklets Configuration\n"
"Version %s" % (VERSION,))
self._set_setter(self.__setter)
self._set_getter(self.__getter)
self._set_caller(self.__caller)
self.build(self.__ITEMS)
self.__load_config()
self.__read_cmd_line()
def __setter(self, key, value, datatype):
if (key == "editor"):
settings.editor = value
elif (key == "dpi"):
settings.dpi = value
elif (key == "float_key"):
settings.float_key = value
elif (key == "translucency"):
settings.translucent = value
elif (key == "loadsplash"):
settings.show_load_splash = value
elif (key == "trayicon"):
settings.show_tray_icon = value
self.__backend.set_key(key, value)
def __getter(self, key):
if (key == "editor"):
return settings.editor
elif (key == "dpi"):
return settings.dpi
elif (key == "float_key"):
return settings.float_key
elif (key == "translucency"):
return settings.translucent
elif (key == "loadsplash"):
return settings.show_load_splash
elif (key == "trayicon"):
return settings.show_tray_icon
else:
return "gDesklets killed a kitten!"
def __caller(self, *args): pass
def __load_config(self):
settings.editor = self.__backend.get_key("editor", settings.editor)
settings.dpi = self.__backend.get_key("dpi", settings.dpi)
settings.float_key = self.__backend.get_key("float_key",
settings.float_key)
settings.translucent = self.__backend.get_key("translucency",
settings.translucent)
settings.show_load_splash = self.__backend.get_key("loadsplash",
settings.show_load_splash)
settings.show_tray_icon = self.__backend.get_key("trayicon",
settings.show_tray_icon)
def __read_cmd_line(self):
OPTIONS = ("sm-client-id=", "sm-config-prefix=", "sm-disable",
"no-tray-icon", "translucent")
#
# Parses the given list of command line arguments. This is usually
# sys.argv[1:].
#
try:
opts, rest = getopt.getopt(sys.argv[1:], "nop:v", OPTIONS)
except getopt.GetoptError:
return
for o, a in opts:
if (o == "--translucent"):
settings.translucent = True
elif (o == "--no-tray-icon"):
settings.show_tray_icon = False
elif (o in ("--sm-client-id", "--sm-config-prefix",
"--sm-disable")):
pass
#end for