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 ...@@ -5,7 +5,15 @@ from .BaseWidget import BaseWidget
class EntryWidget(BaseWidget): class EntryWidget(BaseWidget):
def create_row(self): def create_row(self):
self.row = Adw.EntryRow(title=self.setting.name) 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) self.row.connect("entry-activated", self._on_text_changed)
return self.row return self.row
...@@ -30,10 +38,11 @@ class EntryWidget(BaseWidget): ...@@ -30,10 +38,11 @@ class EntryWidget(BaseWidget):
self._update_reset_visibility() self._update_reset_visibility()
def _update_reset_visibility(self): 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 "" current_value = self.row.get_text()
has_default = self.setting.default is not None default_value = str(self.setting.default)
is_default = current_value == default_value is_default = current_value == default_value
self.reset_revealer.set_reveal_child(not is_default and has_default) self.reset_button.set_sensitive(not is_default)
\ No newline at end of file \ No newline at end of file
...@@ -18,9 +18,19 @@ class FileChooser(BaseWidget): ...@@ -18,9 +18,19 @@ class FileChooser(BaseWidget):
self.select_button.add_css_class("flat") self.select_button.add_css_class("flat")
self.select_button.connect("clicked", self._on_button_clicked) 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: if not self.multiple_mode and not self.folder_mode:
self.row = Adw.EntryRow(title=self.setting.name) 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.add_suffix(self.select_button)
self.row.connect("entry-activated", self._on_entry_changed) self.row.connect("entry-activated", self._on_entry_changed)
else: else:
...@@ -37,7 +47,8 @@ class FileChooser(BaseWidget): ...@@ -37,7 +47,8 @@ class FileChooser(BaseWidget):
css_classes=["dim-label"] 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.info_label)
self.row.add_suffix(self.select_button) self.row.add_suffix(self.select_button)
...@@ -61,10 +72,12 @@ class FileChooser(BaseWidget): ...@@ -61,10 +72,12 @@ class FileChooser(BaseWidget):
self._update_reset_visibility() self._update_reset_visibility()
def _update_reset_visibility(self): def _update_reset_visibility(self):
if self.setting.default is None:
return
current_value = self.setting._get_backend_value() current_value = self.setting._get_backend_value()
default_value = self.setting.default default_value = self.setting.default
if isinstance(current_value, str) and current_value.startswith("file://"): if isinstance(current_value, str) and current_value.startswith("file://"):
current_value = current_value[7:] current_value = current_value[7:]
...@@ -76,10 +89,7 @@ class FileChooser(BaseWidget): ...@@ -76,10 +89,7 @@ class FileChooser(BaseWidget):
default_value = os.path.expanduser(default_value) default_value = os.path.expanduser(default_value)
default_value = os.path.expandvars(default_value) default_value = os.path.expandvars(default_value)
self.reset_revealer.set_reveal_child( self.reset_button.set_sensitive(current_value != default_value)
current_value != default_value if default_value is not None
else False
)
def update_display(self): def update_display(self):
current = self.setting._get_backend_value() 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