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_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)
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())
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)
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)