示例#1
0
    def __init__(self):
        TweakModule.__init__(self, "loginsettings.ui")

        log.debug('Start to build "Session Options"')
        self.options_box = ListPack(
            _("Login Options"),
            (
                WidgetFactory.create(
                    "UserCheckButton",
                    user="******",
                    label=_("Disable user list in GDM"),
                    enable_reset=True,
                    key="/apps/gdm/simple-greeter/disable_user_list",
                ),
                WidgetFactory.create(
                    "UserCheckButton",
                    user="******",
                    label=_("Play sound at login"),
                    enable_reset=True,
                    key="/desktop/gnome/sound/event_sounds",
                ),
                WidgetFactory.create(
                    "UserCheckButton",
                    user="******",
                    label=_("Disable showing the restart button"),
                    enable_reset=True,
                    key="/apps/gdm/simple-greeter/disable_restart_buttons",
                ),
            ),
        )
        for item in self.options_box.items:
            log.debug("Set widget %s to sensitive False", item)
            item.set_sensitive(False)
        log.debug('Build "Session Options" finished')

        self.add_start(self.options_box, False, False, 0)

        self.icon_setting = UserGconfSetting("/apps/gdm/simple-greeter/logo_icon_name")
        self.icon_theme_setting = UserGconfSetting("/desktop/gnome/interface/icon_theme")
        self._setup_logo_image()
        self._setup_background_image()
        self.vbox1.unparent()
        self.vbox1.set_sensitive(False)

        box = ListPack(_("Login Theme"), (self.vbox1))
        self.add_start(box, False, False, 0)

        hbox = Gtk.HBox(spacing=12)
        polkit_button = PolkitButton(PK_ACTION_TWEAK)
        polkit_button.connect("authenticated", self.on_polkit_action)
        hbox.pack_end(polkit_button, False, False, 0)
        self.add_start(hbox, False, False, 0)
示例#2
0
 def _setup_background_image(self):
     self.background_setting = UserGconfSetting("/desktop/gnome/background/picture_filename")
     background_path = self.background_setting.get_value(user="******")
     log.debug("Setup the background file: %s" % background_path)
     try:
         pixbuf = GdkPixbuf.Pixbuf.new_from_file(background_path)
         pixbuf = pixbuf.scale_simple(160, 120, GdkPixbuf.InterpType.NEAREST)
         self.background_image.set_from_pixbuf(pixbuf)
     except Exception, e:
         log.error("Loading background failed, message is %s" % e)
示例#3
0
class UserCheckButton(Gtk.CheckButton):
    def __init__(self, user=None, label=None, key=None, default=None,
                 tooltip=None, backend=GConf):
        gobject.GObject.__init__(self, label=label)

        if backend == GConf:
            self.setting = UserGconfSetting(key=key, default=default, type=bool)
        else:
            #TODO Gio
            pass
        self.user = user

        self.set_active(bool(self.setting.get_value(self.user)))
        if tooltip:
            self.set_tooltip_text(tooltip)

        self.connect('toggled', self.button_toggled)

    def button_toggled(self, widget):
        self.setting.set_value(self.user, self.get_active())
示例#4
0
    def __init__(self, user=None, label=None, key=None, default=None,
                 tooltip=None, backend='gconf'):
        GObject.GObject.__init__(self, label=label)

        if backend == 'gconf':
            self._setting = UserGconfSetting(key=key, default=default, type=bool)
        else:
            #TODO 'gsettings'
            pass
        self.user = user

        self.set_active(bool(self._setting.get_value(self.user)))
        if tooltip:
            self.set_tooltip_text(tooltip)

        self.connect('toggled', self.button_toggled)
示例#5
0
class LoginSettings(TweakModule):
    __title__ = _("Login Settings")
    __desc__ = _("Control the appearance and behaviour of your login screen")
    __icon__ = "gdm-setup"
    __category__ = "startup"

    def __init__(self):
        TweakModule.__init__(self, "loginsettings.ui")

        log.debug('Start to build "Session Options"')
        self.options_box = ListPack(
            _("Login Options"),
            (
                WidgetFactory.create(
                    "UserCheckButton",
                    user="******",
                    label=_("Disable user list in GDM"),
                    enable_reset=True,
                    key="/apps/gdm/simple-greeter/disable_user_list",
                ),
                WidgetFactory.create(
                    "UserCheckButton",
                    user="******",
                    label=_("Play sound at login"),
                    enable_reset=True,
                    key="/desktop/gnome/sound/event_sounds",
                ),
                WidgetFactory.create(
                    "UserCheckButton",
                    user="******",
                    label=_("Disable showing the restart button"),
                    enable_reset=True,
                    key="/apps/gdm/simple-greeter/disable_restart_buttons",
                ),
            ),
        )
        for item in self.options_box.items:
            log.debug("Set widget %s to sensitive False", item)
            item.set_sensitive(False)
        log.debug('Build "Session Options" finished')

        self.add_start(self.options_box, False, False, 0)

        self.icon_setting = UserGconfSetting("/apps/gdm/simple-greeter/logo_icon_name")
        self.icon_theme_setting = UserGconfSetting("/desktop/gnome/interface/icon_theme")
        self._setup_logo_image()
        self._setup_background_image()
        self.vbox1.unparent()
        self.vbox1.set_sensitive(False)

        box = ListPack(_("Login Theme"), (self.vbox1))
        self.add_start(box, False, False, 0)

        hbox = Gtk.HBox(spacing=12)
        polkit_button = PolkitButton(PK_ACTION_TWEAK)
        polkit_button.connect("authenticated", self.on_polkit_action)
        hbox.pack_end(polkit_button, False, False, 0)
        self.add_start(hbox, False, False, 0)

    def _setup_logo_image(self):
        icon_name = self.icon_setting.get_value(user="******")
        log.info("Get icon_name from user: gdm, icon name: %s" % icon_name)

        path = os.path.expanduser(
            "~gdm/.icons/%s/apps/64/%s"
            % (self.icon_theme_setting.get_value(user="******"), self.icon_setting.get_value(user="******"))
        )
        EXIST = False
        FORMAT = ""
        if proxy.is_exists(path + ".png"):
            path = path + ".png"
            EXIST = True
            FORMAT = ".png"
        elif proxy.is_exists(path + ".svg"):
            path = path + ".svg"
            EXIST = True
            FORMAT = ".svg"

        if EXIST:
            log.info("The icon path is: %s" % path)
            path = proxy.get_as_tempfile(path, os.getuid())
            log.debug("Custom log is exits, the tempfile is %s" % path)
            if FORMAT == ".svg":
                pixbuf = GdkPixbuf.Pixbuf.new_from_file(path)
                pixbuf = pixbuf.scale_simple(64, 64, GdkPixbuf.InterpType.BILINEAR)
                self.logo_image.set_from_pixbuf(pixbuf)
            else:
                self.logo_image.set_from_file(path)
        else:
            icontheme = Gtk.IconTheme()
            icontheme.set_custom_theme(self.icon_theme_setting.get_value(user="******"))
            try:
                self.logo_image.set_from_pixbuf(icontheme.load_icon(icon_name, 64, 0))
            except:
                pass

    def _setup_background_image(self):
        self.background_setting = UserGconfSetting("/desktop/gnome/background/picture_filename")
        background_path = self.background_setting.get_value(user="******")
        log.debug("Setup the background file: %s" % background_path)
        try:
            pixbuf = GdkPixbuf.Pixbuf.new_from_file(background_path)
            pixbuf = pixbuf.scale_simple(160, 120, GdkPixbuf.InterpType.NEAREST)
            self.background_image.set_from_pixbuf(pixbuf)
        except Exception, e:
            log.error("Loading background failed, message is %s" % e)