~gdesklets-desklet-team/gdesklets/0.36

« back to all changes in this revision

Viewing changes to config/DaemonConfigger.py

  • Committer: Robert Pastierovic
  • Date: 2007-10-07 10:08:42 UTC
  • Revision ID: pastierovic@gmail.com-20071007100842-fdvp2vzmqgh1j87k
merged 0.3x branch and basic documentation and some other changes

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
from StateSaver import DefaultStateSaver
 
2
from ConfigDialog import ConfigDialog
 
3
from main import ICON, VERSION
 
4
from utils.datatypes import *
 
5
import settings
 
6
 
 
7
import getopt
 
8
import sys
 
9
 
 
10
 
 
11
class DaemonConfigger(ConfigDialog):
 
12
    """
 
13
      Configuration Dialog for the daemon.
 
14
    """
 
15
 
 
16
    __ITEMS = (
 
17
      ("title", {"label": _("Editor to view/edit the desklet source code")}),
 
18
      ("uri",   {"label": _("Your favorite editor"),
 
19
                 "bind": "editor"}),
 
20
      ("title", {"label": _("Screen Resolution (DPI)")}),
 
21
      ("dpi",   {"label": "<small>" +
 
22
                          _("Adjust the value above so that the bar will be "
 
23
                            "exactly <b>5 cm</b> or <b>1.97\"</b> wide") +
 
24
                          "</small>",
 
25
                          "bind": "dpi", "value": 96}),
 
26
      ("title", {"label": _("Behavior")}),
 
27
      ("boolean", {"label": _("Show _tray icon (takes effect after restart)"),
 
28
                              "bind": "trayicon"}),
 
29
      ("boolean", {"label": _("Show _notification while loading a desklet"),
 
30
                              "bind": "loadsplash"}),
 
31
      ("keybinding", {"label": _("Key for toggling Float mode:"),
 
32
                      "bind": "float_key"})
 
33
 
 
34
      )
 
35
 
 
36
 
 
37
    def __init__(self, path=""):
 
38
 
 
39
        self.__backend = DefaultStateSaver()
 
40
 
 
41
        ConfigDialog.__init__(self, path)
 
42
 
 
43
        self.set_property("title", _("Configuration"))
 
44
        self.set_banner(ICON, "<big>gDesklets Configuration</big>\n"
 
45
                        "Version %s" % (VERSION,))
 
46
 
 
47
        self._set_setter(self.__setter)
 
48
        self._set_getter(self.__getter)
 
49
        self._set_caller(self.__caller)
 
50
 
 
51
        self.build(self.__ITEMS)
 
52
 
 
53
        self.__load_config()
 
54
        self.__read_cmd_line()
 
55
 
 
56
 
 
57
 
 
58
    def __setter(self, key, value, datatype):
 
59
 
 
60
        if (key == "editor"):
 
61
            settings.editor = value
 
62
 
 
63
        elif (key == "dpi"):
 
64
            settings.dpi = value
 
65
 
 
66
        elif (key == "float_key"):
 
67
            settings.float_key = value
 
68
 
 
69
        elif (key == "loadsplash"):
 
70
            settings.show_load_splash = value
 
71
 
 
72
        elif (key == "trayicon"):
 
73
            settings.show_tray_icon = value
 
74
 
 
75
        self.__backend.set_key(key, value)
 
76
 
 
77
 
 
78
    def __getter(self, key):
 
79
 
 
80
        if (key == "editor"):
 
81
            return settings.editor
 
82
 
 
83
        elif (key == "dpi"):
 
84
            return settings.dpi
 
85
 
 
86
        elif (key == "float_key"):
 
87
            return settings.float_key
 
88
 
 
89
        elif (key == "loadsplash"):
 
90
            return settings.show_load_splash
 
91
 
 
92
        elif (key == "trayicon"):
 
93
            return settings.show_tray_icon
 
94
 
 
95
        else:
 
96
            return "gDesklets killed a kitten!"
 
97
 
 
98
 
 
99
    def __caller(self, *args): pass
 
100
 
 
101
 
 
102
    def __load_config(self):
 
103
 
 
104
        settings.editor = self.__backend.get_key("editor", settings.editor)
 
105
        settings.dpi = self.__backend.get_key("dpi", settings.dpi)
 
106
        settings.float_key = self.__backend.get_key("float_key",
 
107
                                                    settings.float_key)
 
108
        settings.show_load_splash = self.__backend.get_key("loadsplash",
 
109
                                                     settings.show_load_splash)
 
110
        settings.show_tray_icon = self.__backend.get_key("trayicon",
 
111
                                                       settings.show_tray_icon)
 
112
 
 
113
    def __read_cmd_line(self):
 
114
 
 
115
        OPTIONS = ("sm-client-id=", "sm-config-prefix=", "sm-disable",
 
116
                   "no-tray-icon")
 
117
 
 
118
        #
 
119
        # Parses the given list of command line arguments. This is usually
 
120
        # sys.argv[1:].
 
121
        #
 
122
 
 
123
        try:
 
124
            opts, rest = getopt.getopt(sys.argv[1:], "nop:v", OPTIONS)
 
125
        except getopt.GetoptError:
 
126
            return
 
127
 
 
128
        for o, a in opts:
 
129
            if (o == "--no-tray-icon"):
 
130
                settings.show_tray_icon = False
 
131
            elif (o in ("--sm-client-id", "--sm-config-prefix",
 
132
                        "--sm-disable")):
 
133
                pass
 
134