mirror of
https://github.com/EDCD/EDMarketConnector.git
synced 2025-06-06 10:23:06 +03:00
Merge branch 'stable' into releases
This commit is contained in:
commit
7541bab443
4
.github/workflows/windows-build.yml
vendored
4
.github/workflows/windows-build.yml
vendored
@ -126,6 +126,10 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
filepath: './EDMC_Installer_Config.iss'
|
filepath: './EDMC_Installer_Config.iss'
|
||||||
|
|
||||||
|
- name: Rename Installer
|
||||||
|
run: |
|
||||||
|
Get-ChildItem -Path . -Filter "EDMarketConnector_Installer_*.exe" | Rename-Item -NewName {"EDMarketConnector_Installer_Unsigned_$($_.Name -replace '^EDMarketConnector_Installer_', '')"}
|
||||||
|
|
||||||
- name: Upload build files
|
- name: Upload build files
|
||||||
uses: actions/upload-artifact@v3
|
uses: actions/upload-artifact@v3
|
||||||
with:
|
with:
|
||||||
|
63
ChangeLog.md
63
ChangeLog.md
@ -1,38 +1,51 @@
|
|||||||
This is the master changelog for Elite Dangerous Market Connector. Entries are in reverse chronological order (latest first).
|
This is the master changelog for Elite Dangerous Market Connector. Entries are in reverse chronological order (latest first).
|
||||||
---
|
---
|
||||||
|
* We currently test against, and package with, Python 3.11.7, 32-bit.
|
||||||
Copyrights
|
* As a result, we do not support Windows 7, 8, or 8.1.
|
||||||
|
* Developers can check the contents of the `.python-version` file
|
||||||
|
in the source (not distributed with the Windows installer) for the
|
||||||
|
currently used version.
|
||||||
|
---
|
||||||
|
Release 5.10.2
|
||||||
===
|
===
|
||||||
Please see the [docs/Licenses](docs/Licenses/) directory for copies of any
|
This release contains updated dependencies, some bug fixes, a few minor enhancements to some supporting files,
|
||||||
licenses for software we use with EDMarketConnector, either at runtime, or to
|
and some resorted resources as well as a new image for some of the built EXEs.
|
||||||
produce the Windows executables and installer.
|
|
||||||
|
|
||||||
---
|
We now sign our code! This does mean that built EXEs are now slightly modified on our developer's machines.
|
||||||
|
For information on what this means, and opt-out options, please visit https://github.com/EDCD/EDMarketConnector/wiki/Code-Signing-and-EDMC
|
||||||
|
|
||||||
* We now test against, and package with, Python 3.11.7, 32-bit.
|
**Changes and Enhancements**
|
||||||
|
* Added additional logging to the Python build string in the case of missing files
|
||||||
|
* Added a new icon to EDMC's Command-Line EXE
|
||||||
|
* Added additional logging to the build system
|
||||||
|
* Updated several dependencies
|
||||||
|
* Updated FDEV IDs
|
||||||
|
* Updated relevant copyright dates
|
||||||
|
* Updated automatic build script to support code signing workflow
|
||||||
|
* Updated translations to the latest versions
|
||||||
|
* Moved a few unused files to the resources folder. These files have no references in the code
|
||||||
|
|
||||||
**As a consequence of this we no longer support Windows 7.
|
**Bug Fixes**
|
||||||
This is due to
|
* Fixed a bug that could cause EDMC to handle SIGINT signals improperly
|
||||||
[Python 3.10.x and later not supporting Windows 7](https://www.python.org/downloads/windows/).
|
* Fixed a bug that could result in URL providers to be set to invalid values
|
||||||
The application (both EDMarketConnector.exe and EDMC.exe) will crash on
|
* Fixed a bug that could result in Coriolis URL providers to revert back to "Auto" on language translations
|
||||||
startup due to a missing DLL.**
|
* Fixed a bug where Inara didn't understand being blown up by a Thargoid, and blew itself up instead
|
||||||
|
* Fixed a printing issue for the localization system for unused strings
|
||||||
|
|
||||||
As [Windows 8.1 is now End-Of-Life](https://learn.microsoft.com/en-us/lifecycle/faq/windows#windows-8-1)
|
**Removed Files**
|
||||||
we no longer explicitly support it, but for the time being it will likely
|
* Removed two unused manifest and MacOS icon files which are no longer in use.
|
||||||
continue to work. This is dependent on future Python releases not dropping
|
|
||||||
support for Windows 8.1 in a manner that prevents it working. Any bug report
|
|
||||||
made against Windows 8.1 use may be ignored unless reproduced on a supported
|
|
||||||
OS.
|
|
||||||
|
|
||||||
This should have no other impact on users or plugin developers, other
|
**Known Issues**
|
||||||
than the latter now being free to use features that were introduced since the
|
* Some users of TCE have reported issues with newer versions of EDMC with TCE.
|
||||||
Python 3.7 series.
|
* We have been unable to replicate this issue. If you are able to assist, please
|
||||||
|
add your information here: https://github.com/EDCD/EDMarketConnector/issues/2176
|
||||||
|
|
||||||
Developers can check the contents of the `.python-version` file
|
**Plugin Developers**
|
||||||
in the source (it's not distributed with the Windows installer) for the
|
* modules.p and ships.p are deprecated, and slated
|
||||||
currently used version in a given branch.
|
for removal in the next major release! Please look for that change coming soon.
|
||||||
|
* Note to plugin developers: The `openurl()` function in ttkHyperlinkLabel has been deprecated,
|
||||||
|
and slated for removal in the next major release! Please migrate to `webbrowser.open()`.
|
||||||
|
|
||||||
---
|
|
||||||
Release 5.10.1
|
Release 5.10.1
|
||||||
===
|
===
|
||||||
This release contains a number of bugfixes, minor performance enhancements,
|
This release contains a number of bugfixes, minor performance enhancements,
|
||||||
|
@ -1,6 +0,0 @@
|
|||||||
<Application xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
|
||||||
<VisualElements
|
|
||||||
BackgroundColor="black"
|
|
||||||
ShowNameOnSquare150x150Logo="on"
|
|
||||||
ForegroundText="light" />
|
|
||||||
</Application>
|
|
Binary file not shown.
@ -353,7 +353,12 @@ if __name__ == '__main__': # noqa: C901
|
|||||||
button = ttk.Button(frame, text='OK', command=lambda: sys.exit(0))
|
button = ttk.Button(frame, text='OK', command=lambda: sys.exit(0))
|
||||||
button.grid(row=2, column=0, sticky=tk.S)
|
button.grid(row=2, column=0, sticky=tk.S)
|
||||||
|
|
||||||
root.mainloop()
|
try:
|
||||||
|
root.mainloop()
|
||||||
|
except KeyboardInterrupt:
|
||||||
|
logger.info("Ctrl+C Detected, Attempting Clean Shutdown")
|
||||||
|
sys.exit()
|
||||||
|
logger.info('Exiting')
|
||||||
|
|
||||||
journal_lock = JournalLock()
|
journal_lock = JournalLock()
|
||||||
locked = journal_lock.obtain_lock()
|
locked = journal_lock.obtain_lock()
|
||||||
@ -802,6 +807,9 @@ class AppWindow:
|
|||||||
self.w.bind_all('<<CompanionAuthEvent>>', self.auth) # cAPI auth
|
self.w.bind_all('<<CompanionAuthEvent>>', self.auth) # cAPI auth
|
||||||
self.w.bind_all('<<Quit>>', self.onexit) # Updater
|
self.w.bind_all('<<Quit>>', self.onexit) # Updater
|
||||||
|
|
||||||
|
# Check for Valid Providers
|
||||||
|
validate_providers()
|
||||||
|
|
||||||
# Start a protocol handler to handle cAPI registration. Requires main loop to be running.
|
# Start a protocol handler to handle cAPI registration. Requires main loop to be running.
|
||||||
self.w.after_idle(lambda: protocol.protocolhandler.start(self.w))
|
self.w.after_idle(lambda: protocol.protocolhandler.start(self.w))
|
||||||
|
|
||||||
@ -2110,6 +2118,51 @@ def show_killswitch_poppup(root=None):
|
|||||||
ok_button.grid(columnspan=2, sticky=tk.EW)
|
ok_button.grid(columnspan=2, sticky=tk.EW)
|
||||||
|
|
||||||
|
|
||||||
|
def validate_providers():
|
||||||
|
"""Check if Config has an invalid provider set, and reset to default if we do."""
|
||||||
|
reset_providers = {}
|
||||||
|
station_provider: str = config.get_str("station_provider")
|
||||||
|
if station_provider not in plug.provides('station_url'):
|
||||||
|
logger.error("Station Provider Not Valid. Setting to Default.")
|
||||||
|
config.set('station_provider', 'EDSM')
|
||||||
|
reset_providers["Station"] = (station_provider, "EDSM")
|
||||||
|
|
||||||
|
shipyard_provider: str = config.get_str("shipyard_provider")
|
||||||
|
if shipyard_provider not in plug.provides('shipyard_url'):
|
||||||
|
logger.error("Shipyard Provider Not Valid. Setting to Default.")
|
||||||
|
config.set('shipyard_provider', 'EDSY')
|
||||||
|
reset_providers["Shipyard"] = (shipyard_provider, "EDSY")
|
||||||
|
|
||||||
|
system_provider: str = config.get_str("system_provider")
|
||||||
|
if system_provider not in plug.provides('system_url'):
|
||||||
|
logger.error("System Provider Not Valid. Setting to Default.")
|
||||||
|
config.set('system_provider', 'EDSM')
|
||||||
|
reset_providers["System"] = (system_provider, "EDSM")
|
||||||
|
|
||||||
|
if not reset_providers:
|
||||||
|
return
|
||||||
|
|
||||||
|
# LANG: Popup-text about Reset Providers
|
||||||
|
popup_text = _(r'One or more of your URL Providers were invalid, and have been reset:\r\n\r\n')
|
||||||
|
for provider in reset_providers:
|
||||||
|
# LANG: Text About What Provider Was Reset
|
||||||
|
popup_text += _(r'{PROVIDER} was set to {OLDPROV}, and has been reset to {NEWPROV}\r\n')
|
||||||
|
popup_text = popup_text.format(
|
||||||
|
PROVIDER=provider,
|
||||||
|
OLDPROV=reset_providers[provider][0],
|
||||||
|
NEWPROV=reset_providers[provider][1]
|
||||||
|
)
|
||||||
|
# And now we do need these to be actual \r\n
|
||||||
|
popup_text = popup_text.replace('\\n', '\n')
|
||||||
|
popup_text = popup_text.replace('\\r', '\r')
|
||||||
|
|
||||||
|
tk.messagebox.showinfo(
|
||||||
|
# LANG: Popup window title for Reset Providers
|
||||||
|
_('EDMC: Default Providers Reset'),
|
||||||
|
popup_text
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
# Run the app
|
# Run the app
|
||||||
if __name__ == "__main__": # noqa: C901
|
if __name__ == "__main__": # noqa: C901
|
||||||
logger.info(f'Startup v{appversion()} : Running on Python v{sys.version}')
|
logger.info(f'Startup v{appversion()} : Running on Python v{sys.version}')
|
||||||
@ -2365,6 +2418,9 @@ sys.path: {sys.path}'''
|
|||||||
# Check for FDEV IDs
|
# Check for FDEV IDs
|
||||||
root.after(3, check_fdev_ids)
|
root.after(3, check_fdev_ids)
|
||||||
# Start the main event loop
|
# Start the main event loop
|
||||||
root.mainloop()
|
try:
|
||||||
|
root.mainloop()
|
||||||
|
except KeyboardInterrupt:
|
||||||
|
logger.info("Ctrl+C Detected, Attempting Clean Shutdown")
|
||||||
|
app.onexit()
|
||||||
logger.info('Exiting')
|
logger.info('Exiting')
|
||||||
|
2
FDevIDs
2
FDevIDs
@ -1 +1 @@
|
|||||||
Subproject commit 069b09b1afbd2001248ad93b1481d6f6a309c6f5
|
Subproject commit 7205c79331f42c1a28b757b27467f79ff106716b
|
@ -231,6 +231,15 @@
|
|||||||
/* EDMarketConnector.py: Popup-text about 'broken' plugins that failed to load; In files: EDMarketConnector.py:2266; */
|
/* EDMarketConnector.py: Popup-text about 'broken' plugins that failed to load; In files: EDMarketConnector.py:2266; */
|
||||||
"One or more of your enabled plugins failed to load. Please see the list on the '{PLUGINS}' tab of '{FILE}' > '{SETTINGS}'. This could be caused by a wrong folder structure. The load.py file should be located under plugins/PLUGIN_NAME/load.py.\r\n\r\nYou can disable a plugin by renaming its folder to have '{DISABLED}' on the end of the name." = "One or more of your enabled plugins failed to load. Please see the list on the '{PLUGINS}' tab of '{FILE}' > '{SETTINGS}'. This could be caused by a wrong folder structure. The load.py file should be located under plugins/PLUGIN_NAME/load.py.\r\n\r\nYou can disable a plugin by renaming its folder to have '{DISABLED}' on the end of the name.";
|
"One or more of your enabled plugins failed to load. Please see the list on the '{PLUGINS}' tab of '{FILE}' > '{SETTINGS}'. This could be caused by a wrong folder structure. The load.py file should be located under plugins/PLUGIN_NAME/load.py.\r\n\r\nYou can disable a plugin by renaming its folder to have '{DISABLED}' on the end of the name." = "One or more of your enabled plugins failed to load. Please see the list on the '{PLUGINS}' tab of '{FILE}' > '{SETTINGS}'. This could be caused by a wrong folder structure. The load.py file should be located under plugins/PLUGIN_NAME/load.py.\r\n\r\nYou can disable a plugin by renaming its folder to have '{DISABLED}' on the end of the name.";
|
||||||
|
|
||||||
|
/* EDMarketConnector.py: Popup-text about Reset Providers; In files: EDMarketConnector.py:2146; */
|
||||||
|
"One or more of your URL Providers were invalid, and have been reset:\r\n\r\n" = "One or more of your URL Providers were invalid, and have been reset:\r\n\r\n";
|
||||||
|
|
||||||
|
/* EDMarketConnector.py: Text About What Provider Was Reset; In files: EDMarketConnector.py:2148; */
|
||||||
|
"{PROVIDER} was set to {OLDPROV}, and has been reset to {NEWPROV}\r\n" = "{PROVIDER} was set to {OLDPROV}, and has been reset to {NEWPROV}\r\n";
|
||||||
|
|
||||||
|
/* EDMarketConnector.py: Popup window title for Reset Providers; In files: EDMarketConnector.py:2161; */
|
||||||
|
"EDMC: Default Providers Reset" = "EDMC: Default Providers Reset";
|
||||||
|
|
||||||
/* journal_lock.py: Title text on popup when Journal directory already locked; In files: journal_lock.py:208; */
|
/* journal_lock.py: Title text on popup when Journal directory already locked; In files: journal_lock.py:208; */
|
||||||
"Journal directory already locked" = "Journal directory already locked";
|
"Journal directory already locked" = "Journal directory already locked";
|
||||||
|
|
||||||
@ -246,13 +255,13 @@
|
|||||||
/* l10n.py: The system default language choice in Settings > Appearance; prefs.py: Settings > Configuration - Label on 'reset journal files location to default' button; prefs.py: The system default language choice in Settings > Appearance; prefs.py: Label for 'Default' theme radio button; In files: l10n.py:193; prefs.py:455; prefs.py:709; prefs.py:742; */
|
/* l10n.py: The system default language choice in Settings > Appearance; prefs.py: Settings > Configuration - Label on 'reset journal files location to default' button; prefs.py: The system default language choice in Settings > Appearance; prefs.py: Label for 'Default' theme radio button; In files: l10n.py:193; prefs.py:455; prefs.py:709; prefs.py:742; */
|
||||||
"Default" = "Default";
|
"Default" = "Default";
|
||||||
|
|
||||||
/* coriolis.py: 'Auto' label for Coriolis site override selection; coriolis.py: Coriolis normal/beta selection - auto; In files: coriolis.py:74; coriolis.py:77; coriolis.py:123; coriolis.py:139; coriolis.py:145; */
|
/* coriolis.py: 'Auto' label for Coriolis site override selection; coriolis.py: Coriolis normal/beta selection - auto; In files: coriolis.py:48; coriolis.py:74; coriolis.py:77; coriolis.py:94; coriolis.py:123; coriolis.py:139; coriolis.py:145; coriolis.py:179; coriolis.py:182; */
|
||||||
"Auto" = "Auto";
|
"Auto" = "Auto";
|
||||||
|
|
||||||
/* coriolis.py: 'Normal' label for Coriolis site override selection; coriolis.py: Coriolis normal/beta selection - normal; In files: coriolis.py:75; coriolis.py:121; coriolis.py:137; */
|
/* coriolis.py: 'Normal' label for Coriolis site override selection; coriolis.py: Coriolis normal/beta selection - normal; In files: coriolis.py:49; coriolis.py:75; coriolis.py:95; coriolis.py:121; coriolis.py:137; coriolis.py:180; */
|
||||||
"Normal" = "Normal";
|
"Normal" = "Normal";
|
||||||
|
|
||||||
/* coriolis.py: 'Beta' label for Coriolis site override selection; coriolis.py: Coriolis normal/beta selection - beta; In files: coriolis.py:76; coriolis.py:122; coriolis.py:138; */
|
/* coriolis.py: 'Beta' label for Coriolis site override selection; coriolis.py: Coriolis normal/beta selection - beta; In files: coriolis.py:50; coriolis.py:76; coriolis.py:96; coriolis.py:122; coriolis.py:138; coriolis.py:181; */
|
||||||
"Beta" = "Beta";
|
"Beta" = "Beta";
|
||||||
|
|
||||||
/* coriolis.py: Settings>Coriolis: Help/hint for changing coriolis URLs; In files: coriolis.py:91:93; */
|
/* coriolis.py: Settings>Coriolis: Help/hint for changing coriolis URLs; In files: coriolis.py:91:93; */
|
||||||
|
@ -1,3 +1,11 @@
|
|||||||
|
/* edsm.py:Settings>EDSM - Label on checkbox for 'send data'; In files: edsm.py:316; */
|
||||||
|
"Send flight log and CMDR status to EDSM" = "Invia il registro di volo e lo stato del CMDR a EDSM";
|
||||||
|
|
||||||
|
/* prefs.py:Label on button used to open a filesystem folder; In files: prefs.py:706; */
|
||||||
|
"Open Log Folder" = "Cartella Log";
|
||||||
|
|
||||||
|
/* inara.py:Text Inara Show API key; In files: inara.py:305; */
|
||||||
|
"Show API Key" = "Mostra API Key";
|
||||||
/* Language name */
|
/* Language name */
|
||||||
"!Language" = "Italiano";
|
"!Language" = "Italiano";
|
||||||
|
|
||||||
@ -205,12 +213,24 @@
|
|||||||
/* EDMarketConnector.py: Popup-text about 'active' plugins without Python 3.x support; In files: EDMarketConnector.py:2253:2259; */
|
/* EDMarketConnector.py: Popup-text about 'active' plugins without Python 3.x support; In files: EDMarketConnector.py:2253:2259; */
|
||||||
"One or more of your enabled plugins do not yet have support for Python 3.x. Please see the list on the '{PLUGINS}' tab of '{FILE}' > '{SETTINGS}'. You should check if there is an updated version available, else alert the developer that they need to update the code for Python 3.x.\r\n\r\nYou can disable a plugin by renaming its folder to have '{DISABLED}' on the end of the name." = "Uno o più dei tuoi plugin non ha ancora il supporto per Python 3.x. Per favore guarda la lista '{PLUGINS}' nella tab a '{FILE}' > '{SETTINGS}'. Dovresti controllare se ci sono aggiornamenti, altrimenti avvisa gli sviluppatori che devono aggiornare il codice a Python 3.x.\n\nPuoi disabilitare il plugin rinominando la cartella aggiungendo '{DISABLED}' alla fine del nome.";
|
"One or more of your enabled plugins do not yet have support for Python 3.x. Please see the list on the '{PLUGINS}' tab of '{FILE}' > '{SETTINGS}'. You should check if there is an updated version available, else alert the developer that they need to update the code for Python 3.x.\r\n\r\nYou can disable a plugin by renaming its folder to have '{DISABLED}' on the end of the name." = "Uno o più dei tuoi plugin non ha ancora il supporto per Python 3.x. Per favore guarda la lista '{PLUGINS}' nella tab a '{FILE}' > '{SETTINGS}'. Dovresti controllare se ci sono aggiornamenti, altrimenti avvisa gli sviluppatori che devono aggiornare il codice a Python 3.x.\n\nPuoi disabilitare il plugin rinominando la cartella aggiungendo '{DISABLED}' alla fine del nome.";
|
||||||
|
|
||||||
|
/* EDMarketConnector.py: Popup-text about missing FDEVID Files; In files: EDMarketConnector.py:2329; */
|
||||||
|
"FDevID Files not found! Some functionality regarding commodities may be disabled.\r\n\r\n Do you want to open the Wiki page on how to set up submodules?" = "File FDevID non trovati! Alcune funzionalità relative alle commodities potrebbero essere disabilitate.\n\n Vuoi aprire la pagina Wiki su come impostare i sottomoduli?";
|
||||||
|
|
||||||
|
/* EDMarketConnector.py: Popup window title for missing FDEVID files; In files: EDMarketConnector.py:2340; */
|
||||||
|
"FDevIDs: Missing Commodity Files" = "FDevID: file delle Commodity mancanti";
|
||||||
|
|
||||||
/* EDMarketConnector.py: Settings > Plugins tab; prefs.py: Label on Settings > Plugins tab; In files: EDMarketConnector.py:2263; prefs.py:986; */
|
/* EDMarketConnector.py: Settings > Plugins tab; prefs.py: Label on Settings > Plugins tab; In files: EDMarketConnector.py:2263; prefs.py:986; */
|
||||||
"Plugins" = "Plugins";
|
"Plugins" = "Plugins";
|
||||||
|
|
||||||
/* EDMarketConnector.py: Popup window title for list of 'enabled' plugins that don't work with Python 3.x; In files: EDMarketConnector.py:2274; */
|
/* EDMarketConnector.py: Popup window title for list of 'enabled' plugins that don't work with Python 3.x; In files: EDMarketConnector.py:2274; */
|
||||||
"EDMC: Plugins Without Python 3.x Support" = "EDMC: Plugins senza Supporto Python 3.x";
|
"EDMC: Plugins Without Python 3.x Support" = "EDMC: Plugins senza Supporto Python 3.x";
|
||||||
|
|
||||||
|
/* EDMarketConnector.py: Popup window title for list of 'broken' plugins that failed to load; In files: EDMarketConnector.py:2285; */
|
||||||
|
"EDMC: Broken Plugins" = "EDMC: plugin non funzionanti";
|
||||||
|
|
||||||
|
/* EDMarketConnector.py: Popup-text about 'broken' plugins that failed to load; In files: EDMarketConnector.py:2266; */
|
||||||
|
"One or more of your enabled plugins failed to load. Please see the list on the '{PLUGINS}' tab of '{FILE}' > '{SETTINGS}'. This could be caused by a wrong folder structure. The load.py file should be located under plugins/PLUGIN_NAME/load.py.\r\n\r\nYou can disable a plugin by renaming its folder to have '{DISABLED}' on the end of the name." = "Impossibile caricare uno o più plugin abilitati. Consulta l'elenco nella scheda '{PLUGINS}' di '{FILE}' > '{SETTINGS}'. Ciò potrebbe essere causato da un'errata struttura delle cartelle. Il file load.py dovrebbe trovarsi in plugins/PLUGIN_NAME/load.py.\n\nPuoi disabilitare un plugin rinominando la sua cartella in modo che abbia '{DISABLED}' alla fine del nome.";
|
||||||
|
|
||||||
/* journal_lock.py: Title text on popup when Journal directory already locked; In files: journal_lock.py:208; */
|
/* journal_lock.py: Title text on popup when Journal directory already locked; In files: journal_lock.py:208; */
|
||||||
"Journal directory already locked" = "cartella Journal già bloccata";
|
"Journal directory already locked" = "cartella Journal già bloccata";
|
||||||
|
|
||||||
@ -463,6 +483,9 @@
|
|||||||
/* prefs.py: Plugins - Label on URL to documentation about migrating plugins from Python 2.7; In files: prefs.py:962; */
|
/* prefs.py: Plugins - Label on URL to documentation about migrating plugins from Python 2.7; In files: prefs.py:962; */
|
||||||
"Information on migrating plugins" = "Informazioni sulla migrazione dei plugins";
|
"Information on migrating plugins" = "Informazioni sulla migrazione dei plugins";
|
||||||
|
|
||||||
|
/* prefs.py: Plugins - Label for list of 'broken' plugins that failed to load; In files: prefs.py:1039; */
|
||||||
|
"Broken Plugins" = "Plugin non funzionanti";
|
||||||
|
|
||||||
/* prefs.py: Lable on list of user-disabled plugins; In files: prefs.py:977; */
|
/* prefs.py: Lable on list of user-disabled plugins; In files: prefs.py:977; */
|
||||||
"Disabled Plugins" = "Plugin disabilitati";
|
"Disabled Plugins" = "Plugin disabilitati";
|
||||||
|
|
||||||
|
@ -213,12 +213,24 @@
|
|||||||
/* EDMarketConnector.py: Popup-text about 'active' plugins without Python 3.x support; In files: EDMarketConnector.py:2253:2259; */
|
/* EDMarketConnector.py: Popup-text about 'active' plugins without Python 3.x support; In files: EDMarketConnector.py:2253:2259; */
|
||||||
"One or more of your enabled plugins do not yet have support for Python 3.x. Please see the list on the '{PLUGINS}' tab of '{FILE}' > '{SETTINGS}'. You should check if there is an updated version available, else alert the developer that they need to update the code for Python 3.x.\r\n\r\nYou can disable a plugin by renaming its folder to have '{DISABLED}' on the end of the name." = "Jedan ili više aktiviranih dodataka (plugins) nemaju podršku za Python 3.x. Pogledajte listu u '{PLUGINS}' tabu u '{FILE}' > '{SETTINGS}'. Proverite da li postoji nadograđena verzija ili obavesite autora da treba da promeni kod za Python 3.x.\n\nMožete deaktivirati dodatak (plugin) dodavanjem '{DISABLED}' na kraju imena njegovog foldera.";
|
"One or more of your enabled plugins do not yet have support for Python 3.x. Please see the list on the '{PLUGINS}' tab of '{FILE}' > '{SETTINGS}'. You should check if there is an updated version available, else alert the developer that they need to update the code for Python 3.x.\r\n\r\nYou can disable a plugin by renaming its folder to have '{DISABLED}' on the end of the name." = "Jedan ili više aktiviranih dodataka (plugins) nemaju podršku za Python 3.x. Pogledajte listu u '{PLUGINS}' tabu u '{FILE}' > '{SETTINGS}'. Proverite da li postoji nadograđena verzija ili obavesite autora da treba da promeni kod za Python 3.x.\n\nMožete deaktivirati dodatak (plugin) dodavanjem '{DISABLED}' na kraju imena njegovog foldera.";
|
||||||
|
|
||||||
|
/* EDMarketConnector.py: Popup-text about missing FDEVID Files; In files: EDMarketConnector.py:2329; */
|
||||||
|
"FDevID Files not found! Some functionality regarding commodities may be disabled.\r\n\r\n Do you want to open the Wiki page on how to set up submodules?" = "FDevID fajlovi nisu pronađeni! Neke funkcionalnosti vezane za artikle će možda biti deaktivirane.\n\nDa li želite da otvorite Wiki stranu koja objašnjava kako da podesite pod-module?";
|
||||||
|
|
||||||
|
/* EDMarketConnector.py: Popup window title for missing FDEVID files; In files: EDMarketConnector.py:2340; */
|
||||||
|
"FDevIDs: Missing Commodity Files" = "FDevIDs: Nedostaju fajlovi za robu";
|
||||||
|
|
||||||
/* EDMarketConnector.py: Settings > Plugins tab; prefs.py: Label on Settings > Plugins tab; In files: EDMarketConnector.py:2263; prefs.py:986; */
|
/* EDMarketConnector.py: Settings > Plugins tab; prefs.py: Label on Settings > Plugins tab; In files: EDMarketConnector.py:2263; prefs.py:986; */
|
||||||
"Plugins" = "Dodaci (plugins)";
|
"Plugins" = "Dodaci (plugins)";
|
||||||
|
|
||||||
/* EDMarketConnector.py: Popup window title for list of 'enabled' plugins that don't work with Python 3.x; In files: EDMarketConnector.py:2274; */
|
/* EDMarketConnector.py: Popup window title for list of 'enabled' plugins that don't work with Python 3.x; In files: EDMarketConnector.py:2274; */
|
||||||
"EDMC: Plugins Without Python 3.x Support" = "EDMC: Dodaci (plugins) bez Python 3.x podrške";
|
"EDMC: Plugins Without Python 3.x Support" = "EDMC: Dodaci (plugins) bez Python 3.x podrške";
|
||||||
|
|
||||||
|
/* EDMarketConnector.py: Popup window title for list of 'broken' plugins that failed to load; In files: EDMarketConnector.py:2285; */
|
||||||
|
"EDMC: Broken Plugins" = "EDMC: Pokvareni Pluginovi";
|
||||||
|
|
||||||
|
/* EDMarketConnector.py: Popup-text about 'broken' plugins that failed to load; In files: EDMarketConnector.py:2266; */
|
||||||
|
"One or more of your enabled plugins failed to load. Please see the list on the '{PLUGINS}' tab of '{FILE}' > '{SETTINGS}'. This could be caused by a wrong folder structure. The load.py file should be located under plugins/PLUGIN_NAME/load.py.\r\n\r\nYou can disable a plugin by renaming its folder to have '{DISABLED}' on the end of the name." = "Jedan ili više vaših aktivnih pluginova se nije učitao. Molimo pogledajte listu na '{PLUGINS}' tabu u okviru '{FILE}' > '{SETTINGS}'. Obo vi moglo da se desi zbog pogrešne strukture foldera. load.py fajl bi trebao da se nalazi unutar plugins/PLUGIN_NAME/load.py.\n\nPojedinačni plugin možete deaktivirati promenom imena njegovog foldera dodavanjem '{DISABLED}' na kraju.";
|
||||||
|
|
||||||
/* journal_lock.py: Title text on popup when Journal directory already locked; In files: journal_lock.py:208; */
|
/* journal_lock.py: Title text on popup when Journal directory already locked; In files: journal_lock.py:208; */
|
||||||
"Journal directory already locked" = "Žurnal direktorijum je već zaključan";
|
"Journal directory already locked" = "Žurnal direktorijum je već zaključan";
|
||||||
|
|
||||||
@ -471,6 +483,9 @@
|
|||||||
/* prefs.py: Plugins - Label on URL to documentation about migrating plugins from Python 2.7; In files: prefs.py:962; */
|
/* prefs.py: Plugins - Label on URL to documentation about migrating plugins from Python 2.7; In files: prefs.py:962; */
|
||||||
"Information on migrating plugins" = "Informacije o migraciji dodataka (plugins)";
|
"Information on migrating plugins" = "Informacije o migraciji dodataka (plugins)";
|
||||||
|
|
||||||
|
/* prefs.py: Plugins - Label for list of 'broken' plugins that failed to load; In files: prefs.py:1039; */
|
||||||
|
"Broken Plugins" = "Pokvareni pluginovi";
|
||||||
|
|
||||||
/* prefs.py: Lable on list of user-disabled plugins; In files: prefs.py:977; */
|
/* prefs.py: Lable on list of user-disabled plugins; In files: prefs.py:977; */
|
||||||
"Disabled Plugins" = "Deaktivirani dodaci (plugins)";
|
"Disabled Plugins" = "Deaktivirani dodaci (plugins)";
|
||||||
|
|
||||||
|
@ -67,6 +67,6 @@ Please see the [Acknowledgements](https://github.com/EDCD/EDMarketConnector/wiki
|
|||||||
|
|
||||||
License
|
License
|
||||||
-------
|
-------
|
||||||
Copyright © 2015-2019 Jonathan Harris, 2020-2021 EDCD
|
Copyright © 2015-2019 Jonathan Harris, 2020-2024 EDCD
|
||||||
|
|
||||||
Licensed under the [GNU Public License (GPL)](http://www.gnu.org/licenses/gpl-2.0.html) version 2 or later.
|
Licensed under the [GNU Public License (GPL)](http://www.gnu.org/licenses/gpl-2.0.html) version 2 or later.
|
||||||
|
10
build.py
10
build.py
@ -80,8 +80,8 @@ def generate_data_files(
|
|||||||
"modules.json",
|
"modules.json",
|
||||||
"ships.json",
|
"ships.json",
|
||||||
"ships.p", # TODO: Remove in 6.0
|
"ships.p", # TODO: Remove in 6.0
|
||||||
f"{app_name}.VisualElementsManifest.xml",
|
|
||||||
f"{app_name}.ico",
|
f"{app_name}.ico",
|
||||||
|
f"resources/{appcmdname}.ico",
|
||||||
"EDMarketConnector - TRACE.bat",
|
"EDMarketConnector - TRACE.bat",
|
||||||
"EDMarketConnector - localserver-auth.bat",
|
"EDMarketConnector - localserver-auth.bat",
|
||||||
"EDMarketConnector - reset-ui.bat",
|
"EDMarketConnector - reset-ui.bat",
|
||||||
@ -165,15 +165,16 @@ def build() -> None:
|
|||||||
"script": "EDMarketConnector.py",
|
"script": "EDMarketConnector.py",
|
||||||
"icon_resources": [(0, f"{appname}.ico")],
|
"icon_resources": [(0, f"{appname}.ico")],
|
||||||
"other_resources": [
|
"other_resources": [
|
||||||
(24, 1, pathlib.Path(f"{appname}.manifest").read_text(encoding="UTF8"))
|
(24, 1, pathlib.Path(f"resources/{appname}.manifest").read_text(encoding="UTF8"))
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
|
|
||||||
console_config: dict = {
|
console_config: dict = {
|
||||||
"dest_base": appcmdname,
|
"dest_base": appcmdname,
|
||||||
"script": "EDMC.py",
|
"script": "EDMC.py",
|
||||||
|
"icon_resources": [(0, f"resources/{appcmdname}.ico")],
|
||||||
"other_resources": [
|
"other_resources": [
|
||||||
(24, 1, pathlib.Path(f"{appcmdname}.manifest").read_text(encoding="UTF8"))
|
(24, 1, pathlib.Path(f"resources/{appcmdname}.manifest").read_text(encoding="UTF8"))
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -185,7 +186,8 @@ def build() -> None:
|
|||||||
data_files=data_files,
|
data_files=data_files,
|
||||||
options=options,
|
options=options,
|
||||||
)
|
)
|
||||||
except FileNotFoundError:
|
except FileNotFoundError as err:
|
||||||
|
print(err)
|
||||||
sys.exit(
|
sys.exit(
|
||||||
"Build Failed due to Missing Files! Have you set up your submodules? \n"
|
"Build Failed due to Missing Files! Have you set up your submodules? \n"
|
||||||
"https://github.com/EDCD/EDMarketConnector/wiki/Running-from-source"
|
"https://github.com/EDCD/EDMarketConnector/wiki/Running-from-source"
|
||||||
|
@ -54,10 +54,10 @@ appcmdname = 'EDMC'
|
|||||||
# <https://semver.org/#semantic-versioning-specification-semver>
|
# <https://semver.org/#semantic-versioning-specification-semver>
|
||||||
# Major.Minor.Patch(-prerelease)(+buildmetadata)
|
# Major.Minor.Patch(-prerelease)(+buildmetadata)
|
||||||
# NB: Do *not* import this, use the functions appversion() and appversion_nobuild()
|
# NB: Do *not* import this, use the functions appversion() and appversion_nobuild()
|
||||||
_static_appversion = '5.10.1'
|
_static_appversion = '5.10.2'
|
||||||
|
|
||||||
_cached_version: semantic_version.Version | None = None
|
_cached_version: semantic_version.Version | None = None
|
||||||
copyright = '© 2015-2019 Jonathan Harris, 2020-2023 EDCD'
|
copyright = '© 2015-2019 Jonathan Harris, 2020-2024 EDCD'
|
||||||
|
|
||||||
update_feed = 'https://raw.githubusercontent.com/EDCD/EDMarketConnector/releases/edmarketconnector.xml'
|
update_feed = 'https://raw.githubusercontent.com/EDCD/EDMarketConnector/releases/edmarketconnector.xml'
|
||||||
update_interval = 8*60*60 # 8 Hours
|
update_interval = 8*60*60 # 8 Hours
|
||||||
|
@ -45,6 +45,9 @@ class CoriolisConfig:
|
|||||||
self.normal_url = ''
|
self.normal_url = ''
|
||||||
self.beta_url = ''
|
self.beta_url = ''
|
||||||
self.override_mode = ''
|
self.override_mode = ''
|
||||||
|
self.override_text_old_auto = _('Auto') # LANG: Coriolis normal/beta selection - auto
|
||||||
|
self.override_text_old_normal = _('Normal') # LANG: Coriolis normal/beta selection - normal
|
||||||
|
self.override_text_old_beta = _('Beta') # LANG: Coriolis normal/beta selection - beta
|
||||||
|
|
||||||
self.normal_textvar = tk.StringVar()
|
self.normal_textvar = tk.StringVar()
|
||||||
self.beta_textvar = tk.StringVar()
|
self.beta_textvar = tk.StringVar()
|
||||||
@ -87,6 +90,11 @@ def plugin_prefs(parent: ttk.Notebook, cmdr: str | None, is_beta: bool) -> tk.Fr
|
|||||||
PADY = 1 # noqa: N806
|
PADY = 1 # noqa: N806
|
||||||
BOXY = 2 # noqa: N806 # box spacing
|
BOXY = 2 # noqa: N806 # box spacing
|
||||||
|
|
||||||
|
# Save the old text values for the override mode, so we can update them if the language is changed
|
||||||
|
coriolis_config.override_text_old_auto = _('Auto') # LANG: Coriolis normal/beta selection - auto
|
||||||
|
coriolis_config.override_text_old_normal = _('Normal') # LANG: Coriolis normal/beta selection - normal
|
||||||
|
coriolis_config.override_text_old_beta = _('Beta') # LANG: Coriolis normal/beta selection - beta
|
||||||
|
|
||||||
conf_frame = nb.Frame(parent)
|
conf_frame = nb.Frame(parent)
|
||||||
conf_frame.columnconfigure(index=1, weight=1)
|
conf_frame.columnconfigure(index=1, weight=1)
|
||||||
cur_row = 0
|
cur_row = 0
|
||||||
@ -157,6 +165,25 @@ def prefs_changed(cmdr: str | None, is_beta: bool) -> None:
|
|||||||
_('Auto'): 'auto', # LANG: Coriolis normal/beta selection - auto
|
_('Auto'): 'auto', # LANG: Coriolis normal/beta selection - auto
|
||||||
}.get(coriolis_config.override_mode, coriolis_config.override_mode)
|
}.get(coriolis_config.override_mode, coriolis_config.override_mode)
|
||||||
|
|
||||||
|
# Check if the language was changed and the override_mode was valid before the change
|
||||||
|
if coriolis_config.override_mode not in ('beta', 'normal', 'auto'):
|
||||||
|
coriolis_config.override_mode = {
|
||||||
|
coriolis_config.override_text_old_normal: 'normal',
|
||||||
|
coriolis_config.override_text_old_beta: 'beta',
|
||||||
|
coriolis_config.override_text_old_auto: 'auto',
|
||||||
|
}.get(coriolis_config.override_mode, coriolis_config.override_mode)
|
||||||
|
# Language was seemingly changed, so we need to update the textvars
|
||||||
|
if coriolis_config.override_mode in ('beta', 'normal', 'auto'):
|
||||||
|
coriolis_config.override_textvar.set(
|
||||||
|
value={
|
||||||
|
'auto': _('Auto'), # LANG: 'Auto' label for Coriolis site override selection
|
||||||
|
'normal': _('Normal'), # LANG: 'Normal' label for Coriolis site override selection
|
||||||
|
'beta': _('Beta') # LANG: 'Beta' label for Coriolis site override selection
|
||||||
|
# LANG: 'Auto' label for Coriolis site override selection
|
||||||
|
}.get(coriolis_config.override_mode, _('Auto'))
|
||||||
|
)
|
||||||
|
|
||||||
|
# If the override mode is still invalid, default to auto
|
||||||
if coriolis_config.override_mode not in ('beta', 'normal', 'auto'):
|
if coriolis_config.override_mode not in ('beta', 'normal', 'auto'):
|
||||||
logger.warning(f'Unexpected value {coriolis_config.override_mode=!r}. Defaulting to "auto"')
|
logger.warning(f'Unexpected value {coriolis_config.override_mode=!r}. Defaulting to "auto"')
|
||||||
coriolis_config.override_mode = 'auto'
|
coriolis_config.override_mode = 'auto'
|
||||||
|
@ -997,7 +997,18 @@ def journal_entry( # noqa: C901, CCR001
|
|||||||
elif 'KillerName' in entry:
|
elif 'KillerName' in entry:
|
||||||
data['opponentName'] = entry['KillerName']
|
data['opponentName'] = entry['KillerName']
|
||||||
|
|
||||||
new_add_event('addCommanderCombatDeath', entry['timestamp'], data)
|
elif 'KillerShip' in entry:
|
||||||
|
data['opponentName'] = entry['KillerShip']
|
||||||
|
|
||||||
|
# Paranoia in case of e.g. Thargoid activity not having complete data
|
||||||
|
opponent_name_issue = 'opponentName' not in data or data['opponentName'] == ""
|
||||||
|
wing_opponent_names_issue = 'wingOpponentNames' not in data or data['wingOpponentNames'] == []
|
||||||
|
if opponent_name_issue and wing_opponent_names_issue:
|
||||||
|
logger.warning('Dropping addCommanderCombatDeath message'
|
||||||
|
'because opponentName and wingOpponentNames came out as ""')
|
||||||
|
|
||||||
|
else:
|
||||||
|
new_add_event('addCommanderCombatDeath', entry['timestamp'], data)
|
||||||
|
|
||||||
elif event_name == 'Interdicted':
|
elif event_name == 'Interdicted':
|
||||||
data = OrderedDict([('starsystemName', system),
|
data = OrderedDict([('starsystemName', system),
|
||||||
@ -1014,8 +1025,11 @@ def journal_entry( # noqa: C901, CCR001
|
|||||||
elif 'Power' in entry:
|
elif 'Power' in entry:
|
||||||
data['opponentName'] = entry['Power']
|
data['opponentName'] = entry['Power']
|
||||||
|
|
||||||
|
elif 'IsThargoid' in entry and entry['IsThargoid']:
|
||||||
|
data['opponentName'] = 'Thargoid'
|
||||||
|
|
||||||
# Paranoia in case of e.g. Thargoid activity not having complete data
|
# Paranoia in case of e.g. Thargoid activity not having complete data
|
||||||
if data['opponentName'] == "":
|
if 'opponentName' not in data or data['opponentName'] == "":
|
||||||
logger.warning('Dropping addCommanderCombatInterdicted message because opponentName came out as ""')
|
logger.warning('Dropping addCommanderCombatInterdicted message because opponentName came out as ""')
|
||||||
|
|
||||||
else:
|
else:
|
||||||
@ -1037,31 +1051,42 @@ def journal_entry( # noqa: C901, CCR001
|
|||||||
elif 'Power' in entry:
|
elif 'Power' in entry:
|
||||||
data['opponentName'] = entry['Power']
|
data['opponentName'] = entry['Power']
|
||||||
|
|
||||||
|
# Shouldn't be needed here as Interdiction events can't target Thargoids (yet)
|
||||||
|
# but done just in case of future changes or so
|
||||||
|
elif 'IsThargoid' in entry and entry['IsThargoid']:
|
||||||
|
data['opponentName'] = 'Thargoid'
|
||||||
|
|
||||||
# Paranoia in case of e.g. Thargoid activity not having complete data
|
# Paranoia in case of e.g. Thargoid activity not having complete data
|
||||||
if data['opponentName'] == "":
|
if 'opponentName' not in data or data['opponentName'] == "":
|
||||||
logger.warning('Dropping addCommanderCombatInterdiction message because opponentName came out as ""')
|
logger.warning('Dropping addCommanderCombatInterdiction message because opponentName came out as ""')
|
||||||
|
|
||||||
else:
|
else:
|
||||||
new_add_event('addCommanderCombatInterdiction', entry['timestamp'], data)
|
new_add_event('addCommanderCombatInterdiction', entry['timestamp'], data)
|
||||||
|
|
||||||
elif event_name == 'EscapeInterdiction':
|
elif event_name == 'EscapeInterdiction':
|
||||||
|
data = OrderedDict([
|
||||||
|
('starsystemName', system),
|
||||||
|
('isPlayer', entry['IsPlayer']),
|
||||||
|
])
|
||||||
|
|
||||||
|
if 'Interdictor' in entry:
|
||||||
|
data['opponentName'] = entry['Interdictor']
|
||||||
|
|
||||||
|
elif 'Faction' in entry:
|
||||||
|
data['opponentName'] = entry['Faction']
|
||||||
|
|
||||||
|
elif 'Power' in entry:
|
||||||
|
data['opponentName'] = entry['Power']
|
||||||
|
|
||||||
|
elif 'isThargoid' in entry and entry['isThargoid']:
|
||||||
|
data['opponentName'] = 'Thargoid'
|
||||||
|
|
||||||
# Paranoia in case of e.g. Thargoid activity not having complete data
|
# Paranoia in case of e.g. Thargoid activity not having complete data
|
||||||
if entry.get('Interdictor') is None or entry['Interdictor'] == "":
|
if 'opponentName' not in data or data['opponentName'] == "":
|
||||||
logger.warning(
|
logger.warning('Dropping addCommanderCombatInterdiction message because opponentName came out as ""')
|
||||||
'Dropping addCommanderCombatInterdictionEscape message'
|
|
||||||
'because opponentName came out as ""'
|
|
||||||
)
|
|
||||||
|
|
||||||
else:
|
else:
|
||||||
new_add_event(
|
new_add_event('addCommanderCombatInterdictionEscape', entry['timestamp'], data)
|
||||||
'addCommanderCombatInterdictionEscape',
|
|
||||||
entry['timestamp'],
|
|
||||||
{
|
|
||||||
'starsystemName': system,
|
|
||||||
'opponentName': entry['Interdictor'],
|
|
||||||
'isPlayer': entry['IsPlayer'],
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
elif event_name == 'PVPKill':
|
elif event_name == 'PVPKill':
|
||||||
new_add_event(
|
new_add_event(
|
||||||
|
@ -5,30 +5,30 @@ wheel
|
|||||||
# We can't rely on just picking this up from either the base (not venv),
|
# We can't rely on just picking this up from either the base (not venv),
|
||||||
# or venv-init-time version. Specify here so that dependabot will prod us
|
# or venv-init-time version. Specify here so that dependabot will prod us
|
||||||
# about new versions.
|
# about new versions.
|
||||||
setuptools==69.0.3
|
setuptools==69.1.1
|
||||||
|
|
||||||
# Static analysis tools
|
# Static analysis tools
|
||||||
flake8==6.1.0
|
flake8==7.0.0
|
||||||
flake8-annotations-coverage==0.0.6
|
flake8-annotations-coverage==0.0.6
|
||||||
flake8-cognitive-complexity==0.1.0
|
flake8-cognitive-complexity==0.1.0
|
||||||
flake8-comprehensions==3.14.0
|
flake8-comprehensions==3.14.0
|
||||||
flake8-docstrings==1.7.0
|
flake8-docstrings==1.7.0
|
||||||
flake8-json==23.7.0
|
flake8-json==23.7.0
|
||||||
flake8-noqa==1.3.2
|
flake8-noqa==1.4.0
|
||||||
flake8-polyfill==1.0.2
|
flake8-polyfill==1.0.2
|
||||||
flake8-use-fstring==1.4
|
flake8-use-fstring==1.4
|
||||||
|
|
||||||
mypy==1.8.0
|
mypy==1.8.0
|
||||||
pep8-naming==0.13.3
|
pep8-naming==0.13.3
|
||||||
safety==2.3.5
|
safety==2.3.5
|
||||||
types-requests==2.31.0.20231231
|
types-requests==2.31.0.20240125
|
||||||
types-pkg-resources==0.1.3
|
types-pkg-resources==0.1.3
|
||||||
|
|
||||||
# Code formatting tools
|
# Code formatting tools
|
||||||
autopep8==2.0.4
|
autopep8==2.0.4
|
||||||
|
|
||||||
# Git pre-commit checking
|
# Git pre-commit checking
|
||||||
pre-commit==3.6.0
|
pre-commit==3.6.2
|
||||||
|
|
||||||
# HTML changelogs
|
# HTML changelogs
|
||||||
grip==4.6.2
|
grip==4.6.2
|
||||||
@ -38,9 +38,9 @@ grip==4.6.2
|
|||||||
py2exe==0.13.0.1; sys_platform == 'win32'
|
py2exe==0.13.0.1; sys_platform == 'win32'
|
||||||
|
|
||||||
# Testing
|
# Testing
|
||||||
pytest==7.4.3
|
pytest==8.0.2
|
||||||
pytest-cov==4.1.0 # Pytest code coverage support
|
pytest-cov==4.1.0 # Pytest code coverage support
|
||||||
coverage[toml]==7.3.4 # pytest-cov dep. This is here to ensure that it includes TOML support for pyproject.toml configs
|
coverage[toml]==7.4.1 # pytest-cov dep. This is here to ensure that it includes TOML support for pyproject.toml configs
|
||||||
coverage-conditional-plugin==0.9.0
|
coverage-conditional-plugin==0.9.0
|
||||||
# For manipulating folder permissions and the like.
|
# For manipulating folder permissions and the like.
|
||||||
pywin32==306; sys_platform == 'win32'
|
pywin32==306; sys_platform == 'win32'
|
||||||
|
@ -16,7 +16,7 @@ AppPublisher={#MyAppPublisher}
|
|||||||
AppPublisherURL={#MyAppURL}
|
AppPublisherURL={#MyAppURL}
|
||||||
AppSupportURL={#SuppURL}
|
AppSupportURL={#SuppURL}
|
||||||
AppUpdatesURL={#SuppURL}
|
AppUpdatesURL={#SuppURL}
|
||||||
AppCopyright=Copyright (C) 2015-2019 Jonathan Harris, 2020-2023 EDCD
|
AppCopyright=Copyright (C) 2015-2019 Jonathan Harris, 2020-2024 EDCD
|
||||||
AllowUNCPath=no
|
AllowUNCPath=no
|
||||||
AllowNetworkDrive=no
|
AllowNetworkDrive=no
|
||||||
DefaultDirName={autopf}\{#MyAppName}
|
DefaultDirName={autopf}\{#MyAppName}
|
||||||
|
BIN
resources/edmc.ico
Normal file
BIN
resources/edmc.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 25 KiB |
BIN
resources/io.edcd.EDMarketConnector.cmd.psd
Normal file
BIN
resources/io.edcd.EDMarketConnector.cmd.psd
Normal file
Binary file not shown.
@ -291,7 +291,7 @@ if __name__ == '__main__':
|
|||||||
print(f'NEW! {file}:{c.lineno}: {arg!r}')
|
print(f'NEW! {file}:{c.lineno}: {arg!r}')
|
||||||
|
|
||||||
for old in set(template) ^ seen:
|
for old in set(template) ^ seen:
|
||||||
print(f'No longer used: {old}')
|
print(f'No longer used: {old!r}')
|
||||||
|
|
||||||
elif args.json:
|
elif args.json:
|
||||||
to_print_data = [
|
to_print_data = [
|
||||||
|
Loading…
x
Reference in New Issue
Block a user