Commit 93b9f63c authored by xuanweiace's avatar xuanweiace

fix 修改两个槽函数的顺序关系,以保证修改的旁白先存到内存,再写入历史记录

add 【编辑表格】时,增加对前后记录的时间合法性校验
parent 1d2f2b64
...@@ -229,10 +229,10 @@ class MainWindow(QMainWindow, Ui_MainWindow): ...@@ -229,10 +229,10 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.pb_tableWidget.itemDoubleClicked.connect(self.writeHistory) self.pb_tableWidget.itemDoubleClicked.connect(self.writeHistory)
self.pb_tableWidget.itemDoubleClicked.connect(self.pb_item_changed_by_double_clicked_slot) self.pb_tableWidget.itemDoubleClicked.connect(self.pb_item_changed_by_double_clicked_slot)
self.pb_tableWidget.itemChanged.connect(self.rewriteHistory)
self.pb_tableWidget.itemChanged.connect(self.generate_audio_slot)
# todo 现在只在【旁白】tab上双击修改,会保存表格到本地,【字幕旁白】tab上不行。(【字幕旁白】tab上无法修改旁白) # todo 现在只在【旁白】tab上双击修改,会保存表格到本地,【字幕旁白】tab上不行。(【字幕旁白】tab上无法修改旁白)
self.pb_tableWidget.itemChanged.connect(self.write2ProjectFromAside) self.pb_tableWidget.itemChanged.connect(self.write2ProjectFromAside)
self.pb_tableWidget.itemChanged.connect(self.generate_audio_slot)
self.pb_tableWidget.itemChanged.connect(self.rewriteHistory)
self.pb_tableWidget.itemDoubleClicked.connect(self.change_video_time) self.pb_tableWidget.itemDoubleClicked.connect(self.change_video_time)
# 其他变量 # 其他变量
...@@ -968,8 +968,8 @@ class MainWindow(QMainWindow, Ui_MainWindow): ...@@ -968,8 +968,8 @@ class MainWindow(QMainWindow, Ui_MainWindow):
return return
if self.is_user_editing() == False: if self.is_user_editing() == False:
return return
# 这里不需要加,因为按照槽函数的顺序 还有一个要执行的
# self.set_user_edit(False) self.set_user_edit(False)
if item is None: if item is None:
print("WRONG!!!! item Is None") print("WRONG!!!! item Is None")
return return
...@@ -1035,7 +1035,8 @@ class MainWindow(QMainWindow, Ui_MainWindow): ...@@ -1035,7 +1035,8 @@ class MainWindow(QMainWindow, Ui_MainWindow):
return return
if self.is_user_editing() == False: if self.is_user_editing() == False:
return return
self.set_user_edit(False) # 这里不需要加,因为按照槽函数的顺序 还有一个要执行的
# self.set_user_edit(False)
if item is None: if item is None:
print("WRONG!!!! item Is None") print("WRONG!!!! item Is None")
return return
......
...@@ -81,6 +81,8 @@ class Operation_Dialog(QDialog, Ui_Dialog): ...@@ -81,6 +81,8 @@ class Operation_Dialog(QDialog, Ui_Dialog):
else: else:
for i in range(1, len(self.lineEdits)): for i in range(1, len(self.lineEdits)):
self.lineEdits[i].setEnabled(False) self.lineEdits[i].setEnabled(False)
for timeEdit in self.timeEdits:
timeEdit.setEnabled(False)
# 修改完后需要重新检测 # 修改完后需要重新检测
def remake_slot(self): def remake_slot(self):
...@@ -89,6 +91,7 @@ class Operation_Dialog(QDialog, Ui_Dialog): ...@@ -89,6 +91,7 @@ class Operation_Dialog(QDialog, Ui_Dialog):
def check_validate_slot(self): def check_validate_slot(self):
# 校验行数 # 校验行数
# todo 用tableWidget还是用all_element?
rowCount = self.mainWindow.all_tableWidget.rowCount() rowCount = self.mainWindow.all_tableWidget.rowCount()
try: try:
row_number = int(self.lineEdit.text()) row_number = int(self.lineEdit.text())
...@@ -118,7 +121,7 @@ class Operation_Dialog(QDialog, Ui_Dialog): ...@@ -118,7 +121,7 @@ class Operation_Dialog(QDialog, Ui_Dialog):
return False return False
# 这些是只有【add】才需要检测的 # 这些是只有【add】才需要检测的
if self.comboBox_2.currentText() == "增加一行": if self.comboBox_2.currentText() in ["增加一行", "修改一行"]:
# 校验起始时间、结束时间 # 校验起始时间、结束时间
start_time_f, end_time_f = 0.0, 0.0 start_time_f, end_time_f = 0.0, 0.0
try: try:
...@@ -128,7 +131,21 @@ class Operation_Dialog(QDialog, Ui_Dialog): ...@@ -128,7 +131,21 @@ class Operation_Dialog(QDialog, Ui_Dialog):
end_time_f = float( end_time_f = float(
utils.trans_to_seconds(self.timeEdit_2.time().toString("hh:mm:ss"))) utils.trans_to_seconds(self.timeEdit_2.time().toString("hh:mm:ss")))
assert start_time_f < end_time_f assert start_time_f < end_time_f
if row_number < rowCount:
assert float(self.mainWindow.projectContext.all_elements[row_number+1].st_time_sec) > end_time_f
# 要求起始时间在上一行后面,在下一行前面
if row_number >= 1:
assert float(self.mainWindow.projectContext.all_elements[row_number-1].st_time_sec) < start_time_f
if row_number < rowCount:
assert float(self.mainWindow.projectContext.all_elements[row_number+1].st_time_sec) > start_time_f
# 要求start_time_f小于总时长
assert start_time_f < self.mainWindow.player.duration()/1000
except Exception as e: except Exception as e:
import traceback
exc_traceback = ''.join(
traceback.format_exception(*sys.exc_info()))
print("[Catch Exception in start.py]", exc_traceback)
self.mainWindow.prompt_dialog.show_with_msg( self.mainWindow.prompt_dialog.show_with_msg(
"校验失败!起始时间或结束时间输入有误!!") "校验失败!起始时间或结束时间输入有误!!")
return False return False
...@@ -165,6 +182,8 @@ class Operation_Dialog(QDialog, Ui_Dialog): ...@@ -165,6 +182,8 @@ class Operation_Dialog(QDialog, Ui_Dialog):
def set_all_user_component_status(self, status: bool): def set_all_user_component_status(self, status: bool):
for lineEdit in self.lineEdits: for lineEdit in self.lineEdits:
lineEdit.setEnabled(status) lineEdit.setEnabled(status)
for timeEdit in self.timeEdits:
timeEdit.setEnabled(status)
self.comboBox.setEnabled(status) self.comboBox.setEnabled(status)
self.comboBox_2.setEnabled(status) self.comboBox_2.setEnabled(status)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment