예제 #1
0
 def on_fix_theme_btn_taggled(self, widget):
     if widget.get_active():
         proxy.link_file(os.path.expanduser('~/.themes'), self.ROOT_THEMES)
         proxy.link_file(os.path.expanduser('~/.icons'), self.ROOT_ICONS)
     else:
         proxy.unlink_file(self.ROOT_THEMES)
         proxy.unlink_file(self.ROOT_ICONS)
         if proxy.is_exists(self.ROOT_THEMES) and proxy.is_exists(self.ROOT_ICONS):
             widget.set_active(True)
예제 #2
0
    def __init__(self):
        TweakModule.__init__(self)

        self.fix_theme_button = Gtk.CheckButton(_('Fix the appearance of themes when granted root privileges'))
        if proxy.is_exists(self.ROOT_THEMES) and proxy.is_exists(self.ROOT_ICONS):
            self.fix_theme_button.set_active(True)

        self.fix_theme_button.connect('toggled', self.on_fix_theme_btn_taggled)
        self.fix_theme_button.set_sensitive(False)
        box = ListPack(_('Miscellaneous Options'), (self.fix_theme_button,))
        self.add_start(box, False, False, 0)

        hbox = Gtk.HBox(spacing=12)
        self.add_end(hbox, False ,False, 0)

        un_lock = PolkitButton(PK_ACTION_TWEAK)
        un_lock.connect('authenticated', self.on_polkit_action)
        hbox.pack_end(un_lock, False, False, 0)
예제 #3
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
예제 #4
0
    def on_logo_button_clicked(self, widget):
        dialog = Gtk.FileChooserDialog(
            _("Choose a new logo image"),
            action=Gtk.FileChooserAction.OPEN,
            buttons=(
                Gtk.STOCK_REVERT_TO_SAVED,
                Gtk.ResponseType.DELETE_EVENT,
                Gtk.STOCK_CANCEL,
                Gtk.ResponseType.CANCEL,
                Gtk.STOCK_OPEN,
                Gtk.ResponseType.ACCEPT,
            ),
        )
        filter = Gtk.FileFilter()
        filter.set_name(_("PNG images with 64x64 size or SVG images"))
        filter.add_pattern("*.png")
        filter.add_pattern("*.svg")
        dialog.set_current_folder(os.path.expanduser("~"))
        dialog.add_filter(filter)
        self._set_preview_widget_for_dialog(dialog)

        dest = os.path.expanduser(
            "~gdm/.icons/%s/apps/64/%s"
            % (self.icon_theme_setting.get_value(user="******"), self.icon_setting.get_value(user="******"))
        )

        revert_button = dialog.get_action_area().get_children()[-1]

        HAVE_ICON = proxy.is_exists(dest + ".png") or proxy.is_exists(dest + ".svg")

        if not HAVE_ICON:
            revert_button.set_sensitive(False)

        filename = ""
        response = dialog.run()

        if response == Gtk.ResponseType.ACCEPT:
            filename = dialog.get_filename()
            dialog.destroy()

            if filename:
                ext = os.path.splitext(filename)[1]
                pixbuf = GdkPixbuf.Pixbuf.new_from_file(filename)
                w, h = pixbuf.get_width(), pixbuf.get_height()

                if ext == ".png" and (w != 64 or h != 64):
                    ErrorDialog(_("This image size isn't suitable for the logo.\nIt should be 64x64.")).launch()
                    return
                else:
                    dest = dest + ext
                    log.debug("Copy %s to %s" % (filename, dest))
                    proxy.set_login_logo(filename, dest)

                    if ext == ".svg":
                        pixbuf = pixbuf.scale_simple(64, 64, GdkPixbuf.InterpType.BILINEAR)

                    self.logo_image.set_from_pixbuf(GdkPixbuf.Pixbuf.new_from_file(filename))
        elif response == Gtk.ResponseType.DELETE_EVENT:
            dialog.destroy()
            proxy.unset_login_logo(dest)
            self._setup_logo_image()
        else:
            dialog.destroy()
            return
예제 #5
0
 def set_fix_theme_button_status(self):
     if proxy.is_exists(self.ROOT_THEMES) and proxy.is_exists(
             self.ROOT_ICONS):
         self.fix_theme_button.set_active(True)
     else:
         self.fix_theme_button.set_active(False)
예제 #6
0
 def set_fix_theme_button_status(self):
     if proxy.is_exists(self.ROOT_THEMES) and proxy.is_exists(self.ROOT_ICONS):
         self.fix_theme_button.set_active(True)
     else:
         self.fix_theme_button.set_active(False)