update and tabs bar adjustments
This commit is contained in:
parent
278f2353fe
commit
1639c71b56
@ -56,8 +56,20 @@ class AlertManager:
|
||||
|
||||
def on_button_clicked(button):
|
||||
if button == details and details_callback:
|
||||
box.setResult(QMessageBox.StandardButton.NoButton)
|
||||
details_callback()
|
||||
if not box.isVisible():
|
||||
box.show()
|
||||
|
||||
box.buttonClicked.connect(on_button_clicked)
|
||||
box.exec()
|
||||
return box.clickedButton() == yes
|
||||
|
||||
while True:
|
||||
result = box.exec()
|
||||
clicked_button = box.clickedButton()
|
||||
|
||||
# Si c'est le bouton détails, on continue la boucle sans fermer
|
||||
if clicked_button == details:
|
||||
continue
|
||||
# Sinon, on sort de la boucle et retourne le résultat
|
||||
else:
|
||||
return clicked_button == yes
|
@ -51,6 +51,7 @@ class ThemeManager:
|
||||
}}
|
||||
QLabel {{
|
||||
color: {self.current_theme.get_color("font_color")};
|
||||
font-size: 20px;
|
||||
}}
|
||||
QProgressBar {{
|
||||
border: 1px solid #3C3C3E;
|
||||
@ -149,4 +150,27 @@ class ThemeManager:
|
||||
background-color: {self.current_theme.get_color("background2")};
|
||||
color: {self.current_theme.get_color("font_color")};
|
||||
}}
|
||||
QComboBox {{
|
||||
padding: 5px;
|
||||
border-radius: 8px;
|
||||
font-size: 14px;
|
||||
min-height: 30px;
|
||||
}}
|
||||
QComboBox {{
|
||||
border: 2px solid {self.current_theme.get_color("border")};
|
||||
}}
|
||||
|
||||
QComboBox::drop-down {{
|
||||
border: none;
|
||||
background: transparent;
|
||||
}}
|
||||
|
||||
QComboBox::down-arrow {{
|
||||
image: none;
|
||||
}}
|
||||
|
||||
/* Optionnel: indicateur visuel au hover */
|
||||
QComboBox:hover {{
|
||||
border-color: #0078d4;
|
||||
}}
|
||||
"""
|
@ -125,7 +125,7 @@ class UpdateManager:
|
||||
parent=parent,
|
||||
details_callback=lambda: self.show_details_dialog(releases, current_version, parent)
|
||||
)
|
||||
|
||||
print(choice)
|
||||
return choice
|
||||
|
||||
def show_details_dialog(self, releases: List[Dict], current_version: str, parent=None) -> None:
|
||||
@ -161,7 +161,7 @@ class UpdateManager:
|
||||
changelog_text += "\n\n"
|
||||
if release != newer_releases[-1]:
|
||||
changelog_text += "---\n\n"
|
||||
print(changelog_text)
|
||||
|
||||
text_edit.setAcceptRichText(True)
|
||||
text_edit.setMarkdown(changelog_text)
|
||||
layout.addWidget(text_edit)
|
||||
|
@ -2,7 +2,7 @@ from PyQt6.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QLabel, QFra
|
||||
from PyQt6.QtGui import QResizeEvent, QCloseEvent
|
||||
from PyQt6.QtCore import QSize, QEvent, Qt
|
||||
from app.core.main_manager import MainManager, NotificationType
|
||||
from app.ui.widgets.tabs_widget import TabsWidget, MenuDirection, ButtonPosition, BorderSide
|
||||
from app.ui.widgets.tabs_widget import TabsWidget, MenuDirection, ButtonPosition, BorderSide, TabSide
|
||||
from app.ui.windows.settings_window import SettingsWindow
|
||||
from app.ui.windows.suggestion_window import SuggestionWindow
|
||||
import app.utils.paths as paths, shutil
|
||||
@ -85,11 +85,8 @@ class MainWindow(QMainWindow):
|
||||
pass
|
||||
|
||||
def setup_ui(self) -> None:
|
||||
central_widget = QFrame(self)
|
||||
layout = QVBoxLayout(central_widget)
|
||||
layout.setContentsMargins(0, 0, 0, 0)
|
||||
|
||||
self.side_menu = TabsWidget(self, MenuDirection.HORIZONTAL, 70, None, 10, 1, BorderSide.TOP)
|
||||
self.side_menu = TabsWidget(self, MenuDirection.HORIZONTAL, 70, None, 10, 1, BorderSide.BOTTOM, TabSide.TOP)
|
||||
|
||||
self.suggestion_window = SuggestionWindow(self)
|
||||
self.side_menu.add_widget(self.suggestion_window, "", paths.get_asset_svg_path("suggestion"), position=ButtonPosition.CENTER)
|
||||
@ -97,17 +94,7 @@ class MainWindow(QMainWindow):
|
||||
self.settings_window = SettingsWindow(self)
|
||||
self.side_menu.add_widget(self.settings_window, "", paths.get_asset_svg_path("settings"), position=ButtonPosition.CENTER)
|
||||
|
||||
layout.addWidget(self.side_menu)
|
||||
|
||||
|
||||
self.footer_label = QLabel(self.language_manager.get_text("footer_text"), self)
|
||||
self.footer_label.setAlignment(Qt.AlignmentFlag.AlignRight)
|
||||
self.footer_label.setStyleSheet("padding: 5px; font-size: 12px; color: gray;")
|
||||
|
||||
layout.addWidget(self.footer_label)
|
||||
|
||||
|
||||
self.setCentralWidget(central_widget)
|
||||
self.setCentralWidget(self.side_menu)
|
||||
|
||||
def update_theme(self) -> None:
|
||||
self.setStyleSheet(self.theme_manager.get_sheet())
|
||||
|
@ -25,8 +25,14 @@ class BorderSide(Enum):
|
||||
BOTTOM = "bottom"
|
||||
NONE = None
|
||||
|
||||
class TabSide(Enum):
|
||||
LEFT = 0 # Barre à gauche (pour VERTICAL)
|
||||
RIGHT = 1 # Barre à droite (pour VERTICAL)
|
||||
TOP = 0 # Barre en haut (pour HORIZONTAL)
|
||||
BOTTOM = 1 # Barre en bas (pour HORIZONTAL)
|
||||
|
||||
class TabsWidget(QWidget):
|
||||
def __init__(self, parent=None, direction=MenuDirection.VERTICAL, menu_width=80, onTabChange=None, spacing=10, button_size_ratio=0.8, border_side=BorderSide.LEFT):
|
||||
def __init__(self, parent=None, direction=MenuDirection.VERTICAL, menu_width=80, onTabChange=None, spacing=10, button_size_ratio=0.8, border_side=BorderSide.LEFT, tab_side=None):
|
||||
super().__init__(parent)
|
||||
self.main_manager = MainManager.get_instance()
|
||||
self.theme_manager = self.main_manager.get_theme_manager()
|
||||
@ -36,7 +42,22 @@ class TabsWidget(QWidget):
|
||||
self.menu_width = menu_width
|
||||
self.button_size_ratio = button_size_ratio # Default ratio for button size relative to menu width
|
||||
self.onTabChange = onTabChange
|
||||
self.border_side = border_side # Store border side preference
|
||||
|
||||
# Gérer border_side comme une liste ou un seul élément
|
||||
if isinstance(border_side, list):
|
||||
self.border_sides = border_side
|
||||
elif border_side is not None:
|
||||
self.border_sides = [border_side]
|
||||
else:
|
||||
self.border_sides = []
|
||||
|
||||
# Déterminer le côté de la barre d'onglets
|
||||
if tab_side is None:
|
||||
# Valeurs par défaut basées sur la direction
|
||||
self.tab_side = TabSide.LEFT if direction == MenuDirection.VERTICAL else TabSide.TOP
|
||||
else:
|
||||
self.tab_side = tab_side
|
||||
|
||||
self.buttons = []
|
||||
self.widgets = []
|
||||
self.button_positions = []
|
||||
@ -61,7 +82,7 @@ class TabsWidget(QWidget):
|
||||
self._setup_ui()
|
||||
|
||||
def _setup_ui(self):
|
||||
"""Setup the main layout based on direction"""
|
||||
"""Setup the main layout based on direction and tab_side"""
|
||||
if self.direction == MenuDirection.HORIZONTAL:
|
||||
self.main_layout = QVBoxLayout(self)
|
||||
self.button_layout = QHBoxLayout()
|
||||
@ -96,13 +117,13 @@ class TabsWidget(QWidget):
|
||||
# Initialize spacers for alignment zones
|
||||
self._setup_alignment_zones()
|
||||
|
||||
# Add widgets to main layout based on direction
|
||||
if self.direction == MenuDirection.HORIZONTAL:
|
||||
# Add widgets to main layout based on direction and tab_side
|
||||
if self.tab_side == TabSide.LEFT:
|
||||
self.main_layout.addWidget(self.button_container)
|
||||
self.main_layout.addWidget(self.stacked_widget)
|
||||
else: # VERTICAL
|
||||
self.main_layout.addWidget(self.button_container)
|
||||
else: # TabSide.RIGHT
|
||||
self.main_layout.addWidget(self.stacked_widget)
|
||||
self.main_layout.addWidget(self.button_container)
|
||||
|
||||
self.setLayout(self.main_layout)
|
||||
|
||||
@ -215,7 +236,7 @@ class TabsWidget(QWidget):
|
||||
# Set size policy
|
||||
button.setSizePolicy(QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Fixed)
|
||||
|
||||
# Create border style based on border_side setting
|
||||
# Create border style based on border_sides setting
|
||||
border_style = self._get_border_style()
|
||||
button.setStyleSheet(border_style)
|
||||
|
||||
@ -243,8 +264,8 @@ class TabsWidget(QWidget):
|
||||
return super().eventFilter(obj, event)
|
||||
|
||||
def _get_border_style(self):
|
||||
"""Generate CSS border style based on border_side setting"""
|
||||
if self.border_side == BorderSide.NONE or self.border_side is None:
|
||||
"""Generate CSS border style based on border_sides setting"""
|
||||
if not self.border_sides or BorderSide.NONE in self.border_sides:
|
||||
return f"""
|
||||
QPushButton {{
|
||||
border-radius: 0px;
|
||||
@ -258,16 +279,28 @@ class TabsWidget(QWidget):
|
||||
}}
|
||||
"""
|
||||
|
||||
# Construire le style CSS pour chaque côté de bordure
|
||||
border_declarations = []
|
||||
selected_border_declarations = []
|
||||
|
||||
for border_side in self.border_sides:
|
||||
if border_side != BorderSide.NONE and border_side is not None:
|
||||
border_declarations.append(f"border-{border_side.value}: 3px solid transparent")
|
||||
selected_border_declarations.append(f"border-{border_side.value}: 3px solid {self.selected_border_icon_color}")
|
||||
|
||||
border_style = "; ".join(border_declarations)
|
||||
selected_border_style = "; ".join(selected_border_declarations)
|
||||
|
||||
return f"""
|
||||
QPushButton {{
|
||||
border-radius: 0px;
|
||||
background-color: transparent;
|
||||
border-{self.border_side.value}: 3px solid transparent;
|
||||
{border_style};
|
||||
}}
|
||||
QPushButton[selected="true"] {{
|
||||
border-radius: 0px;
|
||||
background-color: transparent;
|
||||
border-{self.border_side.value}: 3px solid {self.selected_border_icon_color};
|
||||
{selected_border_style};
|
||||
}}
|
||||
"""
|
||||
|
||||
|
@ -1,9 +1,9 @@
|
||||
{
|
||||
"app_name": "HoDA",
|
||||
"app_name": "Application",
|
||||
"app_os": "Windows",
|
||||
"app_version": "1.0.0",
|
||||
"architecture": "x64",
|
||||
"icon_path": "data/assets/icon.ico",
|
||||
"main_script": "main.py",
|
||||
"git_repo": "https://gitea.louismazin.ovh/LouisMazin/HoDA"
|
||||
"git_repo": "https://gitea.louismazin.ovh/LouisMazin/PythonApplicationTemplate"
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user