mirror of
https://github.com/TriM-Organization/Linglun-Converter.git
synced 2025-12-20 03:16:59 +00:00
Compare commits
8 Commits
LLC_GUI_v0
...
v1.1.0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c64d9c440f | ||
|
|
28ec743b86 | ||
|
|
0139d0f130 | ||
|
|
24cf054cf0 | ||
|
|
81b824feed | ||
|
|
cb3c84d4ef | ||
|
|
264d1ec11c | ||
|
|
eaefb6f987 |
4
.gitignore
vendored
4
.gitignore
vendored
@@ -13,6 +13,10 @@ __pycache__/
|
|||||||
/Musicreater
|
/Musicreater
|
||||||
/TrimLog
|
/TrimLog
|
||||||
/logs
|
/logs
|
||||||
|
*.llc.config
|
||||||
|
/MSCT
|
||||||
|
|
||||||
|
salt.py
|
||||||
|
|
||||||
# C extensions
|
# C extensions
|
||||||
*.so
|
*.so
|
||||||
|
|||||||
@@ -203,7 +203,7 @@
|
|||||||
END OF TERMS AND CONDITIONS
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
|
||||||
Copyright 2022 Team-Ryoun 金羿("Eilles Wan") & 诸葛亮与八卦阵("bgArray")
|
Copyright © 2024 Team-Ryoun 金羿("Eilles Wan") & 诸葛亮与八卦阵("bgArray")
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
[![CodeStyle: black]](https://github.com/psf/black)
|
[![CodeStyle: black]](https://github.com/psf/black)
|
||||||
[![][python]](https://www.python.org/)
|
[![][python]](https://www.python.org/)
|
||||||
[![][license]](LICENSE)
|
[![][license]](LICENSE)
|
||||||
[![][release]](../../releases)
|
<!-- [![][release]](../../releases) -->
|
||||||
|
|
||||||
|
|
||||||
<!-- 简体中文 | [English](README_EN.md) -->
|
<!-- 简体中文 | [English](README_EN.md) -->
|
||||||
@@ -61,5 +61,5 @@ QQ群 [861684859](https://jq.qq.com/?_wv=1027&k=hpeRxrYr)
|
|||||||
[Bilibili: 诸葛亮与八卦阵]: https://img.shields.io/badge/Bilibili-%E8%AF%B8%E8%91%9B%E4%BA%AE%E4%B8%8E%E5%85%AB%E5%8D%A6%E9%98%B5-00A1E7?style=for-the-badge
|
[Bilibili: 诸葛亮与八卦阵]: https://img.shields.io/badge/Bilibili-%E8%AF%B8%E8%91%9B%E4%BA%AE%E4%B8%8E%E5%85%AB%E5%8D%A6%E9%98%B5-00A1E7?style=for-the-badge
|
||||||
[CodeStyle: black]: https://img.shields.io/badge/code%20style-black-121110.svg?style=for-the-badge
|
[CodeStyle: black]: https://img.shields.io/badge/code%20style-black-121110.svg?style=for-the-badge
|
||||||
[python]: https://img.shields.io/badge/python-3.6-AB70FF?style=for-the-badge
|
[python]: https://img.shields.io/badge/python-3.6-AB70FF?style=for-the-badge
|
||||||
[release]: https://img.shields.io/github/v/release/EillesWan/Musicreater?style=for-the-badge
|
<!-- [release]: https://img.shields.io//TriM-Organization/Linglun-Converter?style=for-the-badge -->
|
||||||
[license]: https://img.shields.io/badge/Licence-Apache-228B22?style=for-the-badge
|
[license]: https://img.shields.io/badge/Licence-Apache-228B22?style=for-the-badge
|
||||||
|
|||||||
223
llc_cli.py
223
llc_cli.py
@@ -7,19 +7,20 @@
|
|||||||
伶伦转换器 命令行
|
伶伦转换器 命令行
|
||||||
Linglun Converter CLI
|
Linglun Converter CLI
|
||||||
|
|
||||||
版权所有 © 2023 金羿 & 睿穆开发组
|
版权所有 © 2024 金羿 & 睿乐开发组
|
||||||
Copyright © 2023 EillesWan & TriM Org.
|
Copyright © 2024 EillesWan & TriM Org.
|
||||||
|
|
||||||
开源相关声明请见 ./License.md
|
开源相关声明请见 ./License.md
|
||||||
Terms & Conditions: ./Lisense.md
|
Terms & Conditions: ./Lisense.md
|
||||||
"""
|
"""
|
||||||
|
|
||||||
__version__ = "0.0.6"
|
__version__ = "0.0.7"
|
||||||
|
|
||||||
import datetime
|
import datetime
|
||||||
import os
|
import os
|
||||||
import random
|
import random
|
||||||
import sys
|
|
||||||
|
# import sys
|
||||||
|
|
||||||
import Musicreater
|
import Musicreater
|
||||||
from Musicreater.constants import DEFAULT_PROGRESSBAR_STYLE
|
from Musicreater.constants import DEFAULT_PROGRESSBAR_STYLE
|
||||||
@@ -29,8 +30,14 @@ from Musicreater.plugin.addonpack import (
|
|||||||
to_addon_pack_in_repeater,
|
to_addon_pack_in_repeater,
|
||||||
to_addon_pack_in_score,
|
to_addon_pack_in_score,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
from Musicreater.plugin.mcstructfile import (
|
||||||
|
to_mcstructure_file_in_delay,
|
||||||
|
to_mcstructure_file_in_repeater,
|
||||||
|
# to_mcstructure_file_in_score,
|
||||||
|
)
|
||||||
from Musicreater.plugin.bdxfile import to_BDX_file_in_delay, to_BDX_file_in_score
|
from Musicreater.plugin.bdxfile import to_BDX_file_in_delay, to_BDX_file_in_score
|
||||||
from utils.io import *
|
from utils.io import MainConsole, int_str, prt, ipt, myWords, isin, bool_str, float_str
|
||||||
|
|
||||||
# from Musicreater.plugin.mcstructure import commands_to_structure, commands_to_redstone_delay_structure
|
# from Musicreater.plugin.mcstructure import commands_to_structure, commands_to_redstone_delay_structure
|
||||||
|
|
||||||
@@ -41,26 +48,30 @@ MainConsole.print(
|
|||||||
justify="center",
|
justify="center",
|
||||||
)
|
)
|
||||||
|
|
||||||
osc.project_name = "伶伦转换器"
|
# osc.project_name = "伶伦转换器"
|
||||||
osc.version = __version__
|
# osc.version = __version__
|
||||||
|
|
||||||
|
|
||||||
if len(sys.argv) > 0:
|
# if len(sys.argv) > 0:
|
||||||
|
|
||||||
def go_for_args(debugMode: str = "False", logfile: str = "True"):
|
# def go_for_args(debugMode: str = "False", logfile: str = "True"):
|
||||||
global logger
|
# global logger
|
||||||
osc.isRelease = False if debugMode.lower() in ("true", "1") else True
|
# osc.isRelease = False if debugMode.lower() in ("true", "1") else True
|
||||||
logger.printing = not osc.isRelease
|
# logger.printing = not osc.isRelease
|
||||||
logger.writing = True if logfile.lower() in ("true", "1") else False
|
# logger.writing = True if logfile.lower() in ("true", "1") else False
|
||||||
|
|
||||||
go_for_args(*sys.argv)
|
# go_for_args(*sys.argv)
|
||||||
|
|
||||||
|
|
||||||
# 显示大标题
|
# 显示大标题
|
||||||
MainConsole.rule(title="[bold #AB70FF]欢迎使用伶伦独立转换器", characters="=", style="#26E2FF")
|
MainConsole.rule(
|
||||||
|
title="[bold #AB70FF]欢迎使用伶伦独立转换器", characters="=", style="#26E2FF"
|
||||||
|
)
|
||||||
# MainConsole.rule(title="[bold #AB70FF]Welcome to Linglun Converter", characters="-")
|
# MainConsole.rule(title="[bold #AB70FF]Welcome to Linglun Converter", characters="-")
|
||||||
MainConsole.rule(
|
MainConsole.rule(
|
||||||
title="[#AB70FF]版本{} | 音·创内核版本{}".format(__version__, Musicreater.__version__),
|
title="[#AB70FF]版本{} | 音·创内核版本{}".format(
|
||||||
|
__version__, Musicreater.__version__
|
||||||
|
),
|
||||||
characters="-",
|
characters="-",
|
||||||
style="#26E2FF",
|
style="#26E2FF",
|
||||||
)
|
)
|
||||||
@@ -70,14 +81,18 @@ nowYang = datetime.datetime.now()
|
|||||||
if nowYang.month == 8 and nowYang.day == 6:
|
if nowYang.month == 8 and nowYang.day == 6:
|
||||||
# 诸葛八卦生日
|
# 诸葛八卦生日
|
||||||
MainConsole.print(
|
MainConsole.print(
|
||||||
"[#7DB5F0 on #121110]今天可不是催更的日子!\n诸葛亮与八卦阵{}岁生日快乐!".format(nowYang.year - 2008),
|
"[#7DB5F0 on #121110]今天可不是催更的日子!\n诸葛亮与八卦阵{}岁生日快乐!".format(
|
||||||
|
nowYang.year - 2008
|
||||||
|
),
|
||||||
style="#7DB5F0 on #121110",
|
style="#7DB5F0 on #121110",
|
||||||
justify="center",
|
justify="center",
|
||||||
)
|
)
|
||||||
elif nowYang.month == 4 and nowYang.day == 3:
|
elif nowYang.month == 4 and nowYang.day == 3:
|
||||||
# 金羿生日快乐
|
# 金羿生日快乐
|
||||||
MainConsole.print(
|
MainConsole.print(
|
||||||
"[#0089F2 on #F0F2F4]今天就不要催更啦!\n金羿{}岁生日快乐!".format(nowYang.year - 2006),
|
"[#0089F2 on #F0F2F4]今天就不要催更啦!\n金羿{}岁生日快乐!".format(
|
||||||
|
nowYang.year - 2006
|
||||||
|
),
|
||||||
style="#0089F2 on #F0F2F4",
|
style="#0089F2 on #F0F2F4",
|
||||||
justify="center",
|
justify="center",
|
||||||
)
|
)
|
||||||
@@ -155,20 +170,36 @@ while True:
|
|||||||
|
|
||||||
|
|
||||||
def is_in_bdx_mcpack(sth: str):
|
def is_in_bdx_mcpack(sth: str):
|
||||||
return isin(sth, {1: ("bdx", "1", "币帝查", "币帝·艾克斯"), 0: ("mcpack", "0", "唉姆西·派克")})
|
|
||||||
|
|
||||||
|
|
||||||
def is_in_player(sth: str):
|
|
||||||
return isin(
|
return isin(
|
||||||
sth,
|
sth,
|
||||||
{
|
{
|
||||||
0: ("delay", "0", "延迟", "帝蕾"),
|
1: ("bdx", "1", "币帝查", "币帝·艾克斯", "一", "幺"),
|
||||||
1: ("score", "1", "计分板", "积分", "积分板", "计分", "斯阔尔"),
|
0: ("mcpack", "0", "唉姆西·派克", "零", "〇"),
|
||||||
2: ("repeater", "2", "中继器", "瑞皮特"),
|
2: ("MCSTRUCTURE", "2", "二", "麦块结构", "MC结构", "两", "我的世界结构"),
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def is_in_player(sth: str, in_ok: tuple):
|
||||||
|
return isin(
|
||||||
|
sth,
|
||||||
|
dict(
|
||||||
|
[
|
||||||
|
(i, v)
|
||||||
|
for i, v in [
|
||||||
|
0,
|
||||||
|
("delay", "0", "延迟", "帝蕾"),
|
||||||
|
1,
|
||||||
|
("score", "1", "计分板", "积分", "积分板", "计分", "斯阔尔"),
|
||||||
|
2,
|
||||||
|
("repeater", "2", "中继器", "瑞皮特"),
|
||||||
|
]
|
||||||
|
if i in in_ok
|
||||||
|
]
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
output_file_format = format_ipt(
|
output_file_format = format_ipt(
|
||||||
"输出文件类型 (mcpack/0|bdx/1)",
|
"输出文件类型 (mcpack/0|bdx/1)",
|
||||||
is_in_bdx_mcpack,
|
is_in_bdx_mcpack,
|
||||||
@@ -181,15 +212,23 @@ if output_file_format == 0:
|
|||||||
is_in_player,
|
is_in_player,
|
||||||
"输入内容有误,请重新输入。",
|
"输入内容有误,请重新输入。",
|
||||||
)[1]
|
)[1]
|
||||||
else:
|
elif output_file_format == 1:
|
||||||
player_format = format_ipt(
|
player_format = format_ipt(
|
||||||
"播放器类型 (延迟/0|计分板/1)",
|
"播放器类型 (延迟/0|计分板/1)",
|
||||||
is_in_player,
|
lambda a: is_in_player(a, (0, 1)),
|
||||||
|
"输入内容有误,请重新输入。",
|
||||||
|
)[1]
|
||||||
|
else:
|
||||||
|
player_format = format_ipt(
|
||||||
|
"播放器类型 (延迟/0|中继器/2)",
|
||||||
|
lambda a: is_in_player(a, (0, 2)),
|
||||||
"输入内容有误,请重新输入。",
|
"输入内容有误,请重新输入。",
|
||||||
)[1]
|
)[1]
|
||||||
|
|
||||||
old_exe_enabled = not format_ipt(
|
old_exe_enabled = not format_ipt(
|
||||||
"启用新版代执行指令 (否/0|是/1):", bool_str, "输入内容格式错误,应为 是/1/真/t/y 或 否/0/假/f/n"
|
"启用新版代执行指令 (否/0|是/1):",
|
||||||
|
bool_str,
|
||||||
|
"输入内容格式错误,应为 是/1/真/t/y 或 否/0/假/f/n",
|
||||||
)[1]
|
)[1]
|
||||||
|
|
||||||
|
|
||||||
@@ -216,41 +255,75 @@ else:
|
|||||||
bool_str,
|
bool_str,
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
"计分板名称:",
|
(
|
||||||
str,
|
"计分板名称:",
|
||||||
)
|
str,
|
||||||
if player_format == 1
|
)
|
||||||
else (
|
if player_format == 1
|
||||||
"受播放玩家的选择器:",
|
else (
|
||||||
str,
|
"受播放玩家的选择器:",
|
||||||
|
str,
|
||||||
|
)
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
"自动重置计分板 (否/0|是/1):",
|
(
|
||||||
bool_str,
|
"自动重置计分板 (否/0|是/1):",
|
||||||
)
|
bool_str,
|
||||||
if player_format == 1
|
)
|
||||||
else (),
|
if player_format == 1
|
||||||
|
else ()
|
||||||
|
),
|
||||||
(
|
(
|
||||||
"BDX作者署名:",
|
(
|
||||||
str,
|
"BDX作者署名:",
|
||||||
)
|
str,
|
||||||
if output_file_format == 1
|
)
|
||||||
else (),
|
if output_file_format == 1
|
||||||
|
else (
|
||||||
|
(
|
||||||
|
"结构延展方向(x+|z+|x-|z-):",
|
||||||
|
lambda a: isin(
|
||||||
|
a,
|
||||||
|
{
|
||||||
|
"z+": ["z+", "Z+"],
|
||||||
|
"x+": ["X+", "x+"],
|
||||||
|
"z-": ["Z-", "z-"],
|
||||||
|
"x-": ["x-", "X-"],
|
||||||
|
},
|
||||||
|
),
|
||||||
|
)
|
||||||
|
if (player_format == 2 and output_file_format == 2)
|
||||||
|
else ()
|
||||||
|
)
|
||||||
|
),
|
||||||
(
|
(
|
||||||
"结构生成最大高度 (0,+∞):",
|
(
|
||||||
int,
|
"结构生成最大高度 (0,+∞):",
|
||||||
)
|
int_str,
|
||||||
if player_format == 0
|
)
|
||||||
else (),
|
if player_format == 0
|
||||||
|
else (
|
||||||
|
(
|
||||||
|
"基础空白方块(例:concrete):",
|
||||||
|
str,
|
||||||
|
)
|
||||||
|
if (player_format == 2 and output_file_format == 2)
|
||||||
|
else ()
|
||||||
|
)
|
||||||
|
),
|
||||||
]:
|
]:
|
||||||
if args:
|
if args:
|
||||||
prompts.append(
|
prompts.append(
|
||||||
format_ipt(*args, err_note="输入内容格式错误,应符合 {}".format(args[1]))[1]
|
format_ipt(
|
||||||
|
*args, err_note="输入内容格式错误,应符合 {}".format(args[1])
|
||||||
|
)[1]
|
||||||
)
|
)
|
||||||
|
|
||||||
if prompts[2]:
|
if prompts[2]:
|
||||||
costom_pgb_enabled = format_ipt(
|
costom_pgb_enabled = format_ipt(
|
||||||
"自定义进度条样式 (否/0|是/1):", bool_str, "输入内容格式错误,应为 是/1/真/t/y 或 否/0/假/f/n"
|
"自定义进度条样式 (否/0|是/1):",
|
||||||
|
bool_str,
|
||||||
|
"输入内容格式错误,应为 是/1/真/t/y 或 否/0/假/f/n",
|
||||||
)[1]
|
)[1]
|
||||||
if costom_pgb_enabled:
|
if costom_pgb_enabled:
|
||||||
style = ipt("基本样式组 (回车默认):")
|
style = ipt("基本样式组 (回车默认):")
|
||||||
@@ -263,12 +336,20 @@ if prompts[2]:
|
|||||||
if not done_part:
|
if not done_part:
|
||||||
done_part = DEFAULT_PROGRESSBAR_STYLE[1][0]
|
done_part = DEFAULT_PROGRESSBAR_STYLE[1][0]
|
||||||
|
|
||||||
if player_format == 1:
|
if output_file_format == 0:
|
||||||
cvt_method = to_addon_pack_in_score
|
if player_format == 1:
|
||||||
elif player_format == 0:
|
cvt_method = to_addon_pack_in_score
|
||||||
cvt_method = to_addon_pack_in_delay
|
elif player_format == 0:
|
||||||
elif player_format == 2:
|
cvt_method = to_addon_pack_in_delay
|
||||||
cvt_method = to_addon_pack_in_repeater
|
elif player_format == 2:
|
||||||
|
cvt_method = to_addon_pack_in_repeater
|
||||||
|
elif output_file_format == 2:
|
||||||
|
# if player_format == 1:
|
||||||
|
# cvt_method = to_mcstructure_file_in_score
|
||||||
|
if player_format == 0:
|
||||||
|
cvt_method = to_mcstructure_file_in_delay
|
||||||
|
elif player_format == 2:
|
||||||
|
cvt_method = to_mcstructure_file_in_repeater
|
||||||
|
|
||||||
|
|
||||||
for singleMidi in midis:
|
for singleMidi in midis:
|
||||||
@@ -276,20 +357,34 @@ for singleMidi in midis:
|
|||||||
cvt_mid = Musicreater.MidiConvert.from_midi_file(
|
cvt_mid = Musicreater.MidiConvert.from_midi_file(
|
||||||
singleMidi, old_exe_format=old_exe_enabled
|
singleMidi, old_exe_format=old_exe_enabled
|
||||||
)
|
)
|
||||||
cvt_cfg = ConvertConfig(out_path, *prompts[:2], progressbar=((style, (done_part, yet_part)) if costom_pgb_enabled else True) if prompts[2] else False) # type: ignore
|
cvt_cfg = ConvertConfig(
|
||||||
|
out_path,
|
||||||
|
*prompts[:2],
|
||||||
|
progressbar=(
|
||||||
|
((style, (done_part, yet_part)) if costom_pgb_enabled else True) # type: ignore
|
||||||
|
if prompts[2]
|
||||||
|
else False
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
conversion_result = (
|
conversion_result = (
|
||||||
(cvt_method(cvt_mid, cvt_cfg, *prompts[3:])) # type: ignore
|
(cvt_method(cvt_mid, cvt_cfg, *prompts[3:])) # type: ignore
|
||||||
if output_file_format == 0
|
if output_file_format == 0
|
||||||
else (
|
else (
|
||||||
to_BDX_file_in_score(cvt_mid, cvt_cfg, *prompts[3:])
|
(
|
||||||
if player_format == 1
|
to_BDX_file_in_score(cvt_mid, cvt_cfg, *prompts[3:])
|
||||||
else to_BDX_file_in_delay(cvt_mid, cvt_cfg, *prompts[3:])
|
if player_format == 1
|
||||||
|
else to_BDX_file_in_delay(cvt_mid, cvt_cfg, *prompts[3:])
|
||||||
|
)
|
||||||
|
if output_file_format == 1
|
||||||
|
else (cvt_method(cvt_mid, cvt_cfg, *prompts[3:])) # type: ignore
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
prt(
|
prt(
|
||||||
f" 指令总长:{conversion_result[0]},播放刻数:{conversion_result[1]}{f''',结构大小:{conversion_result[2]},末点坐标:{conversion_result[3]}''' if output_file_format == 1 else ''}" # type: ignore
|
f" 结构大小:{conversion_result[0]},播放刻数:{conversion_result[1]}"
|
||||||
|
if output_file_format == 2
|
||||||
|
else f" 指令总长:{conversion_result[0]},播放刻数:{conversion_result[1]}{f''',结构大小:{conversion_result[2]},末点坐标:{conversion_result[3]}''' if output_file_format == 1 else ''}" # type: ignore
|
||||||
)
|
)
|
||||||
|
|
||||||
exitSth = ipt("结束。换行以退出程序。")
|
exitSth = ipt("结束。换行以退出程序。")
|
||||||
|
|||||||
@@ -7,8 +7,8 @@
|
|||||||
伶伦转换器暨模组特用奇巧
|
伶伦转换器暨模组特用奇巧
|
||||||
Linglun Converter for Special Use with addons
|
Linglun Converter for Special Use with addons
|
||||||
|
|
||||||
版权所有 © 2023 金羿 & 睿穆开发组
|
版权所有 © 2024 金羿 & 睿乐开发组
|
||||||
Copyright © 2023 EillesWan & TriM Org.
|
Copyright © 2024 EillesWan & TriM Org.
|
||||||
|
|
||||||
开源相关声明请见 ./License.md
|
开源相关声明请见 ./License.md
|
||||||
Terms & Conditions: ./Lisense.md
|
Terms & Conditions: ./Lisense.md
|
||||||
|
|||||||
1538
llc_win_wxPython.py
1538
llc_win_wxPython.py
File diff suppressed because it is too large
Load Diff
@@ -1,2 +1,3 @@
|
|||||||
Musicreater>=1.0.0
|
Musicreater>=1.7.2.1
|
||||||
TrimLog>=0.7.2
|
TrimLog>=0.8.3
|
||||||
|
requests>=2.0.0
|
||||||
133
utils/io.py
133
utils/io.py
@@ -4,43 +4,49 @@
|
|||||||
伶伦转换器 命令行组件
|
伶伦转换器 命令行组件
|
||||||
Linglun Converter Command Line IO Component
|
Linglun Converter Command Line IO Component
|
||||||
|
|
||||||
版权所有 © 2023 金羿 & 睿穆开发组
|
版权所有 © 2024 金羿 & 睿乐开发组
|
||||||
Copyright © 2023 EillesWan & TriM Org.
|
Copyright © 2024 EillesWan & TriM Org.
|
||||||
|
|
||||||
开源相关声明请见 ./License.md
|
开源相关声明请见 ./License.md
|
||||||
Terms & Conditions: ./Lisense.md
|
Terms & Conditions: ./Lisense.md
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
||||||
import urllib.error
|
import requests
|
||||||
import urllib.request
|
from typing import (
|
||||||
from typing import Any, Callable, Dict, List, Literal, Optional, Set, TextIO, Tuple, Iterable, Sequence
|
Any,
|
||||||
|
Callable,
|
||||||
import TrimLog
|
Dict,
|
||||||
from TrimLog import Console, object_constants
|
List,
|
||||||
|
Literal,
|
||||||
is_logging: bool = True
|
Optional,
|
||||||
|
Set,
|
||||||
MainConsole = Console()
|
TextIO,
|
||||||
osc = object_constants.ObjectStateConstant()
|
Tuple,
|
||||||
logger = TrimLog.Logger(
|
Iterable,
|
||||||
is_logging=is_logging,
|
Sequence,
|
||||||
# printing=not osc.is_release,
|
Union,
|
||||||
in_suffix=".llc",
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
import TrimLog
|
||||||
|
from TrimLog import object_constants, logger, log__init__
|
||||||
|
|
||||||
|
|
||||||
|
logger.is_logging = True
|
||||||
|
logger.suffix = ".llc"
|
||||||
|
logger.is_tips = True
|
||||||
|
|
||||||
|
logger.info("读取 言·论 信息……")
|
||||||
|
|
||||||
try:
|
try:
|
||||||
myWords = (
|
myWords = (
|
||||||
urllib.request.urlopen(
|
requests.get(
|
||||||
"https://gitee.com/TriM-Organization/LinglunStudio/raw/master/resources/myWords.txt"
|
"https://gitee.com/TriM-Organization/LinglunStudio/raw/master/resources/myWords.txt",
|
||||||
)
|
).text
|
||||||
.read()
|
|
||||||
.decode("utf-8")
|
|
||||||
.strip("\n")
|
.strip("\n")
|
||||||
.split("\n")
|
.split("\n")
|
||||||
)
|
)
|
||||||
except (ConnectionError, urllib.error.HTTPError) as E:
|
except (ConnectionError, requests.HTTPError, requests.RequestException) as E:
|
||||||
logger.warning(f"读取言·论信息发生 互联网连接 错误:\n{E}")
|
logger.warning(f"读取言·论信息发生 互联网连接 错误:\n{E}")
|
||||||
myWords = ["以梦想为驱使 创造属于自己的未来"]
|
myWords = ["以梦想为驱使 创造属于自己的未来"]
|
||||||
# noinspection PyBroadException
|
# noinspection PyBroadException
|
||||||
@@ -49,6 +55,9 @@ except BaseException as E:
|
|||||||
myWords = ["灵光焕发 深艺献心"]
|
myWords = ["灵光焕发 深艺献心"]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
logger.info("注册出入方法……")
|
||||||
|
|
||||||
JustifyMethod = Literal["default", "left", "center", "right", "full"]
|
JustifyMethod = Literal["default", "left", "center", "right", "full"]
|
||||||
OverflowMethod = Literal["fold", "crop", "ellipsis", "ignore"]
|
OverflowMethod = Literal["fold", "crop", "ellipsis", "ignore"]
|
||||||
|
|
||||||
@@ -88,7 +97,7 @@ def prt(
|
|||||||
soft_wrap (bool, 可选): 启用软包装模式,禁止文字包装和裁剪,或`None``用于 控制台默认值。默认为`None`。
|
soft_wrap (bool, 可选): 启用软包装模式,禁止文字包装和裁剪,或`None``用于 控制台默认值。默认为`None`。
|
||||||
new_line_start (bool, False): 如果输出包含多行,在开始时插入一个新行。默认值为`False`。
|
new_line_start (bool, False): 如果输出包含多行,在开始时插入一个新行。默认值为`False`。
|
||||||
"""
|
"""
|
||||||
MainConsole.print(
|
logger.console.print(
|
||||||
*objects,
|
*objects,
|
||||||
sep=sep,
|
sep=sep,
|
||||||
end=end,
|
end=end,
|
||||||
@@ -149,7 +158,7 @@ def ipt(
|
|||||||
Returns:
|
Returns:
|
||||||
str: 从stdin读取的字符串
|
str: 从stdin读取的字符串
|
||||||
"""
|
"""
|
||||||
MainConsole.print(
|
logger.console.print(
|
||||||
*objects,
|
*objects,
|
||||||
sep=sep,
|
sep=sep,
|
||||||
end="",
|
end="",
|
||||||
@@ -167,7 +176,7 @@ def ipt(
|
|||||||
new_line_start=new_line_start,
|
new_line_start=new_line_start,
|
||||||
)
|
)
|
||||||
|
|
||||||
return MainConsole.input(password=password, stream=stream)
|
return logger.console.input(password=password, stream=stream)
|
||||||
|
|
||||||
|
|
||||||
def format_ipt(
|
def format_ipt(
|
||||||
@@ -203,61 +212,57 @@ def isin(sth: str, range_list: dict):
|
|||||||
for bool_value, res_list in range_list.items():
|
for bool_value, res_list in range_list.items():
|
||||||
if sth in res_list:
|
if sth in res_list:
|
||||||
return bool_value
|
return bool_value
|
||||||
raise ValueError
|
raise ValueError(
|
||||||
|
"不在可选范围内:{}".format([j for i in range_list.values() for j in i])
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
# 真假字符串判断
|
# 真假字符串判断
|
||||||
def bool_str(sth: str):
|
def bool_str(sth: str):
|
||||||
try:
|
try:
|
||||||
return bool(float(sth))
|
return bool(float(sth))
|
||||||
except:
|
except ValueError:
|
||||||
if str(sth).lower() in ("true", "真", "是", "y", "t"):
|
if str(sth).lower() in ("true", "真", "是", "y", "t"):
|
||||||
return True
|
return True
|
||||||
elif str(sth).lower() in ("false", "假", "否", "f", "n"):
|
elif str(sth).lower() in ("false", "假", "否", "f", "n"):
|
||||||
return False
|
return False
|
||||||
else:
|
else:
|
||||||
raise ValueError
|
raise ValueError("非法逻辑字串")
|
||||||
|
|
||||||
|
|
||||||
def float_str(sth: str):
|
def float_str(sth: str):
|
||||||
try:
|
try:
|
||||||
return float(sth)
|
return float(sth)
|
||||||
except ValueError:
|
except ValueError:
|
||||||
try:
|
return float(
|
||||||
return float(
|
sth.replace("壹", "1")
|
||||||
sth.replace("壹", "1")
|
.replace("贰", "2")
|
||||||
.replace("贰", "2")
|
.replace("叁", "3")
|
||||||
.replace("叁", "3")
|
.replace("肆", "4")
|
||||||
.replace("肆", "4")
|
.replace("伍", "5")
|
||||||
.replace("伍", "5")
|
.replace("陆", "6")
|
||||||
.replace("陆", "6")
|
.replace("柒", "7")
|
||||||
.replace("柒", "7")
|
.replace("捌", "8")
|
||||||
.replace("捌", "8")
|
.replace("玖", "9")
|
||||||
.replace("玖", "9")
|
.replace("零", "0")
|
||||||
.replace("零", "0")
|
.replace("一", "1")
|
||||||
.replace("一", "1")
|
.replace("二", "2")
|
||||||
.replace("二", "2")
|
.replace("三", "3")
|
||||||
.replace("三", "3")
|
.replace("四", "4")
|
||||||
.replace("四", "4")
|
.replace("五", "5")
|
||||||
.replace("五", "5")
|
.replace("六", "6")
|
||||||
.replace("六", "6")
|
.replace("七", "7")
|
||||||
.replace("七", "7")
|
.replace("八", "8")
|
||||||
.replace("八", "8")
|
.replace("九", "9")
|
||||||
.replace("九", "9")
|
.replace("〇", "0")
|
||||||
.replace("〇", "0")
|
.replace("洞", "0")
|
||||||
.replace("洞", "0")
|
.replace("幺", "1")
|
||||||
.replace("幺", "1")
|
.replace("俩", "2")
|
||||||
.replace("俩", "2")
|
.replace("两", "2")
|
||||||
.replace("两", "2")
|
.replace("拐", "7")
|
||||||
.replace("拐", "7")
|
.replace("点", ".")
|
||||||
.replace("点", ".")
|
)
|
||||||
)
|
|
||||||
except:
|
|
||||||
raise ValueError
|
|
||||||
|
|
||||||
|
|
||||||
def int_str(sth: str):
|
def int_str(sth: str):
|
||||||
try:
|
return int(float_str(sth))
|
||||||
return int(float_str(sth))
|
|
||||||
except ValueError:
|
|
||||||
raise ValueError
|
|
||||||
|
|||||||
29
utils/localize.py
Normal file
29
utils/localize.py
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
"""
|
||||||
|
伶伦转换器 本地化组件
|
||||||
|
Linglun Converter Language Localization Component
|
||||||
|
|
||||||
|
版权所有 © 2024 金羿 & 睿乐开发组
|
||||||
|
Copyright © 2024 EillesWan & TriM Org.
|
||||||
|
|
||||||
|
开源相关声明请见 ./License.md
|
||||||
|
Terms & Conditions: ./Lisense.md
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
from .io import logger, Any
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def _() -> str:
|
||||||
|
return ""
|
||||||
|
|
||||||
|
def main():
|
||||||
|
pass
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
|
|
||||||
|
|
||||||
120
utils/packdata.py
Normal file
120
utils/packdata.py
Normal file
@@ -0,0 +1,120 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
"""
|
||||||
|
伶伦转换器 打包存档组件
|
||||||
|
Linglun Converter Language Localization Component
|
||||||
|
|
||||||
|
版权所有 © 2024 金羿 & 睿乐开发组
|
||||||
|
Copyright © 2024 EillesWan & TriM Org.
|
||||||
|
|
||||||
|
开源相关声明请见 ./License.md
|
||||||
|
Terms & Conditions: ./Lisense.md
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
import hashlib
|
||||||
|
|
||||||
|
import dill
|
||||||
|
import brotli
|
||||||
|
|
||||||
|
from .salt import salt
|
||||||
|
from .io import Any
|
||||||
|
|
||||||
|
|
||||||
|
def unpack_llc_pack(from_dist: str, raise_error: bool = True):
|
||||||
|
with open(from_dist, "rb") as f:
|
||||||
|
salty_sha256_value, md5_value, packed_bytes = f.read().split(b" | \n", 2)
|
||||||
|
|
||||||
|
if (md5_value == hashlib.md5(packed_bytes).digest()) and (
|
||||||
|
salty_sha256_value
|
||||||
|
== hashlib.pbkdf2_hmac("sha256", md5_value + packed_bytes, salt, 16)
|
||||||
|
):
|
||||||
|
return dill.loads(
|
||||||
|
brotli.decompress(packed_bytes),
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
if raise_error:
|
||||||
|
raise ValueError("文件读取失败:签名不一致,可能存在注入风险。")
|
||||||
|
else:
|
||||||
|
return ValueError("文件读取失败:签名不一致,可能存在注入风险。")
|
||||||
|
|
||||||
|
|
||||||
|
def enpack_llc_pack(sth: Any, to_dist: str):
|
||||||
|
packing_bytes = brotli.compress(
|
||||||
|
dill.dumps(
|
||||||
|
sth,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
md5_value = hashlib.md5(packing_bytes).digest() # 长度 16
|
||||||
|
|
||||||
|
salty_sha256_value = hashlib.pbkdf2_hmac(
|
||||||
|
"sha256", md5_value + packing_bytes, salt, 16
|
||||||
|
) # 长度 32
|
||||||
|
|
||||||
|
with open(
|
||||||
|
to_dist,
|
||||||
|
"wb",
|
||||||
|
) as f:
|
||||||
|
f.write(salty_sha256_value)
|
||||||
|
f.write(b" | \n")
|
||||||
|
f.write(md5_value)
|
||||||
|
f.write(b" | \n")
|
||||||
|
f.write(packing_bytes)
|
||||||
|
|
||||||
|
|
||||||
|
def enpack_msct_pack(sth, to_dist: str):
|
||||||
|
packing_bytes = brotli.compress(
|
||||||
|
dill.dumps(
|
||||||
|
sth,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
with open(
|
||||||
|
to_dist,
|
||||||
|
"wb",
|
||||||
|
) as f:
|
||||||
|
f.write(packing_bytes)
|
||||||
|
|
||||||
|
return hashlib.sha256(packing_bytes)
|
||||||
|
|
||||||
|
|
||||||
|
def unpack_msct_pack(from_dist: str, hash_value: str, raise_error: bool = True):
|
||||||
|
with open(from_dist, "rb") as f:
|
||||||
|
packed_data = f.read()
|
||||||
|
now_hash = hashlib.sha256(packed_data).hexdigest()
|
||||||
|
if now_hash == hash_value:
|
||||||
|
return dill.loads(brotli.decompress(packed_data))
|
||||||
|
else:
|
||||||
|
if raise_error:
|
||||||
|
raise ValueError(
|
||||||
|
"文件读取失败:\n传入:{}\n需求:{}\n签名不一致,可能存在注入风险。".format(
|
||||||
|
now_hash, hash_value
|
||||||
|
)
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
return ValueError(
|
||||||
|
"文件读取失败:\n传入:{}\n需求:{}\n签名不一致,可能存在注入风险。".format(
|
||||||
|
now_hash, hash_value
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def load_msct_packed_data(
|
||||||
|
packed_data: bytes, hash_value: str, raise_error: bool = True
|
||||||
|
):
|
||||||
|
now_hash = hashlib.sha256(packed_data).hexdigest()
|
||||||
|
if now_hash == hash_value:
|
||||||
|
return dill.loads(brotli.decompress(packed_data))
|
||||||
|
else:
|
||||||
|
if raise_error:
|
||||||
|
raise ValueError(
|
||||||
|
"文件读取失败:\n传入:{}\n需求:{}\n签名不一致,可能存在注入风险。".format(
|
||||||
|
now_hash, hash_value
|
||||||
|
)
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
return ValueError(
|
||||||
|
"文件读取失败:\n传入:{}\n需求:{}\n签名不一致,可能存在注入风险。".format(
|
||||||
|
now_hash, hash_value
|
||||||
|
)
|
||||||
|
)
|
||||||
@@ -4,14 +4,14 @@
|
|||||||
伶伦转换器 版本检查组件
|
伶伦转换器 版本检查组件
|
||||||
Linglun Converter Version Checking Component
|
Linglun Converter Version Checking Component
|
||||||
|
|
||||||
版权所有 © 2023 金羿 & 睿穆开发组
|
版权所有 © 2024 金羿 & 睿乐开发组
|
||||||
Copyright © 2023 EillesWan & TriM Org.
|
Copyright © 2024 EillesWan & TriM Org.
|
||||||
|
|
||||||
开源相关声明请见 ./License.md
|
开源相关声明请见 ./License.md
|
||||||
Terms & Conditions: ./Lisense.md
|
Terms & Conditions: ./Lisense.md
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from .io import TrimLog, urllib, Sequence, Iterable, Callable, Optional
|
from .io import TrimLog, requests, Sequence, Iterable, Callable, Optional, Dict, Union
|
||||||
|
|
||||||
|
|
||||||
def is_ver_char(text: str) -> bool:
|
def is_ver_char(text: str) -> bool:
|
||||||
@@ -64,20 +64,21 @@ def is_ver_bigger(ver_1: Sequence[int], ver_2: Sequence[int]) -> bool:
|
|||||||
return len_v1 > len_v2
|
return len_v1 > len_v2
|
||||||
|
|
||||||
|
|
||||||
def check_update(
|
def check_update_repo(
|
||||||
appname: str,
|
appname: str,
|
||||||
get_text_url: str,
|
get_text_url: str,
|
||||||
version_now: str,
|
version_now: str,
|
||||||
message_show_fun: Callable,
|
message_show_fun: Callable,
|
||||||
logger: TrimLog.Logger,
|
logger: TrimLog.Logger,
|
||||||
version_disp: Optional[str] = None,
|
version_disp: Optional[str] = None,
|
||||||
|
version_renew_tip: str = "!有新版本!\n最新的 {app} 已经是 {latest} 版本,当前您正在使用的仍是 {current} 版本,您可以前往下载地址更新。",
|
||||||
):
|
):
|
||||||
if not version_disp:
|
if not version_disp:
|
||||||
version_disp = version_now
|
version_disp = version_now
|
||||||
|
|
||||||
logger.info("当前版本信息:{}".format(version_now))
|
logger.info("当前 {} 版本:{}".format(appname,version_now))
|
||||||
try:
|
try:
|
||||||
code_content: str = urllib.request.urlopen(get_text_url).read().decode("utf-8")
|
code_content: str = requests.get(get_text_url).text
|
||||||
except Exception as E: # noinspection PyBroadException
|
except Exception as E: # noinspection PyBroadException
|
||||||
logger.warning("无法获取更新版本信息:{}".format(E))
|
logger.warning("无法获取更新版本信息:{}".format(E))
|
||||||
return
|
return
|
||||||
@@ -86,7 +87,7 @@ def check_update(
|
|||||||
code_content = code_content[code_content.find('"') + 1 :]
|
code_content = code_content[code_content.find('"') + 1 :]
|
||||||
version_content = code_content[: code_content.find('"')]
|
version_content = code_content[: code_content.find('"')]
|
||||||
|
|
||||||
logger.info("已获取更新版本信息:{}".format(version_content))
|
logger.info("已获取 {} 新版本信息:{}".format(appname,version_content))
|
||||||
|
|
||||||
if is_ver_bigger(
|
if is_ver_bigger(
|
||||||
[int(v) for v in cut_ver_str(version_content).split(".")],
|
[int(v) for v in cut_ver_str(version_content).split(".")],
|
||||||
@@ -98,7 +99,7 @@ def check_update(
|
|||||||
version_content = code_content[: code_content.find('"')]
|
version_content = code_content[: code_content.find('"')]
|
||||||
|
|
||||||
message_show_fun(
|
message_show_fun(
|
||||||
"!有新版本!\n最新的 {app} 已经是 {latest} 版本,当前您正在使用的仍是 {current} 版本,您可以前往下载地址更新。".format(
|
version_renew_tip.format(
|
||||||
app=appname, latest=version_content, current=version_disp
|
app=appname, latest=version_content, current=version_disp
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@@ -116,3 +117,42 @@ def check_update(
|
|||||||
# return version_content[i:j]
|
# return version_content[i:j]
|
||||||
|
|
||||||
# "".join([version_content[i] for i in range(version_content.__len__()) if is_ver_char(version_content[i]) and ((version_content[i-1] if i > 0 else False) or (version_content[i+1] if i < version_content.__len__() else False))]).split('.')
|
# "".join([version_content[i] for i in range(version_content.__len__()) if is_ver_char(version_content[i]) and ((version_content[i-1] if i > 0 else False) or (version_content[i+1] if i < version_content.__len__() else False))]).split('.')
|
||||||
|
|
||||||
|
|
||||||
|
def check_update_release(
|
||||||
|
appname: str,
|
||||||
|
get_release_url: str,
|
||||||
|
version_now: str,
|
||||||
|
notice_fun: Callable[[str, str], bool],
|
||||||
|
logger: TrimLog.Logger,
|
||||||
|
version_renew_tip: str = "!有新版本!\n最新的 {app} 已经是 {latest} 版本,当前您正在使用的仍是 {current} 版本,是否更新?",
|
||||||
|
) -> Union[None, Dict[str, str]]:
|
||||||
|
|
||||||
|
logger.info("当前 {} 版本:{}".format(appname,version_now))
|
||||||
|
try:
|
||||||
|
code_content: Dict = requests.get(get_release_url).json()
|
||||||
|
except Exception as E: # noinspection PyBroadException
|
||||||
|
logger.warning("无法获取更新版本信息:{}".format(E))
|
||||||
|
return
|
||||||
|
|
||||||
|
version_content = code_content["release"]["tag"]["name"]
|
||||||
|
|
||||||
|
logger.info("已获取 {} 新版本信息:{}".format(appname,version_content))
|
||||||
|
|
||||||
|
if is_ver_bigger(
|
||||||
|
[int(v) for v in cut_ver_str(version_content).split(".")],
|
||||||
|
[int(v) for v in cut_ver_str(version_now).split(".")],
|
||||||
|
):
|
||||||
|
|
||||||
|
if notice_fun(
|
||||||
|
version_renew_tip.format(
|
||||||
|
app=appname, latest=version_content, current=version_now
|
||||||
|
),
|
||||||
|
code_content["release"]["release"]["description"],
|
||||||
|
):
|
||||||
|
return dict(
|
||||||
|
[
|
||||||
|
(d["name"], d["download_url"])
|
||||||
|
for d in code_content["release"]["release"]["attach_files"]
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|||||||
147
utils/webview.py
Normal file
147
utils/webview.py
Normal file
@@ -0,0 +1,147 @@
|
|||||||
|
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>',
|
||||||
|
)
|
||||||
3131
wxFB_Project/LingLunConverter1.fbp
Normal file
3131
wxFB_Project/LingLunConverter1.fbp
Normal file
File diff suppressed because it is too large
Load Diff
3567
wxFB_Project/LingLunConverter1_1.fbp
Normal file
3567
wxFB_Project/LingLunConverter1_1.fbp
Normal file
File diff suppressed because it is too large
Load Diff
478
wxFB_Project/generated1.py
Normal file
478
wxFB_Project/generated1.py
Normal file
@@ -0,0 +1,478 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
###########################################################################
|
||||||
|
## Python code generated with wxFormBuilder (version 3.10.1-0-g8feb16b3)
|
||||||
|
## http://www.wxformbuilder.org/
|
||||||
|
##
|
||||||
|
## PLEASE DO *NOT* EDIT THIS FILE!
|
||||||
|
###########################################################################
|
||||||
|
|
||||||
|
import wx
|
||||||
|
import wx.xrc
|
||||||
|
import wx.propgrid as pg
|
||||||
|
|
||||||
|
###########################################################################
|
||||||
|
## Class LingLunMainFrame
|
||||||
|
###########################################################################
|
||||||
|
|
||||||
|
class LingLunMainFrame ( wx.Frame ):
|
||||||
|
|
||||||
|
def __init__( self, parent ):
|
||||||
|
wx.Frame.__init__ ( self, parent, id = wx.ID_ANY, title = wx.EmptyString, pos = wx.DefaultPosition, size = wx.Size( 660,723 ), style = wx.DEFAULT_FRAME_STYLE|wx.TAB_TRAVERSAL, name = u"LingLunConverter" )
|
||||||
|
|
||||||
|
self.SetSizeHints( wx.DefaultSize, wx.DefaultSize )
|
||||||
|
self.SetFont( wx.Font( wx.NORMAL_FONT.GetPointSize(), wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "OPPOSans R" ) )
|
||||||
|
self.SetForegroundColour( wx.SystemSettings.GetColour( wx.SYS_COLOUR_WINDOWTEXT ) )
|
||||||
|
self.SetBackgroundColour( wx.SystemSettings.GetColour( wx.SYS_COLOUR_WINDOW ) )
|
||||||
|
|
||||||
|
self.m_statusBar2 = self.CreateStatusBar( 1, wx.STB_SIZEGRIP, wx.ID_ANY )
|
||||||
|
self.m_statusBar2.SetFont( wx.Font( wx.NORMAL_FONT.GetPointSize(), wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "OPPOSans R" ) )
|
||||||
|
|
||||||
|
self.m_menubar1 = wx.MenuBar( 0 )
|
||||||
|
self.m_menubar1.SetFont( wx.Font( wx.NORMAL_FONT.GetPointSize(), wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "OPPOSans R" ) )
|
||||||
|
|
||||||
|
self.FileMenu = wx.Menu()
|
||||||
|
self.m_Exit_menuItem1 = wx.MenuItem( self.FileMenu, wx.ID_ANY, u"退出", u"这是退出按钮", wx.ITEM_NORMAL )
|
||||||
|
self.FileMenu.Append( self.m_Exit_menuItem1 )
|
||||||
|
|
||||||
|
self.m_menubar1.Append( self.FileMenu, u"文件" )
|
||||||
|
|
||||||
|
self.SetMenuBar( self.m_menubar1 )
|
||||||
|
|
||||||
|
m_mainBoxSizer = wx.BoxSizer( wx.VERTICAL )
|
||||||
|
|
||||||
|
s_yanLunbarSizer = wx.StaticBoxSizer( wx.StaticBox( self, wx.ID_ANY, u"言·论" ), wx.VERTICAL )
|
||||||
|
|
||||||
|
self.m_LinglunWords_staticText1 = wx.StaticText( s_yanLunbarSizer.GetStaticBox(), wx.ID_ANY, u"灵光焕发 深艺献心", wx.DefaultPosition, wx.DefaultSize, wx.ALIGN_CENTER_HORIZONTAL|wx.ST_ELLIPSIZE_MIDDLE|wx.ST_NO_AUTORESIZE )
|
||||||
|
self.m_LinglunWords_staticText1.Wrap( -1 )
|
||||||
|
|
||||||
|
self.m_LinglunWords_staticText1.SetFont( wx.Font( 12, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "OPPOSans B" ) )
|
||||||
|
self.m_LinglunWords_staticText1.SetForegroundColour( wx.SystemSettings.GetColour( wx.SYS_COLOUR_HIGHLIGHTTEXT ) )
|
||||||
|
self.m_LinglunWords_staticText1.SetBackgroundColour( wx.SystemSettings.GetColour( wx.SYS_COLOUR_WINDOWTEXT ) )
|
||||||
|
|
||||||
|
s_yanLunbarSizer.Add( self.m_LinglunWords_staticText1, 0, wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
m_mainBoxSizer.Add( s_yanLunbarSizer, 0, wx.ALL|wx.EXPAND|wx.RESERVE_SPACE_EVEN_IF_HIDDEN|wx.TOP, 2 )
|
||||||
|
|
||||||
|
self.mian_notebook = wx.Notebook( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||||
|
self.mian_notebook.SetFont( wx.Font( wx.NORMAL_FONT.GetPointSize(), wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "OPPOSans R" ) )
|
||||||
|
|
||||||
|
self.convert_page = wx.Panel( self.mian_notebook, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL )
|
||||||
|
main_page_sizer = wx.BoxSizer( wx.VERTICAL )
|
||||||
|
|
||||||
|
s_midiChooseSizer = wx.BoxSizer( wx.HORIZONTAL )
|
||||||
|
|
||||||
|
self.m_ChooseMidiTips_staticText3 = wx.StaticText( self.convert_page, wx.ID_ANY, u"选择MIDI文件\n(双击移除)", wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||||
|
self.m_ChooseMidiTips_staticText3.Wrap( -1 )
|
||||||
|
|
||||||
|
s_midiChooseSizer.Add( self.m_ChooseMidiTips_staticText3, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 )
|
||||||
|
|
||||||
|
ss_MidiChooserSizer_bSizer9 = wx.BoxSizer( wx.VERTICAL )
|
||||||
|
|
||||||
|
m_midiFilesList_listBox2Choices = []
|
||||||
|
self.m_midiFilesList_listBox2 = wx.ListBox( self.convert_page, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, m_midiFilesList_listBox2Choices, wx.LB_HSCROLL|wx.LB_SORT )
|
||||||
|
ss_MidiChooserSizer_bSizer9.Add( self.m_midiFilesList_listBox2, 0, wx.EXPAND, 0 )
|
||||||
|
|
||||||
|
|
||||||
|
s_midiChooseSizer.Add( ss_MidiChooserSizer_bSizer9, 1, wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
self.m_midiBroseButton_button21 = wx.Button( self.convert_page, wx.ID_ANY, u"打开…", wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||||
|
s_midiChooseSizer.Add( self.m_midiBroseButton_button21, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
main_page_sizer.Add( s_midiChooseSizer, 0, wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
s_formatChooseSizer = wx.BoxSizer( wx.HORIZONTAL )
|
||||||
|
|
||||||
|
ss_outputFormatChooseSizer = wx.StaticBoxSizer( wx.StaticBox( self.convert_page, wx.ID_ANY, u"选择输出格式" ), wx.VERTICAL )
|
||||||
|
|
||||||
|
m_outformatChoice_choice1Choices = [ u"附加包", u"BDX结构" ]
|
||||||
|
self.m_outformatChoice_choice1 = wx.Choice( ss_outputFormatChooseSizer.GetStaticBox(), wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, m_outformatChoice_choice1Choices, 0 )
|
||||||
|
self.m_outformatChoice_choice1.SetSelection( 0 )
|
||||||
|
ss_outputFormatChooseSizer.Add( self.m_outformatChoice_choice1, 0, wx.ALL|wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
s_formatChooseSizer.Add( ss_outputFormatChooseSizer, 1, wx.ALL|wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
ss_playerChooseSizer = wx.StaticBoxSizer( wx.StaticBox( self.convert_page, wx.ID_ANY, u"选择播放器" ), wx.VERTICAL )
|
||||||
|
|
||||||
|
m_playerChoice_choice2Choices = [ u"计分板", u"延时", u"中继器" ]
|
||||||
|
self.m_playerChoice_choice2 = wx.Choice( ss_playerChooseSizer.GetStaticBox(), wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, m_playerChoice_choice2Choices, 0 )
|
||||||
|
self.m_playerChoice_choice2.SetSelection( 2 )
|
||||||
|
ss_playerChooseSizer.Add( self.m_playerChoice_choice2, 0, wx.ALL|wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
s_formatChooseSizer.Add( ss_playerChooseSizer, 1, wx.ALL|wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
main_page_sizer.Add( s_formatChooseSizer, 0, wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
s_promptSizer = wx.StaticBoxSizer( wx.StaticBox( self.convert_page, wx.ID_ANY, u"转换参数" ), wx.VERTICAL )
|
||||||
|
|
||||||
|
ss_regularPromoptsEnteringSizer1 = wx.BoxSizer( wx.HORIZONTAL )
|
||||||
|
|
||||||
|
sss_VolumnPersentageEnteringSizer = wx.StaticBoxSizer( wx.StaticBox( s_promptSizer.GetStaticBox(), wx.ID_ANY, u"音量大小" ), wx.HORIZONTAL )
|
||||||
|
|
||||||
|
self.m_volumn_slider = wx.Slider( sss_VolumnPersentageEnteringSizer.GetStaticBox(), wx.ID_ANY, 1000, 0, 1000, wx.DefaultPosition, wx.DefaultSize, wx.SL_HORIZONTAL )
|
||||||
|
sss_VolumnPersentageEnteringSizer.Add( self.m_volumn_slider, 0, wx.ALL, 5 )
|
||||||
|
|
||||||
|
self.m_volumn_spinCtrlDouble1 = wx.SpinCtrlDouble( sss_VolumnPersentageEnteringSizer.GetStaticBox(), wx.ID_ANY, u"100", wx.DefaultPosition, wx.DefaultSize, wx.ALIGN_CENTER_HORIZONTAL|wx.SP_ARROW_KEYS|wx.TE_PROCESS_ENTER, 0, 100, 100.000000, 0.5 )
|
||||||
|
self.m_volumn_spinCtrlDouble1.SetDigits( 2 )
|
||||||
|
sss_VolumnPersentageEnteringSizer.Add( self.m_volumn_spinCtrlDouble1, 0, wx.ALL, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
ss_regularPromoptsEnteringSizer1.Add( sss_VolumnPersentageEnteringSizer, 0, wx.ALL|wx.EXPAND|wx.SHAPED|wx.ALIGN_CENTER_VERTICAL, 5 )
|
||||||
|
|
||||||
|
sss_SpeedEnteringSizer = wx.StaticBoxSizer( wx.StaticBox( s_promptSizer.GetStaticBox(), wx.ID_ANY, u"播放倍速" ), wx.HORIZONTAL )
|
||||||
|
|
||||||
|
self.m_speed_slider = wx.Slider( sss_SpeedEnteringSizer.GetStaticBox(), wx.ID_ANY, 50, 0, 100, wx.DefaultPosition, wx.DefaultSize, wx.SL_HORIZONTAL )
|
||||||
|
sss_SpeedEnteringSizer.Add( self.m_speed_slider, 0, wx.ALL, 5 )
|
||||||
|
|
||||||
|
self.m_speed_spinCtrlDouble = wx.SpinCtrlDouble( sss_SpeedEnteringSizer.GetStaticBox(), wx.ID_ANY, u"1", wx.DefaultPosition, wx.DefaultSize, wx.ALIGN_CENTER_HORIZONTAL|wx.SP_ARROW_KEYS|wx.TE_PROCESS_ENTER, 0.01, 10, 1, 0.1 )
|
||||||
|
self.m_speed_spinCtrlDouble.SetDigits( 2 )
|
||||||
|
sss_SpeedEnteringSizer.Add( self.m_speed_spinCtrlDouble, 0, wx.ALL, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
ss_regularPromoptsEnteringSizer1.Add( sss_SpeedEnteringSizer, 0, wx.ALL|wx.EXPAND|wx.SHAPED|wx.ALIGN_CENTER_VERTICAL, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
s_promptSizer.Add( ss_regularPromoptsEnteringSizer1, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
ss_commandCheckingSizer = wx.StaticBoxSizer( wx.StaticBox( s_promptSizer.GetStaticBox(), wx.ID_ANY, u"指令设置" ), wx.HORIZONTAL )
|
||||||
|
|
||||||
|
self.m_progressBarEnablingCheckBox1 = wx.CheckBox( ss_commandCheckingSizer.GetStaticBox(), wx.ID_ANY, u"启用进度条", wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||||
|
ss_commandCheckingSizer.Add( self.m_progressBarEnablingCheckBox1, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 )
|
||||||
|
|
||||||
|
self.m_oldExeFormatChecker_checkBox3 = wx.CheckBox( ss_commandCheckingSizer.GetStaticBox(), wx.ID_ANY, u"启用旧版执行指令格式", wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||||
|
ss_commandCheckingSizer.Add( self.m_oldExeFormatChecker_checkBox3, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
s_promptSizer.Add( ss_commandCheckingSizer, 0, wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
ss_HideAndSeekSizer_bSizer15 = wx.BoxSizer( wx.VERTICAL )
|
||||||
|
|
||||||
|
sss_ScoreboardPlayerPromptsSizer_bSizer7 = wx.BoxSizer( wx.HORIZONTAL )
|
||||||
|
|
||||||
|
self.m_EnterScoreboardNameTip_staticText4 = wx.StaticText( s_promptSizer.GetStaticBox(), wx.ID_ANY, u"播放计分板名称", wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||||
|
self.m_EnterScoreboardNameTip_staticText4.Wrap( -1 )
|
||||||
|
|
||||||
|
sss_ScoreboardPlayerPromptsSizer_bSizer7.Add( self.m_EnterScoreboardNameTip_staticText4, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 )
|
||||||
|
|
||||||
|
self.m_ScoreboardNameEntering_textCtrl9 = wx.TextCtrl( s_promptSizer.GetStaticBox(), wx.ID_ANY, u"mscplay", wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||||
|
self.m_ScoreboardNameEntering_textCtrl9.SetMaxLength( 10 )
|
||||||
|
sss_ScoreboardPlayerPromptsSizer_bSizer7.Add( self.m_ScoreboardNameEntering_textCtrl9, 0, wx.ALL, 5 )
|
||||||
|
|
||||||
|
self.m_staticline1 = wx.StaticLine( s_promptSizer.GetStaticBox(), wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL )
|
||||||
|
self.m_staticline1.SetMinSize( wx.Size( 2,-1 ) )
|
||||||
|
|
||||||
|
sss_ScoreboardPlayerPromptsSizer_bSizer7.Add( self.m_staticline1, 0, wx.ALL|wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
self.m_IsAutoResetScoreboard_checkBox2 = wx.CheckBox( s_promptSizer.GetStaticBox(), wx.ID_ANY, u"自动重置计分板", wx.DefaultPosition, wx.DefaultSize, wx.ALIGN_RIGHT )
|
||||||
|
sss_ScoreboardPlayerPromptsSizer_bSizer7.Add( self.m_IsAutoResetScoreboard_checkBox2, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
ss_HideAndSeekSizer_bSizer15.Add( sss_ScoreboardPlayerPromptsSizer_bSizer7, 0, wx.SHAPED|wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
sss_StructurePlayerPromptsSizer_bSizer8 = wx.BoxSizer( wx.HORIZONTAL )
|
||||||
|
|
||||||
|
self.m_PlayerSelectorEnteringTips_staticText41 = wx.StaticText( s_promptSizer.GetStaticBox(), wx.ID_ANY, u"玩家选择器", wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||||
|
self.m_PlayerSelectorEnteringTips_staticText41.Wrap( -1 )
|
||||||
|
|
||||||
|
sss_StructurePlayerPromptsSizer_bSizer8.Add( self.m_PlayerSelectorEnteringTips_staticText41, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 )
|
||||||
|
|
||||||
|
m_PlayerSelectorEntering_comboBox1Choices = [ u"@a", u"@p", u"@e[type=player]" ]
|
||||||
|
self.m_PlayerSelectorEntering_comboBox1 = wx.ComboBox( s_promptSizer.GetStaticBox(), wx.ID_ANY, u"@a", wx.DefaultPosition, wx.DefaultSize, m_PlayerSelectorEntering_comboBox1Choices, wx.CB_DROPDOWN|wx.TE_PROCESS_ENTER )
|
||||||
|
self.m_PlayerSelectorEntering_comboBox1.SetSelection( 0 )
|
||||||
|
sss_StructurePlayerPromptsSizer_bSizer8.Add( self.m_PlayerSelectorEntering_comboBox1, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 )
|
||||||
|
|
||||||
|
self.m_staticline2 = wx.StaticLine( s_promptSizer.GetStaticBox(), wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL )
|
||||||
|
self.m_staticline2.SetMinSize( wx.Size( 2,-1 ) )
|
||||||
|
|
||||||
|
sss_StructurePlayerPromptsSizer_bSizer8.Add( self.m_staticline2, 0, wx.ALL|wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
self.StructureMaxHeoghtTips_ = wx.StaticText( s_promptSizer.GetStaticBox(), wx.ID_ANY, u"结构生成最大高度", wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||||
|
self.StructureMaxHeoghtTips_.Wrap( -1 )
|
||||||
|
|
||||||
|
sss_StructurePlayerPromptsSizer_bSizer8.Add( self.StructureMaxHeoghtTips_, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 )
|
||||||
|
|
||||||
|
self.m_StructureHeight_slider7 = wx.Slider( s_promptSizer.GetStaticBox(), wx.ID_ANY, 50, 3, 1024, wx.DefaultPosition, wx.DefaultSize, wx.SL_HORIZONTAL )
|
||||||
|
sss_StructurePlayerPromptsSizer_bSizer8.Add( self.m_StructureHeight_slider7, 0, wx.ALL, 5 )
|
||||||
|
|
||||||
|
self.m_enteringStructureMaxHeight_spinCtrl1 = wx.SpinCtrl( s_promptSizer.GetStaticBox(), wx.ID_ANY, u"50", wx.DefaultPosition, wx.DefaultSize, wx.SP_ARROW_KEYS, 3, 1024, 50 )
|
||||||
|
sss_StructurePlayerPromptsSizer_bSizer8.Add( self.m_enteringStructureMaxHeight_spinCtrl1, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
ss_HideAndSeekSizer_bSizer15.Add( sss_StructurePlayerPromptsSizer_bSizer8, 0, wx.SHAPED|wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
sss_BDXfileSignNameSizer_bSizer13 = wx.BoxSizer( wx.HORIZONTAL )
|
||||||
|
|
||||||
|
self.m_BDXfileSignNameTips_staticText8 = wx.StaticText( s_promptSizer.GetStaticBox(), wx.ID_ANY, u"BDX作者署名", wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||||
|
self.m_BDXfileSignNameTips_staticText8.Wrap( -1 )
|
||||||
|
|
||||||
|
sss_BDXfileSignNameSizer_bSizer13.Add( self.m_BDXfileSignNameTips_staticText8, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 )
|
||||||
|
|
||||||
|
self.m_EnteringBDXfileSignName_textCtrl12 = wx.TextCtrl( s_promptSizer.GetStaticBox(), wx.ID_ANY, u"UserYou", wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||||
|
sss_BDXfileSignNameSizer_bSizer13.Add( self.m_EnteringBDXfileSignName_textCtrl12, 0, wx.ALL, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
ss_HideAndSeekSizer_bSizer15.Add( sss_BDXfileSignNameSizer_bSizer13, 0, wx.SHAPED|wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
s_promptSizer.Add( ss_HideAndSeekSizer_bSizer15, 0, wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
main_page_sizer.Add( s_promptSizer, 0, wx.SHAPED|wx.EXPAND|wx.ALIGN_CENTER_HORIZONTAL, 5 )
|
||||||
|
|
||||||
|
s_StartSizer_sbSizer18 = wx.StaticBoxSizer( wx.StaticBox( self.convert_page, wx.ID_ANY, u"开始转换" ), wx.HORIZONTAL )
|
||||||
|
|
||||||
|
s_StartSizer_sbSizer18.SetMinSize( wx.Size( -1,100 ) )
|
||||||
|
|
||||||
|
s_StartSizer_sbSizer18.Add( ( 0, 0), 1, wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
self.m_start_button2 = wx.Button( s_StartSizer_sbSizer18.GetStaticBox(), wx.ID_ANY, u"开始转换", wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||||
|
s_StartSizer_sbSizer18.Add( self.m_start_button2, 0, wx.ALIGN_CENTER|wx.ALL, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
main_page_sizer.Add( s_StartSizer_sbSizer18, 1, wx.ALL|wx.EXPAND|wx.RESERVE_SPACE_EVEN_IF_HIDDEN, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
self.convert_page.SetSizer( main_page_sizer )
|
||||||
|
self.convert_page.Layout()
|
||||||
|
main_page_sizer.Fit( self.convert_page )
|
||||||
|
self.mian_notebook.AddPage( self.convert_page, u"开始转换", False )
|
||||||
|
self.setting_page = wx.Panel( self.mian_notebook, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL )
|
||||||
|
setting_page_sizer = wx.BoxSizer( wx.VERTICAL )
|
||||||
|
|
||||||
|
self.setting_notebook = wx.Notebook( self.setting_page, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.NB_FIXEDWIDTH|wx.NB_MULTILINE|wx.NB_RIGHT )
|
||||||
|
self.setting_notebook.SetFont( wx.Font( wx.NORMAL_FONT.GetPointSize(), wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "@OPPOSans R" ) )
|
||||||
|
self.setting_notebook.SetBackgroundColour( wx.SystemSettings.GetColour( wx.SYS_COLOUR_WINDOW ) )
|
||||||
|
|
||||||
|
self.setting_page1 = wx.Panel( self.setting_notebook, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL )
|
||||||
|
self.setting_page1.SetFont( wx.Font( wx.NORMAL_FONT.GetPointSize(), wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "OPPOSans R" ) )
|
||||||
|
|
||||||
|
setting_page1_box_sizer = wx.BoxSizer( wx.VERTICAL )
|
||||||
|
|
||||||
|
sss_customProgressBarSizer_wSizer6 = wx.WrapSizer( wx.HORIZONTAL, wx.WRAPSIZER_DEFAULT_FLAGS )
|
||||||
|
|
||||||
|
setting_page1_progressbar_style = wx.StaticBoxSizer( wx.StaticBox( self.setting_page1, wx.ID_ANY, u"进度条" ), wx.HORIZONTAL )
|
||||||
|
|
||||||
|
ssss_basicProgressStylePattle_sbSizer9 = wx.StaticBoxSizer( wx.StaticBox( setting_page1_progressbar_style.GetStaticBox(), wx.ID_ANY, u"基本样式组" ), wx.VERTICAL )
|
||||||
|
|
||||||
|
self.m_BasicProgressBarStyleEntering_textCtrl4 = wx.TextCtrl( ssss_basicProgressStylePattle_sbSizer9.GetStaticBox(), wx.ID_ANY, u"▶ %%N [ %%s/%^s %%% __________ %%t|%^t ]", wx.DefaultPosition, wx.DefaultSize, wx.TE_LEFT|wx.TE_NO_VSCROLL )
|
||||||
|
ssss_basicProgressStylePattle_sbSizer9.Add( self.m_BasicProgressBarStyleEntering_textCtrl4, 0, wx.ALL|wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
setting_page1_progressbar_style.Add( ssss_basicProgressStylePattle_sbSizer9, 1, wx.ALL|wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
ssss_UnplayedPartProgressbarPattle_sbSizer10 = wx.StaticBoxSizer( wx.StaticBox( setting_page1_progressbar_style.GetStaticBox(), wx.ID_ANY, u"未播放之样式" ), wx.VERTICAL )
|
||||||
|
|
||||||
|
self.m_unplayedProgressbarStyleEntering_textCtrl5 = wx.TextCtrl( ssss_UnplayedPartProgressbarPattle_sbSizer10.GetStaticBox(), wx.ID_ANY, u"§7=§r", wx.DefaultPosition, wx.DefaultSize, wx.TE_LEFT|wx.TE_NO_VSCROLL )
|
||||||
|
ssss_UnplayedPartProgressbarPattle_sbSizer10.Add( self.m_unplayedProgressbarStyleEntering_textCtrl5, 0, wx.ALL, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
setting_page1_progressbar_style.Add( ssss_UnplayedPartProgressbarPattle_sbSizer10, 1, wx.ALL|wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
ssss_PlayedPartProgressbarPattle_sbSizer11 = wx.StaticBoxSizer( wx.StaticBox( setting_page1_progressbar_style.GetStaticBox(), wx.ID_ANY, u"已播放之样式" ), wx.VERTICAL )
|
||||||
|
|
||||||
|
self.m_playedProgressbarStyleEntering_textCtrl5 = wx.TextCtrl( ssss_PlayedPartProgressbarPattle_sbSizer11.GetStaticBox(), wx.ID_ANY, u"§e=§r", wx.DefaultPosition, wx.DefaultSize, wx.TE_LEFT|wx.TE_NO_VSCROLL )
|
||||||
|
ssss_PlayedPartProgressbarPattle_sbSizer11.Add( self.m_playedProgressbarStyleEntering_textCtrl5, 0, wx.ALL, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
setting_page1_progressbar_style.Add( ssss_PlayedPartProgressbarPattle_sbSizer11, 1, wx.ALL|wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
sss_customProgressBarSizer_wSizer6.Add( setting_page1_progressbar_style, 1, wx.ALL|wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
setting_page1_experiment_style = wx.StaticBoxSizer( wx.StaticBox( self.setting_page1, wx.ID_ANY, u"实验性功能" ), wx.HORIZONTAL )
|
||||||
|
|
||||||
|
self.m_enable_experiment_checkBox = wx.CheckBox( setting_page1_experiment_style.GetStaticBox(), wx.ID_ANY, u"启用实验性功能", wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||||
|
setting_page1_experiment_style.Add( self.m_enable_experiment_checkBox, 1, wx.ALIGN_CENTER_VERTICAL|wx.ALL|wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
experiment_type_choiceChoices = [ u"常规转换", u"长音插值", u"同刻偏移" ]
|
||||||
|
self.experiment_type_choice = wx.Choice( setting_page1_experiment_style.GetStaticBox(), wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, experiment_type_choiceChoices, 0 )
|
||||||
|
self.experiment_type_choice.SetSelection( 0 )
|
||||||
|
setting_page1_experiment_style.Add( self.experiment_type_choice, 2, wx.ALL|wx.EXPAND|wx.ALIGN_CENTER_VERTICAL, 5 )
|
||||||
|
|
||||||
|
self.m_ignore_midi_error_checkBox = wx.CheckBox( setting_page1_experiment_style.GetStaticBox(), wx.ID_ANY, u"忽略MIDI错误", wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||||
|
self.m_ignore_midi_error_checkBox.SetValue(True)
|
||||||
|
setting_page1_experiment_style.Add( self.m_ignore_midi_error_checkBox, 1, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
sss_customProgressBarSizer_wSizer6.Add( setting_page1_experiment_style, 1, wx.ALL|wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
setting_page1_box_sizer.Add( sss_customProgressBarSizer_wSizer6, 1, wx.ALL|wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
self.setting_page1.SetSizer( setting_page1_box_sizer )
|
||||||
|
self.setting_page1.Layout()
|
||||||
|
setting_page1_box_sizer.Fit( self.setting_page1 )
|
||||||
|
self.setting_notebook.AddPage( self.setting_page1, u"基本信息", True )
|
||||||
|
self.setting_page2 = wx.Panel( self.setting_notebook, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL )
|
||||||
|
self.setting_page2.SetFont( wx.Font( wx.NORMAL_FONT.GetPointSize(), wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, wx.EmptyString ) )
|
||||||
|
|
||||||
|
setting_page2_box_sizer = wx.BoxSizer( wx.VERTICAL )
|
||||||
|
|
||||||
|
m_pitched_instrument_table_choiceChoices = [ u"“偷吃”的对照表", u"“经典”对照表" ]
|
||||||
|
self.m_pitched_instrument_table_choice = wx.Choice( self.setting_page2, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, m_pitched_instrument_table_choiceChoices, 0 )
|
||||||
|
self.m_pitched_instrument_table_choice.SetSelection( 0 )
|
||||||
|
self.m_pitched_instrument_table_choice.SetFont( wx.Font( wx.NORMAL_FONT.GetPointSize(), wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "OPPOSans R" ) )
|
||||||
|
|
||||||
|
setting_page2_box_sizer.Add( self.m_pitched_instrument_table_choice, 0, wx.ALL|wx.ALIGN_CENTER_HORIZONTAL|wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
self.m_pitched_notes_table_propertyGrid1 = pg.PropertyGrid(self.setting_page2, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.propgrid.PG_BOLD_MODIFIED|wx.propgrid.PG_DEFAULT_STYLE)
|
||||||
|
self.m_pitched_notes_table_propertyGrid1.SetFont( wx.Font( wx.NORMAL_FONT.GetPointSize(), wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "OPPOSans R" ) )
|
||||||
|
|
||||||
|
self.m_propertyGridItem1 = self.m_pitched_notes_table_propertyGrid1.Append( pg.StringProperty( u"乐音乐器1", u"乐音乐器1" ) )
|
||||||
|
self.m_propertyGridItem2 = self.m_pitched_notes_table_propertyGrid1.Append( pg.StringProperty( u"乐音乐器2", u"乐音乐器2" ) )
|
||||||
|
setting_page2_box_sizer.Add( self.m_pitched_notes_table_propertyGrid1, 1, wx.ALL|wx.EXPAND|wx.ALIGN_CENTER_HORIZONTAL, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
self.setting_page2.SetSizer( setting_page2_box_sizer )
|
||||||
|
self.setting_page2.Layout()
|
||||||
|
setting_page2_box_sizer.Fit( self.setting_page2 )
|
||||||
|
self.setting_notebook.AddPage( self.setting_page2, u"乐音乐器对照表", False )
|
||||||
|
self.setting_page3 = wx.Panel( self.setting_notebook, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL )
|
||||||
|
setting_page3_box_sizer = wx.BoxSizer( wx.VERTICAL )
|
||||||
|
|
||||||
|
m_percussion_instrument_table_choice1Choices = [ u"“偷吃”的对照表", u"“经典”对照表" ]
|
||||||
|
self.m_percussion_instrument_table_choice1 = wx.Choice( self.setting_page3, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, m_percussion_instrument_table_choice1Choices, 0 )
|
||||||
|
self.m_percussion_instrument_table_choice1.SetSelection( 0 )
|
||||||
|
self.m_percussion_instrument_table_choice1.SetFont( wx.Font( wx.NORMAL_FONT.GetPointSize(), wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "OPPOSans R" ) )
|
||||||
|
|
||||||
|
setting_page3_box_sizer.Add( self.m_percussion_instrument_table_choice1, 0, wx.ALL|wx.EXPAND|wx.ALIGN_CENTER_HORIZONTAL, 5 )
|
||||||
|
|
||||||
|
self.m_percussion_notes_table_propertyGrid11 = pg.PropertyGrid(self.setting_page3, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.propgrid.PG_BOLD_MODIFIED|wx.propgrid.PG_DEFAULT_STYLE)
|
||||||
|
self.m_percussion_notes_table_propertyGrid11.SetFont( wx.Font( wx.NORMAL_FONT.GetPointSize(), wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "OPPOSans R" ) )
|
||||||
|
|
||||||
|
self.m_propertyGridItem11 = self.m_percussion_notes_table_propertyGrid11.Append( pg.StringProperty( u"打击乐器1", u"打击乐器1" ) )
|
||||||
|
self.m_propertyGridItem21 = self.m_percussion_notes_table_propertyGrid11.Append( pg.StringProperty( u"打击乐器2", u"打击乐器2" ) )
|
||||||
|
setting_page3_box_sizer.Add( self.m_percussion_notes_table_propertyGrid11, 1, wx.ALL|wx.EXPAND|wx.ALIGN_CENTER_HORIZONTAL, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
self.setting_page3.SetSizer( setting_page3_box_sizer )
|
||||||
|
self.setting_page3.Layout()
|
||||||
|
setting_page3_box_sizer.Fit( self.setting_page3 )
|
||||||
|
self.setting_notebook.AddPage( self.setting_page3, u"打击乐器对照表", False )
|
||||||
|
|
||||||
|
setting_page_sizer.Add( self.setting_notebook, 1, wx.EXPAND |wx.ALL, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
self.setting_page.SetSizer( setting_page_sizer )
|
||||||
|
self.setting_page.Layout()
|
||||||
|
setting_page_sizer.Fit( self.setting_page )
|
||||||
|
self.mian_notebook.AddPage( self.setting_page, u"数据设置", True )
|
||||||
|
|
||||||
|
m_mainBoxSizer.Add( self.mian_notebook, 1, wx.EXPAND |wx.ALL, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
self.SetSizer( m_mainBoxSizer )
|
||||||
|
self.Layout()
|
||||||
|
|
||||||
|
self.Centre( wx.BOTH )
|
||||||
|
|
||||||
|
# Connect Events
|
||||||
|
self.Bind( wx.EVT_MENU, self.onExitButtonPressed, id = self.m_Exit_menuItem1.GetId() )
|
||||||
|
self.m_LinglunWords_staticText1.Bind( wx.EVT_LEFT_DCLICK, self.onYanlunDClicked )
|
||||||
|
self.m_LinglunWords_staticText1.Bind( wx.EVT_MOUSEWHEEL, self.onYanlunWheeled )
|
||||||
|
self.m_ChooseMidiTips_staticText3.Bind( wx.EVT_LEFT_DCLICK, self.MidiEasterEgg )
|
||||||
|
self.m_midiFilesList_listBox2.Bind( wx.EVT_LISTBOX, self.onFileListUpdated )
|
||||||
|
self.m_midiFilesList_listBox2.Bind( wx.EVT_LISTBOX_DCLICK, self.onFileDoubleClicked )
|
||||||
|
self.m_midiBroseButton_button21.Bind( wx.EVT_BUTTON, self.openFile )
|
||||||
|
self.m_outformatChoice_choice1.Bind( wx.EVT_CHOICE, self.onOutputFormatChosen )
|
||||||
|
self.m_playerChoice_choice2.Bind( wx.EVT_CHOICE, self.onPlayerChosen )
|
||||||
|
self.m_volumn_slider.Bind( wx.EVT_SCROLL, self.onVolumeScrolling )
|
||||||
|
self.m_volumn_spinCtrlDouble1.Bind( wx.EVT_SPINCTRLDOUBLE, self.onVolumeSpinChanged )
|
||||||
|
self.m_speed_slider.Bind( wx.EVT_SCROLL, self.onSpeedScrolling )
|
||||||
|
self.m_speed_spinCtrlDouble.Bind( wx.EVT_SPINCTRLDOUBLE, self.onSpeedSpinChanged )
|
||||||
|
self.m_progressBarEnablingCheckBox1.Bind( wx.EVT_CHECKBOX, self.onProgressbarChecked )
|
||||||
|
self.m_ScoreboardNameEntering_textCtrl9.Bind( wx.EVT_TEXT, self.onScoreboredNameUpdating )
|
||||||
|
self.m_IsAutoResetScoreboard_checkBox2.Bind( wx.EVT_CHECKBOX, self.onAutoResetScoreboardChecked )
|
||||||
|
self.m_PlayerSelectorEntering_comboBox1.Bind( wx.EVT_TEXT, self.onPlayerSelectorUpdating )
|
||||||
|
self.m_StructureHeight_slider7.Bind( wx.EVT_SCROLL, self.onStructureMaxHeightScrolling )
|
||||||
|
self.m_enteringStructureMaxHeight_spinCtrl1.Bind( wx.EVT_SPINCTRL, self.onStructureMaxHeightSpinChanged )
|
||||||
|
self.m_EnteringBDXfileSignName_textCtrl12.Bind( wx.EVT_TEXT, self.onBDXfileSignNameUpdating )
|
||||||
|
self.m_start_button2.Bind( wx.EVT_BUTTON, self.onStartButtonPressed )
|
||||||
|
self.m_BasicProgressBarStyleEntering_textCtrl4.Bind( wx.EVT_TEXT, self.onProgressbarBasicStyleUpdating )
|
||||||
|
self.m_unplayedProgressbarStyleEntering_textCtrl5.Bind( wx.EVT_TEXT, self.onProgressbarUnplayedStyleUpdating )
|
||||||
|
self.m_playedProgressbarStyleEntering_textCtrl5.Bind( wx.EVT_TEXT, self.onProgressbarPlayedStyleUpdating )
|
||||||
|
|
||||||
|
def __del__( self ):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
# Virtual event handlers, override them in your derived class
|
||||||
|
def onExitButtonPressed( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def onYanlunDClicked( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def onYanlunWheeled( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def MidiEasterEgg( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def onFileListUpdated( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def onFileDoubleClicked( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def openFile( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def onOutputFormatChosen( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def onPlayerChosen( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def onVolumeScrolling( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def onVolumeSpinChanged( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def onSpeedScrolling( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def onSpeedSpinChanged( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def onProgressbarChecked( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def onScoreboredNameUpdating( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def onAutoResetScoreboardChecked( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def onPlayerSelectorUpdating( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def onStructureMaxHeightScrolling( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def onStructureMaxHeightSpinChanged( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def onBDXfileSignNameUpdating( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def onStartButtonPressed( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def onProgressbarBasicStyleUpdating( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def onProgressbarUnplayedStyleUpdating( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def onProgressbarPlayedStyleUpdating( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
|
||||||
514
wxFB_Project/generated1_1.py
Normal file
514
wxFB_Project/generated1_1.py
Normal file
@@ -0,0 +1,514 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
###########################################################################
|
||||||
|
## Python code generated with wxFormBuilder (version 3.10.1-0-g8feb16b3)
|
||||||
|
## http://www.wxformbuilder.org/
|
||||||
|
##
|
||||||
|
## PLEASE DO *NOT* EDIT THIS FILE!
|
||||||
|
###########################################################################
|
||||||
|
|
||||||
|
import wx
|
||||||
|
import wx.xrc
|
||||||
|
import wx.propgrid as pg
|
||||||
|
|
||||||
|
###########################################################################
|
||||||
|
## Class LingLunMainFrame
|
||||||
|
###########################################################################
|
||||||
|
|
||||||
|
class LingLunMainFrame ( wx.Frame ):
|
||||||
|
|
||||||
|
def __init__( self, parent ):
|
||||||
|
wx.Frame.__init__ ( self, parent, id = wx.ID_ANY, title = wx.EmptyString, pos = wx.DefaultPosition, size = wx.Size( 660,723 ), style = wx.DEFAULT_FRAME_STYLE|wx.TAB_TRAVERSAL, name = u"LingLunConverter" )
|
||||||
|
|
||||||
|
self.SetSizeHints( wx.DefaultSize, wx.DefaultSize )
|
||||||
|
self.SetFont( wx.Font( wx.NORMAL_FONT.GetPointSize(), wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "OPPOSans R" ) )
|
||||||
|
self.SetForegroundColour( wx.SystemSettings.GetColour( wx.SYS_COLOUR_WINDOWTEXT ) )
|
||||||
|
self.SetBackgroundColour( wx.SystemSettings.GetColour( wx.SYS_COLOUR_WINDOW ) )
|
||||||
|
|
||||||
|
self.m_statusBar2 = self.CreateStatusBar( 1, wx.STB_SIZEGRIP, wx.ID_ANY )
|
||||||
|
self.m_statusBar2.SetFont( wx.Font( wx.NORMAL_FONT.GetPointSize(), wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "OPPOSans R" ) )
|
||||||
|
|
||||||
|
self.m_menubar1 = wx.MenuBar( 0 )
|
||||||
|
self.m_menubar1.SetFont( wx.Font( wx.NORMAL_FONT.GetPointSize(), wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "OPPOSans R" ) )
|
||||||
|
|
||||||
|
self.FileMenu = wx.Menu()
|
||||||
|
self.m_Exit_menuItem1 = wx.MenuItem( self.FileMenu, wx.ID_ANY, u"退出", u"这是退出按钮", wx.ITEM_NORMAL )
|
||||||
|
self.FileMenu.Append( self.m_Exit_menuItem1 )
|
||||||
|
|
||||||
|
self.m_menubar1.Append( self.FileMenu, u"文件" )
|
||||||
|
|
||||||
|
self.SetMenuBar( self.m_menubar1 )
|
||||||
|
|
||||||
|
m_mainBoxSizer = wx.BoxSizer( wx.VERTICAL )
|
||||||
|
|
||||||
|
s_yanLunbarSizer = wx.StaticBoxSizer( wx.StaticBox( self, wx.ID_ANY, u"言·论" ), wx.VERTICAL )
|
||||||
|
|
||||||
|
self.m_LinglunWords_staticText1 = wx.StaticText( s_yanLunbarSizer.GetStaticBox(), wx.ID_ANY, u"灵光焕发 深艺献心", wx.DefaultPosition, wx.DefaultSize, wx.ALIGN_CENTER_HORIZONTAL|wx.ST_ELLIPSIZE_MIDDLE|wx.ST_NO_AUTORESIZE )
|
||||||
|
self.m_LinglunWords_staticText1.Wrap( -1 )
|
||||||
|
|
||||||
|
self.m_LinglunWords_staticText1.SetFont( wx.Font( 12, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "OPPOSans B" ) )
|
||||||
|
self.m_LinglunWords_staticText1.SetForegroundColour( wx.SystemSettings.GetColour( wx.SYS_COLOUR_HIGHLIGHTTEXT ) )
|
||||||
|
self.m_LinglunWords_staticText1.SetBackgroundColour( wx.SystemSettings.GetColour( wx.SYS_COLOUR_WINDOWTEXT ) )
|
||||||
|
|
||||||
|
s_yanLunbarSizer.Add( self.m_LinglunWords_staticText1, 0, wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
m_mainBoxSizer.Add( s_yanLunbarSizer, 0, wx.ALL|wx.EXPAND|wx.RESERVE_SPACE_EVEN_IF_HIDDEN|wx.TOP, 2 )
|
||||||
|
|
||||||
|
self.mian_notebook = wx.Notebook( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||||
|
self.mian_notebook.SetFont( wx.Font( wx.NORMAL_FONT.GetPointSize(), wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "OPPOSans R" ) )
|
||||||
|
|
||||||
|
self.convert_page = wx.Panel( self.mian_notebook, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL )
|
||||||
|
self.mian_notebook.AddPage( self.convert_page, u"开始转换", False )
|
||||||
|
self.setting_page = wx.Panel( self.mian_notebook, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL )
|
||||||
|
self.mian_notebook.AddPage( self.setting_page, u"数据设置", True )
|
||||||
|
|
||||||
|
m_mainBoxSizer.Add( self.mian_notebook, 1, wx.EXPAND |wx.ALL, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
self.SetSizer( m_mainBoxSizer )
|
||||||
|
self.Layout()
|
||||||
|
|
||||||
|
self.Centre( wx.BOTH )
|
||||||
|
|
||||||
|
# Connect Events
|
||||||
|
self.Bind( wx.EVT_MENU, self.onExitButtonPressed, id = self.m_Exit_menuItem1.GetId() )
|
||||||
|
self.m_LinglunWords_staticText1.Bind( wx.EVT_LEFT_DCLICK, self.onYanlunDClicked )
|
||||||
|
self.m_LinglunWords_staticText1.Bind( wx.EVT_MOUSEWHEEL, self.onYanlunWheeled )
|
||||||
|
|
||||||
|
def __del__( self ):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
# Virtual event handlers, override them in your derived class
|
||||||
|
def onExitButtonPressed( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def onYanlunDClicked( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def onYanlunWheeled( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
|
||||||
|
###########################################################################
|
||||||
|
## Class convert_page_panel
|
||||||
|
###########################################################################
|
||||||
|
|
||||||
|
class convert_page_panel ( wx.Panel ):
|
||||||
|
|
||||||
|
def __init__( self, parent, id = wx.ID_ANY, pos = wx.DefaultPosition, size = wx.Size( 565,540 ), style = wx.TAB_TRAVERSAL, name = wx.EmptyString ):
|
||||||
|
wx.Panel.__init__ ( self, parent, id = id, pos = pos, size = size, style = style, name = name )
|
||||||
|
|
||||||
|
self.SetBackgroundColour( wx.SystemSettings.GetColour( wx.SYS_COLOUR_WINDOW ) )
|
||||||
|
|
||||||
|
main_page_sizer = wx.BoxSizer( wx.VERTICAL )
|
||||||
|
|
||||||
|
s_midiChooseSizer = wx.BoxSizer( wx.HORIZONTAL )
|
||||||
|
|
||||||
|
self.m_ChooseMidiTips_staticText3 = wx.StaticText( self, wx.ID_ANY, u"选择MIDI文件\n(双击移除)", wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||||
|
self.m_ChooseMidiTips_staticText3.Wrap( -1 )
|
||||||
|
|
||||||
|
s_midiChooseSizer.Add( self.m_ChooseMidiTips_staticText3, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 )
|
||||||
|
|
||||||
|
ss_MidiChooserSizer_bSizer9 = wx.BoxSizer( wx.VERTICAL )
|
||||||
|
|
||||||
|
m_midiFilesList_listBox2Choices = []
|
||||||
|
self.m_midiFilesList_listBox2 = wx.ListBox( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, m_midiFilesList_listBox2Choices, wx.LB_HSCROLL|wx.LB_SORT )
|
||||||
|
ss_MidiChooserSizer_bSizer9.Add( self.m_midiFilesList_listBox2, 0, wx.EXPAND, 0 )
|
||||||
|
|
||||||
|
|
||||||
|
s_midiChooseSizer.Add( ss_MidiChooserSizer_bSizer9, 1, wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
self.m_midiBroseButton_button21 = wx.Button( self, wx.ID_ANY, u"打开…", wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||||
|
s_midiChooseSizer.Add( self.m_midiBroseButton_button21, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
main_page_sizer.Add( s_midiChooseSizer, 0, wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
s_formatChooseSizer = wx.BoxSizer( wx.HORIZONTAL )
|
||||||
|
|
||||||
|
ss_outputFormatChooseSizer = wx.StaticBoxSizer( wx.StaticBox( self, wx.ID_ANY, u"选择输出格式" ), wx.VERTICAL )
|
||||||
|
|
||||||
|
m_outformatChoice_choice1Choices = [ u"附加包", u"BDX结构" ]
|
||||||
|
self.m_outformatChoice_choice1 = wx.Choice( ss_outputFormatChooseSizer.GetStaticBox(), wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, m_outformatChoice_choice1Choices, 0 )
|
||||||
|
self.m_outformatChoice_choice1.SetSelection( 0 )
|
||||||
|
ss_outputFormatChooseSizer.Add( self.m_outformatChoice_choice1, 0, wx.ALL|wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
s_formatChooseSizer.Add( ss_outputFormatChooseSizer, 1, wx.ALL|wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
ss_playerChooseSizer = wx.StaticBoxSizer( wx.StaticBox( self, wx.ID_ANY, u"选择播放器" ), wx.VERTICAL )
|
||||||
|
|
||||||
|
m_playerChoice_choice2Choices = [ u"计分板", u"延时", u"中继器" ]
|
||||||
|
self.m_playerChoice_choice2 = wx.Choice( ss_playerChooseSizer.GetStaticBox(), wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, m_playerChoice_choice2Choices, 0 )
|
||||||
|
self.m_playerChoice_choice2.SetSelection( 2 )
|
||||||
|
ss_playerChooseSizer.Add( self.m_playerChoice_choice2, 0, wx.ALL|wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
s_formatChooseSizer.Add( ss_playerChooseSizer, 1, wx.ALL|wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
main_page_sizer.Add( s_formatChooseSizer, 0, wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
s_promptSizer = wx.StaticBoxSizer( wx.StaticBox( self, wx.ID_ANY, u"转换参数" ), wx.VERTICAL )
|
||||||
|
|
||||||
|
ss_regularPromoptsEnteringSizer1 = wx.BoxSizer( wx.HORIZONTAL )
|
||||||
|
|
||||||
|
sss_VolumnPersentageEnteringSizer = wx.StaticBoxSizer( wx.StaticBox( s_promptSizer.GetStaticBox(), wx.ID_ANY, u"音量大小" ), wx.HORIZONTAL )
|
||||||
|
|
||||||
|
self.m_volumn_slider = wx.Slider( sss_VolumnPersentageEnteringSizer.GetStaticBox(), wx.ID_ANY, 1000, 0, 1000, wx.DefaultPosition, wx.DefaultSize, wx.SL_HORIZONTAL )
|
||||||
|
sss_VolumnPersentageEnteringSizer.Add( self.m_volumn_slider, 0, wx.ALL, 5 )
|
||||||
|
|
||||||
|
self.m_volumn_spinCtrlDouble1 = wx.SpinCtrlDouble( sss_VolumnPersentageEnteringSizer.GetStaticBox(), wx.ID_ANY, u"100", wx.DefaultPosition, wx.DefaultSize, wx.ALIGN_CENTER_HORIZONTAL|wx.SP_ARROW_KEYS|wx.TE_PROCESS_ENTER, 0, 100, 100.000000, 0.5 )
|
||||||
|
self.m_volumn_spinCtrlDouble1.SetDigits( 2 )
|
||||||
|
sss_VolumnPersentageEnteringSizer.Add( self.m_volumn_spinCtrlDouble1, 0, wx.ALL, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
ss_regularPromoptsEnteringSizer1.Add( sss_VolumnPersentageEnteringSizer, 0, wx.ALL|wx.EXPAND|wx.SHAPED|wx.ALIGN_CENTER_VERTICAL, 5 )
|
||||||
|
|
||||||
|
sss_SpeedEnteringSizer = wx.StaticBoxSizer( wx.StaticBox( s_promptSizer.GetStaticBox(), wx.ID_ANY, u"播放倍速" ), wx.HORIZONTAL )
|
||||||
|
|
||||||
|
self.m_speed_slider = wx.Slider( sss_SpeedEnteringSizer.GetStaticBox(), wx.ID_ANY, 50, 0, 100, wx.DefaultPosition, wx.DefaultSize, wx.SL_HORIZONTAL )
|
||||||
|
sss_SpeedEnteringSizer.Add( self.m_speed_slider, 0, wx.ALL, 5 )
|
||||||
|
|
||||||
|
self.m_speed_spinCtrlDouble = wx.SpinCtrlDouble( sss_SpeedEnteringSizer.GetStaticBox(), wx.ID_ANY, u"1", wx.DefaultPosition, wx.DefaultSize, wx.ALIGN_CENTER_HORIZONTAL|wx.SP_ARROW_KEYS|wx.TE_PROCESS_ENTER, 0.01, 10, 1, 0.1 )
|
||||||
|
self.m_speed_spinCtrlDouble.SetDigits( 2 )
|
||||||
|
sss_SpeedEnteringSizer.Add( self.m_speed_spinCtrlDouble, 0, wx.ALL, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
ss_regularPromoptsEnteringSizer1.Add( sss_SpeedEnteringSizer, 0, wx.ALL|wx.EXPAND|wx.SHAPED|wx.ALIGN_CENTER_VERTICAL, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
s_promptSizer.Add( ss_regularPromoptsEnteringSizer1, 0, wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
ss_commandCheckingSizer = wx.StaticBoxSizer( wx.StaticBox( s_promptSizer.GetStaticBox(), wx.ID_ANY, u"指令设置" ), wx.HORIZONTAL )
|
||||||
|
|
||||||
|
self.m_progressBarEnablingCheckBox1 = wx.CheckBox( ss_commandCheckingSizer.GetStaticBox(), wx.ID_ANY, u"启用进度条", wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||||
|
ss_commandCheckingSizer.Add( self.m_progressBarEnablingCheckBox1, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 )
|
||||||
|
|
||||||
|
self.m_oldExeFormatChecker_checkBox3 = wx.CheckBox( ss_commandCheckingSizer.GetStaticBox(), wx.ID_ANY, u"启用旧版执行指令格式", wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||||
|
ss_commandCheckingSizer.Add( self.m_oldExeFormatChecker_checkBox3, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
s_promptSizer.Add( ss_commandCheckingSizer, 0, wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
ss_HideAndSeekSizer_bSizer15 = wx.BoxSizer( wx.VERTICAL )
|
||||||
|
|
||||||
|
sss_ScoreboardPlayerPromptsSizer_bSizer7 = wx.BoxSizer( wx.HORIZONTAL )
|
||||||
|
|
||||||
|
self.m_EnterScoreboardNameTip_staticText4 = wx.StaticText( s_promptSizer.GetStaticBox(), wx.ID_ANY, u"播放计分板名称", wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||||
|
self.m_EnterScoreboardNameTip_staticText4.Wrap( -1 )
|
||||||
|
|
||||||
|
sss_ScoreboardPlayerPromptsSizer_bSizer7.Add( self.m_EnterScoreboardNameTip_staticText4, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 )
|
||||||
|
|
||||||
|
self.m_ScoreboardNameEntering_textCtrl9 = wx.TextCtrl( s_promptSizer.GetStaticBox(), wx.ID_ANY, u"mscplay", wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||||
|
self.m_ScoreboardNameEntering_textCtrl9.SetMaxLength( 10 )
|
||||||
|
sss_ScoreboardPlayerPromptsSizer_bSizer7.Add( self.m_ScoreboardNameEntering_textCtrl9, 0, wx.ALL, 5 )
|
||||||
|
|
||||||
|
self.m_staticline1 = wx.StaticLine( s_promptSizer.GetStaticBox(), wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL )
|
||||||
|
self.m_staticline1.SetMinSize( wx.Size( 2,-1 ) )
|
||||||
|
|
||||||
|
sss_ScoreboardPlayerPromptsSizer_bSizer7.Add( self.m_staticline1, 0, wx.ALL|wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
self.m_IsAutoResetScoreboard_checkBox2 = wx.CheckBox( s_promptSizer.GetStaticBox(), wx.ID_ANY, u"自动重置计分板", wx.DefaultPosition, wx.DefaultSize, wx.ALIGN_RIGHT )
|
||||||
|
sss_ScoreboardPlayerPromptsSizer_bSizer7.Add( self.m_IsAutoResetScoreboard_checkBox2, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
ss_HideAndSeekSizer_bSizer15.Add( sss_ScoreboardPlayerPromptsSizer_bSizer7, 0, wx.SHAPED|wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
sss_StructurePlayerPromptsSizer_bSizer8 = wx.BoxSizer( wx.HORIZONTAL )
|
||||||
|
|
||||||
|
self.m_PlayerSelectorEnteringTips_staticText41 = wx.StaticText( s_promptSizer.GetStaticBox(), wx.ID_ANY, u"玩家选择器", wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||||
|
self.m_PlayerSelectorEnteringTips_staticText41.Wrap( -1 )
|
||||||
|
|
||||||
|
sss_StructurePlayerPromptsSizer_bSizer8.Add( self.m_PlayerSelectorEnteringTips_staticText41, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 )
|
||||||
|
|
||||||
|
m_PlayerSelectorEntering_comboBox1Choices = [ u"@a", u"@p", u"@e[type=player]" ]
|
||||||
|
self.m_PlayerSelectorEntering_comboBox1 = wx.ComboBox( s_promptSizer.GetStaticBox(), wx.ID_ANY, u"@a", wx.DefaultPosition, wx.DefaultSize, m_PlayerSelectorEntering_comboBox1Choices, wx.CB_DROPDOWN|wx.TE_PROCESS_ENTER )
|
||||||
|
self.m_PlayerSelectorEntering_comboBox1.SetSelection( 0 )
|
||||||
|
sss_StructurePlayerPromptsSizer_bSizer8.Add( self.m_PlayerSelectorEntering_comboBox1, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 )
|
||||||
|
|
||||||
|
self.m_staticline2 = wx.StaticLine( s_promptSizer.GetStaticBox(), wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL )
|
||||||
|
self.m_staticline2.SetMinSize( wx.Size( 2,-1 ) )
|
||||||
|
|
||||||
|
sss_StructurePlayerPromptsSizer_bSizer8.Add( self.m_staticline2, 0, wx.ALL|wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
self.StructureMaxHeoghtTips_ = wx.StaticText( s_promptSizer.GetStaticBox(), wx.ID_ANY, u"结构生成最大高度", wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||||
|
self.StructureMaxHeoghtTips_.Wrap( -1 )
|
||||||
|
|
||||||
|
sss_StructurePlayerPromptsSizer_bSizer8.Add( self.StructureMaxHeoghtTips_, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 )
|
||||||
|
|
||||||
|
self.m_StructureHeight_slider7 = wx.Slider( s_promptSizer.GetStaticBox(), wx.ID_ANY, 50, 3, 1024, wx.DefaultPosition, wx.DefaultSize, wx.SL_HORIZONTAL )
|
||||||
|
sss_StructurePlayerPromptsSizer_bSizer8.Add( self.m_StructureHeight_slider7, 0, wx.ALL, 5 )
|
||||||
|
|
||||||
|
self.m_enteringStructureMaxHeight_spinCtrl1 = wx.SpinCtrl( s_promptSizer.GetStaticBox(), wx.ID_ANY, u"50", wx.DefaultPosition, wx.DefaultSize, wx.SP_ARROW_KEYS, 3, 1024, 50 )
|
||||||
|
sss_StructurePlayerPromptsSizer_bSizer8.Add( self.m_enteringStructureMaxHeight_spinCtrl1, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
ss_HideAndSeekSizer_bSizer15.Add( sss_StructurePlayerPromptsSizer_bSizer8, 0, wx.SHAPED|wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
sss_BDXfileSignNameSizer_bSizer13 = wx.BoxSizer( wx.HORIZONTAL )
|
||||||
|
|
||||||
|
self.m_BDXfileSignNameTips_staticText8 = wx.StaticText( s_promptSizer.GetStaticBox(), wx.ID_ANY, u"BDX作者署名", wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||||
|
self.m_BDXfileSignNameTips_staticText8.Wrap( -1 )
|
||||||
|
|
||||||
|
sss_BDXfileSignNameSizer_bSizer13.Add( self.m_BDXfileSignNameTips_staticText8, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 )
|
||||||
|
|
||||||
|
self.m_EnteringBDXfileSignName_textCtrl12 = wx.TextCtrl( s_promptSizer.GetStaticBox(), wx.ID_ANY, u"UserYou", wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||||
|
sss_BDXfileSignNameSizer_bSizer13.Add( self.m_EnteringBDXfileSignName_textCtrl12, 0, wx.ALL, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
ss_HideAndSeekSizer_bSizer15.Add( sss_BDXfileSignNameSizer_bSizer13, 0, wx.SHAPED|wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
s_promptSizer.Add( ss_HideAndSeekSizer_bSizer15, 0, wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
main_page_sizer.Add( s_promptSizer, 0, wx.SHAPED|wx.EXPAND|wx.ALIGN_CENTER_HORIZONTAL, 5 )
|
||||||
|
|
||||||
|
s_StartSizer_sbSizer18 = wx.StaticBoxSizer( wx.StaticBox( self, wx.ID_ANY, u"开始转换" ), wx.HORIZONTAL )
|
||||||
|
|
||||||
|
s_StartSizer_sbSizer18.SetMinSize( wx.Size( -1,100 ) )
|
||||||
|
|
||||||
|
s_StartSizer_sbSizer18.Add( ( 0, 0), 1, wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
self.m_start_button2 = wx.Button( s_StartSizer_sbSizer18.GetStaticBox(), wx.ID_ANY, u"开始转换", wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||||
|
s_StartSizer_sbSizer18.Add( self.m_start_button2, 0, wx.ALIGN_CENTER|wx.ALL, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
main_page_sizer.Add( s_StartSizer_sbSizer18, 1, wx.ALL|wx.EXPAND|wx.RESERVE_SPACE_EVEN_IF_HIDDEN, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
self.SetSizer( main_page_sizer )
|
||||||
|
self.Layout()
|
||||||
|
|
||||||
|
# Connect Events
|
||||||
|
self.m_ChooseMidiTips_staticText3.Bind( wx.EVT_LEFT_DCLICK, self.MidiEasterEgg )
|
||||||
|
self.m_midiFilesList_listBox2.Bind( wx.EVT_LISTBOX, self.onFileListUpdated )
|
||||||
|
self.m_midiFilesList_listBox2.Bind( wx.EVT_LISTBOX_DCLICK, self.onFileDoubleClicked )
|
||||||
|
self.m_midiBroseButton_button21.Bind( wx.EVT_BUTTON, self.openFile )
|
||||||
|
self.m_outformatChoice_choice1.Bind( wx.EVT_CHOICE, self.onOutputFormatChosen )
|
||||||
|
self.m_playerChoice_choice2.Bind( wx.EVT_CHOICE, self.onPlayerChosen )
|
||||||
|
self.m_volumn_slider.Bind( wx.EVT_SCROLL, self.onVolumeScrolling )
|
||||||
|
self.m_volumn_spinCtrlDouble1.Bind( wx.EVT_SPINCTRLDOUBLE, self.onVolumeSpinChanged )
|
||||||
|
self.m_speed_slider.Bind( wx.EVT_SCROLL, self.onSpeedScrolling )
|
||||||
|
self.m_speed_spinCtrlDouble.Bind( wx.EVT_SPINCTRLDOUBLE, self.onSpeedSpinChanged )
|
||||||
|
self.m_progressBarEnablingCheckBox1.Bind( wx.EVT_CHECKBOX, self.onProgressbarChecked )
|
||||||
|
self.m_ScoreboardNameEntering_textCtrl9.Bind( wx.EVT_TEXT, self.onScoreboredNameUpdating )
|
||||||
|
self.m_IsAutoResetScoreboard_checkBox2.Bind( wx.EVT_CHECKBOX, self.onAutoResetScoreboardChecked )
|
||||||
|
self.m_PlayerSelectorEntering_comboBox1.Bind( wx.EVT_TEXT, self.onPlayerSelectorUpdating )
|
||||||
|
self.m_StructureHeight_slider7.Bind( wx.EVT_SCROLL, self.onStructureMaxHeightScrolling )
|
||||||
|
self.m_enteringStructureMaxHeight_spinCtrl1.Bind( wx.EVT_SPINCTRL, self.onStructureMaxHeightSpinChanged )
|
||||||
|
self.m_EnteringBDXfileSignName_textCtrl12.Bind( wx.EVT_TEXT, self.onBDXfileSignNameUpdating )
|
||||||
|
self.m_start_button2.Bind( wx.EVT_BUTTON, self.onStartButtonPressed )
|
||||||
|
|
||||||
|
def __del__( self ):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
# Virtual event handlers, override them in your derived class
|
||||||
|
def MidiEasterEgg( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def onFileListUpdated( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def onFileDoubleClicked( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def openFile( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def onOutputFormatChosen( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def onPlayerChosen( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def onVolumeScrolling( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def onVolumeSpinChanged( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def onSpeedScrolling( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def onSpeedSpinChanged( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def onProgressbarChecked( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def onScoreboredNameUpdating( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def onAutoResetScoreboardChecked( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def onPlayerSelectorUpdating( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def onStructureMaxHeightScrolling( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def onStructureMaxHeightSpinChanged( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def onBDXfileSignNameUpdating( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def onStartButtonPressed( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
|
||||||
|
###########################################################################
|
||||||
|
## Class setting_page_pannel
|
||||||
|
###########################################################################
|
||||||
|
|
||||||
|
class setting_page_pannel ( wx.Panel ):
|
||||||
|
|
||||||
|
def __init__( self, parent, id = wx.ID_ANY, pos = wx.DefaultPosition, size = wx.Size( 565,540 ), style = wx.TAB_TRAVERSAL, name = wx.EmptyString ):
|
||||||
|
wx.Panel.__init__ ( self, parent, id = id, pos = pos, size = size, style = style, name = name )
|
||||||
|
|
||||||
|
setting_page_sizer = wx.BoxSizer( wx.VERTICAL )
|
||||||
|
|
||||||
|
self.setting_notebook = wx.Notebook( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.NB_FIXEDWIDTH|wx.NB_MULTILINE|wx.NB_RIGHT )
|
||||||
|
self.setting_notebook.SetFont( wx.Font( wx.NORMAL_FONT.GetPointSize(), wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "@OPPOSans R" ) )
|
||||||
|
self.setting_notebook.SetBackgroundColour( wx.SystemSettings.GetColour( wx.SYS_COLOUR_WINDOW ) )
|
||||||
|
|
||||||
|
self.setting_page1 = wx.Panel( self.setting_notebook, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL )
|
||||||
|
self.setting_page1.SetFont( wx.Font( wx.NORMAL_FONT.GetPointSize(), wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "OPPOSans R" ) )
|
||||||
|
|
||||||
|
setting_page1_box_sizer = wx.BoxSizer( wx.VERTICAL )
|
||||||
|
|
||||||
|
sss_customProgressBarSizer_wSizer6 = wx.WrapSizer( wx.HORIZONTAL, wx.WRAPSIZER_DEFAULT_FLAGS )
|
||||||
|
|
||||||
|
setting_page1_progressbar_style = wx.StaticBoxSizer( wx.StaticBox( self.setting_page1, wx.ID_ANY, u"进度条" ), wx.HORIZONTAL )
|
||||||
|
|
||||||
|
ssss_basicProgressStylePattle_sbSizer9 = wx.StaticBoxSizer( wx.StaticBox( setting_page1_progressbar_style.GetStaticBox(), wx.ID_ANY, u"基本样式组" ), wx.VERTICAL )
|
||||||
|
|
||||||
|
self.m_BasicProgressBarStyleEntering_textCtrl4 = wx.TextCtrl( ssss_basicProgressStylePattle_sbSizer9.GetStaticBox(), wx.ID_ANY, u"▶ %%N [ %%s/%^s %%% __________ %%t|%^t ]", wx.DefaultPosition, wx.DefaultSize, wx.TE_LEFT|wx.TE_NO_VSCROLL )
|
||||||
|
ssss_basicProgressStylePattle_sbSizer9.Add( self.m_BasicProgressBarStyleEntering_textCtrl4, 0, wx.ALL|wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
setting_page1_progressbar_style.Add( ssss_basicProgressStylePattle_sbSizer9, 1, wx.ALL|wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
ssss_UnplayedPartProgressbarPattle_sbSizer10 = wx.StaticBoxSizer( wx.StaticBox( setting_page1_progressbar_style.GetStaticBox(), wx.ID_ANY, u"未播放之样式" ), wx.VERTICAL )
|
||||||
|
|
||||||
|
self.m_unplayedProgressbarStyleEntering_textCtrl5 = wx.TextCtrl( ssss_UnplayedPartProgressbarPattle_sbSizer10.GetStaticBox(), wx.ID_ANY, u"§7=§r", wx.DefaultPosition, wx.DefaultSize, wx.TE_LEFT|wx.TE_NO_VSCROLL )
|
||||||
|
ssss_UnplayedPartProgressbarPattle_sbSizer10.Add( self.m_unplayedProgressbarStyleEntering_textCtrl5, 0, wx.ALL, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
setting_page1_progressbar_style.Add( ssss_UnplayedPartProgressbarPattle_sbSizer10, 1, wx.ALL|wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
ssss_PlayedPartProgressbarPattle_sbSizer11 = wx.StaticBoxSizer( wx.StaticBox( setting_page1_progressbar_style.GetStaticBox(), wx.ID_ANY, u"已播放之样式" ), wx.VERTICAL )
|
||||||
|
|
||||||
|
self.m_playedProgressbarStyleEntering_textCtrl5 = wx.TextCtrl( ssss_PlayedPartProgressbarPattle_sbSizer11.GetStaticBox(), wx.ID_ANY, u"§e=§r", wx.DefaultPosition, wx.DefaultSize, wx.TE_LEFT|wx.TE_NO_VSCROLL )
|
||||||
|
ssss_PlayedPartProgressbarPattle_sbSizer11.Add( self.m_playedProgressbarStyleEntering_textCtrl5, 0, wx.ALL, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
setting_page1_progressbar_style.Add( ssss_PlayedPartProgressbarPattle_sbSizer11, 1, wx.ALL|wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
sss_customProgressBarSizer_wSizer6.Add( setting_page1_progressbar_style, 1, wx.ALL|wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
setting_page1_experiment_style = wx.StaticBoxSizer( wx.StaticBox( self.setting_page1, wx.ID_ANY, u"实验性功能" ), wx.HORIZONTAL )
|
||||||
|
|
||||||
|
self.m_enable_experiment_checkBox = wx.CheckBox( setting_page1_experiment_style.GetStaticBox(), wx.ID_ANY, u"启用实验性功能", wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||||
|
setting_page1_experiment_style.Add( self.m_enable_experiment_checkBox, 1, wx.ALIGN_CENTER_VERTICAL|wx.ALL|wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
experiment_type_choiceChoices = [ u"常规转换", u"长音插值", u"同刻偏移" ]
|
||||||
|
self.experiment_type_choice = wx.Choice( setting_page1_experiment_style.GetStaticBox(), wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, experiment_type_choiceChoices, 0 )
|
||||||
|
self.experiment_type_choice.SetSelection( 0 )
|
||||||
|
setting_page1_experiment_style.Add( self.experiment_type_choice, 2, wx.ALL|wx.EXPAND|wx.ALIGN_CENTER_VERTICAL, 5 )
|
||||||
|
|
||||||
|
self.m_ignore_midi_error_checkBox = wx.CheckBox( setting_page1_experiment_style.GetStaticBox(), wx.ID_ANY, u"忽略MIDI错误", wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||||
|
self.m_ignore_midi_error_checkBox.SetValue(True)
|
||||||
|
setting_page1_experiment_style.Add( self.m_ignore_midi_error_checkBox, 1, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
sss_customProgressBarSizer_wSizer6.Add( setting_page1_experiment_style, 1, wx.ALL|wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
setting_page1_box_sizer.Add( sss_customProgressBarSizer_wSizer6, 1, wx.ALL|wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
self.setting_page1.SetSizer( setting_page1_box_sizer )
|
||||||
|
self.setting_page1.Layout()
|
||||||
|
setting_page1_box_sizer.Fit( self.setting_page1 )
|
||||||
|
self.setting_notebook.AddPage( self.setting_page1, u"基本信息", True )
|
||||||
|
self.setting_page2 = wx.Panel( self.setting_notebook, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL )
|
||||||
|
self.setting_page2.SetFont( wx.Font( wx.NORMAL_FONT.GetPointSize(), wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, wx.EmptyString ) )
|
||||||
|
|
||||||
|
setting_page2_box_sizer = wx.BoxSizer( wx.VERTICAL )
|
||||||
|
|
||||||
|
m_pitched_instrument_table_choiceChoices = [ u"“偷吃”的对照表", u"“经典”对照表" ]
|
||||||
|
self.m_pitched_instrument_table_choice = wx.Choice( self.setting_page2, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, m_pitched_instrument_table_choiceChoices, 0 )
|
||||||
|
self.m_pitched_instrument_table_choice.SetSelection( 0 )
|
||||||
|
self.m_pitched_instrument_table_choice.SetFont( wx.Font( wx.NORMAL_FONT.GetPointSize(), wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "OPPOSans R" ) )
|
||||||
|
|
||||||
|
setting_page2_box_sizer.Add( self.m_pitched_instrument_table_choice, 0, wx.ALL|wx.ALIGN_CENTER_HORIZONTAL|wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
self.m_pitched_notes_table_propertyGrid1 = pg.PropertyGrid(self.setting_page2, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.propgrid.PG_BOLD_MODIFIED|wx.propgrid.PG_DEFAULT_STYLE)
|
||||||
|
self.m_pitched_notes_table_propertyGrid1.SetFont( wx.Font( wx.NORMAL_FONT.GetPointSize(), wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "OPPOSans R" ) )
|
||||||
|
|
||||||
|
self.m_propertyGridItem1 = self.m_pitched_notes_table_propertyGrid1.Append( pg.StringProperty( u"乐音乐器1", u"乐音乐器1" ) )
|
||||||
|
self.m_propertyGridItem2 = self.m_pitched_notes_table_propertyGrid1.Append( pg.StringProperty( u"乐音乐器2", u"乐音乐器2" ) )
|
||||||
|
setting_page2_box_sizer.Add( self.m_pitched_notes_table_propertyGrid1, 1, wx.ALL|wx.EXPAND|wx.ALIGN_CENTER_HORIZONTAL, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
self.setting_page2.SetSizer( setting_page2_box_sizer )
|
||||||
|
self.setting_page2.Layout()
|
||||||
|
setting_page2_box_sizer.Fit( self.setting_page2 )
|
||||||
|
self.setting_notebook.AddPage( self.setting_page2, u"乐音乐器对照表", False )
|
||||||
|
self.setting_page3 = wx.Panel( self.setting_notebook, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL )
|
||||||
|
setting_page3_box_sizer = wx.BoxSizer( wx.VERTICAL )
|
||||||
|
|
||||||
|
m_percussion_instrument_table_choice1Choices = [ u"“偷吃”的对照表", u"“经典”对照表" ]
|
||||||
|
self.m_percussion_instrument_table_choice1 = wx.Choice( self.setting_page3, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, m_percussion_instrument_table_choice1Choices, 0 )
|
||||||
|
self.m_percussion_instrument_table_choice1.SetSelection( 0 )
|
||||||
|
self.m_percussion_instrument_table_choice1.SetFont( wx.Font( wx.NORMAL_FONT.GetPointSize(), wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "OPPOSans R" ) )
|
||||||
|
|
||||||
|
setting_page3_box_sizer.Add( self.m_percussion_instrument_table_choice1, 0, wx.ALL|wx.EXPAND|wx.ALIGN_CENTER_HORIZONTAL, 5 )
|
||||||
|
|
||||||
|
self.m_percussion_notes_table_propertyGrid11 = pg.PropertyGrid(self.setting_page3, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.propgrid.PG_BOLD_MODIFIED|wx.propgrid.PG_DEFAULT_STYLE)
|
||||||
|
self.m_percussion_notes_table_propertyGrid11.SetFont( wx.Font( wx.NORMAL_FONT.GetPointSize(), wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "OPPOSans R" ) )
|
||||||
|
|
||||||
|
self.m_propertyGridItem11 = self.m_percussion_notes_table_propertyGrid11.Append( pg.StringProperty( u"打击乐器1", u"打击乐器1" ) )
|
||||||
|
self.m_propertyGridItem21 = self.m_percussion_notes_table_propertyGrid11.Append( pg.StringProperty( u"打击乐器2", u"打击乐器2" ) )
|
||||||
|
setting_page3_box_sizer.Add( self.m_percussion_notes_table_propertyGrid11, 1, wx.ALL|wx.EXPAND|wx.ALIGN_CENTER_HORIZONTAL, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
self.setting_page3.SetSizer( setting_page3_box_sizer )
|
||||||
|
self.setting_page3.Layout()
|
||||||
|
setting_page3_box_sizer.Fit( self.setting_page3 )
|
||||||
|
self.setting_notebook.AddPage( self.setting_page3, u"打击乐器对照表", False )
|
||||||
|
|
||||||
|
setting_page_sizer.Add( self.setting_notebook, 1, wx.EXPAND |wx.ALL, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
self.SetSizer( setting_page_sizer )
|
||||||
|
self.Layout()
|
||||||
|
|
||||||
|
# Connect Events
|
||||||
|
self.m_BasicProgressBarStyleEntering_textCtrl4.Bind( wx.EVT_TEXT, self.onProgressbarBasicStyleUpdating )
|
||||||
|
self.m_unplayedProgressbarStyleEntering_textCtrl5.Bind( wx.EVT_TEXT, self.onProgressbarUnplayedStyleUpdating )
|
||||||
|
self.m_playedProgressbarStyleEntering_textCtrl5.Bind( wx.EVT_TEXT, self.onProgressbarPlayedStyleUpdating )
|
||||||
|
|
||||||
|
def __del__( self ):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
# Virtual event handlers, override them in your derived class
|
||||||
|
def onProgressbarBasicStyleUpdating( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def onProgressbarUnplayedStyleUpdating( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def onProgressbarPlayedStyleUpdating( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
|
||||||
612
wxFB_Project/noname.py
Normal file
612
wxFB_Project/noname.py
Normal file
@@ -0,0 +1,612 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
###########################################################################
|
||||||
|
## Python code generated with wxFormBuilder (version 3.10.1-0-g8feb16b3)
|
||||||
|
## http://www.wxformbuilder.org/
|
||||||
|
##
|
||||||
|
## PLEASE DO *NOT* EDIT THIS FILE!
|
||||||
|
###########################################################################
|
||||||
|
|
||||||
|
import wx
|
||||||
|
import wx.xrc
|
||||||
|
import wx.propgrid as pg
|
||||||
|
|
||||||
|
###########################################################################
|
||||||
|
## Class LingLunMainFrame
|
||||||
|
###########################################################################
|
||||||
|
|
||||||
|
class LingLunMainFrame ( wx.Frame ):
|
||||||
|
|
||||||
|
def __init__( self, parent ):
|
||||||
|
wx.Frame.__init__ ( self, parent, id = wx.ID_ANY, title = wx.EmptyString, pos = wx.DefaultPosition, size = wx.Size( 660,723 ), style = wx.DEFAULT_FRAME_STYLE|wx.TAB_TRAVERSAL, name = u"LingLunConverter" )
|
||||||
|
|
||||||
|
self.SetSizeHints( wx.DefaultSize, wx.DefaultSize )
|
||||||
|
self.SetFont( wx.Font( wx.NORMAL_FONT.GetPointSize(), wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "OPPOSans R" ) )
|
||||||
|
self.SetForegroundColour( wx.SystemSettings.GetColour( wx.SYS_COLOUR_WINDOWTEXT ) )
|
||||||
|
self.SetBackgroundColour( wx.SystemSettings.GetColour( wx.SYS_COLOUR_WINDOW ) )
|
||||||
|
|
||||||
|
self.m_statusBar2 = self.CreateStatusBar( 1, wx.STB_SIZEGRIP, wx.ID_ANY )
|
||||||
|
self.m_statusBar2.SetFont( wx.Font( wx.NORMAL_FONT.GetPointSize(), wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "OPPOSans R" ) )
|
||||||
|
|
||||||
|
self.m_menubar1 = wx.MenuBar( 0 )
|
||||||
|
self.m_menubar1.SetFont( wx.Font( wx.NORMAL_FONT.GetPointSize(), wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "OPPOSans R" ) )
|
||||||
|
|
||||||
|
self.FileMenu = wx.Menu()
|
||||||
|
self.m_ClearSetting_menuItem2 = wx.MenuItem( self.FileMenu, wx.ID_ANY, u"重置设置", u"将全部数据设置重置为默认值(下次启动时生效)", wx.ITEM_CHECK )
|
||||||
|
self.FileMenu.Append( self.m_ClearSetting_menuItem2 )
|
||||||
|
|
||||||
|
self.m_Exit_menuItem1 = wx.MenuItem( self.FileMenu, wx.ID_ANY, u"退出", u"这是退出按钮", wx.ITEM_NORMAL )
|
||||||
|
self.FileMenu.Append( self.m_Exit_menuItem1 )
|
||||||
|
|
||||||
|
self.m_menubar1.Append( self.FileMenu, u"文件" )
|
||||||
|
|
||||||
|
self.SetMenuBar( self.m_menubar1 )
|
||||||
|
|
||||||
|
m_mainBoxSizer = wx.BoxSizer( wx.VERTICAL )
|
||||||
|
|
||||||
|
s_yanLunbarSizer = wx.StaticBoxSizer( wx.StaticBox( self, wx.ID_ANY, u"言·论" ), wx.VERTICAL )
|
||||||
|
|
||||||
|
self.m_LinglunWords_staticText1 = wx.StaticText( s_yanLunbarSizer.GetStaticBox(), wx.ID_ANY, u"灵光焕发 深艺献心", wx.DefaultPosition, wx.DefaultSize, wx.ALIGN_CENTER_HORIZONTAL|wx.ST_ELLIPSIZE_MIDDLE|wx.ST_NO_AUTORESIZE )
|
||||||
|
self.m_LinglunWords_staticText1.Wrap( -1 )
|
||||||
|
|
||||||
|
self.m_LinglunWords_staticText1.SetFont( wx.Font( 12, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "OPPOSans B" ) )
|
||||||
|
self.m_LinglunWords_staticText1.SetForegroundColour( wx.SystemSettings.GetColour( wx.SYS_COLOUR_HIGHLIGHTTEXT ) )
|
||||||
|
self.m_LinglunWords_staticText1.SetBackgroundColour( wx.SystemSettings.GetColour( wx.SYS_COLOUR_WINDOWTEXT ) )
|
||||||
|
|
||||||
|
s_yanLunbarSizer.Add( self.m_LinglunWords_staticText1, 0, wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
m_mainBoxSizer.Add( s_yanLunbarSizer, 0, wx.ALL|wx.EXPAND|wx.RESERVE_SPACE_EVEN_IF_HIDDEN|wx.TOP, 2 )
|
||||||
|
|
||||||
|
self.mian_notebook = wx.Notebook( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||||
|
self.mian_notebook.SetFont( wx.Font( wx.NORMAL_FONT.GetPointSize(), wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "OPPOSans R" ) )
|
||||||
|
|
||||||
|
self.convert_page = wx.Panel( self.mian_notebook, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL )
|
||||||
|
self.mian_notebook.AddPage( self.convert_page, u"开始转换", True )
|
||||||
|
self.setting_page = wx.Panel( self.mian_notebook, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL )
|
||||||
|
self.mian_notebook.AddPage( self.setting_page, u"数据设置", False )
|
||||||
|
|
||||||
|
m_mainBoxSizer.Add( self.mian_notebook, 1, wx.EXPAND |wx.ALL, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
self.SetSizer( m_mainBoxSizer )
|
||||||
|
self.Layout()
|
||||||
|
|
||||||
|
self.Centre( wx.BOTH )
|
||||||
|
|
||||||
|
# Connect Events
|
||||||
|
self.Bind( wx.EVT_MENU, self.onResetSettingButtonSelection, id = self.m_ClearSetting_menuItem2.GetId() )
|
||||||
|
self.Bind( wx.EVT_MENU, self.onExitButtonPressed, id = self.m_Exit_menuItem1.GetId() )
|
||||||
|
self.m_LinglunWords_staticText1.Bind( wx.EVT_LEFT_DCLICK, self.onYanlunDClicked )
|
||||||
|
self.m_LinglunWords_staticText1.Bind( wx.EVT_MOUSEWHEEL, self.onYanlunWheeled )
|
||||||
|
|
||||||
|
def __del__( self ):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
# Virtual event handlers, override them in your derived class
|
||||||
|
def onResetSettingButtonSelection( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def onExitButtonPressed( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def onYanlunDClicked( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def onYanlunWheeled( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
|
||||||
|
###########################################################################
|
||||||
|
## Class ConvertPagePanel
|
||||||
|
###########################################################################
|
||||||
|
|
||||||
|
class ConvertPagePanel ( wx.Panel ):
|
||||||
|
|
||||||
|
def __init__( self, parent, id = wx.ID_ANY, pos = wx.DefaultPosition, size = wx.Size( 652,588 ), style = wx.TAB_TRAVERSAL, name = wx.EmptyString ):
|
||||||
|
wx.Panel.__init__ ( self, parent, id = id, pos = pos, size = size, style = style, name = name )
|
||||||
|
|
||||||
|
self.SetBackgroundColour( wx.SystemSettings.GetColour( wx.SYS_COLOUR_WINDOW ) )
|
||||||
|
|
||||||
|
main_page_sizer = wx.BoxSizer( wx.VERTICAL )
|
||||||
|
|
||||||
|
s_midiChooseSizer = wx.BoxSizer( wx.HORIZONTAL )
|
||||||
|
|
||||||
|
MidiChooser_Delete_and_Tips_bSizer15 = wx.BoxSizer( wx.VERTICAL )
|
||||||
|
|
||||||
|
self.m_ChooseMidiTips_staticText3 = wx.StaticText( self, wx.ID_ANY, u"选择MIDI文件\n(双击移除)", wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||||
|
self.m_ChooseMidiTips_staticText3.Wrap( -1 )
|
||||||
|
|
||||||
|
MidiChooser_Delete_and_Tips_bSizer15.Add( self.m_ChooseMidiTips_staticText3, 0, wx.ALL|wx.ALIGN_CENTER_HORIZONTAL, 5 )
|
||||||
|
|
||||||
|
self.m_done_then_remove_checkBox6 = wx.CheckBox( self, wx.ID_ANY, u"完成后移除", wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||||
|
MidiChooser_Delete_and_Tips_bSizer15.Add( self.m_done_then_remove_checkBox6, 0, wx.ALL, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
s_midiChooseSizer.Add( MidiChooser_Delete_and_Tips_bSizer15, 0, wx.SHAPED|wx.EXPAND, 0 )
|
||||||
|
|
||||||
|
ss_MidiChooserSizer_bSizer9 = wx.BoxSizer( wx.VERTICAL )
|
||||||
|
|
||||||
|
m_midiFilesList_listBox2Choices = []
|
||||||
|
self.m_midiFilesList_listBox2 = wx.ListBox( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, m_midiFilesList_listBox2Choices, wx.LB_HSCROLL|wx.LB_SORT )
|
||||||
|
ss_MidiChooserSizer_bSizer9.Add( self.m_midiFilesList_listBox2, 1, wx.EXPAND, 0 )
|
||||||
|
|
||||||
|
|
||||||
|
s_midiChooseSizer.Add( ss_MidiChooserSizer_bSizer9, 1, wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
MidiChooser_Open_and_Clear_Buttons_bSizer16 = wx.BoxSizer( wx.VERTICAL )
|
||||||
|
|
||||||
|
self.m_midiBroseButton_button21 = wx.Button( self, wx.ID_ANY, u"打开…", wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||||
|
MidiChooser_Open_and_Clear_Buttons_bSizer16.Add( self.m_midiBroseButton_button21, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 )
|
||||||
|
|
||||||
|
self.m_midiChooser_Clear_button3 = wx.Button( self, wx.ID_ANY, u"清空文件", wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||||
|
MidiChooser_Open_and_Clear_Buttons_bSizer16.Add( self.m_midiChooser_Clear_button3, 0, wx.ALL, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
s_midiChooseSizer.Add( MidiChooser_Open_and_Clear_Buttons_bSizer16, 0, wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
main_page_sizer.Add( s_midiChooseSizer, 0, wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
s_formatChooseSizer = wx.BoxSizer( wx.HORIZONTAL )
|
||||||
|
|
||||||
|
ss_outputFormatChooseSizer = wx.StaticBoxSizer( wx.StaticBox( self, wx.ID_ANY, u"选择输出格式" ), wx.VERTICAL )
|
||||||
|
|
||||||
|
m_outformatChoice_choice1Choices = [ u"附加包", u"BDX结构" ]
|
||||||
|
self.m_outformatChoice_choice1 = wx.Choice( ss_outputFormatChooseSizer.GetStaticBox(), wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, m_outformatChoice_choice1Choices, 0 )
|
||||||
|
self.m_outformatChoice_choice1.SetSelection( 0 )
|
||||||
|
ss_outputFormatChooseSizer.Add( self.m_outformatChoice_choice1, 0, wx.ALL|wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
s_formatChooseSizer.Add( ss_outputFormatChooseSizer, 1, wx.ALL|wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
ss_playerChooseSizer = wx.StaticBoxSizer( wx.StaticBox( self, wx.ID_ANY, u"选择播放器" ), wx.VERTICAL )
|
||||||
|
|
||||||
|
m_playerChoice_choice2Choices = [ u"计分板", u"延时", u"中继器" ]
|
||||||
|
self.m_playerChoice_choice2 = wx.Choice( ss_playerChooseSizer.GetStaticBox(), wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, m_playerChoice_choice2Choices, 0 )
|
||||||
|
self.m_playerChoice_choice2.SetSelection( 2 )
|
||||||
|
ss_playerChooseSizer.Add( self.m_playerChoice_choice2, 0, wx.ALL|wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
s_formatChooseSizer.Add( ss_playerChooseSizer, 1, wx.ALL|wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
main_page_sizer.Add( s_formatChooseSizer, 0, wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
s_promptSizer = wx.StaticBoxSizer( wx.StaticBox( self, wx.ID_ANY, u"转换参数" ), wx.VERTICAL )
|
||||||
|
|
||||||
|
ss_regularPromoptsEnteringSizer1 = wx.BoxSizer( wx.HORIZONTAL )
|
||||||
|
|
||||||
|
sss_VolumnPersentageEnteringSizer = wx.StaticBoxSizer( wx.StaticBox( s_promptSizer.GetStaticBox(), wx.ID_ANY, u"音量大小" ), wx.HORIZONTAL )
|
||||||
|
|
||||||
|
self.m_volumn_slider = wx.Slider( sss_VolumnPersentageEnteringSizer.GetStaticBox(), wx.ID_ANY, 1000, 0, 1000, wx.DefaultPosition, wx.DefaultSize, wx.SL_HORIZONTAL )
|
||||||
|
sss_VolumnPersentageEnteringSizer.Add( self.m_volumn_slider, 0, wx.ALL, 5 )
|
||||||
|
|
||||||
|
self.m_volumn_spinCtrlDouble1 = wx.SpinCtrlDouble( sss_VolumnPersentageEnteringSizer.GetStaticBox(), wx.ID_ANY, u"100", wx.DefaultPosition, wx.DefaultSize, wx.ALIGN_CENTER_HORIZONTAL|wx.SP_ARROW_KEYS|wx.TE_PROCESS_ENTER, 0, 100, 100.000000, 0.5 )
|
||||||
|
self.m_volumn_spinCtrlDouble1.SetDigits( 2 )
|
||||||
|
sss_VolumnPersentageEnteringSizer.Add( self.m_volumn_spinCtrlDouble1, 0, wx.ALL, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
ss_regularPromoptsEnteringSizer1.Add( sss_VolumnPersentageEnteringSizer, 0, wx.ALL|wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
sss_SpeedEnteringSizer = wx.StaticBoxSizer( wx.StaticBox( s_promptSizer.GetStaticBox(), wx.ID_ANY, u"播放倍速" ), wx.HORIZONTAL )
|
||||||
|
|
||||||
|
self.m_speed_slider = wx.Slider( sss_SpeedEnteringSizer.GetStaticBox(), wx.ID_ANY, 50, 0, 100, wx.DefaultPosition, wx.DefaultSize, wx.SL_HORIZONTAL )
|
||||||
|
sss_SpeedEnteringSizer.Add( self.m_speed_slider, 0, wx.ALL, 5 )
|
||||||
|
|
||||||
|
self.m_speed_spinCtrlDouble = wx.SpinCtrlDouble( sss_SpeedEnteringSizer.GetStaticBox(), wx.ID_ANY, u"1", wx.DefaultPosition, wx.DefaultSize, wx.ALIGN_CENTER_HORIZONTAL|wx.SP_ARROW_KEYS|wx.TE_PROCESS_ENTER, 0.01, 10, 1, 0.1 )
|
||||||
|
self.m_speed_spinCtrlDouble.SetDigits( 2 )
|
||||||
|
sss_SpeedEnteringSizer.Add( self.m_speed_spinCtrlDouble, 0, wx.ALL, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
ss_regularPromoptsEnteringSizer1.Add( sss_SpeedEnteringSizer, 0, wx.ALL|wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
s_promptSizer.Add( ss_regularPromoptsEnteringSizer1, 0, wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
ss_commandCheckingSizer = wx.StaticBoxSizer( wx.StaticBox( s_promptSizer.GetStaticBox(), wx.ID_ANY, u"指令设置" ), wx.HORIZONTAL )
|
||||||
|
|
||||||
|
self.m_progressBarEnablingCheckBox1 = wx.CheckBox( ss_commandCheckingSizer.GetStaticBox(), wx.ID_ANY, u"启用进度条", wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||||
|
ss_commandCheckingSizer.Add( self.m_progressBarEnablingCheckBox1, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 )
|
||||||
|
|
||||||
|
self.m_oldExeFormatChecker_checkBox3 = wx.CheckBox( ss_commandCheckingSizer.GetStaticBox(), wx.ID_ANY, u"启用旧版执行指令格式", wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||||
|
ss_commandCheckingSizer.Add( self.m_oldExeFormatChecker_checkBox3, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
s_promptSizer.Add( ss_commandCheckingSizer, 0, wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
ss_HideAndSeekSizer_bSizer15 = wx.BoxSizer( wx.VERTICAL )
|
||||||
|
|
||||||
|
sss_ScoreboardPlayerPromptsSizer_bSizer7 = wx.BoxSizer( wx.HORIZONTAL )
|
||||||
|
|
||||||
|
self.m_EnterScoreboardNameTip_staticText4 = wx.StaticText( s_promptSizer.GetStaticBox(), wx.ID_ANY, u"播放计分板名称", wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||||
|
self.m_EnterScoreboardNameTip_staticText4.Wrap( -1 )
|
||||||
|
|
||||||
|
sss_ScoreboardPlayerPromptsSizer_bSizer7.Add( self.m_EnterScoreboardNameTip_staticText4, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 )
|
||||||
|
|
||||||
|
self.m_ScoreboardNameEntering_textCtrl9 = wx.TextCtrl( s_promptSizer.GetStaticBox(), wx.ID_ANY, u"mscplay", wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||||
|
self.m_ScoreboardNameEntering_textCtrl9.SetMaxLength( 10 )
|
||||||
|
sss_ScoreboardPlayerPromptsSizer_bSizer7.Add( self.m_ScoreboardNameEntering_textCtrl9, 0, wx.ALL, 5 )
|
||||||
|
|
||||||
|
self.m_staticline1 = wx.StaticLine( s_promptSizer.GetStaticBox(), wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL )
|
||||||
|
self.m_staticline1.SetMinSize( wx.Size( 2,-1 ) )
|
||||||
|
|
||||||
|
sss_ScoreboardPlayerPromptsSizer_bSizer7.Add( self.m_staticline1, 0, wx.ALL|wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
self.m_IsAutoResetScoreboard_checkBox2 = wx.CheckBox( s_promptSizer.GetStaticBox(), wx.ID_ANY, u"自动重置计分板", wx.DefaultPosition, wx.DefaultSize, wx.ALIGN_RIGHT )
|
||||||
|
sss_ScoreboardPlayerPromptsSizer_bSizer7.Add( self.m_IsAutoResetScoreboard_checkBox2, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
ss_HideAndSeekSizer_bSizer15.Add( sss_ScoreboardPlayerPromptsSizer_bSizer7, 0, wx.SHAPED|wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
sss_StructurePlayerPromptsSizer_bSizer8 = wx.BoxSizer( wx.HORIZONTAL )
|
||||||
|
|
||||||
|
self.m_PlayerSelectorEnteringTips_staticText41 = wx.StaticText( s_promptSizer.GetStaticBox(), wx.ID_ANY, u"玩家选择器", wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||||
|
self.m_PlayerSelectorEnteringTips_staticText41.Wrap( -1 )
|
||||||
|
|
||||||
|
sss_StructurePlayerPromptsSizer_bSizer8.Add( self.m_PlayerSelectorEnteringTips_staticText41, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 )
|
||||||
|
|
||||||
|
m_PlayerSelectorEntering_comboBox1Choices = [ u"@a", u"@p", u"@e[type=player]" ]
|
||||||
|
self.m_PlayerSelectorEntering_comboBox1 = wx.ComboBox( s_promptSizer.GetStaticBox(), wx.ID_ANY, u"@a", wx.DefaultPosition, wx.DefaultSize, m_PlayerSelectorEntering_comboBox1Choices, wx.CB_DROPDOWN|wx.TE_PROCESS_ENTER )
|
||||||
|
self.m_PlayerSelectorEntering_comboBox1.SetSelection( 0 )
|
||||||
|
sss_StructurePlayerPromptsSizer_bSizer8.Add( self.m_PlayerSelectorEntering_comboBox1, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 )
|
||||||
|
|
||||||
|
self.m_staticline2 = wx.StaticLine( s_promptSizer.GetStaticBox(), wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL )
|
||||||
|
self.m_staticline2.SetMinSize( wx.Size( 2,-1 ) )
|
||||||
|
|
||||||
|
sss_StructurePlayerPromptsSizer_bSizer8.Add( self.m_staticline2, 0, wx.ALL|wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
self.StructureMaxHeoghtTips_ = wx.StaticText( s_promptSizer.GetStaticBox(), wx.ID_ANY, u"结构生成最大高度", wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||||
|
self.StructureMaxHeoghtTips_.Wrap( -1 )
|
||||||
|
|
||||||
|
sss_StructurePlayerPromptsSizer_bSizer8.Add( self.StructureMaxHeoghtTips_, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 )
|
||||||
|
|
||||||
|
self.m_StructureHeight_slider7 = wx.Slider( s_promptSizer.GetStaticBox(), wx.ID_ANY, 50, 3, 1024, wx.DefaultPosition, wx.DefaultSize, wx.SL_HORIZONTAL )
|
||||||
|
sss_StructurePlayerPromptsSizer_bSizer8.Add( self.m_StructureHeight_slider7, 0, wx.ALL, 5 )
|
||||||
|
|
||||||
|
self.m_enteringStructureMaxHeight_spinCtrl1 = wx.SpinCtrl( s_promptSizer.GetStaticBox(), wx.ID_ANY, u"50", wx.DefaultPosition, wx.DefaultSize, wx.SP_ARROW_KEYS, 3, 1024, 50 )
|
||||||
|
sss_StructurePlayerPromptsSizer_bSizer8.Add( self.m_enteringStructureMaxHeight_spinCtrl1, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
ss_HideAndSeekSizer_bSizer15.Add( sss_StructurePlayerPromptsSizer_bSizer8, 0, wx.SHAPED|wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
sss_BDXfileSignNameSizer_bSizer13 = wx.BoxSizer( wx.HORIZONTAL )
|
||||||
|
|
||||||
|
self.m_BDXfileSignNameTips_staticText8 = wx.StaticText( s_promptSizer.GetStaticBox(), wx.ID_ANY, u"BDX作者署名", wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||||
|
self.m_BDXfileSignNameTips_staticText8.Wrap( -1 )
|
||||||
|
|
||||||
|
sss_BDXfileSignNameSizer_bSizer13.Add( self.m_BDXfileSignNameTips_staticText8, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 )
|
||||||
|
|
||||||
|
self.m_EnteringBDXfileSignName_textCtrl12 = wx.TextCtrl( s_promptSizer.GetStaticBox(), wx.ID_ANY, u"UserYou", wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||||
|
sss_BDXfileSignNameSizer_bSizer13.Add( self.m_EnteringBDXfileSignName_textCtrl12, 0, wx.ALL, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
ss_HideAndSeekSizer_bSizer15.Add( sss_BDXfileSignNameSizer_bSizer13, 0, wx.SHAPED|wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
s_promptSizer.Add( ss_HideAndSeekSizer_bSizer15, 0, wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
main_page_sizer.Add( s_promptSizer, 0, wx.ALL|wx.EXPAND|wx.SHAPED, 5 )
|
||||||
|
|
||||||
|
s_StartSizer_sbSizer18 = wx.StaticBoxSizer( wx.StaticBox( self, wx.ID_ANY, u"开始转换" ), wx.HORIZONTAL )
|
||||||
|
|
||||||
|
s_StartSizer_sbSizer18.SetMinSize( wx.Size( -1,100 ) )
|
||||||
|
ss_Midi_Convert_distPath_bSizer17 = wx.BoxSizer( wx.VERTICAL )
|
||||||
|
|
||||||
|
ss_Dest_chooser_Sizer_in_bSizer18 = wx.BoxSizer( wx.HORIZONTAL )
|
||||||
|
|
||||||
|
self.m_tip_Change_Dest_staticText7 = wx.StaticText( s_StartSizer_sbSizer18.GetStaticBox(), wx.ID_ANY, u"指定输出路径", wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||||
|
self.m_tip_Change_Dest_staticText7.Wrap( -1 )
|
||||||
|
|
||||||
|
ss_Dest_chooser_Sizer_in_bSizer18.Add( self.m_tip_Change_Dest_staticText7, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 )
|
||||||
|
|
||||||
|
self.m_Convertion_Destination_Picker_dirPicker1 = wx.DirPickerCtrl( s_StartSizer_sbSizer18.GetStaticBox(), wx.ID_ANY, u"./", u"选择目标目录", wx.DefaultPosition, wx.DefaultSize, wx.DIRP_DEFAULT_STYLE )
|
||||||
|
ss_Dest_chooser_Sizer_in_bSizer18.Add( self.m_Convertion_Destination_Picker_dirPicker1, 1, wx.ALL|wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
ss_Midi_Convert_distPath_bSizer17.Add( ss_Dest_chooser_Sizer_in_bSizer18, 0, wx.ALL|wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
self.m_Check_Every_Their_Path_checkBox7 = wx.CheckBox( s_StartSizer_sbSizer18.GetStaticBox(), wx.ID_ANY, u"输出到每个文件所在目录", wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||||
|
self.m_Check_Every_Their_Path_checkBox7.SetValue(True)
|
||||||
|
ss_Midi_Convert_distPath_bSizer17.Add( self.m_Check_Every_Their_Path_checkBox7, 0, wx.ALL, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
s_StartSizer_sbSizer18.Add( ss_Midi_Convert_distPath_bSizer17, 1, wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
self.m_start_button2 = wx.Button( s_StartSizer_sbSizer18.GetStaticBox(), wx.ID_ANY, u"开始转换", wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||||
|
s_StartSizer_sbSizer18.Add( self.m_start_button2, 0, wx.ALIGN_CENTER|wx.ALL, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
main_page_sizer.Add( s_StartSizer_sbSizer18, 1, wx.ALL|wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
self.SetSizer( main_page_sizer )
|
||||||
|
self.Layout()
|
||||||
|
|
||||||
|
# Connect Events
|
||||||
|
self.m_ChooseMidiTips_staticText3.Bind( wx.EVT_LEFT_DCLICK, self.MidiEasterEgg )
|
||||||
|
self.m_done_then_remove_checkBox6.Bind( wx.EVT_CHECKBOX, self.on_Done_Then_Remove_Clicked )
|
||||||
|
self.m_midiFilesList_listBox2.Bind( wx.EVT_LISTBOX, self.onFileListUpdated )
|
||||||
|
self.m_midiFilesList_listBox2.Bind( wx.EVT_LISTBOX_DCLICK, self.onFileDoubleClicked )
|
||||||
|
self.m_midiBroseButton_button21.Bind( wx.EVT_BUTTON, self.openFile )
|
||||||
|
self.m_midiChooser_Clear_button3.Bind( wx.EVT_BUTTON, self.on_Chooer_Clear_Button_Pressed )
|
||||||
|
self.m_outformatChoice_choice1.Bind( wx.EVT_CHOICE, self.onOutputFormatChosen )
|
||||||
|
self.m_playerChoice_choice2.Bind( wx.EVT_CHOICE, self.onPlayerChosen )
|
||||||
|
self.m_volumn_slider.Bind( wx.EVT_SCROLL, self.onVolumeScrolling )
|
||||||
|
self.m_volumn_spinCtrlDouble1.Bind( wx.EVT_SPINCTRLDOUBLE, self.onVolumeSpinChanged )
|
||||||
|
self.m_speed_slider.Bind( wx.EVT_SCROLL, self.onSpeedScrolling )
|
||||||
|
self.m_speed_spinCtrlDouble.Bind( wx.EVT_SPINCTRLDOUBLE, self.onSpeedSpinChanged )
|
||||||
|
self.m_progressBarEnablingCheckBox1.Bind( wx.EVT_CHECKBOX, self.onProgressbarChecked )
|
||||||
|
self.m_ScoreboardNameEntering_textCtrl9.Bind( wx.EVT_TEXT, self.onScoreboredNameUpdating )
|
||||||
|
self.m_IsAutoResetScoreboard_checkBox2.Bind( wx.EVT_CHECKBOX, self.onAutoResetScoreboardChecked )
|
||||||
|
self.m_PlayerSelectorEntering_comboBox1.Bind( wx.EVT_TEXT, self.onPlayerSelectorUpdating )
|
||||||
|
self.m_StructureHeight_slider7.Bind( wx.EVT_SCROLL, self.onStructureMaxHeightScrolling )
|
||||||
|
self.m_enteringStructureMaxHeight_spinCtrl1.Bind( wx.EVT_SPINCTRL, self.onStructureMaxHeightSpinChanged )
|
||||||
|
self.m_EnteringBDXfileSignName_textCtrl12.Bind( wx.EVT_TEXT, self.onBDXfileSignNameUpdating )
|
||||||
|
self.m_tip_Change_Dest_staticText7.Bind( wx.EVT_LEFT_DCLICK, self.on_Change_to_Default_Path )
|
||||||
|
self.m_Convertion_Destination_Picker_dirPicker1.Bind( wx.EVT_DIRPICKER_CHANGED, self.on_Convert_Dest_Changed )
|
||||||
|
self.m_Check_Every_Their_Path_checkBox7.Bind( wx.EVT_CHECKBOX, self.On_Their_Path_Checked )
|
||||||
|
self.m_start_button2.Bind( wx.EVT_BUTTON, self.onStartButtonPressed )
|
||||||
|
|
||||||
|
def __del__( self ):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
# Virtual event handlers, override them in your derived class
|
||||||
|
def MidiEasterEgg( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def on_Done_Then_Remove_Clicked( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def onFileListUpdated( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def onFileDoubleClicked( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def openFile( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def on_Chooer_Clear_Button_Pressed( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def onOutputFormatChosen( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def onPlayerChosen( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def onVolumeScrolling( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def onVolumeSpinChanged( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def onSpeedScrolling( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def onSpeedSpinChanged( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def onProgressbarChecked( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def onScoreboredNameUpdating( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def onAutoResetScoreboardChecked( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def onPlayerSelectorUpdating( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def onStructureMaxHeightScrolling( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def onStructureMaxHeightSpinChanged( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def onBDXfileSignNameUpdating( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def on_Change_to_Default_Path( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def on_Convert_Dest_Changed( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def On_Their_Path_Checked( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def onStartButtonPressed( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
|
||||||
|
###########################################################################
|
||||||
|
## Class SettingPagePannel
|
||||||
|
###########################################################################
|
||||||
|
|
||||||
|
class SettingPagePannel ( wx.Panel ):
|
||||||
|
|
||||||
|
def __init__( self, parent, id = wx.ID_ANY, pos = wx.DefaultPosition, size = wx.Size( 565,540 ), style = wx.TAB_TRAVERSAL, name = wx.EmptyString ):
|
||||||
|
wx.Panel.__init__ ( self, parent, id = id, pos = pos, size = size, style = style, name = name )
|
||||||
|
|
||||||
|
setting_page_sizer = wx.BoxSizer( wx.VERTICAL )
|
||||||
|
|
||||||
|
self.setting_notebook = wx.Notebook( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.NB_FIXEDWIDTH|wx.NB_MULTILINE|wx.NB_RIGHT )
|
||||||
|
self.setting_notebook.SetFont( wx.Font( wx.NORMAL_FONT.GetPointSize(), wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "@OPPOSans R" ) )
|
||||||
|
self.setting_notebook.SetBackgroundColour( wx.SystemSettings.GetColour( wx.SYS_COLOUR_WINDOW ) )
|
||||||
|
|
||||||
|
self.setting_page1 = wx.Panel( self.setting_notebook, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL )
|
||||||
|
self.setting_page1.SetFont( wx.Font( wx.NORMAL_FONT.GetPointSize(), wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "OPPOSans R" ) )
|
||||||
|
|
||||||
|
setting_page1_box_sizer = wx.BoxSizer( wx.VERTICAL )
|
||||||
|
|
||||||
|
sss_customProgressBarSizer_wSizer6 = wx.WrapSizer( wx.HORIZONTAL, wx.WRAPSIZER_DEFAULT_FLAGS )
|
||||||
|
|
||||||
|
setting_page1_progressbar_style = wx.StaticBoxSizer( wx.StaticBox( self.setting_page1, wx.ID_ANY, u"进度条" ), wx.HORIZONTAL )
|
||||||
|
|
||||||
|
ssss_basicProgressStylePattle_sbSizer9 = wx.StaticBoxSizer( wx.StaticBox( setting_page1_progressbar_style.GetStaticBox(), wx.ID_ANY, u"基本样式组" ), wx.VERTICAL )
|
||||||
|
|
||||||
|
self.m_BasicProgressBarStyleEntering_textCtrl4 = wx.TextCtrl( ssss_basicProgressStylePattle_sbSizer9.GetStaticBox(), wx.ID_ANY, u"▶ %%N [ %%s/%^s %%% __________ %%t|%^t ]", wx.DefaultPosition, wx.DefaultSize, wx.TE_LEFT|wx.TE_NO_VSCROLL )
|
||||||
|
ssss_basicProgressStylePattle_sbSizer9.Add( self.m_BasicProgressBarStyleEntering_textCtrl4, 0, wx.ALL|wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
setting_page1_progressbar_style.Add( ssss_basicProgressStylePattle_sbSizer9, 1, wx.ALL|wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
ssss_UnplayedPartProgressbarPattle_sbSizer10 = wx.StaticBoxSizer( wx.StaticBox( setting_page1_progressbar_style.GetStaticBox(), wx.ID_ANY, u"未播放之样式" ), wx.VERTICAL )
|
||||||
|
|
||||||
|
self.m_unplayedProgressbarStyleEntering_textCtrl5 = wx.TextCtrl( ssss_UnplayedPartProgressbarPattle_sbSizer10.GetStaticBox(), wx.ID_ANY, u"§7=§r", wx.DefaultPosition, wx.DefaultSize, wx.TE_LEFT|wx.TE_NO_VSCROLL )
|
||||||
|
ssss_UnplayedPartProgressbarPattle_sbSizer10.Add( self.m_unplayedProgressbarStyleEntering_textCtrl5, 0, wx.ALL, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
setting_page1_progressbar_style.Add( ssss_UnplayedPartProgressbarPattle_sbSizer10, 1, wx.ALL|wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
ssss_PlayedPartProgressbarPattle_sbSizer11 = wx.StaticBoxSizer( wx.StaticBox( setting_page1_progressbar_style.GetStaticBox(), wx.ID_ANY, u"已播放之样式" ), wx.VERTICAL )
|
||||||
|
|
||||||
|
self.m_playedProgressbarStyleEntering_textCtrl5 = wx.TextCtrl( ssss_PlayedPartProgressbarPattle_sbSizer11.GetStaticBox(), wx.ID_ANY, u"§e=§r", wx.DefaultPosition, wx.DefaultSize, wx.TE_LEFT|wx.TE_NO_VSCROLL )
|
||||||
|
ssss_PlayedPartProgressbarPattle_sbSizer11.Add( self.m_playedProgressbarStyleEntering_textCtrl5, 0, wx.ALL, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
setting_page1_progressbar_style.Add( ssss_PlayedPartProgressbarPattle_sbSizer11, 1, wx.ALL|wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
sss_customProgressBarSizer_wSizer6.Add( setting_page1_progressbar_style, 1, wx.ALL|wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
setting_page1_experiment_style = wx.StaticBoxSizer( wx.StaticBox( self.setting_page1, wx.ID_ANY, u"实验性功能" ), wx.HORIZONTAL )
|
||||||
|
|
||||||
|
self.m_enable_experiment_checkBox = wx.CheckBox( setting_page1_experiment_style.GetStaticBox(), wx.ID_ANY, u"启用实验性功能", wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||||
|
setting_page1_experiment_style.Add( self.m_enable_experiment_checkBox, 1, wx.ALL|wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
experiment_type_choiceChoices = [ u"常规转换", u"长音插值", u"同刻偏移" ]
|
||||||
|
self.experiment_type_choice = wx.Choice( setting_page1_experiment_style.GetStaticBox(), wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, experiment_type_choiceChoices, 0 )
|
||||||
|
self.experiment_type_choice.SetSelection( 0 )
|
||||||
|
setting_page1_experiment_style.Add( self.experiment_type_choice, 2, wx.ALL|wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
self.m_ignore_midi_error_checkBox = wx.CheckBox( setting_page1_experiment_style.GetStaticBox(), wx.ID_ANY, u"忽略MIDI错误", wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||||
|
self.m_ignore_midi_error_checkBox.SetValue(True)
|
||||||
|
setting_page1_experiment_style.Add( self.m_ignore_midi_error_checkBox, 1, wx.ALL, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
sss_customProgressBarSizer_wSizer6.Add( setting_page1_experiment_style, 1, wx.ALL|wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
setting_page1_box_sizer.Add( sss_customProgressBarSizer_wSizer6, 1, wx.ALL|wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
self.setting_page1.SetSizer( setting_page1_box_sizer )
|
||||||
|
self.setting_page1.Layout()
|
||||||
|
setting_page1_box_sizer.Fit( self.setting_page1 )
|
||||||
|
self.setting_notebook.AddPage( self.setting_page1, u"基本信息", True )
|
||||||
|
self.setting_page2 = wx.Panel( self.setting_notebook, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL )
|
||||||
|
self.setting_page2.SetFont( wx.Font( wx.NORMAL_FONT.GetPointSize(), wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, wx.EmptyString ) )
|
||||||
|
|
||||||
|
setting_page2_box_sizer = wx.BoxSizer( wx.VERTICAL )
|
||||||
|
|
||||||
|
m_pitched_instrument_table_choiceChoices = [ u"“偷吃”的对照表", u"“经典”对照表" ]
|
||||||
|
self.m_pitched_instrument_table_choice = wx.Choice( self.setting_page2, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, m_pitched_instrument_table_choiceChoices, 0 )
|
||||||
|
self.m_pitched_instrument_table_choice.SetSelection( 0 )
|
||||||
|
self.m_pitched_instrument_table_choice.SetFont( wx.Font( wx.NORMAL_FONT.GetPointSize(), wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "OPPOSans R" ) )
|
||||||
|
|
||||||
|
setting_page2_box_sizer.Add( self.m_pitched_instrument_table_choice, 0, wx.ALL|wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
self.m_pitched_notes_table_propertyGrid1 = pg.PropertyGrid(self.setting_page2, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.propgrid.PG_BOLD_MODIFIED|wx.propgrid.PG_DEFAULT_STYLE)
|
||||||
|
self.m_pitched_notes_table_propertyGrid1.SetFont( wx.Font( wx.NORMAL_FONT.GetPointSize(), wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "OPPOSans R" ) )
|
||||||
|
|
||||||
|
self.m_propertyGridItem1 = self.m_pitched_notes_table_propertyGrid1.Append( pg.StringProperty( u"乐音乐器1", u"乐音乐器1" ) )
|
||||||
|
self.m_propertyGridItem2 = self.m_pitched_notes_table_propertyGrid1.Append( pg.StringProperty( u"乐音乐器2", u"乐音乐器2" ) )
|
||||||
|
setting_page2_box_sizer.Add( self.m_pitched_notes_table_propertyGrid1, 1, wx.ALL|wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
self.setting_page2.SetSizer( setting_page2_box_sizer )
|
||||||
|
self.setting_page2.Layout()
|
||||||
|
setting_page2_box_sizer.Fit( self.setting_page2 )
|
||||||
|
self.setting_notebook.AddPage( self.setting_page2, u"乐音乐器对照表", False )
|
||||||
|
self.setting_page3 = wx.Panel( self.setting_notebook, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL )
|
||||||
|
setting_page3_box_sizer = wx.BoxSizer( wx.VERTICAL )
|
||||||
|
|
||||||
|
m_percussion_instrument_table_choice1Choices = [ u"“偷吃”的对照表", u"“经典”对照表" ]
|
||||||
|
self.m_percussion_instrument_table_choice1 = wx.Choice( self.setting_page3, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, m_percussion_instrument_table_choice1Choices, 0 )
|
||||||
|
self.m_percussion_instrument_table_choice1.SetSelection( 0 )
|
||||||
|
self.m_percussion_instrument_table_choice1.SetFont( wx.Font( wx.NORMAL_FONT.GetPointSize(), wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "OPPOSans R" ) )
|
||||||
|
|
||||||
|
setting_page3_box_sizer.Add( self.m_percussion_instrument_table_choice1, 0, wx.ALL|wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
self.m_percussion_notes_table_propertyGrid11 = pg.PropertyGrid(self.setting_page3, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.propgrid.PG_BOLD_MODIFIED|wx.propgrid.PG_DEFAULT_STYLE)
|
||||||
|
self.m_percussion_notes_table_propertyGrid11.SetFont( wx.Font( wx.NORMAL_FONT.GetPointSize(), wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "OPPOSans R" ) )
|
||||||
|
|
||||||
|
self.m_propertyGridItem11 = self.m_percussion_notes_table_propertyGrid11.Append( pg.StringProperty( u"打击乐器1", u"打击乐器1" ) )
|
||||||
|
self.m_propertyGridItem21 = self.m_percussion_notes_table_propertyGrid11.Append( pg.StringProperty( u"打击乐器2", u"打击乐器2" ) )
|
||||||
|
setting_page3_box_sizer.Add( self.m_percussion_notes_table_propertyGrid11, 1, wx.ALL|wx.EXPAND, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
self.setting_page3.SetSizer( setting_page3_box_sizer )
|
||||||
|
self.setting_page3.Layout()
|
||||||
|
setting_page3_box_sizer.Fit( self.setting_page3 )
|
||||||
|
self.setting_notebook.AddPage( self.setting_page3, u"打击乐器对照表", False )
|
||||||
|
|
||||||
|
setting_page_sizer.Add( self.setting_notebook, 1, wx.EXPAND |wx.ALL, 5 )
|
||||||
|
|
||||||
|
|
||||||
|
self.SetSizer( setting_page_sizer )
|
||||||
|
self.Layout()
|
||||||
|
|
||||||
|
# Connect Events
|
||||||
|
self.m_BasicProgressBarStyleEntering_textCtrl4.Bind( wx.EVT_TEXT, self.onProgressbarBasicStyleUpdating )
|
||||||
|
self.m_unplayedProgressbarStyleEntering_textCtrl5.Bind( wx.EVT_TEXT, self.onProgressbarUnplayedStyleUpdating )
|
||||||
|
self.m_playedProgressbarStyleEntering_textCtrl5.Bind( wx.EVT_TEXT, self.onProgressbarPlayedStyleUpdating )
|
||||||
|
self.m_enable_experiment_checkBox.Bind( wx.EVT_CHECKBOX, self.onExperimentEnableUpdating )
|
||||||
|
self.experiment_type_choice.Bind( wx.EVT_CHOICE, self.onConvertMethodUpdating )
|
||||||
|
self.m_ignore_midi_error_checkBox.Bind( wx.EVT_CHECKBOX, self.onMidiFaultIgnoranceChecking )
|
||||||
|
self.m_pitched_instrument_table_choice.Bind( wx.EVT_CHOICE, self.onPitchedInstListChanging )
|
||||||
|
self.m_pitched_notes_table_propertyGrid1.Bind( pg.EVT_PG_CHANGED, self.onPitchedInstTableChanged )
|
||||||
|
self.m_pitched_notes_table_propertyGrid1.Bind( pg.EVT_PG_CHANGING, self.onPitchedInstTableChanging )
|
||||||
|
self.m_percussion_instrument_table_choice1.Bind( wx.EVT_CHOICE, self.onPercussionInstListChanging )
|
||||||
|
self.m_percussion_notes_table_propertyGrid11.Bind( pg.EVT_PG_CHANGED, self.onPercussionInstTableChanged )
|
||||||
|
self.m_percussion_notes_table_propertyGrid11.Bind( pg.EVT_PG_CHANGING, self.onPercussionInstTableChanging )
|
||||||
|
|
||||||
|
def __del__( self ):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
# Virtual event handlers, override them in your derived class
|
||||||
|
def onProgressbarBasicStyleUpdating( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def onProgressbarUnplayedStyleUpdating( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def onProgressbarPlayedStyleUpdating( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def onExperimentEnableUpdating( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def onConvertMethodUpdating( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def onMidiFaultIgnoranceChecking( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def onPitchedInstListChanging( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def onPitchedInstTableChanged( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def onPitchedInstTableChanging( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def onPercussionInstListChanging( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def onPercussionInstTableChanged( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
def onPercussionInstTableChanging( self, event ):
|
||||||
|
event.Skip()
|
||||||
|
|
||||||
|
|
||||||
23
自我陶醉.py
Normal file
23
自我陶醉.py
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
# -*- conding: utf8 -*-
|
||||||
|
|
||||||
|
import os
|
||||||
|
|
||||||
|
m = 0
|
||||||
|
|
||||||
|
for path, dir_list, file_list in os.walk(r"./"):
|
||||||
|
for file_name in file_list:
|
||||||
|
if file_name.endswith('.py'):
|
||||||
|
file = os.path.join(path, file_name)
|
||||||
|
print("得到文件名:" + str(file))
|
||||||
|
for i in open(file, 'r', encoding="utf-8"):
|
||||||
|
code = i.strip()
|
||||||
|
|
||||||
|
if code.startswith('#'):
|
||||||
|
pass
|
||||||
|
elif code:
|
||||||
|
print("\t" + code)
|
||||||
|
m += 1
|
||||||
|
else:
|
||||||
|
pass
|
||||||
|
|
||||||
|
input("\n最终代码行数为:" + str(m))
|
||||||
Reference in New Issue
Block a user