mirror of
https://github.com/ModOrganizer2/modorganizer.git
synced 2026-07-27 13:58:24 -07:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ddf841400e | ||
|
|
1bfc91046b | ||
|
|
d417229e6b | ||
|
|
1d1cd36957 | ||
|
|
c037b74b00 | ||
|
|
5adb3b377e | ||
|
|
d4326250fb | ||
|
|
2d43645b64 | ||
|
|
9d260a43f6 | ||
|
|
9effaec234 | ||
|
|
502e950cde | ||
|
|
4908affbfc | ||
|
|
8dc51895e3 | ||
|
|
568b2abc12 | ||
|
|
c344714661 | ||
|
|
a3a4d5441d | ||
|
|
e60e2858d8 | ||
|
|
495846534d | ||
|
|
4a8c7306be | ||
|
|
7b087f8f9d | ||
|
|
eff0f46872 | ||
|
|
752bed064c | ||
|
|
750239bebb | ||
|
|
865c75a499 | ||
|
|
eca56079d5 | ||
|
|
e31cf3f2fd | ||
|
|
3670ab2528 | ||
|
|
235d893eb8 | ||
|
|
c2ed844eeb | ||
|
|
cb09ace972 | ||
|
|
0dedf5a875 | ||
|
|
ec9c78f8fa | ||
|
|
c07e48075e | ||
|
|
688e149c96 | ||
|
|
87d5fe28f6 | ||
|
|
ce38a3bd33 | ||
|
|
71b8c00592 | ||
|
|
20442cd4de | ||
|
|
c236078aa1 | ||
|
|
9a88a190eb | ||
|
|
d03e4f45ef | ||
|
|
9e2bcffc32 | ||
|
|
2e78a381ea | ||
|
|
bb56696f7e | ||
|
|
ca54ee2e9a | ||
|
|
2025145ff6 | ||
|
|
1b1fc247df | ||
|
|
dd37152eae | ||
|
|
82e6c98043 | ||
|
|
29dadf52f1 | ||
|
|
38c5899fef | ||
|
|
b9b12ca765 | ||
|
|
78b686b2bc | ||
|
|
42a68689fe | ||
|
|
c7d583bcf1 | ||
|
|
d6da51536f | ||
|
|
d4a287a4cc | ||
|
|
91576257bc | ||
|
|
a7ef089650 | ||
|
|
37c3bea7dd | ||
|
|
3659284ab6 | ||
|
|
2a50683133 | ||
|
|
efaba90706 | ||
|
|
159501d076 | ||
|
|
4dbb3b148d | ||
|
|
408b7933d2 | ||
|
|
efb54100dc | ||
|
|
f339cc8431 | ||
|
|
49de6e8d25 | ||
|
|
7f9af7f93e | ||
|
|
9ac845779a | ||
|
|
d1932bfc8e | ||
|
|
a284cbf232 | ||
|
|
fe54b6c46a | ||
|
|
d82ca00733 | ||
|
|
1a12b1f1f6 | ||
|
|
184cff8a77 | ||
|
|
f1aaf92afb | ||
|
|
8f64a1d136 | ||
|
|
b1cfc45853 | ||
|
|
76bee42dd1 | ||
|
|
0f8ae51459 | ||
|
|
dfdf80417e | ||
|
|
d4754f4d3c | ||
|
|
1cb0a49dfc | ||
|
|
9d88ca13b9 | ||
|
|
ca6d7c7d11 | ||
|
|
077a58f410 | ||
|
|
9d4b7a1df0 | ||
|
|
9a7b0ee2c7 | ||
|
|
f5c86bc22c | ||
|
|
2fb4917111 |
+170
-4
@@ -37,6 +37,14 @@ def setup_config_variables():
|
||||
if 'ZLIBPATH' in os.environ:
|
||||
zlibpath = os.environ['ZLIBPATH']
|
||||
|
||||
git = 'git'
|
||||
if 'GIT' in os.environ:
|
||||
git = os.environ['GIT']
|
||||
|
||||
mercurial = 'hg'
|
||||
if 'MERCURIAL' in os.environ:
|
||||
hg = os.environ['HG']
|
||||
|
||||
vars = Variables('scons_configure.py')
|
||||
vars.AddVariables(
|
||||
PathVariable('BOOSTPATH', 'Set to point to your boost directory',
|
||||
@@ -50,12 +58,14 @@ def setup_config_variables():
|
||||
PathVariable.PathIsDir),
|
||||
PathVariable('SEVENZIPPATH', 'Path to 7zip sources', sevenzippath,
|
||||
PathVariable.PathIsDir),
|
||||
PathVariable('ZLIBPATH', 'Path to zlib install', zlibpath,
|
||||
PathVariable.PathIsDir).
|
||||
PathVariable('ZLIBPATH', 'Path to zlib install', zlibpath,
|
||||
PathVariable.PathIsDir),
|
||||
PathVariable('ZLIBPATH', 'Path to zlib install', zlibpath,
|
||||
PathVariable.PathIsDir)
|
||||
PathVariable('GIT', 'Path to git executable', git,
|
||||
PathVariable.PathIsFile),
|
||||
PathVariable('MERCURIAL', 'Path to hg executable', mercurial,
|
||||
PathVariable.PathIsFile),
|
||||
PathVariable('IWYU', 'Path to include-what-you-use executable', None,
|
||||
PathVariable.PathIsFile)
|
||||
)
|
||||
|
||||
return vars
|
||||
@@ -235,6 +245,157 @@ def DisableQtModules(self, *modules):
|
||||
for module in modules:
|
||||
self['CPPPATH'].remove(os.path.join('$QTDIR', 'include', 'QT' + module))
|
||||
|
||||
def setup_IWYU(env):
|
||||
import SCons.Defaults
|
||||
import SCons.Builder
|
||||
original_shared = SCons.Defaults.SharedObjectEmitter
|
||||
original_static = SCons.Defaults.StaticObjectEmitter
|
||||
|
||||
def DoIWYU(env, source, target):
|
||||
for i in range(len(source)):
|
||||
s = source[i]
|
||||
dir, name = os.path.split(str(s)) # I'm sure theres a way of getting this from scons
|
||||
# Don't bother looking at moc files and 7zip source
|
||||
if not name.startswith('moc_') and \
|
||||
not dir.startswith(env['SEVENZIPPATH']):
|
||||
# Put the .iwyu in the same place as the .obj
|
||||
targ = os.path.splitext(str(target[i]))[0]
|
||||
env.Depends(env.IWYU(targ + '.iwyu', s), target[i])
|
||||
|
||||
def shared_emitter(target, source, env):
|
||||
DoIWYU(env, source, target)
|
||||
return original_shared(target, source, env)
|
||||
|
||||
def static_emitter(target, source, env):
|
||||
DoIWYU(env, source, target)
|
||||
return original_static(target, source, env)
|
||||
|
||||
SCons.Defaults.SharedObjectEmitter = shared_emitter
|
||||
SCons.Defaults.StaticObjectEmitter = static_emitter
|
||||
|
||||
def emitter(target, source, env):
|
||||
env.Depends(target, env['IWYU_MAPPING_FILE'])
|
||||
env.Depends(target, env['IWYU_MASSAGE'])
|
||||
return target, source
|
||||
|
||||
def _concat_list(prefixes, list, suffixes, env, f=lambda x: x, target=None, source=None):
|
||||
""" Creates a new list from 'list' by first interpolating each element
|
||||
in the list using the 'env' dictionary and then calling f on the
|
||||
list, and concatenate the 'prefix' and 'suffix' LISTS onto each element of the list.
|
||||
A trailing space on the last element of 'prefix' or leading space on the
|
||||
first element of 'suffix' will cause them to be put into separate list
|
||||
elements rather than being concatenated.
|
||||
"""
|
||||
|
||||
if not list:
|
||||
return list
|
||||
|
||||
l = f(SCons.PathList.PathList(list).subst_path(env, target, source))
|
||||
if l is not None:
|
||||
list = l
|
||||
|
||||
# This bit replaces current concat_ixes
|
||||
|
||||
result = []
|
||||
|
||||
def process_stringlist(s):
|
||||
return [ str(env.subst(p, SCons.Subst.SUBST_RAW))
|
||||
for p in Flatten([s]) if p != '' ]
|
||||
|
||||
# ensure that prefix and suffix are strings
|
||||
prefixes = process_stringlist(prefixes)
|
||||
prefix = ''
|
||||
if len(prefixes) != 0:
|
||||
if prefixes[-1][-1] != ' ':
|
||||
prefix = prefixes.pop()
|
||||
|
||||
suffixes = process_stringlist(suffixes)
|
||||
suffix = ''
|
||||
if len(suffixes) != 0:
|
||||
if suffixes[-1][0] != ' ':
|
||||
suffix = suffixes.pop(0)
|
||||
|
||||
for x in list:
|
||||
if isinstance(x, SCons.Node.FS.File):
|
||||
result.append(x)
|
||||
continue
|
||||
x = str(x)
|
||||
if x:
|
||||
result.append(prefixes)
|
||||
if prefix:
|
||||
if x[:len(prefix)] != prefix:
|
||||
x = prefix + x
|
||||
result.append(x)
|
||||
if suffix:
|
||||
if x[-len(suffix):] != suffix:
|
||||
result[-1] = result[-1] + suffix
|
||||
result.append(suffixes)
|
||||
return result
|
||||
|
||||
env['_concat_list'] = _concat_list
|
||||
# Note to self: command 2>&1 | other command appears to work as I would hope
|
||||
# except it eats errors
|
||||
iwyu = SCons.Builder.Builder(
|
||||
action=[
|
||||
'$IWYU_MASSAGE $TARGET $IWYU $IWYU_FLAGS $IWYU_MAPPINGS $IWYU_COMCOM $SOURCE'
|
||||
],
|
||||
emitter=emitter,
|
||||
suffix='.iwyu',
|
||||
src_suffix='.cpp')
|
||||
|
||||
env.Append(BUILDERS={'IWYU': iwyu})
|
||||
|
||||
# Sigh - IWYU is a right bum as it doesn't recognise /I so I have to
|
||||
# duplicate most of the usual stuff
|
||||
|
||||
env['IWYU_FLAGS'] = [
|
||||
# This might turn down the output a bit. I hope
|
||||
'-Xiwyu', '--transitive_includes_only',
|
||||
# Seem to be needed for a windows build
|
||||
'-D_MT', '-D_DLL', '-m32',
|
||||
# This is something to do with clang, windows and boost headers
|
||||
'-DBOOST_USE_WINDOWS_H',
|
||||
# There's a lot of this, disabled for now
|
||||
'-Wno-inconsistent-missing-override',
|
||||
# Mark boost and Qt headers as system headers to disable a lot of noise.
|
||||
# I'm sure there has to be a better way than saying 'prefix=Q'
|
||||
'--system-header-prefix=Q',
|
||||
'--system-header-prefix=boost/',
|
||||
# Should be able to get this info from our setup really
|
||||
'-fmsc-version=1800', '-D_MSC_VER=1800',
|
||||
# clang and qt don't agree about these because clang says its gcc 4.2
|
||||
# and QT doesn't realise it's clang
|
||||
'-DQ_COMPILER_INITIALIZER_LISTS',
|
||||
'-DQ_COMPILER_DECLTYPE',
|
||||
'-DQ_COMPILER_VARIADIC_TEMPLATES',
|
||||
]
|
||||
if env['CONFIG'] == 'debug':
|
||||
env['IWYU_FLAGS'] += [ '-D_DEBUG' ]
|
||||
|
||||
env['IWYU_DEFPREFIX'] = '-D'
|
||||
env['IWYU_DEFSUFFIX'] = ''
|
||||
env['IWYU_CPPDEFFLAGS'] = '${_defines(IWYU_DEFPREFIX, CPPDEFINES, IWYU_DEFSUFFIX, __env__)}'
|
||||
|
||||
env['IWYU_INCPREFIX'] = '-I'
|
||||
env['IWYU_INCSUFFIX'] = ''
|
||||
env['IWYU_CPPINCFLAGS'] = '$( ${_concat(IWYU_INCPREFIX, CPPPATH, IWYU_INCSUFFIX, __env__, RDirs, TARGET, SOURCE)} $)'
|
||||
|
||||
env['IWYU_PCH_PREFIX'] = '-include' # Amazingly this works without a space
|
||||
env['IWYU_PCH_SUFFIX'] = ''
|
||||
env['IWYU_PCHFILES'] = '$( ${_concat(IWYU_PCH_PREFIX, PCHSTOP, IWYU_PCH_SUFFIX, __env__, target=TARGET, source=SOURCE)} $)'
|
||||
|
||||
env['IWYU_COMCOM'] = '$IWYU_CPPDEFFLAGS $IWYU_CPPINCFLAGS $IWYU_PCHFILES $CCPDBFLAGS'
|
||||
env['IWYU_MAPPING_PREFIX'] = ['-Xiwyu', '--mapping_file=']
|
||||
env['IWYU_MAPPING_SUFFIX'] = ''
|
||||
env['IWYU_MAPPINGS'] = '$( ${_concat_list(IWYU_MAPPING_PREFIX, IWYU_MAPPING_FILE, IWYU_MAPPING_SUFFIX, __env__, f=lambda l: [ str(x) for x in l], target=TARGET, source=SOURCE)} $)'
|
||||
|
||||
env['IWYU_MAPPING_FILE'] = [
|
||||
env.File('#/modorganizer/qt5_4.imp'),
|
||||
env.File('#/modorganizer/win.imp'),
|
||||
env.File('#/modorganizer/mappings.imp')
|
||||
]
|
||||
|
||||
env['IWYU_MASSAGE'] = env.File('#/modorganizer/massage_messages.py')
|
||||
|
||||
# Create base environment
|
||||
vars = setup_config_variables()
|
||||
@@ -351,6 +512,11 @@ else:
|
||||
env.AppendUnique(CPPFLAGS = [ '/O2', '/MD' ])
|
||||
env.AppendUnique(LINKFLAGS = [ '/OPT:REF', '/OPT:ICF' ])
|
||||
|
||||
# Set up include what you use. Add this as an extra compile step. Note it
|
||||
# doesn't currently generate an output file (use the output instead!).
|
||||
if 'IWYU' in env:
|
||||
setup_IWYU(env)
|
||||
|
||||
# /OPT:REF removes unreferenced code
|
||||
# for release, use /OPT:ICF (comdat folding: coalesce identical blocks of code)
|
||||
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
[
|
||||
|
||||
# for boost???
|
||||
# These are probably correct but might need a revisit as if you look at the boost documentation pages, it
|
||||
# can give you huge lists of alternate includes...
|
||||
{ symbol: [ "BOOST_FOREACH", "private", "<boost/foreach.hpp>", "public" ] },
|
||||
|
||||
{ include: [ "@\"boost/bind/.*\"", "private", "<boost/bind.hpp>", "public" ] },
|
||||
{ include: [ "@\"boost/algorithm/string/.*\"", "private", "<boost/algorithm/string.hpp>", "public" ] },
|
||||
{ include: [ "@\"boost/assign/.*\"", "private", "<boost/assign.hpp>", "public" ] },
|
||||
{ include: [ "@\"boost/filesystem/.*\"", "private", "<boost/filesystem.hpp>", "public" ] },
|
||||
{ include: [ "@\"boost/format/.*\"", "private", "<boost/format.hpp>", "public" ] },
|
||||
{ include: [ "@\"boost/function/.*\"", "private", "<boost/function.hpp>", "public" ] },
|
||||
{ include: [ "@\"boost/local/.*\"", "private", "<boost/locale.hpp>", "public" ] },
|
||||
{ include: [ "@\"boost/python/.*\"", "private", "<boost/python.hpp>", "public" ] },
|
||||
{ include: [ "@\"boost/signals2/.*\"", "private", "<boost/signals2.hpp>", "public" ] },
|
||||
{ include: [ "\"boost/smart_ptr/scoped_array.hpp\"", "private", "<boost/scoped_array.hpp>", "public" ] },
|
||||
{ include: [ "\"boost/smart_ptr/shared_ptr.hpp\"", "private", "<boost/shared_ptr.hpp>", "public" ] },
|
||||
# this appears to be excessive
|
||||
#{ include: [ "@\"boost/thread/.*\"", "private", "<boost/thread.hpp>", "public" ] },
|
||||
|
||||
# And this is specific to us
|
||||
{ include: [ "\"appconfig.inc\"", "private", "\"appconfig.h\"", "public" ] },
|
||||
|
||||
]
|
||||
|
||||
# Ones I don't yet know how to deal with
|
||||
#include "boost/fusion/container/vector/vector10_fwd.hpp" // for fusion
|
||||
#include "boost/iterator/iterator_facade.hpp" // for operator!=
|
||||
#include "boost/iterator/iterator_facade.hpp"
|
||||
@@ -0,0 +1,149 @@
|
||||
from collections import defaultdict
|
||||
|
||||
import fileinput
|
||||
import re
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
|
||||
"""
|
||||
|
||||
source/organizer/aboutdialog.h should add these lines:
|
||||
#include <QObject> // for Q_OBJECT, slots
|
||||
#include <QString> // for QString
|
||||
class QListWidgetItem;
|
||||
class QWidget;
|
||||
|
||||
source/organizer/aboutdialog.h should remove these lines:
|
||||
- #include <QListWidgetItem> // lines 25-25
|
||||
- #include <utility> // lines 28-28
|
||||
- #include <vector> // lines 27-27
|
||||
- class DownloadManager; // lines 47-47
|
||||
|
||||
The full include-list for source/organizer/aboutdialog.h:
|
||||
#include <QDialog> // for QDialog
|
||||
#include <QObject> // for Q_OBJECT, slots
|
||||
#include <QString> // for QString
|
||||
#include <map> // for map
|
||||
class QListWidgetItem;
|
||||
class QWidget;
|
||||
namespace Ui { class AboutDialog; } // lines 31-31
|
||||
---
|
||||
"""
|
||||
|
||||
removing = None
|
||||
includes = dict()
|
||||
|
||||
adding = None
|
||||
added = dict()
|
||||
|
||||
foundline = None
|
||||
|
||||
errors = False
|
||||
|
||||
messages = defaultdict(list)
|
||||
|
||||
def process_next_line(line, outfile):
|
||||
""" Read a line of output/error from include-what-you use
|
||||
Turn clang errors into a form QT creator recognises
|
||||
Raise warnings for unneeded includes
|
||||
"""
|
||||
global removing
|
||||
global includes
|
||||
global foundline
|
||||
global errors
|
||||
global added
|
||||
global adding
|
||||
line = line.rstrip()
|
||||
print >> outfile, line
|
||||
|
||||
if line.endswith(' should remove these lines:'):
|
||||
adding = None
|
||||
removing = (line.split(' '))[0]
|
||||
elif line.endswith(' should add these lines:'):
|
||||
removing = None
|
||||
adding = (line.split(' '))[0]
|
||||
elif line == '' or line.startswith(' the full include-list'):
|
||||
adding = None
|
||||
removing = None
|
||||
elif adding:
|
||||
m = re.match(r'.*class (.*);', line)
|
||||
if m:
|
||||
added[m.group(1)] = (adding, line)
|
||||
else:
|
||||
added[line] = (adding, line)
|
||||
elif removing:
|
||||
# Really we should stash these so that if we get a 'class xxx' in
|
||||
# the add lines we can print it here. also we could do the case
|
||||
# fixing.
|
||||
m = re.match(r'- #include [<"](.*)[">] +// lines (.*)-', line)
|
||||
if m:
|
||||
foundline = m.group(2)
|
||||
if m.group(1) in added:
|
||||
messages[removing].append(
|
||||
'%s(%s) : warning I0004: Replace include of %s with '
|
||||
'forward reference %s' % (
|
||||
removing, m.group(2), m.group(1), added[m.group(1)][1]))
|
||||
del added[m.group(1)]
|
||||
else:
|
||||
messages[removing].append(
|
||||
'%s(%s) : warning I0001: Unnecessary include of %s' % (
|
||||
removing, m.group(2), m.group(1)))
|
||||
|
||||
else:
|
||||
m = re.match(r'- (.*) +// lines (.*)-', line)
|
||||
if m:
|
||||
messages[removing].append(
|
||||
'%s(%s) : warning I0002: Unnecessary forward ref of %s' % (
|
||||
removing, m.group(2), m.group(1)))
|
||||
else:
|
||||
print '********* I got confused **********'
|
||||
elif line.startswith('In file included from'):
|
||||
line = re.sub(r'^(In file included from)(.*):(\d+):',
|
||||
r' \2(\3) : \1 here',
|
||||
line)
|
||||
# Note; QT Creator seems to be unwilling to let you double click the
|
||||
# line to select the code in question if you get a string of these, not
|
||||
# sure why.
|
||||
elif ': note:' in line:
|
||||
line = ' ' + re.sub(r':(\d+):\d+: note:', r'(\1) : note:', line)
|
||||
else:
|
||||
# Replace clang :line:column: type: with ms (line) : type nnnn:
|
||||
line = re.sub(r':(\d+):\d+: ([^:]*):', r'(\1) : \2 I1234:', line)
|
||||
if ' : error I1234:' in line:
|
||||
errors = True
|
||||
|
||||
print line
|
||||
|
||||
outfile = open(sys.argv[1], 'w')
|
||||
process = subprocess.Popen(sys.argv[2:],
|
||||
stdout = subprocess.PIPE, stderr = subprocess.STDOUT)
|
||||
while True:
|
||||
output = process.stdout.readline()
|
||||
if output == '' and process.poll() is not None:
|
||||
break
|
||||
if output:
|
||||
process_next_line(output, outfile)
|
||||
|
||||
# A note: We should probably do some work as we use the source code line for
|
||||
# messages in include files...
|
||||
|
||||
if foundline is None:
|
||||
foundline = '1'
|
||||
|
||||
for add in added:
|
||||
messages[added[add][0]].append(
|
||||
'%s(%s) : warning I0003: Need to include %s' % (
|
||||
added[add][0], foundline, added[add][1]))
|
||||
|
||||
for file in sorted(messages.keys(), reverse = True):
|
||||
for line in messages[file]:
|
||||
print line
|
||||
|
||||
rc = process.poll()
|
||||
# The return code you get appears to be more to do with the amount of output
|
||||
# generated than any real error, so instead we should error if any ': error:'
|
||||
# lines are detected
|
||||
|
||||
if errors:
|
||||
sys.exit(1)
|
||||
@@ -20,7 +20,7 @@ Here is a complete list:
|
||||
* https://github.com/TanninOne/modorganizer-lootcli
|
||||
* https://github.com/TanninOne/modorganizer-helper
|
||||
* https://github.com/TanninOne/modorganizer-tool_nmmimport
|
||||
* https://github.com/TanninOne/modorganizer-tool_pyniedit
|
||||
* https://github.com/TanninOne/modorganizer-tool_configurator
|
||||
* https://github.com/TanninOne/modorganizer-tool_inieditor
|
||||
* https://github.com/TanninOne/modorganizer-preview_base
|
||||
* https://github.com/TanninOne/modorganizer-diagnose_basic
|
||||
@@ -32,9 +32,11 @@ Here is a complete list:
|
||||
* https://github.com/TanninOne/modorganizer-game_skyrim
|
||||
* https://github.com/TanninOne/modorganizer-game_oblivion
|
||||
* https://github.com/TanninOne/modorganizer-game_fallout3
|
||||
* https://github.com/TanninOne/modorganizer-game_fallout4
|
||||
* https://github.com/TanninOne/modorganizer-game_falloutnv
|
||||
* https://github.com/TanninOne/modorganizer-game_gamebryo
|
||||
* https://github.com/TanninOne/modorganizer-game_features
|
||||
* https://github.com/TanninOne/modorganizer-check_fnis
|
||||
* https://github.com/TanninOne/modorganizer-plugin_python
|
||||
* https://github.com/TanninOne/modorganizer-bsa_extractor
|
||||
* https://github.com/TanninOne/usvfs
|
||||
|
||||
+15
-6
@@ -35,6 +35,11 @@ SET(organizer_SRCS
|
||||
modlist.cpp
|
||||
modinfodialog.cpp
|
||||
modinfo.cpp
|
||||
modinfobackup.cpp
|
||||
modinfoforeign.cpp
|
||||
modinfooverwrite.cpp
|
||||
modinforegular.cpp
|
||||
modinfowithconflictinfo.cpp
|
||||
messagedialog.cpp
|
||||
mainwindow.cpp
|
||||
main.cpp
|
||||
@@ -61,7 +66,6 @@ SET(organizer_SRCS
|
||||
moapplication.cpp
|
||||
profileinputdialog.cpp
|
||||
icondelegate.cpp
|
||||
gameinfoimpl.cpp
|
||||
csvbuilder.cpp
|
||||
savetextasdialog.cpp
|
||||
qtgroupingproxy.cpp
|
||||
@@ -127,6 +131,11 @@ SET(organizer_HDRS
|
||||
modlist.h
|
||||
modinfodialog.h
|
||||
modinfo.h
|
||||
modinfobackup.h
|
||||
modinfoforeign.h
|
||||
modinfooverwrite.h
|
||||
modinforegular.h
|
||||
modinfowithconflictinfo.h
|
||||
messagedialog.h
|
||||
mainwindow.h
|
||||
loghighlighter.h
|
||||
@@ -152,7 +161,6 @@ SET(organizer_HDRS
|
||||
moapplication.h
|
||||
profileinputdialog.h
|
||||
icondelegate.h
|
||||
gameinfoimpl.h
|
||||
csvbuilder.h
|
||||
savetextasdialog.h
|
||||
qtgroupingproxy.h
|
||||
@@ -279,16 +287,17 @@ SET(project_path "${default_project_path}" CACHE PATH "path to the other mo proj
|
||||
SET(lib_path "${project_path}/../../install/libs")
|
||||
|
||||
|
||||
MESSAGE(STATUS ${lib_path})
|
||||
MESSAGE(STATUS ${project_path})
|
||||
|
||||
INCLUDE_DIRECTORIES(${project_path}/uibase/src
|
||||
${project_path}/bsatk/src
|
||||
${project_path}/esptk/src
|
||||
${project_path}/archive/src
|
||||
${project_path}/../usvfs/usvfs
|
||||
${project_path}/game_gamebryo/src
|
||||
${project_path}/game_features/src)
|
||||
|
||||
MESSAGE(STATUS ${project_path}/gameGamebryo/src)
|
||||
|
||||
|
||||
INCLUDE_DIRECTORIES(shared ${ZLIB_INCLUDE_DIRS})
|
||||
LINK_DIRECTORIES(${lib_path}
|
||||
${project_path}/../zlib/lib)
|
||||
@@ -312,7 +321,7 @@ TARGET_LINK_LIBRARIES(ModOrganizer
|
||||
|
||||
SET_TARGET_PROPERTIES(ModOrganizer PROPERTIES COMPILE_FLAGS /GL)
|
||||
SET_TARGET_PROPERTIES(ModOrganizer PROPERTIES LINK_FLAGS_RELWITHDEBINFO
|
||||
"/LTCG /INCREMENTAL:NO /LARGEADDRESSAWARE /OPT:REF /OPT:ICF")
|
||||
"/LARGEADDRESSAWARE ${OPTIMIZE_LINK_FLAGS}")
|
||||
|
||||
|
||||
QT5_USE_MODULES(ModOrganizer Widgets Declarative Network WebKitWidgets)
|
||||
|
||||
+14
-4
@@ -67,7 +67,6 @@ env.Uic(env.Glob('*.ui'))
|
||||
|
||||
env.RequireLibraries('uibase', 'shared', 'bsatk', 'esptk')
|
||||
|
||||
|
||||
env.AppendUnique(LIBS = [
|
||||
'shell32',
|
||||
'user32',
|
||||
@@ -96,6 +95,12 @@ env['CPPPATH'] += [
|
||||
'${BOOSTPATH}',
|
||||
]
|
||||
|
||||
#########################FUDGE###############################
|
||||
env['CPPPATH'] += [
|
||||
'../plugins/gameGamebryo',
|
||||
]
|
||||
#############################################################
|
||||
|
||||
env.AppendUnique(CPPDEFINES = [
|
||||
'_UNICODE',
|
||||
'_CRT_SECURE_NO_WARNINGS',
|
||||
@@ -105,7 +110,11 @@ env.AppendUnique(CPPDEFINES = [
|
||||
'QT_MESSAGELOGCONTEXT'
|
||||
])
|
||||
|
||||
env.AppendUnique(CPPFLAGS = [ '-wd4100', '-wd4127', '-wd4512', '-wd4189' ])
|
||||
# Boost produces very long names with msvc truncates. Doesn't seem to cause
|
||||
# problems.
|
||||
# Also note to remove the -wd4100 I hacked the boost headers (tagged_argument.hpp)
|
||||
# appropriately.
|
||||
env.AppendUnique(CPPFLAGS = [ '-wd4503' ])
|
||||
|
||||
env.AppendUnique(LINKFLAGS = [
|
||||
'/SUBSYSTEM:WINDOWS',
|
||||
@@ -114,8 +123,9 @@ env.AppendUnique(LINKFLAGS = [
|
||||
|
||||
# modeltest is optional and it doesn't compile anyway...
|
||||
cpp_files = [
|
||||
x for x in Glob('*.cpp')
|
||||
if x.name != 'modeltest.cpp' and x.name != 'aboutdialog.cpp'
|
||||
x for x in env.Glob('*.cpp', source = True)
|
||||
if x.name != 'modeltest.cpp' and x.name != 'aboutdialog.cpp' and \
|
||||
not x.name.startswith('moc_') # I think this is a strange bug
|
||||
]
|
||||
|
||||
about_env = env.Clone()
|
||||
|
||||
+1
-3
@@ -21,8 +21,6 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
#include <QRegExp>
|
||||
#include <map>
|
||||
#include <algorithm>
|
||||
#include <boost/assign.hpp>
|
||||
|
||||
|
||||
namespace BBCode {
|
||||
@@ -80,7 +78,7 @@ public:
|
||||
if (tagName == "color") {
|
||||
QString color = tagIter->second.first.cap(1);
|
||||
QString content = tagIter->second.first.cap(2);
|
||||
if (color.at(0) == "#") {
|
||||
if (color.at(0) == '#') {
|
||||
return temp.replace(tagIter->second.first, QString("<font style=\"color: %1;\">%2</font>").arg(color, content));
|
||||
} else {
|
||||
auto colIter = m_ColorMap.find(color.toLower());
|
||||
|
||||
@@ -18,18 +18,16 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "browserdialog.h"
|
||||
|
||||
#include "ui_browserdialog.h"
|
||||
#include "browserview.h"
|
||||
|
||||
#include "messagedialog.h"
|
||||
#include "report.h"
|
||||
#include "persistentcookiejar.h"
|
||||
|
||||
#include "json.h"
|
||||
|
||||
#include <utility.h>
|
||||
#include <gameinfo.h>
|
||||
#include "settings.h"
|
||||
|
||||
#include <QNetworkCookieJar>
|
||||
#include <QNetworkCookie>
|
||||
#include <QMenu>
|
||||
|
||||
+3
-1
@@ -21,9 +21,11 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>.
|
||||
#define NEXUSVIEW_H
|
||||
|
||||
|
||||
class QEvent;
|
||||
class QUrl;
|
||||
class QWidget;
|
||||
#include <QWebView>
|
||||
#include <QWebPage>
|
||||
#include <QTabWidget>
|
||||
|
||||
/**
|
||||
* @brief web view used to display a nexus page
|
||||
|
||||
+5
-3
@@ -18,9 +18,10 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "categories.h"
|
||||
|
||||
#include <utility.h>
|
||||
#include <report.h>
|
||||
#include <gameinfo.h>
|
||||
|
||||
#include <QObject>
|
||||
#include <QFile>
|
||||
#include <QDir>
|
||||
@@ -29,7 +30,6 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
using namespace MOBase;
|
||||
using namespace MOShared;
|
||||
|
||||
|
||||
CategoryFactory* CategoryFactory::s_Instance = nullptr;
|
||||
@@ -317,9 +317,11 @@ int CategoryFactory::getCategoryIndex(int ID) const
|
||||
|
||||
int CategoryFactory::getCategoryID(const QString &name) const
|
||||
{
|
||||
auto iter = std::find_if(m_Categories.begin(), m_Categories.end(), [name] (const Category &cat) -> bool {
|
||||
auto iter = std::find_if(m_Categories.begin(), m_Categories.end(),
|
||||
[name] (const Category &cat) -> bool {
|
||||
return cat.m_Name == name;
|
||||
});
|
||||
|
||||
if (iter != m_Categories.end()) {
|
||||
return iter->m_ID;
|
||||
} else {
|
||||
|
||||
@@ -18,10 +18,13 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "directoryrefresher.h"
|
||||
|
||||
#include "iplugingame.h"
|
||||
#include "utility.h"
|
||||
#include "report.h"
|
||||
#include "modinfo.h"
|
||||
#include <gameinfo.h>
|
||||
|
||||
#include <QApplication>
|
||||
#include <QDir>
|
||||
#include <QString>
|
||||
|
||||
@@ -141,7 +144,9 @@ void DirectoryRefresher::refresh()
|
||||
|
||||
m_DirectoryStructure = new DirectoryEntry(L"data", nullptr, 0);
|
||||
|
||||
std::wstring dataDirectory = GameInfo::instance().getGameDirectory() + L"\\data";
|
||||
IPluginGame *game = qApp->property("managed_game").value<IPluginGame*>();
|
||||
|
||||
std::wstring dataDirectory = QDir::toNativeSeparators(game->dataDirectory().absolutePath()).toStdWString();
|
||||
m_DirectoryStructure->addFromOrigin(L"data", dataDirectory, 0);
|
||||
|
||||
// TODO what was the point of having the priority in this tuple? the list is already sorted by priority
|
||||
|
||||
+20
-7
@@ -18,18 +18,19 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "downloadmanager.h"
|
||||
|
||||
#include "nxmurl.h"
|
||||
#include "nexusinterface.h"
|
||||
#include "nxmaccessmanager.h"
|
||||
#include <gameinfo.h>
|
||||
#include "iplugingame.h"
|
||||
#include <nxmurl.h>
|
||||
#include <taskprogressmanager.h>
|
||||
#include "utility.h"
|
||||
#include "json.h"
|
||||
#include "selectiondialog.h"
|
||||
#include "bbcode.h"
|
||||
#include <utility.h>
|
||||
#include <report.h>
|
||||
|
||||
#include <QTimer>
|
||||
#include <QFileInfo>
|
||||
#include <QRegExp>
|
||||
@@ -37,6 +38,8 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>.
|
||||
#include <QInputDialog>
|
||||
#include <QMessageBox>
|
||||
#include <QCoreApplication>
|
||||
#include <QTextDocument>
|
||||
|
||||
#include <boost/bind.hpp>
|
||||
#include <regex>
|
||||
|
||||
@@ -447,7 +450,7 @@ void DownloadManager::addNXMDownload(const QString &url)
|
||||
{
|
||||
NXMUrl nxmInfo(url);
|
||||
|
||||
QString managedGame = ToQString(MOShared::GameInfo::instance().getGameShortName());
|
||||
QString managedGame = m_ManagedGame->gameShortName();
|
||||
qDebug("add nxm download: %s", qPrintable(url));
|
||||
if (nxmInfo.game().compare(managedGame, Qt::CaseInsensitive) != 0) {
|
||||
qDebug("download requested for wrong game (game: %s, url: %s)", qPrintable(managedGame), qPrintable(nxmInfo.game()));
|
||||
@@ -909,10 +912,10 @@ QString DownloadManager::getDownloadFileName(const QString &baseName) const
|
||||
QString DownloadManager::getFileNameFromNetworkReply(QNetworkReply *reply)
|
||||
{
|
||||
if (reply->hasRawHeader("Content-Disposition")) {
|
||||
std::tr1::regex exp("filename=\"(.*)\"");
|
||||
std::regex exp("filename=\"(.*)\"");
|
||||
|
||||
std::tr1::cmatch result;
|
||||
if (std::tr1::regex_search(reply->rawHeader("Content-Disposition").constData(), result, exp)) {
|
||||
std::cmatch result;
|
||||
if (std::regex_search(reply->rawHeader("Content-Disposition").constData(), result, exp)) {
|
||||
return QString::fromUtf8(result.str(1).c_str());
|
||||
}
|
||||
}
|
||||
@@ -1128,6 +1131,12 @@ void DownloadManager::nxmFilesAvailable(int, QVariant userData, QVariant resultD
|
||||
if (!info->m_FileInfo->version.isValid()) {
|
||||
info->m_FileInfo->version = info->m_FileInfo->newestVersion;
|
||||
}
|
||||
//Nexus has HTMLd these so unhtml them if necessary
|
||||
QTextDocument doc;
|
||||
doc.setHtml(info->m_FileInfo->modName);
|
||||
info->m_FileInfo->modName = doc.toPlainText();
|
||||
doc.setHtml(info->m_FileInfo->name);
|
||||
info->m_FileInfo->name = doc.toPlainText();
|
||||
info->m_FileInfo->fileCategory = convertFileCategory(fileInfo["category_id"].toInt());
|
||||
info->m_FileInfo->fileTime = matchDate(fileInfo["date"].toString());
|
||||
info->m_FileInfo->fileID = fileInfo["id"].toInt();
|
||||
@@ -1238,7 +1247,7 @@ int DownloadManager::startDownloadURLs(const QStringList &urls)
|
||||
int DownloadManager::startDownloadNexusFile(int modID, int fileID)
|
||||
{
|
||||
int newID = m_ActiveDownloads.size();
|
||||
addNXMDownload(QString("nxm://%1/mods/%2/files/%3").arg(ToQString(MOShared::GameInfo::instance().getGameName())).arg(modID).arg(fileID));
|
||||
addNXMDownload(QString("nxm://%1/mods/%2/files/%3").arg(m_ManagedGame->getGameShortName()).arg(modID).arg(fileID));
|
||||
return newID;
|
||||
}
|
||||
|
||||
@@ -1461,3 +1470,7 @@ void DownloadManager::directoryChanged(const QString&)
|
||||
refreshList();
|
||||
}
|
||||
|
||||
void DownloadManager::managedGameChanged(MOBase::IPluginGame const *managedGame)
|
||||
{
|
||||
m_ManagedGame = managedGame;
|
||||
}
|
||||
|
||||
@@ -35,6 +35,7 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>.
|
||||
#include <QFileSystemWatcher>
|
||||
#include <QSettings>
|
||||
|
||||
namespace MOBase { class IPluginGame; }
|
||||
|
||||
class NexusInterface;
|
||||
|
||||
@@ -328,7 +329,9 @@ public:
|
||||
|
||||
|
||||
virtual int startDownloadURLs(const QStringList &urls);
|
||||
|
||||
virtual int startDownloadNexusFile(int modID, int fileID);
|
||||
|
||||
virtual QString downloadPath(int id);
|
||||
|
||||
/**
|
||||
@@ -414,6 +417,8 @@ public slots:
|
||||
|
||||
void nxmRequestFailed(int modID, int fileID, QVariant userData, int requestID, const QString &errorString);
|
||||
|
||||
void managedGameChanged(MOBase::IPluginGame const *gamePlugin);
|
||||
|
||||
private slots:
|
||||
|
||||
void downloadProgress(qint64 bytesReceived, qint64 bytesTotal);
|
||||
@@ -501,6 +506,7 @@ private:
|
||||
|
||||
QRegExp m_DateExpression;
|
||||
|
||||
MOBase::IPluginGame const *m_ManagedGame;
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -85,7 +85,6 @@ void EditExecutablesDialog::resetInput()
|
||||
ui->argumentsEdit->setText("");
|
||||
ui->appIDOverwriteEdit->clear();
|
||||
ui->overwriteAppIDBox->setChecked(false);
|
||||
ui->closeCheckBox->setChecked(false);
|
||||
ui->useAppIconCheckBox->setChecked(false);
|
||||
m_CurrentItem = nullptr;
|
||||
}
|
||||
@@ -97,9 +96,6 @@ void EditExecutablesDialog::saveExecutable()
|
||||
QDir::fromNativeSeparators(ui->binaryEdit->text()),
|
||||
ui->argumentsEdit->text(),
|
||||
QDir::fromNativeSeparators(ui->workingDirEdit->text()),
|
||||
(ui->closeCheckBox->checkState() == Qt::Checked) ?
|
||||
ExecutableInfo::CloseMOStyle::DEFAULT_CLOSE
|
||||
: ExecutableInfo::CloseMOStyle::DEFAULT_STAY,
|
||||
ui->overwriteAppIDBox->isChecked() ?
|
||||
ui->appIDOverwriteEdit->text() : "",
|
||||
Executable::UseApplicationIcon | Executable::CustomExecutable,
|
||||
@@ -218,7 +214,6 @@ bool EditExecutablesDialog::executableChanged()
|
||||
|| selectedExecutable.m_SteamAppID != ui->appIDOverwriteEdit->text()
|
||||
|| selectedExecutable.m_WorkingDirectory != QDir::fromNativeSeparators(ui->workingDirEdit->text())
|
||||
|| selectedExecutable.m_BinaryInfo.absoluteFilePath() != QDir::fromNativeSeparators(ui->binaryEdit->text())
|
||||
|| (selectedExecutable.m_CloseMO == ExecutableInfo::CloseMOStyle::DEFAULT_CLOSE) != ui->closeCheckBox->isChecked()
|
||||
|| selectedExecutable.usesOwnIcon() != ui->useAppIconCheckBox->isChecked();
|
||||
} else {
|
||||
QFileInfo fileInfo(ui->binaryEdit->text());
|
||||
@@ -291,14 +286,6 @@ void EditExecutablesDialog::on_executablesListBox_clicked(const QModelIndex &cur
|
||||
ui->binaryEdit->setText(QDir::toNativeSeparators(selectedExecutable.m_BinaryInfo.absoluteFilePath()));
|
||||
ui->argumentsEdit->setText(selectedExecutable.m_Arguments);
|
||||
ui->workingDirEdit->setText(QDir::toNativeSeparators(selectedExecutable.m_WorkingDirectory));
|
||||
ui->closeCheckBox->setChecked(selectedExecutable.m_CloseMO == ExecutableInfo::CloseMOStyle::DEFAULT_CLOSE);
|
||||
if (selectedExecutable.m_CloseMO == ExecutableInfo::CloseMOStyle::NEVER_CLOSE) {
|
||||
ui->closeCheckBox->setEnabled(false);
|
||||
ui->closeCheckBox->setToolTip(tr("MO must be kept running or this application will not work correctly."));
|
||||
} else {
|
||||
ui->closeCheckBox->setEnabled(true);
|
||||
ui->closeCheckBox->setToolTip(tr("If checked, MO will be closed once the specified executable is run."));
|
||||
}
|
||||
ui->removeButton->setEnabled(selectedExecutable.isCustom());
|
||||
ui->overwriteAppIDBox->setChecked(!selectedExecutable.m_SteamAppID.isEmpty());
|
||||
if (!selectedExecutable.m_SteamAppID.isEmpty()) {
|
||||
|
||||
@@ -164,19 +164,6 @@ Right now the only case I know of where this needs to be overwritten is for the
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="closeCheckBox">
|
||||
<property name="toolTip">
|
||||
<string>If checked, MO will be closed once the specified executable is run.</string>
|
||||
</property>
|
||||
<property name="whatsThis">
|
||||
<string>If checked, MO will be closed once the specified executable is run.</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Close MO when started</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="useAppIconCheckBox">
|
||||
<property name="text">
|
||||
@@ -247,10 +234,6 @@ Right now the only case I know of where this needs to be overwritten is for the
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
<zorder>executablesListBox</zorder>
|
||||
<zorder>closeButton</zorder>
|
||||
<zorder>closeCheckBox</zorder>
|
||||
<zorder>useAppIconCheckBox</zorder>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
|
||||
+7
-10
@@ -18,16 +18,18 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "executableslist.h"
|
||||
#include <gameinfo.h>
|
||||
|
||||
#include "iplugingame.h"
|
||||
#include "utility.h"
|
||||
|
||||
#include <QFileInfo>
|
||||
#include <QDir>
|
||||
#include <QDebug>
|
||||
#include "utility.h"
|
||||
|
||||
#include <algorithm>
|
||||
|
||||
|
||||
using namespace MOBase;
|
||||
using namespace MOShared;
|
||||
|
||||
|
||||
ExecutablesList::ExecutablesList()
|
||||
@@ -38,7 +40,7 @@ ExecutablesList::~ExecutablesList()
|
||||
{
|
||||
}
|
||||
|
||||
void ExecutablesList::init(IPluginGame *game)
|
||||
void ExecutablesList::init(IPluginGame const *game)
|
||||
{
|
||||
Q_ASSERT(game != nullptr);
|
||||
m_Executables.clear();
|
||||
@@ -48,7 +50,6 @@ void ExecutablesList::init(IPluginGame *game)
|
||||
info.binary().absoluteFilePath(),
|
||||
info.arguments().join(" "),
|
||||
info.workingDirectory().absolutePath(),
|
||||
info.closeMO(),
|
||||
info.steamAppID());
|
||||
}
|
||||
}
|
||||
@@ -133,7 +134,6 @@ void ExecutablesList::updateExecutable(const QString &title,
|
||||
const QString &executableName,
|
||||
const QString &arguments,
|
||||
const QString &workingDirectory,
|
||||
ExecutableInfo::CloseMOStyle closeMO,
|
||||
const QString &steamAppID,
|
||||
Executable::Flags mask,
|
||||
Executable::Flags flags)
|
||||
@@ -144,7 +144,6 @@ void ExecutablesList::updateExecutable(const QString &title,
|
||||
|
||||
if (existingExe != m_Executables.end()) {
|
||||
existingExe->m_Title = title;
|
||||
existingExe->m_CloseMO = closeMO;
|
||||
existingExe->m_Flags &= ~mask;
|
||||
existingExe->m_Flags |= flags;
|
||||
// for pre-configured executables don't overwrite settings we didn't store
|
||||
@@ -160,7 +159,6 @@ void ExecutablesList::updateExecutable(const QString &title,
|
||||
} else {
|
||||
Executable newExe;
|
||||
newExe.m_Title = title;
|
||||
newExe.m_CloseMO = closeMO;
|
||||
newExe.m_BinaryInfo = file;
|
||||
newExe.m_Arguments = arguments;
|
||||
newExe.m_WorkingDirectory = workingDirectory;
|
||||
@@ -184,12 +182,11 @@ void ExecutablesList::remove(const QString &title)
|
||||
|
||||
void ExecutablesList::addExecutableInternal(const QString &title, const QString &executableName,
|
||||
const QString &arguments, const QString &workingDirectory,
|
||||
ExecutableInfo::CloseMOStyle closeMO, const QString &steamAppID)
|
||||
const QString &steamAppID)
|
||||
{
|
||||
QFileInfo file(executableName);
|
||||
if (file.exists()) {
|
||||
Executable newExe;
|
||||
newExe.m_CloseMO = closeMO;
|
||||
newExe.m_BinaryInfo = file;
|
||||
newExe.m_Title = title;
|
||||
newExe.m_Arguments = arguments;
|
||||
|
||||
@@ -20,13 +20,14 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>.
|
||||
#ifndef EXECUTABLESLIST_H
|
||||
#define EXECUTABLESLIST_H
|
||||
|
||||
#include "executableinfo.h"
|
||||
|
||||
#include <vector>
|
||||
|
||||
#include <QFileInfo>
|
||||
#include <QMetaType>
|
||||
#include <gameinfo.h>
|
||||
#include <iplugingame.h>
|
||||
|
||||
namespace MOBase { class IPluginGame; }
|
||||
|
||||
/*!
|
||||
* @brief Information about an executable
|
||||
@@ -35,7 +36,6 @@ struct Executable {
|
||||
QString m_Title;
|
||||
QFileInfo m_BinaryInfo;
|
||||
QString m_Arguments;
|
||||
MOBase::ExecutableInfo::CloseMOStyle m_CloseMO;
|
||||
QString m_SteamAppID;
|
||||
QString m_WorkingDirectory;
|
||||
|
||||
@@ -78,7 +78,7 @@ public:
|
||||
/**
|
||||
* @brief initialise the list with the executables preconfigured for this game
|
||||
**/
|
||||
void init(MOBase::IPluginGame *game);
|
||||
void init(MOBase::IPluginGame const *game);
|
||||
|
||||
/**
|
||||
* @brief find an executable by its name
|
||||
@@ -125,17 +125,15 @@ public:
|
||||
* @param title name displayed in the UI
|
||||
* @param executableName the actual filename to execute
|
||||
* @param arguments arguments to pass to the executable
|
||||
* @param closeMO if true, MO will be closed when the binary is started
|
||||
**/
|
||||
void addExecutable(const QString &title,
|
||||
const QString &executableName,
|
||||
const QString &arguments,
|
||||
const QString &workingDirectory,
|
||||
MOBase::ExecutableInfo::CloseMOStyle closeMO,
|
||||
const QString &steamAppID,
|
||||
Executable::Flags flags)
|
||||
{
|
||||
updateExecutable(title, executableName, arguments, workingDirectory, closeMO, steamAppID, Executable::AllFlags, flags);
|
||||
updateExecutable(title, executableName, arguments, workingDirectory, steamAppID, Executable::AllFlags, flags);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -150,7 +148,6 @@ public:
|
||||
const QString &executableName,
|
||||
const QString &arguments,
|
||||
const QString &workingDirectory,
|
||||
MOBase::ExecutableInfo::CloseMOStyle closeMO,
|
||||
const QString &steamAppID,
|
||||
Executable::Flags mask,
|
||||
Executable::Flags flags);
|
||||
@@ -191,7 +188,7 @@ private:
|
||||
std::vector<Executable>::iterator findExe(const QString &title);
|
||||
|
||||
void addExecutableInternal(const QString &title, const QString &executableName, const QString &arguments,
|
||||
const QString &workingDirectory, MOBase::ExecutableInfo::CloseMOStyle closeMO,
|
||||
const QString &workingDirectory,
|
||||
const QString &steamAppID);
|
||||
|
||||
private:
|
||||
|
||||
@@ -1,39 +0,0 @@
|
||||
/*
|
||||
Copyright (C) 2012 Sebastian Herbord. All rights reserved.
|
||||
|
||||
This file is part of Mod Organizer.
|
||||
|
||||
Mod Organizer 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.
|
||||
|
||||
Mod Organizer 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 Mod Organizer. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef GAMEINFOIMPL_H
|
||||
#define GAMEINFOIMPL_H
|
||||
|
||||
|
||||
#include <igameinfo.h>
|
||||
#include <QString>
|
||||
|
||||
|
||||
class GameInfoImpl : public MOBase::IGameInfo
|
||||
{
|
||||
public:
|
||||
GameInfoImpl();
|
||||
|
||||
virtual Type type() const;
|
||||
virtual QString path() const;
|
||||
virtual QString binaryName() const;
|
||||
|
||||
};
|
||||
|
||||
#endif // GAMEINFOIMPL_H
|
||||
+1
-1
@@ -21,7 +21,7 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>.
|
||||
#define HELPER_H
|
||||
|
||||
|
||||
#include <QString>
|
||||
#include <string>
|
||||
|
||||
|
||||
/**
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user