subtitld 0.0.0.dev0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (237) hide show
  1. subtitld/__init__.py +19 -0
  2. subtitld/__main__.py +240 -0
  3. subtitld/ftfy/char_classes.dat +0 -0
  4. subtitld/graphics/Montserrat-Black.ttf +0 -0
  5. subtitld/graphics/Montserrat-BlackItalic.ttf +0 -0
  6. subtitld/graphics/Montserrat-Bold.ttf +0 -0
  7. subtitld/graphics/Montserrat-BoldItalic.ttf +0 -0
  8. subtitld/graphics/Montserrat-ExtraBold.ttf +0 -0
  9. subtitld/graphics/Montserrat-ExtraBoldItalic.ttf +0 -0
  10. subtitld/graphics/Montserrat-ExtraLight.ttf +0 -0
  11. subtitld/graphics/Montserrat-ExtraLightItalic.ttf +0 -0
  12. subtitld/graphics/Montserrat-Italic.ttf +0 -0
  13. subtitld/graphics/Montserrat-Light.ttf +0 -0
  14. subtitld/graphics/Montserrat-LightItalic.ttf +0 -0
  15. subtitld/graphics/Montserrat-Medium.ttf +0 -0
  16. subtitld/graphics/Montserrat-MediumItalic.ttf +0 -0
  17. subtitld/graphics/Montserrat-Regular.ttf +0 -0
  18. subtitld/graphics/Montserrat-SemiBold.ttf +0 -0
  19. subtitld/graphics/Montserrat-SemiBoldItalic.ttf +0 -0
  20. subtitld/graphics/Montserrat-Thin.ttf +0 -0
  21. subtitld/graphics/Montserrat-ThinItalic.ttf +0 -0
  22. subtitld/graphics/Ubuntu-B.ttf +0 -0
  23. subtitld/graphics/Ubuntu-BI.ttf +0 -0
  24. subtitld/graphics/Ubuntu-C.ttf +0 -0
  25. subtitld/graphics/Ubuntu-L.ttf +0 -0
  26. subtitld/graphics/Ubuntu-LI.ttf +0 -0
  27. subtitld/graphics/Ubuntu-M.ttf +0 -0
  28. subtitld/graphics/Ubuntu-MI.ttf +0 -0
  29. subtitld/graphics/Ubuntu-R.ttf +0 -0
  30. subtitld/graphics/Ubuntu-RI.ttf +0 -0
  31. subtitld/graphics/Ubuntu-Th.ttf +0 -0
  32. subtitld/graphics/UbuntuMono-B.ttf +0 -0
  33. subtitld/graphics/UbuntuMono-BI.ttf +0 -0
  34. subtitld/graphics/UbuntuMono-R.ttf +0 -0
  35. subtitld/graphics/UbuntuMono-RI.ttf +0 -0
  36. subtitld/graphics/add_and_play.svg +4 -0
  37. subtitld/graphics/add_from_last.svg +4 -0
  38. subtitld/graphics/add_from_last_checked.svg +4 -0
  39. subtitld/graphics/add_subtitle_icon.svg +4 -0
  40. subtitld/graphics/add_subtitle_to_next_start.svg +4 -0
  41. subtitld/graphics/add_subtitle_to_next_start_checked.svg +4 -0
  42. subtitld/graphics/background_watermark.svg +9 -0
  43. subtitld/graphics/character_count_icon.svg +1 -0
  44. subtitld/graphics/checkbox_checked.svg +8 -0
  45. subtitld/graphics/checkbox_checked_hover.svg +8 -0
  46. subtitld/graphics/checkbox_disabled.svg +4 -0
  47. subtitld/graphics/checkbox_unchecked.svg +5 -0
  48. subtitld/graphics/checkbox_unchecked_hover.svg +5 -0
  49. subtitld/graphics/combobox_down_arrow.svg +4 -0
  50. subtitld/graphics/cps_icon.svg +1 -0
  51. subtitld/graphics/dialog_close_icon.svg +4 -0
  52. subtitld/graphics/dialog_close_icon_hover.svg +4 -0
  53. subtitld/graphics/dubbing_container_collapse_icon.svg +8 -0
  54. subtitld/graphics/dubbing_container_expand_icon.svg +4 -0
  55. subtitld/graphics/file.svg +4 -0
  56. subtitld/graphics/gap_add_icon.svg +4 -0
  57. subtitld/graphics/gap_remove_icon.svg +4 -0
  58. subtitld/graphics/grid_frames_icon.svg +4 -0
  59. subtitld/graphics/grid_frames_icon_checked.svg +4 -0
  60. subtitld/graphics/grid_frames_icon_disabled.svg +4 -0
  61. subtitld/graphics/grid_scenes_icon.svg +4 -0
  62. subtitld/graphics/grid_scenes_icon_checked.svg +4 -0
  63. subtitld/graphics/grid_scenes_icon_disabled.svg +4 -0
  64. subtitld/graphics/grid_seconds_icon.svg +4 -0
  65. subtitld/graphics/grid_seconds_icon_checked.svg +4 -0
  66. subtitld/graphics/grid_seconds_icon_disabled.svg +4 -0
  67. subtitld/graphics/last_end_to_current_position_icon.svg +4 -0
  68. subtitld/graphics/last_start_last_end_to_current_position_button.svg +9 -0
  69. subtitld/graphics/last_start_to_current_position_icon.svg +4 -0
  70. subtitld/graphics/left_panel_autosave.svg +4 -0
  71. subtitld/graphics/left_panel_dubbing.svg +4 -0
  72. subtitld/graphics/left_panel_export.svg +4 -0
  73. subtitld/graphics/left_panel_global.svg +4 -0
  74. subtitld/graphics/left_panel_import.svg +4 -0
  75. subtitld/graphics/left_panel_interface.svg +4 -0
  76. subtitld/graphics/left_panel_keyboard.svg +4 -0
  77. subtitld/graphics/left_panel_metadata.svg +4 -0
  78. subtitld/graphics/left_panel_navigation_background.svg +11 -0
  79. subtitld/graphics/left_panel_qualitycheck.svg +4 -0
  80. subtitld/graphics/left_panel_speakers.svg +4 -0
  81. subtitld/graphics/left_panel_subtitles.svg +1 -0
  82. subtitld/graphics/left_panel_transcription.svg +4 -0
  83. subtitld/graphics/left_panel_translation.svg +4 -0
  84. subtitld/graphics/merge_back_selected_subtitle_icon.svg +4 -0
  85. subtitld/graphics/merge_next_selected_subtitle_icon.svg +4 -0
  86. subtitld/graphics/move_backward_subtitle.svg +4 -0
  87. subtitld/graphics/move_end_back_subtitle.svg +4 -0
  88. subtitld/graphics/move_end_forward_subtitle.svg +4 -0
  89. subtitld/graphics/move_forward_subtitle.svg +4 -0
  90. subtitld/graphics/move_start_back_subtitle.svg +4 -0
  91. subtitld/graphics/move_start_forward_subtitle.svg +4 -0
  92. subtitld/graphics/music_voice_separation_music_icon.svg +4 -0
  93. subtitld/graphics/music_voice_separation_music_icon_disabled.svg +4 -0
  94. subtitld/graphics/music_voice_separation_voice_icon.svg +4 -0
  95. subtitld/graphics/music_voice_separation_voice_icon_disabled.svg +4 -0
  96. subtitld/graphics/new_line_icon.svg +1 -0
  97. subtitld/graphics/next_end_to_current_position_icon.svg +4 -0
  98. subtitld/graphics/next_start_next_end_to_current_position_button.svg +4 -0
  99. subtitld/graphics/next_start_to_current_position_icon.svg +4 -0
  100. subtitld/graphics/pause_icon.svg +12 -0
  101. subtitld/graphics/play_from_last_start_icon.svg +5 -0
  102. subtitld/graphics/play_from_next_start_icon.svg +7 -0
  103. subtitld/graphics/play_icon.svg +12 -0
  104. subtitld/graphics/play_icon_hover.svg +12 -0
  105. subtitld/graphics/play_icon_pressed.svg +12 -0
  106. subtitld/graphics/playback_repeat.svg +4 -0
  107. subtitld/graphics/playback_speed.svg +6 -0
  108. subtitld/graphics/playbackspeed_border.svg +5 -0
  109. subtitld/graphics/playbackspeed_border_checked.svg +5 -0
  110. subtitld/graphics/playbackspeed_border_hover.svg +5 -0
  111. subtitld/graphics/playercontrols_button_first.svg +5 -0
  112. subtitld/graphics/playercontrols_button_first_hover.svg +6 -0
  113. subtitld/graphics/playercontrols_button_first_pressed.svg +6 -0
  114. subtitld/graphics/playercontrols_button_last.svg +6 -0
  115. subtitld/graphics/playercontrols_button_last_hover.svg +6 -0
  116. subtitld/graphics/playercontrols_button_last_pressed.svg +6 -0
  117. subtitld/graphics/playercontrols_widget_center_bottom_line.svg +13 -0
  118. subtitld/graphics/playercontrols_widget_center_top_line.svg +17 -0
  119. subtitld/graphics/plus_icon.svg +4 -0
  120. subtitld/graphics/record_icon.svg +8 -0
  121. subtitld/graphics/record_icon_pressed.svg +5 -0
  122. subtitld/graphics/remove_selected_subtitle_icon.svg +6 -0
  123. subtitld/graphics/repeat_playback_border.svg +5 -0
  124. subtitld/graphics/repeat_playback_border_checked.svg +5 -0
  125. subtitld/graphics/repeat_playback_border_hover.svg +5 -0
  126. subtitld/graphics/save.svg +4 -0
  127. subtitld/graphics/send_text_to_last_subtitle_and_slice_button.svg +8 -0
  128. subtitld/graphics/send_text_to_last_subtitle_icon.svg +8 -0
  129. subtitld/graphics/send_text_to_next_subtitle_and_slice_button.svg +8 -0
  130. subtitld/graphics/send_text_to_next_subtitle_icon.svg +8 -0
  131. subtitld/graphics/slice_selected_subtitle_icon.svg +4 -0
  132. subtitld/graphics/snap_grid_icon.svg +4 -0
  133. subtitld/graphics/snap_grid_icon_checked.svg +4 -0
  134. subtitld/graphics/snap_grid_icon_disabled.svg +4 -0
  135. subtitld/graphics/snap_limits_icon.svg +4 -0
  136. subtitld/graphics/snap_limits_icon_checked.svg +4 -0
  137. subtitld/graphics/snap_limits_icon_disabled.svg +4 -0
  138. subtitld/graphics/snap_move_next.svg +4 -0
  139. subtitld/graphics/snap_move_next_checked.svg +4 -0
  140. subtitld/graphics/snap_move_next_disabled.svg +4 -0
  141. subtitld/graphics/snap_moving_icon.svg +4 -0
  142. subtitld/graphics/snap_moving_icon_checked.svg +4 -0
  143. subtitld/graphics/snap_moving_icon_disabled.svg +4 -0
  144. subtitld/graphics/speaker_list_item_change_color_icon.svg +4 -0
  145. subtitld/graphics/speaker_list_item_change_color_icon_hover.svg +4 -0
  146. subtitld/graphics/speaker_list_item_change_image_icon.svg +4 -0
  147. subtitld/graphics/speaker_list_item_change_image_icon_hover.svg +4 -0
  148. subtitld/graphics/speaker_list_item_export_icon.svg +4 -0
  149. subtitld/graphics/speaker_list_item_export_icon_hover.svg +4 -0
  150. subtitld/graphics/speaker_list_item_remove_icon.svg +4 -0
  151. subtitld/graphics/speaker_list_item_remove_icon_hover.svg +4 -0
  152. subtitld/graphics/speaker_list_item_rename_icon.svg +4 -0
  153. subtitld/graphics/speaker_list_item_rename_icon_hover.svg +4 -0
  154. subtitld/graphics/spinbox_arrow_down.svg +4 -0
  155. subtitld/graphics/spinbox_arrow_up.svg +4 -0
  156. subtitld/graphics/start_screen_top_shadow.svg +23 -0
  157. subtitld/graphics/stop_icon.svg +6 -0
  158. subtitld/graphics/stop_icon_hover.svg +6 -0
  159. subtitld/graphics/stop_icon_pressed.svg +6 -0
  160. subtitld/graphics/stylesheet.qss +1838 -0
  161. subtitld/graphics/subtitld.ico +0 -0
  162. subtitld/graphics/subtitld.png +0 -0
  163. subtitld/graphics/subtitles_panel_simplelist_properties_duration_timing_lock_closed_icon.svg +4 -0
  164. subtitld/graphics/subtitles_panel_simplelist_properties_duration_timing_lock_open_icon.svg +4 -0
  165. subtitld/graphics/subtitles_panel_simplelist_properties_duration_timing_lock_open_icon_hover.svg +4 -0
  166. subtitld/graphics/timeline_bottom_controls_background.svg +25 -0
  167. subtitld/graphics/timeline_cursor_back_frame.svg +4 -0
  168. subtitld/graphics/timeline_cursor_back_frame_hover.svg +4 -0
  169. subtitld/graphics/timeline_cursor_next_frame.svg +4 -0
  170. subtitld/graphics/timeline_cursor_next_frame_hover.svg +4 -0
  171. subtitld/graphics/timeline_show_speaker_color.svg +5 -0
  172. subtitld/graphics/timeline_show_speaker_color_checked.svg +5 -0
  173. subtitld/graphics/timeline_show_speaker_in_tracks.svg +4 -0
  174. subtitld/graphics/timeline_show_speaker_in_tracks_checked.svg +4 -0
  175. subtitld/graphics/timelinescrolling_follow_icon.svg +4 -0
  176. subtitld/graphics/timelinescrolling_follow_icon_checked.svg +4 -0
  177. subtitld/graphics/timelinescrolling_none_icon.svg +6 -0
  178. subtitld/graphics/timelinescrolling_none_icon_checked.svg +6 -0
  179. subtitld/graphics/timelinescrolling_page_icon.svg +4 -0
  180. subtitld/graphics/timelinescrolling_page_icon_checked.svg +4 -0
  181. subtitld/graphics/titleBar_left_container_border.svg +113 -0
  182. subtitld/graphics/unknown_speaker.svg +5 -0
  183. subtitld/graphics/vosk_transcription_download_model_icon.svg +4 -0
  184. subtitld/graphics/vosk_transcription_update_model_icon.svg +4 -0
  185. subtitld/graphics/word_count_icon.svg +1 -0
  186. subtitld/graphics/wpm_icon.svg +1 -0
  187. subtitld/graphics/zoom_in_icon.svg +4 -0
  188. subtitld/graphics/zoom_in_icon_disabled.svg +4 -0
  189. subtitld/graphics/zoom_out_icon.svg +4 -0
  190. subtitld/graphics/zoom_out_icon_disabled.svg +4 -0
  191. subtitld/interface/__init__.py +0 -0
  192. subtitld/interface/actionmanager.py +18 -0
  193. subtitld/interface/bottom_panel.py +43 -0
  194. subtitld/interface/left_panel.py +144 -0
  195. subtitld/interface/left_panel_autosave.py +149 -0
  196. subtitld/interface/left_panel_dubbing.py +469 -0
  197. subtitld/interface/left_panel_export.py +755 -0
  198. subtitld/interface/left_panel_global.py +358 -0
  199. subtitld/interface/left_panel_import.py +82 -0
  200. subtitld/interface/left_panel_interface.py +616 -0
  201. subtitld/interface/left_panel_keyboard.py +261 -0
  202. subtitld/interface/left_panel_metadata.py +74 -0
  203. subtitld/interface/left_panel_qualitycheck.py +262 -0
  204. subtitld/interface/left_panel_speakers.py +737 -0
  205. subtitld/interface/left_panel_subtitleslist.py +791 -0
  206. subtitld/interface/left_panel_transcription.py +763 -0
  207. subtitld/interface/left_panel_translation.py +294 -0
  208. subtitld/interface/playercontrols.py +2348 -0
  209. subtitld/interface/preview_panel.py +407 -0
  210. subtitld/interface/productionscreen.py +65 -0
  211. subtitld/interface/startscreen.py +273 -0
  212. subtitld/interface/timeline.py +1308 -0
  213. subtitld/interface/top_bar.py +329 -0
  214. subtitld/interface/translation.py +68 -0
  215. subtitld/interface/utils.py +286 -0
  216. subtitld/locale/en_US.json +301 -0
  217. subtitld/locale/pt_BR.json +269 -0
  218. subtitld/modules/__init__.py +0 -0
  219. subtitld/modules/audioengine.py +606 -0
  220. subtitld/modules/bounce.py +229 -0
  221. subtitld/modules/config.py +84 -0
  222. subtitld/modules/file_io.py +870 -0
  223. subtitld/modules/history.py +31 -0
  224. subtitld/modules/quality_check.py +53 -0
  225. subtitld/modules/session.py +270 -0
  226. subtitld/modules/shortcuts.py +84 -0
  227. subtitld/modules/subtitles.py +413 -0
  228. subtitld/modules/timecode.py +496 -0
  229. subtitld/modules/usf.py +366 -0
  230. subtitld/modules/utils.py +79 -0
  231. subtitld/modules/waveform.py +53 -0
  232. subtitld-0.0.0.dev0.dist-info/METADATA +97 -0
  233. subtitld-0.0.0.dev0.dist-info/RECORD +237 -0
  234. subtitld-0.0.0.dev0.dist-info/WHEEL +5 -0
  235. subtitld-0.0.0.dev0.dist-info/entry_points.txt +2 -0
  236. subtitld-0.0.0.dev0.dist-info/licenses/LICENSE +674 -0
  237. subtitld-0.0.0.dev0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,261 @@
1
+ from PySide6.QtWidgets import QVBoxLayout, QWidget, QLabel, QScrollArea, QHBoxLayout, QPushButton, QTableWidget, QTableWidgetItem, QHeaderView, QAbstractItemView, QLineEdit, QSizePolicy, QGridLayout
2
+ from PySide6.QtCore import Qt, QEvent
3
+ from PySide6.QtGui import QKeySequence
4
+
5
+ from subtitld.interface import left_panel
6
+ from subtitld.interface.translation import _
7
+ from subtitld.modules import session
8
+ from subtitld.modules import shortcuts
9
+
10
+
11
+
12
+ class global_panel_keyboardshortcut_qlineedit(QLineEdit):
13
+ """Class to reimplement QLineEdit in order to get shorkeys selection"""
14
+ def __init__(widget, *args):
15
+ super(global_panel_keyboardshortcut_qlineedit, widget).__init__(*args)
16
+ widget.setLayout(QHBoxLayout())
17
+ widget.setAlignment(Qt.AlignCenter)
18
+ widget.setReadOnly(True)
19
+ widget.setSizePolicy(QSizePolicy(QSizePolicy.MinimumExpanding, QSizePolicy.Preferred))
20
+ widget.layout().setContentsMargins(0, 0, 0, 0)
21
+ widget.layout().setSpacing(5)
22
+ widget.command = ''
23
+
24
+ def update_shortcuts(widget):
25
+ while widget.layout().count():
26
+ child = widget.layout().takeAt(0).widget()
27
+ if child:
28
+ child.setParent(None)
29
+ child.deleteLater()
30
+
31
+ command_string = widget.command
32
+
33
+ widget.layout().addStretch()
34
+
35
+ if not command_string:
36
+ qlabel = QLabel(_('global_panel_keyboardshortcuts.press_shorkey_combination') if widget.isEnabled() else _('global_panel_keyboardshortcuts.no_shortkey'))
37
+ qlabel.setProperty('class', 'units_label')
38
+ qlabel.setAlignment(Qt.AlignCenter)
39
+ widget.layout().addWidget(qlabel, 0, Qt.AlignCenter | Qt.AlignBottom)
40
+ else:
41
+ if command_string == '+':
42
+ command_string = '+'
43
+ for key in command_string.replace('++', '++').split('+'):
44
+ if key:
45
+ button = QPushButton(key)
46
+ button.setProperty('class', 'keyboard_key')
47
+ widget.layout().addWidget(button, 0, Qt.AlignCenter | Qt.AlignBottom)
48
+
49
+ widget.layout().addStretch()
50
+
51
+ def keyPressEvent(widget, event):
52
+ widget.setReadOnly(False)
53
+ if event.type() == QEvent.KeyPress:
54
+ key = event.key()
55
+
56
+ if key == Qt.Key_unknown:
57
+ return
58
+
59
+ if key in [Qt.Key_Control, Qt.Key_Shift, Qt.Key_Alt, Qt.Key_Meta]:
60
+ return
61
+
62
+ modifiers = event.modifiers()
63
+ # keyText = event.text()
64
+
65
+ if modifiers & Qt.ShiftModifier:
66
+ key += Qt.SHIFT
67
+ if modifiers & Qt.ControlModifier:
68
+ key += Qt.CTRL
69
+ if modifiers & Qt.AltModifier:
70
+ key += Qt.ALT
71
+ if modifiers & Qt.MetaModifier:
72
+ key += Qt.META
73
+ widget.command = QKeySequence(key).toString()
74
+ widget.update_shortcuts()
75
+
76
+ widget.setReadOnly(True)
77
+
78
+
79
+
80
+ def load(self):
81
+ tab_name = 'keyboard'
82
+
83
+ left_panel_keyboard_panel = left_panel.left_panel(
84
+ parent=self,
85
+ tab_name=tab_name,
86
+ update_callback=update,
87
+ translate_callback=translate
88
+ )
89
+
90
+ left_panel_keyboard_panel_scroll = QScrollArea()
91
+ left_panel_keyboard_panel_scroll.setObjectName('left_panel_keyboard_panel_scroll')
92
+ left_panel_keyboard_panel_scroll.setWidgetResizable(True)
93
+ left_panel_keyboard_panel_scroll.setFrameShape(QScrollArea.NoFrame)
94
+ left_panel_keyboard_panel.layout().addWidget(left_panel_keyboard_panel_scroll)
95
+
96
+ self.left_panel_keyboard_panel_widget = QWidget()
97
+ self.left_panel_keyboard_panel_widget.setProperty('class', 'transparent_panel')
98
+ self.left_panel_keyboard_panel_widget.setObjectName('left_panel_keyboard_panel_widget')
99
+ self.left_panel_keyboard_panel_widget.setLayout(QVBoxLayout())
100
+ self.left_panel_keyboard_panel_widget.layout().setContentsMargins(0, 0, 0, 0)
101
+ left_panel_keyboard_panel_scroll.setWidget(self.left_panel_keyboard_panel_widget)
102
+
103
+ self.global_panel_tabwidget_shortkeys_table = QTableWidget()
104
+ self.global_panel_tabwidget_shortkeys_table.setObjectName('global_panel_tabwidget_shortkeys_table')
105
+ self.global_panel_tabwidget_shortkeys_table.setColumnCount(3)
106
+ self.global_panel_tabwidget_shortkeys_table.verticalHeader().setVisible(False)
107
+ self.global_panel_tabwidget_shortkeys_table.setColumnHidden(1, True)
108
+ self.global_panel_tabwidget_shortkeys_table.setEditTriggers(QTableWidget.EditTrigger.NoEditTriggers)
109
+ self.global_panel_tabwidget_shortkeys_table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
110
+ self.global_panel_tabwidget_shortkeys_table.horizontalHeader().setHighlightSections(False)
111
+ self.global_panel_tabwidget_shortkeys_table.horizontalHeader().setDefaultAlignment(Qt.AlignLeft | Qt.AlignVCenter)
112
+ self.global_panel_tabwidget_shortkeys_table.setShowGrid(False)
113
+ self.global_panel_tabwidget_shortkeys_table.setSelectionBehavior(QAbstractItemView.SelectRows)
114
+ self.global_panel_tabwidget_shortkeys_table.clicked.connect(lambda: global_panel_tabwidget_shortkeys_table_clicked(self))
115
+ self.left_panel_keyboard_panel_widget.layout().addWidget(self.global_panel_tabwidget_shortkeys_table)
116
+
117
+ self.global_panel_tabwidget_shortkeys_details = QVBoxLayout()
118
+
119
+ self.global_panel_tabwidget_shortkeys_details_warning = QLabel()
120
+ self.global_panel_tabwidget_shortkeys_details_warning.setProperty('class', 'units_label')
121
+ self.global_panel_tabwidget_shortkeys_details.addWidget(self.global_panel_tabwidget_shortkeys_details_warning, 0, Qt.AlignCenter)
122
+
123
+ self.global_panel_keyboardshortcut_qlineedit = global_panel_keyboardshortcut_qlineedit()
124
+ self.global_panel_keyboardshortcut_qlineedit.setObjectName('global_panel_keyboardshortcut_qlineedit')
125
+ self.global_panel_tabwidget_shortkeys_details.addWidget(self.global_panel_keyboardshortcut_qlineedit)
126
+
127
+ self.global_panel_keyboardshortcut_buttons = QWidget()
128
+ self.global_panel_keyboardshortcut_buttons.setLayout(QHBoxLayout())
129
+ self.global_panel_keyboardshortcut_buttons.layout().setContentsMargins(0, 10, 0, 0)
130
+ self.global_panel_keyboardshortcut_buttons.layout().setSpacing(5)
131
+
132
+ self.global_panel_keyboardshortcut_change_button = QPushButton()
133
+ self.global_panel_keyboardshortcut_change_button.setProperty('class', 'subbutton2_dark')
134
+ self.global_panel_keyboardshortcut_change_button.clicked.connect(lambda: global_panel_keyboardshortcut_change_button_clicked(self))
135
+ self.global_panel_keyboardshortcut_buttons.layout().addWidget(self.global_panel_keyboardshortcut_change_button)
136
+
137
+ self.global_panel_keyboardshortcut_confirm_button = QPushButton()
138
+ self.global_panel_keyboardshortcut_confirm_button.setProperty('class', 'subbutton2_dark')
139
+ self.global_panel_keyboardshortcut_confirm_button.clicked.connect(lambda: global_panel_keyboardshortcut_confirm_button_clicked(self))
140
+ self.global_panel_keyboardshortcut_buttons.layout().addWidget(self.global_panel_keyboardshortcut_confirm_button)
141
+
142
+ self.global_panel_keyboardshortcut_cancel_button = QPushButton()
143
+ self.global_panel_keyboardshortcut_cancel_button.setProperty('class', 'subbutton2_dark')
144
+ self.global_panel_keyboardshortcut_cancel_button.clicked.connect(lambda: global_panel_keyboardshortcut_cancel_button_clicked(self))
145
+ self.global_panel_keyboardshortcut_buttons.layout().addWidget(self.global_panel_keyboardshortcut_cancel_button)
146
+
147
+ self.global_panel_keyboardshortcut_clear_button = QPushButton()
148
+ self.global_panel_keyboardshortcut_clear_button.setProperty('class', 'subbutton2_dark')
149
+ self.global_panel_keyboardshortcut_clear_button.clicked.connect(lambda: global_panel_keyboardshortcut_clear_button_clicked(self))
150
+ self.global_panel_keyboardshortcut_buttons.layout().addWidget(self.global_panel_keyboardshortcut_clear_button)
151
+
152
+ self.global_panel_tabwidget_shortkeys_details.addWidget(self.global_panel_keyboardshortcut_buttons, 0, Qt.AlignCenter | Qt.AlignTop)
153
+
154
+ self.left_panel_keyboard_panel_widget.layout().addLayout(self.global_panel_tabwidget_shortkeys_details)
155
+
156
+
157
+ update(self)
158
+
159
+
160
+ def show(self):
161
+ update(self)
162
+
163
+ def update(self):
164
+ global_panel_tabwidget_shortkeys_table_update(self)
165
+
166
+
167
+ def global_panel_tabwidget_shortkeys_table_update(self):
168
+ """Function to update subtitlesvideo panel shorkeys table"""
169
+ self.global_panel_tabwidget_shortkeys_table.clear()
170
+ self.global_panel_tabwidget_shortkeys_table.setRowCount(len(shortcuts.shortcuts_dict))
171
+ self.global_panel_tabwidget_shortkeys_table.setHorizontalHeaderLabels([_('global_panel_keyboardshortcuts.command'), 'internal_command', _('global_panel_keyboardshortcuts.shortkeys')])
172
+
173
+ i = 0
174
+ for item in shortcuts.shortcuts_dict:
175
+ item_name = QTableWidgetItem(shortcuts.shortcuts_dict[item])
176
+ self.global_panel_tabwidget_shortkeys_table.setItem(i, 0, item_name)
177
+ item_name = QTableWidgetItem(item)
178
+ self.global_panel_tabwidget_shortkeys_table.setItem(i, 1, item_name)
179
+ item_name = QTableWidgetItem(session.CONFIG['shortcuts'].get(item, shortcuts.default_shortcuts_dict.get(item, ['']))[0])
180
+ self.global_panel_tabwidget_shortkeys_table.setItem(i, 2, item_name)
181
+ i += 1
182
+ update_global_panel_tabwidget_shortkeys_details(self)
183
+
184
+
185
+ def global_panel_tabwidget_shortkeys_table_clicked(self):
186
+ update_global_panel_tabwidget_shortkeys_details(self)
187
+ global_panel_keyboardshortcut_cancel_button_clicked(self)
188
+
189
+
190
+ def update_global_panel_tabwidget_shortkeys_details(self):
191
+ self.global_panel_tabwidget_shortkeys_details_warning.setVisible(not bool(self.global_panel_tabwidget_shortkeys_table.currentItem()))
192
+ self.global_panel_keyboardshortcut_qlineedit.setVisible(bool(self.global_panel_tabwidget_shortkeys_table.currentItem()))
193
+ self.global_panel_keyboardshortcut_buttons.setVisible(bool(self.global_panel_tabwidget_shortkeys_table.currentItem()))
194
+
195
+ if self.global_panel_tabwidget_shortkeys_table.currentItem():
196
+ self.global_panel_keyboardshortcut_qlineedit.command = self.global_panel_tabwidget_shortkeys_table.item(self.global_panel_tabwidget_shortkeys_table.currentRow(), 2).text()
197
+ self.global_panel_keyboardshortcut_qlineedit.update_shortcuts()
198
+
199
+
200
+ def global_panel_keyboardshortcut_change_button_clicked(self):
201
+ self.global_panel_keyboardshortcut_confirm_button.setVisible(True)
202
+ self.global_panel_keyboardshortcut_cancel_button.setVisible(True)
203
+ self.global_panel_keyboardshortcut_change_button.setVisible(False)
204
+ self.global_panel_keyboardshortcut_clear_button.setVisible(False)
205
+
206
+ self.global_panel_keyboardshortcut_qlineedit.setEnabled(True)
207
+ self.global_panel_keyboardshortcut_qlineedit.command = ''
208
+ self.global_panel_keyboardshortcut_qlineedit.update_shortcuts()
209
+ shortcuts.disable_actions(self)
210
+ self.global_panel_keyboardshortcut_qlineedit.setFocus()
211
+
212
+
213
+ def global_panel_keyboardshortcut_confirm_button_clicked(self):
214
+ command = self.global_panel_tabwidget_shortkeys_table.item(self.global_panel_tabwidget_shortkeys_table.currentRow(), 1).text()
215
+ session.CONFIG['shortcuts'][command] = [self.global_panel_keyboardshortcut_qlineedit.command]
216
+
217
+ global_panel_keyboardshortcut_cancel_button_clicked(self)
218
+
219
+ selected_row = self.global_panel_tabwidget_shortkeys_table.currentRow()
220
+ global_panel_tabwidget_shortkeys_table_update(self)
221
+ self.global_panel_tabwidget_shortkeys_table.setCurrentCell(selected_row, 0)
222
+ global_panel_tabwidget_shortkeys_table_clicked(self)
223
+
224
+ shortcuts.enable_actions(self)
225
+
226
+
227
+ def global_panel_keyboardshortcut_clear_button_clicked(self):
228
+ command = self.global_panel_tabwidget_shortkeys_table.item(self.global_panel_tabwidget_shortkeys_table.currentRow(), 1).text()
229
+ session.CONFIG['shortcuts'][command] = ['']
230
+
231
+ global_panel_keyboardshortcut_cancel_button_clicked(self)
232
+
233
+ selected_row = self.global_panel_tabwidget_shortkeys_table.currentRow()
234
+ global_panel_tabwidget_shortkeys_table_update(self)
235
+ self.global_panel_tabwidget_shortkeys_table.setCurrentCell(selected_row, 0)
236
+ global_panel_tabwidget_shortkeys_table_clicked(self)
237
+
238
+
239
+ def global_panel_keyboardshortcut_cancel_button_clicked(self):
240
+ self.global_panel_keyboardshortcut_confirm_button.setVisible(False)
241
+ self.global_panel_keyboardshortcut_cancel_button.setVisible(False)
242
+ self.global_panel_keyboardshortcut_change_button.setVisible(True)
243
+ self.global_panel_keyboardshortcut_clear_button.setVisible(True)
244
+ self.global_panel_keyboardshortcut_qlineedit.setEnabled(False)
245
+
246
+ update_global_panel_tabwidget_shortkeys_details(self)
247
+
248
+ def hide(self):
249
+ pass
250
+
251
+
252
+ def translate(self):
253
+ self.global_panel_keyboardshortcut_change_button.setText(_('keyboard_panel.change'))
254
+ self.global_panel_keyboardshortcut_confirm_button.setText(_('keyboard_panel.confirm'))
255
+ self.global_panel_keyboardshortcut_cancel_button.setText(_('keyboard_panel.cancel'))
256
+ self.global_panel_keyboardshortcut_clear_button.setText(_('keyboard_panel.clear'))
257
+ self.global_panel_tabwidget_shortkeys_details_warning.setText(_('keyboard_panel.select_a_command'))
258
+
259
+
260
+
261
+
@@ -0,0 +1,74 @@
1
+ from PySide6.QtWidgets import QVBoxLayout, QWidget, QLabel, QScrollArea, QStackedWidget, QPushButton
2
+ from PySide6.QtCore import Qt
3
+ from PySide6.QtMultimedia import QMediaMetaData, QtVideo
4
+
5
+ from subtitld.interface import utils
6
+ from subtitld.interface import left_panel
7
+ from subtitld.interface.translation import _
8
+
9
+
10
+ def load(self):
11
+ tab_name = 'metadata'
12
+
13
+ left_panel_metadata_panel = left_panel.left_panel(
14
+ parent=self,
15
+ tab_name=tab_name,
16
+ update_callback=update,
17
+ translate_callback=translate
18
+ )
19
+
20
+ left_panel_metadata_panel_scroll = QScrollArea()
21
+ left_panel_metadata_panel_scroll.setObjectName('left_panel_metadata_panel_scroll')
22
+ left_panel_metadata_panel_scroll.setWidgetResizable(True)
23
+ left_panel_metadata_panel_scroll.setFrameShape(QScrollArea.NoFrame)
24
+ left_panel_metadata_panel.layout().addWidget(left_panel_metadata_panel_scroll)
25
+
26
+ self.left_panel_metadata_panel_info = QLabel()
27
+ self.left_panel_metadata_panel_info.setObjectName('left_panel_metadata_panel_info')
28
+ self.left_panel_metadata_panel_info.setWordWrap(True)
29
+ self.left_panel_metadata_panel_info.setAlignment(Qt.AlignTop | Qt.AlignLeft)
30
+ left_panel_metadata_panel_scroll.setWidget(self.left_panel_metadata_panel_info)
31
+
32
+
33
+ def show(self):
34
+ update(self)
35
+
36
+ def update(self):
37
+ final_text = f'<small><b>TITLE</b></small><br>{self.preview_panel_player._media_player.metaData().value(QMediaMetaData.Title)}<br><br>'
38
+ final_text += f'<small><b>AUTHOR</b></small><br>{self.preview_panel_player._media_player.metaData().value(QMediaMetaData.Author)}<br><br>'
39
+ final_text += f'<small><b>COMMENT</b></small><br>{self.preview_panel_player._media_player.metaData().value(QMediaMetaData.Comment)}<br><br>'
40
+ description = (self.preview_panel_player._media_player.metaData().value(QMediaMetaData.Description) or '').replace('\n', '<br>')
41
+ final_text += f"<small><b>DESCRIPTION</b></small><br>{description}<br><br>"
42
+ final_text += f'<small><b>GENRE</b></small><br>{self.preview_panel_player._media_player.metaData().value(QMediaMetaData.Genre)}<br><br>'
43
+ final_text += f'<small><b>DATE</b></small><br>{self.preview_panel_player._media_player.metaData().value(QMediaMetaData.Date)}<br><br>'
44
+ final_text += f'<small><b>LANGUAGE</b></small><br>{self.preview_panel_player._media_player.metaData().value(QMediaMetaData.Language)}<br><br>'
45
+ final_text += f'<small><b>PUBLISHER</b></small><br>{self.preview_panel_player._media_player.metaData().value(QMediaMetaData.Publisher)}<br><br>'
46
+ final_text += f'<small><b>COPYRIGHT</b></small><br>{self.preview_panel_player._media_player.metaData().value(QMediaMetaData.Copyright)}<br><br>'
47
+ final_text += f'<small><b>URL</b></small><br>{self.preview_panel_player._media_player.metaData().value(QMediaMetaData.Url)}<br><br>'
48
+ final_text += f'<small><b>DURATION</b></small><br>{self.preview_panel_player._media_player.metaData().value(QMediaMetaData.Duration)}<br><br>'
49
+ final_text += f'<small><b>MEDIA TYPE</b></small><br>{self.preview_panel_player._media_player.metaData().value(QMediaMetaData.MediaType)}<br><br>'
50
+ # final_text += f'<small><b>FILE FORMAT</b></small><br>{self.preview_panel_player._media_player.metaData().value(QMediaMetaData.FileFormat)}<br><br>'
51
+ final_text += f'<small><b>AUDIO BITRATE</b></small><br>{self.preview_panel_player._media_player.metaData().value(QMediaMetaData.AudioBitRate)}<br><br>'
52
+ # final_text += f'<small><b>AUDIO CODEC</b></small><br>{self.preview_panel_player._media_player.metaData().value(QMediaMetaData.AudioCodec)}<br><br>'
53
+ final_text += f'<small><b>VIDEO BITRATE</b></small><br>{self.preview_panel_player._media_player.metaData().value(QMediaMetaData.VideoBitRate)}<br><br>'
54
+ # final_text += f'<small><b>VIDEO CODEC</b></small><br>{self.preview_panel_player._media_player.metaData().value(QMediaMetaData.VideoCodec)}<br><br>'
55
+ final_text += f'<small><b>VIDEO FRAME RATE</b></small><br>{self.preview_panel_player._media_player.metaData().value(QMediaMetaData.VideoFrameRate)}<br><br>'
56
+ final_text += f'<small><b>ALBUM TITLE</b></small><br>{self.preview_panel_player._media_player.metaData().value(QMediaMetaData.AlbumTitle)}<br><br>'
57
+ final_text += f'<small><b>ALBUM ARTIST</b></small><br>{self.preview_panel_player._media_player.metaData().value(QMediaMetaData.AlbumArtist)}<br><br>'
58
+ final_text += f'<small><b>CONTRIBUTING ARTIST</b></small><br>{self.preview_panel_player._media_player.metaData().value(QMediaMetaData.ContributingArtist)}<br><br>'
59
+ final_text += f'<small><b>TRACK NUMBER</b></small><br>{self.preview_panel_player._media_player.metaData().value(QMediaMetaData.TrackNumber)}<br><br>'
60
+ final_text += f'<small><b>COMPOSER</b></small><br>{self.preview_panel_player._media_player.metaData().value(QMediaMetaData.Composer)}<br><br>'
61
+ final_text += f'<small><b>LEAD PERFORMER</b></small><br>{self.preview_panel_player._media_player.metaData().value(QMediaMetaData.LeadPerformer)}<br><br>'
62
+ final_text += f'<small><b>THUMBNAIL IMAGE</b></small><br>{self.preview_panel_player._media_player.metaData().value(QMediaMetaData.ThumbnailImage)}<br><br>'
63
+ final_text += f'<small><b>COVER ART IMAGE</b></small><br>{self.preview_panel_player._media_player.metaData().value(QMediaMetaData.CoverArtImage)}<br><br>'
64
+ orientation = 'Clockwise 90' if self.preview_panel_player._media_player.metaData().value(QMediaMetaData.Orientation) == QtVideo.Rotation.Clockwise90 else 'Clockwise 270' if self.preview_panel_player._media_player.metaData().value(QMediaMetaData.Orientation) == QtVideo.Rotation.Clockwise270 else 'Clockwise 180' if self.preview_panel_player._media_player.metaData().value(QMediaMetaData.Orientation) == QtVideo.Rotation.Clockwise180 else 'Unknown'
65
+ final_text += f'<small><b>ORIENTATION</b></small><br>{orientation}<br><br>'
66
+ final_text += f'<small><b>RESOLUTION</b></small><br>{self.preview_panel_player._media_player.metaData().value(QMediaMetaData.Resolution)}<br><br>'
67
+ final_text += f'<small><b>HAS HDR CONTENT</b></small><br>{self.preview_panel_player._media_player.metaData().value(QMediaMetaData.HasHdrContent)}<br><br>'
68
+ self.left_panel_metadata_panel_info.setText(final_text)
69
+
70
+ def hide(self):
71
+ pass
72
+
73
+ def translate(self):
74
+ pass
@@ -0,0 +1,262 @@
1
+ from PySide6.QtWidgets import QVBoxLayout, QWidget, QLabel, QScrollArea, QCheckBox, QGroupBox, QHBoxLayout, QSpinBox, QDoubleSpinBox, QSlider
2
+ from PySide6.QtCore import Qt
3
+
4
+ from subtitld.interface import left_panel
5
+ from subtitld.interface.translation import _
6
+ from subtitld.modules import session
7
+
8
+
9
+ def load(self):
10
+ tab_name = 'qualitycheck'
11
+
12
+ left_panel_qualitycheck_panel = left_panel.left_panel(
13
+ parent=self,
14
+ tab_name=tab_name,
15
+ update_callback=update,
16
+ translate_callback=translate
17
+ )
18
+
19
+ left_panel_qualitycheck_panel_scroll = QScrollArea()
20
+ left_panel_qualitycheck_panel_scroll.setObjectName('left_panel_qualitycheck_panel_scroll')
21
+ left_panel_qualitycheck_panel_scroll.setWidgetResizable(True)
22
+ left_panel_qualitycheck_panel_scroll.setFrameShape(QScrollArea.NoFrame)
23
+ left_panel_qualitycheck_panel.layout().addWidget(left_panel_qualitycheck_panel_scroll)
24
+
25
+ self.left_panel_qualitycheck_panel_widget = QWidget()
26
+ self.left_panel_qualitycheck_panel_widget.setProperty('class', 'transparent_panel')
27
+ self.left_panel_qualitycheck_panel_widget.setObjectName('left_panel_qualitycheck_panel_widget')
28
+ self.left_panel_qualitycheck_panel_widget.setLayout(QVBoxLayout())
29
+ self.left_panel_qualitycheck_panel_widget.layout().setContentsMargins(0, 0, 0, 0)
30
+ left_panel_qualitycheck_panel_scroll.setWidget(self.left_panel_qualitycheck_panel_widget)
31
+
32
+ self.global_panel_tabwidget_show_statistics_checkbox = QCheckBox()
33
+ self.global_panel_tabwidget_show_statistics_checkbox.setChecked(False)
34
+ self.global_panel_tabwidget_show_statistics_checkbox.clicked.connect(lambda: save_quality_settings(self))
35
+ self.left_panel_qualitycheck_panel_widget.layout().addWidget(self.global_panel_tabwidget_show_statistics_checkbox)
36
+
37
+ self.global_panel_tabwidget_quality_enable_groupbox = QGroupBox()
38
+ self.global_panel_tabwidget_quality_enable_groupbox.setCheckable(True)
39
+ self.global_panel_tabwidget_quality_enable_groupbox.setLayout(QVBoxLayout())
40
+ self.global_panel_tabwidget_quality_enable_groupbox.clicked.connect(lambda: save_quality_settings(self))
41
+ self.global_panel_tabwidget_quality_enable_groupbox.layout().setContentsMargins(10, 10, 10, 10)
42
+ self.global_panel_tabwidget_quality_enable_groupbox.layout().setSpacing(20)
43
+
44
+ self.global_panel_tabwidget_quality_readingspeed_vbox = QVBoxLayout()
45
+ self.global_panel_tabwidget_quality_readingspeed_vbox.setContentsMargins(0, 0, 0, 0)
46
+ self.global_panel_tabwidget_quality_readingspeed_vbox.setSpacing(2)
47
+
48
+ self.global_panel_tabwidget_quality_readingspeed_label = QLabel()
49
+ self.global_panel_tabwidget_quality_readingspeed_label.setProperty('class', 'widget_label')
50
+ self.global_panel_tabwidget_quality_readingspeed_vbox.addWidget(self.global_panel_tabwidget_quality_readingspeed_label, 0, Qt.AlignLeft)
51
+
52
+ self.global_panel_tabwidget_quality_readingspeed_line = QHBoxLayout()
53
+ self.global_panel_tabwidget_quality_readingspeed_line.setContentsMargins(0, 0, 0, 0)
54
+ self.global_panel_tabwidget_quality_readingspeed_line.setSpacing(5)
55
+
56
+ self.global_panel_tabwidget_quality_readingspeed_cps = QSpinBox()
57
+ self.global_panel_tabwidget_quality_readingspeed_cps.setMinimum(0)
58
+ self.global_panel_tabwidget_quality_readingspeed_cps.setMaximum(999)
59
+ self.global_panel_tabwidget_quality_readingspeed_cps.setValue(21)
60
+ self.global_panel_tabwidget_quality_readingspeed_cps.editingFinished.connect(lambda: save_quality_settings(self))
61
+ self.global_panel_tabwidget_quality_readingspeed_line.addWidget(self.global_panel_tabwidget_quality_readingspeed_cps)
62
+
63
+ self.global_panel_tabwidget_quality_readingspeed_cps_label = QLabel()
64
+ self.global_panel_tabwidget_quality_readingspeed_cps_label.setProperty('class', 'units_label')
65
+ self.global_panel_tabwidget_quality_readingspeed_line.addWidget(self.global_panel_tabwidget_quality_readingspeed_cps_label, 0, Qt.AlignLeft)
66
+
67
+ self.global_panel_tabwidget_quality_readingspeed_wpm = QSpinBox()
68
+ self.global_panel_tabwidget_quality_readingspeed_wpm.setMinimum(0)
69
+ self.global_panel_tabwidget_quality_readingspeed_wpm.setMaximum(999)
70
+ self.global_panel_tabwidget_quality_readingspeed_wpm.setValue(140)
71
+ self.global_panel_tabwidget_quality_readingspeed_wpm.editingFinished.connect(lambda: save_quality_settings(self))
72
+ self.global_panel_tabwidget_quality_readingspeed_line.addWidget(self.global_panel_tabwidget_quality_readingspeed_wpm)
73
+
74
+ self.global_panel_tabwidget_quality_readingspeed_wpm_label = QLabel()
75
+ self.global_panel_tabwidget_quality_readingspeed_wpm_label.setProperty('class', 'units_label')
76
+ self.global_panel_tabwidget_quality_readingspeed_line.addWidget(self.global_panel_tabwidget_quality_readingspeed_wpm_label, 0, Qt.AlignLeft)
77
+
78
+ self.global_panel_tabwidget_quality_readingspeed_line.addStretch()
79
+
80
+ self.global_panel_tabwidget_quality_readingspeed_vbox.addLayout(self.global_panel_tabwidget_quality_readingspeed_line)
81
+
82
+ self.global_panel_tabwidget_quality_enable_groupbox.layout().addLayout(self.global_panel_tabwidget_quality_readingspeed_vbox)
83
+
84
+ self.global_panel_tabwidget_quality_duration_vbox = QVBoxLayout()
85
+ self.global_panel_tabwidget_quality_duration_vbox.setContentsMargins(0, 0, 0, 0)
86
+ self.global_panel_tabwidget_quality_duration_vbox.setSpacing(2)
87
+
88
+ self.global_panel_tabwidget_quality_duration_label = QLabel()
89
+ self.global_panel_tabwidget_quality_duration_label.setProperty('class', 'widget_label')
90
+ self.global_panel_tabwidget_quality_duration_vbox.addWidget(self.global_panel_tabwidget_quality_duration_label, 0, Qt.AlignLeft)
91
+
92
+ self.global_panel_tabwidget_quality_duration_line = QHBoxLayout()
93
+ self.global_panel_tabwidget_quality_duration_line.setContentsMargins(0, 0, 0, 0)
94
+ self.global_panel_tabwidget_quality_duration_line.setSpacing(5)
95
+
96
+ self.global_panel_tabwidget_quality_duration_minimum = QDoubleSpinBox()
97
+ self.global_panel_tabwidget_quality_duration_minimum.setMinimum(0.1)
98
+ self.global_panel_tabwidget_quality_duration_minimum.setMaximum(999.999)
99
+ self.global_panel_tabwidget_quality_duration_minimum.setValue(.7)
100
+ self.global_panel_tabwidget_quality_duration_minimum.editingFinished.connect(lambda: save_quality_settings(self))
101
+ self.global_panel_tabwidget_quality_duration_line.addWidget(self.global_panel_tabwidget_quality_duration_minimum)
102
+
103
+ self.global_panel_tabwidget_quality_duration_minimum_label = QLabel()
104
+ self.global_panel_tabwidget_quality_duration_minimum_label.setProperty('class', 'units_label')
105
+ self.global_panel_tabwidget_quality_duration_line.addWidget(self.global_panel_tabwidget_quality_duration_minimum_label)
106
+
107
+ self.global_panel_tabwidget_quality_duration_maximum = QDoubleSpinBox()
108
+ self.global_panel_tabwidget_quality_duration_maximum.setMinimum(0.2)
109
+ self.global_panel_tabwidget_quality_duration_maximum.setMaximum(999.999)
110
+ self.global_panel_tabwidget_quality_duration_maximum.setValue(7)
111
+ self.global_panel_tabwidget_quality_duration_maximum.editingFinished.connect(lambda: save_quality_settings(self))
112
+ self.global_panel_tabwidget_quality_duration_line.addWidget(self.global_panel_tabwidget_quality_duration_maximum)
113
+
114
+ self.global_panel_tabwidget_quality_duration_maximum_label = QLabel()
115
+ self.global_panel_tabwidget_quality_duration_maximum_label.setProperty('class', 'units_label')
116
+ self.global_panel_tabwidget_quality_duration_line.addWidget(self.global_panel_tabwidget_quality_duration_maximum_label)
117
+
118
+ self.global_panel_tabwidget_quality_duration_line.addStretch()
119
+
120
+ self.global_panel_tabwidget_quality_duration_vbox.addLayout(self.global_panel_tabwidget_quality_duration_line)
121
+
122
+ self.global_panel_tabwidget_quality_enable_groupbox.layout().addLayout(self.global_panel_tabwidget_quality_duration_vbox)
123
+
124
+ self.global_panel_tabwidget_quality_lines_vbox = QVBoxLayout()
125
+ self.global_panel_tabwidget_quality_lines_vbox.setContentsMargins(0, 0, 0, 0)
126
+ self.global_panel_tabwidget_quality_lines_vbox.setSpacing(2)
127
+
128
+ self.global_panel_tabwidget_quality_lines_label = QLabel()
129
+ self.global_panel_tabwidget_quality_lines_label.setProperty('class', 'widget_label')
130
+ self.global_panel_tabwidget_quality_lines_vbox.addWidget(self.global_panel_tabwidget_quality_lines_label, 0, Qt.AlignLeft)
131
+
132
+ self.global_panel_tabwidget_quality_lines_line = QHBoxLayout()
133
+ self.global_panel_tabwidget_quality_lines_line.setContentsMargins(0, 0, 0, 0)
134
+ self.global_panel_tabwidget_quality_lines_line.setSpacing(5)
135
+
136
+ self.global_panel_tabwidget_quality_lines_maximum = QSpinBox()
137
+ self.global_panel_tabwidget_quality_lines_maximum.setMinimum(1)
138
+ self.global_panel_tabwidget_quality_lines_maximum.setMaximum(10)
139
+ self.global_panel_tabwidget_quality_lines_maximum.setValue(2)
140
+ self.global_panel_tabwidget_quality_lines_maximum.editingFinished.connect(lambda: save_quality_settings(self))
141
+ self.global_panel_tabwidget_quality_lines_line.addWidget(self.global_panel_tabwidget_quality_lines_maximum)
142
+
143
+ self.global_panel_tabwidget_quality_lines_maximum_label = QLabel()
144
+ self.global_panel_tabwidget_quality_lines_maximum_label.setProperty('class', 'units_label')
145
+ self.global_panel_tabwidget_quality_lines_line.addWidget(self.global_panel_tabwidget_quality_lines_maximum_label)
146
+
147
+ self.global_panel_tabwidget_quality_lines_maximumcharacters = QSpinBox()
148
+ self.global_panel_tabwidget_quality_lines_maximumcharacters.setMinimum(1)
149
+ self.global_panel_tabwidget_quality_lines_maximumcharacters.setMaximum(999)
150
+ self.global_panel_tabwidget_quality_lines_maximumcharacters.setValue(42)
151
+ self.global_panel_tabwidget_quality_lines_maximumcharacters.editingFinished.connect(lambda: save_quality_settings(self))
152
+ self.global_panel_tabwidget_quality_lines_line.addWidget(self.global_panel_tabwidget_quality_lines_maximumcharacters)
153
+
154
+ self.global_panel_tabwidget_quality_lines_maximumcharacters_label = QLabel()
155
+ self.global_panel_tabwidget_quality_lines_maximumcharacters_label.setProperty('class', 'units_label')
156
+ self.global_panel_tabwidget_quality_lines_line.addWidget(self.global_panel_tabwidget_quality_lines_maximumcharacters_label)
157
+
158
+ self.global_panel_tabwidget_quality_lines_line.addStretch()
159
+
160
+ self.global_panel_tabwidget_quality_lines_vbox.addLayout(self.global_panel_tabwidget_quality_lines_line)
161
+
162
+ self.global_panel_tabwidget_quality_lines_vbox.addSpacing(5)
163
+
164
+ self.global_panel_tabwidget_quality_prefer_compact_checkbox = QCheckBox()
165
+ self.global_panel_tabwidget_quality_prefer_compact_checkbox.clicked.connect(lambda: save_quality_settings(self))
166
+ self.global_panel_tabwidget_quality_lines_vbox.addWidget(self.global_panel_tabwidget_quality_prefer_compact_checkbox)
167
+
168
+ self.global_panel_tabwidget_quality_lines_vbox.addSpacing(5)
169
+
170
+ self.global_panel_tabwidget_quality_balanceratio_checkbox = QCheckBox()
171
+ self.global_panel_tabwidget_quality_balanceratio_checkbox.clicked.connect(lambda: save_quality_settings(self))
172
+ self.global_panel_tabwidget_quality_lines_vbox.addWidget(self.global_panel_tabwidget_quality_balanceratio_checkbox)
173
+
174
+ self.global_panel_tabwidget_quality_lines_vbox.addSpacing(5)
175
+
176
+ self.global_panel_tabwidget_quality_balanceratio_hbox = QHBoxLayout()
177
+ self.global_panel_tabwidget_quality_balanceratio_hbox.setContentsMargins(0, 0, 0, 0)
178
+ self.global_panel_tabwidget_quality_balanceratio_hbox.setSpacing(5)
179
+
180
+ self.global_panel_tabwidget_quality_balanceratio_slider = QSlider(orientation=Qt.Horizontal)
181
+ self.global_panel_tabwidget_quality_balanceratio_slider.setObjectName('global_panel_tabwidget_quality_balanceratio_slider')
182
+ self.global_panel_tabwidget_quality_balanceratio_slider.setMinimum(0)
183
+ self.global_panel_tabwidget_quality_balanceratio_slider.setMaximum(100)
184
+ self.global_panel_tabwidget_quality_balanceratio_slider.setValue(50)
185
+ self.global_panel_tabwidget_quality_balanceratio_slider.setMaximumWidth(200)
186
+ self.global_panel_tabwidget_quality_balanceratio_slider.sliderReleased.connect(lambda: save_quality_settings(self))
187
+ self.global_panel_tabwidget_quality_balanceratio_hbox.addWidget(self.global_panel_tabwidget_quality_balanceratio_slider)
188
+
189
+ self.global_panel_tabwidget_quality_balanceratio_slider_label = QLabel()
190
+ self.global_panel_tabwidget_quality_balanceratio_slider_label.setProperty('class', 'units_label')
191
+ self.global_panel_tabwidget_quality_balanceratio_hbox.addWidget(self.global_panel_tabwidget_quality_balanceratio_slider_label)
192
+
193
+ self.global_panel_tabwidget_quality_balanceratio_hbox.addStretch()
194
+
195
+ self.global_panel_tabwidget_quality_lines_vbox.addLayout(self.global_panel_tabwidget_quality_balanceratio_hbox)
196
+
197
+ self.global_panel_tabwidget_quality_enable_groupbox.layout().addLayout(self.global_panel_tabwidget_quality_lines_vbox)
198
+
199
+ self.left_panel_qualitycheck_break_text_when_sending_text_to_adjacent_checkbox = QCheckBox()
200
+ self.left_panel_qualitycheck_break_text_when_sending_text_to_adjacent_checkbox.clicked.connect(lambda: save_quality_settings(self))
201
+ self.global_panel_tabwidget_quality_lines_vbox.addWidget(self.left_panel_qualitycheck_break_text_when_sending_text_to_adjacent_checkbox)
202
+
203
+ self.left_panel_qualitycheck_panel_widget.layout().addWidget(self.global_panel_tabwidget_quality_enable_groupbox)
204
+
205
+ self.left_panel_qualitycheck_panel_widget.layout().addStretch()
206
+
207
+
208
+ def show(self):
209
+ update(self)
210
+
211
+
212
+ def update(self):
213
+ self.global_panel_tabwidget_show_statistics_checkbox.setChecked(session.CONFIG['quality_check'].get('show_statistics', False))
214
+ self.global_panel_tabwidget_quality_enable_groupbox.setChecked(session.CONFIG['quality_check'].get('enabled', False))
215
+ self.global_panel_tabwidget_quality_readingspeed_cps.setValue(session.CONFIG['quality_check'].get('reading_speed_cps', 21))
216
+ self.global_panel_tabwidget_quality_readingspeed_wpm.setValue(session.CONFIG['quality_check'].get('reading_speed_wpm', 140))
217
+ self.global_panel_tabwidget_quality_duration_minimum.setValue(session.CONFIG['quality_check'].get('minimum_duration', .7))
218
+ self.global_panel_tabwidget_quality_duration_maximum.setValue(session.CONFIG['quality_check'].get('maximum_duration', 7))
219
+ self.global_panel_tabwidget_quality_lines_maximum.setValue(session.CONFIG['quality_check'].get('maximum_lines', 2))
220
+ self.global_panel_tabwidget_quality_lines_maximumcharacters.setValue(session.CONFIG['quality_check'].get('maximum_characters_per_line', 42))
221
+ self.global_panel_tabwidget_quality_prefer_compact_checkbox.setChecked(session.CONFIG['quality_check'].get('prefer_compact', False))
222
+ self.global_panel_tabwidget_quality_balanceratio_checkbox.setChecked(session.CONFIG['quality_check'].get('balance_ratio_enabled', False))
223
+ self.global_panel_tabwidget_quality_balanceratio_slider.setValue(session.CONFIG['quality_check'].get('balance_ratio', 50))
224
+ self.global_panel_tabwidget_quality_balanceratio_slider_label.setText('Ratio ({p}% the shortest should be of the largest)'.format(p=session.CONFIG['quality_check'].get('balance_ratio', 50)))
225
+
226
+
227
+ def hide(self):
228
+ pass
229
+
230
+
231
+ def translate(self):
232
+ self.global_panel_tabwidget_show_statistics_checkbox.setText(_('qualitycontrol.show_statistics'))
233
+ self.global_panel_tabwidget_quality_enable_groupbox.setTitle(_('qualitycontrol.quality_check'))
234
+ self.global_panel_tabwidget_quality_readingspeed_label.setText(_('qualitycontrol.reading_speed'))
235
+ self.global_panel_tabwidget_quality_readingspeed_cps_label.setText(_('qualitycontrol.characters_per_second'))
236
+ self.global_panel_tabwidget_quality_readingspeed_wpm_label.setText(_('qualitycontrol.words_per_minute'))
237
+ self.global_panel_tabwidget_quality_duration_label.setText(_('qualitycontrol.subtitle_duration'))
238
+ self.global_panel_tabwidget_quality_duration_minimum_label.setText(_('qualitycontrol.minimum_in_seconds'))
239
+ self.global_panel_tabwidget_quality_duration_maximum_label.setText(_('qualitycontrol.maximum_in_seconds'))
240
+ self.global_panel_tabwidget_quality_lines_label.setText(_('units.lines'))
241
+ self.global_panel_tabwidget_quality_lines_maximum_label.setText(_('units.maximum'))
242
+ self.global_panel_tabwidget_quality_lines_maximumcharacters_label.setText(_('qualitycontrol.maximum_characters_per_line'))
243
+ self.global_panel_tabwidget_quality_prefer_compact_checkbox.setText(_('qualitycontrol.prefer_compact_subtitles'))
244
+ self.global_panel_tabwidget_quality_balanceratio_checkbox.setText(_('qualitycontrol.balance_line_length'))
245
+ self.left_panel_qualitycheck_break_text_when_sending_text_to_adjacent_checkbox.setText(_('qualitycontrol.break_text_when_sending_text_to_adjacent'))
246
+
247
+
248
+
249
+ def save_quality_settings(self):
250
+ session.CONFIG['quality_check']['show_statistics'] = self.global_panel_tabwidget_show_statistics_checkbox.isChecked()
251
+ session.CONFIG['quality_check']['enabled'] = self.global_panel_tabwidget_quality_enable_groupbox.isChecked()
252
+ session.CONFIG['quality_check']['reading_speed_cps'] = self.global_panel_tabwidget_quality_readingspeed_cps.value()
253
+ session.CONFIG['quality_check']['reading_speed_wpm'] = self.global_panel_tabwidget_quality_readingspeed_wpm.value()
254
+ session.CONFIG['quality_check']['minimum_duration'] = self.global_panel_tabwidget_quality_duration_minimum.value()
255
+ session.CONFIG['quality_check']['maximum_duration'] = self.global_panel_tabwidget_quality_duration_maximum.value()
256
+ session.CONFIG['quality_check']['maximum_lines'] = self.global_panel_tabwidget_quality_lines_maximum.value()
257
+ session.CONFIG['quality_check']['maximum_characters_per_line'] = self.global_panel_tabwidget_quality_lines_maximumcharacters.value()
258
+ session.CONFIG['quality_check']['prefer_compact'] = self.global_panel_tabwidget_quality_prefer_compact_checkbox.isChecked()
259
+ session.CONFIG['quality_check']['balance_ratio_enabled'] = self.global_panel_tabwidget_quality_balanceratio_checkbox.isChecked()
260
+ session.CONFIG['quality_check']['balance_ratio'] = self.global_panel_tabwidget_quality_balanceratio_slider.value()
261
+ session.CONFIG['quality_check']['break_text_when_sending_text_to_adjacent'] = self.left_panel_qualitycheck_break_text_when_sending_text_to_adjacent_checkbox.isChecked()
262
+