Work on about page, shortcut

This commit is contained in:
2026-03-30 13:36:06 +02:00
parent 457f7b11e5
commit 7c564518d6
12 changed files with 955 additions and 44 deletions
+23
View File
@@ -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="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
viewBox="0 0 330 330" xml:space="preserve">
<g id="XMLID_2243_">
<polygon id="XMLID_2381_" style="fill:#DEDDE0;" points="65,290 65,260 65,200 35,200 35,330 165,330 165,290 "/>
<polygon id="XMLID_2382_" style="fill:#CDCDD0;" points="265,200 265,260 265,290 165,290 165,330 295,330 295,200 "/>
<rect id="XMLID_2383_" x="65" y="200" style="fill:#818085;" width="100" height="60"/>
<rect id="XMLID_2384_" x="165" y="200" style="fill:#565659;" width="100" height="60"/>
<polygon id="XMLID_2385_" style="fill:#FFFFFF;" points="65,260 65,290 165,290 265,290 265,260 165,260 "/>
<path id="XMLID_2386_" style="fill:#FF5023;" d="M165,200v-0.469V160c0,0-30.755-27.342-48.227-60H80.625L15,200h20h30H165z"/>
<path id="XMLID_2387_" style="fill:#BF3C1A;" d="M165,160v39.531V200h100h30h20l-65.625-100h-36.148
C195.755,132.658,165,160,165,160z"/>
<path id="XMLID_2388_" style="fill:#78B9EB;" d="M165,160v-60h-7.388V59.091H165v-3.422h-7.388V43.226H165V0
c-33.137,0-60,26.863-60,60c0,13.254,4.843,27.045,11.773,40C134.245,132.658,165,160,165,160z"/>
<path id="XMLID_2389_" style="fill:#5A8BB0;" d="M172.388,43.226v12.443H165v3.422h7.388V100H165v60c0,0,30.755-27.342,48.227-60
C220.157,87.045,225,73.254,225,60c0-33.137-26.863-60-60-60v43.226H172.388z"/>
<polygon id="XMLID_2390_" style="fill:#FFFFFF;" points="172.388,43.226 165,43.226 157.612,43.226 157.612,55.669 165,55.669
172.388,55.669 "/>
<polygon id="XMLID_2391_" style="fill:#FFFFFF;" points="172.388,59.091 165,59.091 157.612,59.091 157.612,100 165,100
172.388,100 "/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

+17
View File
@@ -0,0 +1,17 @@
<?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 512" xml:space="preserve">
<path style="fill:#AEADB3;" d="M511.958,308.445L512,206.866l-65.964-7.24c-3.594-12.098-8.326-23.82-14.167-35.04l42.197-52.529
l-71.815-71.846L350.485,81.76c-11.116-6.039-22.754-10.98-34.789-14.783l-7.313-66.957H206.793l-7.209,65.975
c-11.983,3.552-23.611,8.243-34.727,14.02l-52.477-42.27l-71.94,71.721l41.486,51.829c-6.059,11.105-11.022,22.744-14.825,34.758
l-66.967,7.24L0,304.872l65.964,7.292c3.573,12.108,8.295,23.83,14.135,35.051L37.85,399.713l71.752,71.909l51.808-41.507
c11.116,6.049,22.744,11.001,34.769,14.814l7.261,66.967l52.581,0.042l49.008,0.042l7.261-65.964
c12.098-3.583,23.83-8.316,35.04-14.156l52.518,42.228l71.877-71.783l-41.528-51.787c6.039-11.116,10.991-22.754,14.793-34.779
L511.958,308.445z M256.021,347.706c-50.659,0-91.727-41.068-91.727-91.727s41.068-91.727,91.727-91.727
s91.727,41.068,91.727,91.727S306.68,347.706,256.021,347.706z"/>
<path style="fill:#8B8892;" d="M444.991,315.738c-3.803,12.025-8.755,23.663-14.793,34.779l41.528,51.787l-71.877,71.783
l-52.518-42.228c-11.21,5.84-22.942,10.573-35.04,14.156l-7.261,65.964l-49.008-0.042V347.706c50.659,0,91.727-41.068,91.727-91.727
s-41.068-91.727-91.727-91.727V0.021h52.362l7.313,66.957c12.035,3.803,23.674,8.744,34.789,14.783l51.766-41.549l71.815,71.846
l-42.197,52.529c5.84,11.22,10.573,22.942,14.167,35.04l65.964,7.24l-0.042,101.579L444.991,315.738z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

+2
View File
@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 50.8 50.8" xmlns="http://www.w3.org/2000/svg"><path fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="3.175" d="M5.82 41.451s9.994-13.552 23.549-10.495v9.143l15.61-15.463-15.61-15.111v10.319S5.82 23.107 5.82 41.452z" style="paint-order:markers stroke fill"/></svg>

After

Width:  |  Height:  |  Size: 470 B

+3
View File
@@ -1,5 +1,8 @@
<RCC> <RCC>
<qresource prefix="/"> <qresource prefix="/">
<file>assets/settings.svg</file>
<file>assets/shortcut.svg</file>
<file>assets/information-point.svg</file>
<file>assets/no_whitelist.svg</file> <file>assets/no_whitelist.svg</file>
<file>assets/closed-store-info.svg</file> <file>assets/closed-store-info.svg</file>
<file>assets/letter-i-info.svg</file> <file>assets/letter-i-info.svg</file>
+5
View File
@@ -3,6 +3,11 @@ from enum import Enum
from PySide6.QtGui import QColor from PySide6.QtGui import QColor
# ---------------------------------------------------------------------------
# Launcher Version
# ---------------------------------------------------------------------------
VERSION = "0.9.0"
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
# Callback return message. ⚠️ Ne pas supprimer $LOGO$ # Callback return message. ⚠️ Ne pas supprimer $LOGO$
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
+2 -3
View File
@@ -20,7 +20,7 @@ class FiveMLauncher:
self.fivem_path = os.path.expandvars(fivem_path) self.fivem_path = os.path.expandvars(fivem_path)
@staticmethod @staticmethod
def launch(): def launch(fimveurl: str):
""" """
Launches an external application by opening the specified URL using the subprocess module. Launches an external application by opening the specified URL using the subprocess module.
@@ -35,5 +35,4 @@ class FiveMLauncher:
:return: None :return: None
""" """
subprocess.Popen(f"explorer {Urls.FIVEMURL.value}") subprocess.Popen(f"explorer {fimveurl}")
#subprocess.Popen(r'explorer fivem://connect/prod.la-taniere.fun')
+285 -12
View File
@@ -167871,6 +167871,260 @@ c-0.2,0.5-0.6,0.\
6.5,91.5,76.9z\x22/\ 6.5,91.5,76.9z\x22/\
>\x0a\x0d</g>\x0a\x0d</g>\x0a\x0d<\ >\x0a\x0d</g>\x0a\x0d</g>\x0a\x0d<\
/svg>\ /svg>\
\x00\x00\x01\xd7\
<\
?xml version=\x221.\
0\x22 encoding=\x22utf\
-8\x22?><!-- Upload\
ed to: SVG Repo,\
www.svgrepo.com\
, Generator: SVG\
Repo Mixer Tool\
s -->\x0d\x0a<svg widt\
h=\x22800px\x22 height\
=\x22800px\x22 viewBox\
=\x220 0 50.8 50.8\x22\
xmlns=\x22http://w\
ww.w3.org/2000/s\
vg\x22><path fill=\x22\
none\x22 stroke=\x22#0\
00000\x22 stroke-li\
necap=\x22round\x22 st\
roke-linejoin=\x22r\
ound\x22 stroke-wid\
th=\x223.175\x22 d=\x22M5\
.82 41.451s9.994\
-13.552 23.549-1\
0.495v9.143l15.6\
1-15.463-15.61-1\
5.111v10.319S5.8\
2 23.107 5.82 41\
.452z\x22 style=\x22pa\
int-order:marker\
s stroke fill\x22/>\
</svg>\
\x00\x00\x06\x88\
<\
?xml version=\x221.\
0\x22 encoding=\x22iso\
-8859-1\x22?>\x0d\x0a<!--\
Uploaded to: SV\
G Repo, www.svgr\
epo.com, Generat\
or: SVG Repo Mix\
er Tools -->\x0d\x0a<s\
vg height=\x22800px\
\x22 width=\x22800px\x22 \
version=\x221.1\x22 id\
=\x22Layer_1\x22 xmlns\
=\x22http://www.w3.\
org/2000/svg\x22 xm\
lns:xlink=\x22http:\
//www.w3.org/199\
9/xlink\x22 \x0d\x0a\x09 vie\
wBox=\x220 0 512 51\
2\x22 xml:space=\x22pr\
eserve\x22>\x0d\x0a<path \
style=\x22fill:#AEA\
DB3;\x22 d=\x22M511.95\
8,308.445L512,20\
6.866l-65.964-7.\
24c-3.594-12.098\
-8.326-23.82-14.\
167-35.04l42.197\
-52.529\x0d\x0a\x09l-71.8\
15-71.846L350.48\
5,81.76c-11.116-\
6.039-22.754-10.\
98-34.789-14.783\
l-7.313-66.957H2\
06.793l-7.209,65\
.975\x0d\x0a\x09c-11.983,\
3.552-23.611,8.2\
43-34.727,14.02l\
-52.477-42.27l-7\
1.94,71.721l41.4\
86,51.829c-6.059\
,11.105-11.022,2\
2.744-14.825,34.\
758\x0d\x0a\x09l-66.967,7\
.24L0,304.872l65\
.964,7.292c3.573\
,12.108,8.295,23\
.83,14.135,35.05\
1L37.85,399.713l\
71.752,71.909l51\
.808-41.507\x0d\x0a\x09c1\
1.116,6.049,22.7\
44,11.001,34.769\
,14.814l7.261,66\
.967l52.581,0.04\
2l49.008,0.042l7\
.261-65.964\x0d\x0a\x09c1\
2.098-3.583,23.8\
3-8.316,35.04-14\
.156l52.518,42.2\
28l71.877-71.783\
l-41.528-51.787c\
6.039-11.116,10.\
991-22.754,14.79\
3-34.779\x0d\x0a\x09L511.\
958,308.445z M25\
6.021,347.706c-5\
0.659,0-91.727-4\
1.068-91.727-91.\
727s41.068-91.72\
7,91.727-91.727\x0d\
\x0a\x09s91.727,41.068\
,91.727,91.727S3\
06.68,347.706,25\
6.021,347.706z\x22/\
>\x0d\x0a<path style=\x22\
fill:#8B8892;\x22 d\
=\x22M444.991,315.7\
38c-3.803,12.025\
-8.755,23.663-14\
.793,34.779l41.5\
28,51.787l-71.87\
7,71.783\x0d\x0a\x09l-52.\
518-42.228c-11.2\
1,5.84-22.942,10\
.573-35.04,14.15\
6l-7.261,65.964l\
-49.008-0.042V34\
7.706c50.659,0,9\
1.727-41.068,91.\
727-91.727\x0d\x0a\x09s-4\
1.068-91.727-91.\
727-91.727V0.021\
h52.362l7.313,66\
.957c12.035,3.80\
3,23.674,8.744,3\
4.789,14.783l51.\
766-41.549l71.81\
5,71.846\x0d\x0a\x09l-42.\
197,52.529c5.84,\
11.22,10.573,22.\
942,14.167,35.04\
l65.964,7.24l-0.\
042,101.579L444.\
991,315.738z\x22/>\x0d\
\x0a</svg>\
\x00\x00\x07\x10\
<\
?xml version=\x221.\
0\x22 encoding=\x22iso\
-8859-1\x22?>\x0d\x0a<!--\
Uploaded to: SV\
G Repo, www.svgr\
epo.com, Generat\
or: SVG Repo Mix\
er Tools -->\x0d\x0a<s\
vg version=\x221.1\x22\
id=\x22Capa_1\x22 xml\
ns=\x22http://www.w\
3.org/2000/svg\x22 \
xmlns:xlink=\x22htt\
p://www.w3.org/1\
999/xlink\x22 \x0d\x0a\x09 v\
iewBox=\x220 0 330 \
330\x22 xml:space=\x22\
preserve\x22>\x0d\x0a<g i\
d=\x22XMLID_2243_\x22>\
\x0d\x0a\x09<polygon id=\x22\
XMLID_2381_\x22 sty\
le=\x22fill:#DEDDE0\
;\x22 points=\x2265,29\
0 65,260 65,200 \
35,200 35,330 16\
5,330 165,290 \x09\x22\
/>\x0d\x0a\x09<polygon id\
=\x22XMLID_2382_\x22 s\
tyle=\x22fill:#CDCD\
D0;\x22 points=\x22265\
,200 265,260 265\
,290 165,290 165\
,330 295,330 295\
,200 \x09\x22/>\x0d\x0a\x09<rec\
t id=\x22XMLID_2383\
_\x22 x=\x2265\x22 y=\x22200\
\x22 style=\x22fill:#8\
18085;\x22 width=\x221\
00\x22 height=\x2260\x22/\
>\x0d\x0a\x09<rect id=\x22XM\
LID_2384_\x22 x=\x2216\
5\x22 y=\x22200\x22 style\
=\x22fill:#565659;\x22\
width=\x22100\x22 hei\
ght=\x2260\x22/>\x0d\x0a\x09<po\
lygon id=\x22XMLID_\
2385_\x22 style=\x22fi\
ll:#FFFFFF;\x22 poi\
nts=\x2265,260 65,2\
90 165,290 265,2\
90 265,260 165,2\
60 \x09\x22/>\x0d\x0a\x09<path \
id=\x22XMLID_2386_\x22\
style=\x22fill:#FF\
5023;\x22 d=\x22M165,2\
00v-0.469V160c0,\
0-30.755-27.342-\
48.227-60H80.625\
L15,200h20h30H16\
5z\x22/>\x0d\x0a\x09<path id\
=\x22XMLID_2387_\x22 s\
tyle=\x22fill:#BF3C\
1A;\x22 d=\x22M165,160\
v39.531V200h100h\
30h20l-65.625-10\
0h-36.148\x0d\x0a\x09\x09C19\
5.755,132.658,16\
5,160,165,160z\x22/\
>\x0d\x0a\x09<path id=\x22XM\
LID_2388_\x22 style\
=\x22fill:#78B9EB;\x22\
d=\x22M165,160v-60\
h-7.388V59.091H1\
65v-3.422h-7.388\
V43.226H165V0\x0d\x0a\x09\
\x09c-33.137,0-60,2\
6.863-60,60c0,13\
.254,4.843,27.04\
5,11.773,40C134.\
245,132.658,165,\
160,165,160z\x22/>\x0d\
\x0a\x09<path id=\x22XMLI\
D_2389_\x22 style=\x22\
fill:#5A8BB0;\x22 d\
=\x22M172.388,43.22\
6v12.443H165v3.4\
22h7.388V100H165\
v60c0,0,30.755-2\
7.342,48.227-60\x0d\
\x0a\x09\x09C220.157,87.0\
45,225,73.254,22\
5,60c0-33.137-26\
.863-60-60-60v43\
.226H172.388z\x22/>\
\x0d\x0a\x09<polygon id=\x22\
XMLID_2390_\x22 sty\
le=\x22fill:#FFFFFF\
;\x22 points=\x22172.3\
88,43.226 165,43\
.226 157.612,43.\
226 157.612,55.6\
69 165,55.669 \x0d\x0a\
\x09\x09172.388,55.669\
\x09\x22/>\x0d\x0a\x09<polygon\
id=\x22XMLID_2391_\
\x22 style=\x22fill:#F\
FFFFF;\x22 points=\x22\
172.388,59.091 1\
65,59.091 157.61\
2,59.091 157.612\
,100 165,100 \x0d\x0a\x09\
\x09172.388,100 \x09\x22/\
>\x0d\x0a</g>\x0d\x0a</svg>\
\x00\x00\x87\xd4\ \x00\x00\x87\xd4\
\x00\ \x00\
\x00\x01\x00\x06\x00\x00\x00\x00\x00\x01\x00\x18\x00%,\x00\ \x00\x01\x00\x06\x00\x00\x00\x00\x00\x01\x00\x18\x00%,\x00\
@@ -181286,6 +181540,19 @@ qt_resource_name = b"\
\x00c\ \x00c\
\x00l\x00o\x00s\x00e\x00d\x00-\x00s\x00t\x00o\x00r\x00e\x00-\x00i\x00n\x00f\x00o\ \x00l\x00o\x00s\x00e\x00d\x00-\x00s\x00t\x00o\x00r\x00e\x00-\x00i\x00n\x00f\x00o\
\x00.\x00s\x00v\x00g\ \x00.\x00s\x00v\x00g\
\x00\x0c\
\x05\xf9\x89\x87\
\x00s\
\x00h\x00o\x00r\x00t\x00c\x00u\x00t\x00.\x00s\x00v\x00g\
\x00\x0c\
\x0b\xdf,\xc7\
\x00s\
\x00e\x00t\x00t\x00i\x00n\x00g\x00s\x00.\x00s\x00v\x00g\
\x00\x15\
\x052\xb4\xa7\
\x00i\
\x00n\x00f\x00o\x00r\x00m\x00a\x00t\x00i\x00o\x00n\x00-\x00p\x00o\x00i\x00n\x00t\
\x00.\x00s\x00v\x00g\
\x00\x08\ \x00\x08\
\x0aaF\x7f\ \x0aaF\x7f\
\x00I\ \x00I\
@@ -181339,33 +181606,39 @@ qt_resource_name = b"\
qt_resource_struct = b"\ qt_resource_struct = b"\
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\
\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x0e\x00\x00\x00\x02\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x11\x00\x00\x00\x02\
\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x01\xba\x00\x00\x00\x00\x00\x01\x00+\xdd\xc1\ \x00\x00\x02&\x00\x00\x00\x00\x00\x01\x00+\xed<\
\x00\x00\x01\x9c\x0ft\xac\xa3\ \x00\x00\x01\x9c\x0ft\xac\xa3\
\x00\x00\x01\x0a\x00\x00\x00\x00\x00\x01\x00)\x91\xbe\ \x00\x00\x01v\x00\x00\x00\x00\x00\x01\x00)\xa19\
\x00\x00\x01\x9c\xeb\xa8\xd4\xe5\ \x00\x00\x01\x9c\xeb\xa8\xd4\xe5\
\x00\x00\x01F\x00\x00\x00\x00\x00\x01\x00+\xce\x0b\ \x00\x00\x01\xb2\x00\x00\x00\x00\x00\x01\x00+\xdd\x86\
\x00\x00\x01\x9c\xc2[\x94\xd7\ \x00\x00\x01\x9c\xc2[\x94\xd7\
\x00\x00\x00\xde\x00\x00\x00\x00\x00\x01\x00)\x8c\xe7\ \x00\x00\x01J\x00\x00\x00\x00\x00\x01\x00)\x9cb\
\x00\x00\x01\x9c\xb4\xac\xf5\xd6\ \x00\x00\x01\x9c\xb4\xac\xf5\xd6\
\x00\x00\x010\x00\x00\x00\x00\x00\x01\x00)\x9c\x9b\ \x00\x00\x00\xd8\x00\x00\x00\x00\x00\x01\x00)\x03\x91\
\x00\x00\x01\x9d>\x0fF\xc1\
\x00\x00\x01\x9c\x00\x00\x00\x00\x00\x01\x00)\xac\x16\
\x00\x00\x01\x9c\xbe/\x16\xe5\ \x00\x00\x01\x9c\xbe/\x16\xe5\
\x00\x00\x00\x9c\x00\x00\x00\x00\x00\x01\x00(\xfb*\
\x00\x00\x01\x9d>\x1b|\xe4\
\x00\x00\x00l\x00\x00\x00\x00\x00\x01\x00(\xeb\xa0\ \x00\x00\x00l\x00\x00\x00\x00\x00\x01\x00(\xeb\xa0\
\x00\x00\x01\x9c\xed\xb0\x12q\ \x00\x00\x01\x9c\xed\xb0\x12q\
\x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ \x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
\x00\x00\x01\x9c\xd8\xa1X\x0f\ \x00\x00\x01\x9c\xd8\xa1X\x0f\
\x00\x00\x00\x9c\x00\x00\x00\x00\x00\x01\x00(\xfb*\ \x00\x00\x01\x08\x00\x00\x00\x00\x00\x01\x00)\x0a\xa5\
\x00\x00\x01\x9c\xd9\xa2\xfa\xf9\ \x00\x00\x01\x9c\xd9\xa2\xfa\xf9\
\x00\x00\x02\x0e\x00\x00\x00\x00\x00\x01\x00,7\xc6\ \x00\x00\x02z\x00\x00\x00\x00\x00\x01\x00,GA\
\x00\x00\x01\x9d\x16B\x01\xc7\ \x00\x00\x01\x9d\x16B\x01\xc7\
\x00\x00\x00\xb2\x00\x00\x00\x00\x00\x01\x00)\x83\x02\ \x00\x00\x01\x1e\x00\x00\x00\x00\x00\x01\x00)\x92}\
\x00\x00\x01\x9c\xed\xb0@\xf2\ \x00\x00\x01\x9c\xed\xb0@\xf2\
\x00\x00\x01\xea\x00\x00\x00\x00\x00\x01\x00,1\x15\ \x00\x00\x00\xba\x00\x00\x00\x00\x00\x01\x00(\xfd\x05\
\x00\x00\x01\x9d>\x1d/I\
\x00\x00\x02V\x00\x00\x00\x00\x00\x01\x00,@\x90\
\x00\x00\x01\x9c\xc2_\xde\x0e\ \x00\x00\x01\x9c\xc2_\xde\x0e\
\x00\x00\x01l\x00\x00\x00\x00\x00\x01\x00+\xd3\x19\ \x00\x00\x01\xd8\x00\x00\x00\x00\x00\x01\x00+\xe2\x94\
\x00\x00\x01\x9c\xed\xb1\xd6d\ \x00\x00\x01\x9c\xed\xb1\xd6d\
\x00\x00\x01\x94\x00\x00\x00\x00\x00\x01\x00+\xd5\xc6\ \x00\x00\x02\x00\x00\x00\x00\x00\x00\x01\x00+\xe5A\
\x00\x00\x01\x9c\xdb\xd8Z\xd7\ \x00\x00\x01\x9c\xdb\xd8Z\xd7\
\x00\x00\x00D\x00\x00\x00\x00\x00\x01\x00(\xe0,\ \x00\x00\x00D\x00\x00\x00\x00\x00\x01\x00(\xe0,\
\x00\x00\x01\x9c\xc2i;\xb8\ \x00\x00\x01\x9c\xc2i;\xb8\
+88
View File
@@ -0,0 +1,88 @@
import os
import sys
from win32com.client import Dispatch
from ui.custom_message_box import CustomMessageBox
def _get_executable_path():
"""
Determines the path of the currently executing script or executable.
For Python scripts, it returns the absolute path of the script being executed.
For frozen applications created with PyInstaller, it returns the path of the
frozen executable.
:return: The path of the currently running script or executable.
:rtype: str
"""
if getattr(sys, "frozen", False):
# Cas PyInstaller
return sys.executable
else:
# Cas script Python
return os.path.abspath(sys.argv[0])
def create_start_menu_shortcut(app_name: str, icon_path: str | None = None):
"""
Creates a shortcut for the specified application in the Windows start menu.
The function checks if a shortcut already exists and skips creation if the shortcut
is found. If the shortcut does not exist, it creates a new one, optionally setting
the specified icon file for the shortcut.
:param app_name: The name of the application to create the shortcut for.
:type app_name: str
:param icon_path: The optional path to the icon file to assign to the shortcut.
If not provided or if the file does not exist, the application's
executable will be used as the icon.
:type icon_path: str | None
:return: The full path to the created or existing shortcut.
:rtype: str
"""
exe_path = _get_executable_path()
start_menu_dir = os.path.join(
os.environ["APPDATA"],
r"Microsoft\Windows\Start Menu\Programs",
app_name
)
os.makedirs(start_menu_dir, exist_ok=True)
shortcut_path = os.path.join(start_menu_dir, f"{app_name}.lnk")
# ✅ Ne recrée pas le raccourci s'il existe déjà
if os.path.exists(shortcut_path):
msg = CustomMessageBox(
title="La Tanière: raccourci",
message="Le raccourci existe déjà.\n\n",
icon_type=CustomMessageBox.WARNING,
buttons=CustomMessageBox.OK
)
msg.exec()
return shortcut_path
shell = Dispatch("WScript.Shell")
shortcut = shell.CreateShortCut(shortcut_path)
shortcut.Targetpath = exe_path
shortcut.WorkingDirectory = os.path.dirname(exe_path)
if icon_path and os.path.exists(icon_path):
shortcut.IconLocation = icon_path
else:
shortcut.IconLocation = exe_path
shortcut.save()
msg = CustomMessageBox(
title="La Tanière: Racourci",
message="Le raccourci pour le launcher\n\n"
"a été créé dans le menu démarrer.\n\n",
icon_type=CustomMessageBox.WARNING,
buttons=CustomMessageBox.OK
)
msg.exec()
return shortcut_path
+42 -2
View File
@@ -8,7 +8,7 @@ from PySide6.QtGui import QIcon, QMouseEvent, QGuiApplication
from PySide6.QtWidgets import QMainWindow from PySide6.QtWidgets import QMainWindow
from config.config_manager import ConfigManager from config.config_manager import ConfigManager
from config.constants import PlayerServerInfo, Urls from config.constants import PlayerServerInfo, Urls, VERSION
from controllers.audio_controller import AudioController from controllers.audio_controller import AudioController
from controllers.glow_animator import GlowAnimator from controllers.glow_animator import GlowAnimator
from controllers.window_dragger import WindowDragger from controllers.window_dragger import WindowDragger
@@ -25,6 +25,7 @@ from uitools.countdown_manager import CountdownManager
from uitools.queue_thread import QueueThread from uitools.queue_thread import QueueThread
from uitools.ui_builder import set_en_chantier, replace_with_hazard_button, hide_staff_btn_and_recenter from uitools.ui_builder import set_en_chantier, replace_with_hazard_button, hide_staff_btn_and_recenter
from uitools.window_utility import center_window from uitools.window_utility import center_window
from tools.windows_shortcuts import create_start_menu_shortcut
# For Linux Wayland to authorize moving window # For Linux Wayland to authorize moving window
if platform.startswith('linux'): if platform.startswith('linux'):
@@ -146,6 +147,9 @@ class MainWindow(QMainWindow):
self._connect_signals() self._connect_signals()
center_window(self) # delegated to window_utils center_window(self) # delegated to window_utils
# VERSION
self.ui.version_lbl.setText(f"{VERSION}")
self.show() self.show()
# ------------------------------------------------------------------ # ------------------------------------------------------------------
@@ -161,10 +165,13 @@ class MainWindow(QMainWindow):
self.ui.close_btn.clicked.connect(self.close) self.ui.close_btn.clicked.connect(self.close)
self.ui.minimize_btn.clicked.connect(self.showMinimized) self.ui.minimize_btn.clicked.connect(self.showMinimized)
self.ui.connexion_btn.clicked.connect(self._on_connexion) self.ui.connexion_btn.clicked.connect(self._on_connexion)
self.ui.staff_btn.clicked.connect(self._on_staff)
self.ui.discord_btn.clicked.connect(self._on_discord) self.ui.discord_btn.clicked.connect(self._on_discord)
self.ui.intranet_btn.clicked.connect(self._on_intranet) self.ui.intranet_btn.clicked.connect(self._on_intranet)
self.ui.discord_auth_btn.clicked.connect(self._on_discord_auth_btn) self.ui.discord_auth_btn.clicked.connect(self._on_discord_auth_btn)
self.ui.no_whitelist_btn.clicked.connect(self.close) self.ui.no_whitelist_btn.clicked.connect(self.close)
self.ui.about_config_btn.clicked.connect(lambda: self._on_about_config(self.ui.stackedWidget.currentIndex()))
self.ui.create_shortcut_btn.clicked.connect(self.on_create_start_menu_shortcut)
# ------------------------------------------------------------------ # ------------------------------------------------------------------
# Button handlers # Button handlers
@@ -194,6 +201,11 @@ class MainWindow(QMainWindow):
self.auth_worker.finished.connect(self.auth_worker.deleteLater) self.auth_worker.finished.connect(self.auth_worker.deleteLater)
self.auth_worker.start() self.auth_worker.start()
@staticmethod
def _on_staff() -> None:
FiveMLauncher.launch("test.anycat.fr:30120")
QGuiApplication.setOverrideCursor(Qt.WaitCursor)
@staticmethod @staticmethod
def _on_discord() -> None: def _on_discord() -> None:
""" """
@@ -270,6 +282,34 @@ class MainWindow(QMainWindow):
show_qt_error(self, "Erreur Serveur", show_qt_error(self, "Erreur Serveur",
f"L'authentification a réussi mais l'enregistrement a échoué.\n\n{error_message}") f"L'authentification a réussi mais l'enregistrement a échoué.\n\n{error_message}")
def _on_about_config(self, current_index) -> None:
"""
Handles the behavior of the configuration screen when the associated
index is selected or deselected. Switches to the previous index state
or saves the current index for future navigation.
:param current_index: The index currently selected in the stack.
:type current_index: int
:return: None
"""
if current_index == 3:
self.ui.stackedWidget.setCurrentIndex(self.previous_index)
else:
self.previous_index = current_index
self.ui.stackedWidget.setCurrentIndex(3)
@staticmethod
def on_create_start_menu_shortcut() -> None:
"""
Creates a Start Menu shortcut for the application.
This method is responsible for invoking the function to create a
Start Menu shortcut with the specified application name.
:return: None
"""
create_start_menu_shortcut("La Tanière Laucher")
# ------------------------------------------------------------------ # ------------------------------------------------------------------
# Mouse events → delegated to WindowDragger # Mouse events → delegated to WindowDragger
# ------------------------------------------------------------------ # ------------------------------------------------------------------
@@ -453,7 +493,7 @@ class MainWindow(QMainWindow):
show_qt_error(self, "Attente", f"Position actuelle : {self.queue_position_value}") show_qt_error(self, "Attente", f"Position actuelle : {self.queue_position_value}")
return return
FiveMLauncher.launch() FiveMLauncher.launch(Urls.FIVEMURL.value)
self.ui.connexion_btn.setEnabled(False) self.ui.connexion_btn.setEnabled(False)
self.schedule_close() self.schedule_close()
+150 -26
View File
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
################################################################################ ################################################################################
## Form generated from reading UI file 'mainwindow_vertical_pageryBuDUs.ui' ## Form generated from reading UI file 'mainwindow_vertical_pagerApTesA.ui'
## ##
## Created by: Qt User Interface Compiler version 6.10.2 ## Created by: Qt User Interface Compiler version 6.10.2
## ##
@@ -14,8 +14,8 @@ from PySide6.QtGui import (QIcon,
QPixmap) QPixmap)
from PySide6.QtWidgets import (QFrame, QHBoxLayout, QLabel, from PySide6.QtWidgets import (QFrame, QHBoxLayout, QLabel,
QPushButton, QSizePolicy, QSlider, QPushButton, QSizePolicy, QSlider,
QSpacerItem, QStackedWidget, QTextEdit, QVBoxLayout, QSpacerItem, QStackedWidget, QTextBrowser, QTextEdit,
QWidget) QVBoxLayout, QWidget)
class Ui_MainWindow(object): class Ui_MainWindow(object):
@@ -57,6 +57,19 @@ class Ui_MainWindow(object):
self.horizontalLayout.addItem(self.horizontalSpacer) self.horizontalLayout.addItem(self.horizontalSpacer)
self.about_config_btn = QPushButton(self.title_bar)
self.about_config_btn.setObjectName(u"about_config_btn")
icon1 = QIcon()
icon1.addFile(u":/assets/settings.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
self.about_config_btn.setIcon(icon1)
self.about_config_btn.setIconSize(QSize(32, 32))
self.horizontalLayout.addWidget(self.about_config_btn)
self.horizontalSpacer_17 = QSpacerItem(80, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
self.horizontalLayout.addItem(self.horizontalSpacer_17)
self.minimize_btn = QPushButton(self.title_bar) self.minimize_btn = QPushButton(self.title_bar)
self.minimize_btn.setObjectName(u"minimize_btn") self.minimize_btn.setObjectName(u"minimize_btn")
self.minimize_btn.setMinimumSize(QSize(0, 0)) self.minimize_btn.setMinimumSize(QSize(0, 0))
@@ -74,9 +87,9 @@ class Ui_MainWindow(object):
self.close_btn.setObjectName(u"close_btn") self.close_btn.setObjectName(u"close_btn")
self.close_btn.setMaximumSize(QSize(42, 42)) self.close_btn.setMaximumSize(QSize(42, 42))
self.close_btn.setStyleSheet(u"") self.close_btn.setStyleSheet(u"")
icon1 = QIcon() icon2 = QIcon()
icon1.addFile(u":/assets/system-shutdown.png", QSize(), QIcon.Mode.Normal, QIcon.State.Off) icon2.addFile(u":/assets/system-shutdown.png", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
self.close_btn.setIcon(icon1) self.close_btn.setIcon(icon2)
self.close_btn.setIconSize(QSize(32, 32)) self.close_btn.setIconSize(QSize(32, 32))
self.horizontalLayout.addWidget(self.close_btn) self.horizontalLayout.addWidget(self.close_btn)
@@ -188,9 +201,9 @@ class Ui_MainWindow(object):
self.mute_btn = QPushButton(self.frame_4) self.mute_btn = QPushButton(self.frame_4)
self.mute_btn.setObjectName(u"mute_btn") self.mute_btn.setObjectName(u"mute_btn")
self.mute_btn.setMinimumSize(QSize(32, 32)) self.mute_btn.setMinimumSize(QSize(32, 32))
icon2 = QIcon() icon3 = QIcon()
icon2.addFile(u":/assets/sound-speaker.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off) icon3.addFile(u":/assets/sound-speaker.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
self.mute_btn.setIcon(icon2) self.mute_btn.setIcon(icon3)
self.mute_btn.setFlat(True) self.mute_btn.setFlat(True)
self.horizontalLayout_7.addWidget(self.mute_btn) self.horizontalLayout_7.addWidget(self.mute_btn)
@@ -293,9 +306,9 @@ class Ui_MainWindow(object):
self.connexion_btn.setObjectName(u"connexion_btn") self.connexion_btn.setObjectName(u"connexion_btn")
self.connexion_btn.setMinimumSize(QSize(250, 50)) self.connexion_btn.setMinimumSize(QSize(250, 50))
self.connexion_btn.setStyleSheet(u"") self.connexion_btn.setStyleSheet(u"")
icon3 = QIcon() icon4 = QIcon()
icon3.addFile(u":/assets/padlock-lock.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off) icon4.addFile(u":/assets/padlock-lock.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
self.connexion_btn.setIcon(icon3) self.connexion_btn.setIcon(icon4)
self.connexion_btn.setIconSize(QSize(32, 32)) self.connexion_btn.setIconSize(QSize(32, 32))
self.verticalLayout_6.addWidget(self.connexion_btn) self.verticalLayout_6.addWidget(self.connexion_btn)
@@ -307,9 +320,9 @@ class Ui_MainWindow(object):
self.staff_btn = QPushButton(self.btn_frame) self.staff_btn = QPushButton(self.btn_frame)
self.staff_btn.setObjectName(u"staff_btn") self.staff_btn.setObjectName(u"staff_btn")
self.staff_btn.setMinimumSize(QSize(250, 50)) self.staff_btn.setMinimumSize(QSize(250, 50))
icon4 = QIcon() icon5 = QIcon()
icon4.addFile(u":/assets/tools-repair.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off) icon5.addFile(u":/assets/tools-repair.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
self.staff_btn.setIcon(icon4) self.staff_btn.setIcon(icon5)
self.staff_btn.setIconSize(QSize(32, 32)) self.staff_btn.setIconSize(QSize(32, 32))
self.verticalLayout_6.addWidget(self.staff_btn) self.verticalLayout_6.addWidget(self.staff_btn)
@@ -326,9 +339,9 @@ class Ui_MainWindow(object):
self.discord_btn = QPushButton(self.btn_frame) self.discord_btn = QPushButton(self.btn_frame)
self.discord_btn.setObjectName(u"discord_btn") self.discord_btn.setObjectName(u"discord_btn")
self.discord_btn.setMinimumSize(QSize(250, 50)) self.discord_btn.setMinimumSize(QSize(250, 50))
icon5 = QIcon() icon6 = QIcon()
icon5.addFile(u":/assets/discord-icon.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off) icon6.addFile(u":/assets/discord-icon.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
self.discord_btn.setIcon(icon5) self.discord_btn.setIcon(icon6)
self.discord_btn.setIconSize(QSize(32, 32)) self.discord_btn.setIconSize(QSize(32, 32))
self.verticalLayout_9.addWidget(self.discord_btn) self.verticalLayout_9.addWidget(self.discord_btn)
@@ -340,9 +353,9 @@ class Ui_MainWindow(object):
self.intranet_btn = QPushButton(self.btn_frame) self.intranet_btn = QPushButton(self.btn_frame)
self.intranet_btn.setObjectName(u"intranet_btn") self.intranet_btn.setObjectName(u"intranet_btn")
self.intranet_btn.setMinimumSize(QSize(250, 50)) self.intranet_btn.setMinimumSize(QSize(250, 50))
icon6 = QIcon() icon7 = QIcon()
icon6.addFile(u":/assets/computer-tv.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off) icon7.addFile(u":/assets/computer-tv.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
self.intranet_btn.setIcon(icon6) self.intranet_btn.setIcon(icon7)
self.intranet_btn.setIconSize(QSize(32, 32)) self.intranet_btn.setIconSize(QSize(32, 32))
self.verticalLayout_9.addWidget(self.intranet_btn) self.verticalLayout_9.addWidget(self.intranet_btn)
@@ -472,7 +485,7 @@ class Ui_MainWindow(object):
self.discord_auth_btn.setObjectName(u"discord_auth_btn") self.discord_auth_btn.setObjectName(u"discord_auth_btn")
self.discord_auth_btn.setMinimumSize(QSize(380, 50)) self.discord_auth_btn.setMinimumSize(QSize(380, 50))
self.discord_auth_btn.setMaximumSize(QSize(250, 50)) self.discord_auth_btn.setMaximumSize(QSize(250, 50))
self.discord_auth_btn.setIcon(icon5) self.discord_auth_btn.setIcon(icon6)
self.discord_auth_btn.setIconSize(QSize(32, 32)) self.discord_auth_btn.setIconSize(QSize(32, 32))
self.horizontalLayout_3.addWidget(self.discord_auth_btn) self.horizontalLayout_3.addWidget(self.discord_auth_btn)
@@ -585,9 +598,9 @@ class Ui_MainWindow(object):
self.no_whitelist_btn.setObjectName(u"no_whitelist_btn") self.no_whitelist_btn.setObjectName(u"no_whitelist_btn")
self.no_whitelist_btn.setMinimumSize(QSize(380, 50)) self.no_whitelist_btn.setMinimumSize(QSize(380, 50))
self.no_whitelist_btn.setMaximumSize(QSize(250, 50)) self.no_whitelist_btn.setMaximumSize(QSize(250, 50))
icon7 = QIcon() icon8 = QIcon()
icon7.addFile(u":/assets/no_whitelist.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off) icon8.addFile(u":/assets/no_whitelist.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
self.no_whitelist_btn.setIcon(icon7) self.no_whitelist_btn.setIcon(icon8)
self.no_whitelist_btn.setIconSize(QSize(32, 32)) self.no_whitelist_btn.setIconSize(QSize(32, 32))
self.horizontalLayout_10.addWidget(self.no_whitelist_btn) self.horizontalLayout_10.addWidget(self.no_whitelist_btn)
@@ -607,6 +620,107 @@ class Ui_MainWindow(object):
self.verticalLayout_8.addWidget(self.frame_7) self.verticalLayout_8.addWidget(self.frame_7)
self.stackedWidget.addWidget(self.whitelist) self.stackedWidget.addWidget(self.whitelist)
self.about_config = QWidget()
self.about_config.setObjectName(u"about_config")
self.frame_10 = QFrame(self.about_config)
self.frame_10.setObjectName(u"frame_10")
self.frame_10.setGeometry(QRect(0, 0, 700, 114))
self.frame_10.setMaximumSize(QSize(700, 16777215))
self.frame_10.setFrameShape(QFrame.Shape.NoFrame)
self.frame_10.setFrameShadow(QFrame.Shadow.Raised)
self.verticalLayout_11 = QVBoxLayout(self.frame_10)
self.verticalLayout_11.setSpacing(0)
self.verticalLayout_11.setObjectName(u"verticalLayout_11")
self.verticalLayout_11.setContentsMargins(0, 0, 0, 0)
self.about_config_title = QFrame(self.frame_10)
self.about_config_title.setObjectName(u"about_config_title")
self.about_config_title.setMinimumSize(QSize(0, 80))
self.about_config_title.setMaximumSize(QSize(16777215, 80))
self.about_config_title.setFrameShape(QFrame.Shape.NoFrame)
self.about_config_title.setFrameShadow(QFrame.Shadow.Raised)
self.horizontalLayout_11 = QHBoxLayout(self.about_config_title)
self.horizontalLayout_11.setSpacing(0)
self.horizontalLayout_11.setObjectName(u"horizontalLayout_11")
self.horizontalLayout_11.setContentsMargins(0, 0, 0, 0)
self.horizontalSpacer_14 = QSpacerItem(292, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
self.horizontalLayout_11.addItem(self.horizontalSpacer_14)
self.about_config_icon_label = QLabel(self.about_config_title)
self.about_config_icon_label.setObjectName(u"about_config_icon_label")
self.about_config_icon_label.setMinimumSize(QSize(64, 64))
self.about_config_icon_label.setMaximumSize(QSize(64, 64))
self.about_config_icon_label.setFrameShape(QFrame.Shape.NoFrame)
self.about_config_icon_label.setPixmap(QPixmap(u":/assets/information-point.svg"))
self.about_config_icon_label.setScaledContents(True)
self.horizontalLayout_11.addWidget(self.about_config_icon_label)
self.horizontalSpacer_16 = QSpacerItem(20, 20, QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Minimum)
self.horizontalLayout_11.addItem(self.horizontalSpacer_16)
self.about_config_title_label_2 = QLabel(self.about_config_title)
self.about_config_title_label_2.setObjectName(u"about_config_title_label_2")
self.about_config_title_label_2.setMinimumSize(QSize(180, 30))
self.about_config_title_label_2.setScaledContents(True)
self.horizontalLayout_11.addWidget(self.about_config_title_label_2)
self.horizontalSpacer_15 = QSpacerItem(291, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
self.horizontalLayout_11.addItem(self.horizontalSpacer_15)
self.verticalLayout_11.addWidget(self.about_config_title)
self.frame_11 = QFrame(self.about_config)
self.frame_11.setObjectName(u"frame_11")
self.frame_11.setGeometry(QRect(0, 95, 700, 390))
self.frame_11.setMinimumSize(QSize(0, 0))
self.frame_11.setFrameShape(QFrame.Shape.NoFrame)
self.frame_11.setFrameShadow(QFrame.Shadow.Raised)
self.textBrowser = QTextBrowser(self.frame_11)
self.textBrowser.setObjectName(u"textBrowser")
self.textBrowser.setGeometry(QRect(10, 110, 681, 281))
self.textBrowser.setFrameShape(QFrame.Shape.NoFrame)
self.frame_12 = QFrame(self.frame_11)
self.frame_12.setObjectName(u"frame_12")
self.frame_12.setGeometry(QRect(0, 0, 700, 68))
self.frame_12.setMinimumSize(QSize(700, 0))
self.frame_12.setFrameShape(QFrame.Shape.NoFrame)
self.frame_12.setFrameShadow(QFrame.Shadow.Raised)
self.horizontalLayout_12 = QHBoxLayout(self.frame_12)
self.horizontalLayout_12.setObjectName(u"horizontalLayout_12")
self.create_shortcut_btn = QPushButton(self.frame_12)
self.create_shortcut_btn.setObjectName(u"create_shortcut_btn")
self.create_shortcut_btn.setMinimumSize(QSize(380, 50))
self.create_shortcut_btn.setMaximumSize(QSize(380, 16777215))
icon9 = QIcon()
icon9.addFile(u":/assets/shortcut.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
self.create_shortcut_btn.setIcon(icon9)
self.create_shortcut_btn.setIconSize(QSize(32, 32))
self.horizontalLayout_12.addWidget(self.create_shortcut_btn)
self.horizontalSpacer_18 = QSpacerItem(120, 20, QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Minimum)
self.horizontalLayout_12.addItem(self.horizontalSpacer_18)
self.label = QLabel(self.frame_12)
self.label.setObjectName(u"label")
self.horizontalLayout_12.addWidget(self.label)
self.version_lbl = QLabel(self.frame_12)
self.version_lbl.setObjectName(u"version_lbl")
self.horizontalLayout_12.addWidget(self.version_lbl)
self.label_3 = QLabel(self.frame_11)
self.label_3.setObjectName(u"label_3")
self.label_3.setGeometry(QRect(20, 75, 221, 31))
self.stackedWidget.addWidget(self.about_config)
self.verticalLayout1.addWidget(self.stackedWidget) self.verticalLayout1.addWidget(self.stackedWidget)
@@ -620,7 +734,7 @@ class Ui_MainWindow(object):
self.retranslateUi(MainWindow) self.retranslateUi(MainWindow)
self.stackedWidget.setCurrentIndex(2) self.stackedWidget.setCurrentIndex(3)
QMetaObject.connectSlotsByName(MainWindow) QMetaObject.connectSlotsByName(MainWindow)
@@ -628,6 +742,7 @@ class Ui_MainWindow(object):
def retranslateUi(self, MainWindow): def retranslateUi(self, MainWindow):
MainWindow.setWindowTitle(QCoreApplication.translate("MainWindow", u"MainWindow", None)) MainWindow.setWindowTitle(QCoreApplication.translate("MainWindow", u"MainWindow", None))
self.about_config_btn.setText("")
self.minimize_btn.setText("") self.minimize_btn.setText("")
self.close_btn.setText("") self.close_btn.setText("")
self.queue_lbl.setText(QCoreApplication.translate("MainWindow", u"Position en file d'attente: ", None)) self.queue_lbl.setText(QCoreApplication.translate("MainWindow", u"Position en file d'attente: ", None))
@@ -648,5 +763,14 @@ class Ui_MainWindow(object):
self.whitelist_info_text.setText(QCoreApplication.translate("MainWindow", u"Tu n\u2019es pas whitelist\u00e9 sur le serveur.\n" self.whitelist_info_text.setText(QCoreApplication.translate("MainWindow", u"Tu n\u2019es pas whitelist\u00e9 sur le serveur.\n"
"Inscris-toi sur Discord, puis relance le launcher.", None)) "Inscris-toi sur Discord, puis relance le launcher.", None))
self.no_whitelist_btn.setText(QCoreApplication.translate("MainWindow", u" Compris !", None)) self.no_whitelist_btn.setText(QCoreApplication.translate("MainWindow", u" Compris !", None))
self.about_config_icon_label.setText("")
self.about_config_title_label_2.setText(QCoreApplication.translate("MainWindow", u"A propos", None))
#if QT_CONFIG(tooltip)
self.create_shortcut_btn.setToolTip(QCoreApplication.translate("MainWindow", u"Cr\u00e9e un raccourcis du launcher dans le menu d\u00e9marrer", None))
#endif // QT_CONFIG(tooltip)
self.create_shortcut_btn.setText(QCoreApplication.translate("MainWindow", u"Cr\u00e9e un raccourcis", None))
self.label.setText(QCoreApplication.translate("MainWindow", u"Version", None))
self.version_lbl.setText(QCoreApplication.translate("MainWindow", u"0.0.1", None))
self.label_3.setText(QCoreApplication.translate("MainWindow", u"Licences", None))
# retranslateUi # retranslateUi
+7
View File
@@ -164,6 +164,13 @@ QPushButton#minimize_btn {
padding-top: 0 padding-top: 0
} }
QPushButton#about_config_btn {
background-color: transparent;
border: none;
padding: 0px;
padding-top: 0
}
HazardButton#connexion_btn { HazardButton#connexion_btn {
color: #0A1A3A; color: #0A1A3A;
/* color: #0D2A6B;*/ /* color: #0D2A6B;*/
+331 -1
View File
@@ -119,6 +119,36 @@
</property> </property>
</spacer> </spacer>
</item> </item>
<item>
<widget class="QPushButton" name="about_config_btn">
<property name="text">
<string/>
</property>
<property name="icon">
<iconset resource="../resources.qrc">
<normaloff>:/assets/settings.svg</normaloff>:/assets/settings.svg</iconset>
</property>
<property name="iconSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_17">
<property name="orientation">
<enum>Qt::Orientation::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>80</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item> <item>
<widget class="QPushButton" name="minimize_btn"> <widget class="QPushButton" name="minimize_btn">
<property name="minimumSize"> <property name="minimumSize">
@@ -640,7 +670,7 @@
<enum>QFrame::Shape::NoFrame</enum> <enum>QFrame::Shape::NoFrame</enum>
</property> </property>
<property name="currentIndex"> <property name="currentIndex">
<number>2</number> <number>3</number>
</property> </property>
<widget class="QWidget" name="main_page"> <widget class="QWidget" name="main_page">
<property name="minimumSize"> <property name="minimumSize">
@@ -1673,6 +1703,306 @@ Inscris-toi sur Discord, puis relance le launcher.</string>
</layout> </layout>
</widget> </widget>
</widget> </widget>
<widget class="QWidget" name="about_config">
<widget class="QFrame" name="frame_10">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>700</width>
<height>114</height>
</rect>
</property>
<property name="maximumSize">
<size>
<width>700</width>
<height>16777215</height>
</size>
</property>
<property name="frameShape">
<enum>QFrame::Shape::NoFrame</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Shadow::Raised</enum>
</property>
<layout class="QVBoxLayout" name="verticalLayout_11">
<property name="spacing">
<number>0</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QFrame" name="about_config_title">
<property name="minimumSize">
<size>
<width>0</width>
<height>80</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>80</height>
</size>
</property>
<property name="frameShape">
<enum>QFrame::Shape::NoFrame</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Shadow::Raised</enum>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_11">
<property name="spacing">
<number>0</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<spacer name="horizontalSpacer_14">
<property name="orientation">
<enum>Qt::Orientation::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>292</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QLabel" name="about_config_icon_label">
<property name="minimumSize">
<size>
<width>64</width>
<height>64</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>64</width>
<height>64</height>
</size>
</property>
<property name="frameShape">
<enum>QFrame::Shape::NoFrame</enum>
</property>
<property name="text">
<string/>
</property>
<property name="pixmap">
<pixmap resource="../resources.qrc">:/assets/information-point.svg</pixmap>
</property>
<property name="scaledContents">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_16">
<property name="orientation">
<enum>Qt::Orientation::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Policy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QLabel" name="about_config_title_label_2">
<property name="minimumSize">
<size>
<width>180</width>
<height>30</height>
</size>
</property>
<property name="text">
<string>A propos</string>
</property>
<property name="scaledContents">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_15">
<property name="orientation">
<enum>Qt::Orientation::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>291</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<widget class="QFrame" name="frame_11">
<property name="geometry">
<rect>
<x>0</x>
<y>95</y>
<width>700</width>
<height>390</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="frameShape">
<enum>QFrame::Shape::NoFrame</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Shadow::Raised</enum>
</property>
<widget class="QTextBrowser" name="textBrowser">
<property name="geometry">
<rect>
<x>10</x>
<y>110</y>
<width>681</width>
<height>281</height>
</rect>
</property>
<property name="frameShape">
<enum>QFrame::Shape::NoFrame</enum>
</property>
</widget>
<widget class="QFrame" name="frame_12">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>700</width>
<height>68</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>700</width>
<height>0</height>
</size>
</property>
<property name="frameShape">
<enum>QFrame::Shape::NoFrame</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Shadow::Raised</enum>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_12">
<item>
<widget class="QPushButton" name="create_shortcut_btn">
<property name="minimumSize">
<size>
<width>380</width>
<height>50</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>380</width>
<height>16777215</height>
</size>
</property>
<property name="toolTip">
<string>Crée un raccourcis du launcher dans le menu démarrer</string>
</property>
<property name="text">
<string>Crée un raccourcis</string>
</property>
<property name="icon">
<iconset resource="../resources.qrc">
<normaloff>:/assets/shortcut.svg</normaloff>:/assets/shortcut.svg</iconset>
</property>
<property name="iconSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_18">
<property name="orientation">
<enum>Qt::Orientation::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Policy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>120</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>Version</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="version_lbl">
<property name="text">
<string>0.0.1</string>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QLabel" name="label_3">
<property name="geometry">
<rect>
<x>20</x>
<y>75</y>
<width>221</width>
<height>31</height>
</rect>
</property>
<property name="text">
<string>Licences</string>
</property>
</widget>
</widget>
</widget>
</widget> </widget>
</item> </item>
</layout> </layout>