feat: standalone clipboard utility

This commit is contained in:
aclist 2026-02-22 04:11:23 +09:00
parent 68cd567249
commit a22d1a6324
3 changed files with 16 additions and 8 deletions

View File

@ -5,6 +5,7 @@ from typing import TYPE_CHECKING
from dzgui.const.enum import ContextMenu, Preferences
from dzgui.managers.thread_man import ThreadingManager
from dzgui.util import strings
from dzgui.util.clip import copy_clipboard
from dzgui.util.open_links import open_workshop_page
gi.require_version("Gtk", "3.0")
@ -72,17 +73,13 @@ class ContextMenuManager:
def copy_server_ip(self) -> None:
record = self.treeview.get_simplified_ip()
self.copy_clipboard(record)
def copy_clipboard(self, text: str) -> None:
self.clipboard = Gtk.Clipboard.get(Gdk.SELECTION_CLIPBOARD)
self.clipboard.set_text(text, -1)
copy_clipboard(record)
def copy_server_name(self) -> None:
name = self.treeview.get_value_at_index(0)
if name is None:
return
self.copy_clipboard(name)
copy_clipboard(name)
def open_mod_page(self) -> None:
mod = self.treeview.get_selected_mod()
@ -101,4 +98,4 @@ class ContextMenuManager:
concat = strings.delimiter.join(r)
final.append(concat)
text = "\n".join(final)
self.copy_clipboard(text)
copy_clipboard(text)

10
dzgui/util/clip.py Normal file
View File

@ -0,0 +1,10 @@
import gi
gi.require_version("Gtk", "3.0")
from gi.repository.Gdk import SELECTION_CLIPBOARD # noqa E402
from gi.repository.Gtk import Clipboard # noqa E402
def copy_clipboard(text: str) -> None:
clipboard = Clipboard.get(SELECTION_CLIPBOARD)
clipboard.set_text(text, -1)

View File

@ -1,5 +1,6 @@
from typing import Callable, Literal, Self, TYPE_CHECKING
from dzgui.util.clip import copy_clipboard
from dzgui.util.strings import atomic_buttons, connect_panel
from dzgui.const.constants import (
CLIPBOARD,
@ -69,7 +70,7 @@ class ClipboardButton(IconTextButton):
def _on_button_clicked(self, button: Self, func: Callable) -> None:
data = func()
self.controller.copy_clipboard(data)
copy_clipboard(data)
class WebButton(IconTextButton):