mirror of
https://github.com/aclist/dztui.git
synced 2026-08-28 10:47:15 +02:00
feat: copy version on click
This commit is contained in:
parent
a763b3b9dc
commit
374f7d1130
@ -1,16 +1,17 @@
|
||||
from typing import TYPE_CHECKING
|
||||
|
||||
from dzgui.const.enum import ServerTab
|
||||
from dzgui.util.clip import copy_clipboard
|
||||
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, FILL, NO_PADDING
|
||||
from dzgui.const.constants import NO_EXPAND, NO_FILL, FILL, NO_PADDING, EXPAND
|
||||
|
||||
import gi
|
||||
|
||||
gi.require_version("Gtk", "3.0")
|
||||
from gi.repository import Gtk, GLib # noqa E402
|
||||
from gi.repository import Gtk, Gdk, GLib # noqa E402
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from dzgui.controllers.mc import Controller
|
||||
@ -35,16 +36,45 @@ class RightPanel(Gtk.Box):
|
||||
self.refresh_button = RefreshButton(controller)
|
||||
self.keys = KeysButton(controller)
|
||||
|
||||
self.copying = False
|
||||
|
||||
version = self.controller.get_prefs().version
|
||||
self.version_label = Gtk.Label(
|
||||
label=version,
|
||||
hexpand=True,
|
||||
vexpand=True,
|
||||
halign=Gtk.Align.END,
|
||||
valign=Gtk.Align.END,
|
||||
)
|
||||
eb = Gtk.EventBox(halign=Gtk.Align.END, valign=Gtk.Align.END)
|
||||
eb.add(self.version_label)
|
||||
eb.connect("button-press-event", self._on_version_clicked)
|
||||
|
||||
for el in self.button_vbox, self.keys, self.filters_vbox, self.refresh_button:
|
||||
self.pack_start(el, NO_EXPAND, FILL, NO_PADDING)
|
||||
|
||||
self.pack_start(self.sel_panel, NO_EXPAND, NO_FILL, NO_PADDING)
|
||||
self.pack_start(eb, NO_EXPAND, FILL, NO_PADDING)
|
||||
|
||||
def _on_servers_loaded(self, emitter: "Emitter", context: "ServerTab") -> None:
|
||||
state = self.controller.has_server_model()
|
||||
for widget in (self.refresh_button, self.filters_vbox):
|
||||
widget.set_sensitive(state)
|
||||
|
||||
def _on_version_clicked(self, widget: Gtk.EventBox, event: Gdk.EventButton) -> None:
|
||||
def revert() -> GLib.SOURCE_REMOVE:
|
||||
self.copying = False
|
||||
self.version_label.set_text(version)
|
||||
return GLib.SOURCE_REMOVE
|
||||
|
||||
if self.copying:
|
||||
return
|
||||
self.copying = True
|
||||
version = self.version_label.get_text()
|
||||
self.version_label.set_text("Copied!")
|
||||
copy_clipboard(version)
|
||||
GLib.timeout_add_seconds(0.5, revert)
|
||||
|
||||
# TODO: reference for ping pass
|
||||
# def _on_ping_clicked(self, button: Gtk.Button) -> None:
|
||||
# block_signals()
|
||||
|
||||
@ -29,16 +29,8 @@ class Statusbar(Gtk.Grid):
|
||||
|
||||
self.spinner = Gtk.Spinner()
|
||||
|
||||
version = self.controller.get_prefs().version
|
||||
self.status_right_label = Gtk.Label(
|
||||
label=version, hexpand=True, halign=Gtk.Align.END
|
||||
)
|
||||
|
||||
self.attach(self.statusbar, 0, 0, 3, 1)
|
||||
self.attach_next_to(self.spinner, self.statusbar, Gtk.PositionType.RIGHT, 3, 1)
|
||||
self.attach_next_to(
|
||||
self.status_right_label, self.spinner, Gtk.PositionType.RIGHT, 3, 1
|
||||
)
|
||||
|
||||
self.players = ""
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user