mirror of
https://github.com/aclist/dztui.git
synced 2026-08-27 02:07:18 +02:00
feat: popover bubble
This commit is contained in:
parent
66909b668b
commit
ed508c6764
@ -136,6 +136,10 @@ class Emitter(GObject.GObject):
|
||||
def api_change_failed(self) -> None:
|
||||
pass
|
||||
|
||||
@GObject.Signal(flags=GObject.SignalFlags.RUN_LAST, arg_types=())
|
||||
def already_saved_server(self) -> None:
|
||||
pass
|
||||
|
||||
@GObject.Signal(flags=GObject.SignalFlags.RUN_LAST, arg_types=(str,))
|
||||
def keyword_set(self, keyword: str) -> None:
|
||||
pass
|
||||
|
||||
@ -569,6 +569,9 @@ class Controller(GObject.GObject):
|
||||
def get_menu(self) -> "MenuTreeView":
|
||||
return self.mediator.menu
|
||||
|
||||
def is_in_favs(self) -> bool:
|
||||
return self.config_man.is_in_favs()
|
||||
|
||||
def get_config_man(self) -> ConfigManager:
|
||||
return self.config_man
|
||||
|
||||
|
||||
@ -265,6 +265,7 @@ class ServerModelManager:
|
||||
proxy_man.remove_row_from_control(record)
|
||||
else:
|
||||
if config_man.is_in_favs(fqip):
|
||||
self.emitter.emit("already_saved_server")
|
||||
return
|
||||
config_man.add_saved_server(fqip)
|
||||
if proxy_man.has_control_model() is False:
|
||||
|
||||
@ -204,6 +204,7 @@ class AddPanel(Gtk.Frame):
|
||||
self.emitter.connect(
|
||||
"request_ip_entry_focus", lambda _: self.entry.grab_focus()
|
||||
)
|
||||
self.emitter.connect("already_saved_server", self._on_duplicate_server)
|
||||
|
||||
self.grid = Gtk.Grid(margin=10, vexpand=False, column_spacing=15, row_spacing=5)
|
||||
self.grid.attach(self.entry, 0, 0, COLS, ROWS)
|
||||
@ -216,6 +217,21 @@ class AddPanel(Gtk.Frame):
|
||||
|
||||
self.add(self.grid)
|
||||
|
||||
# TODO: dynamic popover text
|
||||
self.pop = Gtk.Popover()
|
||||
self.pop_label = Gtk.Label(
|
||||
label="This address is already in your Saved Servers",
|
||||
margin_start=10,
|
||||
margin_end=10,
|
||||
)
|
||||
self.pop.add(self.pop_label)
|
||||
self.pop.show_all()
|
||||
self.pop.set_margin_start(10)
|
||||
self.pop.set_relative_to(self.entry)
|
||||
|
||||
def _on_duplicate_server(self, emitter: "Emitter") -> None:
|
||||
self.pop.popup()
|
||||
|
||||
def _on_connect_clicked(self, button: Gtk.Button) -> None:
|
||||
addr = self.entry.get_text()
|
||||
self.controller.connect_by_str(addr)
|
||||
@ -226,9 +242,7 @@ class AddPanel(Gtk.Frame):
|
||||
|
||||
def _on_activate(self, entry: Gtk.Entry) -> None:
|
||||
# NOTE: default action is to add a record, not connect
|
||||
if not self.add_server.is_sensitive():
|
||||
return
|
||||
self._add_server()
|
||||
self.add_server.emit("clicked")
|
||||
|
||||
def _on_add_clicked(self, button: Gtk.Button) -> None:
|
||||
self._add_server()
|
||||
|
||||
Loading…
Reference in New Issue
Block a user