Skip to content

Commit 2bfdef2

Browse files
committed
cs_themes: Frame App and Cinnamon themes, move user themes to the
top. Remove extra padding from Cinnamon and fallback theme thumbnails.
1 parent 59451e9 commit 2bfdef2

File tree

5 files changed

+42
-24
lines changed

5 files changed

+42
-24
lines changed

data/theme/thumbnail.png

-22 Bytes
Loading

files/usr/share/cinnamon/cinnamon-settings/bin/ChooserButtonWidgets.py

Lines changed: 29 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,22 @@
77
gettext.install("cinnamon", "/usr/share/locale")
88

99
class BaseChooserButton(Gtk.Button):
10-
def __init__ (self, has_button_label=False):
10+
def __init__ (self, has_button_label=False, frame=False):
1111
super(BaseChooserButton, self).__init__()
1212
self.has_button_label = has_button_label
13+
self.frame = frame
1314
self.set_valign(Gtk.Align.CENTER)
1415
self.menu = Gtk.Menu()
1516
self.button_box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=2)
1617
self.button_image = Gtk.Image()
17-
self.button_box.add(self.button_image)
18+
19+
if self.frame:
20+
f = Gtk.Frame(valign=Gtk.Align.END, halign=Gtk.Align.CENTER)
21+
f.add(self.button_image)
22+
self.button_box.add(f)
23+
else:
24+
self.button_box.add(self.button_image)
25+
1826
if self.has_button_label:
1927
self.button_label = Gtk.Label()
2028
self.button_box.add(self.button_label)
@@ -58,12 +66,12 @@ def _on_button_clicked(self, widget, event):
5866
self.menu.popup(None, None, self.popup_menu_below_button, self, event.button, event.time)
5967

6068
class PictureChooserButton(BaseChooserButton):
61-
def __init__ (self, num_cols=4, button_picture_size=24, menu_pictures_size=24, has_button_label=False, keep_square=False):
62-
super(PictureChooserButton, self).__init__(has_button_label)
69+
def __init__ (self, num_cols=4, button_picture_width=24, menu_picture_width=24, has_button_label=False, keep_square=False, frame=False):
70+
super(PictureChooserButton, self).__init__(has_button_label, frame)
6371
self.num_cols = num_cols
6472
self.scale = self.get_scale_factor()
65-
self.button_picture_size = button_picture_size
66-
self.menu_pictures_size = menu_pictures_size
73+
self.button_picture_width = button_picture_width
74+
self.menu_picture_width = menu_picture_width
6775
self.keep_square = keep_square
6876
self.row = 0
6977
self.col = 0
@@ -74,9 +82,9 @@ def __init__ (self, num_cols=4, button_picture_size=24, menu_pictures_size=24, h
7482

7583
self.button_image.set_valign(Gtk.Align.CENTER)
7684
if self.keep_square:
77-
self.button_image.set_size_request(button_picture_size / self.scale, button_picture_size / self.scale)
85+
self.button_image.set_size_request(button_picture_width / self.scale, button_picture_width / self.scale)
7886
else:
79-
self.button_image.set_size_request(-1, button_picture_size / self.scale)
87+
self.button_image.set_size_request(button_picture_width / self.scale, -1)
8088

8189
self.connect_after("draw", self.on_draw)
8290

@@ -114,8 +122,8 @@ def reset_loading_progress(self):
114122
self.queue_draw()
115123

116124
def create_scaled_surface(self, path):
117-
w = -1 if not self.keep_square else self.button_picture_size * self.scale
118-
h = self.button_picture_size * self.scale
125+
w = self.button_picture_width * self.scale
126+
h = -1 if not self.keep_square else self.button_picture_width * self.scale
119127

120128
try:
121129
pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_size(path, w, h)
@@ -154,7 +162,7 @@ def clear_menu(self):
154162

155163
def add_picture(self, path, callback, title=None, id=None):
156164
image = Gtk.Image()
157-
image.set_size_request(-1, self.menu_pictures_size / self.scale)
165+
image.set_size_request(self.menu_picture_width / self.scale, -1)
158166

159167
surface = self.create_scaled_surface(path)
160168

@@ -163,16 +171,23 @@ def add_picture(self, path, callback, title=None, id=None):
163171
else:
164172
image.set_from_icon_name("user-generic", Gtk.IconSize.BUTTON)
165173

174+
if self.frame:
175+
frame = Gtk.Frame(halign=Gtk.Align.CENTER, valign=Gtk.Align.CENTER)
176+
frame.add(image)
177+
menu_image = frame
178+
else:
179+
menu_image = image
180+
166181
menuitem = Gtk.MenuItem()
167182
if title is not None:
168-
vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=2)
169-
vbox.add(image)
183+
vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=2, valign=Gtk.Align.END)
184+
vbox.add(menu_image)
170185
label = Gtk.Label()
171186
label.set_text(title)
172187
vbox.add(label)
173188
menuitem.add(vbox)
174189
else:
175-
menuitem.add(image)
190+
menuitem.add(menu_image)
176191
if id is not None:
177192
menuitem.connect('activate', self._on_picture_selected, path, callback, id)
178193
else:

files/usr/share/cinnamon/cinnamon-settings/modules/cs_themes.py

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -190,10 +190,10 @@ def on_module_selected(self):
190190

191191
self.scale = self.window.get_scale_factor()
192192

193-
self.icon_chooser = self.create_button_chooser(self.settings, 'icon-theme', 'icons', 'icons', button_picture_size=ICON_SIZE, menu_pictures_size=ICON_SIZE, num_cols=4)
194-
self.cursor_chooser = self.create_button_chooser(self.settings, 'cursor-theme', 'icons', 'cursors', button_picture_size=32, menu_pictures_size=32, num_cols=4)
195-
self.theme_chooser = self.create_button_chooser(self.settings, 'gtk-theme', 'themes', 'gtk-3.0', button_picture_size=35, menu_pictures_size=35, num_cols=4)
196-
self.cinnamon_chooser = self.create_button_chooser(self.cinnamon_settings, 'name', 'themes', 'cinnamon', button_picture_size=60, menu_pictures_size=60*self.scale, num_cols=4)
193+
self.icon_chooser = self.create_button_chooser(self.settings, 'icon-theme', 'icons', 'icons', button_picture_width=ICON_SIZE, menu_picture_width=ICON_SIZE, num_cols=4, frame=False)
194+
self.cursor_chooser = self.create_button_chooser(self.settings, 'cursor-theme', 'icons', 'cursors', button_picture_width=32, menu_picture_width=32, num_cols=4, frame=False)
195+
self.theme_chooser = self.create_button_chooser(self.settings, 'gtk-theme', 'themes', 'gtk-3.0', button_picture_width=125, menu_picture_width=125, num_cols=4, frame=True)
196+
self.cinnamon_chooser = self.create_button_chooser(self.cinnamon_settings, 'name', 'themes', 'cinnamon', button_picture_width=125, menu_picture_width=125*self.scale, num_cols=4, frame=True)
197197

198198
selected_meta_theme = None
199199

@@ -700,6 +700,9 @@ def refresh_chooser(self, chooser, path_suffix, themes, callback):
700700
else:
701701
if path_suffix == "cinnamon":
702702
chooser.add_picture("/usr/share/cinnamon/theme/thumbnail.png", callback, title="cinnamon", id="cinnamon")
703+
if path_suffix in ["gtk-3.0", "cinnamon"]:
704+
themes = sorted(themes, key=lambda t: (not t[1].startswith(GLib.get_home_dir())))
705+
703706
for theme in themes:
704707
theme_name = theme[0]
705708
theme_path = theme[1]
@@ -740,19 +743,19 @@ def make_group(self, group_label, widget, add_widget_to_size_group=True):
740743

741744
return box
742745

743-
def create_button_chooser(self, settings, key, path_prefix, path_suffix, button_picture_size, menu_pictures_size, num_cols):
744-
chooser = PictureChooserButton(num_cols=num_cols, button_picture_size=button_picture_size, menu_pictures_size=menu_pictures_size, has_button_label=True)
746+
def create_button_chooser(self, settings, key, path_prefix, path_suffix, button_picture_width, menu_picture_width, num_cols, frame):
747+
chooser = PictureChooserButton(num_cols=num_cols, button_picture_width=button_picture_width, menu_picture_width=menu_picture_width, has_button_label=True, frame=frame)
745748
theme = settings.get_string(key)
746-
self.set_button_chooser(chooser, theme, path_prefix, path_suffix, button_picture_size)
749+
self.set_button_chooser(chooser, theme, path_prefix, path_suffix, button_picture_width)
747750
return chooser
748751

749-
def set_button_chooser(self, chooser, theme, path_prefix, path_suffix, button_picture_size):
752+
def set_button_chooser(self, chooser, theme, path_prefix, path_suffix, button_picture_width):
750753
self.set_button_chooser_text(chooser, theme)
751754
if path_suffix == "cinnamon" and theme == "cinnamon":
752755
chooser.set_picture_from_file("/usr/share/cinnamon/theme/thumbnail.png")
753756
elif path_suffix == "icons":
754757
current_theme = Gtk.IconTheme.get_default()
755-
folder = current_theme.lookup_icon_for_scale("folder", button_picture_size, self.window.get_scale_factor(), 0)
758+
folder = current_theme.lookup_icon_for_scale("folder", button_picture_width, self.window.get_scale_factor(), 0)
756759
if folder is not None:
757760
path = folder.get_filename()
758761
chooser.set_picture_from_file(path)

files/usr/share/cinnamon/cinnamon-settings/modules/cs_user.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ def on_module_selected(self):
5353

5454
self.scale = self.window.get_scale_factor()
5555

56-
self.face_button = PictureChooserButton(num_cols=4, button_picture_size=64, menu_pictures_size=64*self.scale, keep_square=True)
56+
self.face_button = PictureChooserButton(num_cols=4, button_picture_width=64, menu_picture_width=64*self.scale, keep_square=True)
5757
self.face_button.set_alignment(0.0, 0.5)
5858
self.face_button.set_tooltip_text(_("Click to change your picture"))
5959

-4.68 KB
Loading

0 commit comments

Comments
 (0)