|
10 | 10 | from PyQt5.QtCore import Qt, QUrl, QTimer, QTranslator |
11 | 11 | from subprocess import run, CREATE_NO_WINDOW |
12 | 12 | from pathlib import Path |
| 13 | +from locale import getlocale |
13 | 14 |
|
14 | 15 | import UI.ui_main as ui_main |
15 | 16 | from Libs.ConnectionCheck import ConnectionCheckThread |
@@ -37,12 +38,12 @@ def __init__(self): |
37 | 38 | self.game_path = None |
38 | 39 | self.not_updated_dlc = [] |
39 | 40 | self.dlc_data = get_dlc_data() |
| 41 | + self.user_logon_name = get_user_logon_name() |
40 | 42 | self.server_url, self.server_alturl = (lambda d: (d['url'], d['alturl']))(get_server_data()) |
41 | 43 | self.path_change() |
42 | 44 | self.kill_process('Paradox Launcher.exe') |
43 | 45 | self.kill_process('stellaris.exe') |
44 | 46 |
|
45 | | - |
46 | 47 | self.draggable_elements = [self.frame_user, self.server_status, self.gh_status, self.lappname_title, |
47 | 48 | self.frame_top] |
48 | 49 | for element in self.draggable_elements: |
@@ -82,6 +83,7 @@ def __init__(self): |
82 | 83 | self.en_lang.toggled.connect(self.switch_to_english) |
83 | 84 | self.ru_lang.toggled.connect(self.switch_to_russian) |
84 | 85 | self.cn_lang.toggled.connect(self.switch_to_chinese) |
| 86 | + |
85 | 87 | self.connection_thread = ConnectionCheckThread(self.server_url) |
86 | 88 |
|
87 | 89 | self.connection_thread.github_status_checked.connect(self.handle_github_status) |
@@ -112,8 +114,45 @@ def __init__(self): |
112 | 114 | self.log_widget = self.log_widget |
113 | 115 | self.log_widget.clear() |
114 | 116 |
|
| 117 | + def get_app_language(self): |
| 118 | + lang, _ = getlocale() |
| 119 | + if not lang: |
| 120 | + return "en" |
| 121 | + lang = lang.lower() |
| 122 | + if "russian" in lang: |
| 123 | + return "ru" |
| 124 | + elif "chinese" in lang: |
| 125 | + return "zh" |
| 126 | + else: |
| 127 | + return "en" |
| 128 | + |
| 129 | + |
| 130 | + def set_language_radio(self, lang): |
| 131 | + if lang == "ru": |
| 132 | + self.ru_lang.setChecked(True) |
| 133 | + elif lang == "zh": |
| 134 | + self.cn_lang.setChecked(True) |
| 135 | + else: |
| 136 | + self.en_lang.setChecked(True) |
| 137 | + |
| 138 | + self.apply_language(lang) |
| 139 | + |
| 140 | + def apply_language(self, lang): |
| 141 | + app = QApplication.instance() |
| 142 | + app.removeTranslator(self.translator) |
| 143 | + |
| 144 | + if lang == "ru": |
| 145 | + if self.translator.load(os.path.join("UI", "translations", "ru_RU.qm")): |
| 146 | + app.installTranslator(self.translator) |
| 147 | + elif lang == "zh": |
| 148 | + if self.translator.load(os.path.join("UI", "translations", "zh_CN.qm")): |
| 149 | + app.installTranslator(self.translator) |
| 150 | + |
| 151 | + self.retranslateUi(self) |
| 152 | + |
115 | 153 | def showEvent(self, event): |
116 | 154 | super(MainWindow, self).showEvent(event) |
| 155 | + self.set_language_radio(self.get_app_language()) |
117 | 156 | print('Start connection check') |
118 | 157 | QTimer.singleShot(5, self.start_connection_check) |
119 | 158 | print('Start updates check') |
@@ -280,7 +319,6 @@ def handle_github_status(self, status): |
280 | 319 | self.errorexec(self.tr("Can't establish connection with GitHub. Check internet"), self.tr("Ok"), |
281 | 320 | exitApp=True) |
282 | 321 |
|
283 | | - |
284 | 322 | def handle_server_status(self, status): |
285 | 323 | if status: |
286 | 324 | self.server_status.setChecked(True) |
@@ -330,11 +368,10 @@ def checkDLCUpdate(self): |
330 | 368 | md5_checker = MD5(f"{self.game_path}\\dlc", self.server_url) |
331 | 369 | return md5_checker.check_files() |
332 | 370 |
|
333 | | - @staticmethod |
334 | | - def full_reinstall(): |
| 371 | + def full_reinstall(self): |
335 | 372 | try: |
336 | 373 | print(f'Deleting documents folder...') |
337 | | - user_home = os.path.join("C:\\Users", get_user_logon_name()) |
| 374 | + user_home = os.path.join("C:\\Users", self.user_logon_name) |
338 | 375 | rmtree(os.path.join(user_home, "Documents", "Paradox Interactive", "Stellaris")) |
339 | 376 | except Exception as e: |
340 | 377 | print(f'Cant delete {e}') |
@@ -417,7 +454,11 @@ def unlock(self): |
417 | 454 | if not os.path.exists(os.path.join(self.game_path, "dlc")): |
418 | 455 | os.makedirs(os.path.join(self.game_path, "dlc")) |
419 | 456 | if self.game_path: |
420 | | - self.remove_compatibility(f"{self.game_path}\stellaris.exe") |
| 457 | + try: |
| 458 | + self.remove_compatibility(f"{self.game_path}\stellaris.exe") |
| 459 | + except Exception as e: |
| 460 | + print(f"Cant remove compatibility: {e}") |
| 461 | + pass |
421 | 462 | self.is_downloading = True |
422 | 463 | if self.update_dlc_button.isChecked(): |
423 | 464 | print("Updating DLCs...") |
@@ -551,7 +592,7 @@ def reinstall(self): |
551 | 592 | if not self.skip_launcher_reinstall_checbox.isChecked(): |
552 | 593 | self.reinstall_thread = ReinstallThread(self.game_path, paradox_folder1, paradox_folder2, paradox_folder3, |
553 | 594 | paradox_folder4, self.launcher_downloaded, |
554 | | - self.downloaded_launcher_dir, get_user_logon_name()) |
| 595 | + self.downloaded_launcher_dir, self.user_logon_name) |
555 | 596 | # self.reinstall_thread.progress_signal.connect(self.update_reinstall_progress) |
556 | 597 | self.reinstall_thread.error_signal.connect(self.show_reinstall_error) |
557 | 598 | self.reinstall_thread.continue_reinstall.connect(self.reinstall_2) |
@@ -618,6 +659,8 @@ def replace_files(self, launcher_folder): |
618 | 659 | print('Copy complete') |
619 | 660 | self.copy_files_radio.setChecked(True) |
620 | 661 | self.lauch_game_checkbox.setVisible(True) |
| 662 | + self.update_dlc_button.setVisible(False) |
| 663 | + self.old_dlc_text.setVisible(False) |
621 | 664 | self.done_button.setVisible(True) |
622 | 665 | print('All done!') |
623 | 666 |
|
|
0 commit comments