1
0
mirror of https://github.com/EDCD/EDMarketConnector.git synced 2025-04-17 17:42:20 +03:00

[830] Open Log Folder Natively

This commit is contained in:
David Sangrey 2024-05-02 21:34:58 -04:00
parent 83fdaab61b
commit 8198d779c3
No known key found for this signature in database
GPG Key ID: 3AEADBB0186884BC
2 changed files with 19 additions and 11 deletions

View File

@ -18,6 +18,7 @@ import subprocess
import sys import sys
import threading import threading
import webbrowser import webbrowser
import tempfile
from os import chdir, environ, path from os import chdir, environ, path
from time import localtime, strftime, time from time import localtime, strftime, time
from typing import TYPE_CHECKING, Any, Literal from typing import TYPE_CHECKING, Any, Literal
@ -47,8 +48,6 @@ if __name__ == '__main__':
# output until after this redirect is done, if needed. # output until after this redirect is done, if needed.
if getattr(sys, 'frozen', False): if getattr(sys, 'frozen', False):
# By default py2exe tries to write log to dirname(sys.executable) which fails when installed # By default py2exe tries to write log to dirname(sys.executable) which fails when installed
import tempfile
# unbuffered not allowed for text in python3, so use `1 for line buffering # unbuffered not allowed for text in python3, so use `1 for line buffering
log_file_path = path.join(tempfile.gettempdir(), f'{appname}.log') log_file_path = path.join(tempfile.gettempdir(), f'{appname}.log')
sys.stdout = sys.stderr = open(log_file_path, mode='wt', buffering=1) # Do NOT use WITH here. sys.stdout = sys.stderr = open(log_file_path, mode='wt', buffering=1) # Do NOT use WITH here.
@ -651,7 +650,8 @@ class AppWindow:
self.help_menu.add_command(command=lambda: self.updater.check_for_updates()) # Check for Updates... self.help_menu.add_command(command=lambda: self.updater.check_for_updates()) # Check for Updates...
# About E:D Market Connector # About E:D Market Connector
self.help_menu.add_command(command=lambda: not self.HelpAbout.showing and self.HelpAbout(self.w)) self.help_menu.add_command(command=lambda: not self.HelpAbout.showing and self.HelpAbout(self.w))
self.help_menu.add_command(command=prefs.help_open_log_folder) # Open Log Folder logfile_loc = pathlib.Path(tempfile.gettempdir()) / appname
self.help_menu.add_command(command=lambda: prefs.open_folder(logfile_loc)) # Open Log Folder
self.menubar.add_cascade(menu=self.help_menu) self.menubar.add_cascade(menu=self.help_menu)
if sys.platform == 'win32': if sys.platform == 'win32':

View File

@ -8,14 +8,12 @@ import pathlib
import sys import sys
import tempfile import tempfile
import tkinter as tk import tkinter as tk
import webbrowser
from os import system from os import system
from os.path import expanduser, expandvars, join, normpath from os.path import expanduser, expandvars, join, normpath
from tkinter import colorchooser as tkColorChooser # type: ignore # noqa: N812 from tkinter import colorchooser as tkColorChooser # type: ignore # noqa: N812
from tkinter import ttk from tkinter import ttk
from types import TracebackType from types import TracebackType
from typing import TYPE_CHECKING, Any, Callable, Optional, Type from typing import TYPE_CHECKING, Any, Callable, Optional, Type
import myNotebook as nb # noqa: N813 import myNotebook as nb # noqa: N813
import plug import plug
from config import appversion_nobuild, config from config import appversion_nobuild, config
@ -44,14 +42,21 @@ if TYPE_CHECKING:
def help_open_log_folder() -> None: def help_open_log_folder() -> None:
"""Open the folder logs are stored in.""" """Open the folder logs are stored in."""
logfile_loc = pathlib.Path(tempfile.gettempdir()) logger.warning(
logfile_loc /= f'{appname}' DeprecationWarning("This function is deprecated, use open_log_folder instead. "
"This function will be removed in 6.0 or later")
)
open_folder(pathlib.Path(tempfile.gettempdir()) / appname)
def open_folder(file: pathlib.Path) -> None:
"""Open the given file in the OS file explorer."""
if sys.platform.startswith('win'): if sys.platform.startswith('win'):
# On Windows, use the "start" command to open the folder # On Windows, use the "start" command to open the folder
system(f'start "" "{logfile_loc}"') system(f'start "" "{file}"')
elif sys.platform.startswith('linux'): elif sys.platform.startswith('linux'):
# On Linux, use the "xdg-open" command to open the folder # On Linux, use the "xdg-open" command to open the folder
system(f'xdg-open "{logfile_loc}"') system(f'xdg-open "{file}"')
class PrefsVersion: class PrefsVersion:
@ -300,6 +305,9 @@ class PreferencesDialog(tk.Toplevel):
): ):
self.geometry(f"+{position.left}+{position.top}") self.geometry(f"+{position.left}+{position.top}")
# Set Log Directory
self.logfile_loc = pathlib.Path(tempfile.gettempdir()) / appname
def __setup_output_tab(self, root_notebook: ttk.Notebook) -> None: def __setup_output_tab(self, root_notebook: ttk.Notebook) -> None:
output_frame = nb.Frame(root_notebook) output_frame = nb.Frame(root_notebook)
output_frame.columnconfigure(0, weight=1) output_frame.columnconfigure(0, weight=1)
@ -625,7 +633,7 @@ class PreferencesDialog(tk.Toplevel):
config_frame, config_frame,
# LANG: Label on button used to open a filesystem folder # LANG: Label on button used to open a filesystem folder
text=_('Open Log Folder'), # Button that opens a folder in Explorer/Finder text=_('Open Log Folder'), # Button that opens a folder in Explorer/Finder
command=lambda: help_open_log_folder() command=lambda: open_folder(self.logfile_loc)
).grid(column=2, padx=self.PADX, pady=0, sticky=tk.NSEW, row=cur_row) ).grid(column=2, padx=self.PADX, pady=0, sticky=tk.NSEW, row=cur_row)
# Big spacer # Big spacer
@ -884,7 +892,7 @@ class PreferencesDialog(tk.Toplevel):
plugins_frame, plugins_frame,
# LANG: Label on button used to open a filesystem folder # LANG: Label on button used to open a filesystem folder
text=_('Open'), # Button that opens a folder in Explorer/Finder text=_('Open'), # Button that opens a folder in Explorer/Finder
command=lambda: webbrowser.open(f'file:///{config.plugin_dir_path}') command=lambda: open_folder(config.plugin_dir_path)
).grid(column=1, padx=self.PADX, pady=self.PADY, sticky=tk.N, row=cur_row) ).grid(column=1, padx=self.PADX, pady=self.PADY, sticky=tk.N, row=cur_row)
enabled_plugins = list(filter(lambda x: x.folder and x.module, plug.PLUGINS)) enabled_plugins = list(filter(lambda x: x.folder and x.module, plug.PLUGINS))