@@ -50,13 +50,20 @@ def __init__(
5050 layout = QFormLayout (self )
5151 layout .setFieldGrowthPolicy (QFormLayout .FieldGrowthPolicy .ExpandingFieldsGrow )
5252
53- transcription_settings_title = _ ("Speech recognition settings" )
53+ self ._setup_transcription_section (layout )
54+ self ._setup_translation_section (layout )
55+ if show_recording_settings :
56+ self ._setup_recording_section (layout )
57+ self ._setup_button_box (layout )
58+
59+ def _setup_transcription_section (self , layout : QFormLayout ):
60+ transcription_settings_title = _ ("Speech recognition settings" )
5461 transcription_settings_title_label = QLabel (f"<h4>{ transcription_settings_title } </h4>" , self )
5562 layout .addRow ("" , transcription_settings_title_label )
5663
5764 self .initial_prompt_text_edit = InitialPromptTextEdit (
58- transcription_options .initial_prompt ,
59- transcription_options .model .model_type ,
65+ self . transcription_options .initial_prompt ,
66+ self . transcription_options .model .model_type ,
6067 self ,
6168 )
6269 self .initial_prompt_text_edit .textChanged .connect (
@@ -65,7 +72,8 @@ def __init__(
6572
6673 layout .addRow (_ ("Initial Prompt:" ), self .initial_prompt_text_edit )
6774
68- translation_settings_title = _ ("Translation settings" )
75+ def _setup_translation_section (self , layout : QFormLayout ):
76+ translation_settings_title = _ ("Translation settings" )
6977 translation_settings_title_label = QLabel (f"<h4>{ translation_settings_title } </h4>" , self )
7078 layout .addRow ("" , translation_settings_title_label )
7179
@@ -112,140 +120,141 @@ def __init__(
112120 self .llm_prompt_label .setEnabled (self .transcription_options .enable_llm_translation )
113121 layout .addRow (self .llm_prompt_label , self .llm_prompt_text_edit )
114122
115- if show_recording_settings :
116- recording_settings_title = _ ("Recording settings" )
117- recording_settings_title_label = QLabel (f"<h4>{ recording_settings_title } </h4>" , self )
118- layout .addRow ("" , recording_settings_title_label )
119-
120- self .silence_threshold_spin_box = QDoubleSpinBox (self )
121- self .silence_threshold_spin_box .setRange (0.0 , 1.0 )
122- self .silence_threshold_spin_box .setSingleStep (0.0005 )
123- self .silence_threshold_spin_box .setDecimals (4 )
124- self .silence_threshold_spin_box .setValue (transcription_options .silence_threshold )
125- self .silence_threshold_spin_box .valueChanged .connect (self .on_silence_threshold_changed )
126- self .silence_threshold_spin_box .setFixedWidth (90 )
127- layout .addRow (_ ("Silence threshold:" ), self .silence_threshold_spin_box )
128-
129- # Live recording mode
130- self .recording_mode_combo = QComboBox (self )
131- for mode in RecordingTranscriberMode :
132- self .recording_mode_combo .addItem (mode .value )
133- self .recording_mode_combo .setCurrentIndex (
134- self .settings .value (Settings .Key .RECORDING_TRANSCRIBER_MODE , 0 )
135- )
136- self .recording_mode_combo .currentIndexChanged .connect (self .on_recording_mode_changed )
137- self .recording_mode_combo .setFixedWidth (250 )
138- layout .addRow (_ ("Live recording mode" ) + ":" , self .recording_mode_combo )
139-
140- self .line_separator_line_edit = QLineEdit (self )
141- line_sep_display = repr (transcription_options .line_separator )[1 :- 1 ] or r"\n\n"
142- self .line_separator_line_edit .setText (line_sep_display )
143- self .line_separator_line_edit .textChanged .connect (self .on_line_separator_changed )
144- self .line_separator_label = QLabel (_ ("Line separator:" ))
145- layout .addRow (self .line_separator_label , self .line_separator_line_edit )
146-
147- self .transcription_step_spin_box = QDoubleSpinBox (self )
148- self .transcription_step_spin_box .setRange (2.0 , 5.0 )
149- self .transcription_step_spin_box .setSingleStep (0.1 )
150- self .transcription_step_spin_box .setDecimals (1 )
151- self .transcription_step_spin_box .setValue (transcription_options .transcription_step )
152- self .transcription_step_spin_box .valueChanged .connect (self .on_transcription_step_changed )
153- self .transcription_step_spin_box .setFixedWidth (80 )
154- self .transcription_step_label = QLabel (_ ("Transcription step:" ))
155- layout .addRow (self .transcription_step_label , self .transcription_step_spin_box )
156-
157- hide_unconfirmed = self .settings .value (
158- Settings .Key .RECORDING_TRANSCRIBER_HIDE_UNCONFIRMED , True
159- )
160- self .hide_unconfirmed_checkbox = QCheckBox (_ ("Hide unconfirmed" ))
161- self .hide_unconfirmed_checkbox .setChecked (hide_unconfirmed )
162- self .hide_unconfirmed_checkbox .stateChanged .connect (self .on_hide_unconfirmed_changed )
163- self .hide_unconfirmed_label = QLabel ("" )
164- layout .addRow (self .hide_unconfirmed_label , self .hide_unconfirmed_checkbox )
165-
166- self ._update_recording_mode_visibility (
167- RecordingTranscriberMode (self .recording_mode_combo .currentText ())
168- )
169-
170- # Export enabled checkbox
171- self ._export_enabled = self .settings .value (
172- Settings .Key .RECORDING_TRANSCRIBER_EXPORT_ENABLED , False
173- )
174- self .export_enabled_checkbox = QCheckBox (_ ("Enable live recording export" ))
175- self .export_enabled_checkbox .setChecked (self ._export_enabled )
176- self .export_enabled_checkbox .stateChanged .connect (self .on_export_enabled_changed )
177- layout .addRow ("" , self .export_enabled_checkbox )
178-
179- # Export folder
180- export_folder = self .settings .value (
181- Settings .Key .RECORDING_TRANSCRIBER_EXPORT_FOLDER , ""
182- )
183- self .export_folder_line_edit = LineEdit (export_folder , self )
184- self .export_folder_line_edit .setEnabled (self ._export_enabled )
185- self .export_folder_line_edit .textChanged .connect (self .on_export_folder_changed )
186- self .export_folder_browse_button = QPushButton (_ ("Browse" ), self )
187- self .export_folder_browse_button .setEnabled (self ._export_enabled )
188- self .export_folder_browse_button .clicked .connect (self .on_browse_export_folder )
189- export_folder_row = QHBoxLayout ()
190- export_folder_row .addWidget (self .export_folder_line_edit )
191- export_folder_row .addWidget (self .export_folder_browse_button )
192- self .export_folder_label = QLabel (_ ("Export folder:" ))
193- self .export_folder_label .setEnabled (self ._export_enabled )
194- layout .addRow (self .export_folder_label , export_folder_row )
195-
196- # Export file name template
197- export_file_name = self .settings .value (
198- Settings .Key .RECORDING_TRANSCRIBER_EXPORT_FILE_NAME , ""
199- )
200- self .export_file_name_line_edit = LineEdit (export_file_name , self )
201- self .export_file_name_line_edit .setEnabled (self ._export_enabled )
202- self .export_file_name_line_edit .textChanged .connect (self .on_export_file_name_changed )
203- self .export_file_name_label = QLabel (_ ("Export file name:" ))
204- self .export_file_name_label .setEnabled (self ._export_enabled )
205- layout .addRow (self .export_file_name_label , self .export_file_name_line_edit )
206-
207- # Export file type
208- self .export_file_type_combo = QComboBox (self )
209- self .export_file_type_combo .addItem (_ ("Text file (.txt)" ), "txt" )
210- self .export_file_type_combo .addItem (_ ("CSV (.csv)" ), "csv" )
211- current_type = self .settings .value (
212- Settings .Key .RECORDING_TRANSCRIBER_EXPORT_FILE_TYPE , "txt"
213- )
214- type_index = self .export_file_type_combo .findData (current_type )
215- if type_index >= 0 :
216- self .export_file_type_combo .setCurrentIndex (type_index )
217- self .export_file_type_combo .setEnabled (self ._export_enabled )
218- self .export_file_type_combo .currentIndexChanged .connect (self .on_export_file_type_changed )
219- self .export_file_type_combo .setFixedWidth (200 )
220- self .export_file_type_label = QLabel (_ ("Export file type:" ))
221- self .export_file_type_label .setEnabled (self ._export_enabled )
222- layout .addRow (self .export_file_type_label , self .export_file_type_combo )
223-
224- # Max entries
225- max_entries = self .settings .value (
226- Settings .Key .RECORDING_TRANSCRIBER_EXPORT_MAX_ENTRIES , 0 , int
227- )
228- self .export_max_entries_spin = QSpinBox (self )
229- self .export_max_entries_spin .setRange (0 , 99 )
230- self .export_max_entries_spin .setValue (max_entries )
231- self .export_max_entries_spin .setEnabled (self ._export_enabled )
232- self .export_max_entries_spin .valueChanged .connect (self .on_export_max_entries_changed )
233- self .export_max_entries_spin .setFixedWidth (90 )
234- self .export_max_entries_label = QLabel (_ ("Limit export entries\n (0 = export all):" ))
235- self .export_max_entries_label .setEnabled (self ._export_enabled )
236- layout .addRow (self .export_max_entries_label , self .export_max_entries_spin )
237-
238- _field_height = self .llm_model_line_edit .sizeHint ().height ()
239- for widget in (
240- self .line_separator_line_edit ,
241- self .silence_threshold_spin_box ,
242- self .recording_mode_combo ,
243- self .transcription_step_spin_box ,
244- self .export_file_type_combo ,
245- self .export_max_entries_spin ,
246- ):
247- widget .setFixedHeight (_field_height )
123+ def _setup_recording_section (self , layout : QFormLayout ):
124+ recording_settings_title = _ ("Recording settings" )
125+ recording_settings_title_label = QLabel (f"<h4>{ recording_settings_title } </h4>" , self )
126+ layout .addRow ("" , recording_settings_title_label )
127+
128+ self .silence_threshold_spin_box = QDoubleSpinBox (self )
129+ self .silence_threshold_spin_box .setRange (0.0 , 1.0 )
130+ self .silence_threshold_spin_box .setSingleStep (0.0005 )
131+ self .silence_threshold_spin_box .setDecimals (4 )
132+ self .silence_threshold_spin_box .setValue (self .transcription_options .silence_threshold )
133+ self .silence_threshold_spin_box .valueChanged .connect (self .on_silence_threshold_changed )
134+ self .silence_threshold_spin_box .setFixedWidth (90 )
135+ layout .addRow (_ ("Silence threshold:" ), self .silence_threshold_spin_box )
136+
137+ # Live recording mode
138+ self .recording_mode_combo = QComboBox (self )
139+ for mode in RecordingTranscriberMode :
140+ self .recording_mode_combo .addItem (mode .value )
141+ self .recording_mode_combo .setCurrentIndex (
142+ self .settings .value (Settings .Key .RECORDING_TRANSCRIBER_MODE , 0 )
143+ )
144+ self .recording_mode_combo .currentIndexChanged .connect (self .on_recording_mode_changed )
145+ self .recording_mode_combo .setFixedWidth (250 )
146+ layout .addRow (_ ("Live recording mode" ) + ":" , self .recording_mode_combo )
147+
148+ self .line_separator_line_edit = QLineEdit (self )
149+ line_sep_display = repr (self .transcription_options .line_separator )[1 :- 1 ] or r"\n\n"
150+ self .line_separator_line_edit .setText (line_sep_display )
151+ self .line_separator_line_edit .textChanged .connect (self .on_line_separator_changed )
152+ self .line_separator_label = QLabel (_ ("Line separator:" ))
153+ layout .addRow (self .line_separator_label , self .line_separator_line_edit )
154+
155+ self .transcription_step_spin_box = QDoubleSpinBox (self )
156+ self .transcription_step_spin_box .setRange (2.0 , 5.0 )
157+ self .transcription_step_spin_box .setSingleStep (0.1 )
158+ self .transcription_step_spin_box .setDecimals (1 )
159+ self .transcription_step_spin_box .setValue (self .transcription_options .transcription_step )
160+ self .transcription_step_spin_box .valueChanged .connect (self .on_transcription_step_changed )
161+ self .transcription_step_spin_box .setFixedWidth (80 )
162+ self .transcription_step_label = QLabel (_ ("Transcription step:" ))
163+ layout .addRow (self .transcription_step_label , self .transcription_step_spin_box )
164+
165+ hide_unconfirmed = self .settings .value (
166+ Settings .Key .RECORDING_TRANSCRIBER_HIDE_UNCONFIRMED , True
167+ )
168+ self .hide_unconfirmed_checkbox = QCheckBox (_ ("Hide unconfirmed" ))
169+ self .hide_unconfirmed_checkbox .setChecked (hide_unconfirmed )
170+ self .hide_unconfirmed_checkbox .stateChanged .connect (self .on_hide_unconfirmed_changed )
171+ self .hide_unconfirmed_label = QLabel ("" )
172+ layout .addRow (self .hide_unconfirmed_label , self .hide_unconfirmed_checkbox )
173+
174+ self ._update_recording_mode_visibility (
175+ RecordingTranscriberMode (self .recording_mode_combo .currentText ())
176+ )
248177
178+ # Export enabled checkbox
179+ self ._export_enabled = self .settings .value (
180+ Settings .Key .RECORDING_TRANSCRIBER_EXPORT_ENABLED , False
181+ )
182+ self .export_enabled_checkbox = QCheckBox (_ ("Enable live recording export" ))
183+ self .export_enabled_checkbox .setChecked (self ._export_enabled )
184+ self .export_enabled_checkbox .stateChanged .connect (self .on_export_enabled_changed )
185+ layout .addRow ("" , self .export_enabled_checkbox )
186+
187+ # Export folder
188+ export_folder = self .settings .value (
189+ Settings .Key .RECORDING_TRANSCRIBER_EXPORT_FOLDER , ""
190+ )
191+ self .export_folder_line_edit = LineEdit (export_folder , self )
192+ self .export_folder_line_edit .setEnabled (self ._export_enabled )
193+ self .export_folder_line_edit .textChanged .connect (self .on_export_folder_changed )
194+ self .export_folder_browse_button = QPushButton (_ ("Browse" ), self )
195+ self .export_folder_browse_button .setEnabled (self ._export_enabled )
196+ self .export_folder_browse_button .clicked .connect (self .on_browse_export_folder )
197+ export_folder_row = QHBoxLayout ()
198+ export_folder_row .addWidget (self .export_folder_line_edit )
199+ export_folder_row .addWidget (self .export_folder_browse_button )
200+ self .export_folder_label = QLabel (_ ("Export folder:" ))
201+ self .export_folder_label .setEnabled (self ._export_enabled )
202+ layout .addRow (self .export_folder_label , export_folder_row )
203+
204+ # Export file name template
205+ export_file_name = self .settings .value (
206+ Settings .Key .RECORDING_TRANSCRIBER_EXPORT_FILE_NAME , ""
207+ )
208+ self .export_file_name_line_edit = LineEdit (export_file_name , self )
209+ self .export_file_name_line_edit .setEnabled (self ._export_enabled )
210+ self .export_file_name_line_edit .textChanged .connect (self .on_export_file_name_changed )
211+ self .export_file_name_label = QLabel (_ ("Export file name:" ))
212+ self .export_file_name_label .setEnabled (self ._export_enabled )
213+ layout .addRow (self .export_file_name_label , self .export_file_name_line_edit )
214+
215+ # Export file type
216+ self .export_file_type_combo = QComboBox (self )
217+ self .export_file_type_combo .addItem (_ ("Text file (.txt)" ), "txt" )
218+ self .export_file_type_combo .addItem (_ ("CSV (.csv)" ), "csv" )
219+ current_type = self .settings .value (
220+ Settings .Key .RECORDING_TRANSCRIBER_EXPORT_FILE_TYPE , "txt"
221+ )
222+ type_index = self .export_file_type_combo .findData (current_type )
223+ if type_index >= 0 :
224+ self .export_file_type_combo .setCurrentIndex (type_index )
225+ self .export_file_type_combo .setEnabled (self ._export_enabled )
226+ self .export_file_type_combo .currentIndexChanged .connect (self .on_export_file_type_changed )
227+ self .export_file_type_combo .setFixedWidth (200 )
228+ self .export_file_type_label = QLabel (_ ("Export file type:" ))
229+ self .export_file_type_label .setEnabled (self ._export_enabled )
230+ layout .addRow (self .export_file_type_label , self .export_file_type_combo )
231+
232+ # Max entries
233+ max_entries = self .settings .value (
234+ Settings .Key .RECORDING_TRANSCRIBER_EXPORT_MAX_ENTRIES , 0 , int
235+ )
236+ self .export_max_entries_spin = QSpinBox (self )
237+ self .export_max_entries_spin .setRange (0 , 99 )
238+ self .export_max_entries_spin .setValue (max_entries )
239+ self .export_max_entries_spin .setEnabled (self ._export_enabled )
240+ self .export_max_entries_spin .valueChanged .connect (self .on_export_max_entries_changed )
241+ self .export_max_entries_spin .setFixedWidth (90 )
242+ self .export_max_entries_label = QLabel (_ ("Limit export entries\n (0 = export all):" ))
243+ self .export_max_entries_label .setEnabled (self ._export_enabled )
244+ layout .addRow (self .export_max_entries_label , self .export_max_entries_spin )
245+
246+ _field_height = self .llm_model_line_edit .sizeHint ().height ()
247+ for widget in (
248+ self .line_separator_line_edit ,
249+ self .silence_threshold_spin_box ,
250+ self .recording_mode_combo ,
251+ self .transcription_step_spin_box ,
252+ self .export_file_type_combo ,
253+ self .export_max_entries_spin ,
254+ ):
255+ widget .setFixedHeight (_field_height )
256+
257+ def _setup_button_box (self , layout : QFormLayout ):
249258 button_box = QDialogButtonBox (
250259 QDialogButtonBox .StandardButton (QDialogButtonBox .StandardButton .Ok ), self
251260 )
@@ -254,8 +263,6 @@ def __init__(
254263
255264 layout .addWidget (button_box )
256265
257- self .setLayout (layout )
258-
259266 def on_initial_prompt_changed (self ):
260267 self .transcription_options .initial_prompt = (
261268 self .initial_prompt_text_edit .toPlainText ()
0 commit comments