@@ -49,6 +49,8 @@ def __init__(self, parent, worker, config, configfile):
4949 self .category_list = QListWidget ()
5050 category_media = QListWidgetItem (
5151 getIcon ('media-playback-start' ), 'Media' , self .category_list )
52+ category_library = QListWidgetItem (
53+ getIcon ('media-playback-start' ), 'Library' , self .category_list )
5254 category_sync = QListWidgetItem (
5355 getIcon ('view-refresh' ), 'Sync' , self .category_list )
5456 category_ui = QListWidgetItem (
@@ -197,9 +199,24 @@ def __init__(self, parent, worker, config, configfile):
197199
198200 g_kodi .setLayout (g_kodi_layout )
199201
202+ # Media form
203+ page_media_layout .addWidget (g_media )
204+ page_media_layout .addWidget (g_plex )
205+ page_media_layout .addWidget (g_jellyfin )
206+ page_media_layout .addWidget (g_kodi )
207+ page_media .setLayout (page_media_layout )
208+
209+ # Library tab
210+ page_library = QWidget ()
211+ page_library_layout = QVBoxLayout ()
212+ page_library_layout .setAlignment (QtCore .Qt .AlignTop )
213+
200214 # Group: Library
201215 g_playnext = QGroupBox ('Library' )
202216 g_playnext .setFlat (True )
217+ self .title_parser = QComboBox ()
218+ for (n , label ) in utils .available_parsers :
219+ self .title_parser .addItem (label , n )
203220 self .player = QLineEdit ()
204221 self .player_browse = QPushButton ('Browse...' )
205222 self .player_browse .clicked .connect (self .s_player_browse )
@@ -221,39 +238,38 @@ def __init__(self, parent, worker, config, configfile):
221238
222239 g_playnext_layout = QGridLayout ()
223240 g_playnext_layout .addWidget (
224- QLabel ('Player' ), 0 , 0 , 1 , 1 )
241+ QLabel ('Parser' ), 0 , 0 , 1 , 1 )
242+ g_playnext_layout .addWidget (
243+ self .title_parser , 0 , 1 , 1 , 1 )
244+ g_playnext_layout .addWidget (
245+ QLabel ('Player' ), 1 , 0 , 1 , 1 )
225246 g_playnext_layout .addWidget (self .player ,
226- 0 , 1 , 1 , 1 )
247+ 1 , 1 , 1 , 1 )
227248 g_playnext_layout .addWidget (
228- self .player_browse , 0 , 2 , 1 , 1 )
249+ self .player_browse , 1 , 2 , 1 , 1 )
229250 g_playnext_layout .addWidget (
230- lbl_searchdirs , 1 , 0 , 1 , 1 )
251+ lbl_searchdirs , 2 , 0 , 1 , 1 )
231252 g_playnext_layout .addWidget (
232- self .searchdirs , 1 , 1 , 1 , 1 )
253+ self .searchdirs , 2 , 1 , 1 , 1 )
233254 g_playnext_layout .addLayout (
234- self .searchdirs_buttons , 1 , 2 , 1 , 1 )
255+ self .searchdirs_buttons , 2 , 2 , 1 , 1 )
235256 g_playnext_layout .addWidget (
236- QLabel ('Rescan Library at startup' ), 2 , 0 , 1 , 2 )
257+ QLabel ('Rescan Library at startup' ), 3 , 0 , 1 , 2 )
237258 g_playnext_layout .addWidget (
238- self .library_autoscan , 2 , 2 , 1 , 1 )
259+ self .library_autoscan , 3 , 2 , 1 , 1 )
239260 g_playnext_layout .addWidget (
240- QLabel ('Scan through whole list' ), 3 , 0 , 1 , 2 )
261+ QLabel ('Scan through whole list' ), 4 , 0 , 1 , 2 )
241262 g_playnext_layout .addWidget (
242- self .scan_whole_list , 3 , 2 , 1 , 1 )
263+ self .scan_whole_list , 4 , 2 , 1 , 1 )
243264 g_playnext_layout .addWidget (
244- QLabel ('Take subdirectory name into account' ), 4 , 0 , 1 , 2 )
265+ QLabel ('Take subdirectory name into account' ), 5 , 0 , 1 , 2 )
245266 g_playnext_layout .addWidget (
246- self .library_full_path , 4 , 2 , 1 , 1 )
267+ self .library_full_path , 5 , 2 , 1 , 1 )
247268
248269 g_playnext .setLayout (g_playnext_layout )
249270
250- # Media form
251- page_media_layout .addWidget (g_media )
252- page_media_layout .addWidget (g_plex )
253- page_media_layout .addWidget (g_jellyfin )
254- page_media_layout .addWidget (g_kodi )
255- page_media_layout .addWidget (g_playnext )
256- page_media .setLayout (page_media_layout )
271+ page_library_layout .addWidget (g_playnext )
272+ page_library .setLayout (page_library_layout )
257273
258274 # Sync tab
259275 page_sync = QWidget ()
@@ -451,7 +467,7 @@ def __init__(self, parent, worker, config, configfile):
451467
452468 # Content
453469 self .contents = QStackedWidget ()
454- for page in (page_media , page_sync , page_ui , page_theme ):
470+ for page in (page_media , page_library , page_sync , page_ui , page_theme ):
455471 scrollable_page = QScrollArea ()
456472 scrollable_page .setWidgetResizable (True )
457473 scrollable_page .setWidget (page )
@@ -488,6 +504,8 @@ def _load(self):
488504 engine = self .worker .engine
489505 tracker_type = self .tracker_type .findData (
490506 engine .get_config ('tracker_type' ))
507+ title_parser = self .title_parser .findData (
508+ engine .get_config ('title_parser' ))
491509 autoretrieve = engine .get_config ('autoretrieve' )
492510 autosend = engine .get_config ('autosend' )
493511
@@ -506,6 +524,7 @@ def _load(self):
506524 self .tracker_ignore_not_next .setChecked (
507525 engine .get_config ('tracker_ignore_not_next' ))
508526
527+ self .title_parser .setCurrentIndex (max (0 , title_parser ))
509528 self .player .setText (engine .get_config ('player' ))
510529 self .library_autoscan .setChecked (engine .get_config ('library_autoscan' ))
511530 self .scan_whole_list .setChecked (engine .get_config ('scan_whole_list' ))
@@ -614,6 +633,8 @@ def _save(self):
614633 engine .set_config ('tracker_ignore_not_next' ,
615634 self .tracker_ignore_not_next .isChecked ())
616635
636+ engine .set_config ('title_parser' , self .title_parser .itemData (
637+ self .title_parser .currentIndex ()))
617638 engine .set_config ('player' , self .player .text ())
618639 engine .set_config ('library_autoscan' ,
619640 self .library_autoscan .isChecked ())
0 commit comments