6 Commits
10 changed files with 64 additions and 52 deletions
+5
View File
@@ -8,7 +8,12 @@ src/ui/*.py
.tox
.vscode
# MO2 build files:
vsbuild
mob.log
# Generated files:
lib
src/lib
installer_wizard
installer_wizard-*.zip
+13
View File
@@ -0,0 +1,13 @@
cmake_minimum_required(VERSION 3.16)
project(installer_wizard LANGUAGES NONE)
set(project_type python_module_plugin)
set(enable_warnings OFF)
if(DEFINED DEPENDENCIES_DIR)
include(${DEPENDENCIES_DIR}/modorganizer_super/cmake_common/project.cmake)
else()
include(../cmake_common/project.cmake)
endif()
add_subdirectory(src)
+2 -1
View File
@@ -6,7 +6,8 @@ $target = ".\installer_wizard\"
Remove-Item -Recurse -Force -ErrorAction Ignore $target
New-Item -Path $target -Type Directory | Out-Null
Copy-Item -Recurse -Path .\src\* -Exclude "*.ui", "__pycache__" -Destination .\installer_wizard
Copy-Item -Recurse -Path .\src\* -Exclude "*.ui" -Destination $target
Get-ChildItem -Recurse $target -Include "__pycache__" | Remove-Item -Recurse -Force
Copy-Item .\installer_wizard_en.ts, .\README.md, .\LICENSE $target
# Find the version:
+1 -1
View File
@@ -1,5 +1,5 @@
# Install the lib:
pip install --target=.\src\lib --upgrade git+https://github.com/Holt59/bain-wizard-interpreter | Out-Null
pip install --target=.\src\lib --upgrade -r .\plugin-requirements.txt | Out-Null
# Convert ui files:
Get-ChildItem -Recurse -File -Include "*.ui" | ForEach-Object {
+1
View File
@@ -0,0 +1 @@
git+https://github.com/Holt59/bain-wizard-interpreter
+1 -1
View File
@@ -37,7 +37,7 @@ deps =
mypy
flake8
flake8-black
mobase-stubs
mobase-stubs==2.4.0.a3
git+https://github.com/Holt59/bain-wizard-interpreter
commands =
black src --check --diff --exclude "lib" --exclude "ui"
+7
View File
@@ -0,0 +1,7 @@
cmake_minimum_required(VERSION 3.16)
if(DEFINED DEPENDENCIES_DIR)
include(${DEPENDENCIES_DIR}/modorganizer_super/cmake_common/src.cmake)
else()
include(../../cmake_common/src.cmake)
endif()
+1 -16
View File
@@ -60,7 +60,7 @@ class WizardInstaller(mobase.IPluginInstallerSimple):
return self._tr("Installer for BAIN archive containing wizard scripts.")
def version(self):
return mobase.VersionInfo(1, 0, 1)
return mobase.VersionInfo(1, 0, 2)
def isActive(self):
return self._organizer.pluginSetting(self.name(), "enabled")
@@ -321,21 +321,6 @@ class WizardInstaller(mobase.IPluginInstallerSimple):
tree.merge(entry)
# Move all non-selected plugins to "optional":
optionals: List[mobase.FileTreeEntry] = []
for entry in tree:
if entry.isFile() and (
entry.hasSuffix(["esl", "esp", "esm"])
and entry.name() not in dialog.plugins()
):
optionals.append(entry)
# Do not keep empty optional folder:
if optionals:
optional = tree.addDirectory("optional")
for entry in optionals:
optional.insert(entry)
# Handle renames:
for original, new in dialog.renames().items():
# Entry should be at the root:
@@ -3,32 +3,32 @@
<context>
<name>WizardInstallerComplete</name>
<message>
<location filename="src/ui/wizardinstallercomplete.py" line="151"/>
<location filename="ui/wizardinstallercomplete.ui" line="14"/>
<source>Form</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/ui/wizardinstallercomplete.py" line="152"/>
<location filename="ui/wizardinstallercomplete.ui" line="40"/>
<source>The installer script has finished. The following sub-packages and plugins will be installed.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/ui/wizardinstallercomplete.py" line="153"/>
<location filename="ui/wizardinstallercomplete.ui" line="111"/>
<source>Sub-Packages:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/ui/wizardinstallercomplete.py" line="154"/>
<location filename="ui/wizardinstallercomplete.ui" line="128"/>
<source>Plugins:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/ui/wizardinstallercomplete.py" line="155"/>
<location filename="ui/wizardinstallercomplete.ui" line="180"/>
<source>INI Tweaks:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/ui/wizardinstallercomplete.py" line="156"/>
<location filename="ui/wizardinstallercomplete.ui" line="236"/>
<source>Notes:</source>
<translation type="unfinished"></translation>
</message>
@@ -36,37 +36,37 @@
<context>
<name>WizardInstallerDialog</name>
<message>
<location filename="src/ui/wizardinstallerdialog.py" line="75"/>
<location filename="ui/wizardinstallerdialog.ui" line="14"/>
<source>BAIN Wizard Installer</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/ui/wizardinstallerdialog.py" line="76"/>
<location filename="ui/wizardinstallerdialog.ui" line="25"/>
<source>Name</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/ui/wizardinstallerdialog.py" line="77"/>
<location filename="ui/wizardinstallerdialog.ui" line="56"/>
<source>Manual</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/ui/wizardinstallerdialog.py" line="78"/>
<location filename="ui/wizardinstallerdialog.ui" line="66"/>
<source>Script</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/ui/wizardinstallerdialog.py" line="79"/>
<location filename="ui/wizardinstallerdialog.ui" line="92"/>
<source>Back</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/ui/wizardinstallerdialog.py" line="80"/>
<location filename="ui/wizardinstallerdialog.ui" line="102"/>
<source>Next</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/ui/wizardinstallerdialog.py" line="81"/>
<location filename="ui/wizardinstallerdialog.ui" line="109"/>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
@@ -74,12 +74,12 @@
<context>
<name>WizardInstallerError</name>
<message>
<location filename="src/ui/wizardinstallererror.py" line="52"/>
<location filename="ui/wizardinstallererror.ui" line="14"/>
<source>Form</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/ui/wizardinstallererror.py" line="54"/>
<location filename="ui/wizardinstallererror.ui" line="71"/>
<source>TextLabel</source>
<translation type="unfinished"></translation>
</message>
@@ -87,22 +87,22 @@
<context>
<name>WizardInstallerPage</name>
<message>
<location filename="src/ui/wizardinstallerpage.py" line="91"/>
<location filename="ui/wizardinstallerpage.ui" line="14"/>
<source>Form</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/ui/wizardinstallerpage.py" line="92"/>
<location filename="ui/wizardinstallerpage.ui" line="96"/>
<source>TextLabel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/ui/wizardinstallerpage.py" line="93"/>
<location filename="ui/wizardinstallerpage.ui" line="114"/>
<source>Options:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/ui/wizardinstallerpage.py" line="94"/>
<location filename="ui/wizardinstallerpage.ui" line="148"/>
<source>Description:</source>
<translation type="unfinished"></translation>
</message>
@@ -110,52 +110,52 @@
<context>
<name>WizardInstallerRequires</name>
<message>
<location filename="src/ui/wizardinstallerrequires.py" line="113"/>
<location filename="ui/wizardinstallerrequires.ui" line="14"/>
<source>Form</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/ui/wizardinstallerrequires.py" line="114"/>
<location filename="ui/wizardinstallerrequires.ui" line="34"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;Warning:&lt;/span&gt; The following version requirements are not met for using this installer.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/ui/wizardinstallerrequires.py" line="115"/>
<location filename="ui/wizardinstallerrequires.ui" line="44"/>
<source>Requirements</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/ui/wizardinstallerrequires.py" line="116"/>
<location filename="ui/wizardinstallerrequires.ui" line="52"/>
<source>Graphics Extender</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/ui/wizardinstallerrequires.py" line="117"/>
<location filename="ui/wizardinstallerrequires.ui" line="76"/>
<source>Wrye Bash</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/ui/wizardinstallerrequires.py" line="118"/>
<location filename="ui/wizardinstallerrequires.ui" line="86"/>
<source>Need</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/ui/wizardinstallerrequires.py" line="119"/>
<location filename="ui/wizardinstallerrequires.ui" line="103"/>
<source>Game</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/ui/wizardinstallerrequires.py" line="122"/>
<location filename="ui/wizardinstallerrequires.ui" line="151"/>
<source>N/A</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/ui/wizardinstallerrequires.py" line="121"/>
<location filename="ui/wizardinstallerrequires.ui" line="141"/>
<source>Have</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="src/ui/wizardinstallerrequires.py" line="123"/>
<location filename="ui/wizardinstallerrequires.ui" line="165"/>
<source>Script Extender</source>
<translation type="unfinished"></translation>
</message>
+4 -4
View File
@@ -165,11 +165,11 @@ class MO2ManagerModInterface(ManagerModInterface):
def getPluginStatus(self, filename) -> int:
state = self._organizer.pluginList().state(filename)
if state & mobase.PluginState.MISSING:
return -1
if state & mobase.PluginState.INACTIVE:
if state == mobase.PluginState.ACTIVE:
return 2
if state == mobase.PluginState.INACTIVE:
return 0 # Or 1?
return 2
return -1
def getFilename(self, filepath: str) -> str:
path = self._resolve(filepath)