新年第一次更新

This commit is contained in:
bgArray
2022-02-01 00:07:22 +08:00
parent 81272a1166
commit 9f8694ef14
22 changed files with 499 additions and 342 deletions

View File

@ -101,7 +101,7 @@ dataset = [
'FileName': 'Music'
},
'notes': [
]
},
],
@ -216,6 +216,7 @@ def __main__():
else:
return k
# 老的列表读取
def ReadMidi(midfile: str): # -> str
from nmcsup.nmcreader import ReadMidi as midiRead
k = midiRead(midfile)
@ -225,17 +226,19 @@ def __main__():
else:
return k
# 音色读取
def LoadMidi(midfile: str): # -> str
from nmcsup.nmcreader import midi_conversion
k = midi_conversion(midfile)
from bgArrayLib.reader import midiNewReader
k = midiNewReader(midfile)
if k is False:
tk.messagebox.showerror(title=READABLETEXT[0], message=READABLETEXT[105].format(midfile))
return
else:
return k
# 新的类读取
def MidiAnalysisClass(midfile: str):
from nmcsup.nmcreader import midiClassReader
from bgArrayLib.reader import midiClassReader
k = midiClassReader(midfile)
if k is False:
tk.messagebox.showerror(title=READABLETEXT[0], message=READABLETEXT[105].format(midfile))
@ -502,99 +505,6 @@ def __main__():
RefreshMain()
RefreshMusic(NowMusic)
# def openNewProject():
# global is_save
# if is_save is not True:
# result = tkinter.messagebox.askyesno(title=READABLETEXT[1], message=READABLETEXT[106])
# if result:
# SaveProject()
# fn = tkinter.filedialog.askopenfilename(title=READABLETEXT[7], initialdir=r'./',
# filetypes=[(READABLETEXT[108], '.msct'), (READABLETEXT[112], '*')],
# multiple=True)
# if fn is None or fn == '':
# return
# else:
# # print(fn)
# fn = fn[0]
# # print(fn)
# log("尝试打开:" + fn)
# try:
# try:
# with open(fn, 'rb') as C:
# global dataset
# # print(pickle.load(C))
# read = pickle.load(C) # 重要的事情说三遍pickle.load只能load一次所以多load几次就有bug要一次读完
# # 重要的事情说三遍pickle.load只能load一次所以多load几次就有bug要一次读完
# # 重要的事情说三遍pickle.load只能load一次所以多load几次就有bug要一次读完
# # print(read)
# dataset = read[0]
# pkl1 = read[1]
# log("读取新文件成功")
# with open("1.pkl", 'wb') as w:
# pickle.dump(pkl1, w)
# except KeyError:
# with open(fn, 'rb') as C:
# dataset[0] = pickle.load(C)
# log("读取新文件成功")
# except pickle.UnpicklingError: # 程序规范修改根据新的语法标准except后面不能没有错误类型测试后改为
# # pickle.UnpicklingError
# print(READABLETEXT[8].format(fn))
# log('无法打开{}'.format(fn))
# return
# global is_new_file
# global ProjectName
# is_new_file = False
# ProjectName = fn
# del fn
# global NowMusic
# RefreshMain()
# RefreshMusic(NowMusic)
# def openClassProject():
# global is_save
# if is_save is not True:
# result = tkinter.messagebox.askyesno(title=READABLETEXT[1], message=READABLETEXT[106])
# if result:
# SaveProject()
# fn = tkinter.filedialog.askopenfilename(title=READABLETEXT[7], initialdir=r'./',
# filetypes=[(READABLETEXT[108], '.msct'), (READABLETEXT[112], '*')],
# multiple=True)
# if fn is None or fn == '':
# return
# else:
# # print(fn)
# fn = fn[0]
# # print(fn)
# log("尝试打开:" + fn)
# try:
# try:
# with open(fn, 'rb') as C:
# global dataset
# # print(pickle.load(C))
# read = pickle.load(C) # 重要的事情说三遍pickle.load只能load一次所以多load几次就有bug要一次读完
# # 重要的事情说三遍pickle.load只能load一次所以多load几次就有bug要一次读完
# # 重要的事情说三遍pickle.load只能load一次所以多load几次就有bug要一次读完
# # print(read)
# dataset = read
# log("读取新文件成功")
# except KeyError:
# with open(fn, 'rb') as C:
# dataset[0] = pickle.load(C)
# log("读取新文件成功")
# except pickle.UnpicklingError: # 程序规范修改根据新的语法标准except后面不能没有错误类型测试后改为
# # pickle.UnpicklingError
# print(READABLETEXT[8].format(fn))
# log('无法打开{}'.format(fn))
# return
# global is_new_file
# global ProjectName
# is_new_file = False
# ProjectName = fn
# del fn
# global NowMusic
# RefreshMain()
# RefreshMusic(NowMusic)
print('打开项目命令加载完成!')
def appabout():
@ -698,7 +608,7 @@ def __main__():
print('读MP3加载完成')
def FromMidi():
def FromListMidi():
log('从midi导入音乐')
midfile = tkinter.filedialog.askopenfilename(title=READABLETEXT[21], initialdir=r'./',
filetypes=[(READABLETEXT[114], '.mid .midi'),
@ -727,7 +637,7 @@ def __main__():
threading.Thread(target=midiSPT, args=(th,)).start()
del th
def NewFromMidi():
def FromNewMidi():
try:
tkinter.messagebox.showinfo("开发提示", "因为一些原因这个功能暂时取消")
except tkinter.TclError:
@ -760,7 +670,7 @@ def __main__():
del th
dataset[0]['mainset']['ReadMethod'] = "new"
def FromMidiClass():
def FromClassMidi():
log('从midi导入音乐并采用类读取方式')
midfile = tkinter.filedialog.askopenfilename(title=READABLETEXT[21], initialdir=r'./',
filetypes=[(READABLETEXT[114], '.mid .midi'),
@ -842,6 +752,7 @@ def __main__():
RefreshMusic(NowMusic)
print('写入命令加载完成!')
print('开始加载列表生成函数函数。')
def ShowCMD():
log('展示指令')
@ -861,16 +772,6 @@ def __main__():
else:
makeFuncFiles(dataset[0], file + '/')
def MakeNewCMD():
log('生成新文件')
from msctspt.funcOpera import makeNewFuncFiles
file = tkinter.filedialog.askdirectory(title=READABLETEXT[25], initialdir=r'./')
if file is None or file == '':
log('取消')
return
else:
makeNewFuncFiles(dataset[0], file + '/')
def MakeCMDdir():
log('生成函数包')
from msctspt.funcOpera import makeFunDir
@ -881,16 +782,6 @@ def __main__():
else:
makeFunDir(dataset[0], file + '/')
def MakeNewCMDdir():
log('生成新函数包与材质包')
from msctspt.funcOpera import makeNewFunDir
file = tkinter.filedialog.askdirectory(title=READABLETEXT[26], initialdir=r'./')
if file is None or file == '':
log('取消')
return
else:
makeNewFunDir(dataset[0], file + '/')
def MakePackFile():
file = tkinter.filedialog.askdirectory(title=READABLETEXT[27], initialdir=r'./')
if file is None or file == '':
@ -918,6 +809,29 @@ def __main__():
shutil.move('./manifest.json', './temp/')
shutil.rmtree('./temp/')
print('完成加载列表生成函数函数。')
print('开始加载乐器类生成函数函数。')
def MakeNewCMD():
log('生成新文件')
from msctspt.funcOpera import makeNewFuncFiles
file = tkinter.filedialog.askdirectory(title=READABLETEXT[25], initialdir=r'./')
if file is None or file == '':
log('取消')
return
else:
makeNewFuncFiles(dataset[0], file + '/')
def MakeNewCMDdir():
log('生成新函数包与材质包')
from msctspt.funcOpera import makeNewFunDir
file = tkinter.filedialog.askdirectory(title=READABLETEXT[26], initialdir=r'./')
if file is None or file == '':
log('取消')
return
else:
makeNewFunDir(dataset[0], file + '/')
def MakeNewFunctionPackFile():
file = tkinter.filedialog.askdirectory(title=READABLETEXT[27], initialdir=r'./')
if file is None or file == '':
@ -983,6 +897,9 @@ def __main__():
shutil.move('./manifest.json', './temp/')
shutil.rmtree('./temp/')
print('完成加载乐器类生成函数函数。')
print('开始加载乐器音色资源绑定函数。')
def changeResourcesPath():
file = tkinter.filedialog.askdirectory(title=READABLETEXT[27], initialdir=r'./')
if file is None or file == '':
@ -999,6 +916,58 @@ def __main__():
else:
tkinter.messagebox.showinfo(title=READABLETEXT[1], message=READABLETEXT[159])
print('开始加载类生成函数函数。')
def MakeClassCMD():
log('生成类文件')
from msctspt.funcOpera import makeClassFuncFiles
file = tkinter.filedialog.askdirectory(title=READABLETEXT[25], initialdir=r'./')
if file is None or file == '':
log('取消')
return
else:
makeClassFuncFiles(dataset[0], file + '/')
def MakeClassCMDdir():
log('生成类函数包与材质包')
from msctspt.funcOpera import makeClassFunDir
file = tkinter.filedialog.askdirectory(title=READABLETEXT[26], initialdir=r'./')
if file is None or file == '':
log('取消')
return
else:
makeClassFunDir(dataset[0], file + '/')
def MakeClassFunctionPackFile():
file = tkinter.filedialog.askdirectory(title=READABLETEXT[27], initialdir=r'./')
if file is None or file == '':
log('取消')
return
import zipfile
from msctspt.funcOpera import makeClassFunDir
log('生成附加包文件')
if not os.path.exists('./temp/'):
os.makedirs('./temp/')
makeClassFunDir(dataset[0], './temp/')
shutil.move('./temp/{}Pack/behavior_packs/{}/functions'.format(dataset[0]['mainset']['PackName'],
dataset[0]['mainset']['PackName']), './')
shutil.move('./temp/{}Pack/behavior_packs/{}/manifest.json'.format(dataset[0]['mainset']['PackName'],
dataset[0]['mainset']['PackName']), './')
with zipfile.ZipFile('{}/{}.mcpack'.format(file, dataset[0]['mainset']['PackName']), 'w') as zipobj:
for i in os.listdir('./functions/'):
zipobj.write('./functions/{}'.format(i))
zipobj.write('./manifest.json')
shutil.move('./functions', './temp/')
shutil.move('./manifest.json', './temp/')
shutil.rmtree('./temp/')
print('完成加载类生成函数函数。')
print('开始加载地图函数。')
# 转为空方块世界
def ToBlockWorldEpt():
import zipfile
@ -1290,8 +1259,6 @@ def __main__():
log('转换结束!\n' + str(res))
tkinter.messagebox.showinfo(READABLETEXT[33], READABLETEXT[124].format(str(res)))
def toBDXfile():
log('整首歌转BDX')
from msctspt.transfer import music2BDX
@ -1313,8 +1280,9 @@ def __main__():
(READABLETEXT[112], '*')],
defaultextension=dataset[0]['mainset']['PackName'] + '.bdx',
initialfile=dataset[0]['mainset']['PackName'] + '.bdx')
maxHeight = 200
print(maxHeight) # 使用变量
while True:
maxHeight = tkinter.simpledialog.askinteger(title=READABLETEXT[28],
@ -1322,31 +1290,23 @@ def __main__():
initialvalue='200')
if maxHeight >= 5:
break
elif maxHeight == None:
elif maxHeight is None:
log('取消')
return
else:
tkinter.messagebox.showerror(title=READABLETEXT[0], message=READABLETEXT[94])
continue
if fileName is None or fileName == '':
log('取消')
return
log('获得文件名:' + fileName)
res = music2BDX(fileName, dire, dataset[0],)
res = music2BDX(fileName, dire, dataset[0], )
log('转换结束!\n' + str(res))
tkinter.messagebox.showinfo(READABLETEXT[33], READABLETEXT[124].format(str(res)))
def wsPlay():
from msctspt.transfer import note2webs
spd = tkinter.simpledialog.askfloat(READABLETEXT[34], prompt=READABLETEXT[125], initialvalue='5.0')
@ -1666,18 +1626,6 @@ def __main__():
filemenu.add_command(label=READABLETEXT[55], command=SaveProject)
filemenu.add_command(label=READABLETEXT[56], command=SaveAsProject)
# filemenu.add_separator()
#
# filemenu.add_command(label=READABLETEXT[149], command=openNewProject)
# filemenu.add_command(label=READABLETEXT[150], command=SaveNewProject)
# filemenu.add_command(label=READABLETEXT[151], command=SaveAsNewProject)
# filemenu.add_separator()
#
# filemenu.add_command(label=READABLETEXT[161], command=openClassProject)
# filemenu.add_command(label=READABLETEXT[162], command=SaveClassProject)
# filemenu.add_command(label=READABLETEXT[163], command=SaveAsClassProject)
filemenu.add_separator() # 分隔符
filemenu.add_command(label=READABLETEXT[57], command=exitapp)
@ -1688,12 +1636,12 @@ def __main__():
# 创建编辑菜单
editmenu = tk.Menu(main_menu_bar, tearoff=0)
editmenu.add_command(label=READABLETEXT[59], command=FromMP3)
editmenu.add_command(label=READABLETEXT[60], command=FromMidi)
editmenu.add_command(label=READABLETEXT[60], command=FromListMidi)
editmenu.add_command(label=READABLETEXT[61], command=FromForm)
editmenu.add_command(label=READABLETEXT[62], command=FromText)
editmenu.add_separator()
editmenu.add_command(label=READABLETEXT[160], command=FromMidiClass)
editmenu.add_command(label=READABLETEXT[148], command=NewFromMidi)
editmenu.add_command(label=READABLETEXT[160], command=FromClassMidi)
editmenu.add_command(label=READABLETEXT[148], command=FromNewMidi)
# 将子菜单加入到菜单条中
main_menu_bar.add_cascade(label=READABLETEXT[63], menu=editmenu)
@ -1707,6 +1655,10 @@ def __main__():
funcmenu.add_command(label=READABLETEXT[153], command=MakeNewCMDdir)
funcmenu.add_command(label=READABLETEXT[154], command=MakeNewFunctionPackFile)
funcmenu.add_command(label=READABLETEXT[155], command=MakeNewFunctionPack_ResourcesPacks_File)
funcmenu.add_separator()
funcmenu.add_command(label=READABLETEXT[164], command=MakeClassCMD)
funcmenu.add_command(label=READABLETEXT[165], command=MakeClassCMDdir)
funcmenu.add_command(label=READABLETEXT[166], command=MakeClassFunctionPackFile)
# 将子菜单加入到菜单条中
main_menu_bar.add_cascade(label=READABLETEXT[67], menu=funcmenu)
@ -1724,8 +1676,6 @@ def __main__():
# 将子菜单加入到菜单条中
main_menu_bar.add_cascade(label=READABLETEXT[74], menu=worldmenu)
# 创建结构功能菜单
structureMenu = tk.Menu(main_menu_bar, tearoff=0)
structureMenu.add_command(label=READABLETEXT[92], command=toBDXfile)
@ -1736,8 +1686,6 @@ def __main__():
main_menu_bar.add_cascade(label=READABLETEXT[95], menu=structureMenu)
# 创建辅助功能菜单
otherMenu = tk.Menu(main_menu_bar, tearoff=0)
otherMenu.add_command(label=READABLETEXT[75], command=MakeFuncPlayer)
@ -1747,7 +1695,6 @@ def __main__():
main_menu_bar.add_cascade(label=READABLETEXT[81], menu=otherMenu)
# 创建实验功能菜单
trymenu = tk.Menu(main_menu_bar, tearoff=0)
trymenu.add_command(label=READABLETEXT[82], command=ShowCMD)
@ -1780,10 +1727,15 @@ def __main__():
# 大标题
tk.Label(UpLeftFrame, text=READABLETEXT[91], font=('', 20)).pack()
# 按钮式文本
LabelPackName = tk.Label(UpLeftFrame, bg='white', text=READABLETEXT[46].format(str(dataset[0]['mainset']['PackName'])), font=('', 15))
LabelMusicTitle = tk.Label(UpLeftFrame, bg='white', text=READABLETEXT[47].format(str(dataset[0]['mainset']['MusicTitle'])), font=('', 15))
LabelIsRepeat = tk.Label(UpLeftFrame, bg='white', text=READABLETEXT[48].format(str(dataset[0]['mainset']['IsRepeat'])), font=('', 15))
LabelPlayerSelect = tk.Label(UpLeftFrame, bg='white', text=READABLETEXT[49].format(str(dataset[0]['mainset']['PlayerSelect'])), font=('', 15))
LabelPackName = tk.Label(UpLeftFrame, bg='white',
text=READABLETEXT[46].format(str(dataset[0]['mainset']['PackName'])), font=('', 15))
LabelMusicTitle = tk.Label(UpLeftFrame, bg='white',
text=READABLETEXT[47].format(str(dataset[0]['mainset']['MusicTitle'])), font=('', 15))
LabelIsRepeat = tk.Label(UpLeftFrame, bg='white',
text=READABLETEXT[48].format(str(dataset[0]['mainset']['IsRepeat'])), font=('', 15))
LabelPlayerSelect = tk.Label(UpLeftFrame, bg='white',
text=READABLETEXT[49].format(str(dataset[0]['mainset']['PlayerSelect'])),
font=('', 15))
# 绑定按钮
LabelPackName.bind('<Button-1>', changePackName)
LabelMusicTitle.bind('<Button-1>', changeMusicTitle)
@ -1816,10 +1768,17 @@ def __main__():
# 大标题
tk.Label(UpRightFrame, text=READABLETEXT[97], font=('', 20)).pack()
# 按钮式文本
LabelEntityName = tk.Label(UpRightFrame, bg='white', text=READABLETEXT[42].format(dataset[0]['musics'][NowMusic]['set']['EntityName']), font=('', 15))
LabelScoreboardName = tk.Label(UpRightFrame, bg='white', text=READABLETEXT[43].format(dataset[0]['musics'][NowMusic]['set']['ScoreboardName']), font=('', 15))
LabelInstrument = tk.Label(UpRightFrame, bg='white', text=READABLETEXT[44].format(dataset[0]['musics'][NowMusic]['set']['Instrument']), font=('', 15))
LabelFileName = tk.Label(UpRightFrame, bg='white', text=READABLETEXT[45].format(dataset[0]['musics'][NowMusic]['set']['FileName']), font=('', 15))
LabelEntityName = tk.Label(UpRightFrame, bg='white',
text=READABLETEXT[42].format(dataset[0]['musics'][NowMusic]['set']['EntityName']),
font=('', 15))
LabelScoreboardName = tk.Label(UpRightFrame, bg='white', text=READABLETEXT[43].format(
dataset[0]['musics'][NowMusic]['set']['ScoreboardName']), font=('', 15))
LabelInstrument = tk.Label(UpRightFrame, bg='white',
text=READABLETEXT[44].format(dataset[0]['musics'][NowMusic]['set']['Instrument']),
font=('', 15))
LabelFileName = tk.Label(UpRightFrame, bg='white',
text=READABLETEXT[45].format(dataset[0]['musics'][NowMusic]['set']['FileName']),
font=('', 15))
# 绑定按钮
LabelEntityName.bind('<Button-1>', changeEntityName)
LabelScoreboardName.bind('<Button-1>', changeScoreboardName)
@ -1909,3 +1868,112 @@ def __main__():
if __name__ == '__main__':
__main__()
##################
# def openNewProject():
# global is_save
# if is_save is not True:
# result = tkinter.messagebox.askyesno(title=READABLETEXT[1], message=READABLETEXT[106])
# if result:
# SaveProject()
# fn = tkinter.filedialog.askopenfilename(title=READABLETEXT[7], initialdir=r'./',
# filetypes=[(READABLETEXT[108], '.msct'), (READABLETEXT[112], '*')],
# multiple=True)
# if fn is None or fn == '':
# return
# else:
# # print(fn)
# fn = fn[0]
# # print(fn)
# log("尝试打开:" + fn)
# try:
# try:
# with open(fn, 'rb') as C:
# global dataset
# # print(pickle.load(C))
# read = pickle.load(C) # 重要的事情说三遍pickle.load只能load一次所以多load几次就有bug要一次读完
# # 重要的事情说三遍pickle.load只能load一次所以多load几次就有bug要一次读完
# # 重要的事情说三遍pickle.load只能load一次所以多load几次就有bug要一次读完
# # print(read)
# dataset = read[0]
# pkl1 = read[1]
# log("读取新文件成功")
# with open("1.pkl", 'wb') as w:
# pickle.dump(pkl1, w)
# except KeyError:
# with open(fn, 'rb') as C:
# dataset[0] = pickle.load(C)
# log("读取新文件成功")
# except pickle.UnpicklingError: # 程序规范修改根据新的语法标准except后面不能没有错误类型测试后改为
# # pickle.UnpicklingError
# print(READABLETEXT[8].format(fn))
# log('无法打开{}'.format(fn))
# return
# global is_new_file
# global ProjectName
# is_new_file = False
# ProjectName = fn
# del fn
# global NowMusic
# RefreshMain()
# RefreshMusic(NowMusic)
# def openClassProject():
# global is_save
# if is_save is not True:
# result = tkinter.messagebox.askyesno(title=READABLETEXT[1], message=READABLETEXT[106])
# if result:
# SaveProject()
# fn = tkinter.filedialog.askopenfilename(title=READABLETEXT[7], initialdir=r'./',
# filetypes=[(READABLETEXT[108], '.msct'), (READABLETEXT[112], '*')],
# multiple=True)
# if fn is None or fn == '':
# return
# else:
# # print(fn)
# fn = fn[0]
# # print(fn)
# log("尝试打开:" + fn)
# try:
# try:
# with open(fn, 'rb') as C:
# global dataset
# # print(pickle.load(C))
# read = pickle.load(C) # 重要的事情说三遍pickle.load只能load一次所以多load几次就有bug要一次读完
# # 重要的事情说三遍pickle.load只能load一次所以多load几次就有bug要一次读完
# # 重要的事情说三遍pickle.load只能load一次所以多load几次就有bug要一次读完
# # print(read)
# dataset = read
# log("读取新文件成功")
# except KeyError:
# with open(fn, 'rb') as C:
# dataset[0] = pickle.load(C)
# log("读取新文件成功")
# except pickle.UnpicklingError: # 程序规范修改根据新的语法标准except后面不能没有错误类型测试后改为
# # pickle.UnpicklingError
# print(READABLETEXT[8].format(fn))
# log('无法打开{}'.format(fn))
# return
# global is_new_file
# global ProjectName
# is_new_file = False
# ProjectName = fn
# del fn
# global NowMusic
# RefreshMain()
# RefreshMusic(NowMusic)
# ------------------
# filemenu.add_separator()
#
# filemenu.add_command(label=READABLETEXT[149], command=openNewProject)
# filemenu.add_command(label=READABLETEXT[150], command=SaveNewProject)
# filemenu.add_command(label=READABLETEXT[151], command=SaveAsNewProject)
# filemenu.add_separator()
#
# filemenu.add_command(label=READABLETEXT[161], command=openClassProject)
# filemenu.add_command(label=READABLETEXT[162], command=SaveClassProject)
# filemenu.add_command(label=READABLETEXT[163], command=SaveAsClassProject)