mirror of
https://github.com/TriM-Organization/Linglun-Converter.git
synced 2024-11-14 11:27:33 +08:00
148 lines
5.9 KiB
Python
148 lines
5.9 KiB
Python
import wx
|
||
import wx.html
|
||
|
||
|
||
class HTMLFrame(wx.Frame):
|
||
"""桌面程序主窗口类"""
|
||
|
||
def __init__(
|
||
self,
|
||
parent,
|
||
tip_text,
|
||
web_text,
|
||
window_title: str = "新版本已发布",
|
||
bg_colour: tuple = (0, 0, 0),
|
||
window_size: tuple = (800, 480),
|
||
):
|
||
"""构造函数"""
|
||
|
||
wx.Frame.__init__(
|
||
self,
|
||
parent,
|
||
id=wx.ID_ANY,
|
||
title=window_title,
|
||
pos=wx.DefaultPosition,
|
||
size=window_size,
|
||
style=wx.DEFAULT_FRAME_STYLE | wx.TAB_TRAVERSAL,
|
||
)
|
||
|
||
# self.SetIcon(wx.Icon('', wx.BITMAP_TYPE_ICO))
|
||
self.SetBackgroundColour(bg_colour)
|
||
self.Center()
|
||
|
||
self.SetSizeHints(wx.DefaultSize, wx.DefaultSize)
|
||
|
||
bSizer1 = wx.BoxSizer(wx.VERTICAL)
|
||
|
||
self.m_staticText1 = wx.StaticText(
|
||
self,
|
||
wx.ID_ANY,
|
||
tip_text,
|
||
wx.DefaultPosition,
|
||
wx.DefaultSize,
|
||
wx.ALIGN_CENTER_HORIZONTAL,
|
||
)
|
||
self.m_staticText1.Wrap(-1)
|
||
|
||
self.m_staticText1.SetFont(
|
||
wx.Font(
|
||
wx.NORMAL_FONT.GetPointSize() * 2,
|
||
wx.FONTFAMILY_DEFAULT,
|
||
wx.FONTSTYLE_NORMAL,
|
||
wx.FONTWEIGHT_NORMAL,
|
||
False,
|
||
"OPPOSans M",
|
||
)
|
||
)
|
||
|
||
bSizer1.Add(self.m_staticText1, 3, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL, 5)
|
||
|
||
self.m_htmlWin1 = wx.html.HtmlWindow(
|
||
self,
|
||
wx.ID_ANY,
|
||
wx.DefaultPosition,
|
||
wx.DefaultSize,
|
||
wx.html.HW_SCROLLBAR_AUTO,
|
||
)
|
||
self.m_htmlWin1.SetFont(
|
||
wx.Font(
|
||
wx.NORMAL_FONT.GetPointSize(),
|
||
wx.FONTFAMILY_DEFAULT,
|
||
wx.FONTSTYLE_NORMAL,
|
||
wx.FONTWEIGHT_NORMAL,
|
||
False,
|
||
"OPPOSans R",
|
||
)
|
||
)
|
||
self.m_htmlWin1.SetStandardFonts(normal_face="OPPOSans R")
|
||
|
||
bSizer1.Add(self.m_htmlWin1, 5, wx.EXPAND | wx.RESERVE_SPACE_EVEN_IF_HIDDEN, 5)
|
||
|
||
bSizer2 = wx.BoxSizer(wx.HORIZONTAL)
|
||
|
||
self.m_button1 = wx.Button(
|
||
self, wx.ID_ANY, "取消", wx.DefaultPosition, wx.DefaultSize, 0
|
||
)
|
||
bSizer2.Add(self.m_button1, 0, wx.ALL, 5)
|
||
|
||
self.m_button2 = wx.Button(
|
||
self, wx.ID_ANY, "更新", wx.DefaultPosition, wx.DefaultSize, 0
|
||
)
|
||
bSizer2.Add(self.m_button2, 0, wx.ALL, 5)
|
||
|
||
bSizer1.Add(bSizer2, 0, wx.ALIGN_RIGHT, 5)
|
||
|
||
self.SetSizer(bSizer1)
|
||
self.Layout()
|
||
|
||
self.Centre(wx.BOTH)
|
||
|
||
self.m_htmlWin1.SetPage(web_text)
|
||
|
||
# Connect Events
|
||
self.m_button1.Bind(wx.EVT_BUTTON, self.on_Cancel_Click)
|
||
self.m_button2.Bind(wx.EVT_BUTTON, self.on_Update_Click)
|
||
|
||
self.ok = False
|
||
|
||
def __del__(self):
|
||
# return self.ok
|
||
pass
|
||
|
||
def getok(self) -> bool:
|
||
return self.ok
|
||
|
||
# Virtual event handlers, override them in your derived class
|
||
def on_Cancel_Click(self, event):
|
||
self.ok = False
|
||
self.Destroy()
|
||
|
||
def on_Update_Click(self, event):
|
||
self.ok = True
|
||
self.Destroy()
|
||
|
||
|
||
def go_update_tip(tip_text: str, html_context: str) -> bool:
|
||
app = wx.App()
|
||
frame = HTMLFrame(
|
||
None,
|
||
tip_text,
|
||
html_context,
|
||
bg_colour=wx.SystemSettings.GetColour(wx.SYS_COLOUR_MENU),
|
||
)
|
||
frame.Show()
|
||
app.MainLoop()
|
||
return frame.getok()
|
||
|
||
|
||
if __name__ == "__main__":
|
||
go_update_tip(
|
||
"!有新版本!\n最新的 {app} 已经是 {latest} 版本,当前您正在使用的仍是 {current} 版本,是否更新?",
|
||
'<ol>\n<li>\n<strong>[修复]</strong> 完成<ahref="https://gitee.com/TriM-Organization/Linglun-Converter/issues/I8YN22" rel="nofollow noreferrer noopener"target="_blank">#I8YN22</a>问题的修复,解决转换错误的问题</li>\n<li>\n<strong>[新增]</strong>支持选择自定的乐器对照表</li>\n<li>\n<strong>[新增]</strong>支持自选距离音量算法</li>\n<li>\n<strong>[新增]</strong>使用Packer以打包发行版(详情如下方说明)</li>\n<li>\n<strong>[优化]</strong>提高调用效率,优化代码结构</li>\n<li>\n<strong>[优化]</strong>提升部分注释可读性</li>\n</ol>\n',
|
||
)
|
||
|
||
go_update_tip(
|
||
"!有新版本!\n最新的 音·创 已经是 1.7.3 版本,当前您正在使用的仍是 1.7.0 版本,是否更新?",
|
||
'<ol>\n<li>\n<strong>[修复]</strong> 完成<a href="https://gitee.com/TriM-Organization/Linglun-Converter/issues/I8YN22" rel="nofollow noreferrer noopener" target="_blank">#I8YN22</a>问题的修复,解决转换错误的问题</li>\n<li>\n<strong>[新增]</strong> 支持选择自定的乐器对照表</li>\n<li>\n<strong>[新增]</strong> 支持自选距离音量算法</li>\n<li>\n<strong>[新增]</strong> 使用Packer以打包发行版(详情如下方说明)</li>\n<li>\n<strong>[优化]</strong> 提高调用效率,优 化代码结构</li>\n<li>\n<strong>[优化]</strong> 提升部分注释可读性</li>\n</ol>\n<h2>打包文件结构</h2>\n<p>我们使用Python库 <code>dill</code> 和 <code>Brotli</code> 对整个库的包体进行打包,方式如下:</p>\n<div class="markdown-code-block">\n<pre lang="python" class="python"><code>packing_bytes = brotli.compress(dill.dumps(sth,))\n</code></pre>\n<div class="markdown-code-block-copy-btn"></div>\n</div>\n<p>每个包中的内容为:</p>\n<div class="markdown-code-block">\n<pre lang="python" class="python"><code>MSCT_MAIN = (\n Musicreater,\n Musicreater.experiment,\n Musicreater.previous,\n)\n\nMSCT_PLUGIN = (Musicreater.plugin,)\n\nMSCT_PLUGIN_FUNCTION = (\n to_addon_pack_in_delay,\n to_addon_pack_in_repeater,\n to_addon_pack_in_score,\n to_mcstructure_file_in_delay,\n to_mcstructure_file_in_repeater,\n to_mcstructure_file_in_score,\n to_BDX_file_in_delay,\n to_BDX_file_in_score,\n)\n</code></pre>\n<div class="markdown-code-block-copy-btn"></div>\n</div>',
|
||
)
|