mirror of
https://github.com/EDCD/EDMarketConnector.git
synced 2025-04-15 00:30:33 +03:00
Added warning popup on start
Popup shows on start when there are killswitches that match the current version.
This commit is contained in:
parent
6374fbbeb8
commit
81e2cd2f92
@ -1435,6 +1435,50 @@ Locale LC_TIME: {locale.getlocale(locale.LC_TIME)}'''
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def setup_killswitches():
|
||||||
|
"""Download and setup the main killswitch list."""
|
||||||
|
logger.debug('fetching killswitches...')
|
||||||
|
killswitch.setup_main_list()
|
||||||
|
|
||||||
|
|
||||||
|
def show_killswitch_poppup(root=None):
|
||||||
|
"""Show a warning popup if there are any killswitches that match the current version."""
|
||||||
|
if len(kills := killswitch.kills_for_version()) == 0:
|
||||||
|
return
|
||||||
|
|
||||||
|
text = (
|
||||||
|
"Some EDMC Features have been disabled for known issues.\n"
|
||||||
|
"Please update EDMC as soon as possible to resolve any issues.\n"
|
||||||
|
)
|
||||||
|
|
||||||
|
tl = tk.Toplevel(root)
|
||||||
|
tl.wm_attributes('-topmost', True)
|
||||||
|
tl.geometry(f'+{root.winfo_rootx()}+{root.winfo_rooty()}')
|
||||||
|
|
||||||
|
tl.columnconfigure(1, weight=1)
|
||||||
|
tl.title("EDMC Features have been disabled")
|
||||||
|
|
||||||
|
frame = tk.Frame(tl)
|
||||||
|
frame.grid()
|
||||||
|
t = tk.Label(frame, text=text)
|
||||||
|
t.grid(columnspan=2)
|
||||||
|
idx = 1
|
||||||
|
|
||||||
|
for version in kills:
|
||||||
|
tk.Label(frame, text=f'Version: {version.version}').grid(row=idx, sticky=tk.W)
|
||||||
|
idx += 1
|
||||||
|
for id, reason in version.kills.items():
|
||||||
|
tk.Label(frame, text=id).grid(column=0, row=idx, sticky=tk.W, padx=(10, 0))
|
||||||
|
tk.Label(frame, text=reason).grid(column=1, row=idx, sticky=tk.E, padx=(0, 10))
|
||||||
|
idx += 1
|
||||||
|
idx += 1
|
||||||
|
|
||||||
|
ok_button = tk.Button(frame, text="ok", command=tl.destroy)
|
||||||
|
ok_button.grid(columnspan=2, sticky=tk.EW)
|
||||||
|
|
||||||
|
theme.apply(tl)
|
||||||
|
|
||||||
|
|
||||||
# Run the app
|
# Run the app
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
# Command-line arguments
|
# Command-line arguments
|
||||||
@ -1531,7 +1575,8 @@ sys.path: {sys.path}'''
|
|||||||
|
|
||||||
except Exception:
|
except Exception:
|
||||||
logger.exception(
|
logger.exception(
|
||||||
f"Exception other than locale.Error on setting LC_ALL=('{locale_startup[0]}', 'UTF_8')")
|
f"Exception other than locale.Error on setting LC_ALL=('{locale_startup[0]}', 'UTF_8')"
|
||||||
|
)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
log_locale('After switching to UTF-8 encoding (same language)')
|
log_locale('After switching to UTF-8 encoding (same language)')
|
||||||
@ -1566,9 +1611,7 @@ sys.path: {sys.path}'''
|
|||||||
|
|
||||||
Translations.install(config.get_str('language')) # Can generate errors so wait til log set up
|
Translations.install(config.get_str('language')) # Can generate errors so wait til log set up
|
||||||
|
|
||||||
logger.debug('fetching killswitches...')
|
setup_killswitches()
|
||||||
killswitch.setup_main_list()
|
|
||||||
|
|
||||||
root = tk.Tk(className=appname.lower())
|
root = tk.Tk(className=appname.lower())
|
||||||
|
|
||||||
# UI Scaling
|
# UI Scaling
|
||||||
@ -1622,6 +1665,7 @@ sys.path: {sys.path}'''
|
|||||||
root.wm_attributes('-alpha', ui_transparency / 100)
|
root.wm_attributes('-alpha', ui_transparency / 100)
|
||||||
|
|
||||||
root.after(0, messagebox_not_py3)
|
root.after(0, messagebox_not_py3)
|
||||||
|
root.after(1, show_killswitch_poppup, root)
|
||||||
root.mainloop()
|
root.mainloop()
|
||||||
|
|
||||||
logger.info('Exiting')
|
logger.info('Exiting')
|
||||||
|
@ -51,14 +51,23 @@ class KillSwitchSet:
|
|||||||
|
|
||||||
return DisabledResult(False, "")
|
return DisabledResult(False, "")
|
||||||
|
|
||||||
def is_disabled(self, id: str, *, version=_current_version) -> bool:
|
def is_disabled(self, id: str, *, version: semantic_version.Version = _current_version) -> bool:
|
||||||
"""Return whether or not a given feature ID is disabled for the given version."""
|
"""Return whether or not a given feature ID is disabled for the given version."""
|
||||||
return self.get_disabled(id, version=version).disabled
|
return self.get_disabled(id, version=version).disabled
|
||||||
|
|
||||||
def get_reason(self, id: str, version=_current_version) -> str:
|
def get_reason(self, id: str, version: semantic_version.Version = _current_version) -> str:
|
||||||
"""Return a reason for why the given id is disabled for the given version, if any."""
|
"""Return a reason for why the given id is disabled for the given version, if any."""
|
||||||
return self.get_disabled(id, version=version).reason
|
return self.get_disabled(id, version=version).reason
|
||||||
|
|
||||||
|
def kills_for_version(self, version: semantic_version.Version = _current_version) -> List[KillSwitch]:
|
||||||
|
"""
|
||||||
|
Get all killswitch entries that apply to the given version.
|
||||||
|
|
||||||
|
:param version: the version to check against, defaults to the current EDMC version
|
||||||
|
:return: the matching kill switches
|
||||||
|
"""
|
||||||
|
return [k for k in self.kill_switches if version in k.version]
|
||||||
|
|
||||||
def __str__(self) -> str:
|
def __str__(self) -> str:
|
||||||
"""Return a string representation of KillSwitchSet."""
|
"""Return a string representation of KillSwitchSet."""
|
||||||
return f'KillSwitchSet: {str(self.kill_switches)}'
|
return f'KillSwitchSet: {str(self.kill_switches)}'
|
||||||
@ -172,16 +181,21 @@ def get_disabled(id: str, *, version: semantic_version.Version = _current_versio
|
|||||||
return active.get_disabled(id, version=version)
|
return active.get_disabled(id, version=version)
|
||||||
|
|
||||||
|
|
||||||
def is_disabled(id: str, *, version=_current_version) -> bool:
|
def is_disabled(id: str, *, version: semantic_version.Version = _current_version) -> bool:
|
||||||
"""Query the global KillSwitchSet#is_disabled method."""
|
"""Query the global KillSwitchSet#is_disabled method."""
|
||||||
return active.is_disabled(id, version=version)
|
return active.is_disabled(id, version=version)
|
||||||
|
|
||||||
|
|
||||||
def get_reason(id: str, *, version=_current_version) -> str:
|
def get_reason(id: str, *, version: semantic_version.Version = _current_version) -> str:
|
||||||
"""Query the global KillSwitchSet#get_reason method."""
|
"""Query the global KillSwitchSet#get_reason method."""
|
||||||
return active.get_reason(id, version=version)
|
return active.get_reason(id, version=version)
|
||||||
|
|
||||||
|
|
||||||
|
def kills_for_version(version: semantic_version.Version = _current_version) -> List[KillSwitch]:
|
||||||
|
"""Query the global KillSwitchSet for kills matching a particular version."""
|
||||||
|
return active.kills_for_version(version)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
setup_main_list()
|
setup_main_list()
|
||||||
print(f'{_current_version=}')
|
print(f'{_current_version=}')
|
||||||
|
Loading…
x
Reference in New Issue
Block a user