小改动、回档

This commit is contained in:
bgArray
2022-01-28 18:29:51 +08:00
parent 26ee16f071
commit 19bbb92cff
31 changed files with 285 additions and 29 deletions

View File

@ -219,6 +219,15 @@ def __main__():
else:
return k
def MidiAnalysisClass(midfile: str):
from nmcsup.nmcreader import midiClassReader
k = midiClassReader(midfile)
if k is False:
tk.messagebox.showerror(title=READABLETEXT[0], message=READABLETEXT[105].format(midfile))
return
else:
return k
print('完成!')
# 菜单命令
@ -285,13 +294,13 @@ def __main__():
global is_save
is_save = True
except TypeError:
SaveNewProject()
SaveClassProject()
return
def SaveNewProject():
if is_new_file:
# 新的项目相等于另存为
SaveAsNewProject()
SaveAsClassProject() # SaveAsNewProject()
return
else:
save_list = [dataset]
@ -306,6 +315,18 @@ def __main__():
global is_save
is_save = True
def SaveClassProject():
if is_new_file:
# 新的项目相等于另存为
SaveAsClassProject()
return
else:
with open(ProjectName, 'wb') as f:
pickle.dump(dataset, f)
tkinter.messagebox.showinfo(title=READABLETEXT[4], message=READABLETEXT[107].format(ProjectName))
global is_save
is_save = True
print('保存项目命令加载完成!')
def SaveAsProject():
@ -349,6 +370,19 @@ def __main__():
global is_save
is_save = True
def SaveAsClassProject():
fn = tkinter.filedialog.asksaveasfilename(title=READABLETEXT[5], initialdir=r'./',
filetypes=[(READABLETEXT[108], '.msct'), (READABLETEXT[109], '*')],
defaultextension='Noname.msct')
if fn is None or fn == '':
return
Project_Name = fn
with open(Project_Name, 'wb') as f:
pickle.dump(dataset, f)
tkinter.messagebox.showinfo(title=READABLETEXT[4], message=READABLETEXT[107].format(Project_Name))
global is_save
is_save = True
print('另存项目命令加载完成!')
def openOldProject():
@ -447,6 +481,51 @@ def __main__():
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():
@ -557,8 +636,41 @@ def __main__():
threading.Thread(target=midiSPT, args=(th,)).start()
del th
def MidiClass():
log('从midi导入音乐并采用新读取方式')
def NewFromMidi():
try:
tkinter.messagebox.showinfo("开发提示", "因为一些原因这个功能暂时取消")
except tkinter.TclError:
log('从midi导入音乐并采用新读取方式')
midfile = tkinter.filedialog.askopenfilename(title=READABLETEXT[21], initialdir=r'./',
filetypes=[(READABLETEXT[114], '.mid .midi'),
(READABLETEXT[112], '*')], multiple=True)
if midfile is None or midfile == '':
log('取消')
return
else:
midfile = midfile[0]
th = NewThread(LoadMidi, (midfile,))
th.start()
del midfile
def midiSPT(th_):
for i in th_.getResult():
datas = DMM()
datas['notes'] = i
dataset[0]['musics'].append(datas)
del th_
global is_save
is_save = False
global NowMusic
RefreshMain()
RefreshMusic(NowMusic)
threading.Thread(target=midiSPT, args=(th,)).start()
del th
dataset[0]['mainset']['ReadMethod'] = "new"
def FromMidiClass():
log('从midi导入音乐并采用类读取方式')
midfile = tkinter.filedialog.askopenfilename(title=READABLETEXT[21], initialdir=r'./',
filetypes=[(READABLETEXT[114], '.mid .midi'),
(READABLETEXT[112], '*')], multiple=True)
@ -567,7 +679,7 @@ def __main__():
return
else:
midfile = midfile[0]
th = NewThread(LoadMidi, (midfile,))
th = NewThread(MidiAnalysisClass, (midfile,))
th.start()
del midfile
@ -585,7 +697,7 @@ def __main__():
threading.Thread(target=midiSPT, args=(th,)).start()
del th
dataset[0]['mainset']['ReadMethod'] = "new"
dataset[0]['mainset']['ReadMethod'] = "class"
print('读midi命令加载完成')
@ -1407,11 +1519,17 @@ 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[149], command=openNewProject)
filemenu.add_command(label=READABLETEXT[150], command=SaveNewProject)
filemenu.add_command(label=READABLETEXT[151], command=SaveAsNewProject)
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() # 分隔符
@ -1427,7 +1545,8 @@ def __main__():
editmenu.add_command(label=READABLETEXT[61], command=FromForm)
editmenu.add_command(label=READABLETEXT[62], command=FromText)
editmenu.add_separator()
editmenu.add_command(label=READABLETEXT[148], command=MidiClass)
editmenu.add_command(label=READABLETEXT[160], command=FromMidiClass)
editmenu.add_command(label=READABLETEXT[148], command=NewFromMidi)
# 将子菜单加入到菜单条中
main_menu_bar.add_cascade(label=READABLETEXT[63], menu=editmenu)