Skip to content

Commit a467a55

Browse files
committed
ajour de standardisaion de ceratin button
1 parent 1b0d6a9 commit a467a55

5 files changed

Lines changed: 109 additions & 56 deletions

File tree

ENGINES/cx_freeze/__init__.py

Lines changed: 23 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,14 @@
2727
import sys
2828
from typing import Optional
2929

30-
from engine_sdk import CompilerEngine, compute_auto_for_engine, engine_register
30+
from engine_sdk import (
31+
CompilerEngine,
32+
add_form_checkbox,
33+
add_icon_selector,
34+
add_output_dir,
35+
compute_auto_for_engine,
36+
engine_register,
37+
)
3138

3239

3340
@engine_register
@@ -191,33 +198,29 @@ def create_tab(self, gui):
191198
form_layout.setSpacing(8)
192199

193200
# Onefile option
194-
self._cx_onefile = QCheckBox("Onefile")
195-
self._cx_onefile.setObjectName("cx_onefile_dynamic")
196-
form_layout.addRow("Mode:", self._cx_onefile)
201+
self._cx_onefile = add_form_checkbox(
202+
form_layout, "Mode:", "Onefile", "cx_onefile_dynamic"
203+
)
197204

198205
# Windowed option
199-
self._cx_windowed = QCheckBox("Windowed")
200-
self._cx_windowed.setObjectName("cx_windowed_dynamic")
201-
form_layout.addRow("Console:", self._cx_windowed)
206+
self._cx_windowed = add_form_checkbox(
207+
form_layout, "Console:", "Windowed", "cx_windowed_dynamic"
208+
)
202209

203210
layout.addLayout(form_layout)
204211

205212
# Icon button
206-
icon_layout = QHBoxLayout()
207-
self._cx_btn_select_icon = QPushButton("🎨 Choisir une icône (.ico)")
208-
self._cx_btn_select_icon.setObjectName("cx_btn_select_icon_dynamic")
209-
self._cx_btn_select_icon.clicked.connect(self.select_icon)
210-
icon_layout.addWidget(self._cx_btn_select_icon)
211-
icon_layout.addStretch()
212-
layout.addLayout(icon_layout)
213+
self._cx_btn_select_icon = add_icon_selector(
214+
layout,
215+
"🎨 Choisir une icône (.ico)",
216+
self.select_icon,
217+
"cx_btn_select_icon_dynamic",
218+
)
213219

214220
# Output directory
215-
output_layout = QHBoxLayout()
216-
self._cx_output_dir = QLineEdit()
217-
self._cx_output_dir.setObjectName("cx_output_dir_dynamic")
218-
self._cx_output_dir.setPlaceholderText("Dossier de sortie")
219-
output_layout.addWidget(self._cx_output_dir)
220-
layout.addLayout(output_layout)
221+
self._cx_output_dir = add_output_dir(
222+
layout, "Dossier de sortie", "cx_output_dir_dynamic"
223+
)
221224

222225
layout.addStretch()
223226

ENGINES/nuitka/__init__.py

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,13 @@
3030
from PySide6.QtCore import QDir
3131
from PySide6.QtWidgets import QFileDialog, QInputDialog, QCheckBox, QLineEdit
3232

33-
from engine_sdk import CompilerEngine, compute_auto_for_engine, engine_register
33+
from engine_sdk import (
34+
CompilerEngine,
35+
add_icon_selector,
36+
add_output_dir,
37+
compute_auto_for_engine,
38+
engine_register,
39+
)
3440

3541

3642
@engine_register
@@ -264,23 +270,17 @@ def create_tab(self, gui):
264270
layout.addWidget(self._nuitka_add_data)
265271

266272
# Output directory
267-
output_layout = QHBoxLayout()
268-
self._nuitka_output_dir = QLineEdit()
269-
self._nuitka_output_dir.setObjectName("nuitka_output_dir_dynamic")
270-
self._nuitka_output_dir.setPlaceholderText(
271-
"Dossier de sortie (--output-dir)"
273+
self._nuitka_output_dir = add_output_dir(
274+
layout, "Dossier de sortie (--output-dir)", "nuitka_output_dir_dynamic"
272275
)
273-
output_layout.addWidget(self._nuitka_output_dir)
274-
layout.addLayout(output_layout)
275276

276277
# Icon button
277-
icon_layout = QHBoxLayout()
278-
self._btn_nuitka_icon = QPushButton("🎨 Choisir une icône (.ico) Nuitka")
279-
self._btn_nuitka_icon.setObjectName("btn_nuitka_icon_dynamic")
280-
self._btn_nuitka_icon.clicked.connect(self.select_icon)
281-
icon_layout.addWidget(self._btn_nuitka_icon)
282-
icon_layout.addStretch()
283-
layout.addLayout(icon_layout)
278+
self._btn_nuitka_icon = add_icon_selector(
279+
layout,
280+
"🎨 Choisir une icône (.ico) Nuitka",
281+
self.select_icon,
282+
"btn_nuitka_icon_dynamic",
283+
)
284284

285285
layout.addStretch()
286286

ENGINES/pyinstaller/__init__.py

Lines changed: 24 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,14 @@
3131
from PySide6.QtCore import QDir
3232
from PySide6.QtWidgets import QFileDialog, QInputDialog
3333

34-
from engine_sdk import CompilerEngine, compute_auto_for_engine, engine_register
34+
from engine_sdk import (
35+
CompilerEngine,
36+
add_form_checkbox,
37+
add_icon_selector,
38+
add_output_dir,
39+
compute_auto_for_engine,
40+
engine_register,
41+
)
3542

3643

3744
@engine_register
@@ -222,14 +229,14 @@ def create_tab(self, gui):
222229
form_layout.setSpacing(8)
223230

224231
# Onefile option
225-
self._opt_onefile = QCheckBox("Onefile")
226-
self._opt_onefile.setObjectName("opt_onefile_dynamic")
227-
form_layout.addRow("Mode:", self._opt_onefile)
232+
self._opt_onefile = add_form_checkbox(
233+
form_layout, "Mode:", "Onefile", "opt_onefile_dynamic"
234+
)
228235

229236
# Windowed option
230-
self._opt_windowed = QCheckBox("Windowed")
231-
self._opt_windowed.setObjectName("opt_windowed_dynamic")
232-
form_layout.addRow("Console:", self._opt_windowed)
237+
self._opt_windowed = add_form_checkbox(
238+
form_layout, "Console:", "Windowed", "opt_windowed_dynamic"
239+
)
233240

234241
# Noconfirm option
235242
self._opt_noconfirm = QCheckBox("Noconfirm")
@@ -254,13 +261,12 @@ def create_tab(self, gui):
254261
layout.addLayout(form_layout)
255262

256263
# Icon button
257-
icon_layout = QHBoxLayout()
258-
self._btn_select_icon = QPushButton("🎨 Choisir une icône (.ico)")
259-
self._btn_select_icon.setObjectName("btn_select_icon_dynamic")
260-
self._btn_select_icon.clicked.connect(self.select_icon)
261-
icon_layout.addWidget(self._btn_select_icon)
262-
icon_layout.addStretch()
263-
layout.addLayout(icon_layout)
264+
self._btn_select_icon = add_icon_selector(
265+
layout,
266+
"🎨 Choisir une icône (.ico)",
267+
self.select_icon,
268+
"btn_select_icon_dynamic",
269+
)
264270

265271
# Debug option
266272
self._opt_debug = QCheckBox("Mode debug (--debug)")
@@ -274,14 +280,11 @@ def create_tab(self, gui):
274280
layout.addWidget(self._pyinstaller_add_data)
275281

276282
# Output directory
277-
output_layout = QHBoxLayout()
278-
self._output_dir_input = QLineEdit()
279-
self._output_dir_input.setObjectName("output_dir_input_dynamic")
280-
self._output_dir_input.setPlaceholderText(
281-
"Dossier de sortie (--distpath). Laisser vide pour ./dist"
283+
self._output_dir_input = add_output_dir(
284+
layout,
285+
"Dossier de sortie (--distpath). Laisser vide pour ./dist",
286+
"output_dir_input_dynamic",
282287
)
283-
output_layout.addWidget(self._output_dir_input)
284-
layout.addLayout(output_layout)
285288

286289
layout.addStretch()
287290

engine_sdk/__init__.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
compute_for_all,
2222
register_auto_builder,
2323
)
24+
from .ui_helpers import add_form_checkbox, add_icon_selector, add_output_dir
2425

2526
__version__ = "1.0.0"
2627
# Re-export the base interface used by the host
@@ -220,6 +221,9 @@ def check_engine_compatibility(engine_class, required_sdk_version: str = None) -
220221
"compute_auto_for_engine",
221222
"compute_for_all",
222223
"register_auto_builder",
224+
"add_form_checkbox",
225+
"add_icon_selector",
226+
"add_output_dir",
223227
"registry",
224228
# Utilities for engine authors
225229
"redact_secrets",

engine_sdk/ui_helpers.py

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
from __future__ import annotations
2+
3+
from PySide6.QtWidgets import QCheckBox, QHBoxLayout, QLineEdit, QPushButton
4+
5+
6+
def add_icon_selector(layout, text: str, callback, object_name: str | None = None):
7+
"""Add a standard icon selector button row to a layout."""
8+
row = QHBoxLayout()
9+
btn = QPushButton(text)
10+
if object_name:
11+
btn.setObjectName(object_name)
12+
if callback:
13+
btn.clicked.connect(callback)
14+
row.addWidget(btn)
15+
row.addStretch()
16+
layout.addLayout(row)
17+
return btn
18+
19+
20+
def add_output_dir(
21+
layout, placeholder: str = "", object_name: str | None = None
22+
) -> QLineEdit:
23+
"""Add a standard output directory input row to a layout."""
24+
row = QHBoxLayout()
25+
line = QLineEdit()
26+
if object_name:
27+
line.setObjectName(object_name)
28+
if placeholder:
29+
line.setPlaceholderText(placeholder)
30+
row.addWidget(line)
31+
layout.addLayout(row)
32+
return line
33+
34+
35+
def add_form_checkbox(
36+
form, row_label: str, checkbox_label: str | None = None, object_name: str | None = None
37+
) -> QCheckBox:
38+
"""Add a labeled checkbox row to a QFormLayout."""
39+
cb = QCheckBox(checkbox_label or row_label)
40+
if object_name:
41+
cb.setObjectName(object_name)
42+
form.addRow(row_label, cb)
43+
return cb

0 commit comments

Comments
 (0)