From 90c10f0acdbbc009e502ab18f9ad124eeffa3bb1 Mon Sep 17 00:00:00 2001 From: seuyh Date: Mon, 26 Feb 2024 21:38:53 +0700 Subject: [PATCH] 0.3 --- design/installer.ui | 132 ++++++++----- design/main_window.py | 445 +++++++++++++++++++++--------------------- design/resources.qrc | 2 + gui/main_window.py | 31 ++- libs/server_data.py | 6 +- requirements.txt | 7 +- 6 files changed, 340 insertions(+), 283 deletions(-) diff --git a/design/installer.ui b/design/installer.ui index 72c5307..1878fac 100644 --- a/design/installer.ui +++ b/design/installer.ui @@ -388,7 +388,7 @@ p, li { white-space: pre-wrap; } <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> 4. Все права, не предоставленные здесь явно, сохраняются за правообладателями.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> 5. Установка и использование данной русификации означает, что вы ознакомились и понимаете положения настоящего лицензионного соглашения и согласны с ними.</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> 5. Установка и использование данной модификации означает, что вы ознакомились и понимаете положения настоящего лицензионного соглашения и согласны с ними.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> @@ -398,7 +398,7 @@ p, li { white-space: pre-wrap; } 210 240 231 - 17 + 21 @@ -442,7 +442,7 @@ p, li { white-space: pre-wrap; } 210 220 231 - 17 + 21 @@ -553,7 +553,10 @@ QPushButton:hover { - background-color: rgb(240, 240, 240); + background-color: rgb(240, 240, 240); + +text-decoration: none; + QFrame::Box @@ -566,13 +569,17 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt; font-weight:600; text-decoration: underline;">Stellaris DLC Unlocker</span></p> <p align="center" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:10pt; font-weight:600; text-decoration: underline;"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt; font-weight:600; text-decoration: underline;">Требования</span><span style=" font-size:10pt; font-weight:600;">:</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;"> </span><span style=" font-size:9pt;"> </span><span style=" font-size:9pt; font-weight:600;">Лицензия</span><span style=" font-size:10pt;">: Steam (не исключена работоспособность других версий).</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;"> </span><span style=" font-size:9pt;"> </span><span style=" font-size:9pt; font-weight:600;">Лицензия</span><span style=" font-size:10pt;">: Steam.</span></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:10pt; font-weight:600; text-decoration: underline;"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt; font-weight:600; text-decoration: underline;">Установка</span><span style=" font-size:10pt; font-weight:600;">:</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;"> </span><span style=" font-size:9pt;"> Следуйте инструкциям инсталлятора. Установка почти полностью автоматическая. </span></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt; font-weight:600; text-decoration: underline;">Удаление</span><span style=" font-size:10pt; font-weight:600;">:</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;"> </span><span style=" font-size:9pt;"> Переустановите Paradox лаунчер, удалите папку &quot;dlc&quot; в директории игры. Не забудте заново скачать те dlc которые у вас приобретены.</span></p></body></html> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;"> </span><span style=" font-size:9pt;"> Переустановите Paradox лаунчер, удалите папку &quot;dlc&quot; в директории игры. Не забудте заново скачать те dlc которые у вас приобретены.<br /><br />Сделано лично мной для всех<br /></span><img src=":/images/telegram (1).png" /><a href="https://t.me/seuyh"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">seuyh</span></a></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><img src=":/images/GitHub-Logo.wine (1).png" /><a href="https://github.com/seuyh"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">GitHub</span></a></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt; color:#000000;">Отдельная благодарность герою нашего времени, который все это делал для нас ручками </span><img src=":/images/telegram (1).png" /><a href="https://t.me/Temri1337"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">He11oThere</span></a></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="@Temri1337"><span style=" font-size:8pt; text-decoration: underline; color:#000000;"><br /></span></a><a href="https://www.playground.ru/stellaris/cheat/stellaris_dlc_unlocker_razblokirovschik_dopolnenij_3_10-1088979#29894040"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">playground.ru Stellaris DLC Unlocker</span></a></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt; color:#0000ff;"><br /></p></body></html> @@ -850,7 +857,7 @@ p, li { white-space: pre-wrap; } background-color: rgb(240, 240, 240); - Требуется как минимум %nan% Гб места на диске "C:/" + Требуется дополнительно %nan% места false @@ -943,7 +950,7 @@ p, li { white-space: pre-wrap; } 210 - 132 + 110 281 21 @@ -956,8 +963,8 @@ p, li { white-space: pre-wrap; } 210 - 160 - 281 + 140 + 171 20 @@ -1002,6 +1009,9 @@ QPushButton:hover { + + false + 430 @@ -1025,27 +1035,83 @@ QPushButton:hover { Отмена - + + + + 210 + 86 + 91 + 20 + + + + Загрузка DLC: + + + 210 180 - 211 + 251 20 - - background-color: rgb(240, 240, 240); + + Генерация creamapi: + + + + + + 210 + 204 + 281 + 21 + + + + 0 + + + + + + 210 + 234 + 281 + 20 + + + + Получение инфо о dlc: подключение к api + + + + + + 210 + 260 + 281 + 20 + + + + Скорость генерации зависит от сервера. + + + + + + 376 + 140 + 121 + 20 + Скорость: %nan% - - false - - - true - @@ -1108,7 +1174,7 @@ p, li { white-space: pre-wrap; } <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Мы рекомендуем переустановить Paradox лаунчер, однако вы можете пропутить этот шаг.</p></body></html> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Необходимо переустановить Paradox лаунчер для корректной работы.</p></body></html> @@ -1162,30 +1228,6 @@ QPushButton:hover { Отмена - - - - 430 - 260 - 75 - 23 - - - - PointingHandCursor - - - QPushButton {border: 1px solid #B22222; -} - -QPushButton:hover { - background-color: #FFD0D1; -} - - - Пропустить - - diff --git a/design/main_window.py b/design/main_window.py index 50f2643..aee6a96 100644 --- a/design/main_window.py +++ b/design/main_window.py @@ -1,12 +1,5 @@ # -*- coding: utf-8 -*- -# Form implementation generated from reading ui file 'C:/Users/sp21/PycharmProjects/stellaris-dlc-unlock/design/installer.ui' -# -# Created by: PyQt5 UI code generator 5.15.10 -# -# WARNING: Any manual changes made to this file will be lost when pyuic5 is -# run again. Do not edit this file unless you know what you are doing. - from PyQt5 import QtCore, QtGui, QtWidgets import design.resources_rc @@ -30,21 +23,21 @@ class Ui_MainWindow(object): self.next_button.setGeometry(QtCore.QRect(350, 300, 75, 23)) self.next_button.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor)) self.next_button.setStyleSheet("QPushButton {border: 1px solid #B22222;\n" -"}\n" -"\n" -"QPushButton:hover {\n" -" background-color: #FFD0D1;\n" -"}") + "}\n" + "\n" + "QPushButton:hover {\n" + " background-color: #FFD0D1;\n" + "}") self.next_button.setObjectName("next_button") self.cancel_button = QtWidgets.QPushButton(self.page_2) self.cancel_button.setGeometry(QtCore.QRect(430, 300, 75, 23)) self.cancel_button.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor)) self.cancel_button.setStyleSheet("QPushButton {border: 1px solid #B22222;\n" -"}\n" -"\n" -"QPushButton:hover {\n" -" background-color: #FFD0D1;\n" -"}") + "}\n" + "\n" + "QPushButton:hover {\n" + " background-color: #FFD0D1;\n" + "}") self.cancel_button.setObjectName("cancel_button") self.line = QtWidgets.QFrame(self.page_2) self.line.setGeometry(QtCore.QRect(190, 290, 331, 1)) @@ -86,21 +79,21 @@ class Ui_MainWindow(object): self.next_button_3.setGeometry(QtCore.QRect(350, 300, 75, 23)) self.next_button_3.setCursor(QtGui.QCursor(QtCore.Qt.ForbiddenCursor)) self.next_button_3.setStyleSheet("QPushButton {border: 1px solid #B22222;\n" -"}\n" -"\n" -"QPushButton:hover {\n" -" background-color: #FFD0D1;\n" -"}") + "}\n" + "\n" + "QPushButton:hover {\n" + " background-color: #FFD0D1;\n" + "}") self.next_button_3.setObjectName("next_button_3") self.cancel_button_3 = QtWidgets.QPushButton(self.page_3) self.cancel_button_3.setGeometry(QtCore.QRect(430, 300, 75, 23)) self.cancel_button_3.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor)) self.cancel_button_3.setStyleSheet("QPushButton {border: 1px solid #B22222;\n" -"}\n" -"\n" -"QPushButton:hover {\n" -" background-color: #FFD0D1;\n" -"}") + "}\n" + "\n" + "QPushButton:hover {\n" + " background-color: #FFD0D1;\n" + "}") self.cancel_button_3.setObjectName("cancel_button_3") self.listWidget_3 = QtWidgets.QListWidget(self.page_3) self.listWidget_3.setGeometry(QtCore.QRect(0, 0, 191, 291)) @@ -111,11 +104,11 @@ class Ui_MainWindow(object): self.back_button_2.setGeometry(QtCore.QRect(270, 300, 75, 23)) self.back_button_2.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor)) self.back_button_2.setStyleSheet("QPushButton {border: 1px solid #B22222;\n" -"}\n" -"\n" -"QPushButton:hover {\n" -" background-color: #FFD0D1;\n" -"}") + "}\n" + "\n" + "QPushButton:hover {\n" + " background-color: #FFD0D1;\n" + "}") self.back_button_2.setObjectName("back_button_2") self.textBrowser = QtWidgets.QTextBrowser(self.page_3) self.textBrowser.setGeometry(QtCore.QRect(210, 10, 281, 31)) @@ -166,11 +159,11 @@ class Ui_MainWindow(object): self.back_button_3.setGeometry(QtCore.QRect(270, 300, 75, 23)) self.back_button_3.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor)) self.back_button_3.setStyleSheet("QPushButton {border: 1px solid #B22222;\n" -"}\n" -"\n" -"QPushButton:hover {\n" -" background-color: #FFD0D1;\n" -"}") + "}\n" + "\n" + "QPushButton:hover {\n" + " background-color: #FFD0D1;\n" + "}") self.back_button_3.setObjectName("back_button_3") self.line_5 = QtWidgets.QFrame(self.page_4) self.line_5.setGeometry(QtCore.QRect(190, 80, 331, 1)) @@ -182,11 +175,11 @@ class Ui_MainWindow(object): self.next_button_4.setGeometry(QtCore.QRect(350, 300, 75, 23)) self.next_button_4.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor)) self.next_button_4.setStyleSheet("QPushButton {border: 1px solid #B22222;\n" -"}\n" -"\n" -"QPushButton:hover {\n" -" background-color: #FFD0D1;\n" -"}") + "}\n" + "\n" + "QPushButton:hover {\n" + " background-color: #FFD0D1;\n" + "}") self.next_button_4.setObjectName("next_button_4") self.line_6 = QtWidgets.QFrame(self.page_4) self.line_6.setGeometry(QtCore.QRect(190, 290, 331, 1)) @@ -197,20 +190,20 @@ class Ui_MainWindow(object): self.textBrowser_5 = QtWidgets.QTextBrowser(self.page_4) self.textBrowser_5.setGeometry(QtCore.QRect(210, 90, 281, 191)) self.textBrowser_5.setStyleSheet("background-color: rgb(240, 240, 240);\n" -"\n" -"text-decoration: none;\n" -"") + "\n" + "text-decoration: none;\n" + "") self.textBrowser_5.setFrameShape(QtWidgets.QFrame.Box) self.textBrowser_5.setObjectName("textBrowser_5") self.cancel_button_4 = QtWidgets.QPushButton(self.page_4) self.cancel_button_4.setGeometry(QtCore.QRect(430, 300, 75, 23)) self.cancel_button_4.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor)) self.cancel_button_4.setStyleSheet("QPushButton {border: 1px solid #B22222;\n" -"}\n" -"\n" -"QPushButton:hover {\n" -" background-color: #FFD0D1;\n" -"}") + "}\n" + "\n" + "QPushButton:hover {\n" + " background-color: #FFD0D1;\n" + "}") self.cancel_button_4.setObjectName("cancel_button_4") self.textBrowser_6 = QtWidgets.QTextBrowser(self.page_4) self.textBrowser_6.setGeometry(QtCore.QRect(210, 40, 281, 35)) @@ -229,21 +222,21 @@ class Ui_MainWindow(object): self.next_button_2.setGeometry(QtCore.QRect(350, 300, 75, 23)) self.next_button_2.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor)) self.next_button_2.setStyleSheet("QPushButton {border: 1px solid #B22222;\n" -"}\n" -"\n" -"QPushButton:hover {\n" -" background-color: #FFD0D1;\n" -"}") + "}\n" + "\n" + "QPushButton:hover {\n" + " background-color: #FFD0D1;\n" + "}") self.next_button_2.setObjectName("next_button_2") self.cancel_button_2 = QtWidgets.QPushButton(self.page) self.cancel_button_2.setGeometry(QtCore.QRect(430, 300, 75, 23)) self.cancel_button_2.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor)) self.cancel_button_2.setStyleSheet("QPushButton {border: 1px solid #B22222;\n" -"}\n" -"\n" -"QPushButton:hover {\n" -" background-color: #FFD0D1;\n" -"}") + "}\n" + "\n" + "QPushButton:hover {\n" + " background-color: #FFD0D1;\n" + "}") self.cancel_button_2.setObjectName("cancel_button_2") self.path_place = QtWidgets.QTextEdit(self.page) self.path_place.setGeometry(QtCore.QRect(210, 150, 281, 25)) @@ -254,21 +247,21 @@ class Ui_MainWindow(object): self.locate_folder.setGeometry(QtCore.QRect(410, 180, 75, 23)) self.locate_folder.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor)) self.locate_folder.setStyleSheet("QPushButton {border: 1px solid #B22222;\n" -"}\n" -"\n" -"QPushButton:hover {\n" -" background-color: #FFD0D1;\n" -"}") + "}\n" + "\n" + "QPushButton:hover {\n" + " background-color: #FFD0D1;\n" + "}") self.locate_folder.setObjectName("locate_folder") self.back_button = QtWidgets.QPushButton(self.page) self.back_button.setGeometry(QtCore.QRect(270, 300, 75, 23)) self.back_button.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor)) self.back_button.setStyleSheet("QPushButton {border: 1px solid #B22222;\n" -"}\n" -"\n" -"QPushButton:hover {\n" -" background-color: #FFD0D1;\n" -"}") + "}\n" + "\n" + "QPushButton:hover {\n" + " background-color: #FFD0D1;\n" + "}") self.back_button.setObjectName("back_button") self.line_2 = QtWidgets.QFrame(self.page) self.line_2.setGeometry(QtCore.QRect(190, 290, 331, 1)) @@ -338,22 +331,22 @@ class Ui_MainWindow(object): self.next_button_5.setGeometry(QtCore.QRect(350, 300, 75, 23)) self.next_button_5.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor)) self.next_button_5.setStyleSheet("QPushButton {border: 1px solid #B22222;\n" -"}\n" -"\n" -"QPushButton:hover {\n" -" background-color: #FFD0D1;\n" -"}") + "}\n" + "\n" + "QPushButton:hover {\n" + " background-color: #FFD0D1;\n" + "}") self.next_button_5.setObjectName("next_button_5") self.cancel_button_5 = QtWidgets.QPushButton(self.page_5) self.cancel_button_5.setEnabled(False) self.cancel_button_5.setGeometry(QtCore.QRect(430, 300, 75, 23)) self.cancel_button_5.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor)) self.cancel_button_5.setStyleSheet("QPushButton {border: 1px solid #B22222;\n" -"}\n" -"\n" -"QPushButton:hover {\n" -" background-color: #FFD0D1;\n" -"}") + "}\n" + "\n" + "QPushButton:hover {\n" + " background-color: #FFD0D1;\n" + "}") self.cancel_button_5.setObjectName("cancel_button_5") self.label = QtWidgets.QLabel(self.page_5) self.label.setGeometry(QtCore.QRect(210, 86, 91, 20)) @@ -398,32 +391,22 @@ class Ui_MainWindow(object): self.reinstall_button.setGeometry(QtCore.QRect(350, 300, 75, 23)) self.reinstall_button.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor)) self.reinstall_button.setStyleSheet("QPushButton {border: 1px solid #B22222;\n" -"}\n" -"\n" -"QPushButton:hover {\n" -" background-color: #FFD0D1;\n" -"}") + "}\n" + "\n" + "QPushButton:hover {\n" + " background-color: #FFD0D1;\n" + "}") self.reinstall_button.setObjectName("reinstall_button") self.cancel_button_6 = QtWidgets.QPushButton(self.page_6) self.cancel_button_6.setGeometry(QtCore.QRect(430, 300, 75, 23)) self.cancel_button_6.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor)) self.cancel_button_6.setStyleSheet("QPushButton {border: 1px solid #B22222;\n" -"}\n" -"\n" -"QPushButton:hover {\n" -" background-color: #FFD0D1;\n" -"}") + "}\n" + "\n" + "QPushButton:hover {\n" + " background-color: #FFD0D1;\n" + "}") self.cancel_button_6.setObjectName("cancel_button_6") - self.skip_button = QtWidgets.QPushButton(self.page_6) - self.skip_button.setGeometry(QtCore.QRect(430, 260, 75, 23)) - self.skip_button.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor)) - self.skip_button.setStyleSheet("QPushButton {border: 1px solid #B22222;\n" -"}\n" -"\n" -"QPushButton:hover {\n" -" background-color: #FFD0D1;\n" -"}") - self.skip_button.setObjectName("skip_button") self.textBrowser_14 = QtWidgets.QTextBrowser(self.page_6) self.textBrowser_14.setGeometry(QtCore.QRect(210, 100, 281, 35)) self.textBrowser_14.setStyleSheet("background-color: rgb(240, 240, 240);") @@ -458,11 +441,11 @@ class Ui_MainWindow(object): self.finish_button.setGeometry(QtCore.QRect(430, 300, 75, 23)) self.finish_button.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor)) self.finish_button.setStyleSheet("QPushButton {border: 1px solid #B22222;\n" -"}\n" -"\n" -"QPushButton:hover {\n" -" background-color: #FFD0D1;\n" -"}") + "}\n" + "\n" + "QPushButton:hover {\n" + " background-color: #FFD0D1;\n" + "}") self.finish_button.setObjectName("finish_button") self.launch_game = QtWidgets.QCheckBox(self.page_7) self.launch_game.setGeometry(QtCore.QRect(210, 200, 121, 21)) @@ -503,146 +486,164 @@ class Ui_MainWindow(object): MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) self.next_button.setText(_translate("MainWindow", "Далее")) self.cancel_button.setText(_translate("MainWindow", "Отмена")) - self.hello_msg.setHtml(_translate("MainWindow", "\n" -"\n" -"

Вас приветствует Stellaris "DLC Unlocker - Разблокировщик дополнений" [unknown]

")) - self.hello2_msg.setHtml(_translate("MainWindow", "\n" -"\n" -"

Программа выполнит разблокировку дополнений для игры Stellaris версии [unknown]

")) - self.textBrowser_3.setHtml(_translate("MainWindow", "\n" -"\n" -"

Нажмите "Далее", чтобы продолжить или "Отмена", чтобы выйти из программы установки.

")) + self.hello_msg.setHtml(_translate("MainWindow", + "\n" + "\n" + "

Вас приветствует Stellaris "DLC Unlocker - Разблокировщик дополнений" [unknown]

")) + self.hello2_msg.setHtml(_translate("MainWindow", + "\n" + "\n" + "

Программа выполнит разблокировку дополнений для игры Stellaris версии [unknown]

")) + self.textBrowser_3.setHtml(_translate("MainWindow", + "\n" + "\n" + "

Нажмите "Далее", чтобы продолжить или "Отмена", чтобы выйти из программы установки.

")) self.next_button_3.setText(_translate("MainWindow", "Далее")) self.cancel_button_3.setText(_translate("MainWindow", "Отмена")) self.back_button_2.setText(_translate("MainWindow", "Назад")) - self.textBrowser.setHtml(_translate("MainWindow", "\n" -"\n" -"

Информация

")) - self.textBrowser_2.setHtml(_translate("MainWindow", "\n" -"\n" -"

Пожалуйста, прочитие следующую важную информацию пред тем, как продолжить.

")) - self.textBrowser_4.setHtml(_translate("MainWindow", "\n" -"\n" -"

1. Данный разблокировщик распространяется абсолютно бесплатно. Любое коммерческое использование данного разблокировщика запрещается.

\n" -"


\n" -"

2. ДАННЫЙ РАЗБЛОКИРОВЩИК ПОСТАВЛЯЕТСЯ ПО ПРИНЦИПУ «AS IS». НИКАКИХ ГАРАНТИЙ НЕ ПРИЛАГАЕТСЯ И НЕ ПРЕДУСМАТРИВАЕТСЯ. ВЫ ИСПОЛЬЗУЕТЕ ЭТУ МОДИФИКАЦИЮ ОРИГИНАЛЬНОЙ ИГРЫ НА СВОЙ СТРАХ И РИСК. АВТОРЫ МОДИФИКАЦИИ НЕ БУДУТ ОТВЕЧАТЬ НИ ЗА КАКИЕ ПОТЕРИ ИЛИ ИСКАЖЕНИЯ ДАННЫХ, ЛЮБУЮ УПУЩЕННУЮ ВЫГОДУ В ПРОЦЕССЕ ИСПОЛЬЗОВАНИЯ ИЛИ НЕПРАВИЛЬНОГО ИСПОЛЬЗОВАНИЯ ДАННОЙ МОДИФИКАЦИИ.

\n" -"


\n" -"

4. Все права, не предоставленные здесь явно, сохраняются за правообладателями.

\n" -"


\n" -"

5. Установка и использование данной модификации означает, что вы ознакомились и понимаете положения настоящего лицензионного соглашения и согласны с ними.

\n" -"


")) + self.textBrowser.setHtml(_translate("MainWindow", + "\n" + "\n" + "

Информация

")) + self.textBrowser_2.setHtml(_translate("MainWindow", + "\n" + "\n" + "

Пожалуйста, прочитие следующую важную информацию пред тем, как продолжить.

")) + self.textBrowser_4.setHtml(_translate("MainWindow", + "\n" + "\n" + "

1. Данный разблокировщик распространяется абсолютно бесплатно. Любое коммерческое использование данного разблокировщика запрещается.

\n" + "


\n" + "

2. ДАННЫЙ РАЗБЛОКИРОВЩИК ПОСТАВЛЯЕТСЯ ПО ПРИНЦИПУ «AS IS». НИКАКИХ ГАРАНТИЙ НЕ ПРИЛАГАЕТСЯ И НЕ ПРЕДУСМАТРИВАЕТСЯ. ВЫ ИСПОЛЬЗУЕТЕ ЭТУ МОДИФИКАЦИЮ ОРИГИНАЛЬНОЙ ИГРЫ НА СВОЙ СТРАХ И РИСК. АВТОРЫ МОДИФИКАЦИИ НЕ БУДУТ ОТВЕЧАТЬ НИ ЗА КАКИЕ ПОТЕРИ ИЛИ ИСКАЖЕНИЯ ДАННЫХ, ЛЮБУЮ УПУЩЕННУЮ ВЫГОДУ В ПРОЦЕССЕ ИСПОЛЬЗОВАНИЯ ИЛИ НЕПРАВИЛЬНОГО ИСПОЛЬЗОВАНИЯ ДАННОЙ МОДИФИКАЦИИ.

\n" + "


\n" + "

4. Все права, не предоставленные здесь явно, сохраняются за правообладателями.

\n" + "


\n" + "

5. Установка и использование данной модификации означает, что вы ознакомились и понимаете положения настоящего лицензионного соглашения и согласны с ними.

\n" + "


")) self.eula_true.setText(_translate("MainWindow", "Я принимаю условия соглашения")) self.eula_false.setText(_translate("MainWindow", "Я не принимаю условия соглашения")) self.eula_true1.setText(_translate("MainWindow", "Я ничего не читал, но со всем согласен")) self.back_button_3.setText(_translate("MainWindow", "Назад")) self.next_button_4.setText(_translate("MainWindow", "Далее")) - self.textBrowser_5.setHtml(_translate("MainWindow", "\n" -"\n" -"

Stellaris DLC Unlocker

\n" -"


\n" -"

Требования:

\n" -"

Лицензия: Steam.

\n" -"


\n" -"

Установка:

\n" -"

Следуйте инструкциям инсталлятора. Установка почти полностью автоматическая.

\n" -"


\n" -"

Удаление:

\n" -"

Переустановите Paradox лаунчер, удалите папку "dlc" в директории игры. Не забудте заново скачать те dlc которые у вас приобретены.

Сделано лично мной для всех
@seuyh

\n" -"

GitHub

\n" -"

Отдельная благодарность герою нашего времени, который все это делал для нас ручками He11oThere

\n" -"


playground.ru Stellaris DLC Unlocker

\n" -"


")) + self.textBrowser_5.setHtml(_translate("MainWindow", + "\n" + "\n" + "

Stellaris DLC Unlocker

\n" + "


\n" + "

Требования:

\n" + "

Лицензия: Steam.

\n" + "


\n" + "

Установка:

\n" + "

Следуйте инструкциям инсталлятора. Установка почти полностью автоматическая.

\n" + "


\n" + "

Удаление:

\n" + "

Переустановите Paradox лаунчер, удалите папку "dlc" в директории игры. Не забудте заново скачать те dlc которые у вас приобретены.

Сделано лично мной для всех
seuyh

\n" + "

GitHub

\n" + "

Отдельная благодарность герою нашего времени, который все это делал для нас ручками He11oThere

\n" + "


playground.ru Stellaris DLC Unlocker

\n" + "


")) self.cancel_button_4.setText(_translate("MainWindow", "Отмена")) - self.textBrowser_6.setHtml(_translate("MainWindow", "\n" -"\n" -"

Пожалуйста, прочитие следующую важную информацию пред тем, как продолжить.

")) - self.textBrowser_7.setHtml(_translate("MainWindow", "\n" -"\n" -"

Информация

")) + self.textBrowser_6.setHtml(_translate("MainWindow", + "\n" + "\n" + "

Пожалуйста, прочитие следующую важную информацию пред тем, как продолжить.

")) + self.textBrowser_7.setHtml(_translate("MainWindow", + "\n" + "\n" + "

Информация

")) self.next_button_2.setText(_translate("MainWindow", "Далее")) self.cancel_button_2.setText(_translate("MainWindow", "Отмена")) self.locate_folder.setText(_translate("MainWindow", "Обзор...")) self.back_button.setText(_translate("MainWindow", "Назад")) - self.textBrowser_8.setHtml(_translate("MainWindow", "\n" -"\n" -"

Выбор папки игры

")) - self.textBrowser_9.setHtml(_translate("MainWindow", "\n" -"\n" -"

Пожалуйста, укажите папку с игрой если мы не смогли найти ее автоматически.

")) + self.textBrowser_8.setHtml(_translate("MainWindow", + "\n" + "\n" + "

Выбор папки игры

")) + self.textBrowser_9.setHtml(_translate("MainWindow", + "\n" + "\n" + "

Пожалуйста, укажите папку с игрой если мы не смогли найти ее автоматически.

")) self.space_req.setText(_translate("MainWindow", "Требуется дополнительно %nan% места")) - self.textBrowser_10.setHtml(_translate("MainWindow", "\n" -"\n" -"

Пожалуйста, подождите пока мы загрузим все нужные файлы с сервера.

")) - self.textBrowser_11.setHtml(_translate("MainWindow", "\n" -"\n" -"

Загрузка DLC

")) + self.textBrowser_10.setHtml(_translate("MainWindow", + "\n" + "\n" + "

Пожалуйста, подождите пока мы загрузим все нужные файлы с сервера.

")) + self.textBrowser_11.setHtml(_translate("MainWindow", + "\n" + "\n" + "

Загрузка DLC

")) self.download_text.setText(_translate("MainWindow", "Подключение к серверу...")) self.next_button_5.setText(_translate("MainWindow", "Далее")) self.cancel_button_5.setText(_translate("MainWindow", "Отмена")) self.label.setText(_translate("MainWindow", "Загрузка DLC:")) self.label_2.setText(_translate("MainWindow", "Генерация creamapi:")) self.creamapi_label.setText(_translate("MainWindow", "Получение инфо о dlc: подключение к api")) - self.label_3.setText(_translate("MainWindow", "Скорость генерации зависит от сервера, извините ;(")) + self.label_3.setText(_translate("MainWindow", "Скорость генерации зависит от сервера.")) self.speed_label.setText(_translate("MainWindow", "Скорость: %nan%")) - self.textBrowser_12.setHtml(_translate("MainWindow", "\n" -"\n" -"

Переустановка лаунчера

")) - self.textBrowser_13.setHtml(_translate("MainWindow", "\n" -"\n" -"

Мы рекомендуем переустановить Paradox лаунчер, однако вы можете пропутить этот шаг.

")) + self.textBrowser_12.setHtml(_translate("MainWindow", + "\n" + "\n" + "

Переустановка лаунчера

")) + self.textBrowser_13.setHtml(_translate("MainWindow", + "\n" + "\n" + "

Необходимо переустановить Paradox лаунчер для корректной работы.

")) self.reinstall_button.setText(_translate("MainWindow", "Хорошо")) self.cancel_button_6.setText(_translate("MainWindow", "Отмена")) - self.skip_button.setText(_translate("MainWindow", "Пропустить")) - self.textBrowser_14.setHtml(_translate("MainWindow", "\n" -"\n" -"

Программа почти все сделает автоматически, вам нужно лишь следовать указаниям на экране.

")) - self.finish_text.setHtml(_translate("MainWindow", "\n" -"\n" -"

Перезаписываем оставшиеся файлы.

Пожалуйста подождите немного.

")) - self.textBrowser_16.setHtml(_translate("MainWindow", "\n" -"\n" -"

Завершение

")) - self.textBrowser_17.setHtml(_translate("MainWindow", "\n" -"\n" -"

Мы уже почти все доделали, осталось немного подождать.

")) + self.textBrowser_14.setHtml(_translate("MainWindow", + "\n" + "\n" + "

Программа почти все сделает автоматически, вам нужно лишь следовать указаниям на экране.

")) + self.finish_text.setHtml(_translate("MainWindow", + "\n" + "\n" + "

Перезаписываем оставшиеся файлы.

Пожалуйста подождите немного.

")) + self.textBrowser_16.setHtml(_translate("MainWindow", + "\n" + "\n" + "

Завершение

")) + self.textBrowser_17.setHtml(_translate("MainWindow", + "\n" + "\n" + "

Мы уже почти все доделали, осталось немного подождать.

")) self.finish_button.setText(_translate("MainWindow", "Готово")) self.launch_game.setText(_translate("MainWindow", "Запустить игру")) self.checkBox.setText(_translate("MainWindow", "Автор крутой")) diff --git a/design/resources.qrc b/design/resources.qrc index ce1c992..8c3b4e7 100644 --- a/design/resources.qrc +++ b/design/resources.qrc @@ -1,5 +1,7 @@ stallaris_ba (1).jpg + telegram (1).png + GitHub-Logo.wine (1).png diff --git a/gui/main_window.py b/gui/main_window.py index eb5d660..c0b6045 100644 --- a/gui/main_window.py +++ b/gui/main_window.py @@ -4,15 +4,15 @@ from sys import exit from PyQt5.QtWidgets import QMainWindow, QFileDialog, QMessageBox from gui.cream_api_maker import CreamAPI from PyQt5.QtCore import Qt -from PyQt5.QtGui import QIcon +from PyQt5.QtGui import QIcon, QDesktopServices import design.main_window as main_design from libs.server_data import gameversion, version, get_remote_file_size, url from libs.game_path import stellaris_path from gui.DownloadThread import DownloaderThread from libs.encrypt import decrypt -from subprocess import Popen +from subprocess import Popen, run from zipfile import ZipFile -from shutil import move, rmtree, copytree +from shutil import rmtree, copytree class MainWindow(QMainWindow, main_design.Ui_MainWindow): @@ -39,12 +39,13 @@ class MainWindow(QMainWindow, main_design.Ui_MainWindow): self.back_button_2.clicked.connect(self.switch_to_back) self.back_button_3.clicked.connect(self.switch_to_back) self.reinstall_button.clicked.connect(self.reinstall) - self.skip_button.clicked.connect(lambda: self.reinstall(skip=True)) + # self.skip_button.clicked.connect(lambda: self.reinstall(skip=True)) self.finish_button.clicked.connect(self.finish) self.locate_folder.clicked.connect(self.browse_folder) self.eula_true.toggled.connect(self.on_radio_button_toggled) self.eula_true1.toggled.connect(self.on_radio_button_toggled) self.eula_false.toggled.connect(self.on_radio_button_toggled) + self.textBrowser_5.anchorClicked.connect(self.open_link_in_browser) self.download_thread = None self.is_downloading = False @@ -69,7 +70,7 @@ class MainWindow(QMainWindow, main_design.Ui_MainWindow): self.stackedWidget.setCurrentIndex(self.stackedWidget.currentIndex() - 1) def version_check(self): - if float(version) > float(0.2): + if float(version) > float(0.3): if self.ok_dialog('Новая версия', "На сервере обнаружена новая версия!\n\nПерекачайте анлокер с сайта", QMessageBox.Critical): @@ -114,6 +115,10 @@ class MainWindow(QMainWindow, main_design.Ui_MainWindow): self.next_button_3.setEnabled(False) self.next_button_3.setCursor(Qt.ForbiddenCursor) + def open_link_in_browser(self, url): + QDesktopServices.openUrl(url) + self.text_browser.ignore() + def path_change(self): path = stellaris_path() if path: @@ -266,21 +271,26 @@ class MainWindow(QMainWindow, main_design.Ui_MainWindow): self.replace_files(os.path.join(os.path.join(folder_path, launcher_folders[1]))) def replace_files(self, launcher_folder): - unzipped = self.unzip_and_replace() + rmtree(f'{self.path_place.toPlainText()}/dlc') + self.unzip_and_replace() + try: + os.remove(f'{launcher_folder}/resources/app.asar.unpacked/dist/main/steam_api64_o.dll') + except: + pass os.rename(f'{launcher_folder}/resources/app.asar.unpacked/dist/main/steam_api64.dll', f'{launcher_folder}/resources/app.asar.unpacked/dist/main/steam_api64_o.dll') copytree('creamapi_launcher_files', f'{launcher_folder}/resources/app.asar.unpacked/dist/main', dirs_exist_ok=True) copytree('creamapi_steam_files', self.path_place.toPlainText(), dirs_exist_ok=True) - rmtree(f'{self.path_place.toPlainText()}/dlc') - move(f'{unzipped}/dlc', self.path_place.toPlainText()) + # move(f'{unzipped}/dlc', self.path_place.toPlainText()) self.finish_text.setPlainText('Все готово!') sleep(1) self.finish_button.setEnabled(True) def unzip_and_replace(self): zip_path = self.save_path - extract_folder = os.path.splitext(zip_path)[0] + # extract_folder = os.path.splitext(zip_path)[0] + extract_folder = self.path_place.toPlainText() if not os.path.exists(extract_folder): os.makedirs(extract_folder) @@ -291,7 +301,8 @@ class MainWindow(QMainWindow, main_design.Ui_MainWindow): def finish(self): if self.launch_game.isChecked(): try: - Popen([f"{self.path_place.toPlainText()}/stellaris.exe"]) + run('start steam://run/281990', shell=True, capture_output=True, text=True) + # Popen([f"{self.path_place.toPlainText()}/stellaris.exe"]) except: pass diff --git a/libs/server_data.py b/libs/server_data.py index e55c06f..626e51f 100644 --- a/libs/server_data.py +++ b/libs/server_data.py @@ -16,7 +16,7 @@ def get_remote_file_size(url): 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3' } response = requests.head(url, headers=headers, verify=False) - size_bytes = int(response.headers.get('content-length', 0)) + size_bytes = int(response.headers.get('content-length', 0))*2 if size_bytes >= 1024 * 1024: size_str = "{:.2f} MB".format(size_bytes / (1024 * 1024)) elif size_bytes >= 1024: @@ -24,5 +24,5 @@ def get_remote_file_size(url): else: size_str = "{} bytes".format(size_bytes) return size_str - except Exception as e: - return str(e) + except Exception: + return 'Unknown' diff --git a/requirements.txt b/requirements.txt index 8a8ec0d..8518fe6 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,5 @@ -pyqt5==5.15.10 -requests==2.31.0 -future==0.18.3 +cryptography==42.0.5 +PyQt5==5.15.10 +PyQt5_sip==12.13.0 +Requests==2.31.0 vdf==3.4 \ No newline at end of file