mirror of
https://github.com/ModOrganizer2/modorganizer-diagnose_basic.git
synced 2026-07-27 14:03:10 -07:00
Compare commits
125
Commits
release_v1.0.6
...
2_2_2
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c2ee9b8e96 | ||
|
|
6d8b834e78 | ||
|
|
ea4c9de3f9 | ||
|
|
366aee53c0 | ||
|
|
c80335182d | ||
|
|
953ce74950 | ||
|
|
56eee7d629 | ||
|
|
7716eae9a7 | ||
|
|
151f75b75e | ||
|
|
1428e898d3 | ||
|
|
ba5bf967cf | ||
|
|
d82f7fcc4b | ||
|
|
8990fd9cf8 | ||
|
|
5818f32c36 | ||
|
|
b75a1600e6 | ||
|
|
9f6f754bc7 | ||
|
|
b7f4cd75c4 | ||
|
|
7de65e7abf | ||
|
|
87c1e464c5 | ||
|
|
15bc7ff731 | ||
|
|
80d4b2374e | ||
|
|
4c59d53dd2 | ||
|
|
edf8e49475 | ||
|
|
f82b49bf28 | ||
|
|
7557a27acf | ||
|
|
85c5e4c5e5 | ||
|
|
6792102fc9 | ||
|
|
bfeb51ff15 | ||
|
|
fd86bd6501 | ||
|
|
e0543a5048 | ||
|
|
e44513c31b | ||
|
|
bbeb26b459 | ||
|
|
0e8e61c1dc | ||
|
|
e161beab23 | ||
|
|
cc69866248 | ||
|
|
c20f112f14 | ||
|
|
8c311f06cf | ||
|
|
fcc76b9436 | ||
|
|
e562c428ab | ||
|
|
b099c92188 | ||
|
|
0a11edc584 | ||
|
|
a9f50bc4a3 | ||
|
|
121e0d07ae | ||
|
|
353629500b | ||
|
|
f344672d9d | ||
|
|
50c13dd864 | ||
|
|
2e687bea6e | ||
|
|
bc24f6f3d7 | ||
|
|
8ea35f7a47 | ||
|
|
0cd3f8232e | ||
|
|
985fbb604d | ||
|
|
f712240fef | ||
|
|
72ab614431 | ||
|
|
d1c34257cd | ||
|
|
6d078bab60 | ||
|
|
d9e26399d1 | ||
|
|
a577d4a519 | ||
|
|
d349de2cac | ||
|
|
0a1be591d3 | ||
|
|
603b723b7a | ||
|
|
cfc7ea1ef5 | ||
|
|
5dc33c4dcd | ||
|
|
e1bdfcaaea | ||
|
|
043f45ab70 | ||
|
|
fb294651c3 | ||
|
|
f4e1b296ad | ||
|
|
bd55424d8e | ||
|
|
d56a520815 | ||
|
|
fe8966e279 | ||
|
|
98bd1d4780 | ||
|
|
c345cacbc9 | ||
|
|
b78ae57ed4 | ||
|
|
d983c908ee | ||
|
|
0cc077b8c4 | ||
|
|
b245bc2ce3 | ||
|
|
0a1707fa9c | ||
|
|
b10b1f28ff | ||
|
|
59c10d78cd | ||
|
|
7dd29a68e2 | ||
|
|
ce0dc685ca | ||
|
|
e426d8efb4 | ||
|
|
bf00944706 | ||
|
|
97c8769334 | ||
|
|
05d1782cf1 | ||
|
|
f114b3ee60 | ||
|
|
0320bd719a | ||
|
|
943689d5c3 | ||
|
|
ecf0ff0d02 | ||
|
|
182ec5f85d | ||
|
|
2632e79de7 | ||
|
|
41eb0d50d4 | ||
|
|
863233e1ab | ||
|
|
9cb9c2cc56 | ||
|
|
8529da255f | ||
|
|
dd2203f647 | ||
|
|
123d291dc1 | ||
|
|
926cdedf8c | ||
|
|
0cc55698f7 | ||
|
|
7ea85f751e | ||
|
|
2cf83c7681 | ||
|
|
fb4eacabed | ||
|
|
366b3854b8 | ||
|
|
4bf94e9fda | ||
|
|
016a2efb88 | ||
|
|
6f73fe05a4 | ||
|
|
4531207250 | ||
|
|
266b597e4c | ||
|
|
41bd8cc0cd | ||
|
|
06487c2653 | ||
|
|
9b0637fa66 | ||
|
|
f0957919a5 | ||
|
|
4bce131613 | ||
|
|
849e946284 | ||
|
|
58a8406335 | ||
|
|
c8308f1612 | ||
|
|
75d821c46a | ||
|
|
f784c34877 | ||
|
|
b529b1f6a8 | ||
|
|
be9382e684 | ||
|
|
35cc2bb91c | ||
|
|
402d6b3a7d | ||
|
|
6e84aac467 | ||
|
|
2b711162ff | ||
|
|
b9aa3d7668 | ||
|
|
d4a7f6fcb9 |
@@ -0,0 +1,6 @@
|
||||
CMakeLists.txt.user
|
||||
edit
|
||||
*.bak
|
||||
/msbuild.log
|
||||
/*std*.log
|
||||
/*build
|
||||
@@ -0,0 +1,13 @@
|
||||
CMAKE_MINIMUM_REQUIRED(VERSION 2.8.12)
|
||||
|
||||
ADD_COMPILE_OPTIONS($<$<CXX_COMPILER_ID:MSVC>:/MP> $<$<CXX_COMPILER_ID:MSVC>:$<$<CONFIG:RELEASE>:/O2>> $<$<CXX_COMPILER_ID:MSVC>:$<$<CONFIG:RELWITHDEBINFO>:/O2>>)
|
||||
|
||||
SET(PROJ_NAME diagnose_basic)
|
||||
PROJECT(${PROJ_NAME})
|
||||
|
||||
SET(DEPENDENCIES_DIR CACHE PATH "")
|
||||
|
||||
# hint to find qt in dependencies path
|
||||
LIST(APPEND CMAKE_PREFIX_PATH ${QT_ROOT}/lib/cmake)
|
||||
|
||||
ADD_SUBDIRECTORY(src)
|
||||
@@ -0,0 +1,32 @@
|
||||
version: 1.0.{build}
|
||||
skip_branch_with_pr: true
|
||||
image: Visual Studio 2019
|
||||
environment:
|
||||
WEBHOOK_URL:
|
||||
secure: gOKbXaZM9ImtMD5XrYITvdyZUW/az082G9OIN1EC1Vbg57wBaeLhi49uGjxPw5GVujHku6kxN6ab89zhbS5GVeluR76GM83IbKV4Sh7udXzoYZZdg6YudtYHzdhCgUeiedpswbuczTq9ceIkkfSEWZuh/lMAAVVwvcGsJAnoPFw=
|
||||
build_script:
|
||||
- cmd: >-
|
||||
git clone --depth=1 --branch=%APPVEYOR_REPO_BRANCH% https://github.com/ModOrganizer2/modorganizer-umbrella.git c:\projects\modorganizer-umbrella 2> $null
|
||||
|
||||
mkdir c:\projects\modorganizer-build -type directory
|
||||
|
||||
cd c:\projects\modorganizer-umbrella
|
||||
|
||||
C:\Python37-x64\python.exe unimake.py -d c:\projects\modorganizer-build -s Appveyor_Build=True %APPVEYOR_PROJECT_NAME%
|
||||
artifacts:
|
||||
- path: build\src\diagnose_basic.dll
|
||||
name: diagnose_basic_dll
|
||||
- path: build\src\diagnose_basic.pdb
|
||||
name: diagnose_basic_pdb
|
||||
- path: build\src\diagnose_basic.lib
|
||||
name: diagnose_basic_lib
|
||||
on_success:
|
||||
- ps: Set-Location -Path $env:APPVEYOR_BUILD_FOLDER
|
||||
- ps: Invoke-RestMethod https://raw.githubusercontent.com/DiscordHooks/appveyor-discord-webhook/master/send.ps1 -o send.ps1
|
||||
- ps: ./send.ps1 success $env:WEBHOOK_URL
|
||||
on_failure:
|
||||
- ps: Set-Location -Path $env:APPVEYOR_BUILD_FOLDER
|
||||
- ps: Push-AppveyorArtifact ${env:APPVEYOR_BUILD_FOLDER}\stdout.log
|
||||
- ps: Push-AppveyorArtifact ${env:APPVEYOR_BUILD_FOLDER}\stderr.log
|
||||
- ps: Invoke-RestMethod https://raw.githubusercontent.com/DiscordHooks/appveyor-discord-webhook/master/send.ps1 -o send.ps1
|
||||
- ps: ./send.ps1 failure $env:WEBHOOK_URL
|
||||
@@ -0,0 +1,65 @@
|
||||
CMAKE_MINIMUM_REQUIRED (VERSION 2.8.11)
|
||||
|
||||
CMAKE_POLICY(SET CMP0020 NEW)
|
||||
CMAKE_POLICY(SET CMP0043 NEW)
|
||||
|
||||
FILE(GLOB ${PROJ_NAME}_SRCS *.cpp)
|
||||
FILE(GLOB ${PROJ_NAME}_HDRS *.h)
|
||||
FILE(GLOB ${PROJ_NAME}_FORMS *.ui)
|
||||
|
||||
|
||||
SET(CMAKE_INCLUDE_CURRENT_DIR ON)
|
||||
SET(CMAKE_AUTOMOC ON)
|
||||
SET(CMAKE_AUTOUIC ON)
|
||||
FIND_PACKAGE(Qt5Widgets REQUIRED)
|
||||
FIND_PACKAGE(Qt5LinguistTools)
|
||||
QT5_WRAP_UI(${PROJ_NAME}_UIHDRS ${${PROJ_NAME}_FORMS})
|
||||
QT5_CREATE_TRANSLATION(${PROJ_NAME}_translations_qm ${CMAKE_SOURCE_DIR}/src ${CMAKE_SOURCE_DIR}/src/diagnose_basic_en.ts)
|
||||
|
||||
SET(Boost_USE_STATIC_LIBS ON)
|
||||
SET(Boost_USE_MULTITHREADED ON)
|
||||
SET(Boost_USE_STATIC_RUNTIME OFF)
|
||||
FIND_PACKAGE(Boost)
|
||||
|
||||
IF (Boost_FOUND)
|
||||
INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS})
|
||||
ENDIF (Boost_FOUND)
|
||||
|
||||
SET(default_project_path "${DEPENDENCIES_DIR}/modorganizer_super")
|
||||
GET_FILENAME_COMPONENT(${default_project_path} ${default_project_path} REALPATH)
|
||||
|
||||
SET(project_path "${default_project_path}" CACHE PATH "path to the other mo projects")
|
||||
SET(lib_path "${project_path}/../../install/libs")
|
||||
|
||||
INCLUDE_DIRECTORIES(${project_path}/uibase/src)
|
||||
LINK_DIRECTORIES(${lib_path})
|
||||
|
||||
ADD_DEFINITIONS(-DUNICODE -D_UNICODE)
|
||||
ADD_LIBRARY(${PROJ_NAME} SHARED ${${PROJ_NAME}_HDRS} ${${PROJ_NAME}_SRCS} ${${PROJ_NAME}_UIHDRS} ${${PROJ_NAME}_translations_qm})
|
||||
TARGET_LINK_LIBRARIES(${PROJ_NAME}
|
||||
Qt5::Widgets
|
||||
${Boost_LIBRARIES}
|
||||
uibase)
|
||||
|
||||
IF (MSVC)
|
||||
SET_TARGET_PROPERTIES(${PROJ_NAME} PROPERTIES COMPILE_FLAGS "/std:c++latest")
|
||||
ENDIF()
|
||||
IF (MSVC AND CMAKE_SIZEOF_VOID_P EQUAL 4)
|
||||
# 32 bits
|
||||
SET_TARGET_PROPERTIES(${PROJ_NAME} PROPERTIES LINK_FLAGS "/LARGEADDRESSAWARE")
|
||||
ENDIF()
|
||||
|
||||
IF (NOT "${OPTIMIZE_COMPILE_FLAGS}" STREQUAL "")
|
||||
SET_TARGET_PROPERTIES(${PROJ_NAME} PROPERTIES COMPILE_FLAGS_RELWITHDEBINFO ${OPTIMIZE_COMPILE_FLAGS})
|
||||
ENDIF()
|
||||
IF (NOT "${OPTIMIZE_LINK_FLAGS}" STREQUAL "")
|
||||
SET_TARGET_PROPERTIES(${PROJ_NAME} PROPERTIES LINK_FLAGS_RELWITHDEBINFO ${OPTIMIZE_LINK_FLAGS})
|
||||
ENDIF()
|
||||
|
||||
###############
|
||||
## Installation
|
||||
|
||||
INSTALL(TARGETS ${PROJ_NAME}
|
||||
RUNTIME DESTINATION bin/plugins)
|
||||
INSTALL(FILES $<TARGET_PDB_FILE:${PROJ_NAME}>
|
||||
DESTINATION pdb)
|
||||
@@ -0,0 +1,24 @@
|
||||
Import('qt_env')
|
||||
|
||||
env = qt_env.Clone()
|
||||
|
||||
env.AppendUnique(CPPDEFINES = [
|
||||
'DIAGNOSEBASIC_LIBRARY',
|
||||
'NOMINMAX',
|
||||
# suppress a few warnings caused by boost vs vc++ paranoia
|
||||
'_SCL_SECURE_NO_WARNINGS'
|
||||
])
|
||||
|
||||
# Boost produces very long names with msvc truncates. Doesn't seem to cause
|
||||
# problems.
|
||||
env.AppendUnique(CPPFLAGS = [ '-wd4503' ])
|
||||
|
||||
env.AppendUnique(CPPPATH = [
|
||||
'${BOOSTPATH}'
|
||||
])
|
||||
|
||||
lib = env.SharedLibrary('diagnoseBasic', env.Glob('*.cpp'))
|
||||
env.InstallModule(lib)
|
||||
|
||||
res = env['QT_USED_MODULES']
|
||||
Return('res')
|
||||
@@ -4,28 +4,32 @@
|
||||
#
|
||||
#-------------------------------------------------
|
||||
|
||||
QT -= gui
|
||||
|
||||
TARGET = diagnoseBasic
|
||||
TEMPLATE = lib
|
||||
|
||||
CONFIG += plugins
|
||||
CONFIG += dll
|
||||
|
||||
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
|
||||
|
||||
DEFINES += DIAGNOSEBASIC_LIBRARY
|
||||
DEFINES += NOMINMAX
|
||||
|
||||
# suppress a few warnings caused by boost vs vc++ paranoia
|
||||
DEFINES += _SCL_SECURE_NO_WARNINGS
|
||||
|
||||
SOURCES += diagnosebasic.cpp
|
||||
|
||||
HEADERS += diagnosebasic.h
|
||||
|
||||
include(../plugin_template.pri)
|
||||
|
||||
INCLUDEPATH += "$(BOOSTPATH)"
|
||||
INCLUDEPATH += "$${BOOSTPATH}"
|
||||
|
||||
#CONFIG += dll
|
||||
|
||||
#DEFINES += INIEDITOR_LIBRARY
|
||||
|
||||
OTHER_FILES += \
|
||||
diagnosebasic.json
|
||||
diagnosebasic.json\
|
||||
SConscript
|
||||
|
||||
File diff suppressed because one or more lines are too long
+696
-234
File diff suppressed because it is too large
Load Diff
+80
-2
@@ -1,3 +1,22 @@
|
||||
/*
|
||||
Copyright (C) 2013 Sebastian Herbord. All rights reserved.
|
||||
|
||||
This file is part of basic diagnosis plugin for MO
|
||||
|
||||
This plugin is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This plugin is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this plugin. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef DIAGNOSEBASIC_H
|
||||
#define DIAGNOSEBASIC_H
|
||||
|
||||
@@ -5,9 +24,12 @@
|
||||
#include <iplugin.h>
|
||||
#include <iplugindiagnose.h>
|
||||
#include <imoinfo.h>
|
||||
#include <imodlist.h>
|
||||
#include <QString>
|
||||
#include <QSet>
|
||||
|
||||
|
||||
class DiagnoseBasic : public QObject, MOBase::IPlugin, MOBase::IPluginDiagnose
|
||||
class DiagnoseBasic : public QObject, public MOBase::IPlugin, public MOBase::IPluginDiagnose
|
||||
{
|
||||
Q_OBJECT
|
||||
Q_INTERFACES(MOBase::IPlugin MOBase::IPluginDiagnose)
|
||||
@@ -43,6 +65,10 @@ private:
|
||||
bool overwriteFiles() const;
|
||||
bool invalidFontConfig() const;
|
||||
bool nitpickInstalled() const;
|
||||
bool assetOrder() const;
|
||||
bool missingMasters() const;
|
||||
bool alternateGame() const;
|
||||
bool fileAttributes(const QString &executable) const;
|
||||
|
||||
private:
|
||||
|
||||
@@ -50,13 +76,65 @@ private:
|
||||
static const unsigned int PROBLEM_OVERWRITE = 2;
|
||||
static const unsigned int PROBLEM_INVALIDFONT = 3;
|
||||
static const unsigned int PROBLEM_NITPICKINSTALLED = 4;
|
||||
static const unsigned int PROBLEM_PROFILETWEAKS = 7;
|
||||
static const unsigned int PROBLEM_MISSINGMASTERS = 8;
|
||||
static const unsigned int PROBLEM_ALTERNATE = 9;
|
||||
|
||||
static const unsigned int NUM_CONTEXT_ROWS = 5;
|
||||
|
||||
private:
|
||||
|
||||
const MOBase::IOrganizer *m_MOInfo;
|
||||
struct ListElement {
|
||||
QString espName;
|
||||
QString modName;
|
||||
int pluginPriority;
|
||||
int modPriority;
|
||||
int sortGroup;
|
||||
bool avoidMove;
|
||||
QSet<QString> relevantScripts;
|
||||
};
|
||||
|
||||
struct Move {
|
||||
ListElement item;
|
||||
ListElement reference;
|
||||
enum EType {
|
||||
BEFORE,
|
||||
AFTER
|
||||
} type;
|
||||
Move(const ListElement &initItem, const ListElement &initReference, EType initType)
|
||||
: item(initItem), reference(initReference), type(initType) {}
|
||||
};
|
||||
|
||||
struct Sorter {
|
||||
struct {
|
||||
int operator()(const ListElement &lhs, const ListElement &rhs)
|
||||
{
|
||||
return lhs.modPriority < rhs.modPriority;
|
||||
}
|
||||
} minMod;
|
||||
|
||||
std::vector<Move> moves;
|
||||
|
||||
void operator()(std::vector<ListElement> modList);
|
||||
private:
|
||||
void sortGroup(std::vector<ListElement> modList);
|
||||
};
|
||||
|
||||
|
||||
friend bool operator<(const Move &lhs, const Move &rhs);
|
||||
|
||||
private:
|
||||
|
||||
void topoSort(std::vector<ListElement> &list) const;
|
||||
bool checkEmpty(const QString &path) const;
|
||||
|
||||
private:
|
||||
|
||||
MOBase::IOrganizer *m_MOInfo;
|
||||
mutable QString m_ErrorMessage;
|
||||
mutable QString m_NewestModlistBackup;
|
||||
mutable std::set<QString> m_MissingMasters;
|
||||
mutable std::map<QString, std::set<QString>> m_PluginChildren;
|
||||
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user