Compare commits
15 Commits
linux
..
abd1a1073a
| Author | SHA1 | Date | |
|---|---|---|---|
| abd1a1073a | |||
| 18c708597a | |||
| 52e4c01f3d | |||
| 75893a8a01 | |||
| cc8aa03102 | |||
| a2e1153340 | |||
| 8c4aa284b7 | |||
| a437de91df | |||
| 42768aa78a | |||
| 8e7242937e | |||
| a4bcd764db | |||
| 8395b2f220 | |||
| b643188418 | |||
| 097524cd27 | |||
| 4be6dd8b84 |
@@ -0,0 +1,15 @@
|
|||||||
|
root = true
|
||||||
|
|
||||||
|
[*]
|
||||||
|
charset = utf-8
|
||||||
|
trim_trailing_whitespace = true
|
||||||
|
end_of_line = lf
|
||||||
|
indent_style = space
|
||||||
|
insert_final_newline = true
|
||||||
|
indent_size = 2
|
||||||
|
|
||||||
|
[*.py]
|
||||||
|
indent_size = 4
|
||||||
|
|
||||||
|
[pyproject.toml]
|
||||||
|
indent_size = 4
|
||||||
+401
@@ -0,0 +1,401 @@
|
|||||||
|
.vscode/*
|
||||||
|
!.vscode/settings.json
|
||||||
|
!.vscode/tasks.json
|
||||||
|
!.vscode/launch.json
|
||||||
|
!.vscode/extensions.json
|
||||||
|
!.vscode/*.code-snippets
|
||||||
|
!*.code-workspace
|
||||||
|
|
||||||
|
# Built Visual Studio Code Extensions
|
||||||
|
*.vsix
|
||||||
|
|
||||||
|
# Byte-compiled / optimized / DLL files
|
||||||
|
__pycache__/
|
||||||
|
*.py[codz]
|
||||||
|
*$py.class
|
||||||
|
|
||||||
|
# C extensions
|
||||||
|
*.so
|
||||||
|
|
||||||
|
# Distribution / packaging
|
||||||
|
.Python
|
||||||
|
build/
|
||||||
|
develop-eggs/
|
||||||
|
dist/
|
||||||
|
downloads/
|
||||||
|
eggs/
|
||||||
|
.eggs/
|
||||||
|
lib/
|
||||||
|
lib64/
|
||||||
|
parts/
|
||||||
|
sdist/
|
||||||
|
var/
|
||||||
|
wheels/
|
||||||
|
share/python-wheels/
|
||||||
|
*.egg-info/
|
||||||
|
.installed.cfg
|
||||||
|
*.egg
|
||||||
|
MANIFEST
|
||||||
|
|
||||||
|
# PyInstaller
|
||||||
|
# Usually these files are written by a python script from a template
|
||||||
|
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
||||||
|
*.manifest
|
||||||
|
*.spec
|
||||||
|
|
||||||
|
# Installer logs
|
||||||
|
pip-log.txt
|
||||||
|
pip-delete-this-directory.txt
|
||||||
|
|
||||||
|
# Unit test / coverage reports
|
||||||
|
htmlcov/
|
||||||
|
.tox/
|
||||||
|
.nox/
|
||||||
|
.coverage
|
||||||
|
.coverage.*
|
||||||
|
.cache
|
||||||
|
nosetests.xml
|
||||||
|
coverage.xml
|
||||||
|
*.cover
|
||||||
|
*.py.cover
|
||||||
|
.hypothesis/
|
||||||
|
.pytest_cache/
|
||||||
|
cover/
|
||||||
|
|
||||||
|
# Translations
|
||||||
|
*.mo
|
||||||
|
*.pot
|
||||||
|
|
||||||
|
# Django stuff:
|
||||||
|
*.log
|
||||||
|
local_settings.py
|
||||||
|
db.sqlite3
|
||||||
|
db.sqlite3-journal
|
||||||
|
|
||||||
|
# Flask stuff:
|
||||||
|
instance/
|
||||||
|
.webassets-cache
|
||||||
|
|
||||||
|
# Scrapy stuff:
|
||||||
|
.scrapy
|
||||||
|
|
||||||
|
# Sphinx documentation
|
||||||
|
docs/_build/
|
||||||
|
|
||||||
|
# PyBuilder
|
||||||
|
.pybuilder/
|
||||||
|
target/
|
||||||
|
|
||||||
|
# Jupyter Notebook
|
||||||
|
.ipynb_checkpoints
|
||||||
|
|
||||||
|
# IPython
|
||||||
|
profile_default/
|
||||||
|
ipython_config.py
|
||||||
|
|
||||||
|
# pyenv
|
||||||
|
# For a library or package, you might want to ignore these files since the code is
|
||||||
|
# intended to run in multiple environments; otherwise, check them in:
|
||||||
|
# .python-version
|
||||||
|
|
||||||
|
# pipenv
|
||||||
|
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
|
||||||
|
# However, in case of collaboration, if having platform-specific dependencies or dependencies
|
||||||
|
# having no cross-platform support, pipenv may install dependencies that don't work, or not
|
||||||
|
# install all needed dependencies.
|
||||||
|
# Pipfile.lock
|
||||||
|
|
||||||
|
# UV
|
||||||
|
# Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control.
|
||||||
|
# This is especially recommended for binary packages to ensure reproducibility, and is more
|
||||||
|
# commonly ignored for libraries.
|
||||||
|
# uv.lock
|
||||||
|
|
||||||
|
# poetry
|
||||||
|
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
|
||||||
|
# This is especially recommended for binary packages to ensure reproducibility, and is more
|
||||||
|
# commonly ignored for libraries.
|
||||||
|
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
|
||||||
|
# poetry.lock
|
||||||
|
# poetry.toml
|
||||||
|
|
||||||
|
# pdm
|
||||||
|
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
|
||||||
|
# pdm recommends including project-wide configuration in pdm.toml, but excluding .pdm-python.
|
||||||
|
# https://pdm-project.org/en/latest/usage/project/#working-with-version-control
|
||||||
|
# pdm.lock
|
||||||
|
# pdm.toml
|
||||||
|
.pdm-python
|
||||||
|
.pdm-build/
|
||||||
|
|
||||||
|
# pixi
|
||||||
|
# Similar to Pipfile.lock, it is generally recommended to include pixi.lock in version control.
|
||||||
|
# pixi.lock
|
||||||
|
# Pixi creates a virtual environment in the .pixi directory, just like venv module creates one
|
||||||
|
# in the .venv directory. It is recommended not to include this directory in version control.
|
||||||
|
.pixi
|
||||||
|
|
||||||
|
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
|
||||||
|
__pypackages__/
|
||||||
|
|
||||||
|
# Celery stuff
|
||||||
|
celerybeat-schedule
|
||||||
|
celerybeat.pid
|
||||||
|
|
||||||
|
# Redis
|
||||||
|
*.rdb
|
||||||
|
*.aof
|
||||||
|
*.pid
|
||||||
|
|
||||||
|
# RabbitMQ
|
||||||
|
mnesia/
|
||||||
|
rabbitmq/
|
||||||
|
rabbitmq-data/
|
||||||
|
|
||||||
|
# ActiveMQ
|
||||||
|
activemq-data/
|
||||||
|
|
||||||
|
# SageMath parsed files
|
||||||
|
*.sage.py
|
||||||
|
|
||||||
|
# Environments
|
||||||
|
.env
|
||||||
|
.envrc
|
||||||
|
.venv
|
||||||
|
env/
|
||||||
|
venv/
|
||||||
|
ENV/
|
||||||
|
env.bak/
|
||||||
|
venv.bak/
|
||||||
|
|
||||||
|
# Spyder project settings
|
||||||
|
.spyderproject
|
||||||
|
.spyproject
|
||||||
|
|
||||||
|
# Rope project settings
|
||||||
|
.ropeproject
|
||||||
|
|
||||||
|
# mkdocs documentation
|
||||||
|
/site
|
||||||
|
|
||||||
|
# mypy
|
||||||
|
.mypy_cache/
|
||||||
|
.dmypy.json
|
||||||
|
dmypy.json
|
||||||
|
|
||||||
|
# Pyre type checker
|
||||||
|
.pyre/
|
||||||
|
|
||||||
|
# pytype static type analyzer
|
||||||
|
.pytype/
|
||||||
|
|
||||||
|
# Cython debug symbols
|
||||||
|
cython_debug/
|
||||||
|
|
||||||
|
# PyCharm
|
||||||
|
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
|
||||||
|
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
|
||||||
|
# and can be added to the global gitignore or merged into this file. For a more nuclear
|
||||||
|
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
|
||||||
|
# .idea/
|
||||||
|
|
||||||
|
# Abstra
|
||||||
|
# Abstra is an AI-powered process automation framework.
|
||||||
|
# Ignore directories containing user credentials, local state, and settings.
|
||||||
|
# Learn more at https://abstra.io/docs
|
||||||
|
.abstra/
|
||||||
|
|
||||||
|
# Visual Studio Code
|
||||||
|
# Visual Studio Code specific template is maintained in a separate VisualStudioCode.gitignore
|
||||||
|
# that can be found at https://github.com/github/gitignore/blob/main/Global/VisualStudioCode.gitignore
|
||||||
|
# and can be added to the global gitignore or merged into this file. However, if you prefer,
|
||||||
|
# you could uncomment the following to ignore the entire vscode folder
|
||||||
|
# .vscode/
|
||||||
|
|
||||||
|
# Ruff stuff:
|
||||||
|
.ruff_cache/
|
||||||
|
|
||||||
|
# PyPI configuration file
|
||||||
|
.pypirc
|
||||||
|
|
||||||
|
# Marimo
|
||||||
|
marimo/_static/
|
||||||
|
marimo/_lsp/
|
||||||
|
__marimo__/
|
||||||
|
|
||||||
|
# Streamlit
|
||||||
|
.streamlit/secrets.toml
|
||||||
|
|
||||||
|
# Covers JetBrains IDEs: IntelliJ, GoLand, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
|
||||||
|
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
|
||||||
|
|
||||||
|
# User-specific stuff
|
||||||
|
.idea/**/workspace.xml
|
||||||
|
.idea/**/tasks.xml
|
||||||
|
.idea/**/usage.statistics.xml
|
||||||
|
.idea/**/dictionaries
|
||||||
|
.idea/**/shelf
|
||||||
|
|
||||||
|
# AWS User-specific
|
||||||
|
.idea/**/aws.xml
|
||||||
|
|
||||||
|
# Generated files
|
||||||
|
.idea/**/contentModel.xml
|
||||||
|
|
||||||
|
# Sensitive or high-churn files
|
||||||
|
.idea/**/dataSources/
|
||||||
|
.idea/**/dataSources.ids
|
||||||
|
.idea/**/dataSources.local.xml
|
||||||
|
.idea/**/sqlDataSources.xml
|
||||||
|
.idea/**/dynamic.xml
|
||||||
|
.idea/**/uiDesigner.xml
|
||||||
|
.idea/**/dbnavigator.xml
|
||||||
|
|
||||||
|
# Gradle
|
||||||
|
.idea/**/gradle.xml
|
||||||
|
.idea/**/libraries
|
||||||
|
|
||||||
|
# Gradle and Maven with auto-import
|
||||||
|
# When using Gradle or Maven with auto-import, you should exclude module files,
|
||||||
|
# since they will be recreated, and may cause churn. Uncomment if using
|
||||||
|
# auto-import.
|
||||||
|
# .idea/artifacts
|
||||||
|
# .idea/compiler.xml
|
||||||
|
# .idea/jarRepositories.xml
|
||||||
|
# .idea/modules.xml
|
||||||
|
# .idea/*.iml
|
||||||
|
# .idea/modules
|
||||||
|
# *.iml
|
||||||
|
# *.ipr
|
||||||
|
|
||||||
|
# CMake
|
||||||
|
cmake-build-*/
|
||||||
|
|
||||||
|
# Mongo Explorer plugin
|
||||||
|
.idea/**/mongoSettings.xml
|
||||||
|
|
||||||
|
# File-based project format
|
||||||
|
*.iws
|
||||||
|
|
||||||
|
# IntelliJ
|
||||||
|
out/
|
||||||
|
|
||||||
|
# mpeltonen/sbt-idea plugin
|
||||||
|
.idea_modules/
|
||||||
|
|
||||||
|
# JIRA plugin
|
||||||
|
atlassian-ide-plugin.xml
|
||||||
|
|
||||||
|
# Cursive Clojure plugin
|
||||||
|
.idea/replstate.xml
|
||||||
|
|
||||||
|
# SonarLint plugin
|
||||||
|
.idea/sonarlint/
|
||||||
|
.idea/sonarlint.xml # see https://community.sonarsource.com/t/is-the-file-idea-idea-idea-sonarlint-xml-intended-to-be-under-source-control/121119
|
||||||
|
|
||||||
|
# Crashlytics plugin (for Android Studio and IntelliJ)
|
||||||
|
com_crashlytics_export_strings.xml
|
||||||
|
crashlytics.properties
|
||||||
|
crashlytics-build.properties
|
||||||
|
fabric.properties
|
||||||
|
|
||||||
|
# Editor-based HTTP Client
|
||||||
|
.idea/httpRequests
|
||||||
|
http-client.private.env.json
|
||||||
|
|
||||||
|
# Android studio 3.1+ serialized cache file
|
||||||
|
.idea/caches/build_file_checksums.ser
|
||||||
|
|
||||||
|
# Apifox Helper cache
|
||||||
|
.idea/.cache/.Apifox_Helper
|
||||||
|
.idea/ApifoxUploaderProjectSetting.xml
|
||||||
|
|
||||||
|
# Github Copilot persisted session migrations, see: https://github.com/microsoft/copilot-intellij-feedback/issues/712#issuecomment-3322062215
|
||||||
|
.idea/**/copilot.data.migration.*.xml
|
||||||
|
|
||||||
|
# Covers JetBrains IDEs: IntelliJ, GoLand, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
|
||||||
|
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
|
||||||
|
|
||||||
|
# User-specific stuff
|
||||||
|
.idea/**/workspace.xml
|
||||||
|
.idea/**/tasks.xml
|
||||||
|
.idea/**/usage.statistics.xml
|
||||||
|
.idea/**/dictionaries
|
||||||
|
.idea/**/shelf
|
||||||
|
|
||||||
|
# AWS User-specific
|
||||||
|
.idea/**/aws.xml
|
||||||
|
|
||||||
|
# Generated files
|
||||||
|
.idea/**/contentModel.xml
|
||||||
|
|
||||||
|
# Sensitive or high-churn files
|
||||||
|
.idea/**/dataSources/
|
||||||
|
.idea/**/dataSources.ids
|
||||||
|
.idea/**/dataSources.local.xml
|
||||||
|
.idea/**/sqlDataSources.xml
|
||||||
|
.idea/**/dynamic.xml
|
||||||
|
.idea/**/uiDesigner.xml
|
||||||
|
.idea/**/dbnavigator.xml
|
||||||
|
|
||||||
|
# Gradle
|
||||||
|
.idea/**/gradle.xml
|
||||||
|
.idea/**/libraries
|
||||||
|
|
||||||
|
# Gradle and Maven with auto-import
|
||||||
|
# When using Gradle or Maven with auto-import, you should exclude module files,
|
||||||
|
# since they will be recreated, and may cause churn. Uncomment if using
|
||||||
|
# auto-import.
|
||||||
|
# .idea/artifacts
|
||||||
|
# .idea/compiler.xml
|
||||||
|
# .idea/jarRepositories.xml
|
||||||
|
# .idea/modules.xml
|
||||||
|
# .idea/*.iml
|
||||||
|
# .idea/modules
|
||||||
|
# *.iml
|
||||||
|
# *.ipr
|
||||||
|
|
||||||
|
# CMake
|
||||||
|
cmake-build-*/
|
||||||
|
|
||||||
|
# Mongo Explorer plugin
|
||||||
|
.idea/**/mongoSettings.xml
|
||||||
|
|
||||||
|
# File-based project format
|
||||||
|
*.iws
|
||||||
|
|
||||||
|
# IntelliJ
|
||||||
|
out/
|
||||||
|
|
||||||
|
# mpeltonen/sbt-idea plugin
|
||||||
|
.idea_modules/
|
||||||
|
|
||||||
|
# JIRA plugin
|
||||||
|
atlassian-ide-plugin.xml
|
||||||
|
|
||||||
|
# Cursive Clojure plugin
|
||||||
|
.idea/replstate.xml
|
||||||
|
|
||||||
|
# SonarLint plugin
|
||||||
|
.idea/sonarlint/
|
||||||
|
.idea/sonarlint.xml # see https://community.sonarsource.com/t/is-the-file-idea-idea-idea-sonarlint-xml-intended-to-be-under-source-control/121119
|
||||||
|
|
||||||
|
# Crashlytics plugin (for Android Studio and IntelliJ)
|
||||||
|
com_crashlytics_export_strings.xml
|
||||||
|
crashlytics.properties
|
||||||
|
crashlytics-build.properties
|
||||||
|
fabric.properties
|
||||||
|
|
||||||
|
# Editor-based HTTP Client
|
||||||
|
.idea/httpRequests
|
||||||
|
http-client.private.env.json
|
||||||
|
|
||||||
|
# Android studio 3.1+ serialized cache file
|
||||||
|
.idea/caches/build_file_checksums.ser
|
||||||
|
|
||||||
|
# Apifox Helper cache
|
||||||
|
.idea/.cache/.Apifox_Helper
|
||||||
|
.idea/ApifoxUploaderProjectSetting.xml
|
||||||
|
|
||||||
|
# Github Copilot persisted session migrations, see: https://github.com/microsoft/copilot-intellij-feedback/issues/712#issuecomment-3322062215
|
||||||
|
.idea/**/copilot.data.migration.*.xml
|
||||||
Generated
+10
@@ -0,0 +1,10 @@
|
|||||||
|
# Default ignored files
|
||||||
|
/shelf/
|
||||||
|
/workspace.xml
|
||||||
|
# Ignored default folder with query files
|
||||||
|
/queries/
|
||||||
|
# Datasource local storage ignored files
|
||||||
|
/dataSources/
|
||||||
|
/dataSources.local.xml
|
||||||
|
# Editor-based HTTP Client requests
|
||||||
|
/httpRequests/
|
||||||
Generated
+11
@@ -0,0 +1,11 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<module type="PYTHON_MODULE" version="4">
|
||||||
|
<component name="NewModuleRootManager">
|
||||||
|
<content url="file://$MODULE_DIR$">
|
||||||
|
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/.venv" />
|
||||||
|
</content>
|
||||||
|
<orderEntry type="jdk" jdkName="uv (PyQt6_LaTaniere)" jdkType="Python SDK" />
|
||||||
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
|
</component>
|
||||||
|
</module>
|
||||||
+6
@@ -0,0 +1,6 @@
|
|||||||
|
<component name="InspectionProjectProfileManager">
|
||||||
|
<settings>
|
||||||
|
<option name="USE_PROJECT_PROFILE" value="false" />
|
||||||
|
<version value="1.0" />
|
||||||
|
</settings>
|
||||||
|
</component>
|
||||||
Generated
+7
@@ -0,0 +1,7 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="Black">
|
||||||
|
<option name="sdkName" value="uv (PyQt6_LaTaniere)" />
|
||||||
|
</component>
|
||||||
|
<component name="ProjectRootManager" version="2" project-jdk-name="uv (PyQt6_LaTaniere)" project-jdk-type="Python SDK" />
|
||||||
|
</project>
|
||||||
Generated
+8
@@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="ProjectModuleManager">
|
||||||
|
<modules>
|
||||||
|
<module fileurl="file://$PROJECT_DIR$/.idea/PyQt6_LaTaniere.iml" filepath="$PROJECT_DIR$/.idea/PyQt6_LaTaniere.iml" />
|
||||||
|
</modules>
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
Generated
+6
@@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="VcsDirectoryMappings">
|
||||||
|
<mapping directory="" vcs="Git" />
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
Vendored
+19
@@ -0,0 +1,19 @@
|
|||||||
|
{
|
||||||
|
"recommendations": [
|
||||||
|
"ms-python.python",
|
||||||
|
"ms-python.debugpy",
|
||||||
|
"ms-python.vscode-pylance",
|
||||||
|
"ms-python.vscode-python-envs",
|
||||||
|
"ms-python.mypy-type-checker",
|
||||||
|
"charliermarsh.ruff",
|
||||||
|
"editorconfig.editorconfig",
|
||||||
|
"njpwerner.autodocstring",
|
||||||
|
"redhat.vscode-yaml",
|
||||||
|
"tamasfe.even-better-toml",
|
||||||
|
"codezombiech.gitignore",
|
||||||
|
"theqtcompany.qt-core",
|
||||||
|
"theqtcompany.qt-ui",
|
||||||
|
"theqtcompany.qt-python",
|
||||||
|
"theqtcompany.qt-qml",
|
||||||
|
]
|
||||||
|
}
|
||||||
Vendored
+6
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"python.analysis.autoImportCompletions": true,
|
||||||
|
"python.analysis.extraPaths": [".venv/lib/python3.11/site-packages"],
|
||||||
|
"python.analysis.fixAll": ["source.unusedImports"],
|
||||||
|
"python.languageServer": "Pylance"
|
||||||
|
}
|
||||||
@@ -0,0 +1,133 @@
|
|||||||
|
# -*- mode: python ; coding: utf-8 -*-
|
||||||
|
|
||||||
|
|
||||||
|
a = Analysis(
|
||||||
|
['src\\mainwindow.py'],
|
||||||
|
pathex=[],
|
||||||
|
binaries=[],
|
||||||
|
datas=[
|
||||||
|
('.\\styles\\styles.qss', 'styles'),
|
||||||
|
('.\\ui\\mainwindow.ui', 'ui')
|
||||||
|
],
|
||||||
|
hiddenimports=[],
|
||||||
|
hookspath=[],
|
||||||
|
hooksconfig={
|
||||||
|
"qt_plugins": ["platforms", "styles"]
|
||||||
|
},
|
||||||
|
runtime_hooks=[],
|
||||||
|
excludes=[
|
||||||
|
# PySide6 - modules non utilisés
|
||||||
|
'PySide6.Qt3DAnimation',
|
||||||
|
'PySide6.Qt3DCore',
|
||||||
|
'PySide6.Qt3DExtras',
|
||||||
|
'PySide6.Qt3DInput',
|
||||||
|
'PySide6.Qt3DLogic',
|
||||||
|
'PySide6.Qt3DRender',
|
||||||
|
'PySide6.QtAxContainer',
|
||||||
|
'PySide6.QtBluetooth',
|
||||||
|
'PySide6.QtCharts',
|
||||||
|
'PySide6.QtConcurrent',
|
||||||
|
'PySide6.QtDataVisualization',
|
||||||
|
'PySide6.QtDesigner',
|
||||||
|
'PySide6.QtHelp',
|
||||||
|
'PySide6.QtLocation',
|
||||||
|
'PySide6.QtMultimedia',
|
||||||
|
'PySide6.QtMultimediaWidgets',
|
||||||
|
'PySide6.QtNetwork',
|
||||||
|
'PySide6.QtNetworkAuth',
|
||||||
|
'PySide6.QtNfc',
|
||||||
|
'PySide6.QtOpenGL',
|
||||||
|
'PySide6.QtOpenGLWidgets',
|
||||||
|
'PySide6.QtPdf',
|
||||||
|
'PySide6.QtPdfWidgets',
|
||||||
|
'PySide6.QtPositioning',
|
||||||
|
'PySide6.QtPrintSupport',
|
||||||
|
'PySide6.QtQml',
|
||||||
|
'PySide6.QtQuick',
|
||||||
|
'PySide6.QtQuick3D',
|
||||||
|
'PySide6.QtQuickControls2',
|
||||||
|
'PySide6.QtQuickWidgets',
|
||||||
|
'PySide6.QtRemoteObjects',
|
||||||
|
'PySide6.QtScxml',
|
||||||
|
'PySide6.QtSensors',
|
||||||
|
'PySide6.QtSerialBus',
|
||||||
|
'PySide6.QtSerialPort',
|
||||||
|
'PySide6.QtSpatialAudio',
|
||||||
|
'PySide6.QtSql',
|
||||||
|
'PySide6.QtStateMachine',
|
||||||
|
'PySide6.QtSvg',
|
||||||
|
'PySide6.QtSvgWidgets',
|
||||||
|
'PySide6.QtTest',
|
||||||
|
'PySide6.QtTextToSpeech',
|
||||||
|
'PySide6.QtWebChannel',
|
||||||
|
'PySide6.QtWebEngineCore',
|
||||||
|
'PySide6.QtWebEngineQuick',
|
||||||
|
'PySide6.QtWebEngineWidgets',
|
||||||
|
'PySide6.QtWebSockets',
|
||||||
|
'PySide6.QtXml',
|
||||||
|
|
||||||
|
# Stdlib inutile en prod
|
||||||
|
'unittest',
|
||||||
|
'email',
|
||||||
|
'html',
|
||||||
|
'http',
|
||||||
|
'xmlrpc',
|
||||||
|
'pydoc',
|
||||||
|
'doctest',
|
||||||
|
'difflib',
|
||||||
|
'tkinter',
|
||||||
|
'curses',
|
||||||
|
'readline',
|
||||||
|
'xml',
|
||||||
|
'xmlrpc',
|
||||||
|
'csv',
|
||||||
|
'multiprocessing',
|
||||||
|
'concurrent',
|
||||||
|
'asyncio', # non utilisé dans ton code
|
||||||
|
'sqlite3',
|
||||||
|
'ssl',
|
||||||
|
'socket', # win11toast peut en avoir besoin, à tester
|
||||||
|
'ctypes', # idem, à tester
|
||||||
|
'lib2to3',
|
||||||
|
'test',
|
||||||
|
'distutils',
|
||||||
|
'setuptools',
|
||||||
|
'pkg_resources',
|
||||||
|
'pip',
|
||||||
|
],
|
||||||
|
noarchive=False,
|
||||||
|
optimize=2, # optimisation bytecode
|
||||||
|
)
|
||||||
|
pyz = PYZ(a.pure, a.zipped_data)
|
||||||
|
|
||||||
|
exe = EXE(
|
||||||
|
pyz,
|
||||||
|
a.scripts,
|
||||||
|
a.binaries,
|
||||||
|
a.datas,
|
||||||
|
[],
|
||||||
|
name='La Tanière Launcher',
|
||||||
|
debug=False,
|
||||||
|
bootloader_ignore_signals=False,
|
||||||
|
strip=False, # True = enlève symboles debug
|
||||||
|
upx=True,
|
||||||
|
upx_exclude=[
|
||||||
|
"_uuid.pyd",
|
||||||
|
"Qt6Core.dll",
|
||||||
|
"Qt6Gui.dll",
|
||||||
|
"Qt6Widgets.dll",
|
||||||
|
"Qt6UiTools.dll",
|
||||||
|
"qwindows.dll",
|
||||||
|
"python3*.dll",
|
||||||
|
"vcruntime*.dll",
|
||||||
|
"msvcp*.dll",
|
||||||
|
],
|
||||||
|
runtime_tmpdir=None,
|
||||||
|
console=False,
|
||||||
|
disable_windowed_traceback=True,
|
||||||
|
argv_emulation=False,
|
||||||
|
target_arch=None,
|
||||||
|
codesign_identity=None,
|
||||||
|
entitlements_file=None,
|
||||||
|
icon=['assets\\Icone.ico'],
|
||||||
|
)
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
After Width: | Height: | Size: 12 KiB |
@@ -0,0 +1,23 @@
|
|||||||
|
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||||
|
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
viewBox="0 0 501.333 501.333" xml:space="preserve">
|
||||||
|
<path style="fill:#637888;" d="M458.667,241.067c0,11.733-8.533,21.333-20.267,21.333H62.933c-10.667,0-20.267-9.6-20.267-21.333
|
||||||
|
V21.333C42.667,9.6,51.2,0,62.933,0H438.4c10.667,0,20.267,9.6,20.267,21.333L458.667,241.067L458.667,241.067z"/>
|
||||||
|
<path style="fill:#53C2EF;" d="M62.933,249.6c-5.333,0-8.533-4.267-8.533-9.6V21.333c0-5.333,4.267-9.6,8.533-9.6H438.4
|
||||||
|
c5.333,0,8.533,4.267,8.533,9.6v219.733c0,5.333-4.267,9.6-8.533,9.6H62.933V249.6z"/>
|
||||||
|
<rect x="166.4" y="262.4" style="fill:#3A5569;" width="168.533" height="61.867"/>
|
||||||
|
<path style="fill:#637888;" d="M363.733,317.867H137.6c-18.133,0-34.133,10.667-34.133,23.467h294.4
|
||||||
|
C397.867,328.533,382.933,317.867,363.733,317.867z"/>
|
||||||
|
<rect y="342.4" style="fill:#3A5569;" width="501.333" height="158.933"/>
|
||||||
|
<g>
|
||||||
|
<rect x="268.8" y="375.467" style="fill:#637888;" width="194.133" height="45.867"/>
|
||||||
|
<rect x="28.8" y="364.8" style="fill:#637888;" width="11.733" height="113.067"/>
|
||||||
|
<rect x="60.8" y="364.8" style="fill:#637888;" width="11.733" height="113.067"/>
|
||||||
|
<rect x="91.733" y="364.8" style="fill:#637888;" width="11.733" height="113.067"/>
|
||||||
|
<rect x="122.667" y="364.8" style="fill:#637888;" width="11.733" height="113.067"/>
|
||||||
|
<rect x="153.6" y="364.8" style="fill:#637888;" width="11.733" height="113.067"/>
|
||||||
|
</g>
|
||||||
|
<circle style="fill:#F16D6E;" cx="225.067" cy="400" r="11.733"/>
|
||||||
|
<circle style="fill:#60C3AB;" cx="225.067" cy="443.733" r="11.733"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.6 KiB |
@@ -0,0 +1,14 @@
|
|||||||
|
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||||
|
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg height="800px" width="800px" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
viewBox="0 0 512.001 512.001" xml:space="preserve">
|
||||||
|
<path style="fill:#FF9E16;" d="M459.897,231.945c0-16.19-13.246-29.436-29.436-29.436H81.54c-16.19,0-29.436,13.247-29.436,29.436
|
||||||
|
v250.619C52.104,498.754,65.349,512,81.54,512H430.46c16.189,0,29.436-13.246,29.436-29.436V231.945H459.897z"/>
|
||||||
|
<path style="fill:#0071CE;" d="M52.104,458.106v24.459c0,16.189,13.245,29.436,29.436,29.436H430.46
|
||||||
|
c16.189,0,29.436-13.246,29.436-29.436v-24.459H52.104z"/>
|
||||||
|
<path style="fill:#0055B8;" d="M284.42,344.612c14.456-9.34,24.033-25.585,24.033-44.077c0-28.969-23.484-52.453-52.453-52.453
|
||||||
|
s-52.453,23.484-52.453,52.453c0,18.491,9.578,34.736,24.034,44.077l-9.012,61.623c-0.809,5.538,3.107,10.069,8.703,10.069h57.457
|
||||||
|
c5.597,0,9.513-4.531,8.703-10.069L284.42,344.612z"/>
|
||||||
|
<path style="fill:#333E48;" d="M384.933,202.51h-52.985v-73.576c0-41.878-34.069-75.948-75.948-75.948s-75.949,34.069-75.949,75.948
|
||||||
|
v73.576h-52.985v-73.576C127.067,57.839,184.907,0,256.001,0s128.933,57.839,128.933,128.933L384.933,202.51L384.933,202.51z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.2 KiB |
@@ -0,0 +1,30 @@
|
|||||||
|
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||||
|
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
viewBox="0 0 512 512" xml:space="preserve">
|
||||||
|
<path style="fill:#4A5058;" d="M144.24,167.708H29.247c-11.636,0-21.069,9.433-21.069,21.067v134.448
|
||||||
|
c0,11.636,9.433,21.067,21.069,21.067H144.24V167.708z"/>
|
||||||
|
<rect x="62.112" y="167.704" style="fill:#E45D4C;" width="28.195" height="176.582"/>
|
||||||
|
<path style="fill:#7E858B;" d="M297.578,62.32L144.24,167.708v176.583L297.578,449.68c7.783,5.349,18.374-0.222,18.374-9.666V71.986
|
||||||
|
C315.952,62.542,305.361,56.97,297.578,62.32z"/>
|
||||||
|
<path style="opacity:0.2;enable-background:new ;" d="M311.097,436.161L162.493,334.026c-3.083-2.119-6.738-3.253-10.479-3.253
|
||||||
|
H42.765c-11.636,0-21.067-9.433-21.067-21.067V175.258c0-2.274,0.371-4.46,1.037-6.512c-8.446,2.745-14.555,10.669-14.555,20.03
|
||||||
|
v134.448c0,11.636,9.433,21.067,21.069,21.067h114.992L297.579,449.68c7.783,5.349,18.374-0.222,18.374-9.666v-1.91
|
||||||
|
C314.293,437.846,312.64,437.222,311.097,436.161z"/>
|
||||||
|
<path d="M429.806,79.937c-3.457-2.908-8.618-2.46-11.523,0.999c-2.906,3.458-2.459,8.617,0.999,11.523
|
||||||
|
c48.528,40.785,76.361,100.396,76.361,163.546c0,63.149-27.833,122.76-76.361,163.545c-3.458,2.907-3.905,8.066-0.999,11.523
|
||||||
|
c1.617,1.926,3.933,2.917,6.266,2.917c1.857,0,3.726-0.629,5.258-1.918C482.041,388.171,512,323.996,512,256.004
|
||||||
|
C512,188.012,482.041,123.837,429.806,79.937z M393.581,123.107c-3.457-2.906-8.617-2.462-11.523,0.999
|
||||||
|
c-2.906,3.458-2.459,8.617,0.999,11.523c35.719,30.021,56.205,73.897,56.205,120.375s-20.486,90.353-56.205,120.374
|
||||||
|
c-3.458,2.906-3.905,8.066-0.999,11.523c1.617,1.926,3.934,2.917,6.266,2.917c1.857,0,3.726-0.629,5.258-1.918
|
||||||
|
c39.427-33.137,62.04-81.576,62.04-132.896S433.008,156.246,393.581,123.107z M313.492,54.367
|
||||||
|
c-6.567-3.454-14.438-2.987-20.547,1.212L141.7,159.529H29.247C13.12,159.528,0,172.649,0,188.776v134.448
|
||||||
|
c0,16.127,13.12,29.247,29.247,29.247H141.7l151.246,103.95c3.39,2.331,7.321,3.511,11.272,3.511c3.17,0,6.353-0.76,9.276-2.298
|
||||||
|
c6.562-3.453,10.639-10.205,10.639-17.619V71.986C324.131,64.571,320.055,57.82,313.492,54.367z M136.061,336.113H29.247
|
||||||
|
c-7.106,0-12.888-5.781-12.888-12.888V188.776c0-7.108,5.782-12.888,12.888-12.888H136.06v160.225H136.061z M307.772,440.014
|
||||||
|
c0,1.865-1.189,2.769-1.897,3.142c-0.709,0.371-2.126,0.841-3.663-0.216L152.42,339.989V172.011L302.212,69.06
|
||||||
|
c1.539-1.057,2.956-0.586,3.663-0.216c0.709,0.373,1.897,1.277,1.897,3.142V440.014z M357.385,166.238
|
||||||
|
c-3.461-2.904-8.619-2.455-11.525,1.002c-2.905,3.459-2.456,8.619,1.002,11.525c22.889,19.225,36.017,47.379,36.017,77.24
|
||||||
|
s-13.128,58.013-36.017,77.239c-3.458,2.905-3.908,8.066-1.002,11.525c1.618,1.926,3.935,2.918,6.268,2.918
|
||||||
|
c1.856,0,3.723-0.628,5.257-1.916c26.599-22.342,41.854-55.06,41.854-89.766C399.239,221.299,383.984,188.581,357.385,166.238z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 2.8 KiB |
@@ -0,0 +1 @@
|
|||||||
|
pyinstaller --noconfirm --onedir --onefile --windowed --icon .\assets\Icone.ico --name "La Tanière Launcher" .\src\mainwindow.py --paths ".\.venv\Lib\site-packages\" --add-data ".\styles\styles.qss:styles" --add-data ".\ui\mainwindow.ui:ui" --hidden-import win11toast
|
||||||
@@ -1,48 +0,0 @@
|
|||||||
import sys
|
|
||||||
import os
|
|
||||||
from PyQt6.QtWidgets import QApplication, QMainWindow, QPushButton, QVBoxLayout, QWidget
|
|
||||||
from PyQt6.QtCore import Qt, QPoint
|
|
||||||
|
|
||||||
# À placer tout en haut, avant les imports PyQt6 si possible
|
|
||||||
os.environ["QT_QPA_PLATFORM"] = "xcb"
|
|
||||||
|
|
||||||
class FenetreSansTitre(QMainWindow):
|
|
||||||
def __init__(self):
|
|
||||||
super().__init__()
|
|
||||||
|
|
||||||
self.setWindowFlags(Qt.WindowType.FramelessWindowHint)
|
|
||||||
self.resize(400, 300)
|
|
||||||
|
|
||||||
# IMPORTANT : On active le suivi de souris
|
|
||||||
self.setMouseTracking(True)
|
|
||||||
|
|
||||||
layout = QVBoxLayout()
|
|
||||||
btn_quitter = QPushButton("Quitter")
|
|
||||||
btn_quitter.clicked.connect(self.close)
|
|
||||||
layout.addWidget(btn_quitter)
|
|
||||||
|
|
||||||
container = QWidget()
|
|
||||||
container.setLayout(layout)
|
|
||||||
self.setCentralWidget(container)
|
|
||||||
|
|
||||||
self._drag_pos = None
|
|
||||||
|
|
||||||
def mousePressEvent(self, event):
|
|
||||||
if event.button() == Qt.MouseButton.LeftButton:
|
|
||||||
# On enregistre la position du clic RELATIVE au coin haut-gauche de la fenêtre
|
|
||||||
self._drag_pos = event.position().toPoint()
|
|
||||||
|
|
||||||
def mouseMoveEvent(self, event):
|
|
||||||
if self._drag_pos is not None:
|
|
||||||
# On déplace la fenêtre vers la position globale du curseur
|
|
||||||
# MOINS le décalage initial (offset) pour éviter que le curseur ne saute au centre
|
|
||||||
self.move(event.globalPosition().toPoint() - self._drag_pos)
|
|
||||||
|
|
||||||
def mouseReleaseEvent(self, event):
|
|
||||||
self._drag_pos = None
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
app = QApplication(sys.argv)
|
|
||||||
fenetre = FenetreSansTitre()
|
|
||||||
fenetre.show()
|
|
||||||
sys.exit(app.exec())
|
|
||||||
@@ -1,53 +0,0 @@
|
|||||||
import sys
|
|
||||||
import os
|
|
||||||
from PyQt6.QtWidgets import QApplication, QMainWindow, QPushButton, QVBoxLayout, QWidget
|
|
||||||
from PyQt6.QtCore import Qt, QPoint
|
|
||||||
|
|
||||||
# À placer tout en haut, avant les imports PyQt6 si possible
|
|
||||||
os.environ["QT_QPA_PLATFORM"] = "xcb"
|
|
||||||
|
|
||||||
class FenetreSansTitre(QMainWindow):
|
|
||||||
def __init__(self):
|
|
||||||
super().__init__()
|
|
||||||
|
|
||||||
# 1. Retirer la barre de titre
|
|
||||||
self.setWindowFlags(Qt.WindowType.FramelessWindowHint)
|
|
||||||
self.resize(400, 300)
|
|
||||||
|
|
||||||
# Interface simple
|
|
||||||
layout = QVBoxLayout()
|
|
||||||
btn_quitter = QPushButton("Fermer la fenêtre")
|
|
||||||
btn_quitter.clicked.connect(self.close)
|
|
||||||
layout.addWidget(btn_quitter)
|
|
||||||
|
|
||||||
container = QWidget()
|
|
||||||
container.setLayout(layout)
|
|
||||||
self.setCentralWidget(container)
|
|
||||||
|
|
||||||
# Variable pour stocker la position du clic
|
|
||||||
self.old_pos = None
|
|
||||||
|
|
||||||
# --- Logique de déplacement ---
|
|
||||||
|
|
||||||
def mousePressEvent(self, event):
|
|
||||||
if event.button() == Qt.MouseButton.LeftButton:
|
|
||||||
# On sauvegarde la position relative du curseur dans la fenêtre
|
|
||||||
self.old_pos = event.globalPosition().toPoint()
|
|
||||||
|
|
||||||
def mouseMoveEvent(self, event):
|
|
||||||
if self.old_pos is not None:
|
|
||||||
# Calcul de la distance parcourue
|
|
||||||
delta = QPoint(event.globalPosition().toPoint() - self.old_pos)
|
|
||||||
# Déplacement de la fenêtre
|
|
||||||
self.move(self.x() + delta.x(), self.y() + delta.y())
|
|
||||||
# Mise à jour de la position de référence
|
|
||||||
self.old_pos = event.globalPosition().toPoint()
|
|
||||||
|
|
||||||
def mouseReleaseEvent(self, event):
|
|
||||||
self.old_pos = None
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
app = QApplication(sys.argv)
|
|
||||||
fenetre = FenetreSansTitre()
|
|
||||||
fenetre.show()
|
|
||||||
sys.exit(app.exec())
|
|
||||||
-117
@@ -1,117 +0,0 @@
|
|||||||
import sys
|
|
||||||
import os
|
|
||||||
from PyQt6 import QtGui, QtWidgets
|
|
||||||
from PyQt6 import uic
|
|
||||||
from PyQt6.QtCore import Qt
|
|
||||||
from PyQt6.QtGui import QFontDatabase, QFont, QColor
|
|
||||||
from PyQt6.QtWidgets import QApplication, QMainWindow
|
|
||||||
|
|
||||||
|
|
||||||
from slidergroovecolorstyle import ThinSubPageLineStyle, ThinAddPageLineStyle
|
|
||||||
|
|
||||||
# Compile resources.qrc into resources_rc.py
|
|
||||||
# rcc -g python resources.qrc -o resources_rc.py
|
|
||||||
|
|
||||||
import resources_rc # This is generated from the .qrc file
|
|
||||||
|
|
||||||
# À placer tout en haut, avant les imports PyQt6 si possible
|
|
||||||
if sys.platform.startswith('linux'):
|
|
||||||
os.environ["QT_QPA_PLATFORM"] = "xcb"
|
|
||||||
|
|
||||||
# Remove this into final release
|
|
||||||
from fake_patch_notes import patch_note
|
|
||||||
NO_STAFF = True
|
|
||||||
|
|
||||||
def load_custom_font():
|
|
||||||
# Load font from Qt resource
|
|
||||||
font_id = QFontDatabase.addApplicationFont(":/assets/Avocado-Cake-Demo.otf")
|
|
||||||
if font_id == -1:
|
|
||||||
raise RuntimeError("Failed to load font from resources.")
|
|
||||||
|
|
||||||
# Get the family name of the loaded font
|
|
||||||
font_families = QFontDatabase.applicationFontFamilies(font_id)
|
|
||||||
if not font_families:
|
|
||||||
raise RuntimeError("No font families found in the loaded font.")
|
|
||||||
return font_families[0]
|
|
||||||
|
|
||||||
class MainWindow(QMainWindow):
|
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
|
||||||
super().__init__(*args, **kwargs)
|
|
||||||
# Remove the title bar and window frame
|
|
||||||
self.setWindowFlags(Qt.WindowType.FramelessWindowHint |Qt.WindowType.Window)
|
|
||||||
|
|
||||||
# Optional: Make background transparent (if you want rounded corners, etc.)
|
|
||||||
self.setAttribute(Qt.WidgetAttribute.WA_TranslucentBackground)
|
|
||||||
|
|
||||||
# Track mouse position for dragging
|
|
||||||
self._drag_pos = None
|
|
||||||
|
|
||||||
# Load font family from resource
|
|
||||||
font_family = load_custom_font()
|
|
||||||
|
|
||||||
uic.loadUi("mainwindow.ui", self)
|
|
||||||
|
|
||||||
# Adjust UI
|
|
||||||
self.maintitle_label.setFont(QFont(font_family, 38))
|
|
||||||
self.subtitle_label.setStyleSheet("color: rgb(163, 177, 198)")
|
|
||||||
#self.horizontalSlider.setStyle(ThinAddPageLineStyle(app.style(), QColor("#2196F3")))
|
|
||||||
|
|
||||||
if NO_STAFF :
|
|
||||||
self.staff_btn.hide()
|
|
||||||
self.spacer_substitution.hide()
|
|
||||||
|
|
||||||
self.info_text.setMarkdown(patch_note)
|
|
||||||
|
|
||||||
# Find the button by its objectName in Qt Designer
|
|
||||||
# Example: objectName = "close_btn"
|
|
||||||
self.close_btn.clicked.connect(self.close_link)
|
|
||||||
self.minimize_btn.clicked.connect(self.minimize_link)
|
|
||||||
|
|
||||||
self.connexion_btn.clicked.connect(self.connexion_btn_link)
|
|
||||||
|
|
||||||
def close_link(self):
|
|
||||||
sys.exit(app.exec())
|
|
||||||
|
|
||||||
def minimize_link(self):
|
|
||||||
# Minimize the application
|
|
||||||
self.setWindowState(Qt.WindowState.WindowMinimized)
|
|
||||||
|
|
||||||
# Mouse press event to start dragging
|
|
||||||
def mousePressEvent(self, event):
|
|
||||||
if event.button() == Qt.MouseButton.LeftButton:
|
|
||||||
self._drag_pos = event.globalPosition().toPoint() - self.frameGeometry().topLeft()
|
|
||||||
event.accept()
|
|
||||||
|
|
||||||
# Mouse move event to drag window
|
|
||||||
def mouseMoveEvent(self, event):
|
|
||||||
if event.buttons() == Qt.MouseButton.LeftButton and self._drag_pos is not None:
|
|
||||||
self.move(event.globalPosition().toPoint() - self._drag_pos)
|
|
||||||
event.accept()
|
|
||||||
|
|
||||||
# Mouse release event to stop dragging
|
|
||||||
def mouseReleaseEvent(self, event):
|
|
||||||
self._drag_pos = None
|
|
||||||
event.accept()
|
|
||||||
|
|
||||||
def connexion_btn_link(self):
|
|
||||||
#toast('Hello Python🐍')
|
|
||||||
print("")
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
app = QApplication(sys.argv)
|
|
||||||
|
|
||||||
with open('styles.qss', 'r') as f:
|
|
||||||
style = f.read()
|
|
||||||
|
|
||||||
# Set the stylesheet of the application
|
|
||||||
app.setStyleSheet(style)
|
|
||||||
|
|
||||||
# Load and set the global font
|
|
||||||
custom_font = QFont(load_custom_font(), 16)
|
|
||||||
if custom_font:
|
|
||||||
app.setFont(custom_font)
|
|
||||||
window = MainWindow()
|
|
||||||
window.show()
|
|
||||||
sys.exit(app.exec())
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
[project]
|
|
||||||
name = "LaTaniere_UI"
|
|
||||||
version = "0.1.0"
|
|
||||||
description = "Add your description here"
|
|
||||||
readme = "README.md"
|
|
||||||
requires-python = ">=3.14"
|
|
||||||
dependencies = [
|
|
||||||
"pyside6>=6.10.2",
|
|
||||||
]
|
|
||||||
@@ -0,0 +1,51 @@
|
|||||||
|
# LaTaniere Launcher UI
|
||||||
|
|
||||||
|
⚠️ you need [Qt Designer](https://build-system.fman.io/qt-designer-download).
|
||||||
|
|
||||||
|
## First: create virtualenv
|
||||||
|
|
||||||
|
python -m venv .venv
|
||||||
|
|
||||||
|
## Second: activate your virtual environment
|
||||||
|
|
||||||
|
### Windows
|
||||||
|
|
||||||
|
Execute in powershell:
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
.venv/bin/activate.ps1
|
||||||
|
```
|
||||||
|
|
||||||
|
or batch file
|
||||||
|
|
||||||
|
```bat
|
||||||
|
.venv/bin/activate.bat
|
||||||
|
```
|
||||||
|
|
||||||
|
### Linux
|
||||||
|
|
||||||
|
Execute into terminal in project folder:
|
||||||
|
`source .venv/bin/actiave`
|
||||||
|
|
||||||
|
----
|
||||||
|
|
||||||
|
## Third install packages
|
||||||
|
|
||||||
|
Ensure your virtual environment is active and execute these commands within it.
|
||||||
|
|
||||||
|
### Using Pip
|
||||||
|
|
||||||
|
#### Global packages
|
||||||
|
|
||||||
|
`pip install -r .\requirements.txt`
|
||||||
|
|
||||||
|
#### packages for Windows only
|
||||||
|
|
||||||
|
`pip install -r .\windows_requirements.txt`
|
||||||
|
|
||||||
|
### Using install.py script
|
||||||
|
|
||||||
|
Execute `python install.py`
|
||||||
|
Note: in case if you aren't virtual environment, the script stop.
|
||||||
|
|
||||||
|
Enjoy.
|
||||||
+10
-10
@@ -1,20 +1,20 @@
|
|||||||
certifi==2026.2.25
|
altgraph==0.17.5
|
||||||
distlib==0.4.0
|
librt==0.8.1
|
||||||
filelock==3.25.0
|
modulegraph==0.19.7
|
||||||
|
mypy==1.19.1
|
||||||
|
mypy_extensions==1.1.0
|
||||||
packaging==26.0
|
packaging==26.0
|
||||||
pipenv==2026.0.3
|
pathspec==1.0.4
|
||||||
platformdirs==4.9.2
|
pefile==2024.8.26
|
||||||
PyQt6==6.10.2
|
pyinstaller==6.19.0
|
||||||
PyQt6-Qt6==6.10.2
|
pyinstaller-hooks-contrib==2026.2
|
||||||
PyQt6_sip==13.11.0
|
|
||||||
PySide6==6.10.2
|
PySide6==6.10.2
|
||||||
PySide6_Addons==6.10.2
|
PySide6_Addons==6.10.2
|
||||||
PySide6_Essentials==6.10.2
|
PySide6_Essentials==6.10.2
|
||||||
python-discovery==1.1.0
|
pywin32-ctypes==0.2.3
|
||||||
setuptools==82.0.0
|
setuptools==82.0.0
|
||||||
shiboken6==6.10.2
|
shiboken6==6.10.2
|
||||||
typing_extensions==4.15.0
|
typing_extensions==4.15.0
|
||||||
virtualenv==21.1.0
|
|
||||||
win11toast==0.36.3
|
win11toast==0.36.3
|
||||||
winrt-runtime==3.2.1
|
winrt-runtime==3.2.1
|
||||||
winrt-Windows.Data.Xml.Dom==3.2.1
|
winrt-Windows.Data.Xml.Dom==3.2.1
|
||||||
|
|||||||
@@ -1,6 +1,10 @@
|
|||||||
<RCC>
|
<RCC>
|
||||||
<qresource prefix="/">
|
<qresource prefix="/">
|
||||||
|
<file>assets/sound-speaker.svg</file>
|
||||||
|
<file>assets/computer-tv.svg</file>
|
||||||
|
<file>assets/padlock-lock.svg</file>
|
||||||
<file>assets/logo.png</file>
|
<file>assets/logo.png</file>
|
||||||
|
<file>assets/Logo_Discord_2015.png</file>
|
||||||
<file>assets/system-shutdown.png</file>
|
<file>assets/system-shutdown.png</file>
|
||||||
<file>assets/Avocado-Cake-Demo.otf</file>
|
<file>assets/Avocado-Cake-Demo.otf</file>
|
||||||
<file>assets/background.png</file>
|
<file>assets/background.png</file>
|
||||||
|
|||||||
@@ -1,272 +0,0 @@
|
|||||||
from PyQt6.QtCore import Qt
|
|
||||||
from PyQt6.QtWidgets import (
|
|
||||||
QSlider, QProxyStyle, QStyle
|
|
||||||
)
|
|
||||||
from PyQt6.QtGui import QColor
|
|
||||||
|
|
||||||
class SliderGrooveColorStyle(QProxyStyle):
|
|
||||||
def __init__(self, base_style=None, groove_color=QColor("lightblue")):
|
|
||||||
super().__init__(base_style)
|
|
||||||
self.groove_color = groove_color
|
|
||||||
|
|
||||||
def drawComplexControl(self, control, option, painter, widget=None):
|
|
||||||
if control == QStyle.ComplexControl.CC_Slider and isinstance(widget, QSlider):
|
|
||||||
|
|
||||||
# Récupérer la zone du groove
|
|
||||||
groove_rect = self.subControlRect(
|
|
||||||
QStyle.ComplexControl.CC_Slider,
|
|
||||||
option,
|
|
||||||
QStyle.SubControl.SC_SliderGroove,
|
|
||||||
widget
|
|
||||||
)
|
|
||||||
|
|
||||||
# Dessiner notre fond
|
|
||||||
painter.save()
|
|
||||||
painter.setBrush(self.groove_color)
|
|
||||||
painter.setPen(Qt.PenStyle.NoPen)
|
|
||||||
painter.drawRect(groove_rect)
|
|
||||||
painter.restore()
|
|
||||||
|
|
||||||
# Puis laisser Qt dessiner normalement (handle etc.)
|
|
||||||
super().drawComplexControl(control, option, painter, widget)
|
|
||||||
return
|
|
||||||
|
|
||||||
super().drawComplexControl(control, option, painter, widget)
|
|
||||||
|
|
||||||
class SliderSubPageColorStyle(QProxyStyle):
|
|
||||||
def __init__(self, base_style=None, color=QColor("#4CAF50")):
|
|
||||||
super().__init__(base_style)
|
|
||||||
self.color = color
|
|
||||||
|
|
||||||
def drawComplexControl(self, control, option, painter, widget=None):
|
|
||||||
if control == QStyle.ComplexControl.CC_Slider and isinstance(widget, QSlider):
|
|
||||||
|
|
||||||
# Laisser Qt dessiner le slider normalement
|
|
||||||
super().drawComplexControl(control, option, painter, widget)
|
|
||||||
|
|
||||||
# Récupérer les rectangles du groove et du handle
|
|
||||||
groove_rect = self.subControlRect(
|
|
||||||
control,
|
|
||||||
option,
|
|
||||||
QStyle.SubControl.SC_SliderGroove,
|
|
||||||
widget
|
|
||||||
)
|
|
||||||
|
|
||||||
handle_rect = self.subControlRect(
|
|
||||||
control,
|
|
||||||
option,
|
|
||||||
QStyle.SubControl.SC_SliderHandle,
|
|
||||||
widget
|
|
||||||
)
|
|
||||||
|
|
||||||
painter.save()
|
|
||||||
painter.setBrush(self.color)
|
|
||||||
painter.setPen(Qt.PenStyle.NoPen)
|
|
||||||
|
|
||||||
if widget.orientation() == Qt.Orientation.Horizontal:
|
|
||||||
# Partie avant le handle (gauche → centre du handle)
|
|
||||||
sub_rect = groove_rect.adjusted(
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
handle_rect.center().x() - groove_rect.right(),
|
|
||||||
0
|
|
||||||
)
|
|
||||||
else:
|
|
||||||
# Vertical (bas → centre du handle)
|
|
||||||
sub_rect = groove_rect.adjusted(
|
|
||||||
0,
|
|
||||||
handle_rect.center().y() - groove_rect.bottom(),
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
)
|
|
||||||
|
|
||||||
painter.drawRect(sub_rect)
|
|
||||||
painter.restore()
|
|
||||||
|
|
||||||
return
|
|
||||||
|
|
||||||
super().drawComplexControl(control, option, painter, widget)
|
|
||||||
|
|
||||||
class SliderAddPageColorStyle(QProxyStyle):
|
|
||||||
def __init__(self, base_style=None, color=QColor("#FF9800")):
|
|
||||||
super().__init__(base_style)
|
|
||||||
self.color = color
|
|
||||||
|
|
||||||
def drawComplexControl(self, control, option, painter, widget=None):
|
|
||||||
if control == QStyle.ComplexControl.CC_Slider and isinstance(widget, QSlider):
|
|
||||||
|
|
||||||
# Récupérer groove + handle
|
|
||||||
groove_rect = self.subControlRect(
|
|
||||||
control,
|
|
||||||
option,
|
|
||||||
QStyle.SubControl.SC_SliderGroove,
|
|
||||||
widget
|
|
||||||
)
|
|
||||||
|
|
||||||
handle_rect = self.subControlRect(
|
|
||||||
control,
|
|
||||||
option,
|
|
||||||
QStyle.SubControl.SC_SliderHandle,
|
|
||||||
widget
|
|
||||||
)
|
|
||||||
|
|
||||||
painter.save()
|
|
||||||
painter.setBrush(self.color)
|
|
||||||
painter.setPen(Qt.PenStyle.NoPen)
|
|
||||||
|
|
||||||
if widget.orientation() == Qt.Orientation.Horizontal:
|
|
||||||
# Partie après le handle (centre → fin)
|
|
||||||
add_rect = groove_rect.adjusted(
|
|
||||||
handle_rect.center().x() - groove_rect.left(),
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
)
|
|
||||||
else:
|
|
||||||
# Vertical (centre → haut)
|
|
||||||
add_rect = groove_rect.adjusted(
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
handle_rect.center().y() - groove_rect.top()
|
|
||||||
)
|
|
||||||
|
|
||||||
painter.drawRect(add_rect)
|
|
||||||
painter.restore()
|
|
||||||
|
|
||||||
# IMPORTANT : Qt dessine ensuite le handle par-dessus
|
|
||||||
super().drawComplexControl(control, option, painter, widget)
|
|
||||||
return
|
|
||||||
|
|
||||||
super().drawComplexControl(control, option, painter, widget)
|
|
||||||
|
|
||||||
class ThinAddPageLineStyle(QProxyStyle):
|
|
||||||
def __init__(self, base_style=None, color=QColor("#E91E63")):
|
|
||||||
super().__init__(base_style)
|
|
||||||
self.color = color
|
|
||||||
|
|
||||||
def drawComplexControl(self, control, option, painter, widget=None):
|
|
||||||
if control == QStyle.ComplexControl.CC_Slider and isinstance(widget, QSlider):
|
|
||||||
|
|
||||||
groove_rect = self.subControlRect(
|
|
||||||
control,
|
|
||||||
option,
|
|
||||||
QStyle.SubControl.SC_SliderGroove,
|
|
||||||
widget
|
|
||||||
)
|
|
||||||
|
|
||||||
handle_rect = self.subControlRect(
|
|
||||||
control,
|
|
||||||
option,
|
|
||||||
QStyle.SubControl.SC_SliderHandle,
|
|
||||||
widget
|
|
||||||
)
|
|
||||||
|
|
||||||
painter.save()
|
|
||||||
painter.setBrush(self.color)
|
|
||||||
painter.setPen(Qt.PenStyle.NoPen)
|
|
||||||
|
|
||||||
if widget.orientation() == Qt.Orientation.Horizontal:
|
|
||||||
# Épaisseur fine (2 px)
|
|
||||||
thickness = 2
|
|
||||||
|
|
||||||
y = groove_rect.center().y() - thickness // 2
|
|
||||||
|
|
||||||
add_rect = groove_rect.adjusted(
|
|
||||||
handle_rect.center().x() - groove_rect.left(),
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
)
|
|
||||||
|
|
||||||
add_rect.setTop(y)
|
|
||||||
add_rect.setHeight(thickness)
|
|
||||||
|
|
||||||
else:
|
|
||||||
thickness = 2
|
|
||||||
|
|
||||||
x = groove_rect.center().x() - thickness // 2
|
|
||||||
|
|
||||||
add_rect = groove_rect.adjusted(
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
handle_rect.center().y() - groove_rect.top()
|
|
||||||
)
|
|
||||||
|
|
||||||
add_rect.setLeft(x)
|
|
||||||
add_rect.setWidth(thickness)
|
|
||||||
|
|
||||||
painter.drawRect(add_rect)
|
|
||||||
painter.restore()
|
|
||||||
|
|
||||||
# Dessiner ensuite le slider normalement (handle au-dessus)
|
|
||||||
super().drawComplexControl(control, option, painter, widget)
|
|
||||||
return
|
|
||||||
|
|
||||||
super().drawComplexControl(control, option, painter, widget)
|
|
||||||
|
|
||||||
class ThinSubPageLineStyle(QProxyStyle):
|
|
||||||
def __init__(self, base_style=None, color=QColor("#4CAF50")):
|
|
||||||
super().__init__(base_style)
|
|
||||||
self.color = color
|
|
||||||
|
|
||||||
def drawComplexControl(self, control, option, painter, widget=None):
|
|
||||||
if control == QStyle.ComplexControl.CC_Slider and isinstance(widget, QSlider):
|
|
||||||
|
|
||||||
groove_rect = self.subControlRect(
|
|
||||||
control,
|
|
||||||
option,
|
|
||||||
QStyle.SubControl.SC_SliderGroove,
|
|
||||||
widget
|
|
||||||
)
|
|
||||||
|
|
||||||
handle_rect = self.subControlRect(
|
|
||||||
control,
|
|
||||||
option,
|
|
||||||
QStyle.SubControl.SC_SliderHandle,
|
|
||||||
widget
|
|
||||||
)
|
|
||||||
|
|
||||||
painter.save()
|
|
||||||
painter.setBrush(self.color)
|
|
||||||
painter.setPen(Qt.PenStyle.NoPen)
|
|
||||||
|
|
||||||
# Épaisseur fine (ajuste si besoin)
|
|
||||||
thickness = 2
|
|
||||||
|
|
||||||
if widget.orientation() == Qt.Orientation.Horizontal:
|
|
||||||
|
|
||||||
y = groove_rect.center().y() - thickness // 2
|
|
||||||
|
|
||||||
sub_rect = groove_rect.adjusted(
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
handle_rect.center().x() - groove_rect.right(),
|
|
||||||
0
|
|
||||||
)
|
|
||||||
|
|
||||||
sub_rect.setTop(y)
|
|
||||||
sub_rect.setHeight(thickness)
|
|
||||||
|
|
||||||
else:
|
|
||||||
x = groove_rect.center().x() - thickness // 2
|
|
||||||
|
|
||||||
sub_rect = groove_rect.adjusted(
|
|
||||||
0,
|
|
||||||
handle_rect.center().y() - groove_rect.bottom(),
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
)
|
|
||||||
|
|
||||||
sub_rect.setLeft(x)
|
|
||||||
sub_rect.setWidth(thickness)
|
|
||||||
|
|
||||||
painter.drawRect(sub_rect)
|
|
||||||
painter.restore()
|
|
||||||
|
|
||||||
# Qt redessine le slider (handle au-dessus)
|
|
||||||
super().drawComplexControl(control, option, painter, widget)
|
|
||||||
return
|
|
||||||
|
|
||||||
super().drawComplexControl(control, option, painter, widget)
|
|
||||||
@@ -0,0 +1,105 @@
|
|||||||
|
import sys
|
||||||
|
import os
|
||||||
|
from pathlib import Path
|
||||||
|
from PySide6 import QtGui
|
||||||
|
from PySide6.QtCore import Qt
|
||||||
|
from PySide6.QtGui import QFontDatabase, QFont
|
||||||
|
from PySide6.QtUiTools import QUiLoader
|
||||||
|
from PySide6.QtWidgets import QMainWindow, QApplication
|
||||||
|
|
||||||
|
# Compile resources.qrc into resources_rc.py
|
||||||
|
# rcc -g python .\resources.qrc -o .\src\resources_rc.py
|
||||||
|
|
||||||
|
import resources as resources # This is generated from the .qrc file # noqa: F401
|
||||||
|
|
||||||
|
if getattr(sys, 'frozen', False) and hasattr(sys, '_MEIPASS'):
|
||||||
|
bundle_dir = Path(sys._MEIPASS)
|
||||||
|
else:
|
||||||
|
bundle_dir = Path(__file__).parent.parent
|
||||||
|
|
||||||
|
# Remove this into final release
|
||||||
|
from fake_patch_notes import patch_note
|
||||||
|
|
||||||
|
NO_STAFF = True
|
||||||
|
CURRENT = os.path.dirname(os.path.realpath(__file__))
|
||||||
|
|
||||||
|
def load_custom_font():
|
||||||
|
# Load font from Qt resource
|
||||||
|
font_id = QFontDatabase.addApplicationFont(":/assets/Avocado-Cake-Demo.otf")
|
||||||
|
if font_id == -1:
|
||||||
|
raise RuntimeError("Failed to load font from resources.")
|
||||||
|
|
||||||
|
# Get the family name of the loaded font
|
||||||
|
font_families = QFontDatabase.applicationFontFamilies(font_id)
|
||||||
|
if not font_families:
|
||||||
|
raise RuntimeError("No font families found in the loaded font.")
|
||||||
|
return font_families[0]
|
||||||
|
|
||||||
|
class MainWindow(QMainWindow):
|
||||||
|
def __init__(self):
|
||||||
|
super().__init__()
|
||||||
|
|
||||||
|
self.ui = QUiLoader().load(f"{bundle_dir}/ui/mainwindow.ui", self)
|
||||||
|
central = self.ui.centralWidget()
|
||||||
|
self.setCentralWidget(central)
|
||||||
|
|
||||||
|
# Remove the title bar and window frame
|
||||||
|
self.setWindowFlags(Qt.WindowType.FramelessWindowHint | Qt.WindowType.Window)
|
||||||
|
# Optional: Make background transparent (if you want rounded corners, etc.)
|
||||||
|
self.setAttribute(Qt.WidgetAttribute.WA_TranslucentBackground)
|
||||||
|
|
||||||
|
# Track mouse position for dragging
|
||||||
|
self._drag_pos = None
|
||||||
|
|
||||||
|
if NO_STAFF :
|
||||||
|
self.ui.staff_btn.hide()
|
||||||
|
self.ui.spacer_substitution.hide()
|
||||||
|
|
||||||
|
self.ui.info_text.setMarkdown(patch_note)
|
||||||
|
|
||||||
|
# Find the button by its objectName in Qt Designer
|
||||||
|
# Example: objectName = "close_btn"
|
||||||
|
self.ui.close_btn.clicked.connect(self.close)
|
||||||
|
self.ui.minimize_btn.clicked.connect(self.showMinimized)
|
||||||
|
self.ui.connexion_btn.clicked.connect(self.connexion_btn_link)
|
||||||
|
|
||||||
|
self.show()
|
||||||
|
|
||||||
|
# Mouse press event to start dragging
|
||||||
|
def mousePressEvent(self, event: QtGui.QMouseEvent) -> None:
|
||||||
|
if event.button() == Qt.MouseButton.LeftButton:
|
||||||
|
self._drag_pos = event.globalPosition().toPoint() - self.frameGeometry().topLeft()
|
||||||
|
super().mousePressEvent(event)
|
||||||
|
|
||||||
|
# Mouse move event to drag window
|
||||||
|
def mouseMoveEvent(self, event: QtGui.QMouseEvent) -> None:
|
||||||
|
if event.buttons() & Qt.MouseButton.LeftButton and self._drag_pos is not None:
|
||||||
|
self.move(event.globalPosition().toPoint() - self._drag_pos)
|
||||||
|
super().mouseMoveEvent(event)
|
||||||
|
|
||||||
|
# Mouse release event to stop dragging
|
||||||
|
def mouseReleaseEvent(self, event):
|
||||||
|
self._drag_pos = None
|
||||||
|
super().mouseReleaseEvent(event)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def connexion_btn_link():
|
||||||
|
return None
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
app = QApplication(sys.argv)
|
||||||
|
|
||||||
|
with open(f"{bundle_dir}/styles/styles.qss", 'r') as f:
|
||||||
|
style = f.read()
|
||||||
|
|
||||||
|
# Load and set the global font
|
||||||
|
custom_font = QFont(load_custom_font(), 16)
|
||||||
|
if custom_font:
|
||||||
|
app.setFont(custom_font)
|
||||||
|
|
||||||
|
# Set the stylesheet of the application
|
||||||
|
app.setStyleSheet(style)
|
||||||
|
|
||||||
|
window = MainWindow()
|
||||||
|
|
||||||
|
sys.exit(app.exec())
|
||||||
+1188
-10
File diff suppressed because it is too large
Load Diff
-107
@@ -1,107 +0,0 @@
|
|||||||
QPushButton#connexion_btn {
|
|
||||||
border-radius: 15px;
|
|
||||||
background-color: rgb(255, 120, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
QPushButton#connexion_btn:hover {
|
|
||||||
background: #ffad66;
|
|
||||||
}
|
|
||||||
|
|
||||||
QPushButton#discord_btn,
|
|
||||||
QPushButton#intranet_btn
|
|
||||||
{
|
|
||||||
border-radius: 15px;
|
|
||||||
background-color: #203a43;
|
|
||||||
}
|
|
||||||
|
|
||||||
QPushButton#close_btn {
|
|
||||||
border : 0;
|
|
||||||
background: transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
QPushButton#minimize_btn {
|
|
||||||
background-color: transparent;
|
|
||||||
border: none;
|
|
||||||
border-bottom: 5px solid white;
|
|
||||||
color: white;
|
|
||||||
font-size: 18px;
|
|
||||||
padding: 0px;
|
|
||||||
padding-top: 0
|
|
||||||
}
|
|
||||||
|
|
||||||
QTextEdit#info_text {
|
|
||||||
background-color: transparent;
|
|
||||||
border: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
QSlider::groove:horizontal {
|
|
||||||
border: 1px solid #262626;
|
|
||||||
height: 10px;
|
|
||||||
}
|
|
||||||
QSlider::handle:horizontal {
|
|
||||||
background: rgb(236, 127, 43);
|
|
||||||
border: 1px solid rgb(236, 127, 43);
|
|
||||||
width: 23px;
|
|
||||||
border-radius: 3px;
|
|
||||||
height: 100px;
|
|
||||||
margin: -24px -12px;
|
|
||||||
}
|
|
||||||
|
|
||||||
QSlider::sub-page:horizontal{
|
|
||||||
border:0px;
|
|
||||||
border-radius:6px;
|
|
||||||
background:qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,stop: 0 #12b9ff, stop: 1.0 #015eea);
|
|
||||||
}
|
|
||||||
|
|
||||||
QSlider::add-page:horizontal{
|
|
||||||
border:0px;
|
|
||||||
border-radius:6px;
|
|
||||||
background:qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,stop: 0 rgb(146, 149, 150), stop: 1.0 rgb(253, 254, 254));
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
QSlider::groove:horizontal {
|
|
||||||
border: 1px inset #1C1C1C;
|
|
||||||
height: 6px;
|
|
||||||
border-radius: 3px;
|
|
||||||
}
|
|
||||||
|
|
||||||
QSlider::groove:horizontal {
|
|
||||||
border: 1px inset #1C1C1C;
|
|
||||||
height: 6px;
|
|
||||||
border-radius: 3px;
|
|
||||||
}
|
|
||||||
|
|
||||||
QSlider::sub-page:horizontal {
|
|
||||||
background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #12b9ff, stop: 1.0 #015eea);
|
|
||||||
border: 1px inset #1C1C1C;
|
|
||||||
border-radius: 3px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* groove background on right of slider */
|
|
||||||
QSlider::add-page:horizontal {
|
|
||||||
background: #7D7D7D;
|
|
||||||
border: 1px outset #1C1C1C;
|
|
||||||
border-radius: 3px;
|
|
||||||
}
|
|
||||||
|
|
||||||
QSlider::handle:horizontal {
|
|
||||||
background: qlineargradient(x1:0, y1:0, x2:1, y2:1, stop:0 rgb(241, 160, 61), stop:1 rgb(233, 111, 29));
|
|
||||||
border: 1px solid rgb(213, 125, 2);
|
|
||||||
width: 12px;
|
|
||||||
height: 10px;
|
|
||||||
margin-top: -8px;
|
|
||||||
margin-bottom: -8px;
|
|
||||||
border-radius: 2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
QWidget#main_container{
|
|
||||||
background: qlineargradient(
|
|
||||||
x1:0, y1:0,
|
|
||||||
x2:0, y2:0,
|
|
||||||
stop: 0 rgba(32, 49, 103, 180),
|
|
||||||
stop: 1 rgba(103, 49, 32, 80)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,174 @@
|
|||||||
|
#main_container {
|
||||||
|
border-radius: 30px;
|
||||||
|
/*background-image: url(:/assets/background.png);
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-position: center; */
|
||||||
|
/*background: qlineargradient(x1:0, y1:0, x2:0, y2:1,
|
||||||
|
stop: 0 #050a0f,
|
||||||
|
stop: 1 #0f172a);*/
|
||||||
|
background: qradialgradient(cx:0.5, cy:0.5, radius:0.8, fx:0.5, fy:0.5,
|
||||||
|
stop: 0 #16213e,
|
||||||
|
stop: 1 #0a0e14);
|
||||||
|
|
||||||
|
/*background: qlineargradient(x1:0, y1:0, x2:1, y2:1,
|
||||||
|
stop: 0 #0d1117,
|
||||||
|
stop: 0.7 #0d1117,
|
||||||
|
stop: 1 #1e3a8a); /* Une pointe de bleu plus vif en bas à droite */
|
||||||
|
}
|
||||||
|
|
||||||
|
QLabel#maintitle_label {
|
||||||
|
font-size: 38px;
|
||||||
|
color: rgb(255, 255, 255);
|
||||||
|
}
|
||||||
|
|
||||||
|
QLabel#subtitle_label {
|
||||||
|
color: rgb(163, 177, 198);
|
||||||
|
}
|
||||||
|
|
||||||
|
QLabel#queue_position {
|
||||||
|
font-size: 36px;
|
||||||
|
color: rgb(17, 248, 183);
|
||||||
|
}
|
||||||
|
|
||||||
|
QLabel#queue_lbl {
|
||||||
|
color: rgb(255, 255, 255);
|
||||||
|
}
|
||||||
|
|
||||||
|
QPushButton#connexion_btn {
|
||||||
|
/* border-radius: 15px;
|
||||||
|
background-color: rgb(255, 120, 0);
|
||||||
|
color: rgb(255, 255, 255); */
|
||||||
|
/* Dégradé chaleureux : Orange vers Orange-Rouge */
|
||||||
|
background: qlineargradient(x1:0, y1:0, x2:0, y2:1,
|
||||||
|
stop: 0 #ff9d00,
|
||||||
|
stop: 1 #f56100);
|
||||||
|
|
||||||
|
border-radius: 12px;
|
||||||
|
border: 1px solid #b34700;
|
||||||
|
color: white;
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
QPushButton#connexion_btn:hover {
|
||||||
|
/* background: #ffad66; */
|
||||||
|
background: qlineargradient(x1:0, y1:0, x2:0, y2:1,
|
||||||
|
stop: 0 #ffb338,
|
||||||
|
stop: 1 #ff7a29);
|
||||||
|
border: 1px solid #ffcc80;
|
||||||
|
/* Un léger halo autour du bouton */
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
QPushButton#connexionBtn:pressed {
|
||||||
|
background: #cc5200;
|
||||||
|
padding-top: 12px; /* Effet d'enfoncement */
|
||||||
|
}
|
||||||
|
|
||||||
|
QPushButton#discord_btn,
|
||||||
|
QPushButton#intranet_btn
|
||||||
|
{
|
||||||
|
/*border-radius: 15px;
|
||||||
|
background-color: rgb(32, 58, 67);
|
||||||
|
color: rgb(255, 255, 255);*/
|
||||||
|
background-color: rgba(32, 58, 67, 0.6); /* Bleu très sombre semi-transparent */
|
||||||
|
border: 1px solid rgba(255, 255, 255, 0.1);
|
||||||
|
border-radius: 8px;
|
||||||
|
color: #e2e8f0;
|
||||||
|
font-weight: bold;
|
||||||
|
padding: 8px 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
QPushButton#discord_btn:hover {
|
||||||
|
background-color: rgba(88, 101, 242, 0.4); /* Fond bleu Discord translucide */
|
||||||
|
border: 2px solid #7289da; /* Bordure plus épaisse et claire pour l'éclat */
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
QPushButton#intranet_btn:hover {
|
||||||
|
/* background: rgb(68, 124, 143); */
|
||||||
|
background-color: rgba(0, 242, 255, 0.15); /* Teinte turquoise légère en fond */
|
||||||
|
border: 2px solid #00f2ff; /* Bordure turquoise vive et épaisse */
|
||||||
|
color: #ffffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
QPushButton#discordBtn:pressed, QPushButton#intranetBtn:pressed {
|
||||||
|
background-color: #0f172a;
|
||||||
|
padding-top: 10px; /* Petit effet d'enfoncement */
|
||||||
|
}
|
||||||
|
|
||||||
|
QPushButton#volume_btn {
|
||||||
|
border-radius: 15px;
|
||||||
|
background-color: rgb(255, 120, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
QPushButton#close_btn {
|
||||||
|
border : 0;
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
QPushButton#minimize_btn {
|
||||||
|
background-color: transparent;
|
||||||
|
border: none;
|
||||||
|
border-bottom: 5px solid white;
|
||||||
|
color: white;
|
||||||
|
font-size: 18px;
|
||||||
|
padding: 0px;
|
||||||
|
padding-top: 0
|
||||||
|
}
|
||||||
|
|
||||||
|
QFrame#info_frame{
|
||||||
|
background: qlineargradient(
|
||||||
|
x1:0, y1:0,
|
||||||
|
x2:0, y2:1,
|
||||||
|
stop:0 rgba(255,255,255,30),
|
||||||
|
stop:1 rgba(255,255,255,30)
|
||||||
|
);
|
||||||
|
border-radius: 20px;
|
||||||
|
border: 1px solid rgba(255,255,255,140);
|
||||||
|
}
|
||||||
|
|
||||||
|
QTextEdit#info_text {
|
||||||
|
background-color: transparent;
|
||||||
|
border: none;
|
||||||
|
color: rgb(255, 255, 255);
|
||||||
|
}
|
||||||
|
|
||||||
|
QSlider::groove:horizontal {
|
||||||
|
border: 1px inset #1C1C1C;
|
||||||
|
height: 6px;
|
||||||
|
border-radius: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
QSlider::groove:horizontal {
|
||||||
|
border: 1px inset #1C1C1C;
|
||||||
|
height: 6px;
|
||||||
|
border-radius: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
QSlider::sub-page:horizontal {
|
||||||
|
background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #12b9ff, stop: 1.0 #015eea);
|
||||||
|
border: 1px inset #1C1C1C;
|
||||||
|
border-radius: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* groove background on right of slider */
|
||||||
|
QSlider::add-page:horizontal {
|
||||||
|
background: #7D7D7D;
|
||||||
|
border: 1px outset #1C1C1C;
|
||||||
|
border-radius: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
QSlider::handle:horizontal {
|
||||||
|
/*background: qlineargradient(x1:0, y1:0, x2:1, y2:1, stop:0 rgb(78, 195, 146), stop:1 rgb(57, 144, 107));
|
||||||
|
border: 1px solid rgb(78, 195, 146);
|
||||||
|
width: 12px;
|
||||||
|
height: 10px;
|
||||||
|
margin-top: -8px;
|
||||||
|
margin-bottom: -8px;
|
||||||
|
border-radius: 2px;*/
|
||||||
|
background: transparent;
|
||||||
|
width: 0px;
|
||||||
|
height: 0px;
|
||||||
|
image: none;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
@@ -38,12 +38,9 @@
|
|||||||
<string>MainWindow</string>
|
<string>MainWindow</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowIcon">
|
<property name="windowIcon">
|
||||||
<iconset resource="resources.qrc">
|
<iconset resource="../resources.qrc">
|
||||||
<normaloff>:/assets/Icone.ico</normaloff>:/assets/Icone.ico</iconset>
|
<normaloff>:/assets/Icone.ico</normaloff>:/assets/Icone.ico</iconset>
|
||||||
</property>
|
</property>
|
||||||
<property name="styleSheet">
|
|
||||||
<string notr="true">color: rgb(255, 255, 255);</string>
|
|
||||||
</property>
|
|
||||||
<widget class="QWidget" name="main_container">
|
<widget class="QWidget" name="main_container">
|
||||||
<property name="minimumSize">
|
<property name="minimumSize">
|
||||||
<size>
|
<size>
|
||||||
@@ -57,11 +54,6 @@
|
|||||||
<height>703</height>
|
<height>703</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
<property name="styleSheet">
|
|
||||||
<string notr="true">#main_container {
|
|
||||||
border-radius: 30px;
|
|
||||||
}</string>
|
|
||||||
</property>
|
|
||||||
<layout class="QVBoxLayout" name="verticalLayout">
|
<layout class="QVBoxLayout" name="verticalLayout">
|
||||||
<property name="spacing">
|
<property name="spacing">
|
||||||
<number>0</number>
|
<number>0</number>
|
||||||
@@ -186,7 +178,7 @@
|
|||||||
<string/>
|
<string/>
|
||||||
</property>
|
</property>
|
||||||
<property name="icon">
|
<property name="icon">
|
||||||
<iconset resource="resources.qrc">
|
<iconset resource="../resources.qrc">
|
||||||
<normaloff>:/assets/system-shutdown.png</normaloff>:/assets/system-shutdown.png</iconset>
|
<normaloff>:/assets/system-shutdown.png</normaloff>:/assets/system-shutdown.png</iconset>
|
||||||
</property>
|
</property>
|
||||||
<property name="iconSize">
|
<property name="iconSize">
|
||||||
@@ -230,9 +222,6 @@
|
|||||||
<height>658</height>
|
<height>658</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
<property name="styleSheet">
|
|
||||||
<string notr="true"/>
|
|
||||||
</property>
|
|
||||||
<property name="frameShape">
|
<property name="frameShape">
|
||||||
<enum>QFrame::Shape::NoFrame</enum>
|
<enum>QFrame::Shape::NoFrame</enum>
|
||||||
</property>
|
</property>
|
||||||
@@ -293,13 +282,6 @@
|
|||||||
</property>
|
</property>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QFrame" name="frame">
|
<widget class="QFrame" name="frame">
|
||||||
<property name="styleSheet">
|
|
||||||
<string notr="true">#frame{
|
|
||||||
background-image: url(:/assets/logo.png);
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
background-position: center;
|
|
||||||
}</string>
|
|
||||||
</property>
|
|
||||||
<property name="frameShape">
|
<property name="frameShape">
|
||||||
<enum>QFrame::Shape::NoFrame</enum>
|
<enum>QFrame::Shape::NoFrame</enum>
|
||||||
</property>
|
</property>
|
||||||
@@ -366,37 +348,25 @@
|
|||||||
</property>
|
</property>
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout_8">
|
<layout class="QHBoxLayout" name="horizontalLayout_8">
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLabel" name="label">
|
<widget class="QLabel" name="queue_lbl">
|
||||||
<property name="autoFillBackground">
|
<property name="autoFillBackground">
|
||||||
<bool>false</bool>
|
<bool>false</bool>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Position en file d'attente: </string>
|
<string>Position en file d'attente: </string>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignmentFlag::AlignCenter</set>
|
||||||
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLCDNumber" name="lcdNumber">
|
<widget class="QLabel" name="queue_position">
|
||||||
<property name="maximumSize">
|
<property name="text">
|
||||||
<size>
|
<string>20</string>
|
||||||
<width>70</width>
|
|
||||||
<height>50</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
</property>
|
||||||
<property name="layoutDirection">
|
<property name="alignment">
|
||||||
<enum>Qt::LayoutDirection::RightToLeft</enum>
|
<set>Qt::AlignmentFlag::AlignCenter</set>
|
||||||
</property>
|
|
||||||
<property name="frameShadow">
|
|
||||||
<enum>QFrame::Shadow::Sunken</enum>
|
|
||||||
</property>
|
|
||||||
<property name="smallDecimalPoint">
|
|
||||||
<bool>false</bool>
|
|
||||||
</property>
|
|
||||||
<property name="digitCount">
|
|
||||||
<number>2</number>
|
|
||||||
</property>
|
|
||||||
<property name="value" stdset="0">
|
|
||||||
<double>20.000000000000000</double>
|
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
@@ -472,12 +442,22 @@
|
|||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QPushButton" name="pushButton">
|
<widget class="QPushButton" name="volume_btn">
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>32</width>
|
||||||
|
<height>32</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string/>
|
<string/>
|
||||||
</property>
|
</property>
|
||||||
<property name="icon">
|
<property name="icon">
|
||||||
<iconset theme="QIcon::ThemeIcon::AudioVolumeHigh"/>
|
<iconset resource="../resources.qrc">
|
||||||
|
<normaloff>:/assets/sound-speaker.svg</normaloff>:/assets/sound-speaker.svg</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="flat">
|
||||||
|
<bool>true</bool>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
@@ -584,7 +564,7 @@
|
|||||||
<item alignment="Qt::AlignmentFlag::AlignHCenter">
|
<item alignment="Qt::AlignmentFlag::AlignHCenter">
|
||||||
<widget class="QLabel" name="maintitle_label">
|
<widget class="QLabel" name="maintitle_label">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>la taniere</string>
|
<string>LA TANIÈRE</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
@@ -613,7 +593,7 @@
|
|||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>un espace pour se retrouver</string>
|
<string>Un espace pour se retrouver</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="textFormat">
|
<property name="textFormat">
|
||||||
<enum>Qt::TextFormat::AutoText</enum>
|
<enum>Qt::TextFormat::AutoText</enum>
|
||||||
@@ -689,7 +669,17 @@
|
|||||||
<string notr="true"/>
|
<string notr="true"/>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>connexion</string>
|
<string> Connexion</string>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="../resources.qrc">
|
||||||
|
<normaloff>:/assets/padlock-lock.svg</normaloff>:/assets/padlock-lock.svg</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="iconSize">
|
||||||
|
<size>
|
||||||
|
<width>32</width>
|
||||||
|
<height>32</height>
|
||||||
|
</size>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
@@ -761,7 +751,17 @@
|
|||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>discord</string>
|
<string> Discord</string>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="../resources.qrc">
|
||||||
|
<normaloff>:/assets/Logo_Discord_2015.png</normaloff>:/assets/Logo_Discord_2015.png</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="iconSize">
|
||||||
|
<size>
|
||||||
|
<width>32</width>
|
||||||
|
<height>32</height>
|
||||||
|
</size>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
@@ -787,7 +787,17 @@
|
|||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>intranet</string>
|
<string> Intranet</string>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="../resources.qrc">
|
||||||
|
<normaloff>:/assets/computer-tv.svg</normaloff>:/assets/computer-tv.svg</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="iconSize">
|
||||||
|
<size>
|
||||||
|
<width>32</width>
|
||||||
|
<height>32</height>
|
||||||
|
</size>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
@@ -846,16 +856,7 @@
|
|||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
<property name="styleSheet">
|
<property name="styleSheet">
|
||||||
<string notr="true">QFrame#info_frame{
|
<string notr="true"/>
|
||||||
background: qlineargradient(
|
|
||||||
x1:0, y1:0,
|
|
||||||
x2:0, y2:1,
|
|
||||||
stop:0 rgba(255,255,255,30),
|
|
||||||
stop:1 rgba(255,255,255,30)
|
|
||||||
);
|
|
||||||
border-radius: 20px;
|
|
||||||
border: 1px solid rgba(255,255,255,140);
|
|
||||||
}</string>
|
|
||||||
</property>
|
</property>
|
||||||
<property name="frameShape">
|
<property name="frameShape">
|
||||||
<enum>QFrame::Shape::StyledPanel</enum>
|
<enum>QFrame::Shape::StyledPanel</enum>
|
||||||
@@ -897,7 +898,7 @@
|
|||||||
</widget>
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
<resources>
|
<resources>
|
||||||
<include location="resources.qrc"/>
|
<include location="../resources.qrc"/>
|
||||||
</resources>
|
</resources>
|
||||||
<connections/>
|
<connections/>
|
||||||
</ui>
|
</ui>
|
||||||
@@ -0,0 +1,395 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
## Form generated from reading UI file 'mainwindowdJHBSQ.ui'
|
||||||
|
##
|
||||||
|
## Created by: Qt User Interface Compiler version 6.10.2
|
||||||
|
##
|
||||||
|
## WARNING! All changes made in this file will be lost when recompiling UI file!
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
import resources_rc
|
||||||
|
from PySide6.QtCore import (QCoreApplication, QMetaObject, QSize, Qt)
|
||||||
|
from PySide6.QtGui import (QIcon)
|
||||||
|
from PySide6.QtWidgets import (QFrame, QHBoxLayout, QLabel,
|
||||||
|
QPushButton, QSizePolicy, QSlider,
|
||||||
|
QSpacerItem, QTextEdit, QVBoxLayout, QWidget)
|
||||||
|
|
||||||
|
|
||||||
|
class Ui_MainWindow(object):
|
||||||
|
def setupUi(self, MainWindow):
|
||||||
|
if not MainWindow.objectName():
|
||||||
|
MainWindow.setObjectName(u"MainWindow")
|
||||||
|
MainWindow.setWindowModality(Qt.WindowModality.ApplicationModal)
|
||||||
|
MainWindow.resize(1199, 703)
|
||||||
|
sizePolicy = QSizePolicy(QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Fixed)
|
||||||
|
sizePolicy.setHorizontalStretch(0)
|
||||||
|
sizePolicy.setVerticalStretch(0)
|
||||||
|
sizePolicy.setHeightForWidth(MainWindow.sizePolicy().hasHeightForWidth())
|
||||||
|
MainWindow.setSizePolicy(sizePolicy)
|
||||||
|
MainWindow.setMinimumSize(QSize(1199, 703))
|
||||||
|
MainWindow.setMaximumSize(QSize(1199, 703))
|
||||||
|
MainWindow.setContextMenuPolicy(Qt.ContextMenuPolicy.NoContextMenu)
|
||||||
|
icon = QIcon()
|
||||||
|
icon.addFile(u":/assets/Icone.ico", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
|
||||||
|
MainWindow.setWindowIcon(icon)
|
||||||
|
self.main_container = QWidget(MainWindow)
|
||||||
|
self.main_container.setObjectName(u"main_container")
|
||||||
|
self.main_container.setMinimumSize(QSize(1199, 703))
|
||||||
|
self.main_container.setMaximumSize(QSize(1199, 703))
|
||||||
|
self.verticalLayout = QVBoxLayout(self.main_container)
|
||||||
|
self.verticalLayout.setSpacing(0)
|
||||||
|
self.verticalLayout.setObjectName(u"verticalLayout")
|
||||||
|
self.verticalLayout.setContentsMargins(0, 0, 0, 0)
|
||||||
|
self.title_bar = QFrame(self.main_container)
|
||||||
|
self.title_bar.setObjectName(u"title_bar")
|
||||||
|
self.title_bar.setMinimumSize(QSize(1199, 50))
|
||||||
|
self.title_bar.setMaximumSize(QSize(1199, 50))
|
||||||
|
self.title_bar.setFrameShape(QFrame.Shape.NoFrame)
|
||||||
|
self.title_bar.setFrameShadow(QFrame.Shadow.Raised)
|
||||||
|
self.horizontalLayout = QHBoxLayout(self.title_bar)
|
||||||
|
self.horizontalLayout.setSpacing(0)
|
||||||
|
self.horizontalLayout.setObjectName(u"horizontalLayout")
|
||||||
|
self.horizontalLayout.setContentsMargins(0, 9, 0, 0)
|
||||||
|
self.horizontalSpacer = QSpacerItem(1006, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
|
||||||
|
|
||||||
|
self.horizontalLayout.addItem(self.horizontalSpacer)
|
||||||
|
|
||||||
|
self.minimize_btn = QPushButton(self.title_bar)
|
||||||
|
self.minimize_btn.setObjectName(u"minimize_btn")
|
||||||
|
self.minimize_btn.setMinimumSize(QSize(0, 0))
|
||||||
|
self.minimize_btn.setMaximumSize(QSize(25, 25))
|
||||||
|
self.minimize_btn.setStyleSheet(u"")
|
||||||
|
self.minimize_btn.setIconSize(QSize(32, 32))
|
||||||
|
|
||||||
|
self.horizontalLayout.addWidget(self.minimize_btn)
|
||||||
|
|
||||||
|
self.horizontalSpacer_2 = QSpacerItem(20, 20, QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Minimum)
|
||||||
|
|
||||||
|
self.horizontalLayout.addItem(self.horizontalSpacer_2)
|
||||||
|
|
||||||
|
self.close_btn = QPushButton(self.title_bar)
|
||||||
|
self.close_btn.setObjectName(u"close_btn")
|
||||||
|
self.close_btn.setMaximumSize(QSize(42, 42))
|
||||||
|
self.close_btn.setStyleSheet(u"")
|
||||||
|
icon1 = QIcon()
|
||||||
|
icon1.addFile(u":/assets/system-shutdown.png", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
|
||||||
|
self.close_btn.setIcon(icon1)
|
||||||
|
self.close_btn.setIconSize(QSize(32, 32))
|
||||||
|
|
||||||
|
self.horizontalLayout.addWidget(self.close_btn)
|
||||||
|
|
||||||
|
self.horizontalSpacer_3 = QSpacerItem(30, 20, QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Minimum)
|
||||||
|
|
||||||
|
self.horizontalLayout.addItem(self.horizontalSpacer_3)
|
||||||
|
|
||||||
|
|
||||||
|
self.verticalLayout.addWidget(self.title_bar)
|
||||||
|
|
||||||
|
self.frame_2 = QFrame(self.main_container)
|
||||||
|
self.frame_2.setObjectName(u"frame_2")
|
||||||
|
self.frame_2.setMinimumSize(QSize(1199, 0))
|
||||||
|
self.frame_2.setMaximumSize(QSize(1199, 658))
|
||||||
|
self.frame_2.setFrameShape(QFrame.Shape.NoFrame)
|
||||||
|
self.frame_2.setFrameShadow(QFrame.Shadow.Raised)
|
||||||
|
self.horizontalLayout_2 = QHBoxLayout(self.frame_2)
|
||||||
|
self.horizontalLayout_2.setSpacing(0)
|
||||||
|
self.horizontalLayout_2.setObjectName(u"horizontalLayout_2")
|
||||||
|
self.horizontalLayout_2.setContentsMargins(0, 0, 0, 0)
|
||||||
|
self.left_column = QFrame(self.frame_2)
|
||||||
|
self.left_column.setObjectName(u"left_column")
|
||||||
|
self.left_column.setMinimumSize(QSize(450, 630))
|
||||||
|
self.left_column.setMaximumSize(QSize(450, 630))
|
||||||
|
self.left_column.setFrameShape(QFrame.Shape.NoFrame)
|
||||||
|
self.left_column.setFrameShadow(QFrame.Shadow.Raised)
|
||||||
|
self.verticalLayout_5 = QVBoxLayout(self.left_column)
|
||||||
|
self.verticalLayout_5.setSpacing(0)
|
||||||
|
self.verticalLayout_5.setObjectName(u"verticalLayout_5")
|
||||||
|
self.verticalLayout_5.setContentsMargins(0, 0, 0, 0)
|
||||||
|
self.frame = QFrame(self.left_column)
|
||||||
|
self.frame.setObjectName(u"frame")
|
||||||
|
self.frame.setFrameShape(QFrame.Shape.NoFrame)
|
||||||
|
self.frame.setFrameShadow(QFrame.Shadow.Raised)
|
||||||
|
|
||||||
|
self.verticalLayout_5.addWidget(self.frame)
|
||||||
|
|
||||||
|
self.frame_3 = QFrame(self.left_column)
|
||||||
|
self.frame_3.setObjectName(u"frame_3")
|
||||||
|
sizePolicy1 = QSizePolicy(QSizePolicy.Policy.Preferred, QSizePolicy.Policy.Fixed)
|
||||||
|
sizePolicy1.setHorizontalStretch(0)
|
||||||
|
sizePolicy1.setVerticalStretch(0)
|
||||||
|
sizePolicy1.setHeightForWidth(self.frame_3.sizePolicy().hasHeightForWidth())
|
||||||
|
self.frame_3.setSizePolicy(sizePolicy1)
|
||||||
|
self.frame_3.setMinimumSize(QSize(0, 100))
|
||||||
|
self.frame_3.setFrameShape(QFrame.Shape.NoFrame)
|
||||||
|
self.frame_3.setFrameShadow(QFrame.Shadow.Raised)
|
||||||
|
self.horizontalLayout_6 = QHBoxLayout(self.frame_3)
|
||||||
|
self.horizontalLayout_6.setSpacing(0)
|
||||||
|
self.horizontalLayout_6.setObjectName(u"horizontalLayout_6")
|
||||||
|
self.horizontalLayout_6.setContentsMargins(0, 0, 0, 0)
|
||||||
|
self.frame_5 = QFrame(self.frame_3)
|
||||||
|
self.frame_5.setObjectName(u"frame_5")
|
||||||
|
sizePolicy2 = QSizePolicy(QSizePolicy.Policy.Preferred, QSizePolicy.Policy.Preferred)
|
||||||
|
sizePolicy2.setHorizontalStretch(0)
|
||||||
|
sizePolicy2.setVerticalStretch(0)
|
||||||
|
sizePolicy2.setHeightForWidth(self.frame_5.sizePolicy().hasHeightForWidth())
|
||||||
|
self.frame_5.setSizePolicy(sizePolicy2)
|
||||||
|
self.frame_5.setMinimumSize(QSize(0, 0))
|
||||||
|
self.frame_5.setFrameShape(QFrame.Shape.NoFrame)
|
||||||
|
self.frame_5.setFrameShadow(QFrame.Shadow.Raised)
|
||||||
|
self.horizontalLayout_8 = QHBoxLayout(self.frame_5)
|
||||||
|
self.horizontalLayout_8.setObjectName(u"horizontalLayout_8")
|
||||||
|
self.queue_lbl = QLabel(self.frame_5)
|
||||||
|
self.queue_lbl.setObjectName(u"queue_lbl")
|
||||||
|
self.queue_lbl.setAutoFillBackground(False)
|
||||||
|
self.queue_lbl.setAlignment(Qt.AlignmentFlag.AlignCenter)
|
||||||
|
|
||||||
|
self.horizontalLayout_8.addWidget(self.queue_lbl)
|
||||||
|
|
||||||
|
self.queue_position = QLabel(self.frame_5)
|
||||||
|
self.queue_position.setObjectName(u"queue_position")
|
||||||
|
self.queue_position.setAlignment(Qt.AlignmentFlag.AlignCenter)
|
||||||
|
|
||||||
|
self.horizontalLayout_8.addWidget(self.queue_position)
|
||||||
|
|
||||||
|
self.horizontalSpacer_5 = QSpacerItem(80, 20, QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Minimum)
|
||||||
|
|
||||||
|
self.horizontalLayout_8.addItem(self.horizontalSpacer_5)
|
||||||
|
|
||||||
|
|
||||||
|
self.horizontalLayout_6.addWidget(self.frame_5)
|
||||||
|
|
||||||
|
|
||||||
|
self.verticalLayout_5.addWidget(self.frame_3)
|
||||||
|
|
||||||
|
self.frame_4 = QFrame(self.left_column)
|
||||||
|
self.frame_4.setObjectName(u"frame_4")
|
||||||
|
sizePolicy1.setHeightForWidth(self.frame_4.sizePolicy().hasHeightForWidth())
|
||||||
|
self.frame_4.setSizePolicy(sizePolicy1)
|
||||||
|
self.frame_4.setMinimumSize(QSize(0, 0))
|
||||||
|
self.frame_4.setMaximumSize(QSize(16777215, 50))
|
||||||
|
self.frame_4.setStyleSheet(u"")
|
||||||
|
self.frame_4.setFrameShape(QFrame.Shape.NoFrame)
|
||||||
|
self.frame_4.setFrameShadow(QFrame.Shadow.Raised)
|
||||||
|
self.horizontalLayout_7 = QHBoxLayout(self.frame_4)
|
||||||
|
self.horizontalLayout_7.setObjectName(u"horizontalLayout_7")
|
||||||
|
self.horizontalSlider = QSlider(self.frame_4)
|
||||||
|
self.horizontalSlider.setObjectName(u"horizontalSlider")
|
||||||
|
self.horizontalSlider.setAutoFillBackground(False)
|
||||||
|
self.horizontalSlider.setStyleSheet(u"")
|
||||||
|
self.horizontalSlider.setValue(20)
|
||||||
|
self.horizontalSlider.setOrientation(Qt.Orientation.Horizontal)
|
||||||
|
self.horizontalSlider.setInvertedAppearance(False)
|
||||||
|
|
||||||
|
self.horizontalLayout_7.addWidget(self.horizontalSlider)
|
||||||
|
|
||||||
|
self.volume_btn = QPushButton(self.frame_4)
|
||||||
|
self.volume_btn.setObjectName(u"volume_btn")
|
||||||
|
self.volume_btn.setMinimumSize(QSize(32, 32))
|
||||||
|
icon2 = QIcon()
|
||||||
|
icon2.addFile(u":/assets/sound-speaker.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
|
||||||
|
self.volume_btn.setIcon(icon2)
|
||||||
|
self.volume_btn.setFlat(True)
|
||||||
|
|
||||||
|
self.horizontalLayout_7.addWidget(self.volume_btn)
|
||||||
|
|
||||||
|
self.horizontalSpacer_10 = QSpacerItem(180, 20, QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Minimum)
|
||||||
|
|
||||||
|
self.horizontalLayout_7.addItem(self.horizontalSpacer_10)
|
||||||
|
|
||||||
|
|
||||||
|
self.verticalLayout_5.addWidget(self.frame_4)
|
||||||
|
|
||||||
|
|
||||||
|
self.horizontalLayout_2.addWidget(self.left_column)
|
||||||
|
|
||||||
|
self.right_column = QFrame(self.frame_2)
|
||||||
|
self.right_column.setObjectName(u"right_column")
|
||||||
|
sizePolicy2.setHeightForWidth(self.right_column.sizePolicy().hasHeightForWidth())
|
||||||
|
self.right_column.setSizePolicy(sizePolicy2)
|
||||||
|
self.right_column.setMinimumSize(QSize(0, 650))
|
||||||
|
self.right_column.setMaximumSize(QSize(700, 650))
|
||||||
|
self.right_column.setFrameShape(QFrame.Shape.NoFrame)
|
||||||
|
self.right_column.setFrameShadow(QFrame.Shadow.Raised)
|
||||||
|
self.verticalLayout_2 = QVBoxLayout(self.right_column)
|
||||||
|
self.verticalLayout_2.setSpacing(0)
|
||||||
|
self.verticalLayout_2.setObjectName(u"verticalLayout_2")
|
||||||
|
self.verticalLayout_2.setContentsMargins(0, 0, 0, 0)
|
||||||
|
self.title_frame = QFrame(self.right_column)
|
||||||
|
self.title_frame.setObjectName(u"title_frame")
|
||||||
|
sizePolicy1.setHeightForWidth(self.title_frame.sizePolicy().hasHeightForWidth())
|
||||||
|
self.title_frame.setSizePolicy(sizePolicy1)
|
||||||
|
self.title_frame.setMinimumSize(QSize(0, 140))
|
||||||
|
self.title_frame.setMaximumSize(QSize(16777215, 180))
|
||||||
|
self.title_frame.setStyleSheet(u"")
|
||||||
|
self.title_frame.setFrameShape(QFrame.Shape.NoFrame)
|
||||||
|
self.title_frame.setFrameShadow(QFrame.Shadow.Raised)
|
||||||
|
self.verticalLayout_3 = QVBoxLayout(self.title_frame)
|
||||||
|
self.verticalLayout_3.setSpacing(0)
|
||||||
|
self.verticalLayout_3.setObjectName(u"verticalLayout_3")
|
||||||
|
self.verticalLayout_3.setContentsMargins(-1, -1, -1, 9)
|
||||||
|
self.maintitle_label = QLabel(self.title_frame)
|
||||||
|
self.maintitle_label.setObjectName(u"maintitle_label")
|
||||||
|
|
||||||
|
self.verticalLayout_3.addWidget(self.maintitle_label, 0, Qt.AlignmentFlag.AlignHCenter)
|
||||||
|
|
||||||
|
self.verticalSpacer = QSpacerItem(20, 10, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Fixed)
|
||||||
|
|
||||||
|
self.verticalLayout_3.addItem(self.verticalSpacer)
|
||||||
|
|
||||||
|
self.subtitle_label = QLabel(self.title_frame)
|
||||||
|
self.subtitle_label.setObjectName(u"subtitle_label")
|
||||||
|
self.subtitle_label.setMinimumSize(QSize(0, 0))
|
||||||
|
self.subtitle_label.setTextFormat(Qt.TextFormat.AutoText)
|
||||||
|
self.subtitle_label.setAlignment(Qt.AlignmentFlag.AlignCenter)
|
||||||
|
|
||||||
|
self.verticalLayout_3.addWidget(self.subtitle_label)
|
||||||
|
|
||||||
|
|
||||||
|
self.verticalLayout_2.addWidget(self.title_frame, 0, Qt.AlignmentFlag.AlignHCenter)
|
||||||
|
|
||||||
|
self.btn_frame = QFrame(self.right_column)
|
||||||
|
self.btn_frame.setObjectName(u"btn_frame")
|
||||||
|
sizePolicy1.setHeightForWidth(self.btn_frame.sizePolicy().hasHeightForWidth())
|
||||||
|
self.btn_frame.setSizePolicy(sizePolicy1)
|
||||||
|
self.btn_frame.setMinimumSize(QSize(0, 150))
|
||||||
|
self.btn_frame.setMaximumSize(QSize(16777215, 150))
|
||||||
|
self.btn_frame.setStyleSheet(u"")
|
||||||
|
self.btn_frame.setFrameShape(QFrame.Shape.NoFrame)
|
||||||
|
self.btn_frame.setFrameShadow(QFrame.Shadow.Raised)
|
||||||
|
self.verticalLayout_4 = QVBoxLayout(self.btn_frame)
|
||||||
|
self.verticalLayout_4.setObjectName(u"verticalLayout_4")
|
||||||
|
self.horizontalLayout_3 = QHBoxLayout()
|
||||||
|
self.horizontalLayout_3.setObjectName(u"horizontalLayout_3")
|
||||||
|
self.horizontalSpacer_4 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
|
||||||
|
|
||||||
|
self.horizontalLayout_3.addItem(self.horizontalSpacer_4)
|
||||||
|
|
||||||
|
self.connexion_btn = QPushButton(self.btn_frame)
|
||||||
|
self.connexion_btn.setObjectName(u"connexion_btn")
|
||||||
|
self.connexion_btn.setMinimumSize(QSize(250, 50))
|
||||||
|
self.connexion_btn.setMaximumSize(QSize(16777215, 16777215))
|
||||||
|
self.connexion_btn.setStyleSheet(u"")
|
||||||
|
icon3 = QIcon()
|
||||||
|
icon3.addFile(u":/assets/padlock-lock.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
|
||||||
|
self.connexion_btn.setIcon(icon3)
|
||||||
|
self.connexion_btn.setIconSize(QSize(32, 32))
|
||||||
|
|
||||||
|
self.horizontalLayout_3.addWidget(self.connexion_btn)
|
||||||
|
|
||||||
|
self.spacer_substitution = QWidget(self.btn_frame)
|
||||||
|
self.spacer_substitution.setObjectName(u"spacer_substitution")
|
||||||
|
self.spacer_substitution.setMinimumSize(QSize(53, 0))
|
||||||
|
|
||||||
|
self.horizontalLayout_3.addWidget(self.spacer_substitution)
|
||||||
|
|
||||||
|
self.staff_btn = QPushButton(self.btn_frame)
|
||||||
|
self.staff_btn.setObjectName(u"staff_btn")
|
||||||
|
self.staff_btn.setMinimumSize(QSize(250, 50))
|
||||||
|
self.staff_btn.setMaximumSize(QSize(16777215, 16777215))
|
||||||
|
|
||||||
|
self.horizontalLayout_3.addWidget(self.staff_btn)
|
||||||
|
|
||||||
|
self.horizontalSpacer_6 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
|
||||||
|
|
||||||
|
self.horizontalLayout_3.addItem(self.horizontalSpacer_6)
|
||||||
|
|
||||||
|
|
||||||
|
self.verticalLayout_4.addLayout(self.horizontalLayout_3)
|
||||||
|
|
||||||
|
self.horizontalLayout_4 = QHBoxLayout()
|
||||||
|
self.horizontalLayout_4.setObjectName(u"horizontalLayout_4")
|
||||||
|
self.horizontalSpacer_7 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
|
||||||
|
|
||||||
|
self.horizontalLayout_4.addItem(self.horizontalSpacer_7)
|
||||||
|
|
||||||
|
self.discord_btn = QPushButton(self.btn_frame)
|
||||||
|
self.discord_btn.setObjectName(u"discord_btn")
|
||||||
|
self.discord_btn.setMinimumSize(QSize(250, 50))
|
||||||
|
icon4 = QIcon()
|
||||||
|
icon4.addFile(u":/assets/Logo_Discord_2015.png", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
|
||||||
|
self.discord_btn.setIcon(icon4)
|
||||||
|
self.discord_btn.setIconSize(QSize(32, 32))
|
||||||
|
|
||||||
|
self.horizontalLayout_4.addWidget(self.discord_btn)
|
||||||
|
|
||||||
|
self.horizontalSpacer_8 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
|
||||||
|
|
||||||
|
self.horizontalLayout_4.addItem(self.horizontalSpacer_8)
|
||||||
|
|
||||||
|
self.intranet_btn = QPushButton(self.btn_frame)
|
||||||
|
self.intranet_btn.setObjectName(u"intranet_btn")
|
||||||
|
self.intranet_btn.setMinimumSize(QSize(250, 50))
|
||||||
|
icon5 = QIcon()
|
||||||
|
icon5.addFile(u":/assets/computer-tv.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
|
||||||
|
self.intranet_btn.setIcon(icon5)
|
||||||
|
self.intranet_btn.setIconSize(QSize(32, 32))
|
||||||
|
|
||||||
|
self.horizontalLayout_4.addWidget(self.intranet_btn)
|
||||||
|
|
||||||
|
self.horizontalSpacer_9 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
|
||||||
|
|
||||||
|
self.horizontalLayout_4.addItem(self.horizontalSpacer_9)
|
||||||
|
|
||||||
|
|
||||||
|
self.verticalLayout_4.addLayout(self.horizontalLayout_4)
|
||||||
|
|
||||||
|
|
||||||
|
self.verticalLayout_2.addWidget(self.btn_frame)
|
||||||
|
|
||||||
|
self.verticalSpacer_3 = QSpacerItem(20, 20, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Fixed)
|
||||||
|
|
||||||
|
self.verticalLayout_2.addItem(self.verticalSpacer_3)
|
||||||
|
|
||||||
|
self.info_frame = QFrame(self.right_column)
|
||||||
|
self.info_frame.setObjectName(u"info_frame")
|
||||||
|
sizePolicy1.setHeightForWidth(self.info_frame.sizePolicy().hasHeightForWidth())
|
||||||
|
self.info_frame.setSizePolicy(sizePolicy1)
|
||||||
|
self.info_frame.setMinimumSize(QSize(0, 310))
|
||||||
|
self.info_frame.setMaximumSize(QSize(16777215, 280))
|
||||||
|
self.info_frame.setStyleSheet(u"")
|
||||||
|
self.info_frame.setFrameShape(QFrame.Shape.StyledPanel)
|
||||||
|
self.info_frame.setFrameShadow(QFrame.Shadow.Raised)
|
||||||
|
self.horizontalLayout_5 = QHBoxLayout(self.info_frame)
|
||||||
|
self.horizontalLayout_5.setObjectName(u"horizontalLayout_5")
|
||||||
|
self.info_text = QTextEdit(self.info_frame)
|
||||||
|
self.info_text.setObjectName(u"info_text")
|
||||||
|
self.info_text.setReadOnly(True)
|
||||||
|
|
||||||
|
self.horizontalLayout_5.addWidget(self.info_text)
|
||||||
|
|
||||||
|
|
||||||
|
self.verticalLayout_2.addWidget(self.info_frame)
|
||||||
|
|
||||||
|
self.verticalSpacer_2 = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
|
||||||
|
|
||||||
|
self.verticalLayout_2.addItem(self.verticalSpacer_2)
|
||||||
|
|
||||||
|
|
||||||
|
self.horizontalLayout_2.addWidget(self.right_column)
|
||||||
|
|
||||||
|
|
||||||
|
self.verticalLayout.addWidget(self.frame_2)
|
||||||
|
|
||||||
|
MainWindow.setCentralWidget(self.main_container)
|
||||||
|
|
||||||
|
self.retranslateUi(MainWindow)
|
||||||
|
|
||||||
|
QMetaObject.connectSlotsByName(MainWindow)
|
||||||
|
# setupUi
|
||||||
|
|
||||||
|
def retranslateUi(self, MainWindow):
|
||||||
|
MainWindow.setWindowTitle(QCoreApplication.translate("MainWindow", u"MainWindow", None))
|
||||||
|
self.minimize_btn.setText("")
|
||||||
|
self.close_btn.setText("")
|
||||||
|
self.queue_lbl.setText(QCoreApplication.translate("MainWindow", u"Position en file d'attente: ", None))
|
||||||
|
self.queue_position.setText(QCoreApplication.translate("MainWindow", u"20", None))
|
||||||
|
self.volume_btn.setText("")
|
||||||
|
self.maintitle_label.setText(QCoreApplication.translate("MainWindow", u"LA TANI\u00c8RE", None))
|
||||||
|
self.subtitle_label.setText(QCoreApplication.translate("MainWindow", u"Un espace pour se retrouver", None))
|
||||||
|
self.connexion_btn.setText(QCoreApplication.translate("MainWindow", u" Connexion", None))
|
||||||
|
self.staff_btn.setText(QCoreApplication.translate("MainWindow", u"staff", None))
|
||||||
|
self.discord_btn.setText(QCoreApplication.translate("MainWindow", u" Discord", None))
|
||||||
|
self.intranet_btn.setText(QCoreApplication.translate("MainWindow", u" Intranet", None))
|
||||||
|
# retranslateUi
|
||||||
|
|
||||||
@@ -1,74 +0,0 @@
|
|||||||
version = 1
|
|
||||||
revision = 3
|
|
||||||
requires-python = ">=3.14"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "myproject"
|
|
||||||
version = "0.1.0"
|
|
||||||
source = { virtual = "." }
|
|
||||||
dependencies = [
|
|
||||||
{ name = "pyside6" },
|
|
||||||
]
|
|
||||||
|
|
||||||
[package.metadata]
|
|
||||||
requires-dist = [{ name = "pyside6", specifier = ">=6.10.2" }]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "pyside6"
|
|
||||||
version = "6.10.2"
|
|
||||||
source = { registry = "https://pypi.org/simple" }
|
|
||||||
dependencies = [
|
|
||||||
{ name = "pyside6-addons" },
|
|
||||||
{ name = "pyside6-essentials" },
|
|
||||||
{ name = "shiboken6" },
|
|
||||||
]
|
|
||||||
wheels = [
|
|
||||||
{ url = "https://files.pythonhosted.org/packages/35/0f/5736889fc850794623692cb369e295a994175e51295fa52134626f486296/pyside6-6.10.2-cp39-abi3-macosx_13_0_universal2.whl", hash = "sha256:4b084293caa7845d0064aaf6af258e0f7caae03a14a33537d0a552131afddaf0", size = 563185, upload-time = "2026-02-02T08:50:47.161Z" },
|
|
||||||
{ url = "https://files.pythonhosted.org/packages/35/d3/ab5cd2fac3d34469c7376e0cd18eec92905dbe44748c70bda7699a2a7206/pyside6-6.10.2-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:1b89ce8558d4b4f35b85bff1db90d680912e4d3ce9e79ff804d6fef1d1a151ef", size = 563357, upload-time = "2026-02-02T08:50:48.919Z" },
|
|
||||||
{ url = "https://files.pythonhosted.org/packages/ea/8c/55bbd50c138c8dc12edc9f25e9d94760a33e574905468e98dff399094baa/pyside6-6.10.2-cp39-abi3-manylinux_2_39_aarch64.whl", hash = "sha256:0439f5e9b10ebe6177981bac9e219096ec970ac6ec215bef055279802ba50601", size = 563357, upload-time = "2026-02-02T08:50:50.077Z" },
|
|
||||||
{ url = "https://files.pythonhosted.org/packages/4f/d4/673b8112b4a260377f760be835c4e357163fdaf68a56a1aec59aeb8e584b/pyside6-6.10.2-cp39-abi3-win_amd64.whl", hash = "sha256:032bad6b18a17fcbf4dddd0397f49b07f8aae7f1a45b7e4de7037bf7fd6e0edf", size = 569554, upload-time = "2026-02-02T08:50:51.147Z" },
|
|
||||||
{ url = "https://files.pythonhosted.org/packages/14/95/bda648fcccf61fe58cb417284716ae30acdddd44f7d4cbad6eea4ccaa872/pyside6-6.10.2-cp39-abi3-win_arm64.whl", hash = "sha256:65a59ad0bc92525639e3268d590948ce07a80ee97b55e7a9200db41d493cac31", size = 553828, upload-time = "2026-02-02T08:50:52.244Z" },
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "pyside6-addons"
|
|
||||||
version = "6.10.2"
|
|
||||||
source = { registry = "https://pypi.org/simple" }
|
|
||||||
dependencies = [
|
|
||||||
{ name = "pyside6-essentials" },
|
|
||||||
{ name = "shiboken6" },
|
|
||||||
]
|
|
||||||
wheels = [
|
|
||||||
{ url = "https://files.pythonhosted.org/packages/61/06/c283567628ffa2cefc3c72374ad607f1dfc9842a03db65f1347b9ae52bee/pyside6_addons-6.10.2-cp39-abi3-macosx_13_0_universal2.whl", hash = "sha256:0de7d0c9535e17d5e3b634b61314a1867f3b0f6d35c3d7cdc99efc353192faff", size = 322745605, upload-time = "2026-02-02T08:39:19.929Z" },
|
|
||||||
{ url = "https://files.pythonhosted.org/packages/a5/69/e1ab8c756fd3984b1fd7b186446227f524f6b561160bfbfdba8874b4709a/pyside6_addons-6.10.2-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:030a851163b51dbf0063be59e9ddb6a9e760bde89a28e461ccc81a224d286eaf", size = 170718434, upload-time = "2026-02-02T08:40:55.989Z" },
|
|
||||||
{ url = "https://files.pythonhosted.org/packages/df/e5/18ba86ba86d1231c486d36f9accfe862ed6eb52ca0b698aeaf6e837a87ca/pyside6_addons-6.10.2-cp39-abi3-manylinux_2_39_aarch64.whl", hash = "sha256:fcee0373e3fd7b98f014094e5e37b4a39e4de7c5a47c13f654a7d557d4a426ad", size = 166423836, upload-time = "2026-02-02T08:42:44.918Z" },
|
|
||||||
{ url = "https://files.pythonhosted.org/packages/99/13/503bec9201881968c372cb634069535e80aec2489f3907d676e151a1023f/pyside6_addons-6.10.2-cp39-abi3-win_amd64.whl", hash = "sha256:c20150068525a17494f3b6576c5d61c417cf9a5870659e29f5ebd83cd20a78ea", size = 164712775, upload-time = "2026-02-02T08:43:23.729Z" },
|
|
||||||
{ url = "https://files.pythonhosted.org/packages/b6/39/44d6710b4dd18d745077b5fc6ded4ba6f32987a6e49c5834529e50f02155/pyside6_addons-6.10.2-cp39-abi3-win_arm64.whl", hash = "sha256:3d18db739b46946ba7b722d8ad4cc2097135033aa6ea57076e64d591e6a345f3", size = 34041396, upload-time = "2026-02-02T08:43:31.246Z" },
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "pyside6-essentials"
|
|
||||||
version = "6.10.2"
|
|
||||||
source = { registry = "https://pypi.org/simple" }
|
|
||||||
dependencies = [
|
|
||||||
{ name = "shiboken6" },
|
|
||||||
]
|
|
||||||
wheels = [
|
|
||||||
{ url = "https://files.pythonhosted.org/packages/1d/2e/5f18a77f5e0bd730bacec93a690d0ef3c96a9711d213653eacecbf241b8d/pyside6_essentials-6.10.2-cp39-abi3-macosx_13_0_universal2.whl", hash = "sha256:1dee2cb9803ff135f881dadeb5c0edcef793d1ec4f8a9140a1348cecb71074e1", size = 105913067, upload-time = "2026-02-02T08:45:37.508Z" },
|
|
||||||
{ url = "https://files.pythonhosted.org/packages/99/20/3a6ca95052e1744b5a3eba164e2dd451d358a3dcaf78179de4b45c8e3f47/pyside6_essentials-6.10.2-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:660aea45bfa36f1e06f799b934c2a7df963bd31abc5083e8bb8a5bfaef45686b", size = 77027153, upload-time = "2026-02-02T08:45:53.09Z" },
|
|
||||||
{ url = "https://files.pythonhosted.org/packages/93/a6/6073e4ddc2a5c7b3941606e4bc8bbaadcf0737f57450620b0793041c8d22/pyside6_essentials-6.10.2-cp39-abi3-manylinux_2_39_aarch64.whl", hash = "sha256:c2b028e4c6f8047a02c31f373408e23b4eedfd405f56c6aba8d0525c29472835", size = 76114242, upload-time = "2026-02-02T08:46:07.184Z" },
|
|
||||||
{ url = "https://files.pythonhosted.org/packages/22/a8/616bbbd009efd3e17bf9a2db09d90c6764c010565cd2bdea2a240bfd18f7/pyside6_essentials-6.10.2-cp39-abi3-win_amd64.whl", hash = "sha256:0741018c2b6395038cad4c41775cfae3f13a409e87995ac9f7d89e5b1fb6b22a", size = 74546490, upload-time = "2026-02-02T08:46:26.395Z" },
|
|
||||||
{ url = "https://files.pythonhosted.org/packages/b9/f9/c9757a984c4ffb6d12fab69e966d95dfc862a5d44e12b7900f3a03780b76/pyside6_essentials-6.10.2-cp39-abi3-win_arm64.whl", hash = "sha256:db5f4913648bb6afddb8b347edae151ee2378f12bceb03c8b2515a530a4b38d9", size = 55258626, upload-time = "2026-02-02T08:46:36.788Z" },
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "shiboken6"
|
|
||||||
version = "6.10.2"
|
|
||||||
source = { registry = "https://pypi.org/simple" }
|
|
||||||
wheels = [
|
|
||||||
{ url = "https://files.pythonhosted.org/packages/fb/38/3912eb08a3b865b5fcdb4bdce8076cacc211986cee587f5cb62e637791af/shiboken6-6.10.2-cp39-abi3-macosx_13_0_universal2.whl", hash = "sha256:3bd4e94e9a3c8c1fa8362fd752d399ef39265d5264e4e37bae61cdaa2a00c8c7", size = 479829, upload-time = "2026-02-02T08:50:22.495Z" },
|
|
||||||
{ url = "https://files.pythonhosted.org/packages/52/88/292e0576489c46624ab419ee284ac5a59ae10e2eb34a58b6abca51dfd290/shiboken6-6.10.2-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:ace0790032d9cb0adda644b94ee28d59410180d9773643bb6cf8438c361987ad", size = 273052, upload-time = "2026-02-02T08:50:24.539Z" },
|
|
||||||
{ url = "https://files.pythonhosted.org/packages/06/c2/03d44d34e8264e1f25671677fece95b414c70fd85dcc2be8d5e821ee2628/shiboken6-6.10.2-cp39-abi3-manylinux_2_39_aarch64.whl", hash = "sha256:f74d3ed1f92658077d0630c39e694eb043aeb1d830a5d275176c45d07147427f", size = 269868, upload-time = "2026-02-02T08:50:25.662Z" },
|
|
||||||
{ url = "https://files.pythonhosted.org/packages/71/5d/5ca52c0ef86b3d01572131b6709bd531a080995f7e680720e9424328ce1d/shiboken6-6.10.2-cp39-abi3-win_amd64.whl", hash = "sha256:10f3c8c5e1b8bee779346f21c10dbc14cff068f0b0b4e62420c82a6bf36ac2e7", size = 1222052, upload-time = "2026-02-02T08:50:27.502Z" },
|
|
||||||
{ url = "https://files.pythonhosted.org/packages/46/52/421fd378313c89b67ee7d584bf4e9ec088fa1804891b8d74e02b16703457/shiboken6-6.10.2-cp39-abi3-win_arm64.whl", hash = "sha256:20c671645d70835af212ee05df60361d734c5305edb2746e9875c6a31283f963", size = 1784089, upload-time = "2026-02-02T08:50:29.069Z" },
|
|
||||||
]
|
|
||||||
Reference in New Issue
Block a user