1
0
mirror of https://github.com/EDCD/EDMarketConnector.git synced 2025-04-18 18:07:37 +03:00

Merge branch 'develop' into enhancement/1173/right-click-provider-options

This commit is contained in:
David Sangrey 2024-05-13 19:13:43 -04:00 committed by GitHub
commit 6f9707cead
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 44 additions and 32 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.
@ -648,7 +647,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

@ -38,7 +38,7 @@ if sys.platform == 'win32':
import ctypes import ctypes
from ctypes.wintypes import BOOL, HWND, LPARAM, LPWSTR from ctypes.wintypes import BOOL, HWND, LPARAM, LPWSTR
from watchdog.events import FileCreatedEvent, FileSystemEventHandler from watchdog.events import FileSystemEventHandler, FileSystemEvent
from watchdog.observers import Observer from watchdog.observers import Observer
from watchdog.observers.api import BaseObserver from watchdog.observers.api import BaseObserver
@ -60,7 +60,7 @@ else:
FileSystemEventHandler = object # dummy FileSystemEventHandler = object # dummy
if TYPE_CHECKING: if TYPE_CHECKING:
# this isn't ever used, but this will make type checking happy # this isn't ever used, but this will make type checking happy
from watchdog.events import FileCreatedEvent from watchdog.events import FileSystemEvent
from watchdog.observers import Observer from watchdog.observers import Observer
from watchdog.observers.api import BaseObserver from watchdog.observers.api import BaseObserver
@ -346,7 +346,7 @@ class EDLogs(FileSystemEventHandler):
""" """
return bool(self.thread and self.thread.is_alive()) return bool(self.thread and self.thread.is_alive())
def on_created(self, event: 'FileCreatedEvent') -> None: def on_created(self, event: 'FileSystemEvent') -> None:
"""Watchdog callback when, e.g. client (re)started.""" """Watchdog callback when, e.g. client (re)started."""
if not event.is_directory and self._RE_LOGFILE.search(basename(event.src_path)): if not event.is_directory and self._RE_LOGFILE.search(basename(event.src_path)):

View File

@ -550,23 +550,6 @@ def journal_entry( # noqa: C901, CCR001
# Ship change # Ship change
if event_name == 'Loadout' and this.shipswap: if event_name == 'Loadout' and this.shipswap:
cur_ship = {
'shipType': state['ShipType'],
'shipGameID': state['ShipID'],
'shipName': state['ShipName'], # Can be None
'shipIdent': state['ShipIdent'], # Can be None
'isCurrentShip': True,
}
if state['HullValue']:
cur_ship['shipHullValue'] = state['HullValue']
if state['ModulesValue']:
cur_ship['shipModulesValue'] = state['ModulesValue']
cur_ship['shipRebuyCost'] = state['Rebuy']
new_add_event('setCommanderShip', entry['timestamp'], cur_ship)
this.loadout = make_loadout(state) this.loadout = make_loadout(state)
new_add_event('setCommanderShipLoadout', entry['timestamp'], this.loadout) new_add_event('setCommanderShipLoadout', entry['timestamp'], this.loadout)
this.shipswap = False this.shipswap = False
@ -854,7 +837,7 @@ def journal_entry( # noqa: C901, CCR001
for ship in this.fleet: for ship in this.fleet:
new_add_event('setCommanderShip', entry['timestamp'], ship) new_add_event('setCommanderShip', entry['timestamp'], ship)
# Loadout # Loadout
if event_name == 'Loadout' and not this.newsession: if event_name == 'Loadout':
loadout = make_loadout(state) loadout = make_loadout(state)
if this.loadout != loadout: if this.loadout != loadout:
this.loadout = loadout this.loadout = loadout
@ -868,6 +851,26 @@ def journal_entry( # noqa: C901, CCR001
new_add_event('setCommanderShipLoadout', entry['timestamp'], this.loadout) new_add_event('setCommanderShipLoadout', entry['timestamp'], this.loadout)
cur_ship = {
'shipType': state['ShipType'],
'shipGameID': state['ShipID'],
'shipName': state['ShipName'], # Can be None
'shipIdent': state['ShipIdent'], # Can be None
'isCurrentShip': True,
'shipMaxJumpRange': entry['MaxJumpRange'],
'shipCargoCapacity': entry['CargoCapacity']
}
if state['HullValue']:
cur_ship['shipHullValue'] = state['HullValue']
if state['ModulesValue']:
cur_ship['shipModulesValue'] = state['ModulesValue']
if state['Rebuy']:
cur_ship['shipRebuyCost'] = state['Rebuy']
new_add_event('setCommanderShip', entry['timestamp'], cur_ship)
# Stored modules # Stored modules
if event_name == 'StoredModules': if event_name == 'StoredModules':
items = {mod['StorageSlot']: mod for mod in entry['Items']} # Impose an order items = {mod['StorageSlot']: mod for mod in entry['Items']} # Impose an order

View File

@ -8,7 +8,6 @@ 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
@ -40,14 +39,21 @@ logger = get_main_logger()
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:
@ -296,6 +302,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)
@ -623,7 +632,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=tr.tl('Open Log Folder'), # Button that opens a folder in Explorer/Finder text=tr.tl('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 +893,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=tr.tl('Open'), # Button that opens a folder in Explorer/Finder text=tr.tl('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))

View File

@ -1,5 +1,5 @@
requests==2.31.0 requests==2.31.0
pillow==10.3.0 pillow==10.3.0
watchdog==3.0.0 watchdog==4.0.0
infi.systray==0.1.12; sys_platform == 'win32' infi.systray==0.1.12; sys_platform == 'win32'
semantic-version==2.10.0 semantic-version==2.10.0