@@ -261,121 +261,7 @@ def __init__(self, parent):
261261 self .setFixedSize (self .sizeHint ())
262262
263263
264- # Paths dialog. ---------------------------------------------------------
265-
266-
267- class Path_setter (QtWidgets .QHBoxLayout ):
268- """Dialog for editing folder paths."""
269-
270- def __init__ (self , parent , label , key ):
271- super (QtWidgets .QHBoxLayout , self ).__init__ ()
272- self .name = label
273- self .key = key
274- self .parent = parent
275- self .edited = False
276- # Instantiate widgets
277- Vcenter = QtCore .Qt .AlignmentFlag .AlignVCenter
278- right = QtCore .Qt .AlignmentFlag .AlignRight
279- self .path = ""
280- self .name_label = QtWidgets .QLabel (label + " folder" )
281- self .name_label .setAlignment (right | Vcenter )
282- self .name_label .setFocusPolicy (QtCore .Qt .FocusPolicy .NoFocus )
283- self .path_text = QtWidgets .QLineEdit ()
284- self .path_text .setFocusPolicy (QtCore .Qt .FocusPolicy .NoFocus )
285- self .path_text .setReadOnly (True )
286- self .path_text .setFixedWidth (500 )
287- self .change_button = QtWidgets .QPushButton ("Change" )
288- self .change_button .setFocusPolicy (QtCore .Qt .FocusPolicy .NoFocus )
289- self .path_text .setReadOnly (True )
290- self .change_button .clicked .connect (self .select_path )
291- # Layout
292- self .addWidget (self .name_label )
293- self .addWidget (self .path_text )
294- self .addWidget (self .change_button )
295- self .setContentsMargins (0 , 0 , 0 , 0 )
296-
297- def select_path (self ):
298- new_path = QtWidgets .QFileDialog .getExistingDirectory (
299- self .parent , f"Select { self .name } folder" , self .path_text .text ()
300- )
301- if new_path :
302- new_path = os .path .normpath (new_path )
303- self .path_text .setText (new_path )
304- self .show_edit ()
305-
306- def show_edit (self ):
307- if self .path_text .text () != self .path :
308- if self .edited is False :
309- self .edited = True
310- self .name_label .setStyleSheet ("color:red;" )
311- self .parent .num_edited_setters += 1
312- self .parent .save_settings_btn .setEnabled (True )
313- else :
314- if self .edited is True :
315- self .edited = False
316- self .name_label .setStyleSheet ("color:black;" )
317- self .parent .num_edited_setters -= 1
318- if self .parent .num_edited_setters < 1 :
319- self .parent .save_settings_btn .setEnabled (False )
320-
321- def reset (self ):
322- self .path = os .path .normpath (get_setting (* self .key ))
323- self .path_text .setText (self .path )
324- self .show_edit ()
325-
326-
327- class Spin_setter :
328- """Spinbox input for changing user settings"""
329- def __init__ (self , parent , label , key , suffix = None ):
330- center = QtCore .Qt .AlignmentFlag .AlignCenter
331- Vcenter = QtCore .Qt .AlignmentFlag .AlignVCenter
332- right = QtCore .Qt .AlignmentFlag .AlignRight
333- spin_width = 85
334- self .parent = parent
335- self .key = key
336- self .edited = False
337- self .label = QtWidgets .QLabel (label )
338- self .label .setAlignment (right | Vcenter )
339-
340- self .spn = QtWidgets .QSpinBox ()
341- self .spn .setMaximum (1000 )
342- self .spn .setAlignment (center )
343- self .spn .setMinimumWidth (spin_width )
344- if suffix :
345- self .spn .setSuffix (suffix )
346- self .spn .valueChanged .connect (self .show_edit )
347-
348- def add_to_grid (self , groupbox_grid , row ):
349- groupbox_grid .addWidget (self .label , row , 0 )
350- groupbox_grid .addWidget (self .spn , row , 1 )
351-
352- def show_edit (self ):
353- """
354- checks whether the settings has been edited, and changes label color accordingly
355- also keeps a running tally of how many settings have been edited
356- and enables/disables the "Save settings" button accordingly
357- """
358- if self .spn .value () != self .start_value :
359- if self .edited is False :
360- self .edited = True
361- self .label .setStyleSheet ("color:red;" )
362- self .parent .num_edited_setters += 1
363- self .parent .save_settings_btn .setEnabled (True )
364- else :
365- if self .edited is True :
366- self .edited = False
367- self .label .setStyleSheet ("color:black;" )
368- self .parent .num_edited_setters -= 1
369- if self .parent .num_edited_setters < 1 :
370- self .parent .save_settings_btn .setEnabled (False )
371-
372- self .spn .lineEdit ().deselect ()
373-
374- def reset (self ):
375- self .start_value = get_setting (* self .key )
376- self .spn .setValue (self .start_value )
377- self .show_edit ()
378-
264+ # Settings dialog. ---------------------------------------------------------
379265
380266class Settings_dialog (QtWidgets .QDialog ):
381267 """Dialog for editing user settings"""
@@ -531,3 +417,118 @@ def closeEvent(self, event):
531417 )
532418 if reply == QtWidgets .QMessageBox .StandardButton .Cancel :
533419 event .ignore ()
420+
421+
422+ class Path_setter (QtWidgets .QHBoxLayout ):
423+ """Dialog for editing folder paths."""
424+
425+ def __init__ (self , parent , label , key ):
426+ super (QtWidgets .QHBoxLayout , self ).__init__ ()
427+ self .name = label
428+ self .key = key
429+ self .parent = parent
430+ self .edited = False
431+ # Instantiate widgets
432+ Vcenter = QtCore .Qt .AlignmentFlag .AlignVCenter
433+ right = QtCore .Qt .AlignmentFlag .AlignRight
434+ self .path = ""
435+ self .name_label = QtWidgets .QLabel (label + " folder" )
436+ self .name_label .setAlignment (right | Vcenter )
437+ self .name_label .setFocusPolicy (QtCore .Qt .FocusPolicy .NoFocus )
438+ self .path_text = QtWidgets .QLineEdit ()
439+ self .path_text .setFocusPolicy (QtCore .Qt .FocusPolicy .NoFocus )
440+ self .path_text .setReadOnly (True )
441+ self .path_text .setFixedWidth (500 )
442+ self .change_button = QtWidgets .QPushButton ("Change" )
443+ self .change_button .setFocusPolicy (QtCore .Qt .FocusPolicy .NoFocus )
444+ self .path_text .setReadOnly (True )
445+ self .change_button .clicked .connect (self .select_path )
446+ # Layout
447+ self .addWidget (self .name_label )
448+ self .addWidget (self .path_text )
449+ self .addWidget (self .change_button )
450+ self .setContentsMargins (0 , 0 , 0 , 0 )
451+
452+ def select_path (self ):
453+ new_path = QtWidgets .QFileDialog .getExistingDirectory (
454+ self .parent , f"Select { self .name } folder" , self .path_text .text ()
455+ )
456+ if new_path :
457+ new_path = os .path .normpath (new_path )
458+ self .path_text .setText (new_path )
459+ self .show_edit ()
460+
461+ def show_edit (self ):
462+ if self .path_text .text () != self .path :
463+ if self .edited is False :
464+ self .edited = True
465+ self .name_label .setStyleSheet ("color:red;" )
466+ self .parent .num_edited_setters += 1
467+ self .parent .save_settings_btn .setEnabled (True )
468+ else :
469+ if self .edited is True :
470+ self .edited = False
471+ self .name_label .setStyleSheet ("color:black;" )
472+ self .parent .num_edited_setters -= 1
473+ if self .parent .num_edited_setters < 1 :
474+ self .parent .save_settings_btn .setEnabled (False )
475+
476+ def reset (self ):
477+ self .path = os .path .normpath (get_setting (* self .key ))
478+ self .path_text .setText (self .path )
479+ self .show_edit ()
480+
481+
482+ class Spin_setter :
483+ """Spinbox input for changing user settings"""
484+ def __init__ (self , parent , label , key , suffix = None ):
485+ center = QtCore .Qt .AlignmentFlag .AlignCenter
486+ Vcenter = QtCore .Qt .AlignmentFlag .AlignVCenter
487+ right = QtCore .Qt .AlignmentFlag .AlignRight
488+ spin_width = 85
489+ self .parent = parent
490+ self .key = key
491+ self .edited = False
492+ self .label = QtWidgets .QLabel (label )
493+ self .label .setAlignment (right | Vcenter )
494+
495+ self .spn = QtWidgets .QSpinBox ()
496+ self .spn .setMaximum (1000 )
497+ self .spn .setAlignment (center )
498+ self .spn .setMinimumWidth (spin_width )
499+ if suffix :
500+ self .spn .setSuffix (suffix )
501+ self .spn .valueChanged .connect (self .show_edit )
502+
503+ def add_to_grid (self , groupbox_grid , row ):
504+ groupbox_grid .addWidget (self .label , row , 0 )
505+ groupbox_grid .addWidget (self .spn , row , 1 )
506+
507+ def show_edit (self ):
508+ """
509+ checks whether the settings has been edited, and changes label color accordingly
510+ also keeps a running tally of how many settings have been edited
511+ and enables/disables the "Save settings" button accordingly
512+ """
513+ if self .spn .value () != self .start_value :
514+ if self .edited is False :
515+ self .edited = True
516+ self .label .setStyleSheet ("color:red;" )
517+ self .parent .num_edited_setters += 1
518+ self .parent .save_settings_btn .setEnabled (True )
519+ else :
520+ if self .edited is True :
521+ self .edited = False
522+ self .label .setStyleSheet ("color:black;" )
523+ self .parent .num_edited_setters -= 1
524+ if self .parent .num_edited_setters < 1 :
525+ self .parent .save_settings_btn .setEnabled (False )
526+
527+ self .spn .lineEdit ().deselect ()
528+
529+ def reset (self ):
530+ self .start_value = get_setting (* self .key )
531+ self .spn .setValue (self .start_value )
532+ self .show_edit ()
533+
534+
0 commit comments