mirror of
https://github.com/lutris/lutris
synced 2024-10-14 11:42:36 +00:00
Show Lutris logs in System tab
This commit is contained in:
parent
4552089cc4
commit
41c57cf66b
|
@ -1,11 +1,14 @@
|
|||
import os
|
||||
from gettext import gettext as _
|
||||
from typing import Dict, Iterable, List
|
||||
|
||||
from gi.repository import Gdk, Gtk
|
||||
|
||||
from lutris.gui.config.base_config_box import BaseConfigBox
|
||||
from lutris.gui.widgets.log_text_view import LogTextView
|
||||
from lutris.util import linux, system
|
||||
from lutris.util.linux import gather_system_info_dict
|
||||
from lutris.util.log import LOG_FILENAME
|
||||
from lutris.util.strings import gtk_safe
|
||||
from lutris.util.wine.wine import is_esync_limit_set, is_fsync_supported, is_installed_systemwide
|
||||
|
||||
|
@ -46,14 +49,41 @@ class SystemBox(BaseConfigBox):
|
|||
sysinfo_frame.add(self.scrolled_window)
|
||||
self.pack_start(sysinfo_frame, True, True, 0)
|
||||
|
||||
button_copy = Gtk.Button(_("Copy to Clipboard"), halign=Gtk.Align.START, visible=True)
|
||||
button_copy = Gtk.Button(_("Copy system info to Clipboard"), halign=Gtk.Align.START, visible=True)
|
||||
button_copy.connect("clicked", self.on_copy_clicked)
|
||||
|
||||
self.pack_start(button_copy, False, False, 0)
|
||||
|
||||
self.pack_start(self.get_section_label(_("Lutris logs")), False, False, 0)
|
||||
|
||||
self.log_scrolled_window = Gtk.ScrolledWindow(visible=True)
|
||||
self.log_scrolled_window.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
|
||||
log_frame = Gtk.Frame(visible=True)
|
||||
log_frame.get_style_context().add_class("info-frame")
|
||||
log_frame.add(self.log_scrolled_window)
|
||||
self.pack_start(log_frame, True, True, 0)
|
||||
|
||||
button_log_copy = Gtk.Button(_("Copy logs to Clipboard"), halign=Gtk.Align.START, visible=True)
|
||||
button_log_copy.connect("clicked", self.on_copy_log_clicked)
|
||||
|
||||
self.pack_start(button_log_copy, False, False, 0)
|
||||
|
||||
def populate(self):
|
||||
items = self.get_items()
|
||||
self.scrolled_window.add(self.get_grid(items))
|
||||
self.log_scrolled_window.add(self.get_log_view())
|
||||
|
||||
def get_log_view(self):
|
||||
log_buffer = Gtk.TextBuffer()
|
||||
log_buffer.set_text(self.get_log_contents())
|
||||
return LogTextView(log_buffer)
|
||||
|
||||
def get_log_contents(self):
|
||||
if not os.path.exists(LOG_FILENAME):
|
||||
return ""
|
||||
with open(LOG_FILENAME, encoding="utf-8") as log_file:
|
||||
content = log_file.read()
|
||||
return content
|
||||
|
||||
def get_items(self) -> list:
|
||||
"""Assembles a list of items to display; most items are name-value tuples
|
||||
|
@ -127,3 +157,8 @@ class SystemBox(BaseConfigBox):
|
|||
|
||||
clipboard = Gtk.Clipboard.get(Gdk.SELECTION_CLIPBOARD)
|
||||
clipboard.set_text(text.strip(), -1)
|
||||
|
||||
def on_copy_log_clicked(self, _widget) -> None:
|
||||
text = self.get_log_contents()
|
||||
clipboard = Gtk.Clipboard.get(Gdk.SELECTION_CLIPBOARD)
|
||||
clipboard.set_text(text.strip(), -1)
|
||||
|
|
Loading…
Reference in a new issue