@@ -423,9 +423,14 @@ def create_tab(self, gui):
423423 QLineEdit ,
424424 QCheckBox ,
425425 QSpinBox ,
426+ QScrollArea ,
427+ QWidget as QWidgetInner ,
426428 )
427429
428- tab = QWidget ()
430+ # Create scrollable area
431+ scroll = QScrollArea ()
432+ scroll .setWidgetResizable (True )
433+ tab = QWidgetInner ()
429434 layout = QVBoxLayout (tab )
430435
431436 # Load configuration
@@ -434,34 +439,100 @@ def create_tab(self, gui):
434439 # Create auto-save helper
435440 auto_save = UIAutoSaveHelper (self .config , gui )
436441
442+ # === Build Output Settings ===
443+ layout .addWidget (QLabel ("<b>Build Output</b>" ))
444+
437445 # Output directory
438446 row1 = QHBoxLayout ()
439447 row1 .addWidget (QLabel ("Output Directory:" ))
440448 output_edit = QLineEdit ()
441449 output_edit .setText (self .config .get (gui , "output_dir" , default = "dist" ))
450+ output_edit .setPlaceholderText ("dist" )
442451 auto_save .connect_line_edit (output_edit , "output_dir" )
443452 row1 .addWidget (output_edit )
444453 layout .addLayout (row1 )
445454
455+ # === Nuitka Compilation Options ===
456+ layout .addWidget (QLabel ("<b>Compilation Options</b>" ))
457+
458+ # Standalone mode
459+ standalone_check = QCheckBox ("Standalone (--standalone)" )
460+ standalone_check .setChecked (self .config .get (gui , "standalone" , default = True ))
461+ auto_save .connect_checkbox (standalone_check , "standalone" )
462+ layout .addWidget (standalone_check )
463+
446464 # One file option
447- one_file_check = QCheckBox ("One File" )
465+ one_file_check = QCheckBox ("One File (--onefile) " )
448466 one_file_check .setChecked (self .config .get (gui , "one_file" , default = False ))
449467 auto_save .connect_checkbox (one_file_check , "one_file" )
450468 layout .addWidget (one_file_check )
451469
470+ # Onefile (alternative flag)
471+ onefile_check = QCheckBox ("Onefile (alternative)" )
472+ onefile_check .setChecked (self .config .get (gui , "onefile" , default = False ))
473+ auto_save .connect_checkbox (onefile_check , "onefile" )
474+ layout .addWidget (onefile_check )
475+
476+ # Follow imports
477+ follow_check = QCheckBox ("Follow Imports (--follow-imports)" )
478+ follow_check .setChecked (self .config .get (gui , "follow_imports" , default = True ))
479+ auto_save .connect_checkbox (follow_check , "follow_imports" )
480+ layout .addWidget (follow_check )
481+
482+ # Remove output
483+ remove_check = QCheckBox ("Remove Output (--remove-output)" )
484+ remove_check .setChecked (self .config .get (gui , "remove_output" , default = True ))
485+ auto_save .connect_checkbox (remove_check , "remove_output" )
486+ layout .addWidget (remove_check )
487+
452488 # Optimization level
453- row2 = QHBoxLayout ()
454- row2 .addWidget (QLabel ("Optimization Level:" ))
489+ row_opt = QHBoxLayout ()
490+ row_opt .addWidget (QLabel ("Optimization Level:" ))
455491 opt_spin = QSpinBox ()
456- opt_spin .setMaximum ( 2 )
492+ opt_spin .setRange ( 0 , 2 )
457493 opt_spin .setValue (self .config .get (gui , "optimization" , default = 0 ))
458494 auto_save .connect_spinbox (opt_spin , "optimization" )
459- row2 .addWidget (opt_spin )
460- layout .addLayout (row2 )
495+ row_opt .addWidget (opt_spin )
496+ row_opt .addStretch ()
497+ layout .addLayout (row_opt )
498+
499+ # Jobs (parallel compilation)
500+ row_jobs = QHBoxLayout ()
501+ row_jobs .addWidget (QLabel ("Jobs (0=auto):" ))
502+ jobs_spin = QSpinBox ()
503+ jobs_spin .setRange (0 , 32 )
504+ jobs_spin .setValue (self .config .get (gui , "jobs" , default = 0 ))
505+ auto_save .connect_spinbox (jobs_spin , "jobs" )
506+ row_jobs .addWidget (jobs_spin )
507+ row_jobs .addStretch ()
508+ layout .addLayout (row_jobs )
509+
510+ # === Platform-Specific ===
511+ if platform .system () == "Windows" :
512+ layout .addWidget (QLabel ("<b>Windows Options</b>" ))
513+
514+ # Disable console
515+ disable_console_check = QCheckBox ("Disable Console (--windows-disable-console)" )
516+ disable_console_check .setChecked (
517+ self .config .get (gui , "windows_disable_console" , default = False )
518+ )
519+ auto_save .connect_checkbox (disable_console_check , "windows_disable_console" )
520+ layout .addWidget (disable_console_check )
521+
522+ # Icon
523+ row_icon = QHBoxLayout ()
524+ row_icon .addWidget (QLabel ("Icon Path:" ))
525+ icon_edit = QLineEdit ()
526+ icon_edit .setText (self .config .get (gui , "windows_icon_from_ico" , default = "" ))
527+ icon_edit .setPlaceholderText ("path/to/icon.ico" )
528+ auto_save .connect_line_edit (icon_edit , "windows_icon_from_ico" )
529+ row_icon .addWidget (icon_edit )
530+ layout .addLayout (row_icon )
461531
462532 layout .addStretch ()
463-
464- return tab , "Nuitka"
533+
534+ scroll .setWidget (tab )
535+ return scroll , "Nuitka"
465536 except Exception as e :
466537 safe_log (gui , f"Tab creation error: { e } " )
467538 return None
0 commit comments