Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
accessibility_movie_2
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
赵心治
accessibility_movie_2
Commits
d2fb7787
Commit
d2fb7787
authored
Nov 05, 2022
by
xuanweiace
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix bug
parent
4f04de43
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
92 additions
and
18 deletions
+92
-18
main_window.py
main_window.py
+89
-17
management.py
management.py
+1
-0
operation_dialog.py
operation_dialog.py
+2
-1
No files found.
main_window.py
View file @
d2fb7787
...
@@ -137,11 +137,14 @@ class MainWindow(QMainWindow, Ui_MainWindow):
...
@@ -137,11 +137,14 @@ class MainWindow(QMainWindow, Ui_MainWindow):
# 表格双击和发生change时的处理
# 表格双击和发生change时的处理
self
.
zm_tableWidget
.
setEditTriggers
(
QAbstractItemView
.
NoEditTriggers
)
self
.
zm_tableWidget
.
setEditTriggers
(
QAbstractItemView
.
NoEditTriggers
)
self
.
all_tableWidget
.
setEditTriggers
(
QAbstractItemView
.
NoEditTriggers
)
self
.
all_tableWidget
.
setEditTriggers
(
QAbstractItemView
.
NoEditTriggers
)
self
.
all_tableWidget
.
itemDoubleClicked
.
connect
(
self
.
all_item_changed_by_double_clicked_slot
)
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
.
itemChanged
.
connect
(
self
.
rewriteHistory
)
self
.
pb_tableWidget
.
itemChanged
.
connect
(
self
.
rewriteHistory
)
self
.
pb_tableWidget
.
itemChanged
.
connect
(
self
.
generate_audio_slot
)
self
.
pb_tableWidget
.
itemChanged
.
connect
(
self
.
generate_audio_slot
)
# todo 现在只在【旁白】tab上双击修改,会保存表格到本地,【字幕旁白】tab上不行。
self
.
pb_tableWidget
.
itemChanged
.
connect
(
self
.
write2ProjectFromAside
)
self
.
pb_tableWidget
.
itemChanged
.
connect
(
self
.
write2ProjectFromAside
)
self
.
zm_tableWidget
.
itemDoubleClicked
.
connect
(
self
.
change_video_time
)
self
.
zm_tableWidget
.
itemDoubleClicked
.
connect
(
self
.
change_video_time
)
self
.
pb_tableWidget
.
itemDoubleClicked
.
connect
(
self
.
change_video_time
)
self
.
pb_tableWidget
.
itemDoubleClicked
.
connect
(
self
.
change_video_time
)
self
.
all_tableWidget
.
itemDoubleClicked
.
connect
(
self
.
change_video_time
)
self
.
all_tableWidget
.
itemDoubleClicked
.
connect
(
self
.
change_video_time
)
...
@@ -165,6 +168,9 @@ class MainWindow(QMainWindow, Ui_MainWindow):
...
@@ -165,6 +168,9 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self
.
all_tableWidget_idx
=
0
self
.
all_tableWidget_idx
=
0
self
.
pb_tableWidget_idx
=
0
self
.
pb_tableWidget_idx
=
0
self
.
zm_tableWidget_idx
=
0
self
.
zm_tableWidget_idx
=
0
# 只有双击item,才算用户修改。从【操作表格】功能修改的不算
self
.
user_editing_aside
=
False
self
.
user_editing_content
=
False
# 重写关闭Mmainwindow窗口
# 重写关闭Mmainwindow窗口
def
closeEvent
(
self
,
event
):
def
closeEvent
(
self
,
event
):
...
@@ -510,13 +516,16 @@ class MainWindow(QMainWindow, Ui_MainWindow):
...
@@ -510,13 +516,16 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self
.
zm_tableWidget_idx
=
0
self
.
zm_tableWidget_idx
=
0
self
.
set_table_to_window
()
self
.
set_table_to_window
()
def
set_table_to_window
(
self
,
need_refresh_all
=
True
):
def
set_table_to_window
(
self
,
need_refresh_all
=
True
,
user_operation
=
False
):
"""
"""
把projectContext里的内容呈现在UI上。
把projectContext里的内容呈现在UI上。
只有在初始化工程时,need_refresh_all = True,此时才需要initial_ing置为true。
在初始化工程时,need_refresh_all = True,代表是从无到有的加载,决定了表格更新的起始坐标。
user_operation代表是否是用户双击进行的操作,此时需要initial_ing置为true。
user_operation=False的情况:因为添加一行而进行的被迫修改
user_operation=True的情况:用户双击操作表格,通过【操作表格】进行增删改,通过【在此处添加旁白】来添加一行
initial_ing为true时,不会生成音频,不会写入历史记录
initial_ing为true时,不会生成音频,不会写入历史记录
"""
"""
if
need_refresh_all
:
if
user_operation
:
self
.
projectContext
.
initial_ing
=
True
self
.
projectContext
.
initial_ing
=
True
header
=
self
.
projectContext
.
header
header
=
self
.
projectContext
.
header
subtitle_list
=
self
.
projectContext
.
subtitle_list
subtitle_list
=
self
.
projectContext
.
subtitle_list
...
@@ -555,7 +564,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
...
@@ -555,7 +564,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self
.
pb_tableWidget_idx
=
len
(
aside_list
)
self
.
pb_tableWidget_idx
=
len
(
aside_list
)
self
.
zm_tableWidget_idx
=
len
(
subtitle_list
)
self
.
zm_tableWidget_idx
=
len
(
subtitle_list
)
if
need_refresh_all
:
if
user_operation
:
self
.
projectContext
.
initial_ing
=
False
self
.
projectContext
.
initial_ing
=
False
def
setElememtToTable
(
self
,
table
:
QTableWidget
,
elem
:
Element
,
idx
:
int
):
def
setElememtToTable
(
self
,
table
:
QTableWidget
,
elem
:
Element
,
idx
:
int
):
...
@@ -662,6 +671,10 @@ class MainWindow(QMainWindow, Ui_MainWindow):
...
@@ -662,6 +671,10 @@ class MainWindow(QMainWindow, Ui_MainWindow):
if
item
is
None
:
if
item
is
None
:
print
(
"WRONG!!!! item Is None"
)
print
(
"WRONG!!!! item Is None"
)
return
return
if
self
.
is_user_editing
()
==
False
:
return
self
.
set_user_edit
(
False
)
row
=
item
.
row
()
# 获取行数
row
=
item
.
row
()
# 获取行数
col
=
item
.
column
()
# 获取列数 注意是column而不是col
col
=
item
.
column
()
# 获取列数 注意是column而不是col
...
@@ -690,9 +703,19 @@ class MainWindow(QMainWindow, Ui_MainWindow):
...
@@ -690,9 +703,19 @@ class MainWindow(QMainWindow, Ui_MainWindow):
t
.
setDaemon
(
True
)
t
.
setDaemon
(
True
)
t
.
start
()
t
.
start
()
def
is_user_editing
(
self
):
return
self
.
user_editing_content
or
self
.
user_editing_aside
def
set_user_edit
(
self
,
val
:
bool
):
self
.
user_editing_content
=
val
self
.
user_editing_aside
=
val
def
rewriteHistory
(
self
,
item
):
def
rewriteHistory
(
self
,
item
):
if
self
.
projectContext
.
initial_ing
==
True
:
if
self
.
projectContext
.
initial_ing
==
True
:
return
return
if
self
.
is_user_editing
()
==
False
:
return
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
...
@@ -743,6 +766,8 @@ class MainWindow(QMainWindow, Ui_MainWindow):
...
@@ -743,6 +766,8 @@ class MainWindow(QMainWindow, Ui_MainWindow):
def
write2ProjectFromAside
(
self
,
item
):
def
write2ProjectFromAside
(
self
,
item
):
if
self
.
projectContext
.
initial_ing
==
True
:
if
self
.
projectContext
.
initial_ing
==
True
:
return
return
if
self
.
is_user_editing
()
==
False
:
return
if
item
is
None
:
if
item
is
None
:
print
(
"WRONG!!!! item Is None"
)
print
(
"WRONG!!!! item Is None"
)
return
return
...
@@ -837,8 +862,12 @@ class MainWindow(QMainWindow, Ui_MainWindow):
...
@@ -837,8 +862,12 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self
.
sld_video
.
setMaximum
(
self
.
player
.
duration
()
/
1000
+
1
)
self
.
sld_video
.
setMaximum
(
self
.
player
.
duration
()
/
1000
+
1
)
def
refresh_tab_slot
(
self
):
def
refresh_tab_slot
(
self
):
self
.
set_table_to_window
(
False
)
"""
self
.
projectContext
.
save_project
(
False
)
刷新整个表格
"""
self
.
set_table_to_window
()
# 不需要加这个,因为只要itemchange,就会触发保存的
# self.projectContext.save_project(False)
def
operate_slot
(
self
):
def
operate_slot
(
self
):
...
@@ -847,6 +876,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
...
@@ -847,6 +876,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
def
insert_aside_from_now_slot
(
self
):
def
insert_aside_from_now_slot
(
self
):
cur_time
=
round
(
self
.
player
.
position
()
/
1000
,
2
)
cur_time
=
round
(
self
.
player
.
position
()
/
1000
,
2
)
idx
=
self
.
calculate_element_row
(
cur_time
)
idx
=
self
.
calculate_element_row
(
cur_time
)
print
(
"[insert_aside_from_now_slot] idx="
,
idx
)
# 其实end_time目前是没啥用的,可以删掉了
# 其实end_time目前是没啥用的,可以删掉了
if
idx
!=
len
(
self
.
projectContext
.
all_elements
):
if
idx
!=
len
(
self
.
projectContext
.
all_elements
):
self
.
add_line_operation_slot
(
idx
,
str
(
cur_time
),
self
.
projectContext
.
all_elements
[
idx
+
1
]
.
st_time_sec
,
self
.
add_line_operation_slot
(
idx
,
str
(
cur_time
),
self
.
projectContext
.
all_elements
[
idx
+
1
]
.
st_time_sec
,
...
@@ -867,7 +897,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
...
@@ -867,7 +897,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
# 注意,这里需要用同一对象,不能生成多个Element
# 注意,这里需要用同一对象,不能生成多个Element
new_element
=
Element
(
start_time
,
end_time
,
subtitle
,
suggest
,
aside
,
speed
)
new_element
=
Element
(
start_time
,
end_time
,
subtitle
,
suggest
,
aside
,
speed
)
self
.
projectContext
.
all_elements
.
insert
(
int
(
row
),
new_element
)
self
.
projectContext
.
all_elements
.
insert
(
int
(
row
),
new_element
)
self
.
all_tableWidget_idx
+=
1
self
.
all_tableWidget_idx
=
int
(
row
)
if
suggest
is
not
None
and
"插入旁白,推荐字数为"
in
suggest
:
if
suggest
is
not
None
and
"插入旁白,推荐字数为"
in
suggest
:
idx
=
0
idx
=
0
while
idx
<
len
(
self
.
projectContext
.
aside_list
):
while
idx
<
len
(
self
.
projectContext
.
aside_list
):
...
@@ -875,7 +905,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
...
@@ -875,7 +905,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
break
break
idx
+=
1
idx
+=
1
self
.
projectContext
.
aside_list
.
insert
(
idx
,
new_element
)
self
.
projectContext
.
aside_list
.
insert
(
idx
,
new_element
)
self
.
pb_tableWidget_idx
+=
1
self
.
pb_tableWidget_idx
=
idx
else
:
else
:
idx
=
0
idx
=
0
while
idx
<
len
(
self
.
projectContext
.
subtitle_list
):
while
idx
<
len
(
self
.
projectContext
.
subtitle_list
):
...
@@ -883,9 +913,10 @@ class MainWindow(QMainWindow, Ui_MainWindow):
...
@@ -883,9 +913,10 @@ class MainWindow(QMainWindow, Ui_MainWindow):
break
break
idx
+=
1
idx
+=
1
self
.
projectContext
.
subtitle_list
.
insert
(
idx
,
new_element
)
self
.
projectContext
.
subtitle_list
.
insert
(
idx
,
new_element
)
self
.
zm_tableWidget_idx
+=
1
self
.
zm_tableWidget_idx
=
idx
self
.
refresh_tab_slot
()
self
.
prompt_dialog
.
show_with_msg
(
"操作成功!!请刷新表格查看变化"
)
self
.
projectContext
.
save_project
()
self
.
prompt_dialog
.
show_with_msg
(
"操作成功!!请查看变化"
)
#只需要改all_elements就可以了,因为是同一对象
#只需要改all_elements就可以了,因为是同一对象
def
mod_line_operation_slot
(
self
,
row
,
start_time
,
end_time
,
subtitle
,
suggest
,
aside
):
def
mod_line_operation_slot
(
self
,
row
,
start_time
,
end_time
,
subtitle
,
suggest
,
aside
):
...
@@ -896,7 +927,22 @@ class MainWindow(QMainWindow, Ui_MainWindow):
...
@@ -896,7 +927,22 @@ class MainWindow(QMainWindow, Ui_MainWindow):
elem
.
suggest
=
suggest
elem
.
suggest
=
suggest
elem
.
aside
=
aside
elem
.
aside
=
aside
self
.
prompt_dialog
.
show_with_msg
(
"操作成功!!请刷新表格查看变化"
)
to_be_modify_element
=
self
.
projectContext
.
all_elements
[
int
(
row
)
-
1
]
if
suggest
is
not
None
and
"插入旁白,推荐字数为"
in
suggest
:
for
i
in
range
(
len
(
self
.
projectContext
.
aside_list
)):
if
to_be_modify_element
.
equalTo
(
self
.
projectContext
.
aside_list
[
i
]):
self
.
pb_tableWidget_idx
=
i
self
.
setElememtToTable
(
self
.
pb_tableWidget
,
self
.
projectContext
.
aside_list
[
i
],
i
)
break
else
:
for
i
in
range
(
len
(
self
.
projectContext
.
subtitle_header
)):
if
to_be_modify_element
.
equalTo
(
self
.
projectContext
.
subtitle_list
[
i
]):
self
.
zm_tableWidget_idx
=
i
self
.
setElememtToTable
(
self
.
zm_tableWidget
,
self
.
projectContext
.
subtitle_list
[
i
],
i
)
break
self
.
setElememtToTable
(
self
.
all_tableWidget
,
self
.
projectContext
.
all_elements
[
int
(
row
)
-
1
],
int
(
row
)
-
1
)
self
.
projectContext
.
save_project
()
self
.
prompt_dialog
.
show_with_msg
(
"操作成功!!请查看变化"
)
# 只有row起作用
# 只有row起作用
def
del_line_operation_slot
(
self
,
row
,
start_time
,
end_time
,
subtitle
,
suggest
,
aside
):
def
del_line_operation_slot
(
self
,
row
,
start_time
,
end_time
,
subtitle
,
suggest
,
aside
):
...
@@ -906,18 +952,43 @@ class MainWindow(QMainWindow, Ui_MainWindow):
...
@@ -906,18 +952,43 @@ class MainWindow(QMainWindow, Ui_MainWindow):
and
"插入旁白,推荐字数为"
in
self
.
projectContext
.
all_elements
[
int
(
row
)
-
1
]
.
suggest
:
and
"插入旁白,推荐字数为"
in
self
.
projectContext
.
all_elements
[
int
(
row
)
-
1
]
.
suggest
:
for
i
in
range
(
len
(
self
.
projectContext
.
aside_list
)):
for
i
in
range
(
len
(
self
.
projectContext
.
aside_list
)):
if
to_be_delete_element
.
equalTo
(
self
.
projectContext
.
aside_list
[
i
]):
if
to_be_delete_element
.
equalTo
(
self
.
projectContext
.
aside_list
[
i
]):
self
.
pb_tableWidget_idx
=
i
self
.
projectContext
.
aside_list
.
pop
(
i
)
self
.
projectContext
.
aside_list
.
pop
(
i
)
break
break
self
.
pb_tableWidget_idx
-=
1
else
:
else
:
for
i
in
range
(
len
(
self
.
projectContext
.
subtitle_header
)):
for
i
in
range
(
len
(
self
.
projectContext
.
subtitle_header
)):
if
to_be_delete_element
.
equalTo
(
self
.
projectContext
.
subtitle_list
[
i
]):
if
to_be_delete_element
.
equalTo
(
self
.
projectContext
.
subtitle_list
[
i
]):
self
.
zm_tableWidget_idx
=
i
self
.
projectContext
.
subtitle_list
.
pop
(
i
)
self
.
projectContext
.
subtitle_list
.
pop
(
i
)
break
break
self
.
zm_tableWidget_idx
-=
1
self
.
all_tableWidget_idx
-=
1
self
.
all_tableWidget_idx
=
int
(
row
)
-
1
self
.
projectContext
.
all_elements
.
pop
(
int
(
row
)
-
1
)
self
.
projectContext
.
all_elements
.
pop
(
int
(
row
)
-
1
)
self
.
projectContext
.
save_project
()
self
.
prompt_dialog
.
show_with_msg
(
"操作成功!!请查看变化"
)
def
pb_item_changed_by_double_clicked_slot
(
self
,
item
):
if
item
is
None
:
return
row
=
item
.
row
()
# 获取行数
col
=
item
.
column
()
# 获取列数 注意是column而不是col哦
text
=
item
.
text
()
# 获取内容
if
col
not
in
constant
.
Aside
.
ActivateColumns
:
return
print
(
"已经set user_editing_aside=True"
)
self
.
user_editing_aside
=
True
def
all_item_changed_by_double_clicked_slot
(
self
,
item
):
if
item
is
None
:
return
row
=
item
.
row
()
# 获取行数
col
=
item
.
column
()
# 获取列数 注意是column而不是col哦
text
=
item
.
text
()
# 获取内容
self
.
prompt_dialog
.
show_with_msg
(
"操作成功!!请刷新表格查看变化"
)
if
col
not
in
constant
.
Content
.
ActivateColumns
:
return
print
(
"已经set user_editing_content=True"
)
self
.
user_editing_content
=
True
\ No newline at end of file
management.py
View file @
d2fb7787
...
@@ -249,6 +249,7 @@ class ProjectContext:
...
@@ -249,6 +249,7 @@ class ProjectContext:
def
history_pop
(
self
)
->
OperateRecord
:
def
history_pop
(
self
)
->
OperateRecord
:
if
len
(
self
.
history_records
)
==
0
:
if
len
(
self
.
history_records
)
==
0
:
return
None
return
None
print
(
f
"[history_pop] {self.history_records}, {self.records_pos}"
)
self
.
records_pos
-=
1
self
.
records_pos
-=
1
return
self
.
history_records
[
self
.
records_pos
]
return
self
.
history_records
[
self
.
records_pos
]
...
...
operation_dialog.py
View file @
d2fb7787
...
@@ -113,7 +113,8 @@ class Operation_Dialog(QDialog, Ui_Dialog):
...
@@ -113,7 +113,8 @@ class Operation_Dialog(QDialog, Ui_Dialog):
# 这些是只有【modify】才需要检测的
# 这些是只有【modify】才需要检测的
if
self
.
comboBox_2
.
currentText
()
==
"修改一行"
:
if
self
.
comboBox_2
.
currentText
()
==
"修改一行"
:
try
:
try
:
suggest
=
self
.
mainWindow
.
projectContext
.
all_elements
[
row_number
]
.
suggest
suggest
=
self
.
mainWindow
.
projectContext
.
all_elements
[
row_number
-
1
]
.
suggest
print
(
"suggest:"
,
suggest
)
# 如果当前行是旁白
# 如果当前行是旁白
if
suggest
is
not
None
and
"插入旁白"
in
suggest
:
if
suggest
is
not
None
and
"插入旁白"
in
suggest
:
assert
self
.
comboBox
.
currentText
()
==
"旁白"
assert
self
.
comboBox
.
currentText
()
==
"旁白"
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment