Skip to content

Commit

Permalink
ManagerToolbar: Make Search a toggle
Browse files Browse the repository at this point in the history
  • Loading branch information
infirit committed Mar 26, 2023
1 parent c6c8f14 commit 994edb8
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 7 deletions.
38 changes: 32 additions & 6 deletions blueman/gui/manager/ManagerToolbar.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@ def __init__(self, blueman: "Blueman") -> None:
self.blueman.List.connect("adapter-changed", self.on_adapter_changed)
self.blueman.List.connect("adapter-property-changed", self.on_adapter_property_changed)

self.b_search = blueman.builder.get_widget("b_search", Gtk.ToolButton)
self.b_search.connect("clicked", lambda button: blueman.inquiry())
self.b_search = blueman.builder.get_widget("b_search", Gtk.ToggleToolButton)
self.b_search.connect("toggled", self.on_search_toggled)

self.b_bond = blueman.builder.get_widget("b_bond", Gtk.ToolButton)
self.b_bond.connect("clicked", self.on_action, self.blueman.bond)
Expand Down Expand Up @@ -56,14 +56,40 @@ def on_action(self, _button: Gtk.ToolButton, func: Callable[[Device], None]) ->
if device is not None:
func(device)

def on_search_toggled(self, button: Gtk.ToggleToolButton) -> None:
if not self.blueman.List.discovering and button.get_active():
self.blueman.inquiry()
label =_("Searching…")
icon_name = "process-stop-symbolic"
tooltip = _("Click to stop searching")
elif self.blueman.List.discovering:
label = _("Search")
icon_name = "edit-find-symbolic"
tooltip = _("Search for nearby devices")
self.blueman.List.stop_discovery()

button.set_icon_name(icon_name)
button.set_label(label)
button.set_tooltip_text(tooltip)

def on_adapter_property_changed(self, _lst: ManagerDeviceList, _adapter: Adapter,
key_value: Tuple[str, object]) -> None:
key, value = key_value
if key == "Discovering":
if value:
self.b_search.props.sensitive = False
else:
self.b_search.props.sensitive = True
if value and not self.blueman.List.discovering:
# It's not blueman discovering
self.b_search.set_sensitive(False)
elif not value:
self.b_search.set_sensitive(True)

# Update the toggle button
self.b_search.handler_block_by_func(self.on_search_toggled)
if value and not self.b_search.get_active():
self.b_search.set_active(True)
elif not value and self.b_search.get_active():
self.b_search.set_active(False)

self.b_search.handler_unblock_by_func(self.on_search_toggled)

def on_adapter_changed(self, _lst: ManagerDeviceList, adapter_path: Optional[str]) -> None:
logging.debug(f"toolbar adapter {adapter_path}")
Expand Down
2 changes: 1 addition & 1 deletion data/ui/manager-main.ui
Original file line number Diff line number Diff line change
Expand Up @@ -289,7 +289,7 @@
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkToolButton" id="b_search">
<object class="GtkToggleToolButton" id="b_search">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">False</property>
Expand Down

0 comments on commit 994edb8

Please sign in to comment.