From 96fc94562dff1efb575ed95971a16ceb52c33702 Mon Sep 17 00:00:00 2001 From: Jeremy Rimpo Date: Sun, 5 Dec 2021 03:42:50 -0600 Subject: [PATCH 1/5] Changes to compile with Qt6 + Boost 1.77 --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 16c1204..94b6780 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 3.16) -project(basic_games LANGUAGES NONE) +project(basic_games LANGUAGES CXX) set(project_type python_module_plugin) set(enable_warnings OFF) set(create_translations OFF) From 1fdf5031ea3ade7cf014ecb1c7549e6e65fc87c7 Mon Sep 17 00:00:00 2001 From: Jeremy Rimpo Date: Mon, 6 Dec 2021 05:20:37 -0600 Subject: [PATCH 2/5] PyQt6 Compatibility --- README.md | 4 ++-- basic_features/basic_save_game_info.py | 6 +++--- basic_game.py | 12 ++++++------ games/game_blackandwhite2.py | 4 ++-- games/game_da2.py | 2 +- games/game_darkestdungeon.py | 2 +- games/game_darkmessiahofmightandmagic.py | 2 +- games/game_dungeonsiege2.py | 2 +- games/game_gta-3-de.py | 2 +- games/game_gta-san-andreas-de.py | 2 +- games/game_gta-vice-city-de.py | 2 +- games/game_kingdomcomedeliverance.py | 2 +- games/game_mountandblade2.py | 2 +- games/game_msfs2020.py | 2 +- games/game_nomanssky.py | 2 +- games/game_stalkeranomaly.py | 4 ++-- games/game_stardewvalley.py | 2 +- games/game_starsector.py | 2 +- games/game_starwars-empire-at-war-foc.py | 2 +- games/game_starwars-empire-at-war.py | 2 +- games/game_witcher1.py | 2 +- games/game_witcher3.py | 2 +- setup.cfg | 2 +- 23 files changed, 33 insertions(+), 33 deletions(-) diff --git a/README.md b/README.md index 666dd8b..6fe4cdf 100644 --- a/README.md +++ b/README.md @@ -77,7 +77,7 @@ You need to create a class that inherits `BasicGame` and put it in a `game_XX.py Below is an example for The Witcher 3 (see also [games/game_witcher3.py](games/game_witcher3.py)): ```python -from PyQt5.QtCore import QDir +from PyQt6.QtCore import QDir from ..basic_game import BasicGame @@ -104,7 +104,7 @@ to the `version` method, see the table below). If you override the method, you d not have to provide the attribute: ```python -from PyQt5.QtCore import QDir +from PyQt6.QtCore import QDir from ..basic_game import BasicGame import mobase diff --git a/basic_features/basic_save_game_info.py b/basic_features/basic_save_game_info.py index 103937c..33ad301 100644 --- a/basic_features/basic_save_game_info.py +++ b/basic_features/basic_save_game_info.py @@ -4,9 +4,9 @@ import sys from pathlib import Path from typing import Callable, List, Optional -from PyQt5.QtCore import QDateTime, Qt -from PyQt5.QtGui import QImage, QPixmap -from PyQt5.QtWidgets import QLabel, QVBoxLayout, QWidget +from PyQt6.QtCore import QDateTime, Qt +from PyQt6.QtGui import QImage, QPixmap +from PyQt6.QtWidgets import QLabel, QVBoxLayout, QWidget import mobase diff --git a/basic_game.py b/basic_game.py index 375af49..00da11f 100644 --- a/basic_game.py +++ b/basic_game.py @@ -5,8 +5,8 @@ import sys from pathlib import Path from typing import Callable, Dict, Generic, List, Optional, TypeVar, Union -from PyQt5.QtCore import QDir, QFileInfo, QStandardPaths -from PyQt5.QtGui import QIcon +from PyQt6.QtCore import QDir, QFileInfo, QStandardPaths +from PyQt6.QtGui import QIcon import mobase @@ -19,12 +19,12 @@ def replace_variables(value: str, game: "BasicGame") -> str: if value.find("%DOCUMENTS%") != -1: value = value.replace( "%DOCUMENTS%", - QStandardPaths.writableLocation(QStandardPaths.DocumentsLocation), + QStandardPaths.writableLocation(QStandardPaths.StandardLocation.DocumentsLocation), ) if value.find("%USERPROFILE%") != -1: value = value.replace( "%USERPROFILE%", - QStandardPaths.writableLocation(QStandardPaths.HomeLocation), + QStandardPaths.writableLocation(QStandardPaths.StandardLocation.HomeLocation), ) if value.find("%GAME_DOCUMENTS%") != -1: value = value.replace( @@ -211,11 +211,11 @@ class BasicGameMappings: folders = [ "{}/My Games/{}".format( - QStandardPaths.writableLocation(QStandardPaths.DocumentsLocation), + QStandardPaths.writableLocation(QStandardPaths.StandardLocation.DocumentsLocation), game.gameName(), ), "{}/{}".format( - QStandardPaths.writableLocation(QStandardPaths.DocumentsLocation), + QStandardPaths.writableLocation(QStandardPaths.StandardLocation.DocumentsLocation), game.gameName(), ), ] diff --git a/games/game_blackandwhite2.py b/games/game_blackandwhite2.py index 8f48f9f..78133bf 100644 --- a/games/game_blackandwhite2.py +++ b/games/game_blackandwhite2.py @@ -7,8 +7,8 @@ import time from pathlib import Path from typing import List -from PyQt5.QtCore import QDir, QFileInfo, QFile, QDateTime, Qt -from PyQt5.QtGui import QPixmap, QPainter +from PyQt6.QtCore import QDir, QFileInfo, QFile, QDateTime, Qt +from PyQt6.QtGui import QPixmap, QPainter import mobase diff --git a/games/game_da2.py b/games/game_da2.py index b4954b4..c727415 100644 --- a/games/game_da2.py +++ b/games/game_da2.py @@ -1,4 +1,4 @@ -from PyQt5.QtCore import QDir +from PyQt6.QtCore import QDir from ..basic_game import BasicGame import mobase diff --git a/games/game_darkestdungeon.py b/games/game_darkestdungeon.py index 2eb2dd1..e7a3239 100644 --- a/games/game_darkestdungeon.py +++ b/games/game_darkestdungeon.py @@ -3,7 +3,7 @@ import json from pathlib import Path from typing import List -from PyQt5.QtCore import QDir, QFileInfo, QStandardPaths +from PyQt6.QtCore import QDir, QFileInfo, QStandardPaths import mobase diff --git a/games/game_darkmessiahofmightandmagic.py b/games/game_darkmessiahofmightandmagic.py index bf25ae3..6b4071f 100644 --- a/games/game_darkmessiahofmightandmagic.py +++ b/games/game_darkmessiahofmightandmagic.py @@ -2,7 +2,7 @@ import struct -from PyQt5.QtGui import QImage +from PyQt6.QtGui import QImage import mobase diff --git a/games/game_dungeonsiege2.py b/games/game_dungeonsiege2.py index cbb48f6..e9fd4e6 100644 --- a/games/game_dungeonsiege2.py +++ b/games/game_dungeonsiege2.py @@ -2,7 +2,7 @@ from typing import List, Tuple -from PyQt5.QtCore import QFileInfo +from PyQt6.QtCore import QFileInfo import mobase diff --git a/games/game_gta-3-de.py b/games/game_gta-3-de.py index 3267087..f00a940 100644 --- a/games/game_gta-3-de.py +++ b/games/game_gta-3-de.py @@ -1,7 +1,7 @@ import os from pathlib import Path -from PyQt5.QtCore import QDir, QFileInfo +from PyQt6.QtCore import QDir, QFileInfo import mobase diff --git a/games/game_gta-san-andreas-de.py b/games/game_gta-san-andreas-de.py index 7f85855..9e6e6a5 100644 --- a/games/game_gta-san-andreas-de.py +++ b/games/game_gta-san-andreas-de.py @@ -1,7 +1,7 @@ import os from pathlib import Path -from PyQt5.QtCore import QDir, QFileInfo +from PyQt6.QtCore import QDir, QFileInfo import mobase diff --git a/games/game_gta-vice-city-de.py b/games/game_gta-vice-city-de.py index 61ddb54..d23e683 100644 --- a/games/game_gta-vice-city-de.py +++ b/games/game_gta-vice-city-de.py @@ -1,7 +1,7 @@ import os from pathlib import Path -from PyQt5.QtCore import QDir,QFileInfo +from PyQt6.QtCore import QDir,QFileInfo import mobase diff --git a/games/game_kingdomcomedeliverance.py b/games/game_kingdomcomedeliverance.py index 6487b6b..fbfd594 100644 --- a/games/game_kingdomcomedeliverance.py +++ b/games/game_kingdomcomedeliverance.py @@ -2,7 +2,7 @@ import os -from PyQt5.QtCore import QDir +from PyQt6.QtCore import QDir from ..basic_game import BasicGame diff --git a/games/game_mountandblade2.py b/games/game_mountandblade2.py index fc8fd96..95aa8f6 100644 --- a/games/game_mountandblade2.py +++ b/games/game_mountandblade2.py @@ -2,7 +2,7 @@ from typing import List -from PyQt5.QtCore import QFileInfo +from PyQt6.QtCore import QFileInfo import mobase diff --git a/games/game_msfs2020.py b/games/game_msfs2020.py index 028ae19..8be8538 100644 --- a/games/game_msfs2020.py +++ b/games/game_msfs2020.py @@ -1,7 +1,7 @@ import os import re -from PyQt5.QtCore import QDir +from PyQt6.QtCore import QDir from ..basic_game import BasicGame diff --git a/games/game_nomanssky.py b/games/game_nomanssky.py index 66f9b8c..4e1781e 100644 --- a/games/game_nomanssky.py +++ b/games/game_nomanssky.py @@ -1,6 +1,6 @@ # -*- encoding: utf-8 -*- -from PyQt5.QtCore import QFileInfo +from PyQt6.QtCore import QFileInfo import mobase diff --git a/games/game_stalkeranomaly.py b/games/game_stalkeranomaly.py index 19f688b..954970a 100644 --- a/games/game_stalkeranomaly.py +++ b/games/game_stalkeranomaly.py @@ -4,8 +4,8 @@ from pathlib import Path from typing import List from enum import IntEnum -from PyQt5.QtCore import Qt, QDir, QFileInfo -from PyQt5.QtWidgets import QLabel, QVBoxLayout, QWidget +from PyQt6.QtCore import Qt, QDir, QFileInfo +from PyQt6.QtWidgets import QLabel, QVBoxLayout, QWidget import mobase diff --git a/games/game_stardewvalley.py b/games/game_stardewvalley.py index a719fc6..058f91c 100644 --- a/games/game_stardewvalley.py +++ b/games/game_stardewvalley.py @@ -1,6 +1,6 @@ # -*- encoding: utf-8 -*- -from PyQt5.QtCore import QFileInfo +from PyQt6.QtCore import QFileInfo import mobase diff --git a/games/game_starsector.py b/games/game_starsector.py index a886bf1..231aa25 100644 --- a/games/game_starsector.py +++ b/games/game_starsector.py @@ -2,7 +2,7 @@ from pathlib import Path from typing import List -from PyQt5.QtCore import QDir +from PyQt6.QtCore import QDir import mobase diff --git a/games/game_starwars-empire-at-war-foc.py b/games/game_starwars-empire-at-war-foc.py index b93cd42..ec3ddce 100644 --- a/games/game_starwars-empire-at-war-foc.py +++ b/games/game_starwars-empire-at-war-foc.py @@ -1,7 +1,7 @@ # -*- encoding: utf-8 -*- import mobase -from PyQt5.QtCore import QFileInfo +from PyQt6.QtCore import QFileInfo from ..basic_game import BasicGame from typing import List diff --git a/games/game_starwars-empire-at-war.py b/games/game_starwars-empire-at-war.py index 86df664..bf8867d 100644 --- a/games/game_starwars-empire-at-war.py +++ b/games/game_starwars-empire-at-war.py @@ -1,7 +1,7 @@ # -*- encoding: utf-8 -*- import mobase -from PyQt5.QtCore import QFileInfo +from PyQt6.QtCore import QFileInfo from ..basic_game import BasicGame from typing import List diff --git a/games/game_witcher1.py b/games/game_witcher1.py index 6fe5479..fdbada9 100644 --- a/games/game_witcher1.py +++ b/games/game_witcher1.py @@ -2,7 +2,7 @@ from typing import List from pathlib import Path -from PyQt5.QtCore import QFileInfo, QDir +from PyQt6.QtCore import QFileInfo, QDir import mobase diff --git a/games/game_witcher3.py b/games/game_witcher3.py index 781939a..f86fb9f 100644 --- a/games/game_witcher3.py +++ b/games/game_witcher3.py @@ -3,7 +3,7 @@ from pathlib import Path from typing import List -from PyQt5.QtCore import QDir +from PyQt6.QtCore import QDir import mobase diff --git a/setup.cfg b/setup.cfg index 7b31129..a3c9108 100644 --- a/setup.cfg +++ b/setup.cfg @@ -34,7 +34,7 @@ envlist = py38-lint [testenv:py38-lint] skip_install = true deps = - PyQt5-stubs + PyQt6-stubs mobase-stubs psutil==5.8.0 vdf==3.4 From c4bc955c4b338984a1ee1a98f10059252fa70b5c Mon Sep 17 00:00:00 2001 From: Jeremy Rimpo Date: Thu, 9 Dec 2021 16:45:31 -0600 Subject: [PATCH 3/5] Python 3.10 support --- plugin-requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugin-requirements.txt b/plugin-requirements.txt index f6fc492..d3b1822 100644 --- a/plugin-requirements.txt +++ b/plugin-requirements.txt @@ -1,3 +1,3 @@ psutil==5.8.0 vdf==3.4 -lzokay==1.0 +lzokay==1.0.1 From 224af6773fdd391e529b0305f87189b3d88c3c71 Mon Sep 17 00:00:00 2001 From: Jeremy Rimpo Date: Fri, 17 Dec 2021 22:49:14 -0600 Subject: [PATCH 4/5] Convert to PyQt6 --- games/game_vampriebloodlines.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/games/game_vampriebloodlines.py b/games/game_vampriebloodlines.py index 6e5b729..b77895f 100644 --- a/games/game_vampriebloodlines.py +++ b/games/game_vampriebloodlines.py @@ -2,7 +2,7 @@ import os import mobase -from PyQt5.QtCore import QDir +from PyQt6.QtCore import QDir from typing import List from pathlib import Path From 6a78d6f9812a0437637514097924b08cf342eff7 Mon Sep 17 00:00:00 2001 From: Jeremy Rimpo Date: Fri, 24 Dec 2021 23:15:00 -0600 Subject: [PATCH 5/5] Create ini files if base file doesn't exist --- basic_game.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/basic_game.py b/basic_game.py index 00da11f..4ba63cc 100644 --- a/basic_game.py +++ b/basic_game.py @@ -501,10 +501,13 @@ class BasicGame(mobase.IPluginGame): def initializeProfile(self, path: QDir, settings: int): if settings & mobase.ProfileSetting.CONFIGURATION: for iniFile in self.iniFiles(): - shutil.copyfile( - self.documentsDirectory().absoluteFilePath(iniFile), - path.absoluteFilePath(QFileInfo(iniFile).fileName()), - ) + try: + shutil.copyfile( + self.documentsDirectory().absoluteFilePath(iniFile), + path.absoluteFilePath(QFileInfo(iniFile).fileName()), + ) + except FileNotFoundError: + Path(path.absoluteFilePath(QFileInfo(iniFile).fileName())).touch() def primarySources(self): return []