Skip to content

Commit edb4246

Browse files
committed
mise a niveau des enginre
1 parent 1534cac commit edb4246

3 files changed

Lines changed: 216 additions & 17 deletions

File tree

ENGINES/cx_freeze/engine.py

Lines changed: 58 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -423,9 +423,16 @@ def create_tab(self, gui):
423423
QLabel,
424424
QLineEdit,
425425
QComboBox,
426+
QCheckBox,
427+
QSpinBox,
428+
QScrollArea,
429+
QWidget as QWidgetInner,
426430
)
427431

428-
tab = QWidget()
432+
# Create scrollable area
433+
scroll = QScrollArea()
434+
scroll.setWidgetResizable(True)
435+
tab = QWidgetInner()
429436
layout = QVBoxLayout(tab)
430437

431438
# Load configuration
@@ -434,11 +441,15 @@ def create_tab(self, gui):
434441
# Create auto-save helper
435442
auto_save = UIAutoSaveHelper(self.config, gui)
436443

444+
# === Build Output Settings ===
445+
layout.addWidget(QLabel("<b>Build Output</b>"))
446+
437447
# Output directory
438448
row1 = QHBoxLayout()
439449
row1.addWidget(QLabel("Output Directory:"))
440450
output_edit = QLineEdit()
441451
output_edit.setText(self.config.get(gui, "output_dir", default="dist"))
452+
output_edit.setPlaceholderText("dist")
442453
auto_save.connect_line_edit(output_edit, "output_dir")
443454
row1.addWidget(output_edit)
444455
layout.addLayout(row1)
@@ -448,10 +459,24 @@ def create_tab(self, gui):
448459
row2.addWidget(QLabel("Target Name:"))
449460
target_edit = QLineEdit()
450461
target_edit.setText(self.config.get(gui, "target_name", default=""))
462+
target_edit.setPlaceholderText("my_app")
451463
auto_save.connect_line_edit(target_edit, "target_name")
452464
row2.addWidget(target_edit)
453465
layout.addLayout(row2)
454466

467+
# Build exe directory
468+
row_buildexe = QHBoxLayout()
469+
row_buildexe.addWidget(QLabel("Build Exe Dir:"))
470+
buildexe_edit = QLineEdit()
471+
buildexe_edit.setText(self.config.get(gui, "build_exe", default=""))
472+
buildexe_edit.setPlaceholderText("build/exe...")
473+
auto_save.connect_line_edit(buildexe_edit, "build_exe")
474+
row_buildexe.addWidget(buildexe_edit)
475+
layout.addLayout(row_buildexe)
476+
477+
# === cx_Freeze Options ===
478+
layout.addWidget(QLabel("<b>cx_Freeze Options</b>"))
479+
455480
# Base (Windows only)
456481
if platform.system() == "Windows":
457482
row3 = QHBoxLayout()
@@ -465,9 +490,39 @@ def create_tab(self, gui):
465490
row3.addWidget(base_combo)
466491
layout.addLayout(row3)
467492

468-
layout.addStretch()
493+
# Optimization level
494+
row_opt = QHBoxLayout()
495+
row_opt.addWidget(QLabel("Optimize:"))
496+
opt_spin = QSpinBox()
497+
opt_spin.setRange(0, 2)
498+
opt_spin.setValue(self.config.get(gui, "optimize", default=2))
499+
auto_save.connect_spinbox(opt_spin, "optimize")
500+
row_opt.addWidget(opt_spin)
501+
row_opt.addStretch()
502+
layout.addLayout(row_opt)
503+
504+
# Compress option
505+
compress_check = QCheckBox("Compress (--compress)")
506+
compress_check.setChecked(self.config.get(gui, "compress", default=True))
507+
auto_save.connect_checkbox(compress_check, "compress")
508+
layout.addWidget(compress_check)
509+
510+
# Include MSVCR
511+
msvcr_check = QCheckBox("Include MSVCR (--include-msvcr)")
512+
msvcr_check.setChecked(self.config.get(gui, "include_msvcr", default=False))
513+
auto_save.connect_checkbox(msvcr_check, "include_msvcr")
514+
layout.addWidget(msvcr_check)
515+
516+
# Silent mode
517+
silent_check = QCheckBox("Silent Mode (--silent)")
518+
silent_check.setChecked(self.config.get(gui, "silent", default=False))
519+
auto_save.connect_checkbox(silent_check, "silent")
520+
layout.addWidget(silent_check)
469521

470-
return tab, "cx_Freeze"
522+
layout.addStretch()
523+
524+
scroll.setWidget(tab)
525+
return scroll, "cx_Freeze"
471526
except Exception as e:
472527
safe_log(gui, f"Tab creation error: {e}")
473528
return None

ENGINES/nuitka/engine.py

Lines changed: 80 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -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

ENGINES/pyinstaller/engine.py

Lines changed: 78 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -388,9 +388,15 @@ def create_tab(self, gui):
388388
QLabel,
389389
QLineEdit,
390390
QCheckBox,
391+
QSpinBox,
392+
QScrollArea,
393+
QWidget as QWidgetInner,
391394
)
392395

393-
tab = QWidget()
396+
# Create scrollable area
397+
scroll = QScrollArea()
398+
scroll.setWidgetResizable(True)
399+
tab = QWidgetInner()
394400
layout = QVBoxLayout(tab)
395401

396402
# Load configuration
@@ -399,30 +405,97 @@ def create_tab(self, gui):
399405
# Create auto-save helper
400406
auto_save = UIAutoSaveHelper(self.config, gui)
401407

408+
# === Build Output Settings ===
409+
layout.addWidget(QLabel("<b>Build Output</b>"))
410+
402411
# Output directory
403412
row1 = QHBoxLayout()
404413
row1.addWidget(QLabel("Output Directory:"))
405414
output_edit = QLineEdit()
406415
output_edit.setText(self.config.get(gui, "output_dir", default="dist"))
416+
output_edit.setPlaceholderText("dist")
407417
auto_save.connect_line_edit(output_edit, "output_dir")
408418
row1.addWidget(output_edit)
409419
layout.addLayout(row1)
410420

421+
# === PyInstaller Options ===
422+
layout.addWidget(QLabel("<b>PyInstaller Options</b>"))
423+
411424
# One file option
412-
one_file_check = QCheckBox("One File")
425+
one_file_check = QCheckBox("One File (--onefile)")
413426
one_file_check.setChecked(self.config.get(gui, "one_file", default=False))
414427
auto_save.connect_checkbox(one_file_check, "one_file")
415428
layout.addWidget(one_file_check)
416429

417430
# Console option
418-
console_check = QCheckBox("Console")
431+
console_check = QCheckBox("Console Mode")
419432
console_check.setChecked(self.config.get(gui, "console", default=True))
420433
auto_save.connect_checkbox(console_check, "console")
421434
layout.addWidget(console_check)
422435

423-
layout.addStretch()
436+
# Windowed option
437+
windowed_check = QCheckBox("Windowed (--windowed, no console)")
438+
windowed_check.setChecked(self.config.get(gui, "windowed", default=False))
439+
auto_save.connect_checkbox(windowed_check, "windowed")
440+
layout.addWidget(windowed_check)
441+
442+
# Clean build
443+
clean_check = QCheckBox("Clean build (--clean)")
444+
clean_check.setChecked(self.config.get(gui, "clean", default=False))
445+
auto_save.connect_checkbox(clean_check, "clean")
446+
layout.addWidget(clean_check)
447+
448+
# Strip option
449+
strip_check = QCheckBox("Strip executable (--strip)")
450+
strip_check.setChecked(self.config.get(gui, "strip", default=False))
451+
auto_save.connect_checkbox(strip_check, "strip")
452+
layout.addWidget(strip_check)
453+
454+
# Icon path
455+
row_icon = QHBoxLayout()
456+
row_icon.addWidget(QLabel("Icon Path:"))
457+
icon_edit = QLineEdit()
458+
icon_edit.setText(self.config.get(gui, "icon_path", default=""))
459+
icon_edit.setPlaceholderText("path/to/icon.ico")
460+
auto_save.connect_line_edit(icon_edit, "icon_path")
461+
row_icon.addWidget(icon_edit)
462+
layout.addLayout(row_icon)
463+
464+
# UPX directory
465+
row_upx = QHBoxLayout()
466+
row_upx.addWidget(QLabel("UPX Directory:"))
467+
upx_edit = QLineEdit()
468+
upx_edit.setText(self.config.get(gui, "upx_dir", default=""))
469+
upx_edit.setPlaceholderText("path/to/upx")
470+
auto_save.connect_line_edit(upx_edit, "upx_dir")
471+
row_upx.addWidget(upx_edit)
472+
layout.addLayout(row_upx)
473+
474+
# Debug level
475+
row_debug = QHBoxLayout()
476+
row_debug.addWidget(QLabel("Debug Level:"))
477+
debug_edit = QLineEdit()
478+
debug_edit.setText(self.config.get(gui, "debug", default="all"))
479+
debug_edit.setPlaceholderText("all, imports, bootloader, noarchive")
480+
auto_save.connect_line_edit(debug_edit, "debug")
481+
row_debug.addWidget(debug_edit)
482+
layout.addLayout(row_debug)
483+
484+
# Optimization level
485+
row_opt = QHBoxLayout()
486+
row_opt.addWidget(QLabel("Optimization Level:"))
487+
opt_spin = QSpinBox()
488+
opt_spin.setRange(0, 2)
489+
opt_spin.setValue(self.config.get(gui, "optimization_level", default=2))
490+
auto_save.connect_spinbox(opt_spin, "optimization_level")
491+
row_opt.addWidget(opt_spin)
492+
row_opt.addStretch()
493+
layout.addLayout(row_opt)
424494

425-
return tab, "PyInstaller"
495+
layout.addStretch()
496+
497+
scroll.setWidget(tab)
498+
return scroll, "PyInstaller"
426499
except Exception as e:
427500
safe_log(gui, f"Tab creation error: {e}")
428501
return None

0 commit comments

Comments
 (0)