internal cleanups in SettingsDialog

This commit is contained in:
Martin Wagner 2021-04-23 15:30:08 +02:00
parent 3caac937b7
commit 4d1b20f7a5

View File

@ -930,7 +930,6 @@ class GeneralSettings(Gtk.Box):
def __init__(self, settings):
super().__init__(orientation=Gtk.Orientation.VERTICAL, spacing=6, border_width=18)
self._settings=settings
self._settings_handlers=[]
# int settings
int_settings={}
@ -943,10 +942,7 @@ class GeneralSettings(Gtk.Box):
for label, (vmin, vmax, step), key in int_settings_data:
int_settings[key]=(Gtk.Label(label=label, xalign=0), Gtk.SpinButton.new_with_range(vmin, vmax, step))
int_settings[key][1].set_value(self._settings.get_int(key))
int_settings[key][1].connect("value-changed", self._on_int_changed, key)
self._settings_handlers.append(
self._settings.connect("changed::{}".format(key), self._on_int_settings_changed, int_settings[key][1])
)
int_settings[key][1].connect("value-changed", lambda widget,key: self._settings.set_int(key, int(widget.get_value())), key)
# check buttons
check_buttons={}
@ -963,21 +959,16 @@ class GeneralSettings(Gtk.Box):
(_("Support “MPRIS”"), "mpris"),
]
for label, key in check_buttons_data:
check_buttons[key]=Gtk.CheckButton(label=label)
check_buttons[key]=Gtk.CheckButton(label=label, margin_start=12)
check_buttons[key].set_active(self._settings.get_boolean(key))
check_buttons[key].set_margin_start(12)
check_buttons[key].connect("toggled", self._on_toggled, key)
self._settings_handlers.append(
self._settings.connect("changed::{}".format(key), self._on_check_settings_changed, check_buttons[key])
)
check_buttons[key].connect("toggled", lambda widget,key: self._settings.set_boolean(key, widget.get_active()), key)
# headings
view_heading=Gtk.Label(label=_("<b>View</b>"), use_markup=True, xalign=0)
behavior_heading=Gtk.Label(label=_("<b>Behavior</b>"), use_markup=True, xalign=0)
# view grid
view_grid=Gtk.Grid(row_spacing=6, column_spacing=12)
view_grid.set_margin_start(12)
view_grid=Gtk.Grid(row_spacing=6, column_spacing=12, margin_start=12)
view_grid.add(int_settings["track-cover"][0])
view_grid.attach_next_to(int_settings["album-cover"][0], int_settings["track-cover"][0], Gtk.PositionType.BOTTOM, 1, 1)
view_grid.attach_next_to(int_settings["icon-size"][0], int_settings["album-cover"][0], Gtk.PositionType.BOTTOM, 1, 1)
@ -987,9 +978,6 @@ class GeneralSettings(Gtk.Box):
view_grid.attach_next_to(int_settings["icon-size"][1], int_settings["icon-size"][0], Gtk.PositionType.RIGHT, 1, 1)
view_grid.attach_next_to(int_settings["icon-size-sec"][1], int_settings["icon-size-sec"][0], Gtk.PositionType.RIGHT, 1, 1)
# connect
self.connect("destroy", self._remove_handlers)
# packing
csd_box=Gtk.Box(spacing=12)
csd_box.pack_start(check_buttons["use-csd"], False, False, 0)
@ -1011,22 +999,6 @@ class GeneralSettings(Gtk.Box):
self.pack_start(check_buttons["force-mode"], False, False, 0)
self.pack_start(check_buttons["stop-on-quit"], False, False, 0)
def _remove_handlers(self, *args):
for handler in self._settings_handlers:
self._settings.disconnect(handler)
def _on_int_settings_changed(self, settings, key, entry):
entry.set_value(settings.get_int(key))
def _on_check_settings_changed(self, settings, key, button):
button.set_active(settings.get_boolean(key))
def _on_int_changed(self, widget, key):
self._settings.set_int(key, int(widget.get_value()))
def _on_toggled(self, widget, key):
self._settings.set_boolean(key, widget.get_active())
class ProfileSettings(Gtk.Grid):
def __init__(self, parent, client, settings):
super().__init__(row_spacing=6, column_spacing=12, border_width=18)
@ -1077,9 +1049,6 @@ class ProfileSettings(Gtk.Grid):
self.entry_changed_handlers.append((self._path_entry, self._path_entry.connect("changed", self._on_path_entry_changed)))
self.entry_changed_handlers.append((self._regex_entry, self._regex_entry.connect("changed", self._on_regex_entry_changed)))
self._profiles_combo_reload()
self._profiles_combo.set_active(self._settings.get_int("active-profile"))
# packing
self.add(profiles_label)
self.attach_next_to(host_label, profiles_label, Gtk.PositionType.BOTTOM, 1, 1)
@ -1095,6 +1064,9 @@ class ProfileSettings(Gtk.Grid):
connect_button.set_margin_top(12)
self.attach_next_to(connect_button, self._regex_entry, Gtk.PositionType.BOTTOM, 2, 1)
self._profiles_combo_reload()
self._profiles_combo.set_active(self._settings.get_int("active-profile"))
def _block_entry_changed_handlers(self, *args):
for obj, handler in self.entry_changed_handlers:
obj.handler_block(handler)
@ -1236,10 +1208,6 @@ class PlaylistSettings(Gtk.Box):
self._up_button.connect("clicked", self._on_up_button_clicked)
self._down_button.connect("clicked", self._on_down_button_clicked)
self._selection.connect("changed", self._set_button_sensitivity)
self._settings_handlers=[]
self._settings_handlers.append(self._settings.connect("changed::column-visibilities", self._on_visibilities_changed))
self._settings_handlers.append(self._settings.connect("changed::column-permutation", self._on_permutation_changed))
self.connect("destroy", self._remove_handlers)
# packing
self.pack_start(label, False, False, 0)
@ -1273,10 +1241,6 @@ class PlaylistSettings(Gtk.Box):
self._up_button.set_sensitive(True)
self._down_button.set_sensitive(True)
def _remove_handlers(self, *args):
for handler in self._settings_handlers:
self._settings.disconnect(handler)
def _on_cell_toggled(self, widget, path):
self._store[path][0]=not self._store[path][0]
self._settings.array_modify("ab", "column-visibilities", self._store[path][2], self._store[path][0])
@ -1298,24 +1262,6 @@ class PlaylistSettings(Gtk.Box):
self._set_button_sensitivity()
self._save_permutation()
def _on_visibilities_changed(self, *args):
visibilities=self._settings.get_value("column-visibilities").unpack()
for i, actual_index in enumerate(self._settings.get_value("column-permutation")):
self._store[i][0]=visibilities[actual_index]
def _on_permutation_changed(self, *args):
equal=True
perm=self._settings.get_value("column-permutation")
for i, e in enumerate(self._store):
if e[2] != perm[i]:
equal=False
break
if not equal:
self._store.handler_block(self._row_deleted)
self._store.clear()
self._fill()
self._store.handler_unblock(self._row_deleted)
class SettingsDialog(Gtk.Dialog):
def __init__(self, parent, client, settings):
use_csd=settings.get_boolean("use-csd")