mirror of
https://github.com/aclist/dztui.git
synced 2026-10-30 22:52:42 +01:00
feat: popover bubble
This commit is contained in:
1 parent
66909b668b
commit
ed508c6764
4 files changed
+25
-3
No files matched your search
@@ -136,6 +136,10 @@ class Emitter(GObject.GObject):
|
|||||||
def api_change_failed(self) -> None:
|
def api_change_failed(self) -> None:
|
||||||
pass
|
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,))
|
@GObject.Signal(flags=GObject.SignalFlags.RUN_LAST, arg_types=(str,))
|
||||||
def keyword_set(self, keyword: str) -> None:
|
def keyword_set(self, keyword: str) -> None:
|
||||||
pass
|
pass
|
||||||
|
|||||||
@@ -569,6 +569,9 @@ class Controller(GObject.GObject):
|
|||||||
def get_menu(self) -> "MenuTreeView":
|
def get_menu(self) -> "MenuTreeView":
|
||||||
return self.mediator.menu
|
return self.mediator.menu
|
||||||
|
|
||||||
|
def is_in_favs(self) -> bool:
|
||||||
|
return self.config_man.is_in_favs()
|
||||||
|
|
||||||
def get_config_man(self) -> ConfigManager:
|
def get_config_man(self) -> ConfigManager:
|
||||||
return self.config_man
|
return self.config_man
|
||||||
|
|
||||||
|
|||||||
@@ -265,6 +265,7 @@ class ServerModelManager:
|
|||||||
proxy_man.remove_row_from_control(record)
|
proxy_man.remove_row_from_control(record)
|
||||||
else:
|
else:
|
||||||
if config_man.is_in_favs(fqip):
|
if config_man.is_in_favs(fqip):
|
||||||
|
self.emitter.emit("already_saved_server")
|
||||||
return
|
return
|
||||||
config_man.add_saved_server(fqip)
|
config_man.add_saved_server(fqip)
|
||||||
if proxy_man.has_control_model() is False:
|
if proxy_man.has_control_model() is False:
|
||||||
|
|||||||
@@ -204,6 +204,7 @@ class AddPanel(Gtk.Frame):
|
|||||||
self.emitter.connect(
|
self.emitter.connect(
|
||||||
"request_ip_entry_focus", lambda _: self.entry.grab_focus()
|
"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 = Gtk.Grid(margin=10, vexpand=False, column_spacing=15, row_spacing=5)
|
||||||
self.grid.attach(self.entry, 0, 0, COLS, ROWS)
|
self.grid.attach(self.entry, 0, 0, COLS, ROWS)
|
||||||
@@ -216,6 +217,21 @@ class AddPanel(Gtk.Frame):
|
|||||||
|
|
||||||
self.add(self.grid)
|
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:
|
def _on_connect_clicked(self, button: Gtk.Button) -> None:
|
||||||
addr = self.entry.get_text()
|
addr = self.entry.get_text()
|
||||||
self.controller.connect_by_str(addr)
|
self.controller.connect_by_str(addr)
|
||||||
@@ -226,9 +242,7 @@ class AddPanel(Gtk.Frame):
|
|||||||
|
|
||||||
def _on_activate(self, entry: Gtk.Entry) -> None:
|
def _on_activate(self, entry: Gtk.Entry) -> None:
|
||||||
# NOTE: default action is to add a record, not connect
|
# NOTE: default action is to add a record, not connect
|
||||||
if not self.add_server.is_sensitive():
|
self.add_server.emit("clicked")
|
||||||
return
|
|
||||||
self._add_server()
|
|
||||||
|
|
||||||
def _on_add_clicked(self, button: Gtk.Button) -> None:
|
def _on_add_clicked(self, button: Gtk.Button) -> None:
|
||||||
self._add_server()
|
self._add_server()
|
||||||
|
|||||||
Reference in new issue
Block a user