mirror of
https://github.com/aclist/dztui.git
synced 2026-10-31 15:12:48 +01:00
fix: handle no favorite server
This commit is contained in:
1 parent
8bcb64810d
commit
9c821e62ee
3 files changed
+41
-36
No files matched your search
@@ -98,10 +98,10 @@ class ConfigManager:
|
|||||||
def get_favorites(self) -> list[str]:
|
def get_favorites(self) -> list[str]:
|
||||||
return list(self.lookup(Preferences.IP_LIST))
|
return list(self.lookup(Preferences.IP_LIST))
|
||||||
|
|
||||||
def get_favorite(self) -> tuple[str, str] | tuple[None, None]:
|
def get_favorite(self) -> tuple[str, str] | None:
|
||||||
fav = str(self.lookup(Preferences.FAV_LBL))
|
fav = str(self.lookup(Preferences.FAV_LBL))
|
||||||
if len(fav) < 1:
|
if len(fav) < 1:
|
||||||
return None, None
|
return None
|
||||||
ip = str(self.lookup(Preferences.FAV_SRV))
|
ip = str(self.lookup(Preferences.FAV_SRV))
|
||||||
addr = ip.split(":")
|
addr = ip.split(":")
|
||||||
return fav, f"{addr[0]}:{addr[2]}"
|
return fav, f"{addr[0]}:{addr[2]}"
|
||||||
|
|||||||
@@ -615,3 +615,7 @@ esc_to_return = "Press ESC to return"
|
|||||||
question_to_return = "Press ? to return"
|
question_to_return = "Press ? to return"
|
||||||
|
|
||||||
alert_button_tooltip = "Click to open debug log"
|
alert_button_tooltip = "Click to open debug log"
|
||||||
|
|
||||||
|
address_already_saved = "This address is already in your Saved Servers"
|
||||||
|
stop_scanning = "Stop scanning on first_hit"
|
||||||
|
abort_tooltip = "Unless you have multiple DayZ servers on your LAN,\nleave this checked to get results faster"
|
||||||
@@ -1,7 +1,8 @@
|
|||||||
from typing import TYPE_CHECKING
|
from typing import TYPE_CHECKING
|
||||||
|
|
||||||
|
from dzgui.const.constants import UDP_PORT
|
||||||
from dzgui.model.servers import ServerModelManager
|
from dzgui.model.servers import ServerModelManager
|
||||||
from dzgui.util.strings import connect_panel, fav_panel, lan_panel
|
from dzgui.strings import connect_panel
|
||||||
from dzgui.views.components.buttons import (
|
from dzgui.views.components.buttons import (
|
||||||
AddButton,
|
AddButton,
|
||||||
ClipboardButton,
|
ClipboardButton,
|
||||||
@@ -29,26 +30,24 @@ class LanPanel(Gtk.Frame):
|
|||||||
self.controller = controller
|
self.controller = controller
|
||||||
self.emitter = controller.get_emitter()
|
self.emitter = controller.get_emitter()
|
||||||
|
|
||||||
label = BoldLabel(lan_panel.heading)
|
label = BoldLabel(connect_panel.lan_heading)
|
||||||
self.set_label_widget(label)
|
self.set_label_widget(label)
|
||||||
|
|
||||||
self.default_radio = Gtk.RadioButton.new_with_label(
|
self.default_radio = Gtk.RadioButton.new_with_label(
|
||||||
None, lan_panel.default_button
|
None, connect_panel.lan_default_button
|
||||||
)
|
)
|
||||||
self.custom_radio = Gtk.RadioButton.new_with_label_from_widget(
|
self.custom_radio = Gtk.RadioButton.new_with_label_from_widget(
|
||||||
self.default_radio, lan_panel.custom_button
|
self.default_radio, connect_panel.lan_custom_button
|
||||||
)
|
)
|
||||||
|
|
||||||
self.entry = PortEntry(controller)
|
self.entry = PortEntry(controller)
|
||||||
self.scan = Gtk.Button(label=lan_panel.scan_button)
|
self.scan = Gtk.Button(label=connect_panel.lan_scan_button)
|
||||||
self.scan.connect("clicked", self._on_scan_clicked)
|
self.scan.connect("clicked", self._on_scan_clicked)
|
||||||
|
|
||||||
# TODO: strings
|
# TODO: strings
|
||||||
self.early_abort = Gtk.CheckButton(label="Stop scanning on first hit")
|
self.early_abort = Gtk.CheckButton(label=connect_panel.lan_checkbox)
|
||||||
self.early_abort.set_active(True)
|
self.early_abort.set_active(True)
|
||||||
self.early_abort.set_tooltip_text(
|
self.early_abort.set_tooltip_text(connect_panel.lan_abort_tooltip)
|
||||||
"Unless you have multiple DayZ servers on your LAN,\nleave this checked to get results faster"
|
|
||||||
)
|
|
||||||
|
|
||||||
self.entry.connect("activate", self._on_entry_activated)
|
self.entry.connect("activate", self._on_entry_activated)
|
||||||
self.entry.connect("string_validated", self._on_port_validated)
|
self.entry.connect("string_validated", self._on_port_validated)
|
||||||
@@ -100,7 +99,7 @@ class LanPanel(Gtk.Frame):
|
|||||||
|
|
||||||
def scan_ports(self) -> None:
|
def scan_ports(self) -> None:
|
||||||
if self.default_radio.get_active():
|
if self.default_radio.get_active():
|
||||||
port = 27016
|
port = UDP_PORT
|
||||||
else:
|
else:
|
||||||
port = int(self.entry.get_text())
|
port = int(self.entry.get_text())
|
||||||
abort = self.early_abort.get_active()
|
abort = self.early_abort.get_active()
|
||||||
@@ -125,62 +124,65 @@ class FavPanel(Gtk.Frame):
|
|||||||
def __init__(self, controller: "Controller") -> None:
|
def __init__(self, controller: "Controller") -> None:
|
||||||
super().__init__(margin_top=10, margin_bottom=5)
|
super().__init__(margin_top=10, margin_bottom=5)
|
||||||
|
|
||||||
label = BoldLabel(fav_panel.heading)
|
label = BoldLabel(connect_panel.fav_heading)
|
||||||
self.set_label_widget(label)
|
self.set_label_widget(label)
|
||||||
|
|
||||||
self.controller = controller
|
self.controller = controller
|
||||||
emitter = self.controller.get_emitter()
|
emitter = self.controller.get_emitter()
|
||||||
emitter.connect("fav_server_changed", self._on_fav_server_changed)
|
emitter.connect("fav_server_changed", self._on_fav_server_changed)
|
||||||
|
|
||||||
# TODO: do not return a None, None tuple
|
self.server_name = ""
|
||||||
self.server_name: str
|
self.server_ip = ""
|
||||||
self.server_ip: str
|
|
||||||
|
favorite = self.controller.get_config_man().get_favorite()
|
||||||
|
if favorite is None:
|
||||||
|
server_name = connect_panel.favs_empty
|
||||||
|
else:
|
||||||
|
self.server_name, self.server_ip = favorite
|
||||||
|
server_name = f"{self.server_name} ({self.server_ip})"
|
||||||
|
|
||||||
self.server_name, self.server_ip = (
|
|
||||||
self.controller.get_config_man().get_favorite()
|
|
||||||
)
|
|
||||||
server_name = (
|
|
||||||
f"{self.server_name} ({self.server_ip})"
|
|
||||||
if self.server_name is not None
|
|
||||||
else connect_panel.no_fav
|
|
||||||
)
|
|
||||||
self.fav_label = Gtk.Label(
|
self.fav_label = Gtk.Label(
|
||||||
label=server_name,
|
label=server_name,
|
||||||
track_visited_links=False,
|
track_visited_links=False,
|
||||||
halign=Gtk.Align.START,
|
halign=Gtk.Align.START,
|
||||||
hexpand=True,
|
hexpand=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
self.fav_button = SteamConnectButton()
|
||||||
|
self.fav_button.connect("clicked", self._on_connect_clicked)
|
||||||
|
self.copy_button = ClipboardButton(self.controller, self.get_fav_ip)
|
||||||
|
if favorite is None:
|
||||||
|
self.toggle_buttons(False)
|
||||||
|
|
||||||
# NOTE: disable vscrollbar to prevent layout jumping behavior
|
# NOTE: disable vscrollbar to prevent layout jumping behavior
|
||||||
scrollable_label = Gtk.ScrolledWindow(vscrollbar_policy=Gtk.PolicyType.NEVER)
|
scrollable_label = Gtk.ScrolledWindow(vscrollbar_policy=Gtk.PolicyType.NEVER)
|
||||||
scrollable_label.add(self.fav_label)
|
scrollable_label.add(self.fav_label)
|
||||||
|
|
||||||
self.fav_button = SteamConnectButton()
|
|
||||||
self.fav_button.connect("clicked", self._on_connect_clicked)
|
|
||||||
if server_name is None:
|
|
||||||
self.fav_button.set_sensitive(False)
|
|
||||||
copy = ClipboardButton(self.controller, self.get_fav_ip)
|
|
||||||
|
|
||||||
grid = Gtk.Grid(margin=10, vexpand=False, column_spacing=15, row_spacing=5)
|
grid = Gtk.Grid(margin=10, vexpand=False, column_spacing=15, row_spacing=5)
|
||||||
grid.attach(scrollable_label, 0, 0, 3, ROWS)
|
grid.attach(scrollable_label, 0, 0, 3, ROWS)
|
||||||
grid.attach_next_to(copy, scrollable_label, Gtk.PositionType.RIGHT, COLS, ROWS)
|
grid.attach_next_to(self.copy_button, scrollable_label, Gtk.PositionType.RIGHT, COLS, ROWS)
|
||||||
grid.attach_next_to(self.fav_button, copy, Gtk.PositionType.RIGHT, COLS, ROWS)
|
grid.attach_next_to(self.fav_button, self.copy_button, Gtk.PositionType.RIGHT, COLS, ROWS)
|
||||||
|
|
||||||
self.add(grid)
|
self.add(grid)
|
||||||
|
|
||||||
|
def toggle_buttons(self, state: bool) -> None:
|
||||||
|
for button in self.fav_button, self.copy_button:
|
||||||
|
button.set_sensitive(state)
|
||||||
|
|
||||||
def _on_connect_clicked(self, button: Gtk.Button) -> None:
|
def _on_connect_clicked(self, button: Gtk.Button) -> None:
|
||||||
self.controller.connect_by_str(self.server_ip)
|
self.controller.connect_by_str(self.server_ip)
|
||||||
|
|
||||||
def get_fav_ip(self) -> str:
|
def get_fav_ip(self) -> str:
|
||||||
return self.server_ip
|
return self.server_ip
|
||||||
|
|
||||||
from dzgui.api.servers import Record
|
|
||||||
|
|
||||||
def _on_fav_server_changed(
|
def _on_fav_server_changed(
|
||||||
self, emitter: "Emitter", name: str, record: str
|
self, emitter: "Emitter", name: str, record: str
|
||||||
) -> None:
|
) -> None:
|
||||||
self.server_name = name
|
self.server_name = name
|
||||||
self.server_ip = record
|
self.server_ip = record
|
||||||
self.fav_label.set_text(f"{name} ({record})")
|
self.fav_label.set_text(f"{name} ({record})")
|
||||||
|
if self.server_name != "":
|
||||||
|
self.toggle_buttons(True)
|
||||||
|
|
||||||
|
|
||||||
class AddPanel(Gtk.Frame):
|
class AddPanel(Gtk.Frame):
|
||||||
@@ -221,10 +223,9 @@ class AddPanel(Gtk.Frame):
|
|||||||
|
|
||||||
self.add(self.grid)
|
self.add(self.grid)
|
||||||
|
|
||||||
# TODO: dynamic popover text
|
|
||||||
self.pop = Gtk.Popover()
|
self.pop = Gtk.Popover()
|
||||||
self.pop_label = Gtk.Label(
|
self.pop_label = Gtk.Label(
|
||||||
label="This address is already in your Saved Servers",
|
label=connect_panel.add_popover,
|
||||||
margin_start=10,
|
margin_start=10,
|
||||||
margin_end=10,
|
margin_end=10,
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in new issue
Block a user