Commit 3b9ac7ba authored by Roman Alifanov's avatar Roman Alifanov

widgets: rework reset button in Entry and FileChooser

parent 82901b08
......@@ -5,7 +5,15 @@ from .BaseWidget import BaseWidget
class EntryWidget(BaseWidget):
def create_row(self):
self.row = Adw.EntryRow(title=self.setting.name)
self.row.add_prefix(self.reset_revealer)
if self.setting.default is not None:
self.reset_button = Gtk.Button(
icon_name="edit-undo-symbolic",
valign=Gtk.Align.CENTER,
tooltip_text=_("Restore Default")
)
self.reset_button.add_css_class("flat")
self.reset_button.connect("clicked", self._on_reset_clicked)
self.row.add_prefix(self.reset_button)
self.row.connect("entry-activated", self._on_text_changed)
return self.row
......@@ -30,10 +38,11 @@ class EntryWidget(BaseWidget):
self._update_reset_visibility()
def _update_reset_visibility(self):
current_value = self.row.get_text()
if self.setting.default is None:
return
default_value = str(self.setting.default) if self.setting.default is not None else ""
has_default = self.setting.default is not None
current_value = self.row.get_text()
default_value = str(self.setting.default)
is_default = current_value == default_value
self.reset_revealer.set_reveal_child(not is_default and has_default)
\ No newline at end of file
self.reset_button.set_sensitive(not is_default)
\ No newline at end of file
......@@ -18,9 +18,19 @@ class FileChooser(BaseWidget):
self.select_button.add_css_class("flat")
self.select_button.connect("clicked", self._on_button_clicked)
if self.setting.default is not None:
self.reset_button = Gtk.Button(
icon_name="edit-undo-symbolic",
valign=Gtk.Align.CENTER,
tooltip_text=_("Restore Default")
)
self.reset_button.add_css_class("flat")
self.reset_button.connect("clicked", self._on_reset_clicked)
if not self.multiple_mode and not self.folder_mode:
self.row = Adw.EntryRow(title=self.setting.name)
self.row.add_prefix(self.reset_revealer)
if self.setting.default is not None:
self.row.add_prefix(self.reset_button)
self.row.add_suffix(self.select_button)
self.row.connect("entry-activated", self._on_entry_changed)
else:
......@@ -37,7 +47,8 @@ class FileChooser(BaseWidget):
css_classes=["dim-label"]
)
self.row.add_prefix(self.reset_revealer)
if self.setting.default is not None:
self.row.add_prefix(self.reset_button)
self.row.add_suffix(self.info_label)
self.row.add_suffix(self.select_button)
......@@ -61,10 +72,12 @@ class FileChooser(BaseWidget):
self._update_reset_visibility()
def _update_reset_visibility(self):
if self.setting.default is None:
return
current_value = self.setting._get_backend_value()
default_value = self.setting.default
if isinstance(current_value, str) and current_value.startswith("file://"):
current_value = current_value[7:]
......@@ -76,10 +89,7 @@ class FileChooser(BaseWidget):
default_value = os.path.expanduser(default_value)
default_value = os.path.expandvars(default_value)
self.reset_revealer.set_reveal_child(
current_value != default_value if default_value is not None
else False
)
self.reset_button.set_sensitive(current_value != default_value)
def update_display(self):
current = self.setting._get_backend_value()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment