mirror of
https://github.com/aclist/dztui.git
synced 2026-11-02 08:02:44 +01:00
feat: dynamic port validation
This commit is contained in:
1 parent
b119569cf5
commit
fdb6b342f7
6 files changed
+153
-149
No files matched your search
@@ -1,27 +1,23 @@
|
||||
from typing import Literal, TYPE_CHECKING
|
||||
|
||||
import gi # noqa E402
|
||||
gi.require_version("Gtk", "3.0")
|
||||
from gi.repository import Gtk, Gdk, GLib
|
||||
|
||||
from dzgui.const.enum import Preferences
|
||||
from dzgui.views.components.buttonbox import ButtonBox
|
||||
from dzgui.views.components.filter_panel import FilterPanel
|
||||
from dzgui.views.components.mod_panel import ModSelectionPanel
|
||||
from dzgui.views.components.buttons import RefreshButton, KeysButton
|
||||
from dzgui.const.constants import NO_EXPAND, NO_FILL, EXPAND, FILL, INPUT_KEYBOARD, NO_PADDING
|
||||
from dzgui.const.constants import NO_EXPAND, NO_FILL, FILL, NO_PADDING
|
||||
from dzgui.util.strings import atomic_buttons
|
||||
|
||||
import gi
|
||||
gi.require_version("Gtk", "3.0")
|
||||
from gi.repository import Gtk, GLib # noqa E402
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from GLib import SOURCE_REMOVE
|
||||
|
||||
# TODO: refactor depends on ServerTreeView
|
||||
class RightPanel(Gtk.Box):
|
||||
def __init__(self, controller):
|
||||
super().__init__(spacing=6, orientation=Gtk.Orientation.VERTICAL)
|
||||
|
||||
self.time = 30
|
||||
|
||||
self.controller = controller
|
||||
self.controller.register_widget("right_panel", self)
|
||||
|
||||
@@ -29,15 +25,8 @@ class RightPanel(Gtk.Box):
|
||||
self.filters_vbox = FilterPanel(controller)
|
||||
self.sel_panel = ModSelectionPanel(controller)
|
||||
|
||||
self.refresh_button = RefreshButton()
|
||||
# TODO: consolidate into class
|
||||
#self.refresh_button.set_tooltip_text(refresh_tooltip)
|
||||
self.refresh_button.set_focus_on_click(False)
|
||||
self.refresh_button.connect("clicked", self._on_refresh_clicked)
|
||||
|
||||
self.keys = KeysButton()
|
||||
self.keys.connect("clicked", self._on_keys_clicked)
|
||||
#self.keys.set_focus_on_click(False)
|
||||
self.refresh_button = RefreshButton(controller)
|
||||
self.keys = KeysButton(controller)
|
||||
|
||||
for el in self.button_vbox, self.keys, self.filters_vbox, self.refresh_button:
|
||||
self.pack_start(el, NO_EXPAND, FILL, NO_PADDING)
|
||||
@@ -48,29 +37,11 @@ class RightPanel(Gtk.Box):
|
||||
def reinit_maps(self, rows: list) -> None:
|
||||
self.controller.reinit_map_store()
|
||||
# TODO: communicate with controller
|
||||
#controller.clear_map_store()
|
||||
#self.controller.clear_map_store()
|
||||
#map_store.append(["All maps"])
|
||||
self.selected = "All maps"
|
||||
self.filters_vbox.set_unique_maps(rows)
|
||||
|
||||
def decrement(self) -> "SOURCE_REMOVE" | Literal[True]:
|
||||
self.time -= 1
|
||||
if self.time == 0:
|
||||
self.time = 30
|
||||
self.refresh_button.set_label(refresh)
|
||||
self.refresh_button.set_sensitive(True)
|
||||
return GLib.SOURCE_REMOVE
|
||||
# TODO: abstract this formatting logic
|
||||
self.refresh_button.set_label(f"{atomic_buttons.refresh} ({str(self.time)})")
|
||||
return True
|
||||
|
||||
def _on_refresh_clicked(self, button: RefreshButton) -> None:
|
||||
# TODO: could be internal to refresh button class
|
||||
self.refresh_button.set_sensitive(False)
|
||||
self.refresh_button.set_label(f"{atomic_buttons.refresh} ({str(self.time)})")
|
||||
GLib.timeout_add_seconds(1, self.decrement)
|
||||
self.controller.refresh_tree()
|
||||
|
||||
# TODO: reference
|
||||
#def _on_ping_clicked(self, button: Gtk.Button) -> None:
|
||||
# block_signals()
|
||||
@@ -103,8 +74,5 @@ class RightPanel(Gtk.Box):
|
||||
# thread = threading.Thread(target=_update_pings, args=())
|
||||
# thread.start()
|
||||
|
||||
def _on_keys_clicked(self, button: Gtk.Button) -> None:
|
||||
self.controller.open_keybindings()
|
||||
|
||||
def focus_button_box(self) -> None:
|
||||
self.button_vbox.buttons[0].grab_focus()
|
||||
Reference in new issue
Block a user