From 526594a90d3d5d2e7595ef061e9ef0fceb881dfa Mon Sep 17 00:00:00 2001 From: Jazzzny Date: Wed, 4 Oct 2023 17:12:51 -0400 Subject: [PATCH] Fix up --- resources/sys_patch/sys_patch_auto.py | 97 +++++++++++++++++++++++---- resources/wx_gui/gui_main_menu.py | 34 ++++++---- 2 files changed, 106 insertions(+), 25 deletions(-) diff --git a/resources/sys_patch/sys_patch_auto.py b/resources/sys_patch/sys_patch_auto.py index 0c275919a..eefe3e61d 100644 --- a/resources/sys_patch/sys_patch_auto.py +++ b/resources/sys_patch/sys_patch_auto.py @@ -1,6 +1,10 @@ # Copyright (C) 2022, Mykola Grymalyuk +# Copyright (c) 2023 Jazzzny import wx +import wx.html2 +import requests +import markdown2 import logging import plistlib import subprocess @@ -51,19 +55,85 @@ class AutomaticSysPatch: logging.info(f"- Found new version: {version}") app = wx.App() - frame = wx.Frame(None, -1, "OpenCore Legacy Patcher") - dialog = wx.MessageDialog( - parent=frame, - message=f"Current Version: {self.constants.patcher_version}{' (Nightly)' if not self.constants.commit_info[0].startswith('refs/tags') else ''}\nNew version: {version}\nWould you like to update?", - caption="Update Available for OpenCore Legacy Patcher!", - style=wx.YES_NO | wx.CANCEL | wx.ICON_QUESTION - ) - dialog.SetYesNoCancelLabels("Download and install", "View on Github", "Ignore") - response = dialog.ShowModal() - if response == wx.ID_YES: - gui_entry.EntryPoint(self.constants).start(entry=gui_entry.SupportedEntryPoints.UPDATE_APP) - elif response == wx.ID_NO: + mainframe = wx.Frame(None, -1, "OpenCore Legacy Patcher") + + ID_GITHUB = wx.NewId() + ID_UPDATE = wx.NewId() + + url = f"https://raw.githubusercontent.com/dortania/OpenCore-Legacy-Patcher/{version}/CHANGELOG.md" + response = requests.get(url) + changelog = response.text.split(f"## {self.constants.patcher_version}\n")[0] + + html_markdown = markdown2.markdown(changelog) + html_css = """ + + """ + frame = wx.Dialog(None, -1, title="", size=(600, 400)) + frame.SetMinSize((600, 400)) + frame.SetWindowStyle(wx.STAY_ON_TOP) + panel = wx.Panel(frame) + sizer = wx.BoxSizer(wx.VERTICAL) + sizer.AddSpacer(10) + self.title_text = wx.StaticText(panel, label="A new version of OpenCore Legacy Patcher is available!") + self.description = wx.StaticText(panel, label=f"OpenCore Legacy Patcher {version} is now available - You have {self.constants.patcher_version}. Would you like to update?") + self.title_text.SetFont(wx.Font(19, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, False, ".AppleSystemUIFont")) + self.description.SetFont(wx.Font(13, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, ".AppleSystemUIFont")) + self.web_view = wx.html2.WebView.New(panel, style=wx.BORDER_SUNKEN) + html_code = html_css+html_markdown.replace("OpenCore Legacy Patcher changelog", "") + self.web_view.SetPage(html_code, "") + self.web_view.Bind(wx.html2.EVT_WEBVIEW_NEWWINDOW, self._onWebviewNav) + self.web_view.EnableContextMenu(False) + self.close_button = wx.Button(panel, label="Ignore") + self.close_button.Bind(wx.EVT_BUTTON, lambda event: frame.EndModal(wx.ID_CANCEL)) + self.view_button = wx.Button(panel, ID_GITHUB, label="View on GitHub") + self.view_button.Bind(wx.EVT_BUTTON, lambda event: frame.EndModal(ID_GITHUB)) + self.install_button = wx.Button(panel, label="Download and Install") + self.install_button.Bind(wx.EVT_BUTTON, lambda event: frame.EndModal(ID_UPDATE)) + self.install_button.SetDefault() + + buttonsizer = wx.BoxSizer(wx.HORIZONTAL) + buttonsizer.Add(self.close_button, 0, wx.ALIGN_CENTRE | wx.RIGHT, 5) + buttonsizer.Add(self.view_button, 0, wx.ALIGN_CENTRE | wx.LEFT|wx.RIGHT, 5) + buttonsizer.Add(self.install_button, 0, wx.ALIGN_CENTRE | wx.LEFT, 5) + sizer = wx.BoxSizer(wx.VERTICAL) + sizer.Add(self.title_text, 0, wx.ALIGN_CENTRE | wx.TOP, 20) + sizer.Add(self.description, 0, wx.ALIGN_CENTRE | wx.BOTTOM, 20) + sizer.Add(self.web_view, 1, wx.EXPAND | wx.LEFT|wx.RIGHT, 10) + sizer.Add(buttonsizer, 0, wx.ALIGN_RIGHT | wx.ALL, 20) + panel.SetSizer(sizer) + frame.Centre() + + result = frame.ShowModal() + + + if result == ID_GITHUB: webbrowser.open(dict["Github Link"]) + elif result == ID_UPDATE: + gui_entry.EntryPoint(self.constants).start(entry=gui_entry.SupportedEntryPoints.UPDATE_APP) + + return if utilities.check_seal() is True: @@ -127,6 +197,9 @@ class AutomaticSysPatch: if self._determine_if_versions_match(): self._determine_if_boot_matches() + def _onWebviewNav(self, event): + url = event.GetURL() + webbrowser.open(url) def _determine_if_versions_match(self): """ diff --git a/resources/wx_gui/gui_main_menu.py b/resources/wx_gui/gui_main_menu.py index bafdf1344..0ebf0b538 100644 --- a/resources/wx_gui/gui_main_menu.py +++ b/resources/wx_gui/gui_main_menu.py @@ -1,4 +1,6 @@ # Generate GUI for main menu +# Portions of this file Copyright (c) 2023 Jazzzny + import wx import wx.html2 import markdown2 @@ -338,6 +340,9 @@ class MainFrame(wx.Frame): def on_update(self, oclp_url: str, oclp_version: str, oclp_github_url: str): + ID_GITHUB = wx.NewId() + ID_UPDATE = wx.NewId() + url = f"https://raw.githubusercontent.com/dortania/OpenCore-Legacy-Patcher/{oclp_version}/CHANGELOG.md" response = requests.get(url) changelog = response.text.split(f"## {self.constants.patcher_version}\n")[0] @@ -368,7 +373,7 @@ class MainFrame(wx.Frame): } """ - frame = wx.Frame(None, -1, title="", size=(600, 400)) + frame = wx.Dialog(None, -1, title="", size=(600, 400)) frame.SetMinSize((600, 400)) frame.SetWindowStyle(wx.STAY_ON_TOP) panel = wx.Panel(frame) @@ -384,11 +389,11 @@ class MainFrame(wx.Frame): self.web_view.Bind(wx.html2.EVT_WEBVIEW_NEWWINDOW, self._onWebviewNav) self.web_view.EnableContextMenu(False) self.close_button = wx.Button(panel, label="Ignore") - self.close_button.Bind(wx.EVT_BUTTON, lambda event: frame.Close()) - self.view_button = wx.Button(panel, label="View on GitHub") - self.view_button.Bind(wx.EVT_BUTTON, lambda event: (webbrowser.open(oclp_github_url), frame.Close())) + self.close_button.Bind(wx.EVT_BUTTON, lambda event: frame.EndModal(wx.ID_CANCEL)) + self.view_button = wx.Button(panel, ID_GITHUB, label="View on GitHub") + self.view_button.Bind(wx.EVT_BUTTON, lambda event: frame.EndModal(ID_GITHUB)) self.install_button = wx.Button(panel, label="Download and Install") - self.install_button.Bind(wx.EVT_BUTTON, lambda event: self._onUpdateChosen(frame, oclp_url, oclp_version)) + self.install_button.Bind(wx.EVT_BUTTON, lambda event: frame.EndModal(ID_UPDATE)) self.install_button.SetDefault() buttonsizer = wx.BoxSizer(wx.HORIZONTAL) @@ -401,20 +406,23 @@ class MainFrame(wx.Frame): sizer.Add(self.web_view, 1, wx.EXPAND | wx.LEFT|wx.RIGHT, 10) sizer.Add(buttonsizer, 0, wx.ALIGN_RIGHT | wx.ALL, 20) panel.SetSizer(sizer) - frame.Show() frame.Centre() - def _onWebviewNav(self, event): - url = event.GetURL() - webbrowser.open(url) + result = frame.ShowModal() + - def _onUpdateChosen(self, frame, oclp_url, oclp_version): - frame.Close() - gui_update.UpdateFrame( + if result == ID_GITHUB: + webbrowser.open(oclp_github_url) + elif result == ID_UPDATE: + gui_update.UpdateFrame( parent=self, title=self.title, global_constants=self.constants, screen_location=self.GetPosition(), url=oclp_url, version_label=oclp_version - ) \ No newline at end of file + ) + + def _onWebviewNav(self, event): + url = event.GetURL() + webbrowser.open(url) \ No newline at end of file