diff --git a/.gitignore b/.gitignore
index 0b35ab2e68..3cc8a1d8a4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -27,9 +27,7 @@ obj/
[Rr]elease*/
_ReSharper*/
[Tt]est[Rr]esult*
-Binary/Win32
-Binary/x64
-Binary/Darwin*
+Binary
Source/Core/Common/Src/scmrev.h
*.opensdf
*.sdf
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 7d472b114d..b4c00d4dbb 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -2,6 +2,17 @@
# General setup
#
cmake_minimum_required(VERSION 2.6)
+
+# Update compiler before calling project()
+if (APPLE)
+ # Use clang compiler
+ set(CMAKE_C_COMPILER "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang")
+ set(CMAKE_CXX_COMPILER "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++")
+ if (NOT EXISTS "${CMAKE_CXX_COMPILER}")
+ set(CMAKE_C_COMPILER "clang")
+ set(CMAKE_CXX_COMPILER "clang++")
+ endif()
+endif()
project(dolphin-emu)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/CMakeTests)
set(DOLPHIN_IS_STABLE FALSE)
@@ -114,7 +125,7 @@ if(UNIX AND NOT APPLE)
endif(VISIBILITY_HIDDEN)
endif()
-if (APPLE)
+if(APPLE)
# Ignore MacPorts and Fink and any other locally installed packages that
# might prevent building a distributable binary.
set(CMAKE_SYSTEM_PREFIX_PATH /usr)
@@ -135,8 +146,17 @@ if (APPLE)
# features can be used, not the minimum required version to run.
set(OSX_MIN_VERSION "10.5.4")
set(TARGET_FLAGS "${TARGET_FLAGS} -mmacosx-version-min=${OSX_MIN_VERSION}")
- set(TARGET_FLAGS "${TARGET_FLAGS} -isysroot /Developer/SDKs/MacOSX10.6.sdk")
- set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-syslibroot,/Developer/SDKs/MacOSX10.6.sdk")
+ set(SYSROOT_LEGACY_PATH "/Developer/SDKs/MacOSX10.6.sdk")
+ set(SYSROOT_PATH "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.6.sdk")
+ if(EXISTS "${SYSROOT_PATH}/")
+ set(TARGET_SYSROOT ${SYSROOT_PATH})
+ elseif(EXISTS "${SYSROOT_LEGACY_PATH}/")
+ set(TARGET_SYSROOT ${SYSROOT_LEGACY_PATH})
+ endif()
+ if(${TARGET_SYSROOT})
+ set(TARGET_FLAGS "${TARGET_FLAGS} -isysroot ${TARGET_SYSROOT}")
+ set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-syslibroot,${TARGET_SYSROOT}")
+ endif()
# Do not warn about frameworks that are not available on all architectures.
# This avoids a warning when linking with QuickTime.
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-no_arch_warnings")
@@ -459,10 +479,8 @@ endif()
option(DISABLE_WX "Disable wxWidgets (use CLI interface)" OFF)
if(NOT DISABLE_WX)
- if(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
- include(FindwxWidgets OPTIONAL)
- FIND_PACKAGE(wxWidgets COMPONENTS core aui adv)
- endif()
+ include(FindwxWidgets OPTIONAL)
+ FIND_PACKAGE(wxWidgets COMPONENTS core aui adv)
if(wxWidgets_FOUND)
EXECUTE_PROCESS(
@@ -473,53 +491,66 @@ if(NOT DISABLE_WX)
ERROR_QUIET
)
message("Found wxWidgets version ${wxWidgets_VERSION}")
- if(${wxWidgets_VERSION} VERSION_LESS "2.8.9")
- message("At least 2.8.9 is required; ignoring found version")
+ if(UNIX AND NOT APPLE)
+ set(wxMIN_VERSION "2.9.3")
+ else()
+ set(wxMIN_VERSION "2.9.4")
+ endif()
+ if(${wxWidgets_VERSION} VERSION_LESS ${wxMIN_VERSION})
+ message("At least ${wxMIN_VERSION} is required; ignoring found version")
unset(wxWidgets_FOUND)
endif()
endif(wxWidgets_FOUND)
-
- if(wxWidgets_FOUND)
- include(${wxWidgets_USE_FILE})
- if(UNIX AND NOT APPLE)
- # There is a bug in the FindGTK module in cmake version 2.8.2 that
- # does not find gdk-pixbuf-2.0. On the other hand some 2.8.3
- # users have complained that pkg-config does not find
- # gdk-pixbuf-2.0. On yet another hand, cmake version 2.8.3 in
- # Ubuntu Natty does not find the glib libraries correctly.
- # Ugly!!!
- execute_process(COMMAND lsb_release -c -s
- OUTPUT_VARIABLE DIST_NAME
- ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
- if(${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.${CMAKE_PATCH_VERSION}
- VERSION_EQUAL 2.8.2 OR "${DIST_NAME}" STREQUAL "natty")
- check_lib(GTK2 gtk+-2.0 gtk.h REQUIRED)
- else()
- include(FindGTK2)
- if(GTK2_FOUND)
- include_directories(${GTK2_INCLUDE_DIRS})
- endif()
+ if(UNIX AND NOT APPLE)
+ # There is a bug in the FindGTK module in cmake version 2.8.2 that
+ # does not find gdk-pixbuf-2.0. On the other hand some 2.8.3
+ # users have complained that pkg-config does not find
+ # gdk-pixbuf-2.0. On yet another hand, cmake version 2.8.3 in
+ # Ubuntu Natty does not find the glib libraries correctly.
+ # Ugly!!!
+ execute_process(COMMAND lsb_release -c -s
+ OUTPUT_VARIABLE DIST_NAME
+ ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
+ if(${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.${CMAKE_PATCH_VERSION}
+ VERSION_EQUAL 2.8.2 OR "${DIST_NAME}" STREQUAL "natty")
+ check_lib(GTK2 gtk+-2.0 gtk.h REQUIRED)
+ else()
+ include(FindGTK2)
+ if(GTK2_FOUND)
+ include_directories(${GTK2_INCLUDE_DIRS})
endif()
endif()
+ endif()
+ if(wxWidgets_FOUND)
+ include(${wxWidgets_USE_FILE})
message("wxWidgets found, enabling GUI build")
else(wxWidgets_FOUND)
- if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
- message(FATAL_ERROR "wxWidgets not found. It is required to build the GUI")
- endif()
message("Using static wxWidgets from Externals")
+
+ # These definitions and includes are used when building dolphin against wx,
+ # not when building wx itself (see wxw3 CMakeLists.txt for that)
if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
add_definitions(-D__WXOSX_COCOA__)
- include_directories(Externals/wxWidgets3)
- include_directories(Externals/wxWidgets3/include)
- add_subdirectory(Externals/wxWidgets3)
- set(wxWidgets_LIBRARIES "wx")
+ elseif(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
+ add_definitions(-D__WXGTK__)
+
+ # Check for required libs
+ check_lib(GTHREAD2 gthread-2.0 glib/gthread.h REQUIRED)
+ check_lib(PANGOCAIRO pangocairo pango/pangocairo.h REQUIRED)
+ elseif(${CMAKE_SYSTEM_NAME} MATCHES "Windows")
+ add_definitions(-D__WXMSW__)
else()
- include_directories(Externals/wxWidgets/include)
- add_subdirectory(Externals/wxWidgets)
+ message(FATAL_ERROR "wxWidgets in Externals is not compatible with your platform")
endif()
+
+ include_directories(
+ Externals/wxWidgets3
+ Externals/wxWidgets3/include)
+ add_subdirectory(Externals/wxWidgets3)
set(wxWidgets_FOUND TRUE)
+ set(wxWidgets_LIBRARIES "wx")
endif(wxWidgets_FOUND)
add_definitions(-DHAVE_WX=1)
endif(NOT DISABLE_WX)
@@ -554,7 +585,7 @@ option(UNITTESTS "Build unitests" OFF)
########################################
# Start compiling our code
#
-add_definitions(-std=c++0x)
+add_definitions(-std=gnu++0x)
add_subdirectory(Source)
diff --git a/Data/User/GameConfig/G2BE5G.ini b/Data/User/GameConfig/G2BE5G.ini
index 25ee8fe471..53f2ebdc82 100644
--- a/Data/User/GameConfig/G2BE5G.ini
+++ b/Data/User/GameConfig/G2BE5G.ini
@@ -1,18 +1,17 @@
-# G2BE5G - Black & Bruised
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = Needs LLE audio for sound ingame.
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
+# G2BE5G - Black & Bruised
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Needs LLE audio for sound ingame.
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/G2BP7D.ini b/Data/User/GameConfig/G2BP7D.ini
index 462c5eff83..27dca0e7c1 100644
--- a/Data/User/GameConfig/G2BP7D.ini
+++ b/Data/User/GameConfig/G2BP7D.ini
@@ -1,18 +1,17 @@
-# G2BP7D - Black & Bruised
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = Needs LLE audio for sound ingame.
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
+# G2BP7D - Black & Bruised
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Needs LLE audio for sound ingame.
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/G2ME01.ini b/Data/User/GameConfig/G2ME01.ini
index 0ecd587a67..46652d1f2b 100644
--- a/Data/User/GameConfig/G2ME01.ini
+++ b/Data/User/GameConfig/G2ME01.ini
@@ -1,160 +1,159 @@
-# G2ME01 - Metroid Prime 2 Echoes
-[EmuState]
-#The Emulation State.
-EmulationStateId = 4
-EmulationIssues = EFB to RAM is needed for the scanner/visors to work properly.
-[Speedhacks]
-0x803758bc=400
-[OnFrame]
-[ActionReplay]
-$(M)
-C4354E70 0000FF01
-C436F000 0000FF02
-4D30294C 4E800020
-C530294C 0000FF03
-0441FD80 00000000
-C6004010 000000FF
-$This Code Must Be On!
-043BC410 906D0000
-043BC414 88030004
-043BC418 4BC5C1F4
-04018608 483A3E08
-$Infinite Health
-4241FD80 000A44BB
-4241FD80 000B6000
-$Max Energy Tanks
-4241FD80 012B000E
-4241FD80 012D000E
-$Maximum Missiles
-4241FD80 013900FA
-$Infinite Missiles
-4241FD80 013700FA
-$Have Charge Beam
-4241FD80 00310001
-4241FD80 00330001
-$Have Dark Beam
-4241FD80 0037000F
-4241FD80 0039000F
-$Have Light Beam
-4241FD80 003D000F
-4241FD80 003F000F
-$Have Annihilator
-4241FD80 0043000F
-4241FD80 0045000F
-$Have Super Missile
-4241FD80 00470001
-4241FD80 00490001
-$Have Darkburst
-4241FD80 004D0001
-4241FD80 004F0001
-$Have Sunburst
-4241FD80 00530001
-4241FD80 00550001
-$Have Sonic Boom
-4241FD80 00590001
-4241FD80 005B0001
-$Have Combat Visor
-4241FD80 005F0001
-4241FD80 00610001
-$Have Scan Visor
-4241FD80 00650001
-4241FD80 00670001
-$Have Dark Visor
-4241FD80 006B0001
-4241FD80 006D0001
-$Have Echo Visor
-4241FD80 00710001
-4241FD80 00730001
-$Have Varia Suit
-4241FD80 00770001
-4241FD80 00790001
-$Have Dark Suit
-4241FD80 007D0001
-4241FD80 007F0001
-$Have Light Suit
-4241FD80 00830001
-4241FD80 00850001
-$Have Space Jump Boots
-4241FD80 00BF0001
-4241FD80 00C10001
-$Have Grapple Beam
-4241FD80 00B90001
-4241FD80 00BB0001
-$Have Gravity Boost
-4241FD80 00C50001
-4241FD80 00C70001
-$Have Screw Attack
-4241FD80 00D10001
-4241FD80 00D30001
-$Have Seeker Missile
-4241FD80 00CB0001
-4241FD80 00CD0001
-$Have Morph Ball Power Bomb
-4241FD80 01310001
-4241FD80 01330001
-$Have Beam Ammo Expansion
-4241FD80 013D000F
-4241FD80 013F000F
-$Have Sky Temple Key 1
-4241FD80 00DD0001
-4241FD80 00DF0001
-$Have Sky Temple Key 2
-4241FD80 00E30001
-4241FD80 00E50001
-$Have Sky Temple Key 3
-4241FD80 00E90001
-4241FD80 00EB0001
-$Have Agon Temple Key 1
-4241FD80 00EF0001
-4241FD80 00F10001
-$Have Agon Temple Key 2
-4241FD80 00F50001
-4241FD80 00F70001
-$Have Agon Temple Key 3
-4241FD80 00FB0001
-4241FD80 00FD0001
-$Have Torvus Temple Key 1
-4241FD80 01010001
-4241FD80 01030001
-$Have Torvus Temple Key 2
-4241FD80 01070001
-4241FD80 01090001
-$Have Torvus Temple Key 3
-4241FD80 010D0001
-4241FD80 010F0001
-$Have Ing Hive Temple Key 1
-4241FD80 01130001
-4241FD80 01150001
-$Have Ing Hive Temple Key 2
-4241FD80 01190001
-4241FD80 011B0001
-$Have Ing Hive Temple Key 3
-4241FD80 011F0001
-$One Hit Kill
-0403DB68 4BFC539C
-04002F04 FFC00090
-04002F08 7C1BE050
-04002F0C 2C000010
-04002F10 41820008
-04002F14 EFDEF028
-04002F18 4803AC54
-$Full Logbook
-0421166C 4BDF18CC
-04002F38 3BE000FF
-04002F3C 9BE50004
-04002F40 88050004
-04002F44 4820E72C
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Video_Hacks]
-EFBCopyEnable = True
-EFBToTextureEnable = False
+# G2ME01 - Metroid Prime 2 Echoes
+[EmuState]
+#The Emulation State.
+EmulationStateId = 4
+EmulationIssues = EFB to RAM is needed for the scanner/visors to work properly.
+[Speedhacks]
+0x803758bc=400
+[OnFrame]
+[ActionReplay]
+$(M)
+C4354E70 0000FF01
+C436F000 0000FF02
+4D30294C 4E800020
+C530294C 0000FF03
+0441FD80 00000000
+C6004010 000000FF
+$This Code Must Be On!
+043BC410 906D0000
+043BC414 88030004
+043BC418 4BC5C1F4
+04018608 483A3E08
+$Infinite Health
+4241FD80 000A44BB
+4241FD80 000B6000
+$Max Energy Tanks
+4241FD80 012B000E
+4241FD80 012D000E
+$Maximum Missiles
+4241FD80 013900FA
+$Infinite Missiles
+4241FD80 013700FA
+$Have Charge Beam
+4241FD80 00310001
+4241FD80 00330001
+$Have Dark Beam
+4241FD80 0037000F
+4241FD80 0039000F
+$Have Light Beam
+4241FD80 003D000F
+4241FD80 003F000F
+$Have Annihilator
+4241FD80 0043000F
+4241FD80 0045000F
+$Have Super Missile
+4241FD80 00470001
+4241FD80 00490001
+$Have Darkburst
+4241FD80 004D0001
+4241FD80 004F0001
+$Have Sunburst
+4241FD80 00530001
+4241FD80 00550001
+$Have Sonic Boom
+4241FD80 00590001
+4241FD80 005B0001
+$Have Combat Visor
+4241FD80 005F0001
+4241FD80 00610001
+$Have Scan Visor
+4241FD80 00650001
+4241FD80 00670001
+$Have Dark Visor
+4241FD80 006B0001
+4241FD80 006D0001
+$Have Echo Visor
+4241FD80 00710001
+4241FD80 00730001
+$Have Varia Suit
+4241FD80 00770001
+4241FD80 00790001
+$Have Dark Suit
+4241FD80 007D0001
+4241FD80 007F0001
+$Have Light Suit
+4241FD80 00830001
+4241FD80 00850001
+$Have Space Jump Boots
+4241FD80 00BF0001
+4241FD80 00C10001
+$Have Grapple Beam
+4241FD80 00B90001
+4241FD80 00BB0001
+$Have Gravity Boost
+4241FD80 00C50001
+4241FD80 00C70001
+$Have Screw Attack
+4241FD80 00D10001
+4241FD80 00D30001
+$Have Seeker Missile
+4241FD80 00CB0001
+4241FD80 00CD0001
+$Have Morph Ball Power Bomb
+4241FD80 01310001
+4241FD80 01330001
+$Have Beam Ammo Expansion
+4241FD80 013D000F
+4241FD80 013F000F
+$Have Sky Temple Key 1
+4241FD80 00DD0001
+4241FD80 00DF0001
+$Have Sky Temple Key 2
+4241FD80 00E30001
+4241FD80 00E50001
+$Have Sky Temple Key 3
+4241FD80 00E90001
+4241FD80 00EB0001
+$Have Agon Temple Key 1
+4241FD80 00EF0001
+4241FD80 00F10001
+$Have Agon Temple Key 2
+4241FD80 00F50001
+4241FD80 00F70001
+$Have Agon Temple Key 3
+4241FD80 00FB0001
+4241FD80 00FD0001
+$Have Torvus Temple Key 1
+4241FD80 01010001
+4241FD80 01030001
+$Have Torvus Temple Key 2
+4241FD80 01070001
+4241FD80 01090001
+$Have Torvus Temple Key 3
+4241FD80 010D0001
+4241FD80 010F0001
+$Have Ing Hive Temple Key 1
+4241FD80 01130001
+4241FD80 01150001
+$Have Ing Hive Temple Key 2
+4241FD80 01190001
+4241FD80 011B0001
+$Have Ing Hive Temple Key 3
+4241FD80 011F0001
+$One Hit Kill
+0403DB68 4BFC539C
+04002F04 FFC00090
+04002F08 7C1BE050
+04002F0C 2C000010
+04002F10 41820008
+04002F14 EFDEF028
+04002F18 4803AC54
+$Full Logbook
+0421166C 4BDF18CC
+04002F38 3BE000FF
+04002F3C 9BE50004
+04002F40 88050004
+04002F44 4820E72C
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video_Hacks]
+EFBCopyEnable = True
+EFBToTextureEnable = False
diff --git a/Data/User/GameConfig/G2MP01.ini b/Data/User/GameConfig/G2MP01.ini
index c3fb1fdac5..c6b40b4ce5 100644
--- a/Data/User/GameConfig/G2MP01.ini
+++ b/Data/User/GameConfig/G2MP01.ini
@@ -1,158 +1,157 @@
-# G2MP01 - Metroid Prime 2 Echoes
-[EmuState]
-#The Emulation State.
-EmulationStateId = 4
-EmulationIssues = EFB to RAM is needed for the scanner/visors to work properly.
-[Speedhacks]
-#Patch OSYieldThread to take more time - MP2's idle loop is really stupid.
-0x80375c68=400
-[OnFrame]
-[ActionReplay]
-$(M)
-C43552C8 0000FF01
-C436F41C 0000FF02
-0D30294C 4E800020
-C530294C 0000FF03
-$Infinite Health
-423DDE0C 000A44BB
-423DDE0C 000B6000
-$Max Energy Tanks
-423DDE0C 012B000E
-423DDE0C 012D000E
-$Maximum Missiles
-423DDE0C 013900FA
-$Infinite Missiles
-423DDE0C 013700FA
-$Moon Jump (Hold B)
-3A705F24 00000200
-423DDDFC 00D84101
-$Have Charge Beam
-423DDE0C 00310001
-423DDE0C 00330001
-$Have Dark Beam
-423DDE0C 00370001
-423DDE0C 00390001
-$Have Light Beam
-423DDE0C 003D0001
-423DDE0C 003F0001
-$Have Annihilator
-423DDE0C 00430001
-423DDE0C 00450001
-$Have Super Missile
-423DDE0C 00470001
-423DDE0C 00490001
-$Have Darkburst
-423DDE0C 004D0001
-423DDE0C 004F0001
-$Have Sunburst
-423DDE0C 00530001
-423DDE0C 00550001
-$Have Sonic Boom
-423DDE0C 00590001
-423DDE0C 005B0001
-$Have Combat Visor
-423DDE0C 005F0001
-423DDE0C 00610001
-$Have Scan Visor
-423DDE0C 00650001
-423DDE0C 00670001
-$Have Dark Visor
-423DDE0C 006B0001
-423DDE0C 006D0001
-$Have Echo Visor
-423DDE0C 00710001
-423DDE0C 00730001
-$Have Varia Suit
-423DDE0C 00770001
-423DDE0C 00790001
-$Have Dark Suit
-423DDE0C 007D0001
-423DDE0C 007F0001
-$Have Light Suit
-423DDE0C 00830001
-423DDE0C 00850001
-$Have Space Jump Boots
-423DDE0C 00BF0001
-423DDE0C 00C10001
-$Have Grapple Beam
-423DDE0C 00B90001
-423DDE0C 00BB0001
-$Have Gravity Boost
-423DDE0C 00C50001
-423DDE0C 00C70001
-$Have Screw Attack
-423DDE0C 00D10001
-423DDE0C 00D30001
-$Have Seeker Missile
-423DDE0C 00CB0001
-423DDE0C 00CD0001
-$Have Morph Ball Power Bomb
-423DDE0C 01310001
-423DDE0C 01330001
-$Have Beam Ammo Expansion
-423DDE0C 013D000F
-423DDE0C 013F000F
-$Have Sky Temple Key 1
-423DDE0C 00DD0001
-423DDE0C 00DF0001
-$Have Sky Temple Key 2
-423DDE0C 00E30001
-423DDE0C 00E50001
-$Have Sky Temple Key 3
-423DDE0C 00E90001
-423DDE0C 00EB0001
-$Have Agon Temple Key 1
-423DDE0C 00EF0001
-423DDE0C 00F10001
-$Have Agon Temple Key 2
-423DDE0C 00F50001
-423DDE0C 00F70001
-$Have Agon Temple Key 3
-423DDE0C 00FB0001
-423DDE0C 00FD0001
-$Have Torvus Temple Key 1
-423DDE0C 01010001
-423DDE0C 01030001
-$Have Torvus Temple Key 2
-423DDE0C 01070001
-423DDE0C 01090001
-$Have Torvus Temple Key 3
-423DDE0C 010D0001
-423DDE0C 010F0001
-$Have Ing Hive Temple Key 1
-423DDE0C 01130001
-423DDE0C 01150001
-$Have Ing Hive Temple Key 2
-423DDE0C 01190001
-423DDE0C 011B0001
-$Have Ing Hive Temple Key 3
-423DDE0C 011F0001
-423DDE0C 01210001
-$One Hit Kill
-0403DCB8 4BFC524C
-04002F04 FFC00090
-04002F08 7C1BE050
-04002F0C 2C000010
-04002F10 41820008
-04002F14 EFDEF028
-04002F18 4803ADA4
-$Full Logbook
-04211974 4BDF15C4
-04002F38 3BE000FF
-04002F3C 9BE50004
-04002F40 88050004
-04002F44 4820EA34
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Video_Hacks]
-EFBCopyEnable = True
-EFBToTextureEnable = False
+# G2MP01 - Metroid Prime 2 Echoes
+[EmuState]
+#The Emulation State.
+EmulationStateId = 4
+EmulationIssues = EFB to RAM is needed for the scanner/visors to work properly.
+[Speedhacks]
+#Patch OSYieldThread to take more time - MP2's idle loop is really stupid.
+0x80375c68=400
+[OnFrame]
+[ActionReplay]
+$(M)
+C43552C8 0000FF01
+C436F41C 0000FF02
+0D30294C 4E800020
+C530294C 0000FF03
+$Infinite Health
+423DDE0C 000A44BB
+423DDE0C 000B6000
+$Max Energy Tanks
+423DDE0C 012B000E
+423DDE0C 012D000E
+$Maximum Missiles
+423DDE0C 013900FA
+$Infinite Missiles
+423DDE0C 013700FA
+$Moon Jump (Hold B)
+3A705F24 00000200
+423DDDFC 00D84101
+$Have Charge Beam
+423DDE0C 00310001
+423DDE0C 00330001
+$Have Dark Beam
+423DDE0C 00370001
+423DDE0C 00390001
+$Have Light Beam
+423DDE0C 003D0001
+423DDE0C 003F0001
+$Have Annihilator
+423DDE0C 00430001
+423DDE0C 00450001
+$Have Super Missile
+423DDE0C 00470001
+423DDE0C 00490001
+$Have Darkburst
+423DDE0C 004D0001
+423DDE0C 004F0001
+$Have Sunburst
+423DDE0C 00530001
+423DDE0C 00550001
+$Have Sonic Boom
+423DDE0C 00590001
+423DDE0C 005B0001
+$Have Combat Visor
+423DDE0C 005F0001
+423DDE0C 00610001
+$Have Scan Visor
+423DDE0C 00650001
+423DDE0C 00670001
+$Have Dark Visor
+423DDE0C 006B0001
+423DDE0C 006D0001
+$Have Echo Visor
+423DDE0C 00710001
+423DDE0C 00730001
+$Have Varia Suit
+423DDE0C 00770001
+423DDE0C 00790001
+$Have Dark Suit
+423DDE0C 007D0001
+423DDE0C 007F0001
+$Have Light Suit
+423DDE0C 00830001
+423DDE0C 00850001
+$Have Space Jump Boots
+423DDE0C 00BF0001
+423DDE0C 00C10001
+$Have Grapple Beam
+423DDE0C 00B90001
+423DDE0C 00BB0001
+$Have Gravity Boost
+423DDE0C 00C50001
+423DDE0C 00C70001
+$Have Screw Attack
+423DDE0C 00D10001
+423DDE0C 00D30001
+$Have Seeker Missile
+423DDE0C 00CB0001
+423DDE0C 00CD0001
+$Have Morph Ball Power Bomb
+423DDE0C 01310001
+423DDE0C 01330001
+$Have Beam Ammo Expansion
+423DDE0C 013D000F
+423DDE0C 013F000F
+$Have Sky Temple Key 1
+423DDE0C 00DD0001
+423DDE0C 00DF0001
+$Have Sky Temple Key 2
+423DDE0C 00E30001
+423DDE0C 00E50001
+$Have Sky Temple Key 3
+423DDE0C 00E90001
+423DDE0C 00EB0001
+$Have Agon Temple Key 1
+423DDE0C 00EF0001
+423DDE0C 00F10001
+$Have Agon Temple Key 2
+423DDE0C 00F50001
+423DDE0C 00F70001
+$Have Agon Temple Key 3
+423DDE0C 00FB0001
+423DDE0C 00FD0001
+$Have Torvus Temple Key 1
+423DDE0C 01010001
+423DDE0C 01030001
+$Have Torvus Temple Key 2
+423DDE0C 01070001
+423DDE0C 01090001
+$Have Torvus Temple Key 3
+423DDE0C 010D0001
+423DDE0C 010F0001
+$Have Ing Hive Temple Key 1
+423DDE0C 01130001
+423DDE0C 01150001
+$Have Ing Hive Temple Key 2
+423DDE0C 01190001
+423DDE0C 011B0001
+$Have Ing Hive Temple Key 3
+423DDE0C 011F0001
+423DDE0C 01210001
+$One Hit Kill
+0403DCB8 4BFC524C
+04002F04 FFC00090
+04002F08 7C1BE050
+04002F0C 2C000010
+04002F10 41820008
+04002F14 EFDEF028
+04002F18 4803ADA4
+$Full Logbook
+04211974 4BDF15C4
+04002F38 3BE000FF
+04002F3C 9BE50004
+04002F40 88050004
+04002F44 4820EA34
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video_Hacks]
+EFBCopyEnable = True
+EFBToTextureEnable = False
diff --git a/Data/User/GameConfig/G2OE41.ini b/Data/User/GameConfig/G2OE41.ini
index 38829382ef..576dc08216 100644
--- a/Data/User/GameConfig/G2OE41.ini
+++ b/Data/User/GameConfig/G2OE41.ini
@@ -1,20 +1,19 @@
-# G2OE41 - PoP:WW
-[Core] Values set here will override the main dolphin settings.
-TLBHack = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-
+# G2OE41 - PoP:WW
+[Core] Values set here will override the main dolphin settings.
+TLBHack = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+
diff --git a/Data/User/GameConfig/G2OP41.ini b/Data/User/GameConfig/G2OP41.ini
index d6168e719e..06b5f1d84c 100644
--- a/Data/User/GameConfig/G2OP41.ini
+++ b/Data/User/GameConfig/G2OP41.ini
@@ -1,19 +1,18 @@
-# G2OP41 - PoP:WW
-[Core] Values set here will override the main dolphin settings.
-TLBHack = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
+# G2OP41 - PoP:WW
+[Core] Values set here will override the main dolphin settings.
+TLBHack = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/G2XE8P.ini b/Data/User/GameConfig/G2XE8P.ini
index be2e404a17..7b7d3620f7 100644
--- a/Data/User/GameConfig/G2XE8P.ini
+++ b/Data/User/GameConfig/G2XE8P.ini
@@ -1,21 +1,20 @@
-# G2XE8P - SONIC GEMS COLLECTION
-[Core] Values set here will override the main dolphin settings.
-TLBHack = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = Everything playable with minor glitches.
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Video_Hacks]
-DlistCachingEnable = False
+# G2XE8P - SONIC GEMS COLLECTION
+[Core] Values set here will override the main dolphin settings.
+TLBHack = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Everything playable with minor glitches.
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video_Hacks]
+DlistCachingEnable = False
diff --git a/Data/User/GameConfig/G2XP8P.ini b/Data/User/GameConfig/G2XP8P.ini
index 091b1b318a..cb872941e6 100644
--- a/Data/User/GameConfig/G2XP8P.ini
+++ b/Data/User/GameConfig/G2XP8P.ini
@@ -1,21 +1,20 @@
-# G2XP8P - SONIC GEMS COLLECTION
-[Core] Values set here will override the main dolphin settings.
-TLBHack = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = Everything playable with minor glitches.
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Video_Hacks]
-DlistCachingEnable = False
+# G2XP8P - SONIC GEMS COLLECTION
+[Core] Values set here will override the main dolphin settings.
+TLBHack = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Everything playable with minor glitches.
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video_Hacks]
+DlistCachingEnable = False
diff --git a/Data/User/GameConfig/G3AD69.ini b/Data/User/GameConfig/G3AD69.ini
index eee6d29950..25c92f32f9 100644
--- a/Data/User/GameConfig/G3AD69.ini
+++ b/Data/User/GameConfig/G3AD69.ini
@@ -1,19 +1,18 @@
-# G3AD69 - The Lord of the Rings, The Third Age
-[Core] Values set here will override the main dolphin settings.
-TLBHack = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 0
+# G3AD69 - The Lord of the Rings, The Third Age
+[Core] Values set here will override the main dolphin settings.
+TLBHack = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 0
diff --git a/Data/User/GameConfig/G3AE69.ini b/Data/User/GameConfig/G3AE69.ini
index c651dd337a..ed15e3bbba 100644
--- a/Data/User/GameConfig/G3AE69.ini
+++ b/Data/User/GameConfig/G3AE69.ini
@@ -1,19 +1,18 @@
-# G3AE69 - The Lord of the Rings, The Third Age
-[Core] Values set here will override the main dolphin settings.
-TLBHack = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 0
+# G3AE69 - The Lord of the Rings, The Third Age
+[Core] Values set here will override the main dolphin settings.
+TLBHack = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 0
diff --git a/Data/User/GameConfig/G3AF69.ini b/Data/User/GameConfig/G3AF69.ini
index a2cb88f457..4634af6bbd 100644
--- a/Data/User/GameConfig/G3AF69.ini
+++ b/Data/User/GameConfig/G3AF69.ini
@@ -1,19 +1,18 @@
-# G3AF69 - The Lord of the Rings, The Third Age
-[Core] Values set here will override the main dolphin settings.
-TLBHack = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 0
+# G3AF69 - The Lord of the Rings, The Third Age
+[Core] Values set here will override the main dolphin settings.
+TLBHack = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 0
diff --git a/Data/User/GameConfig/G3AP69.ini b/Data/User/GameConfig/G3AP69.ini
index c651dd337a..ed15e3bbba 100644
--- a/Data/User/GameConfig/G3AP69.ini
+++ b/Data/User/GameConfig/G3AP69.ini
@@ -1,19 +1,18 @@
-# G3AE69 - The Lord of the Rings, The Third Age
-[Core] Values set here will override the main dolphin settings.
-TLBHack = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 0
+# G3AE69 - The Lord of the Rings, The Third Age
+[Core] Values set here will override the main dolphin settings.
+TLBHack = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 0
diff --git a/Data/User/GameConfig/G3FE69.ini b/Data/User/GameConfig/G3FE69.ini
index 09a9c6dc81..2f628b7bab 100644
--- a/Data/User/GameConfig/G3FE69.ini
+++ b/Data/User/GameConfig/G3FE69.ini
@@ -1,24 +1,23 @@
-# G3FE69 - TimeSplitters Future Perfect
-[EmuState]
-#The Emulation State.
-EmulationStateId = 4
-EmulationIssues = Needs mmu to run, and it runs very slow because of it (r6436)
-[OnFrame]
-[ActionReplay]
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Core]
-MMU = 1
-VBeam = 1
-BlockMerging = 1
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 0
-[Video_Hacks]
-DlistCachingEnable = False
+# G3FE69 - TimeSplitters Future Perfect
+[EmuState]
+#The Emulation State.
+EmulationStateId = 4
+EmulationIssues = Needs mmu to run, and it runs very slow because of it (r6436)
+[OnFrame]
+[ActionReplay]
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Core]
+MMU = 1
+VBeam = 1
+BlockMerging = 1
+[Video_Settings]
+SafeTextureCacheColorSamples = 0
+[Video_Hacks]
+DlistCachingEnable = False
diff --git a/Data/User/GameConfig/G3FF69.ini b/Data/User/GameConfig/G3FF69.ini
index 74e01bc005..7367649d4b 100644
--- a/Data/User/GameConfig/G3FF69.ini
+++ b/Data/User/GameConfig/G3FF69.ini
@@ -1,24 +1,23 @@
-# G3FF69 - TimeSplitters Future Perfect
-[EmuState]
-#The Emulation State.
-EmulationStateId = 4
-EmulationIssues = Needs mmu to run, and it runs very slow because of it (r6436)
-[OnFrame]
-[ActionReplay]
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Core]
-MMU = 1
-VBeam = 1
-BlockMerging = 1
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 0
-[Video_Hacks]
-DlistCachingEnable = False
+# G3FF69 - TimeSplitters Future Perfect
+[EmuState]
+#The Emulation State.
+EmulationStateId = 4
+EmulationIssues = Needs mmu to run, and it runs very slow because of it (r6436)
+[OnFrame]
+[ActionReplay]
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Core]
+MMU = 1
+VBeam = 1
+BlockMerging = 1
+[Video_Settings]
+SafeTextureCacheColorSamples = 0
+[Video_Hacks]
+DlistCachingEnable = False
diff --git a/Data/User/GameConfig/G3FP69.ini b/Data/User/GameConfig/G3FP69.ini
index cdb7e8478a..0272d70fde 100644
--- a/Data/User/GameConfig/G3FP69.ini
+++ b/Data/User/GameConfig/G3FP69.ini
@@ -1,24 +1,23 @@
-# G3FP69 - TimeSplitters Future Perfect
-[EmuState]
-#The Emulation State.
-EmulationStateId = 4
-EmulationIssues = Needs mmu to run, and it runs very slow because of it (r6436)
-[OnFrame]
-[ActionReplay]
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Core]
-MMU = 1
-VBeam = 1
-BlockMerging = 1
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 0
-[Video_Hacks]
-DlistCachingEnable = False
+# G3FP69 - TimeSplitters Future Perfect
+[EmuState]
+#The Emulation State.
+EmulationStateId = 4
+EmulationIssues = Needs mmu to run, and it runs very slow because of it (r6436)
+[OnFrame]
+[ActionReplay]
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Core]
+MMU = 1
+VBeam = 1
+BlockMerging = 1
+[Video_Settings]
+SafeTextureCacheColorSamples = 0
+[Video_Hacks]
+DlistCachingEnable = False
diff --git a/Data/User/GameConfig/G3XE52.ini b/Data/User/GameConfig/G3XE52.ini
index ad8d6a7476..8e8e7cdd22 100644
--- a/Data/User/GameConfig/G3XE52.ini
+++ b/Data/User/GameConfig/G3XE52.ini
@@ -1,20 +1,19 @@
-# G3XE52 - X-Men: The Official Game
-[Core] Values set here will override the main dolphin settings.
-MMU = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-
+# G3XE52 - X-Men: The Official Game
+[Core] Values set here will override the main dolphin settings.
+MMU = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+
diff --git a/Data/User/GameConfig/G3XP52.ini b/Data/User/GameConfig/G3XP52.ini
index c31dabec6a..b1d84b720e 100644
--- a/Data/User/GameConfig/G3XP52.ini
+++ b/Data/User/GameConfig/G3XP52.ini
@@ -1,19 +1,18 @@
-# G3XP52 - X-Men: The Official Game
-[Core] Values set here will override the main dolphin settings.
-MMU = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
+# G3XP52 - X-Men: The Official Game
+[Core] Values set here will override the main dolphin settings.
+MMU = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/G4FD69.ini b/Data/User/GameConfig/G4FD69.ini
index abc304e162..4de9d5c61d 100644
--- a/Data/User/GameConfig/G4FD69.ini
+++ b/Data/User/GameConfig/G4FD69.ini
@@ -1,11 +1,16 @@
# G4FD69 - FIFA 07
[Core] Values set here will override the main dolphin settings.
-MMU = 1
+TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = Sound issues need LLE plugin and videos are messed up. Slow due to MMU(r6932)
+EmulationIssues = Sound issues need LLE audio to be fixed and the videos are messed up.
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
[Gecko]
diff --git a/Data/User/GameConfig/G4FE69.ini b/Data/User/GameConfig/G4FE69.ini
index 2f08c09f90..f4b303cd32 100644
--- a/Data/User/GameConfig/G4FE69.ini
+++ b/Data/User/GameConfig/G4FE69.ini
@@ -1,12 +1,16 @@
# G4FE69 - FIFA 07
[Core] Values set here will override the main dolphin settings.
-MMU = 1
+TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 3
-EmulationIssues = Sound issues need LLE plugin and videos are messed up. Slow due to MMU(r6932)
+EmulationStateId = 4
+EmulationIssues = Sound issues need LLE audio to be fixed and the videos are messed up.
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
[Gecko]
-
diff --git a/Data/User/GameConfig/G4FF69.ini b/Data/User/GameConfig/G4FF69.ini
index 6f94d10dc7..688bde8ea9 100644
--- a/Data/User/GameConfig/G4FF69.ini
+++ b/Data/User/GameConfig/G4FF69.ini
@@ -1,11 +1,16 @@
# G4FF69 - FIFA 07
[Core] Values set here will override the main dolphin settings.
-MMU = 1
+TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = Sound issues need LLE plugin and videos are messed up. Slow due to MMU(r6932)
+EmulationIssues = Sound issues need LLE audio to be fixed and the videos are messed up.
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
[Gecko]
diff --git a/Data/User/GameConfig/G4FP69.ini b/Data/User/GameConfig/G4FP69.ini
index 80743faa36..f4b303cd32 100644
--- a/Data/User/GameConfig/G4FP69.ini
+++ b/Data/User/GameConfig/G4FP69.ini
@@ -1,11 +1,16 @@
# G4FE69 - FIFA 07
[Core] Values set here will override the main dolphin settings.
-MMU = 1
+TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = Sound issues need LLE plugin and videos are messed up. Slow due to MMU(r6932)
+EmulationIssues = Sound issues need LLE audio to be fixed and the videos are messed up.
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
[Gecko]
diff --git a/Data/User/GameConfig/G4ME69.ini b/Data/User/GameConfig/G4ME69.ini
index f082c8ca0d..05d2935830 100644
--- a/Data/User/GameConfig/G4ME69.ini
+++ b/Data/User/GameConfig/G4ME69.ini
@@ -1,20 +1,19 @@
-# G4ME69 - The Sims: Bustin Out GameCube
-[Core] Values set here will override the main dolphin settings.
-TLBHack = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-
+# G4ME69 - The Sims: Bustin Out GameCube
+[Core] Values set here will override the main dolphin settings.
+TLBHack = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+
diff --git a/Data/User/GameConfig/G4MP69.ini b/Data/User/GameConfig/G4MP69.ini
index c09911f0a7..f9d25f41a7 100644
--- a/Data/User/GameConfig/G4MP69.ini
+++ b/Data/User/GameConfig/G4MP69.ini
@@ -1,19 +1,18 @@
-# G4MP69 - The Sims: Bustin Out GameCube
-[Core] Values set here will override the main dolphin settings.
-TLBHack = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
+# G4MP69 - The Sims: Bustin Out GameCube
+[Core] Values set here will override the main dolphin settings.
+TLBHack = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/G4SE01.ini b/Data/User/GameConfig/G4SE01.ini
index a0ce7ade1e..154be621c2 100644
--- a/Data/User/GameConfig/G4SE01.ini
+++ b/Data/User/GameConfig/G4SE01.ini
@@ -1,19 +1,18 @@
-# G4SE01 - The Legend of Zelda: Four Swords FOR NINTENDO GAMECUBE
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-
+# G4SE01 - The Legend of Zelda: Four Swords FOR NINTENDO GAMECUBE
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+
diff --git a/Data/User/GameConfig/G4SP01.ini b/Data/User/GameConfig/G4SP01.ini
index 433e876a05..293ec3ec48 100644
--- a/Data/User/GameConfig/G4SP01.ini
+++ b/Data/User/GameConfig/G4SP01.ini
@@ -1,109 +1,108 @@
-# G4SP01 - The Legend of Zelda: Four Swords FOR NINTENDO GAMECUBE
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay]
-$(M)
-0658E214 98000000
-C404F588 0002FF00
-$Infinite Health
-0658E215 18000000
-04247EDC 80030BF8
-04247EE0 90030BFC
-04247EE4 4800000C
-$Max Health
-0658E216 18000000
-0425AB40 38000020
-$Max/Infinite Force Gems
-0658E217 18000000
-0423C730 3860270F
-$All Adventure Mode Levels Unlocked
-0658E218 18000000
-0452A2C8 FFFFFFFF
-0452A390 FFFFFFFF
-0452A548 FFFFFFFF
-$Items Always Level 2
-0658E22C 18000000
-04247BB4 38600002
-$Super Jump
-0658E219 18000000
-0455D684 415CCCCD
-$Infinite Force Fairies
-0658E21A 18000000
-00545660 00000063
-0052A390 00000063
-$Infinite Air
-0658E21B 18000000
-04248F40 38030000
-04289A44 38030000
-$Massive Links
-0658E21C 18000000
-0426B82C C02200DC
-0426B834 C06200DC
-0426B844 C00200DC
-$Mini Links
-0658E21D 18000000
-0426B82C C0220108
-0426B834 C0620108
-0426B844 C0020108
-$More Time On Huge Death Bombs(Press Z)
-0658E21E 18000000
-0434A148 3803FFFF
-0A52EA28 00000010
-0434A148 38000300
-$Item Codes
-0658E21F 15008000
-$Pegasus Boots(D-Pad Left)
-0658E220 14710FC0
-0A54BD94 00000001
-04247D04 38600001
-$Lantern(D-Pad Right)
-0658E221 14710FC0
-0A54BD94 00000002
-04247D04 38600002
-$Boomerang(D-Pad Up)
-0658E222 14710FC0
-0A54BD94 00000008
-04247D04 38600003
-$Bow & Arrows(D-Pad Down)
-0658E223 14710FC0
-0A54BD94 00000004
-04247D04 38600004
-$Magic Hammer(L+D-Pad Left)
-0658E224 14710FC0
-0A54BD94 00000041
-04247D04 38600005
-$Fire Rod(L+D-Pad Right)
-0658E225 14710FC0
-0A54BD94 00000042
-04247D04 38600006
-$Roc's Feather(L+D-Pad)
-0658E226 14710FC0
-0A54BD94 00000048
-04247D04 38600007
-$Bombs(L+D-Pad)
-0658E227 14710FC0
-0A54BD94 00000044
-04247D04 38600008
-$Shovel(R Button)
-0658E228 14710FC0
-0A54BD94 00000020
-04247D04 38600009
-$Slingshot(Z BUtton)
-0658E229 14710FC0
-0A54BD94 00000010
-04247D04 3860000A
-$Have Blue Bracelet
-0658E22A 14710FC0
-0A54BD94 60000000
-$Have Power Bracelet
-0658E22B 14710FC0
-0A54BD94 60000000
-[Video]
-ProjectionHack = 0
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
+# G4SP01 - The Legend of Zelda: Four Swords FOR NINTENDO GAMECUBE
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay]
+$(M)
+0658E214 98000000
+C404F588 0002FF00
+$Infinite Health
+0658E215 18000000
+04247EDC 80030BF8
+04247EE0 90030BFC
+04247EE4 4800000C
+$Max Health
+0658E216 18000000
+0425AB40 38000020
+$Max/Infinite Force Gems
+0658E217 18000000
+0423C730 3860270F
+$All Adventure Mode Levels Unlocked
+0658E218 18000000
+0452A2C8 FFFFFFFF
+0452A390 FFFFFFFF
+0452A548 FFFFFFFF
+$Items Always Level 2
+0658E22C 18000000
+04247BB4 38600002
+$Super Jump
+0658E219 18000000
+0455D684 415CCCCD
+$Infinite Force Fairies
+0658E21A 18000000
+00545660 00000063
+0052A390 00000063
+$Infinite Air
+0658E21B 18000000
+04248F40 38030000
+04289A44 38030000
+$Massive Links
+0658E21C 18000000
+0426B82C C02200DC
+0426B834 C06200DC
+0426B844 C00200DC
+$Mini Links
+0658E21D 18000000
+0426B82C C0220108
+0426B834 C0620108
+0426B844 C0020108
+$More Time On Huge Death Bombs(Press Z)
+0658E21E 18000000
+0434A148 3803FFFF
+0A52EA28 00000010
+0434A148 38000300
+$Item Codes
+0658E21F 15008000
+$Pegasus Boots(D-Pad Left)
+0658E220 14710FC0
+0A54BD94 00000001
+04247D04 38600001
+$Lantern(D-Pad Right)
+0658E221 14710FC0
+0A54BD94 00000002
+04247D04 38600002
+$Boomerang(D-Pad Up)
+0658E222 14710FC0
+0A54BD94 00000008
+04247D04 38600003
+$Bow & Arrows(D-Pad Down)
+0658E223 14710FC0
+0A54BD94 00000004
+04247D04 38600004
+$Magic Hammer(L+D-Pad Left)
+0658E224 14710FC0
+0A54BD94 00000041
+04247D04 38600005
+$Fire Rod(L+D-Pad Right)
+0658E225 14710FC0
+0A54BD94 00000042
+04247D04 38600006
+$Roc's Feather(L+D-Pad)
+0658E226 14710FC0
+0A54BD94 00000048
+04247D04 38600007
+$Bombs(L+D-Pad)
+0658E227 14710FC0
+0A54BD94 00000044
+04247D04 38600008
+$Shovel(R Button)
+0658E228 14710FC0
+0A54BD94 00000020
+04247D04 38600009
+$Slingshot(Z BUtton)
+0658E229 14710FC0
+0A54BD94 00000010
+04247D04 3860000A
+$Have Blue Bracelet
+0658E22A 14710FC0
+0A54BD94 60000000
+$Have Power Bracelet
+0658E22B 14710FC0
+0A54BD94 60000000
+[Video]
+ProjectionHack = 0
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/G6TE5G.ini b/Data/User/GameConfig/G6TE5G.ini
index 90f14427ed..d07f05588d 100644
--- a/Data/User/GameConfig/G6TE5G.ini
+++ b/Data/User/GameConfig/G6TE5G.ini
@@ -1,19 +1,18 @@
-# G6TE5G - Teen Titans
-[Core] Values set here will override the main dolphin settings.
-TLBHack = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 2
-EmulationIssues =
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
+# G6TE5G - Teen Titans
+[Core] Values set here will override the main dolphin settings.
+TLBHack = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 2
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/G6TP5G.ini b/Data/User/GameConfig/G6TP5G.ini
index 6f32916865..a26e185d72 100644
--- a/Data/User/GameConfig/G6TP5G.ini
+++ b/Data/User/GameConfig/G6TP5G.ini
@@ -1,18 +1,18 @@
-# G6TP5G - Teen Titans
-[Core] Values set here will override the main dolphin settings.
-TLBHack = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 2
-EmulationIssues =
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
+# G6TP5G - Teen Titans
+[Core] Values set here will override the main dolphin settings.
+TLBHack = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 2
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/G9SE8P.ini b/Data/User/GameConfig/G9SE8P.ini
index 0ae956aad6..1334d97585 100644
--- a/Data/User/GameConfig/G9SE8P.ini
+++ b/Data/User/GameConfig/G9SE8P.ini
@@ -1,19 +1,18 @@
-# G9SE8P - SONIC HEROES
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = Use directx11 backend with efb scale set at 1x to deal with black textures ingame.
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 0
-EFBScale = 2
+# G9SE8P - SONIC HEROES
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Use directx11 backend with efb scale set at 1x to deal with black textures ingame.
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 0
+EFBScale = 2
diff --git a/Data/User/GameConfig/G9SJ8P.ini b/Data/User/GameConfig/G9SJ8P.ini
index 6785f4cd4b..6cd3e893ae 100644
--- a/Data/User/GameConfig/G9SJ8P.ini
+++ b/Data/User/GameConfig/G9SJ8P.ini
@@ -1,19 +1,18 @@
-# G9SJ8P - SONIC HEROES
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = Use directx11 backend with efb scale set at 1x to deal with black textures ingame.
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 0
-EFBScale = 2
+# G9SJ8P - SONIC HEROES
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Use directx11 backend with efb scale set at 1x to deal with black textures ingame.
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 0
+EFBScale = 2
diff --git a/Data/User/GameConfig/G9SP8P.ini b/Data/User/GameConfig/G9SP8P.ini
index 8bc5c2a9ad..60f79420ed 100644
--- a/Data/User/GameConfig/G9SP8P.ini
+++ b/Data/User/GameConfig/G9SP8P.ini
@@ -1,19 +1,18 @@
-# G9SP8P - SONIC HEROES
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = Use directx11 backend with efb scale set at 1x to deal with black textures ingame.
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 0
-EFBScale = 2
+# G9SP8P - SONIC HEROES
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Use directx11 backend with efb scale set at 1x to deal with black textures ingame.
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 0
+EFBScale = 2
diff --git a/Data/User/GameConfig/GAFE01.ini b/Data/User/GameConfig/GAFE01.ini
index 7c4daea517..dcef253178 100644
--- a/Data/User/GameConfig/GAFE01.ini
+++ b/Data/User/GameConfig/GAFE01.ini
@@ -1,323 +1,322 @@
-# GAFE01 - Animal Crossing NTSC
-[EmuState]
-#The Emulation State (as of r1027)
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame]
-[ActionReplay]
-$(M) (Datel)
-01521549 88000000
-C40959EC 0000FF00
-$Make Game Save Copyable (donny2112)
-01522C0A 08000000
-8C091F20 909C0028
-04091F24 4BF70FFC
-04002F20 38000004
-04002F24 981C0034
-04002F28 38000000
-04002F2C 4808EFFC
-$Weed-Be-Gone Avtivate/Restore (D-Pad Down/Up) (donny2112)
-015229BD 08000000
-04002484 4E800020
-04002F10 3CE08128
-04002F14 80A7D720
-04002F18 A0C50000
-04002F1C 2C060008
-04002F20 41820018
-04002F24 2C060009
-04002F28 41820010
-04002F2C 2C06000A
-04002F30 41820008
-04002F34 4800000C
-04002F38 38C00000
-04002F3C B0C50000
-04002F40 38A50002
-04002F44 54A6043E
-04002F48 2806D710
-04002F4C 41820008
-04002F50 4BFFFFC8
-04002F54 4E800020
-4A2070F8 00000004
-0527D720 81279BA8
-04002484 48000A8C
-0A2070F8 00000008
-0527D720 00000000
-$Full Song Library (JasonHaffner)
-0152368C 08000000
-01279B78 000036FF
-$Turnips are Free (donny2112)
-015254DD 08000000
-03286880 00000000
-$Turnips Sell for 65535 Bells on all days but Sunday (donny2112)
-01526DFE 08000000
-03286882 0005FFFF
-$P1 Solid Black (JasonHaffner)
-01522449 08000000
-03266434 00000051
-$P2 Infinite Bells (SSBMaster)
-0152063E 08000000
-052688EC 000F423F
-052A18A0 000F423F
-$P3 Infinite Bells (SSBMaster)
-01520343 08000000
-0526AD2C 000F423F
-052A3CE0 000F434F
-$P4 Infinite Bells (SSBMaster)
-01521976 08000000
-0526D16C 000F423F
-052A6120 000F423F
-$P2 Full Bank Account-Post Office (SSBMaster)
-015233C3 08000000
-05269A8C 3B9AC9FF
-$P3 Full Bank Account-Post Office (SSBMaster)
-015270A7 08000000
-0526BECC 3B9AC9FF
-$P4 Full Bank Account-Post Office (SSBMaster)
-01525D28 08000000
-0526E30C 3B9AC9FF
-$P2 100% Full Nooks Catalog (SSBMaster)
-0152426E 08000000
-03269950 005BFFFF
-03269A14 0013FFFF
-$P3 100% Full Nooks Catalog (SSBMaster)
-0152374B 08000000
-0326BD90 005BFFFF
-0326BE54 0013FFFF
-$P4 100% Full Nooks Catalog (SSBMaster)
-01524164 08000000
-0326E1D0 005BFFFF
-0326E294 0013FFFF
-$P2 House Upgrades = 1 Bell (SSBMaster)
-01525770 08000000
-352688B0 00000001
-052688F0 00000001
-$P3 House Upgrades = 1 Bell (SSBMaster)
-01526612 08000000
-3526ACF0 00000001
-0526AD30 00000001
-$P4 House Upgrades = 1 Bell (SSBMaster)
-01523EFC 08000000
-3526D130 00000001
-0526D170 00000001
-$P2 - 100 Bags Worth 10,000 (SSBMaster)
-01521A3F 08000000
-046CF5E8 0000270F
-$P3 - 100 Bags Worth 10,000 (SSBMaster)
-015265ED 08000000
-046D1A28 0000270F
-$P4 - 100 Bags Worth 10,000 (SSBMaster)
-01527451 08000000
-046D3E68 0000270F
-$P2 - 1,000 Bags Worth 30,000 (SSBMaster)
-01524075 08000000
-046CF5DC 00007530
-$P3 - 1,000 Bags Worth 30,000 (SSBMaster)
-015207B7 08000000
-046D1A1C 00007530
-$P4 - 1,000 Bags Worth 30,000 (SSBMaster)
-01522B70 08000000
-046D3E5C 00007530
-$P2 - 10,000 Bags Worth 50,000 (SSBMaster)
-01525AC6 08000000
-046CF5E0 0000C350
-$P3 - 10,000 Bags Worth 50,000 (SSBMaster)
-01527710 08000000
-046D1A20 0000C350
-$P4 - 10,000 Bags Worth 50,000 (SSBMaster)
-01520422 08000000
-046D3E60 0000C350
-$P2 - 30,000 Bags Worth 99,999 (SSBMaster)
-01525F8D 08000000
-046CF5E4 0001869F
-$P3 - 30,000 Bags Worth 99,999 (SSBMaster)
-01520C18 08000000
-046D1A24 0001869F
-$P4 - 30,000 Bags Worth 99,999 (SSBMaster)
-01523607 08000000
-046D3E64 0001869F
-$All Villagers Wear Big Bro's Shirt (JasonHaffner)
-01527609 08000000
-00000000 8327E11C
-00002496 000F04C4
-$All Villagers Are Bob the Cat (JasonHaffner)
-01526E08 08000000
-00000000 8127D839
-00000000 000F0988
-$All Islanders Are Bob the Cat (JasonHaffner)
-01524BAC 08000000
-01289841 00000000
-$All NES Games in Lost & Found (JasonHaffner)
-01521968 08000000
-052872D0 1DA81DAC
-052872D4 1DB01DB4
-052872D8 1DB81DBC
-052872DC 1DC01DC4
-052872E0 1DC81DCC
-052872E4 1DD01DD4
-052872E8 1DD81DDC
-052872EC 1DE01DE4
-052872F0 1DE81DEC
-052872F4 1DF01DF4
-$NES Balloon Fight - P1 Infinite Lives (donny2112)
-01522488 08000000
-01658FE1 00000009
-$NES Balloon Fight - P2 Infinite Lives (donny2112)
-015245C2 08000000
-01658FE2 00000009
-$NES Clu Clu Land - P1 Infinite Lives (donny2112)
-01527EEE 08000000
-01659020 00000009
-$NES Clu Clu Land - Max out Clock (C-stick Right) (donny2112)
-01523F59 08000000
-BD2F5408 00010000
-03658FCE 00000999
-00000000 40000000
-$NES Clu Clu Land D - P1 Infinite Lives (donny2112)
-01527EEE 08000000
-01659020 00000009
-$NES Clu Clu Land D - Max out Clock (C-stick Right) (donny2112)
-01526C12 08000000
-BD2F5408 00010000
-03658FC6 00000999
-00000000 40000000
-$NES Donkey Kong - P1 Infinite Lives (donny2112)
-01523F81 08000000
-01658FF5 00000009
-$NES Donkey Kong - Jump to get Hammer (Hold A+C-stick Right) (donny2112)
-015246D9 08000000
-BD2F5408 00810000
-01659040 00000001
-00000000 40000000
-$NES Donkey Kong 3 - P1 Infinite Lives (donny2112)
-01522FF9 08000000
-01659030 00000009
-$NES Donkey Kong Jr. - 1 Infinite Lives (donny2112)
-01523D7E 08000000
-01658FEC 00000009
-$NES Excitebike - Never Overheat (SSBMaster)
-015222EF 08000000
-01659356 00000000
-$NES Golf - Always on First Stroke (SSBMaster)
-01526F6F 08000000
-01658FCC 00000001
-$NES Ice Climber - P1 Infinite Lives (JasonHaffner)
-01524E4C 08000000
-01658FC0 00000003
-$NES Ice Climber - P2 Infinite Lives (JasonHaffner)
-01522A2C 08000000
-01658FC1 00000003
-$NES Ice Climber - Infinite Bonus Time (donny2112)
-01525048 08000000
-0365979A 00004000
-0365979E 00004000
-$NES Legend of Zelda - Have Magical Sword (donny2112)
-01521118 08000000
-016595F7 00000003
-$NES Legend of Zelda - Have Silver Arrows, Bow, Red Candle & Infinite Bombs (donny2112)
-01527752 08000000
-056595F8 FF020102
-$NES Legend of Zelda - Have Flute, Meat, Red Potion & Magic Wand (donny2112)
-01520EA2 08000000
-056595FC 01010201
-$NES Legend of Zelda - Have Raft, Spell Book, Red Ring & Ladder (donny2112)
-01527F69 08000000
-05659600 01010201
-$NES Legend of Zelda - Have Lion Key & Power Bracelet (donny2112)
-01520ADE 08000000
-03659604 00000101
-$NES Legend of Zelda - Infinite Rupees and Arrows (donny2112)
-01520953 08000000
-0165960D 000000FF
-$NES Legend of Zelda - Have Magical Boomerang (donny2112)
-01523CE4 08000000
-01659615 00000001
-$NES Legend of Zelda - Have Magical Shield (donny2112)
-01522114 08000000
-01659616 00000001
-$NES Legend of Zelda - Max Hearts/Invincibility (donny2112)
-01521605 08000000
-0165960F 000000FF
-$NES Legend of Zelda - Freeze Enemies (C-stick Left) (donny2112)
-01527C62 08000000
-BD2F5408 00020000
-0165960C 00000001
-00000000 40000000
-$NES Legend of Zelda - Have All Dungeon Maps & Compasses (donny2112)
-01523E2D 08000000
-01659607 000000FF
-03659608 0000FFFF
-0165960A 000000FF
-$NES Legend of Zelda - HAve All Triforce Pieces (SSBMaster)
-01523635 08000000
-01659611 000000FF
-$NES Legend of Zelda - Turbo Sword (SSBMaster)
-01521613 08000000
-0165937D 00000001
-$NES Mario Bros. - P1 Infinite Lives (JasonHaffner)
-0152484F 08000000
-01658FE8 00000003
-$NES Mario Bros. - P2 Infinite Lives (JasonHaffner)
-015216F2 08000000
-01658FEC 00000003
-$NES Mario Bros. - POW Block Never Shrinks (JasonHaffner)
-01521F9C 08000000
-01659010 00000003
-$NES Pinball - P1 Infinite Balls (donny2112)
-0152585F 08000000
-016590F1 00000009
-$NES Punch-Out! - Infinite Hearts (donny2112)
-0152195A 08000000
-016592C3 00000009
-016592C4 00000009
-$NES Punch-Out! - Infinite Stars (donny2112)
-01523894 08000000
-016592E1 00000003
-$NES Punch-Out! - Infinite Health (One hit knock-downs still knock you down) (donny2112)
-015272A0 08000000
-01659331 00000060
-03659332 00006060
-$NES Punch-Out! - Knock Down Opponent with one Successful Hit (donny2112)
-01526C66 08000000
-05659338 00000000
-$NES Punch-Out! - Reset Timer (D-pad Left) (donny2112)
-01521E0F 08000000
-4A2070F8 00000001
-016592A2 00000000
-036592A4 00000001
-$NES Super Mario Bros. - Enable 2nd Quest (donny2112)
-01520FF8 08000000
-0165979C 00000001
-$NES Super Mario Bros. - Infinite Lives (donny2112)
-01523180 08000000
-016596FA 00000009
-$NES Super Mario Bros. - Invincible (Pass Through Enemies) (donny2112)
-01520B59 08000000
-0165973E 00000006
-$NES Super Mario Bros. - Invincible (Kill Enemies) (donny2112)
-01523FD2 08000000
-0165973F 00000018
-$NES Super Mario Bros. - Always Big Mario (donny2112)
-01522617 08000000
-016596F6 00000001
-$NES Super Mario Bros. - Always Fire Mario (donny2112)
-01525F74 08000000
-016596F6 00000002
-$NES Super Mario Bros. - Freeze Timer (donny2112)
-0152245E 08000000
-01659727 0000000C
-$NES Wario's Woods - Infinite Credits (donny2112)
-01523E93 08000000
-0165E60B 00000009
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Core]
-FastDiscSpeed = 1
+# GAFE01 - Animal Crossing NTSC
+[EmuState]
+#The Emulation State (as of r1027)
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame]
+[ActionReplay]
+$(M) (Datel)
+01521549 88000000
+C40959EC 0000FF00
+$Make Game Save Copyable (donny2112)
+01522C0A 08000000
+8C091F20 909C0028
+04091F24 4BF70FFC
+04002F20 38000004
+04002F24 981C0034
+04002F28 38000000
+04002F2C 4808EFFC
+$Weed-Be-Gone Avtivate/Restore (D-Pad Down/Up) (donny2112)
+015229BD 08000000
+04002484 4E800020
+04002F10 3CE08128
+04002F14 80A7D720
+04002F18 A0C50000
+04002F1C 2C060008
+04002F20 41820018
+04002F24 2C060009
+04002F28 41820010
+04002F2C 2C06000A
+04002F30 41820008
+04002F34 4800000C
+04002F38 38C00000
+04002F3C B0C50000
+04002F40 38A50002
+04002F44 54A6043E
+04002F48 2806D710
+04002F4C 41820008
+04002F50 4BFFFFC8
+04002F54 4E800020
+4A2070F8 00000004
+0527D720 81279BA8
+04002484 48000A8C
+0A2070F8 00000008
+0527D720 00000000
+$Full Song Library (JasonHaffner)
+0152368C 08000000
+01279B78 000036FF
+$Turnips are Free (donny2112)
+015254DD 08000000
+03286880 00000000
+$Turnips Sell for 65535 Bells on all days but Sunday (donny2112)
+01526DFE 08000000
+03286882 0005FFFF
+$P1 Solid Black (JasonHaffner)
+01522449 08000000
+03266434 00000051
+$P2 Infinite Bells (SSBMaster)
+0152063E 08000000
+052688EC 000F423F
+052A18A0 000F423F
+$P3 Infinite Bells (SSBMaster)
+01520343 08000000
+0526AD2C 000F423F
+052A3CE0 000F434F
+$P4 Infinite Bells (SSBMaster)
+01521976 08000000
+0526D16C 000F423F
+052A6120 000F423F
+$P2 Full Bank Account-Post Office (SSBMaster)
+015233C3 08000000
+05269A8C 3B9AC9FF
+$P3 Full Bank Account-Post Office (SSBMaster)
+015270A7 08000000
+0526BECC 3B9AC9FF
+$P4 Full Bank Account-Post Office (SSBMaster)
+01525D28 08000000
+0526E30C 3B9AC9FF
+$P2 100% Full Nooks Catalog (SSBMaster)
+0152426E 08000000
+03269950 005BFFFF
+03269A14 0013FFFF
+$P3 100% Full Nooks Catalog (SSBMaster)
+0152374B 08000000
+0326BD90 005BFFFF
+0326BE54 0013FFFF
+$P4 100% Full Nooks Catalog (SSBMaster)
+01524164 08000000
+0326E1D0 005BFFFF
+0326E294 0013FFFF
+$P2 House Upgrades = 1 Bell (SSBMaster)
+01525770 08000000
+352688B0 00000001
+052688F0 00000001
+$P3 House Upgrades = 1 Bell (SSBMaster)
+01526612 08000000
+3526ACF0 00000001
+0526AD30 00000001
+$P4 House Upgrades = 1 Bell (SSBMaster)
+01523EFC 08000000
+3526D130 00000001
+0526D170 00000001
+$P2 - 100 Bags Worth 10,000 (SSBMaster)
+01521A3F 08000000
+046CF5E8 0000270F
+$P3 - 100 Bags Worth 10,000 (SSBMaster)
+015265ED 08000000
+046D1A28 0000270F
+$P4 - 100 Bags Worth 10,000 (SSBMaster)
+01527451 08000000
+046D3E68 0000270F
+$P2 - 1,000 Bags Worth 30,000 (SSBMaster)
+01524075 08000000
+046CF5DC 00007530
+$P3 - 1,000 Bags Worth 30,000 (SSBMaster)
+015207B7 08000000
+046D1A1C 00007530
+$P4 - 1,000 Bags Worth 30,000 (SSBMaster)
+01522B70 08000000
+046D3E5C 00007530
+$P2 - 10,000 Bags Worth 50,000 (SSBMaster)
+01525AC6 08000000
+046CF5E0 0000C350
+$P3 - 10,000 Bags Worth 50,000 (SSBMaster)
+01527710 08000000
+046D1A20 0000C350
+$P4 - 10,000 Bags Worth 50,000 (SSBMaster)
+01520422 08000000
+046D3E60 0000C350
+$P2 - 30,000 Bags Worth 99,999 (SSBMaster)
+01525F8D 08000000
+046CF5E4 0001869F
+$P3 - 30,000 Bags Worth 99,999 (SSBMaster)
+01520C18 08000000
+046D1A24 0001869F
+$P4 - 30,000 Bags Worth 99,999 (SSBMaster)
+01523607 08000000
+046D3E64 0001869F
+$All Villagers Wear Big Bro's Shirt (JasonHaffner)
+01527609 08000000
+00000000 8327E11C
+00002496 000F04C4
+$All Villagers Are Bob the Cat (JasonHaffner)
+01526E08 08000000
+00000000 8127D839
+00000000 000F0988
+$All Islanders Are Bob the Cat (JasonHaffner)
+01524BAC 08000000
+01289841 00000000
+$All NES Games in Lost & Found (JasonHaffner)
+01521968 08000000
+052872D0 1DA81DAC
+052872D4 1DB01DB4
+052872D8 1DB81DBC
+052872DC 1DC01DC4
+052872E0 1DC81DCC
+052872E4 1DD01DD4
+052872E8 1DD81DDC
+052872EC 1DE01DE4
+052872F0 1DE81DEC
+052872F4 1DF01DF4
+$NES Balloon Fight - P1 Infinite Lives (donny2112)
+01522488 08000000
+01658FE1 00000009
+$NES Balloon Fight - P2 Infinite Lives (donny2112)
+015245C2 08000000
+01658FE2 00000009
+$NES Clu Clu Land - P1 Infinite Lives (donny2112)
+01527EEE 08000000
+01659020 00000009
+$NES Clu Clu Land - Max out Clock (C-stick Right) (donny2112)
+01523F59 08000000
+BD2F5408 00010000
+03658FCE 00000999
+00000000 40000000
+$NES Clu Clu Land D - P1 Infinite Lives (donny2112)
+01527EEE 08000000
+01659020 00000009
+$NES Clu Clu Land D - Max out Clock (C-stick Right) (donny2112)
+01526C12 08000000
+BD2F5408 00010000
+03658FC6 00000999
+00000000 40000000
+$NES Donkey Kong - P1 Infinite Lives (donny2112)
+01523F81 08000000
+01658FF5 00000009
+$NES Donkey Kong - Jump to get Hammer (Hold A+C-stick Right) (donny2112)
+015246D9 08000000
+BD2F5408 00810000
+01659040 00000001
+00000000 40000000
+$NES Donkey Kong 3 - P1 Infinite Lives (donny2112)
+01522FF9 08000000
+01659030 00000009
+$NES Donkey Kong Jr. - 1 Infinite Lives (donny2112)
+01523D7E 08000000
+01658FEC 00000009
+$NES Excitebike - Never Overheat (SSBMaster)
+015222EF 08000000
+01659356 00000000
+$NES Golf - Always on First Stroke (SSBMaster)
+01526F6F 08000000
+01658FCC 00000001
+$NES Ice Climber - P1 Infinite Lives (JasonHaffner)
+01524E4C 08000000
+01658FC0 00000003
+$NES Ice Climber - P2 Infinite Lives (JasonHaffner)
+01522A2C 08000000
+01658FC1 00000003
+$NES Ice Climber - Infinite Bonus Time (donny2112)
+01525048 08000000
+0365979A 00004000
+0365979E 00004000
+$NES Legend of Zelda - Have Magical Sword (donny2112)
+01521118 08000000
+016595F7 00000003
+$NES Legend of Zelda - Have Silver Arrows, Bow, Red Candle & Infinite Bombs (donny2112)
+01527752 08000000
+056595F8 FF020102
+$NES Legend of Zelda - Have Flute, Meat, Red Potion & Magic Wand (donny2112)
+01520EA2 08000000
+056595FC 01010201
+$NES Legend of Zelda - Have Raft, Spell Book, Red Ring & Ladder (donny2112)
+01527F69 08000000
+05659600 01010201
+$NES Legend of Zelda - Have Lion Key & Power Bracelet (donny2112)
+01520ADE 08000000
+03659604 00000101
+$NES Legend of Zelda - Infinite Rupees and Arrows (donny2112)
+01520953 08000000
+0165960D 000000FF
+$NES Legend of Zelda - Have Magical Boomerang (donny2112)
+01523CE4 08000000
+01659615 00000001
+$NES Legend of Zelda - Have Magical Shield (donny2112)
+01522114 08000000
+01659616 00000001
+$NES Legend of Zelda - Max Hearts/Invincibility (donny2112)
+01521605 08000000
+0165960F 000000FF
+$NES Legend of Zelda - Freeze Enemies (C-stick Left) (donny2112)
+01527C62 08000000
+BD2F5408 00020000
+0165960C 00000001
+00000000 40000000
+$NES Legend of Zelda - Have All Dungeon Maps & Compasses (donny2112)
+01523E2D 08000000
+01659607 000000FF
+03659608 0000FFFF
+0165960A 000000FF
+$NES Legend of Zelda - HAve All Triforce Pieces (SSBMaster)
+01523635 08000000
+01659611 000000FF
+$NES Legend of Zelda - Turbo Sword (SSBMaster)
+01521613 08000000
+0165937D 00000001
+$NES Mario Bros. - P1 Infinite Lives (JasonHaffner)
+0152484F 08000000
+01658FE8 00000003
+$NES Mario Bros. - P2 Infinite Lives (JasonHaffner)
+015216F2 08000000
+01658FEC 00000003
+$NES Mario Bros. - POW Block Never Shrinks (JasonHaffner)
+01521F9C 08000000
+01659010 00000003
+$NES Pinball - P1 Infinite Balls (donny2112)
+0152585F 08000000
+016590F1 00000009
+$NES Punch-Out! - Infinite Hearts (donny2112)
+0152195A 08000000
+016592C3 00000009
+016592C4 00000009
+$NES Punch-Out! - Infinite Stars (donny2112)
+01523894 08000000
+016592E1 00000003
+$NES Punch-Out! - Infinite Health (One hit knock-downs still knock you down) (donny2112)
+015272A0 08000000
+01659331 00000060
+03659332 00006060
+$NES Punch-Out! - Knock Down Opponent with one Successful Hit (donny2112)
+01526C66 08000000
+05659338 00000000
+$NES Punch-Out! - Reset Timer (D-pad Left) (donny2112)
+01521E0F 08000000
+4A2070F8 00000001
+016592A2 00000000
+036592A4 00000001
+$NES Super Mario Bros. - Enable 2nd Quest (donny2112)
+01520FF8 08000000
+0165979C 00000001
+$NES Super Mario Bros. - Infinite Lives (donny2112)
+01523180 08000000
+016596FA 00000009
+$NES Super Mario Bros. - Invincible (Pass Through Enemies) (donny2112)
+01520B59 08000000
+0165973E 00000006
+$NES Super Mario Bros. - Invincible (Kill Enemies) (donny2112)
+01523FD2 08000000
+0165973F 00000018
+$NES Super Mario Bros. - Always Big Mario (donny2112)
+01522617 08000000
+016596F6 00000001
+$NES Super Mario Bros. - Always Fire Mario (donny2112)
+01525F74 08000000
+016596F6 00000002
+$NES Super Mario Bros. - Freeze Timer (donny2112)
+0152245E 08000000
+01659727 0000000C
+$NES Wario's Woods - Infinite Credits (donny2112)
+01523E93 08000000
+0165E60B 00000009
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Core]
+FastDiscSpeed = 1
diff --git a/Data/User/GameConfig/GAFJ01.ini b/Data/User/GameConfig/GAFJ01.ini
index 148a5ef15a..b6e93ab361 100644
--- a/Data/User/GameConfig/GAFJ01.ini
+++ b/Data/User/GameConfig/GAFJ01.ini
@@ -1,20 +1,19 @@
-# GAFJ01 - Doubutsu no Mori Plus
-[EmuState]
-#The Emulation State
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame]
-[ActionReplay]
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Core]
-FastDiscSpeed = 1
+# GAFJ01 - Doubutsu no Mori Plus
+[EmuState]
+#The Emulation State
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame]
+[ActionReplay]
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Core]
+FastDiscSpeed = 1
diff --git a/Data/User/GameConfig/GAFP01.ini b/Data/User/GameConfig/GAFP01.ini
index 6a4effbf39..7930f58e5f 100644
--- a/Data/User/GameConfig/GAFP01.ini
+++ b/Data/User/GameConfig/GAFP01.ini
@@ -1,20 +1,19 @@
-# GAFP01 - Animal Crossing
-[EmuState]
-#The Emulation State
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame]
-[ActionReplay]
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Core]
-FastDiscSpeed = 1
+# GAFP01 - Animal Crossing
+[EmuState]
+#The Emulation State
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame]
+[ActionReplay]
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Core]
+FastDiscSpeed = 1
diff --git a/Data/User/GameConfig/GAFU01.ini b/Data/User/GameConfig/GAFU01.ini
index 8d81be9e8b..273357ddc1 100644
--- a/Data/User/GameConfig/GAFU01.ini
+++ b/Data/User/GameConfig/GAFU01.ini
@@ -1,20 +1,19 @@
-# GAFU01 - Animal Crossing
-[EmuState]
-#The Emulation State
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame]
-[ActionReplay]
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Core]
-FastDiscSpeed = 1
+# GAFU01 - Animal Crossing
+[EmuState]
+#The Emulation State
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame]
+[ActionReplay]
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Core]
+FastDiscSpeed = 1
diff --git a/Data/User/GameConfig/GAUE08.ini b/Data/User/GameConfig/GAUE08.ini
index d134940264..744661cae1 100644
--- a/Data/User/GameConfig/GAUE08.ini
+++ b/Data/User/GameConfig/GAUE08.ini
@@ -1,70 +1,68 @@
-# GAUE08 - auto modellista
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 5
-EmulationIssues = Slowdowns ingame if Accurate texture cache is disabled.
-[OnFrame] Add memory patches to be applied every frame here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[ActionReplay] Add action replay cheats here.
-$Master Code
-C40EBABC 0000FF00
-$Max Total Races Played
-021B301C 0000270F
-$Low Total Play Time
-041B3018 00000000
-$Max Total Play Time
-041B3018 80BF0000
-$Max 1st Places
-021B301E 0000270F
-$Max 2nd Places
-021B3020 0000270F
-$No 2nd Places
-021B3020 00000000
-$Max 3rd Places
-021B3022 0000270F
-$No 3rd Places
-021B3022 00000000
-$Max 4th+ Places
-021B3024 0000270F
-$No 4th+ Places
-021B3024 00000000
-$No Top Speed/No Shifting Needed
-3A1EA826 00000020
-04205CC0 00000000
-$C-Stick Sends Car 1 Back To Start
-3A1EA826 00000080
-00206704 00000000
-$C-Stick Sends Car 2 Back To Start
-3A1EA826 00000080
-00207264 00000000
-$C-Stick Sends Car 3 Back To Start
-3A1EA826 00000080
-00207DC4 00000000
-$C-Stick Sends Car 4 Back To Start
-3A1EA826 00000080
-00208924 00000000
-$C-Stick Sends Car 5 Back To Start
-3A1EA826 00000080
-00209484 00000000
-$C-Stick Sends Car 6 Back To Start
-3A1EA826 00000080
-00209FE4 00000000
-$C-Stick Sends Car 7 Back To Start
-3A1EA826 00000080
-0020AB44 00000000
-$C-Stick Sends All Car Back To Start
-7A1EA826 00000080
-00000000 80206704
-00000000 00070B60
-[Video_Settings]
-UseXFB = True
-UseRealXFB = False
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 128
-[Gecko]
+# GAUE08 - auto modellista
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 5
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[ActionReplay] Add action replay cheats here.
+$Master Code
+C40EBABC 0000FF00
+$Max Total Races Played
+021B301C 0000270F
+$Low Total Play Time
+041B3018 00000000
+$Max Total Play Time
+041B3018 80BF0000
+$Max 1st Places
+021B301E 0000270F
+$Max 2nd Places
+021B3020 0000270F
+$No 2nd Places
+021B3020 00000000
+$Max 3rd Places
+021B3022 0000270F
+$No 3rd Places
+021B3022 00000000
+$Max 4th+ Places
+021B3024 0000270F
+$No 4th+ Places
+021B3024 00000000
+$No Top Speed/No Shifting Needed
+3A1EA826 00000020
+04205CC0 00000000
+$C-Stick Sends Car 1 Back To Start
+3A1EA826 00000080
+00206704 00000000
+$C-Stick Sends Car 2 Back To Start
+3A1EA826 00000080
+00207264 00000000
+$C-Stick Sends Car 3 Back To Start
+3A1EA826 00000080
+00207DC4 00000000
+$C-Stick Sends Car 4 Back To Start
+3A1EA826 00000080
+00208924 00000000
+$C-Stick Sends Car 5 Back To Start
+3A1EA826 00000080
+00209484 00000000
+$C-Stick Sends Car 6 Back To Start
+3A1EA826 00000080
+00209FE4 00000000
+$C-Stick Sends Car 7 Back To Start
+3A1EA826 00000080
+0020AB44 00000000
+$C-Stick Sends All Car Back To Start
+7A1EA826 00000080
+00000000 80206704
+00000000 00070B60
+[Video_Settings]
+UseXFB = True
+UseRealXFB = False
+[Gecko]
diff --git a/Data/User/GameConfig/GAUJ08.ini b/Data/User/GameConfig/GAUJ08.ini
index 5f36abb0f2..e50492df00 100644
--- a/Data/User/GameConfig/GAUJ08.ini
+++ b/Data/User/GameConfig/GAUJ08.ini
@@ -1,20 +1,18 @@
-# GAUJ08 - auto modellista
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 5
-EmulationIssues = Slowdowns ingame if Accurate texture cache is disabled.
-[OnFrame] Add memory patches to be applied every frame here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[ActionReplay] Add action replay cheats here.
-[Video_Settings]
-UseXFB = True
-UseRealXFB = False
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 128
-[Gecko]
+# GAUJ08 - auto modellista
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 5
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[ActionReplay] Add action replay cheats here.
+[Video_Settings]
+UseXFB = True
+UseRealXFB = False
+[Gecko]
diff --git a/Data/User/GameConfig/GAVE78.ini b/Data/User/GameConfig/GAVE78.ini
index 1e39963483..9dfbf912ee 100644
--- a/Data/User/GameConfig/GAVE78.ini
+++ b/Data/User/GameConfig/GAVE78.ini
@@ -1,15 +1,14 @@
-# GAVE78 - Avatar 06
-[Core] Values set here will override the main dolphin settings.
-TLBHack = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 3
-EmulationIssues =
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-
+# GAVE78 - Avatar 06
+[Core] Values set here will override the main dolphin settings.
+TLBHack = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 3
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+
diff --git a/Data/User/GameConfig/GAVP78.ini b/Data/User/GameConfig/GAVP78.ini
index 97b105e31f..2ee27ffcf6 100644
--- a/Data/User/GameConfig/GAVP78.ini
+++ b/Data/User/GameConfig/GAVP78.ini
@@ -1,19 +1,18 @@
-# GAVP78 - Avatar: The Legend of Aang
-[Core] Values set here will override the main dolphin settings.
-TLBHack = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 3
-EmulationIssues =
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
+# GAVP78 - Avatar: The Legend of Aang
+[Core] Values set here will override the main dolphin settings.
+TLBHack = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 3
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/GAVY78.ini b/Data/User/GameConfig/GAVY78.ini
index fe7c2c8ce7..07834aecc4 100644
--- a/Data/User/GameConfig/GAVY78.ini
+++ b/Data/User/GameConfig/GAVY78.ini
@@ -1,19 +1,18 @@
-# GAVE78 - Avatar: The Legend of Aang
-[Core] Values set here will override the main dolphin settings.
-TLBHack = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 3
-EmulationIssues =
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
+# GAVE78 - Avatar: The Legend of Aang
+[Core] Values set here will override the main dolphin settings.
+TLBHack = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 3
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/GC6E01.ini b/Data/User/GameConfig/GC6E01.ini
index f802ab00bb..6b8e2c10c3 100644
--- a/Data/User/GameConfig/GC6E01.ini
+++ b/Data/User/GameConfig/GC6E01.ini
@@ -1,20 +1,19 @@
-# GC6E01 - Pokemon Colosseum
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = HLE music drops notes, if EFB scale is not integral, 1x, 2x or 3x serious texture glitches occur
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-EFBScale = 1
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 0
-
+# GC6E01 - Pokemon Colosseum
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = HLE music drops notes, if EFB scale is not integral, 1x, 2x or 3x serious texture glitches occur
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+EFBScale = 1
+SafeTextureCacheColorSamples = 0
+
diff --git a/Data/User/GameConfig/GC6P01.ini b/Data/User/GameConfig/GC6P01.ini
index 26c7ee2401..e5ed8f4587 100644
--- a/Data/User/GameConfig/GC6P01.ini
+++ b/Data/User/GameConfig/GC6P01.ini
@@ -1,19 +1,18 @@
-# GC6P01 - Pokemon Colosseum
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = HLE music drops notes, if EFB scale is not integral, 1x, 2x or 3x serious texture glitches occur
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-EFBScale = 1
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 0
+# GC6P01 - Pokemon Colosseum
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = HLE music drops notes, if EFB scale is not integral, 1x, 2x or 3x serious texture glitches occur
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+EFBScale = 1
+SafeTextureCacheColorSamples = 0
diff --git a/Data/User/GameConfig/GC9P6S.ini b/Data/User/GameConfig/GC9P6S.ini
index 14399c6602..2712d2df0c 100644
--- a/Data/User/GameConfig/GC9P6S.ini
+++ b/Data/User/GameConfig/GC9P6S.ini
@@ -1,11 +1,10 @@
-# GC9P6S - Conan disc0
-[Core] Values set here will override the main dolphin settings.
-TLBHack = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = Need ZTP BLoom Hack and Safe Texture Cache
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
+# GC9P6S - Conan disc0
+[Core] Values set here will override the main dolphin settings.
+TLBHack = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Need ZTP BLoom Hack and Safe Texture Cache
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/GCCE01.ini b/Data/User/GameConfig/GCCE01.ini
index a841bf6408..585d980d85 100644
--- a/Data/User/GameConfig/GCCE01.ini
+++ b/Data/User/GameConfig/GCCE01.ini
@@ -1,306 +1,305 @@
-# GCCE01 - FINAL FANTASY Crystal Chronicles
-[Core]
-#Values set here will override the main dolphin settings.
-[EmuState]
-#The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame]
-[ActionReplay]
-$(M)
-04EC59D3 88000000
-C418D2E0 0000FF01
-$Infinite Health: Single Player
-04EC59D4 08000000
-0410B494 A0A3001A
-0410B4A0 B0A3001C
-0410B4AC 48000058
-$Infinite Health: Multi-Player
-04EC59D5 08000000
-0410B494 A0A3001A
-0410B4A0 B0A3001C
-0410B4AC 48000058
-041227D8 A003001A
-041227E0 B003001C
-$Max Hearts
-04EC59D6 08000000
-0409F3D4 38C00010
-$Max Strength
-04EC59D7 08000000
-0409F3A0 38C003E7
-$Super Max Strength
-04EC59D8 08000000
-0409F3A0 38C003E7
-0409FA88 380003E7
-$Max Defense
-04EC59D9 08000000
-0409F3C8 38C003E7
-$Super Max Defense
-04EC59DA 08000000
-0409F3C8 38C003E7
-0409FA9C 380003E7
-$Max Magic
-04EC59DB 08000000
-0409F3BC 38C003E7
-$Super Max Magic
-04EC59DC 08000000
-0409F3BC 38C003E7
-0409FAB4 380003E7
-$Able To Leave Chalice Aura
-04EC59DD 08000000
-0412122C 60000000
-04121250 60000000
-$Press L+X - Change Chalice to Fire
-04EC59E0 08000000
-0A243104 00000440
-0221EF3E 00000001
-$Press L+Y - Change Chalice to Water
-04EC59E1 08000000
-0A243104 00000840
-0221EF3E 00000002
-$Press R+X - Change Chalice to Wind
-04EC59E2 08000000
-0A243104 00000420
-0221EF3E 00000004
-$Press R+Y - Change Chalice to Earth
-04EC59E3 08000000
-0A243104 00000820
-0221EF3E 00000008
-$Press L+R - Change Chalice to Unknown
-04EC59E4 08000000
-0A243104 00000060
-0221EF3E 00000010
-$Single player Max/Infinite Gil
-04EC59ED 08000000
-0421F470 05F5E0FF
-$Single player Love All Foods
-04EC59EE 08000000
-0221F628 00070064
-$Single player Have All Artifacts
-04EC59EF 08000000
-00000000 8221F3A6
-0000009F 01490001
-$Single Player ITEM SLOT 4 CONTAINS Copper Sword
-04EC59F1 08000000
-0221F32C 00000001
-$Single Player ITEM SLOT 4 CONTAINS Iron Sword
-04EC59F2 08000000
-0221F32C 00000002
-$Single Player ITEM SLOT 4 CONTAINS Steel Blade
-04EC59F3 08000000
-0221F32C 00000003
-$Single Player ITEM SLOT 4 CONTAINS Feather Saber
-04EC59F4 08000000
-0221F32C 00000004
-$Single Player ITEM SLOT 4 CONTAINS Bastard Sword
-04EC59F5 08000000
-0221F32C 00000005
-$Single Player ITEM SLOT 4 CONTAINS Defender
-04EC59F6 08000000
-0221F32C 00000006
-$Single Player ITEM SLOT 4 CONTAINS Rune Blade
-04EC59F7 08000000
-0221F32C 00000007
-$Single Player ITEM SLOT 4 CONTAINS Excalibur
-04EC59F8 08000000
-0221F32C 00000008
-$Single Player ITEM SLOT 4 CONTAINS Ragnarok
-04EC59F9 08000000
-0221F32C 00000009
-$Single Player ITEM SLOT 4 CONTAINS Treasured Sword
-04EC59FA 08000000
-0221F32C 0000000A
-$Single Player ITEM SLOT 4 CONTAINS Father's Sword
-04EC59FB 08000000
-0221F32C 0000000B
-$Single Player ITEM SLOT 4 CONTAINS Marr Sword
-04EC59FC 08000000
-0221F32C 0000000C
-$Single Player ITEM SLOT 4 CONTAINS Ultima Sword
-04EC59FD 08000000
-0221F32C 0000000F
-$Single Player ITEM SLOT 4 CONTAINS Iron Lance
-04EC59FE 08000000
-0221F32C 00000012
-$Single Player ITEM SLOT 4 CONTAINS Partisan
-04EC59FF 08000000
-0221F32C 00000013
-$Single Player ITEM SLOT 4 CONTAINS Sonic Lance
-04EC5A00 08000000
-0221F32C 00000014
-$Single Player ITEM SLOT 4 CONTAINS Titan Lance
-04EC5A01 08000000
-0221F32C 00000015
-$Single Player ITEM SLOT 4 CONTAINS Halberd
-04EC5A02 08000000
-0221F32C 00000016
-$Single Player ITEM SLOT 4 CONTAINS Highwind
-04EC5A03 08000000
-0221F32C 00000017
-$Single Player ITEM SLOT 4 CONTAINS Dragon Lance
-04EC5A04 08000000
-0221F32C 00000018
-$Single Player ITEM SLOT 4 CONTAINS Dragoon Spear
-04EC5A05 08000000
-0221F32C 00000019
-$Single Player ITEM SLOT 4 CONTAINS Gungnir
-04EC5A06 08000000
-0221F32C 0000001A
-$Single Player ITEM SLOT 4 CONTAINS Longinus
-04EC5A07 08000000
-0221F32C 0000001B
-$Single Player ITEM SLOT 4 CONTAINS Treasured Spear
-04EC5A08 08000000
-0221F32C 0000001C
-$Single Player ITEM SLOT 4 CONTAINS Father's Spear
-04EC5A09 08000000
-0221F32C 0000001D
-$Single Player ITEM SLOT 4 CONTAINS Marr Spear
-04EC5A0A 08000000
-0221F32C 0000001E
-$Single Player ITEM SLOT 4 CONTAINS Ultima Lance
-04EC5A0B 08000000
-0221F32C 0000001F
-$Single Player ITEM SLOT 4 CONTAINS Orc Hammer
-04EC5A0C 08000000
-0221F32C 00000024
-$Single Player ITEM SLOT 4 CONTAINS Wave Hammer
-04EC5A0D 08000000
-0221F32C 00000025
-$Single Player ITEM SLOT 4 CONTAINS Rune Hammer
-04EC5A0E 08000000
-0221F32C 00000026
-$Single Player ITEM SLOT 4 CONTAINS Goblin Hammer
-04EC5A0F 08000000
-0221F32C 00000027
-$Single Player ITEM SLOT 4 CONTAINS Sonic Hammer
-04EC5A10 08000000
-0221F32C 00000028
-$Single Player ITEM SLOT 4 CONTAINS Prism Hammer
-04EC5A11 08000000
-0221F32C 00000029
-$Single Player ITEM SLOT 4 CONTAINS Mythril Hammer
-04EC5A12 08000000
-0221F32C 0000002A
-$Single Player ITEM SLOT 4 CONTAINS Mystic Hammer
-04EC5A13 08000000
-0221F32C 0000002B
-$Single Player ITEM SLOT 4 CONTAINS Treasured Hammer
-04EC5A14 08000000
-0221F32C 0000002C
-$Single Player ITEM SLOT 4 CONTAINS Father's Hammer
-04EC5A15 08000000
-0221F32C 0000002D
-$Single Player ITEM SLOT 4 CONTAINS Marr Hammer
-04EC5A16 08000000
-0221F32C 0000002E
-$Single Player ITEM SLOT 4 CONTAINS Ultima Hammer
-04EC5A17 08000000
-0221F32C 0000002F
-$Single Player ITEM SLOT 4 CONTAINS Aura Racket
-04EC5A18 08000000
-0221F32C 00000034
-$Single Player ITEM SLOT 4 CONTAINS Solid Racket
-04EC5A19 08000000
-0221F32C 00000035
-$Single Player ITEM SLOT 4 CONTAINS Dual Shooter
-04EC5A1A 08000000
-0221F32C 00000036
-$Single Player ITEM SLOT 4 CONTAINS Elemental Cudgel
-04EC5A1B 08000000
-0221F32C 00000037
-$Single Player ITEM SLOT 4 CONTAINS Steel Cudgel
-04EC5A1C 08000000
-0221F32C 00000038
-$Single Player ITEM SLOT 4 CONTAINS Prism Bludgeon
-04EC5A1D 08000000
-0221F32C 00000039
-$Single Player ITEM SLOT 4 CONTAINS Butterfly Head
-04EC5A1E 08000000
-0221F32C 0000003A
-$Single Player ITEM SLOT 4 CONTAINS Queen's Head
-04EC5A1F 08000000
-0221F32C 0000003B
-$Single Player ITEM SLOT 4 CONTAINS Dreamcatcher
-04EC5A20 08000000
-0221F32C 0000003C
-$Single Player ITEM SLOT 4 CONTAINS Treasured Maul
-04EC5A21 08000000
-0221F32C 0000003D
-$Single Player ITEM SLOT 4 CONTAINS Father's Maul
-04EC5A22 08000000
-0221F32C 0000003E
-$Single Player ITEM SLOT 4 CONTAINS Marr Maul
-04EC5A23 08000000
-0221F32C 0000003F
-$Single Player ITEM SLOT 4 CONTAINS Ultima Maul
-04EC5A24 08000000
-0221F32C 00000040
-$Single Player ITEM SLOT 4 CONTAINS Travel Clothes
-04EC5A25 08000000
-0221F32C 00000045
-$Single Player ITEM SLOT 4 CONTAINS Bronze Plate
-04EC5A26 08000000
-0221F32C 00000046
-$Single Player ITEM SLOT 4 CONTAINS Iron Plate
-04EC5A27 08000000
-0221F32C 00000047
-$Single Player ITEM SLOT 4 CONTAINS Mythril Plate
-04EC5A28 08000000
-0221F32C 00000048
-$Single Player ITEM SLOT 4 CONTAINS Flame Mail
-04EC5A29 08000000
-0221F32C 00000049
-$Single Player ITEM SLOT 4 CONTAINS Frost Mail
-04EC5A2A 08000000
-0221F32C 0000004A
-$Single Player ITEM SLOT 4 CONTAINS Storm Mail
-04EC5A2B 08000000
-0221F32C 0000004B
-$Single Player ITEM SLOT 4 CONTAINS Time Mail
-04EC5A2C 08000000
-0221F32C 0000004C
-$Single Player ITEM SLOT 4 CONTAINS Eternal Mail
-04EC5A2D 08000000
-0221F32C 0000004D
-$Single Player ITEM SLOT 4 CONTAINS Blessed Mail
-04EC5A2E 08000000
-0221F32C 0000004E
-$Single Player ITEM SLOT 4 CONTAINS Saintly Mail
-04EC5A2F 08000000
-0221F32C 0000004F
-$Single Player ITEM SLOT 4 CONTAINS Gold Mail
-04EC5A30 08000000
-0221F32C 00000050
-$Single Player ITEM SLOT 4 CONTAINS Crystal Mail
-04EC5A31 08000000
-0221F32C 00000051
-$Single Player ITEM SLOT 4 CONTAINS Diamond Plate
-04EC5A32 08000000
-0221F32C 00000052
-$Single Player ITEM SLOT 4 CONTAINS Gaia Plate
-04EC5A33 08000000
-0221F32C 00000053
-$Single Player ITEM SLOT 4 CONTAINS Mystic Armor
-04EC5A34 08000000
-0221F32C 00000054
-$Single Player ITEM SLOT 4 CONTAINS Taterskin Coat
-04EC5A35 08000000
-0221F32C 00000055
-$Single Player ITEM SLOT 4 CONTAINS Coat
-04EC5A36 08000000
-0221F32C 00000056
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Video_Enhancements]
-[Video_Hacks]
-EFBEmulateFormatChanges = True
+# GCCE01 - FINAL FANTASY Crystal Chronicles
+[Core]
+#Values set here will override the main dolphin settings.
+[EmuState]
+#The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame]
+[ActionReplay]
+$(M)
+04EC59D3 88000000
+C418D2E0 0000FF01
+$Infinite Health: Single Player
+04EC59D4 08000000
+0410B494 A0A3001A
+0410B4A0 B0A3001C
+0410B4AC 48000058
+$Infinite Health: Multi-Player
+04EC59D5 08000000
+0410B494 A0A3001A
+0410B4A0 B0A3001C
+0410B4AC 48000058
+041227D8 A003001A
+041227E0 B003001C
+$Max Hearts
+04EC59D6 08000000
+0409F3D4 38C00010
+$Max Strength
+04EC59D7 08000000
+0409F3A0 38C003E7
+$Super Max Strength
+04EC59D8 08000000
+0409F3A0 38C003E7
+0409FA88 380003E7
+$Max Defense
+04EC59D9 08000000
+0409F3C8 38C003E7
+$Super Max Defense
+04EC59DA 08000000
+0409F3C8 38C003E7
+0409FA9C 380003E7
+$Max Magic
+04EC59DB 08000000
+0409F3BC 38C003E7
+$Super Max Magic
+04EC59DC 08000000
+0409F3BC 38C003E7
+0409FAB4 380003E7
+$Able To Leave Chalice Aura
+04EC59DD 08000000
+0412122C 60000000
+04121250 60000000
+$Press L+X - Change Chalice to Fire
+04EC59E0 08000000
+0A243104 00000440
+0221EF3E 00000001
+$Press L+Y - Change Chalice to Water
+04EC59E1 08000000
+0A243104 00000840
+0221EF3E 00000002
+$Press R+X - Change Chalice to Wind
+04EC59E2 08000000
+0A243104 00000420
+0221EF3E 00000004
+$Press R+Y - Change Chalice to Earth
+04EC59E3 08000000
+0A243104 00000820
+0221EF3E 00000008
+$Press L+R - Change Chalice to Unknown
+04EC59E4 08000000
+0A243104 00000060
+0221EF3E 00000010
+$Single player Max/Infinite Gil
+04EC59ED 08000000
+0421F470 05F5E0FF
+$Single player Love All Foods
+04EC59EE 08000000
+0221F628 00070064
+$Single player Have All Artifacts
+04EC59EF 08000000
+00000000 8221F3A6
+0000009F 01490001
+$Single Player ITEM SLOT 4 CONTAINS Copper Sword
+04EC59F1 08000000
+0221F32C 00000001
+$Single Player ITEM SLOT 4 CONTAINS Iron Sword
+04EC59F2 08000000
+0221F32C 00000002
+$Single Player ITEM SLOT 4 CONTAINS Steel Blade
+04EC59F3 08000000
+0221F32C 00000003
+$Single Player ITEM SLOT 4 CONTAINS Feather Saber
+04EC59F4 08000000
+0221F32C 00000004
+$Single Player ITEM SLOT 4 CONTAINS Bastard Sword
+04EC59F5 08000000
+0221F32C 00000005
+$Single Player ITEM SLOT 4 CONTAINS Defender
+04EC59F6 08000000
+0221F32C 00000006
+$Single Player ITEM SLOT 4 CONTAINS Rune Blade
+04EC59F7 08000000
+0221F32C 00000007
+$Single Player ITEM SLOT 4 CONTAINS Excalibur
+04EC59F8 08000000
+0221F32C 00000008
+$Single Player ITEM SLOT 4 CONTAINS Ragnarok
+04EC59F9 08000000
+0221F32C 00000009
+$Single Player ITEM SLOT 4 CONTAINS Treasured Sword
+04EC59FA 08000000
+0221F32C 0000000A
+$Single Player ITEM SLOT 4 CONTAINS Father's Sword
+04EC59FB 08000000
+0221F32C 0000000B
+$Single Player ITEM SLOT 4 CONTAINS Marr Sword
+04EC59FC 08000000
+0221F32C 0000000C
+$Single Player ITEM SLOT 4 CONTAINS Ultima Sword
+04EC59FD 08000000
+0221F32C 0000000F
+$Single Player ITEM SLOT 4 CONTAINS Iron Lance
+04EC59FE 08000000
+0221F32C 00000012
+$Single Player ITEM SLOT 4 CONTAINS Partisan
+04EC59FF 08000000
+0221F32C 00000013
+$Single Player ITEM SLOT 4 CONTAINS Sonic Lance
+04EC5A00 08000000
+0221F32C 00000014
+$Single Player ITEM SLOT 4 CONTAINS Titan Lance
+04EC5A01 08000000
+0221F32C 00000015
+$Single Player ITEM SLOT 4 CONTAINS Halberd
+04EC5A02 08000000
+0221F32C 00000016
+$Single Player ITEM SLOT 4 CONTAINS Highwind
+04EC5A03 08000000
+0221F32C 00000017
+$Single Player ITEM SLOT 4 CONTAINS Dragon Lance
+04EC5A04 08000000
+0221F32C 00000018
+$Single Player ITEM SLOT 4 CONTAINS Dragoon Spear
+04EC5A05 08000000
+0221F32C 00000019
+$Single Player ITEM SLOT 4 CONTAINS Gungnir
+04EC5A06 08000000
+0221F32C 0000001A
+$Single Player ITEM SLOT 4 CONTAINS Longinus
+04EC5A07 08000000
+0221F32C 0000001B
+$Single Player ITEM SLOT 4 CONTAINS Treasured Spear
+04EC5A08 08000000
+0221F32C 0000001C
+$Single Player ITEM SLOT 4 CONTAINS Father's Spear
+04EC5A09 08000000
+0221F32C 0000001D
+$Single Player ITEM SLOT 4 CONTAINS Marr Spear
+04EC5A0A 08000000
+0221F32C 0000001E
+$Single Player ITEM SLOT 4 CONTAINS Ultima Lance
+04EC5A0B 08000000
+0221F32C 0000001F
+$Single Player ITEM SLOT 4 CONTAINS Orc Hammer
+04EC5A0C 08000000
+0221F32C 00000024
+$Single Player ITEM SLOT 4 CONTAINS Wave Hammer
+04EC5A0D 08000000
+0221F32C 00000025
+$Single Player ITEM SLOT 4 CONTAINS Rune Hammer
+04EC5A0E 08000000
+0221F32C 00000026
+$Single Player ITEM SLOT 4 CONTAINS Goblin Hammer
+04EC5A0F 08000000
+0221F32C 00000027
+$Single Player ITEM SLOT 4 CONTAINS Sonic Hammer
+04EC5A10 08000000
+0221F32C 00000028
+$Single Player ITEM SLOT 4 CONTAINS Prism Hammer
+04EC5A11 08000000
+0221F32C 00000029
+$Single Player ITEM SLOT 4 CONTAINS Mythril Hammer
+04EC5A12 08000000
+0221F32C 0000002A
+$Single Player ITEM SLOT 4 CONTAINS Mystic Hammer
+04EC5A13 08000000
+0221F32C 0000002B
+$Single Player ITEM SLOT 4 CONTAINS Treasured Hammer
+04EC5A14 08000000
+0221F32C 0000002C
+$Single Player ITEM SLOT 4 CONTAINS Father's Hammer
+04EC5A15 08000000
+0221F32C 0000002D
+$Single Player ITEM SLOT 4 CONTAINS Marr Hammer
+04EC5A16 08000000
+0221F32C 0000002E
+$Single Player ITEM SLOT 4 CONTAINS Ultima Hammer
+04EC5A17 08000000
+0221F32C 0000002F
+$Single Player ITEM SLOT 4 CONTAINS Aura Racket
+04EC5A18 08000000
+0221F32C 00000034
+$Single Player ITEM SLOT 4 CONTAINS Solid Racket
+04EC5A19 08000000
+0221F32C 00000035
+$Single Player ITEM SLOT 4 CONTAINS Dual Shooter
+04EC5A1A 08000000
+0221F32C 00000036
+$Single Player ITEM SLOT 4 CONTAINS Elemental Cudgel
+04EC5A1B 08000000
+0221F32C 00000037
+$Single Player ITEM SLOT 4 CONTAINS Steel Cudgel
+04EC5A1C 08000000
+0221F32C 00000038
+$Single Player ITEM SLOT 4 CONTAINS Prism Bludgeon
+04EC5A1D 08000000
+0221F32C 00000039
+$Single Player ITEM SLOT 4 CONTAINS Butterfly Head
+04EC5A1E 08000000
+0221F32C 0000003A
+$Single Player ITEM SLOT 4 CONTAINS Queen's Head
+04EC5A1F 08000000
+0221F32C 0000003B
+$Single Player ITEM SLOT 4 CONTAINS Dreamcatcher
+04EC5A20 08000000
+0221F32C 0000003C
+$Single Player ITEM SLOT 4 CONTAINS Treasured Maul
+04EC5A21 08000000
+0221F32C 0000003D
+$Single Player ITEM SLOT 4 CONTAINS Father's Maul
+04EC5A22 08000000
+0221F32C 0000003E
+$Single Player ITEM SLOT 4 CONTAINS Marr Maul
+04EC5A23 08000000
+0221F32C 0000003F
+$Single Player ITEM SLOT 4 CONTAINS Ultima Maul
+04EC5A24 08000000
+0221F32C 00000040
+$Single Player ITEM SLOT 4 CONTAINS Travel Clothes
+04EC5A25 08000000
+0221F32C 00000045
+$Single Player ITEM SLOT 4 CONTAINS Bronze Plate
+04EC5A26 08000000
+0221F32C 00000046
+$Single Player ITEM SLOT 4 CONTAINS Iron Plate
+04EC5A27 08000000
+0221F32C 00000047
+$Single Player ITEM SLOT 4 CONTAINS Mythril Plate
+04EC5A28 08000000
+0221F32C 00000048
+$Single Player ITEM SLOT 4 CONTAINS Flame Mail
+04EC5A29 08000000
+0221F32C 00000049
+$Single Player ITEM SLOT 4 CONTAINS Frost Mail
+04EC5A2A 08000000
+0221F32C 0000004A
+$Single Player ITEM SLOT 4 CONTAINS Storm Mail
+04EC5A2B 08000000
+0221F32C 0000004B
+$Single Player ITEM SLOT 4 CONTAINS Time Mail
+04EC5A2C 08000000
+0221F32C 0000004C
+$Single Player ITEM SLOT 4 CONTAINS Eternal Mail
+04EC5A2D 08000000
+0221F32C 0000004D
+$Single Player ITEM SLOT 4 CONTAINS Blessed Mail
+04EC5A2E 08000000
+0221F32C 0000004E
+$Single Player ITEM SLOT 4 CONTAINS Saintly Mail
+04EC5A2F 08000000
+0221F32C 0000004F
+$Single Player ITEM SLOT 4 CONTAINS Gold Mail
+04EC5A30 08000000
+0221F32C 00000050
+$Single Player ITEM SLOT 4 CONTAINS Crystal Mail
+04EC5A31 08000000
+0221F32C 00000051
+$Single Player ITEM SLOT 4 CONTAINS Diamond Plate
+04EC5A32 08000000
+0221F32C 00000052
+$Single Player ITEM SLOT 4 CONTAINS Gaia Plate
+04EC5A33 08000000
+0221F32C 00000053
+$Single Player ITEM SLOT 4 CONTAINS Mystic Armor
+04EC5A34 08000000
+0221F32C 00000054
+$Single Player ITEM SLOT 4 CONTAINS Taterskin Coat
+04EC5A35 08000000
+0221F32C 00000055
+$Single Player ITEM SLOT 4 CONTAINS Coat
+04EC5A36 08000000
+0221F32C 00000056
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video_Enhancements]
+[Video_Hacks]
+EFBEmulateFormatChanges = True
diff --git a/Data/User/GameConfig/GCCP01.ini b/Data/User/GameConfig/GCCP01.ini
index bd51e4c97e..f43e776095 100644
--- a/Data/User/GameConfig/GCCP01.ini
+++ b/Data/User/GameConfig/GCCP01.ini
@@ -1,22 +1,21 @@
-# GCCP01 - FINAL FANTASY Crystal Chronicles
-[Core]
-#Values set here will override the main dolphin settings.
-[EmuState]
-#The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame]
-[ActionReplay]
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Video_Hacks]
-EFBEmulateFormatChanges = True
+# GCCP01 - FINAL FANTASY Crystal Chronicles
+[Core]
+#Values set here will override the main dolphin settings.
+[EmuState]
+#The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame]
+[ActionReplay]
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video_Hacks]
+EFBEmulateFormatChanges = True
diff --git a/Data/User/GameConfig/GCZE69.ini b/Data/User/GameConfig/GCZE69.ini
index dd3f749849..8e3e77c412 100644
--- a/Data/User/GameConfig/GCZE69.ini
+++ b/Data/User/GameConfig/GCZE69.ini
@@ -1,17 +1,19 @@
-# GCZE69 - CATWOMAN
-[Core] Values set here will override the main dolphin settings.
-TLBHack = 1
-MMU = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues = Needs MMU and is slow (r6898)
-EmulationStateId = 4
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Video_Enhancements]
-
+# GCZE69 - CATWOMAN
+[Core] Values set here will override the main dolphin settings.
+TLBHack = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationIssues =
+EmulationStateId = 4
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video_Enhancements]
diff --git a/Data/User/GameConfig/GCZP69.ini b/Data/User/GameConfig/GCZP69.ini
index 320db678f9..32fba6ada9 100644
--- a/Data/User/GameConfig/GCZP69.ini
+++ b/Data/User/GameConfig/GCZP69.ini
@@ -1,15 +1,19 @@
-# GCZP69 - CATWOMAN
-[Core] Values set here will override the main dolphin settings.
-TLBHack = 1
-MMU = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues = Needs MMU and is slow (r6898)
-EmulationStateId = 4
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
+# GCZP69 - CATWOMAN
+[Core] Values set here will override the main dolphin settings.
+TLBHack = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationIssues =
+EmulationStateId = 4
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video_Enhancements]
diff --git a/Data/User/GameConfig/GDEE71.ini b/Data/User/GameConfig/GDEE71.ini
index fdc28586f1..45321adaef 100644
--- a/Data/User/GameConfig/GDEE71.ini
+++ b/Data/User/GameConfig/GDEE71.ini
@@ -1,20 +1,19 @@
-# GDEE71 - Baldur's Gate: Dark Alliance
-[Core] Values set here will override the main dolphin settings.
-SkipIdle = 0
-BlockMerging = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
+# GDEE71 - Baldur's Gate: Dark Alliance
+[Core] Values set here will override the main dolphin settings.
+SkipIdle = 0
+BlockMerging = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/GDGE7H.ini b/Data/User/GameConfig/GDGE7H.ini
index 60f3aefa3f..9228786a72 100644
--- a/Data/User/GameConfig/GDGE7H.ini
+++ b/Data/User/GameConfig/GDGE7H.ini
@@ -1,9 +1,9 @@
# GDGE7H - Dragon's Lair 3D
[Core] Values set here will override the main dolphin settings.
-MMU = 1
+TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 3
-EmulationIssues = Needs MMU (very slow due to that).
+EmulationStateId = 4
+EmulationIssues = Needs Real Xfb for videos to show up.
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/GDGP78.ini b/Data/User/GameConfig/GDGP78.ini
index f425112d03..7ff92c8b6c 100644
--- a/Data/User/GameConfig/GDGP78.ini
+++ b/Data/User/GameConfig/GDGP78.ini
@@ -1,9 +1,9 @@
# GDGP78 - Dragon's Lair 3D
[Core] Values set here will override the main dolphin settings.
-MMU = 1
+TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 3
-EmulationIssues = Needs MMU (very slow due to that).
+EmulationStateId = 4
+EmulationIssues = Needs Real Xfb for videos to show up.
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/GEAE8P.ini b/Data/User/GameConfig/GEAE8P.ini
index 9b6bdd2f3a..5c2856e1ca 100644
--- a/Data/User/GameConfig/GEAE8P.ini
+++ b/Data/User/GameConfig/GEAE8P.ini
@@ -1,18 +1,17 @@
-# GEAE8P - Skies of Arcadia Legends
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = LLE audio is needed to fix sound issues. Gfx glitches.
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 1
-PH_SZNear = 0
-PH_SZFar = 1
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar = 1.99998
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
+# GEAE8P - Skies of Arcadia Legends
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = LLE audio is needed to fix sound issues. Gfx glitches.
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 1
+PH_SZNear = 0
+PH_SZFar = 1
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar = 1.99998
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/GEAP8P.ini b/Data/User/GameConfig/GEAP8P.ini
index 2d7aef6141..08b7a7969e 100644
--- a/Data/User/GameConfig/GEAP8P.ini
+++ b/Data/User/GameConfig/GEAP8P.ini
@@ -1,18 +1,17 @@
-# GEAP8P - Skies of Arcadia Legends
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = LLE audio is needed to fix sound issues. Gfx glitches.
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 1
-PH_SZNear = 0
-PH_SZFar = 1
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar = 1.99998
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
+# GEAP8P - Skies of Arcadia Legends
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = LLE audio is needed to fix sound issues. Gfx glitches.
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 1
+PH_SZNear = 0
+PH_SZFar = 1
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar = 1.99998
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/GEDE01.ini b/Data/User/GameConfig/GEDE01.ini
index 43454cf0b0..28462dcba1 100644
--- a/Data/User/GameConfig/GEDE01.ini
+++ b/Data/User/GameConfig/GEDE01.ini
@@ -1,18 +1,17 @@
-# GEDE01 - Eternal Darkness
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 1
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear = 5
-PH_ZFar = 0.15
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
+# GEDE01 - Eternal Darkness
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 1
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear = 5
+PH_ZFar = 0.15
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/GEDP01.ini b/Data/User/GameConfig/GEDP01.ini
index f7ae147375..c41ee0fa00 100644
--- a/Data/User/GameConfig/GEDP01.ini
+++ b/Data/User/GameConfig/GEDP01.ini
@@ -1,18 +1,17 @@
-# GEDP01 - Eternal Darkness
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 1
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear = 5
-PH_ZFar = 0.15
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
+# GEDP01 - Eternal Darkness
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 1
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear = 5
+PH_ZFar = 0.15
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/GEND69.ini b/Data/User/GameConfig/GEND69.ini
index 43cb8e86e1..c7b7c6f2eb 100644
--- a/Data/User/GameConfig/GEND69.ini
+++ b/Data/User/GameConfig/GEND69.ini
@@ -1,16 +1,18 @@
-# GEND69 - 007: Everything or Nothing
-[Core] Values set here will override the main dolphin settings.
-TLBHack = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues = Needs LLE audio for proper sound.
-EmulationStateId = 4
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
+# GEND69 - 007: Everything or Nothing
+[Core] Values set here will override the main dolphin settings.
+TLBHack = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationIssues = Needs LLE audio for proper sound.
+EmulationStateId = 4
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/GENE69.ini b/Data/User/GameConfig/GENE69.ini
index 6307e0268f..cb4b698140 100644
--- a/Data/User/GameConfig/GENE69.ini
+++ b/Data/User/GameConfig/GENE69.ini
@@ -1,16 +1,18 @@
-# GENE69 - 007: Everything or Nothing
-[Core] Values set here will override the main dolphin settings.
-TLBHack = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues = Needs LLE audio for proper sound.
-EmulationStateId = 4
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
+# GENE69 - 007: Everything or Nothing
+[Core] Values set here will override the main dolphin settings.
+TLBHack = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationIssues = Needs LLE audio for proper sound.
+EmulationStateId = 4
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/GENP69.ini b/Data/User/GameConfig/GENP69.ini
index be23957d70..a29ab3d236 100644
--- a/Data/User/GameConfig/GENP69.ini
+++ b/Data/User/GameConfig/GENP69.ini
@@ -1,16 +1,18 @@
-# GENP69 - 007: Everything or Nothing
-[Core] Values set here will override the main dolphin settings.
-TLBHack = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues = Needs LLE audio for proper sound.
-EmulationStateId = 4
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
+# GENP69 - 007: Everything or Nothing
+[Core] Values set here will override the main dolphin settings.
+TLBHack = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationIssues = Needs LLE audio for proper sound.
+EmulationStateId = 4
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/GENS69.ini b/Data/User/GameConfig/GENS69.ini
index c0645ed29a..fc8dd1c8fe 100644
--- a/Data/User/GameConfig/GENS69.ini
+++ b/Data/User/GameConfig/GENS69.ini
@@ -1,16 +1,18 @@
-# GENS69 - 007: Everything or Nothing
-[Core] Values set here will override the main dolphin settings.
-TLBHack = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues = Needs LLE audio for proper sound.
-EmulationStateId = 4
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
+# GENS69 - 007: Everything or Nothing
+[Core] Values set here will override the main dolphin settings.
+TLBHack = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationIssues = Needs LLE audio for proper sound.
+EmulationStateId = 4
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/GEOE08.ini b/Data/User/GameConfig/GEOE08.ini
index 060ad29139..a361f3dc61 100644
--- a/Data/User/GameConfig/GEOE08.ini
+++ b/Data/User/GameConfig/GEOE08.ini
@@ -1,22 +1,21 @@
-# GEOE08 - CAPCOM VS. SNK 2 EO
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = GFX glitches
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video_Settings]
-UseXFB = True
-UseRealXFB = False
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-EFBScale = 0
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Enhancements]
+# GEOE08 - CAPCOM VS. SNK 2 EO
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = GFX glitches
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video_Settings]
+UseXFB = True
+UseRealXFB = False
+SafeTextureCacheColorSamples = 512
+EFBScale = 0
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Enhancements]
diff --git a/Data/User/GameConfig/GEOP08.ini b/Data/User/GameConfig/GEOP08.ini
index a5e69b5b0f..bdfcf73e61 100644
--- a/Data/User/GameConfig/GEOP08.ini
+++ b/Data/User/GameConfig/GEOP08.ini
@@ -1,22 +1,21 @@
-# GEOP08 - CAPCOM VS. SNK 2 EO
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = GFX glitches
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video_Settings]
-UseXFB = True
-UseRealXFB = False
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-EFBScale = 0
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Enhancements]
+# GEOP08 - CAPCOM VS. SNK 2 EO
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = GFX glitches
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video_Settings]
+UseXFB = True
+UseRealXFB = False
+SafeTextureCacheColorSamples = 512
+EFBScale = 0
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Enhancements]
diff --git a/Data/User/GameConfig/GEZE8P.ini b/Data/User/GameConfig/GEZE8P.ini
index 6082ea8f59..7789e114d6 100644
--- a/Data/User/GameConfig/GEZE8P.ini
+++ b/Data/User/GameConfig/GEZE8P.ini
@@ -1,20 +1,19 @@
-# GEZE8P - BillyHatcher
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues =
-EmulationStateId = 4
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Video_Enhancements]
-[Video_Hacks]
+# GEZE8P - BillyHatcher
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationIssues =
+EmulationStateId = 4
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video_Enhancements]
+[Video_Hacks]
diff --git a/Data/User/GameConfig/GEZP8P.ini b/Data/User/GameConfig/GEZP8P.ini
index 8b48eb836e..2c27b7a95b 100644
--- a/Data/User/GameConfig/GEZP8P.ini
+++ b/Data/User/GameConfig/GEZP8P.ini
@@ -1,20 +1,19 @@
-# GEZP8P - BillyHatcher
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues =
-EmulationStateId = 4
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Video_Enhancements]
-[Video_Hacks]
+# GEZP8P - BillyHatcher
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationIssues =
+EmulationStateId = 4
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video_Enhancements]
+[Video_Hacks]
diff --git a/Data/User/GameConfig/GF5E69.ini b/Data/User/GameConfig/GF5E69.ini
index 40e4375018..79b7cf1fd5 100644
--- a/Data/User/GameConfig/GF5E69.ini
+++ b/Data/User/GameConfig/GF5E69.ini
@@ -1,13 +1,16 @@
# GF5E69 - FIFA Soccer 2005
[Core] Values set here will override the main dolphin settings.
TLBHack = 1
-MMU = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues = Sound issues need LLE plugin and videos are messed up. Slow due to MMU(r6932)
-EmulationStateId = 3
+EmulationIssues = Sound issues need LLE audio to be fixed and the videos are messed up.
+EmulationStateId = 4
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
[Gecko]
-
diff --git a/Data/User/GameConfig/GF6E69.ini b/Data/User/GameConfig/GF6E69.ini
index 037aeb7404..d812a5d154 100644
--- a/Data/User/GameConfig/GF6E69.ini
+++ b/Data/User/GameConfig/GF6E69.ini
@@ -1,12 +1,16 @@
# GF6E69 - FIFA 06
[Core] Values set here will override the main dolphin settings.
-MMU = 1
+TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 3
-EmulationIssues = Sound issues need LLE plugin and videos are messed up. Slow due to MMU(r6932)
+EmulationStateId = 4
+EmulationIssues = Sound issues need LLE audio to be fixed and the videos are messed up.
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
[Gecko]
-
diff --git a/Data/User/GameConfig/GF6F69.ini b/Data/User/GameConfig/GF6F69.ini
index 19bc8b9072..2696bcb453 100644
--- a/Data/User/GameConfig/GF6F69.ini
+++ b/Data/User/GameConfig/GF6F69.ini
@@ -1,11 +1,16 @@
# GF6F69 - FIFA 06
[Core] Values set here will override the main dolphin settings.
-MMU = 1
+TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = Sound issues need LLE plugin and videos are messed up. Slow due to MMU(r6932)
+EmulationIssues = Sound issues need LLE audio to be fixed and the videos are messed up.
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
[Gecko]
diff --git a/Data/User/GameConfig/GF7E01.ini b/Data/User/GameConfig/GF7E01.ini
index caa783726c..f2107ac50e 100644
--- a/Data/User/GameConfig/GF7E01.ini
+++ b/Data/User/GameConfig/GF7E01.ini
@@ -1,85 +1,84 @@
-# GF7E01 - STARFOX ASSAULT
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = EFB must be an integer (integral, 1x, 2x, 3x).
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-$(M)
-C4159190 0000FF01
-$Infinite Health
-0402C334 380006C0
-0402C3E0 380006C0
-0402F51C 380006C0
-04046160 38A002BC
-04046188 38A002BC
-0404619C 386004B0
-040461D8 380004B0
-04077510 380002BC
-04083E14 38000360
-$Invincible (On Foot)
-04080F18 C04D0000
-0438D120 41000000
-$Infinite Lives
-002A2D20 00000063
-$Infinite Boost
-0402D8E0 380003E9
-0405136C C02D0004
-04054A90 C02D0004
-04054C4C C02D0004
-0438D124 43340000
-0404ACA0 C02D0004
-04050BDC C02D0004
-0405092C C02D0004
-$Max Laser Upgrade: Arwing
-040468FC 38000002
-04046900 901E0208
-04046904 2C000002
-$Max Hits
-022A2D2E 0000270F
-$Infinite Bombs (On Pick-Up)
-04046E08 38000003
-$Infinite Ammo
-040814C8 60000000
-040814CC B064021A
-04081720 38000063
-$Super Jump
-0A29A8BA 00000800
-0407CD30 60000000
-1229A8BA 00000800
-0407CD30 D01F014C
-$All Missions Unlocked
-0029E550 0000000A
-$All Missions Perfectly Completed
-0229E554 0004FFFF
-0229E55E 00040505
-00000000 8429E574
-000F4240 000A0001
-0429E568 000F4240
-0429E56C 000F4240
-$Unlock Xevious
-0029E526 00000001
-$Unlock Wolf (Multiplayer)
-0029E523 00000001
-$Unlock Peppy (Multiplayer)
-0029E522 00000001
-$All Multiplayer Maps
-0029E50B 00000601
-0229E518 00000101
-$Unlock Lots of Stuff In VS Mode By Completing A Match
-0429E538 0000FFFF
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-EFBScale = 1
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Video_Hacks]
-EFBToTextureEnable = False
-EFBCopyEnable = True
+# GF7E01 - STARFOX ASSAULT
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = EFB must be an integer (integral, 1x, 2x, 3x).
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+$(M)
+C4159190 0000FF01
+$Infinite Health
+0402C334 380006C0
+0402C3E0 380006C0
+0402F51C 380006C0
+04046160 38A002BC
+04046188 38A002BC
+0404619C 386004B0
+040461D8 380004B0
+04077510 380002BC
+04083E14 38000360
+$Invincible (On Foot)
+04080F18 C04D0000
+0438D120 41000000
+$Infinite Lives
+002A2D20 00000063
+$Infinite Boost
+0402D8E0 380003E9
+0405136C C02D0004
+04054A90 C02D0004
+04054C4C C02D0004
+0438D124 43340000
+0404ACA0 C02D0004
+04050BDC C02D0004
+0405092C C02D0004
+$Max Laser Upgrade: Arwing
+040468FC 38000002
+04046900 901E0208
+04046904 2C000002
+$Max Hits
+022A2D2E 0000270F
+$Infinite Bombs (On Pick-Up)
+04046E08 38000003
+$Infinite Ammo
+040814C8 60000000
+040814CC B064021A
+04081720 38000063
+$Super Jump
+0A29A8BA 00000800
+0407CD30 60000000
+1229A8BA 00000800
+0407CD30 D01F014C
+$All Missions Unlocked
+0029E550 0000000A
+$All Missions Perfectly Completed
+0229E554 0004FFFF
+0229E55E 00040505
+00000000 8429E574
+000F4240 000A0001
+0429E568 000F4240
+0429E56C 000F4240
+$Unlock Xevious
+0029E526 00000001
+$Unlock Wolf (Multiplayer)
+0029E523 00000001
+$Unlock Peppy (Multiplayer)
+0029E522 00000001
+$All Multiplayer Maps
+0029E50B 00000601
+0229E518 00000101
+$Unlock Lots of Stuff In VS Mode By Completing A Match
+0429E538 0000FFFF
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+EFBScale = 1
+SafeTextureCacheColorSamples = 512
+[Video_Hacks]
+EFBToTextureEnable = False
+EFBCopyEnable = True
diff --git a/Data/User/GameConfig/GF7P01.ini b/Data/User/GameConfig/GF7P01.ini
index 56a1d6ff09..c7da03cff4 100644
--- a/Data/User/GameConfig/GF7P01.ini
+++ b/Data/User/GameConfig/GF7P01.ini
@@ -1,82 +1,81 @@
-# GF7P01 - STARFOX ASSAULT
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = EFB must be an integer (integral, 1x, 2x, 3x).
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay]
-$(M)
-06A0E452 98000000
-C4141B8C 0002FF00
-$Single Mode
-06A0E453 15008000
-$Unlock Missions
-06A0E460 147229C0
-842B85F4 000109A0
-422B85F4 000038A0
-422B85F4 000298A3
-422B85F4 00030014
-842B85F4 FFFEF660
-$On Foot Missions
-06A0E45D 147229A8
-04000000 00000000
-$Infinite Health
-06A0E45E 14722EC0
-422BCF20 006F0258
-$Infinite Ammo
-06A0E462 14722EC0
-04085ECC 38000063
-04085ED0 B003021A
-04085ED4 4800014C
-$Moon Jump (Hold Y)
-06A0E461 14722EC0
-3A2B4C7A 00000800
-422BCF20 00A63E80
-$Have Some Weapons
-06A0E463 14722EC0
-04086070 380001CE
-$Flying Missions
-06A0E454 147229A8
-04000000 00000000
-$Infinite Health
-06A0E455 14722A40
-040465FC 38000500
-$Infinite Lives
-06A0E456 14722A40
-002BD0E0 00000063
-$Infinite Bombs
-06A0E45F 14722A40
-040471C8 3800000A
-002BCF2B 00000009
-$Instant Power Refill
-06A0E457 14722A40
-04055240 D07F0380
-$VS. Mode
-06A0E458 15008000
-$Unlock Maps
-06A0E459 14722C40
-002B88CB 00000E01
-$Unlock Peppy Hare
-06A0E45A 14722C40
-002B88E3 00000001
-$Unlock Star Wolf
-06A0E45B 14722C40
-002B88E4 00000001
-$Bonus: Unlock Xevious
-06A0E45C 18000000
-002B88E6 00000001
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-EFBScale = 1
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Video_Hacks]
-EFBToTextureEnable = False
-EFBCopyEnable = True
+# GF7P01 - STARFOX ASSAULT
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = EFB must be an integer (integral, 1x, 2x, 3x).
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay]
+$(M)
+06A0E452 98000000
+C4141B8C 0002FF00
+$Single Mode
+06A0E453 15008000
+$Unlock Missions
+06A0E460 147229C0
+842B85F4 000109A0
+422B85F4 000038A0
+422B85F4 000298A3
+422B85F4 00030014
+842B85F4 FFFEF660
+$On Foot Missions
+06A0E45D 147229A8
+04000000 00000000
+$Infinite Health
+06A0E45E 14722EC0
+422BCF20 006F0258
+$Infinite Ammo
+06A0E462 14722EC0
+04085ECC 38000063
+04085ED0 B003021A
+04085ED4 4800014C
+$Moon Jump (Hold Y)
+06A0E461 14722EC0
+3A2B4C7A 00000800
+422BCF20 00A63E80
+$Have Some Weapons
+06A0E463 14722EC0
+04086070 380001CE
+$Flying Missions
+06A0E454 147229A8
+04000000 00000000
+$Infinite Health
+06A0E455 14722A40
+040465FC 38000500
+$Infinite Lives
+06A0E456 14722A40
+002BD0E0 00000063
+$Infinite Bombs
+06A0E45F 14722A40
+040471C8 3800000A
+002BCF2B 00000009
+$Instant Power Refill
+06A0E457 14722A40
+04055240 D07F0380
+$VS. Mode
+06A0E458 15008000
+$Unlock Maps
+06A0E459 14722C40
+002B88CB 00000E01
+$Unlock Peppy Hare
+06A0E45A 14722C40
+002B88E3 00000001
+$Unlock Star Wolf
+06A0E45B 14722C40
+002B88E4 00000001
+$Bonus: Unlock Xevious
+06A0E45C 18000000
+002B88E6 00000001
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+EFBScale = 1
+SafeTextureCacheColorSamples = 512
+[Video_Hacks]
+EFBToTextureEnable = False
+EFBCopyEnable = True
diff --git a/Data/User/GameConfig/GFAD69.ini b/Data/User/GameConfig/GFAD69.ini
index 115f719d10..5abba727c5 100644
--- a/Data/User/GameConfig/GFAD69.ini
+++ b/Data/User/GameConfig/GFAD69.ini
@@ -1,9 +1,9 @@
# GFAD69 - FIFA 2003
[Core] Values set here will override the main dolphin settings.
-MMU = 1
+TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 3
-EmulationIssues = Sound issues need LLE plugin and videos are messed up. Slow due to MMU.
+EmulationStateId = 4
+EmulationIssues = Sound issues need LLE plugin and videos are messed up.
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/GFAE69.ini b/Data/User/GameConfig/GFAE69.ini
index bfeae04974..f41893cbb3 100644
--- a/Data/User/GameConfig/GFAE69.ini
+++ b/Data/User/GameConfig/GFAE69.ini
@@ -1,9 +1,9 @@
# GFAE69 - FIFA 2003
[Core] Values set here will override the main dolphin settings.
-MMU = 1
+TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 3
-EmulationIssues = Sound issues need LLE plugin and videos are messed up. Slow due to MMU.
+EmulationStateId = 4
+EmulationIssues = Sound issues need LLE plugin and videos are messed up.
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/GFAP69.ini b/Data/User/GameConfig/GFAP69.ini
index 3de799a41e..97426b2f38 100644
--- a/Data/User/GameConfig/GFAP69.ini
+++ b/Data/User/GameConfig/GFAP69.ini
@@ -1,9 +1,9 @@
# GFAP69 - FIFA 2003
[Core] Values set here will override the main dolphin settings.
-MMU = 1
+TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 3
-EmulationIssues = Sound issues need LLE plugin and videos are messed up. Slow due to MMU.
+EmulationStateId = 4
+EmulationIssues = Sound issues need LLE plugin and videos are messed up.
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/GFAS69.ini b/Data/User/GameConfig/GFAS69.ini
index 003023a82c..1fd280f110 100644
--- a/Data/User/GameConfig/GFAS69.ini
+++ b/Data/User/GameConfig/GFAS69.ini
@@ -1,9 +1,9 @@
# GFAS69 - FIFA 2003
[Core] Values set here will override the main dolphin settings.
-MMU = 1
+TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 3
-EmulationIssues = Sound issues need LLE plugin and videos are messed up. Slow due to MMU.
+EmulationStateId = 4
+EmulationIssues = Sound issues need LLE plugin and videos are messed up.
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/GFYE69.ini b/Data/User/GameConfig/GFYE69.ini
index 8289b3d2ac..4afc12a954 100644
--- a/Data/User/GameConfig/GFYE69.ini
+++ b/Data/User/GameConfig/GFYE69.ini
@@ -1,42 +1,44 @@
-# GFYE69 - FIFA Street 2
-[Core] Values set here will override the main dolphin settings.
-TLBHack = 1
-MMU = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 3
-EmulationIssues = Sound issues need LLE plugin and videos are messed up. Slow due to MMU(r6932)
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-$Master Code
-C4344534 0000FF01
-$Home Team Starts With 10
-2843491F 0000000A
-0043491F 0000000A
-$Home Team Starts With 5
-2843491F 00000005
-0043491F 00000005
-$Home Team Can't Score
-0043491F 00000000
-$Home Team Quick Trick Points
-04434920 000F423F
-$Home Team Low Trick Points
-04434920 00000000
-$Away Team Starts With 10
-284349E7 0000000A
-004349E7 0000000A
-$Away Team Starts With 5
-284349E7 00000005
-004349E7 00000005
-$Away Team Can't Score
-004349E7 00000000
-$Away Team Quick Trick Points
-044349E8 000F423F
-$Away Team Low Trick Points
-044349E8 00000000
-[Video]
-ProjectionHack = 0
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-
+# GFYE69 - FIFA Street 2
+[Core] Values set here will override the main dolphin settings.
+TLBHack = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Sound issues need LLE plugin and videos are messed up.
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+$Master Code
+C4344534 0000FF01
+$Home Team Starts With 10
+2843491F 0000000A
+0043491F 0000000A
+$Home Team Starts With 5
+2843491F 00000005
+0043491F 00000005
+$Home Team Can't Score
+0043491F 00000000
+$Home Team Quick Trick Points
+04434920 000F423F
+$Home Team Low Trick Points
+04434920 00000000
+$Away Team Starts With 10
+284349E7 0000000A
+004349E7 0000000A
+$Away Team Starts With 5
+284349E7 00000005
+004349E7 00000005
+$Away Team Can't Score
+004349E7 00000000
+$Away Team Quick Trick Points
+044349E8 000F423F
+$Away Team Low Trick Points
+044349E8 00000000
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/GFYP69.ini b/Data/User/GameConfig/GFYP69.ini
index e65004851e..8d497995d1 100644
--- a/Data/User/GameConfig/GFYP69.ini
+++ b/Data/User/GameConfig/GFYP69.ini
@@ -1,15 +1,13 @@
-# GFYP69 - FIFA Street 2
-[Core] Values set here will override the main dolphin settings.
-TLBHack = 1
-MMU = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 3
-EmulationIssues = Sound issues need LLE plugin and videos are messed up. Slow due to MMU(r6932)
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
+# GFYP69 - FIFA Street 2
+[Core] Values set here will override the main dolphin settings.
+TLBHack = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Sound issues need LLE plugin and videos are messed up.
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/GG5E52.ini b/Data/User/GameConfig/GG5E52.ini
index 32174bc73d..1b292d43b3 100644
--- a/Data/User/GameConfig/GG5E52.ini
+++ b/Data/User/GameConfig/GG5E52.ini
@@ -2,7 +2,7 @@
[Core] Values set here will override the main dolphin settings.
TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues = Needs Jitil to run. LLE audio fixes sound issues.
+EmulationIssues = LLE audio fixes sound issues.
EmulationStateId = 4
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
diff --git a/Data/User/GameConfig/GGSEA4.ini b/Data/User/GameConfig/GGSEA4.ini
index 2b360866c4..086f9019ed 100644
--- a/Data/User/GameConfig/GGSEA4.ini
+++ b/Data/User/GameConfig/GGSEA4.ini
@@ -1,21 +1,20 @@
-# GGSEA4 - METAL GEAR SOLID THE TWIN SNAKES
-[Core]
-TLBHack = 1
-[EmuState]
-#The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame]
-[ActionReplay]
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-
+# GGSEA4 - METAL GEAR SOLID THE TWIN SNAKES
+[Core]
+TLBHack = 1
+[EmuState]
+#The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame]
+[ActionReplay]
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+
diff --git a/Data/User/GameConfig/GGSJA4.ini b/Data/User/GameConfig/GGSJA4.ini
index 436e9a1838..d36140fd62 100644
--- a/Data/User/GameConfig/GGSJA4.ini
+++ b/Data/User/GameConfig/GGSJA4.ini
@@ -1,15 +1,14 @@
-# GGSJA4 - METAL GEAR SOLID THE TWIN SNAKES
-[Core]
-TLBHack = 1
-#Values set here will override the main dolphin settings.
-[EmuState]
-#The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame]
-[ActionReplay]
-[Video]
-ProjectionHack = 0
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
+# GGSJA4 - METAL GEAR SOLID THE TWIN SNAKES
+[Core]
+TLBHack = 1
+#Values set here will override the main dolphin settings.
+[EmuState]
+#The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame]
+[ActionReplay]
+[Video]
+ProjectionHack = 0
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/GGSPA4.ini b/Data/User/GameConfig/GGSPA4.ini
index e4a358a3cd..c0c8957f39 100644
--- a/Data/User/GameConfig/GGSPA4.ini
+++ b/Data/User/GameConfig/GGSPA4.ini
@@ -1,121 +1,120 @@
-# GGSPA4 - METAL GEAR SOLID THE TWIN SNAKES
-[Core]
-TLBHack = 1
-#Values set here will override the main dolphin settings.
-[EmuState]
-#The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame]
-[ActionReplay]
-$Infinite Health
-425577DC 02D90064
-6C5577DC 81000000
-425577DC 015C0064
-425577DC 02310064
-$Infinite Oxygen
-025666B6 00000DAC
-$No Reload
-325B08F6 0000000F
-025B08FA 00000019
-2A5B08F6 00000010
-025B08FA 0000000F
-$Max Grip Level
-025666E8 0000012C
-$Have Infinite Rations
-025668FA 00000005
-$Have Infinite Medicine
-025668FE 00000001
-$Have Infinite Bandages
-02566900 0000000A
-$Have Infinite Pentazem
-02566902 0000000A
-$Have Body Armor
-02566906 00000001
-$Have Mine Detector
-0256690A 00000001
-$Have RP Sensor
-0256692A 00000001
-$Have Gas Mask
-0256690E 00000001
-$Have Night Vision Goggles
-02566910 00000001
-$Have Thermal Goggles
-02566912 00000001
-$Have Scope
-02566914 00000001
-$Have Digital Camera
-02566916 00000001
-$Have Rope
-02566920 00000001
-$Have Handkerchief
-0256694A 00000001
-$Have Box 1
-02566918 00000001
-$Have Box 2
-02566924 00000001
-$Have Box 3
-02566926 00000001
-$Have Ketchup
-02566928 00000001
-$Have SOCOM Suppressor
-02566932 00000001
-$Have MO Disc
-0256693C 00000001
-$Have Level 99 Keycard
-0256691C 00000063
-$Have Bandana
-02566938 00000001
-$Have Stealth Suit
-02566908 00000001
-$Have M9 (Infinite Ammo)
-0256686A 0000002E
-$Have SOCOM (Infinite Ammo)
-0256686E 0000003D
-$Have PSG1 (Infinite Ammo)
-02566870 0000003D
-$Have Nikita (Infinite Ammo)
-02566874 00000028
-$Have Stinger (Infinite Ammo)
-02566876 00000028
-$Have Claymore (Infinite Ammo)
-02566878 00000010
-$Have C4 (Infinite Ammo)
-0256687A 00000010
-$Have Chaff Grenade (Infinite Ammo)
-0256687C 00000014
-$Have Stun Grenade (Infinite Ammo)
-0256687E 00000014
-$Have Grenade (Infinite Ammo)
-0256688A 00000014
-$Have FAMAS (Infinite Ammo)
-0256688C 000000D3
-$Have PSG1-T (Infinite Ammo)
-0256688E 0000003D
-$Have Book (Infinite Ammo)
-02566892 00000005
-$Have Magazine (Infinite Ammo)
-02566888 00000064
-$Have No PAL Key
-0256694C 00000000
-$Have Warm (Yellow) PAL Key
-0256694C 00000001
-$Have Cold (Blue) PAL Key
-0256694C 00000002
-$Have Hot (Red) PAL Key
-0256694C 00000003
-$Low Total Game Time
-045666F4 000000A0
-$Saved 0 Times
-025666F2 00000000
-$Continued 0 Times
-025666EC 00000000
-$999 Kills
-02566700 000003E7
-$0 Rations Used
-02567B4C 00000000
-[Video]
-ProjectionHack = 0
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
+# GGSPA4 - METAL GEAR SOLID THE TWIN SNAKES
+[Core]
+TLBHack = 1
+#Values set here will override the main dolphin settings.
+[EmuState]
+#The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame]
+[ActionReplay]
+$Infinite Health
+425577DC 02D90064
+6C5577DC 81000000
+425577DC 015C0064
+425577DC 02310064
+$Infinite Oxygen
+025666B6 00000DAC
+$No Reload
+325B08F6 0000000F
+025B08FA 00000019
+2A5B08F6 00000010
+025B08FA 0000000F
+$Max Grip Level
+025666E8 0000012C
+$Have Infinite Rations
+025668FA 00000005
+$Have Infinite Medicine
+025668FE 00000001
+$Have Infinite Bandages
+02566900 0000000A
+$Have Infinite Pentazem
+02566902 0000000A
+$Have Body Armor
+02566906 00000001
+$Have Mine Detector
+0256690A 00000001
+$Have RP Sensor
+0256692A 00000001
+$Have Gas Mask
+0256690E 00000001
+$Have Night Vision Goggles
+02566910 00000001
+$Have Thermal Goggles
+02566912 00000001
+$Have Scope
+02566914 00000001
+$Have Digital Camera
+02566916 00000001
+$Have Rope
+02566920 00000001
+$Have Handkerchief
+0256694A 00000001
+$Have Box 1
+02566918 00000001
+$Have Box 2
+02566924 00000001
+$Have Box 3
+02566926 00000001
+$Have Ketchup
+02566928 00000001
+$Have SOCOM Suppressor
+02566932 00000001
+$Have MO Disc
+0256693C 00000001
+$Have Level 99 Keycard
+0256691C 00000063
+$Have Bandana
+02566938 00000001
+$Have Stealth Suit
+02566908 00000001
+$Have M9 (Infinite Ammo)
+0256686A 0000002E
+$Have SOCOM (Infinite Ammo)
+0256686E 0000003D
+$Have PSG1 (Infinite Ammo)
+02566870 0000003D
+$Have Nikita (Infinite Ammo)
+02566874 00000028
+$Have Stinger (Infinite Ammo)
+02566876 00000028
+$Have Claymore (Infinite Ammo)
+02566878 00000010
+$Have C4 (Infinite Ammo)
+0256687A 00000010
+$Have Chaff Grenade (Infinite Ammo)
+0256687C 00000014
+$Have Stun Grenade (Infinite Ammo)
+0256687E 00000014
+$Have Grenade (Infinite Ammo)
+0256688A 00000014
+$Have FAMAS (Infinite Ammo)
+0256688C 000000D3
+$Have PSG1-T (Infinite Ammo)
+0256688E 0000003D
+$Have Book (Infinite Ammo)
+02566892 00000005
+$Have Magazine (Infinite Ammo)
+02566888 00000064
+$Have No PAL Key
+0256694C 00000000
+$Have Warm (Yellow) PAL Key
+0256694C 00000001
+$Have Cold (Blue) PAL Key
+0256694C 00000002
+$Have Hot (Red) PAL Key
+0256694C 00000003
+$Low Total Game Time
+045666F4 000000A0
+$Saved 0 Times
+025666F2 00000000
+$Continued 0 Times
+025666EC 00000000
+$999 Kills
+02566700 000003E7
+$0 Rations Used
+02567B4C 00000000
+[Video]
+ProjectionHack = 0
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/GGYE41.ini b/Data/User/GameConfig/GGYE41.ini
index 50fe9ee3e0..d803a7d8d2 100644
--- a/Data/User/GameConfig/GGYE41.ini
+++ b/Data/User/GameConfig/GGYE41.ini
@@ -1,23 +1,20 @@
-# GGYE41 - GR2GC
-[Core] Values set here will override the main dolphin settings.
-TLBHack = 1
-MMU = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 3
-EmulationIssues = Needs Real XFB for videos to show up, lle for sound issues.(r6932)
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-UseXFB = True
-UseRealXFB = True
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-
+# GGYE41 - GR2GC
+[Core] Values set here will override the main dolphin settings.
+TLBHack = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 3
+EmulationIssues = Needs Real XFB for videos to show up, lle for sound issues.(r6932)
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+UseXFB = True
+UseRealXFB = True
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/GGYP41.ini b/Data/User/GameConfig/GGYP41.ini
index bf78a71214..db510165eb 100644
--- a/Data/User/GameConfig/GGYP41.ini
+++ b/Data/User/GameConfig/GGYP41.ini
@@ -1,23 +1,20 @@
-# GGYP41 - GR2GC
-[Core] Values set here will override the main dolphin settings.
-TLBHack = 1
-MMU = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 3
-EmulationIssues = Needs Real XFB for videos to show up, lle for sound issues.(r6932)
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-UseXFB = True
-UseRealXFB = True
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-
+# GGYP41 - GR2GC
+[Core] Values set here will override the main dolphin settings.
+TLBHack = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 3
+EmulationIssues = Needs Real XFB for videos to show up, lle for sound issues.(r6932)
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+UseXFB = True
+UseRealXFB = True
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/GH7E5D.ini b/Data/User/GameConfig/GH7E5D.ini
index 4ce4e822d5..15156dd72d 100644
--- a/Data/User/GameConfig/GH7E5D.ini
+++ b/Data/User/GameConfig/GH7E5D.ini
@@ -1,19 +1,18 @@
-# GH7E5D - Happy Feet
-[Core] Values set here will override the main dolphin settings.
-MMU = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues =
-EmulationStateId = 4
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
+# GH7E5D - Happy Feet
+[Core] Values set here will override the main dolphin settings.
+TLBHack = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationIssues =
+EmulationStateId = 4
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/GHCE4Q.ini b/Data/User/GameConfig/GHCE4Q.ini
index 0762662a0d..28d4a87e1d 100644
--- a/Data/User/GameConfig/GHCE4Q.ini
+++ b/Data/User/GameConfig/GHCE4Q.ini
@@ -1,6 +1,6 @@
# GHCE4Q - Chicken Little
[Core] Values set here will override the main dolphin settings.
-MMU = 1
+TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
EmulationIssues =
@@ -8,5 +8,9 @@ EmulationIssues =
[ActionReplay] Add action replay cheats here.
[Video]
ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
[Gecko]
-
diff --git a/Data/User/GameConfig/GHCF4Q.ini b/Data/User/GameConfig/GHCF4Q.ini
index 8fa6ac1159..82d4668bd4 100644
--- a/Data/User/GameConfig/GHCF4Q.ini
+++ b/Data/User/GameConfig/GHCF4Q.ini
@@ -1,6 +1,6 @@
# GHCF4Q - Chicken Little
[Core] Values set here will override the main dolphin settings.
-MMU = 1
+TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
EmulationIssues =
@@ -8,4 +8,9 @@ EmulationIssues =
[ActionReplay] Add action replay cheats here.
[Video]
ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
[Gecko]
diff --git a/Data/User/GameConfig/GIKE70.ini b/Data/User/GameConfig/GIKE70.ini
index e3254eb0af..f6d9e4db2c 100644
--- a/Data/User/GameConfig/GIKE70.ini
+++ b/Data/User/GameConfig/GIKE70.ini
@@ -1,9 +1,15 @@
-# GIKE70 - IKARUGA
-[EmuState]
-EmulationStateId = 5
-[Video]
-[OnFrame]
-[ActionReplay]
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
+# GIKE70 - IKARUGA
+[EmuState]
+EmulationStateId = 5
+EmulationIssues =
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[OnFrame]
+[ActionReplay]
+[Gecko]
+[Video_Settings]
diff --git a/Data/User/GameConfig/GIKP70.ini b/Data/User/GameConfig/GIKP70.ini
index 264ea3055d..55d48b1c89 100644
--- a/Data/User/GameConfig/GIKP70.ini
+++ b/Data/User/GameConfig/GIKP70.ini
@@ -1,9 +1,8 @@
-# GIKP70 - IKARUGA
-[EmuState]
-EmulationStateId = 5
-[Video]
-[OnFrame]
-[ActionReplay]
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
+# GIKP70 - IKARUGA
+[EmuState]
+EmulationStateId = 5
+[Video]
+[OnFrame]
+[ActionReplay]
+[Gecko]
+[Video_Settings]
diff --git a/Data/User/GameConfig/GILE51.ini b/Data/User/GameConfig/GILE51.ini
index a68e2e48dc..344501d75c 100644
--- a/Data/User/GameConfig/GILE51.ini
+++ b/Data/User/GameConfig/GILE51.ini
@@ -1,18 +1,17 @@
-# GILE51 - Aggressive Inline
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Video_Hacks]
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[EmuState]
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame]
-[ActionReplay]
-[Gecko]
+# GILE51 - Aggressive Inline
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video_Hacks]
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[EmuState]
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame]
+[ActionReplay]
+[Gecko]
diff --git a/Data/User/GameConfig/GILP51.ini b/Data/User/GameConfig/GILP51.ini
index d87a00d5b7..562a7b2978 100644
--- a/Data/User/GameConfig/GILP51.ini
+++ b/Data/User/GameConfig/GILP51.ini
@@ -1,18 +1,17 @@
-# GILP51 - Aggressive Inline
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Video_Hacks]
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[EmuState]
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame]
-[ActionReplay]
-[Gecko]
+# GILP51 - Aggressive Inline
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video_Hacks]
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[EmuState]
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame]
+[ActionReplay]
+[Gecko]
diff --git a/Data/User/GameConfig/GIZE52.ini b/Data/User/GameConfig/GIZE52.ini
index c38ae6fb01..8eca4a073e 100644
--- a/Data/User/GameConfig/GIZE52.ini
+++ b/Data/User/GameConfig/GIZE52.ini
@@ -1,8 +1,8 @@
# GIZE52 - Ty3
[Core] Values set here will override the main dolphin settings.
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 3
-EmulationIssues = Text is broken ingame. Fixed in tex-preload Dolphin branch.
+EmulationStateId = 4
+EmulationIssues =
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/GJ3PA4.ini b/Data/User/GameConfig/GJ3PA4.ini
index 02c0919f46..4b47f36fde 100644
--- a/Data/User/GameConfig/GJ3PA4.ini
+++ b/Data/User/GameConfig/GJ3PA4.ini
@@ -1,16 +1,15 @@
-# GJ3PA4 - International Superstar Soccer 3
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = Need a Projection Hack Bloom and Safe Texture cache
-[OnFrame] Add memory patches to be applied every frame here.
-[Video]
-ProjectionHack = 1
-PH_SZNear = 1
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar = 0.1
-[ActionReplay] Add action replay cheats here.
-[Video_Settings]
-SafeTextureCache = True
+# GJ3PA4 - International Superstar Soccer 3
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Need a Projection Hack Bloom and Safe Texture cache
+[OnFrame] Add memory patches to be applied every frame here.
+[Video]
+ProjectionHack = 1
+PH_SZNear = 1
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar = 0.1
+[ActionReplay] Add action replay cheats here.
+[Video_Settings]
diff --git a/Data/User/GameConfig/GJBE5G.ini b/Data/User/GameConfig/GJBE5G.ini
index 25b06784f0..9828d7c797 100644
--- a/Data/User/GameConfig/GJBE5G.ini
+++ b/Data/User/GameConfig/GJBE5G.ini
@@ -1,20 +1,19 @@
-# GJBE5G - Bomberman Jetters
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 3
-EmulationIssues = Use D3D9 for less problems. Videos need Real XFB to show up. Graphic glitches / unstable during videos.
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 1
-PH_SZNear = 1
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar = 0.1
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-UseXFB = True
-UseRealXFB = True
+# GJBE5G - Bomberman Jetters
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 3
+EmulationIssues = Use D3D9 for less problems. Videos need Real XFB to show up. Graphic glitches / unstable during videos.
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 1
+PH_SZNear = 1
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar = 0.1
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+UseXFB = True
+UseRealXFB = True
diff --git a/Data/User/GameConfig/GJWE78.ini b/Data/User/GameConfig/GJWE78.ini
index d9f3ef79dd..1ae68295c5 100644
--- a/Data/User/GameConfig/GJWE78.ini
+++ b/Data/User/GameConfig/GJWE78.ini
@@ -1,6 +1,6 @@
# GJWE78 - Tak: The Great Juju Challenge
[Core] Values set here will override the main dolphin settings.
-MMU = 1
+TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationIssues =
EmulationStateId = 4
@@ -26,5 +26,9 @@ $Infinite Green Fruit
0444C434 4479C000
[Video]
ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
[Gecko]
-
diff --git a/Data/User/GameConfig/GJXE51.ini b/Data/User/GameConfig/GJXE51.ini
index 07db84890e..aa031144dd 100644
--- a/Data/User/GameConfig/GJXE51.ini
+++ b/Data/User/GameConfig/GJXE51.ini
@@ -1,20 +1,18 @@
-# GJXE51 - Vexx
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[EmuState]
-EmulationStateId = 3
-EmulationIssues = Slow,needs mmu and lle audio plugin for proper audio(r7411).
-[OnFrame]
-[ActionReplay]
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 128
-[Core]
-MMU = 1
-FastDiscSpeed = 1
+# GJXE51 - Vexx
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[EmuState]
+EmulationStateId = 3
+EmulationIssues = Slow,needs mmu and lle audio plugin for proper audio(r7411).
+[OnFrame]
+[ActionReplay]
+[Gecko]
+[Video_Settings]
+[Core]
+MMU = 1
+FastDiscSpeed = 1
diff --git a/Data/User/GameConfig/GJZE52.ini b/Data/User/GameConfig/GJZE52.ini
index b37df81b13..3a9b1eb46e 100644
--- a/Data/User/GameConfig/GJZE52.ini
+++ b/Data/User/GameConfig/GJZE52.ini
@@ -3,7 +3,7 @@
TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = Needs Jitil to run. LLE audio fixes some sound issues.
+EmulationIssues = LLE audio fixes some sound issues.
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/GK4E01.ini b/Data/User/GameConfig/GK4E01.ini
index 4860de6eb9..c4ea14e82e 100644
--- a/Data/User/GameConfig/GK4E01.ini
+++ b/Data/User/GameConfig/GK4E01.ini
@@ -3,7 +3,7 @@
#Values set here will override the main dolphin settings.
[EmuState]
#The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 5
+EmulationStateId = 4
EmulationIssues =
[OnFrame]
[ActionReplay]
@@ -51,5 +51,12 @@ $MILLIARDE Quick Level Up
042D55E0 000F423F
[Video]
ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Video_Settings]
+UseXFB = True
+UseRealXFB = False
[Gecko]
-
diff --git a/Data/User/GameConfig/GK5E78.ini b/Data/User/GameConfig/GK5E78.ini
index 95ad2128a7..993ded8641 100644
--- a/Data/User/GameConfig/GK5E78.ini
+++ b/Data/User/GameConfig/GK5E78.ini
@@ -1,19 +1,18 @@
-# GK5E78 - Monster House
-[Core] Values set here will override the main dolphin settings.
-TLBHack = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
+# GK5E78 - Monster House
+[Core] Values set here will override the main dolphin settings.
+TLBHack = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/GK5X78.ini b/Data/User/GameConfig/GK5X78.ini
index ccc9738c97..8e3e5aabe4 100644
--- a/Data/User/GameConfig/GK5X78.ini
+++ b/Data/User/GameConfig/GK5X78.ini
@@ -1,19 +1,18 @@
-# GK5X78 - Monster House
-[Core] Values set here will override the main dolphin settings.
-TLBHack = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
+# GK5X78 - Monster House
+[Core] Values set here will override the main dolphin settings.
+TLBHack = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/GKBPAF.ini b/Data/User/GameConfig/GKBPAF.ini
index 3e5a2cb6d0..936380ca29 100644
--- a/Data/User/GameConfig/GKBPAF.ini
+++ b/Data/User/GameConfig/GKBPAF.ini
@@ -17,4 +17,3 @@ PH_ZFar =
EFBAccessEnable = False
EFBCopyEnable = True
EFBToTextureEnable = False
-
diff --git a/Data/User/GameConfig/GKLE69.ini b/Data/User/GameConfig/GKLE69.ini
index 760bc023a3..1817da6663 100644
--- a/Data/User/GameConfig/GKLE69.ini
+++ b/Data/User/GameConfig/GKLE69.ini
@@ -1,13 +1,18 @@
-# GKLE69 - The Lord of the Rings; The Return of the King
-[Core] Values set here will override the main dolphin settings.
-MMU = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 3
-EmulationIssues = Needs MMU, and is very slow because of it (r6572)
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
+# GKLE69 - The Lord of the Rings; The Return of the King
+[Core] Values set here will override the main dolphin settings.
+TLBHack = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/GKLF69.ini b/Data/User/GameConfig/GKLF69.ini
index f7e2ef20f2..e83b5e6d95 100644
--- a/Data/User/GameConfig/GKLF69.ini
+++ b/Data/User/GameConfig/GKLF69.ini
@@ -1,13 +1,18 @@
-# GKLF69 - The Lord of the Rings; The Return of the King
-[Core] Values set here will override the main dolphin settings.
-MMU = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 3
-EmulationIssues = Needs MMU, and is very slow because of it (r6572)
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
+# GKLF69 - The Lord of the Rings; The Return of the King
+[Core] Values set here will override the main dolphin settings.
+TLBHack = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/GKLP69.ini b/Data/User/GameConfig/GKLP69.ini
index 4c7302bfa3..090df06e74 100644
--- a/Data/User/GameConfig/GKLP69.ini
+++ b/Data/User/GameConfig/GKLP69.ini
@@ -1,20 +1,18 @@
-# GKLP69 - The Lord of the Rings; The Return of the King
-[Core] Values set here will override the main dolphin settings.
-MMU = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 3
-EmulationIssues = Needs MMU, and is very slow because of it (r6572)
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-
+# GKLP69 - The Lord of the Rings; The Return of the King
+[Core] Values set here will override the main dolphin settings.
+TLBHack = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/GKLS69.ini b/Data/User/GameConfig/GKLS69.ini
index f34abbae8a..c663753e4a 100644
--- a/Data/User/GameConfig/GKLS69.ini
+++ b/Data/User/GameConfig/GKLS69.ini
@@ -1,13 +1,18 @@
-# GKLS69 - The Lord of the Rings; The Return of the King
-[Core] Values set here will override the main dolphin settings.
-MMU = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 3
-EmulationIssues = Needs MMU, and is very slow because of it (r6572)
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
+# GKLS69 - The Lord of the Rings; The Return of the King
+[Core] Values set here will override the main dolphin settings.
+TLBHack = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/GKME41.ini b/Data/User/GameConfig/GKME41.ini
index 1737175038..bf0d198734 100644
--- a/Data/User/GameConfig/GKME41.ini
+++ b/Data/User/GameConfig/GKME41.ini
@@ -1,16 +1,15 @@
-# GKME41 - Prince of Persia The Two Thrones
-[Core] Values set here will override the main dolphin settings.
-TLBHack = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Video_Enhancements]
-
+# GKME41 - Prince of Persia The Two Thrones
+[Core] Values set here will override the main dolphin settings.
+TLBHack = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video_Enhancements]
+
diff --git a/Data/User/GameConfig/GKMP41.ini b/Data/User/GameConfig/GKMP41.ini
index eebd3610e8..957d982d20 100644
--- a/Data/User/GameConfig/GKMP41.ini
+++ b/Data/User/GameConfig/GKMP41.ini
@@ -1,14 +1,13 @@
-# GKMP41 - Prince of Persia The Two Thrones
-[Core] Values set here will override the main dolphin settings.
-TLBHack = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
+# GKMP41 - Prince of Persia The Two Thrones
+[Core] Values set here will override the main dolphin settings.
+TLBHack = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/GKOE70.ini b/Data/User/GameConfig/GKOE70.ini
index cc267dd4dd..21da8454ca 100644
--- a/Data/User/GameConfig/GKOE70.ini
+++ b/Data/User/GameConfig/GKOE70.ini
@@ -1,14 +1,13 @@
-# GKOE70 - Kao the kangaroo
-[Core] Values set here will override the main dolphin settings.
-TLBHack = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
+# GKOE70 - Kao the kangaroo
+[Core] Values set here will override the main dolphin settings.
+TLBHack = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/GKOP70.ini b/Data/User/GameConfig/GKOP70.ini
index f6d266817d..4f0fe65232 100644
--- a/Data/User/GameConfig/GKOP70.ini
+++ b/Data/User/GameConfig/GKOP70.ini
@@ -1,14 +1,13 @@
-# GKOP70 - Kao the kangaroo
-[Core] Values set here will override the main dolphin settings.
-TLBHack = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
+# GKOP70 - Kao the kangaroo
+[Core] Values set here will override the main dolphin settings.
+TLBHack = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/GKUE9G.ini b/Data/User/GameConfig/GKUE9G.ini
index 3a0d9b7c08..09f3d9b82d 100644
--- a/Data/User/GameConfig/GKUE9G.ini
+++ b/Data/User/GameConfig/GKUE9G.ini
@@ -1,19 +1,18 @@
-# GKUE9G - Scaler
-[Core] Values set here will override the main dolphin settings.
-TLBHack = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
+# GKUE9G - Scaler
+[Core] Values set here will override the main dolphin settings.
+TLBHack = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/GLCE52.ini b/Data/User/GameConfig/GLCE52.ini
index 2d296b4cc3..31639920c1 100644
--- a/Data/User/GameConfig/GLCE52.ini
+++ b/Data/User/GameConfig/GLCE52.ini
@@ -1,24 +1,24 @@
-# GLCE52 - Lemony Snicket
-[Core] Values set here will override the main dolphin settings.
-CPUThread = 1
-SkipIdle = 1
-TLBHack = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues = Still encountering slowdowns, but no major issues so far.
-EmulationStateId = 5
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-DstAlphaPass = True
-[Video_Hacks]
-EFBCopyEnable = True
-EFBToTextureEnable = True
+# GLCE52 - Lemony Snicket
+[Core] Values set here will override the main dolphin settings.
+CPUThread = 1
+SkipIdle = 1
+TLBHack = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationIssues = Still encountering slowdowns, but no major issues so far.
+EmulationStateId = 5
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+DstAlphaPass = True
+[Video_Hacks]
+EFBCopyEnable = True
+EFBToTextureEnable = True
diff --git a/Data/User/GameConfig/GLCF52.ini b/Data/User/GameConfig/GLCF52.ini
index 8ba4333554..12220f7605 100644
--- a/Data/User/GameConfig/GLCF52.ini
+++ b/Data/User/GameConfig/GLCF52.ini
@@ -1,24 +1,24 @@
-# GLCF52 - Lemony Snicket
-[Core] Values set here will override the main dolphin settings.
-CPUThread = 1
-SkipIdle = 1
-TLBHack = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues = Still encountering slowdowns, but no major issues so far.
-EmulationStateId = 5
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-DstAlphaPass = True
-[Video_Hacks]
-EFBCopyEnable = True
-EFBToTextureEnable = True
+# GLCF52 - Lemony Snicket
+[Core] Values set here will override the main dolphin settings.
+CPUThread = 1
+SkipIdle = 1
+TLBHack = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationIssues = Still encountering slowdowns, but no major issues so far.
+EmulationStateId = 5
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+DstAlphaPass = True
+[Video_Hacks]
+EFBCopyEnable = True
+EFBToTextureEnable = True
diff --git a/Data/User/GameConfig/GLSE64.ini b/Data/User/GameConfig/GLSE64.ini
index a9cf5c11fb..f9b38b357c 100644
--- a/Data/User/GameConfig/GLSE64.ini
+++ b/Data/User/GameConfig/GLSE64.ini
@@ -2,11 +2,15 @@
[Core] Values set here will override the main dolphin settings.
TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = FMV's doesn't seen and some audio errors, but playable
+EmulationStateId = 1
+EmulationIssues =
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
[Gecko]
-
diff --git a/Data/User/GameConfig/GM5E7D.ini b/Data/User/GameConfig/GM5E7D.ini
index f7aa5f8eee..d4843e899d 100644
--- a/Data/User/GameConfig/GM5E7D.ini
+++ b/Data/User/GameConfig/GM5E7D.ini
@@ -1,19 +1,17 @@
-# GM5E7D - Metal Arms: Glitch in the System
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Core]
-CPUThread = 0
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[EmuState]
-EmulationStateId = 3
-EmulationIssues = Needs single core or LLE audio to prevent random crashes(r7436).
-[OnFrame]
-[ActionReplay]
-[Gecko]
+# GM5E7D - Metal Arms: Glitch in the System
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Core]
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[EmuState]
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame]
+[ActionReplay]
+[Gecko]
diff --git a/Data/User/GameConfig/GM5F7D.ini b/Data/User/GameConfig/GM5F7D.ini
index 4c8b28f81e..ffc100e54b 100644
--- a/Data/User/GameConfig/GM5F7D.ini
+++ b/Data/User/GameConfig/GM5F7D.ini
@@ -1,19 +1,17 @@
-# GM5F7D - Metal Arms: Glitch in the System
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Core]
-CPUThread = 0
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[EmuState]
-EmulationStateId = 3
-EmulationIssues = Needs single core or LLE audio to prevent random crashes(r7436).
-[OnFrame]
-[ActionReplay]
-[Gecko]
+# GM5F7D - Metal Arms: Glitch in the System
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Core]
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[EmuState]
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame]
+[ActionReplay]
+[Gecko]
diff --git a/Data/User/GameConfig/GM5P7D.ini b/Data/User/GameConfig/GM5P7D.ini
index 3d61a5be29..efa5276758 100644
--- a/Data/User/GameConfig/GM5P7D.ini
+++ b/Data/User/GameConfig/GM5P7D.ini
@@ -1,20 +1,17 @@
-# GM5P7D - Metal Arms: Glitch in the System
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Core]
-CPUThread = 0
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[EmuState]
-EmulationStateId = 3
-EmulationIssues = Needs single core or LLE audio to prevent random crashes(r7436).
-[OnFrame]
-[ActionReplay]
-[Gecko]
-
+# GM5P7D - Metal Arms: Glitch in the System
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Core]
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[EmuState]
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame]
+[ActionReplay]
+[Gecko]
diff --git a/Data/User/GameConfig/GM6EE9.ini b/Data/User/GameConfig/GM6EE9.ini
index e0554fbf76..fa3425b423 100644
--- a/Data/User/GameConfig/GM6EE9.ini
+++ b/Data/User/GameConfig/GM6EE9.ini
@@ -1,19 +1,18 @@
-# GM6EE9 - Medabots Infinity 4th Submission
-[Core] Values set here will override the main dolphin settings.
-TLBHack = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = Use LLE plugin for proper ingame sound. MMU speed hack is needed for balloon bombs or the game crashes.
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 0
+# GM6EE9 - Medabots Infinity 4th Submission
+[Core] Values set here will override the main dolphin settings.
+TLBHack = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Use LLE plugin for proper ingame sound. MMU speed hack is needed for balloon bombs or the game crashes.
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 0
diff --git a/Data/User/GameConfig/GM6PE9.ini b/Data/User/GameConfig/GM6PE9.ini
index 44849b73fb..0ae13640de 100644
--- a/Data/User/GameConfig/GM6PE9.ini
+++ b/Data/User/GameConfig/GM6PE9.ini
@@ -1,19 +1,18 @@
-# GM6PE9 - Medabots Infinity 4th Submission
-[Core] Values set here will override the main dolphin settings.
-TLBHack = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = Use LLE plugin for proper ingame sound. MMU speed hack is needed for balloon bombs or the game crashes.
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 0
+# GM6PE9 - Medabots Infinity 4th Submission
+[Core] Values set here will override the main dolphin settings.
+TLBHack = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Use LLE plugin for proper ingame sound. MMU speed hack is needed for balloon bombs or the game crashes.
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 0
diff --git a/Data/User/GameConfig/GM8E01.ini b/Data/User/GameConfig/GM8E01.ini
index 4118981ab8..122e83ccfe 100644
--- a/Data/User/GameConfig/GM8E01.ini
+++ b/Data/User/GameConfig/GM8E01.ini
@@ -1,104 +1,103 @@
-# GM8E01 - Metroid Prime
-[EmuState]
-#The Emulation State.
-EmulationStateId = 5
-EmulationIssues = Heat Visor doesn't work correctly, some graphics bugs, boss music doesn't play
-EmulationIssues =
-[Speedhacks]
-0x80384b1c=400
-[OnFrame]
-[ActionReplay]
-$This Code Must Be On
-043CB1A8 3C808000
-043CB1AC 93E4183C
-043CB1B0 809F0008
-043CB1B4 4BDE05A8
-041AB758 4821FA50
-$Infinite Health
-04049EA8 48000104
-$Infinite Missiles
-4200183C 002500FF
-4200183C 002700FF
-$Infinite Balls
-00457D1B 00000003
-$Infinite Power Balls
-4200183C 00310003
-$Moonjump (Hold B)
-0A7A55A4 00000200
-0446BABC 41200000
-$Play NES Metroid
-0A7A55A4 00000440
-0001CA64 00000041
-0A7A55A4 00000840
-0001CA64 00000040
-$Have Ice Beam
-4200183C 001B0001
-$Have Wave Beam
-4200183C 001F0001
-$Have Plasma Beam
-4200183C 00230001
-$Have Phazon Beam
-01165C8D 08000000
-70458245 00000080
-087A55A9 000000C5
-00458245 0000007C
-48457D33 00000000
-087A55A9 0000003B
-00458245 000000FE
-$Have Morph Ball
-4200183C 00570001
-$Have Boost Ball
-4200183C 005F0001
-$Have Spider Ball (break)
-4200183C 00630001
-$Have Morph Ball Bomb
-4200183C 002F0001
-$Have Power Bomb
-4200183C 00330001
-$Have Varia Suit
-4200183C 006F0001
-$Have Gravity Suit (break)
-4200183C 00670001
-4200183C 006B0001
-$Have Phazon Suit (break)
-4200183C 00730001
-$Have Combat Visor
-4200183C 005B0001
-$Have Scan Visor
-4200183C 002B0001
-$Have X-Ray Visor
-4200183C 004B0001
-$Have Thermal Visor
-4200183C 003B0001
-$Have Space Jump Boots
-4200183C 00510001
-4200183C 00530001
-$Have Grapple Beam
-4200183C 00470001
-$Have Missile Launcher
-4200183C 00260001
-$Have Charge Beam
-4200183C 003F0001
-$Have Beam Combo A
-4200183C 00370001
-$Have Beam Combo B
-4200183C 00430001
-$Have Beam Combo C
-4200183C 004F0001
-[Core]
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Video_Hacks]
-EFBCopyEnable = True
-EFBToTextureEnable = False
-[Video_Enhancements]
-
+# GM8E01 - Metroid Prime
+[EmuState]
+#The Emulation State.
+EmulationStateId = 5
+EmulationIssues = Heat Visor doesn't work correctly, some graphics bugs, boss music doesn't play
+EmulationIssues =
+[Speedhacks]
+0x80384b1c=400
+[OnFrame]
+[ActionReplay]
+$This Code Must Be On
+043CB1A8 3C808000
+043CB1AC 93E4183C
+043CB1B0 809F0008
+043CB1B4 4BDE05A8
+041AB758 4821FA50
+$Infinite Health
+04049EA8 48000104
+$Infinite Missiles
+4200183C 002500FF
+4200183C 002700FF
+$Infinite Balls
+00457D1B 00000003
+$Infinite Power Balls
+4200183C 00310003
+$Moonjump (Hold B)
+0A7A55A4 00000200
+0446BABC 41200000
+$Play NES Metroid
+0A7A55A4 00000440
+0001CA64 00000041
+0A7A55A4 00000840
+0001CA64 00000040
+$Have Ice Beam
+4200183C 001B0001
+$Have Wave Beam
+4200183C 001F0001
+$Have Plasma Beam
+4200183C 00230001
+$Have Phazon Beam
+01165C8D 08000000
+70458245 00000080
+087A55A9 000000C5
+00458245 0000007C
+48457D33 00000000
+087A55A9 0000003B
+00458245 000000FE
+$Have Morph Ball
+4200183C 00570001
+$Have Boost Ball
+4200183C 005F0001
+$Have Spider Ball (break)
+4200183C 00630001
+$Have Morph Ball Bomb
+4200183C 002F0001
+$Have Power Bomb
+4200183C 00330001
+$Have Varia Suit
+4200183C 006F0001
+$Have Gravity Suit (break)
+4200183C 00670001
+4200183C 006B0001
+$Have Phazon Suit (break)
+4200183C 00730001
+$Have Combat Visor
+4200183C 005B0001
+$Have Scan Visor
+4200183C 002B0001
+$Have X-Ray Visor
+4200183C 004B0001
+$Have Thermal Visor
+4200183C 003B0001
+$Have Space Jump Boots
+4200183C 00510001
+4200183C 00530001
+$Have Grapple Beam
+4200183C 00470001
+$Have Missile Launcher
+4200183C 00260001
+$Have Charge Beam
+4200183C 003F0001
+$Have Beam Combo A
+4200183C 00370001
+$Have Beam Combo B
+4200183C 00430001
+$Have Beam Combo C
+4200183C 004F0001
+[Core]
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video_Hacks]
+EFBCopyEnable = True
+EFBToTextureEnable = False
+[Video_Enhancements]
+
diff --git a/Data/User/GameConfig/GM8J01.ini b/Data/User/GameConfig/GM8J01.ini
index 7f6944b210..51f485f0ec 100644
--- a/Data/User/GameConfig/GM8J01.ini
+++ b/Data/User/GameConfig/GM8J01.ini
@@ -1,26 +1,25 @@
-# GM8E01 - Metroid Prime
-[Core]
-#Values set here will override the main dolphin settings.
-[Speedhacks]
-0x803708f8=400
-[EmuState]
-#The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 2
-EmulationIssues="Heat Visor doesn't work correctly, some graphics bugs, boss music doesn't play"
-[OnFrame]
-#Add memory patches to be applied every frame here.
-[ActionReplay]
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Video_Hacks]
-EFBCopyEnable = True
-EFBToTextureEnable = False
+# GM8E01 - Metroid Prime
+[Core]
+#Values set here will override the main dolphin settings.
+[Speedhacks]
+0x803708f8=400
+[EmuState]
+#The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 2
+EmulationIssues="Heat Visor doesn't work correctly, some graphics bugs, boss music doesn't play"
+[OnFrame]
+#Add memory patches to be applied every frame here.
+[ActionReplay]
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video_Hacks]
+EFBCopyEnable = True
+EFBToTextureEnable = False
diff --git a/Data/User/GameConfig/GM8P01.ini b/Data/User/GameConfig/GM8P01.ini
index a1dcbc1d45..b046e8fd15 100644
--- a/Data/User/GameConfig/GM8P01.ini
+++ b/Data/User/GameConfig/GM8P01.ini
@@ -1,29 +1,28 @@
-# GM8P01 - Metroid Prime
-[Core]
-#Values set here will override the main dolphin settings.
-[Speedhacks]
-# Patch OSYieldThread to take more time - MP1's idle loop is really stupid.
-0x8036eba0=400
-[EmuState]
-#The Emulation State.
-EmulationStateId = 4
-EmulationIssues = needs safe texture cache
-[EmuState]
-EmulationStateId = 0
-[OnFrame]
-[ActionReplay]
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Video_Hacks]
-EFBCopyEnable = True
-EFBToTextureEnable = False
-
+# GM8P01 - Metroid Prime
+[Core]
+#Values set here will override the main dolphin settings.
+[Speedhacks]
+# Patch OSYieldThread to take more time - MP1's idle loop is really stupid.
+0x8036eba0=400
+[EmuState]
+#The Emulation State.
+EmulationStateId = 4
+EmulationIssues = needs safe texture cache
+[EmuState]
+EmulationStateId = 0
+[OnFrame]
+[ActionReplay]
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video_Hacks]
+EFBCopyEnable = True
+EFBToTextureEnable = False
+
diff --git a/Data/User/GameConfig/GNNE69.ini b/Data/User/GameConfig/GNNE69.ini
index e089c40997..b895e8cb94 100644
--- a/Data/User/GameConfig/GNNE69.ini
+++ b/Data/User/GameConfig/GNNE69.ini
@@ -1,12 +1,13 @@
-# GNNE69 - NFL Street
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 0
-EmulationIssues =
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
+# GNNE69 - NFL Street
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 0
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+
diff --git a/Data/User/GameConfig/GNOE78.ini b/Data/User/GameConfig/GNOE78.ini
index bf0d3f3f1f..ca4bbf12fa 100644
--- a/Data/User/GameConfig/GNOE78.ini
+++ b/Data/User/GameConfig/GNOE78.ini
@@ -1,20 +1,19 @@
-# GNOE78 - Nicktoons Unite!
-[Core] Values set here will override the main dolphin settings.
-TLBHack = 1
-FastDiscSpeed = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 1
-PH_SZNear = 0
-PH_SZFar = 1
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar = 0.000153
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 0
+# GNOE78 - Nicktoons Unite!
+[Core] Values set here will override the main dolphin settings.
+TLBHack = 1
+FastDiscSpeed = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 1
+PH_SZNear = 0
+PH_SZFar = 1
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar = 0.000153
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 0
diff --git a/Data/User/GameConfig/GOAE52.ini b/Data/User/GameConfig/GOAE52.ini
index 8a3da2eb71..2d0371aa41 100644
--- a/Data/User/GameConfig/GOAE52.ini
+++ b/Data/User/GameConfig/GOAE52.ini
@@ -3,7 +3,7 @@
TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = Needs Jitil to run. LLE audio fixes sound issues.
+EmulationIssues = LLE audio fixes sound issues.
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/GOYD69.ini b/Data/User/GameConfig/GOYD69.ini
index 0a8955ef74..21e74e2cb4 100644
--- a/Data/User/GameConfig/GOYD69.ini
+++ b/Data/User/GameConfig/GOYD69.ini
@@ -1,20 +1,19 @@
-# GOYD69 - GoldenEye Rogue Agent
-[Core] Values set here will override the main dolphin settings.
-TLBHack = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues = Videos are messed up. Use LLE for proper sound.(r7446)
-EmulationStateId = 4
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Video_Hacks]
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
+# GOYD69 - GoldenEye Rogue Agent
+[Core] Values set here will override the main dolphin settings.
+TLBHack = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationIssues = Videos are messed up. Use LLE for proper sound.(r7446)
+EmulationStateId = 4
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video_Hacks]
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
diff --git a/Data/User/GameConfig/GOYE69.ini b/Data/User/GameConfig/GOYE69.ini
index 0643b0faa5..6dc35e5ada 100644
--- a/Data/User/GameConfig/GOYE69.ini
+++ b/Data/User/GameConfig/GOYE69.ini
@@ -1,49 +1,48 @@
-# GOYE69 - GoldenEye Rogue Agent
-[Core] Values set here will override the main dolphin settings.
-TLBHack = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues = Videos are messed up. Use LLE for proper sound.(r7446)
-EmulationStateId = 4
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-$Master Code
-0C3F0328 4E800020
-C43F0328 0000FF01
-0C0135B8 4E800020
-C40135B8 0000FF02
-0C71AEC8 4E800020
-C471AEC8 0000FF03
-$Never Lose Health
-040A0D44 60000000
-$Never Lose Armor
-040A0C70 60000000
-$Never Lose Eye Power
-040A43E0 4E800020
-$Infinite Ammo
-04542E4C 00000001
-$Unlock All Missions
-0000314D 00000018
-$Unlock Multiplayer Maps (Use On A Empty Profile)
-000094AC 000000FF
-$Enemies Are Idiots (Use On A Empty Profile)
-0410ECAC 4E800020
-$Enemies Cannot Throw Grenades (Use On A Empty Profile)
-040FC010 4E800020
-$Big Arms (Use On A Empty Profile)
-04542E78 3F800000
-$Slow Enemies (Use On A Empty Profile)
-044F7FFC 3D000000
-$Disable Shadows (Use On A Empty Profile)
-044FA2A4 00000001
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Video_Hacks]
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
+# GOYE69 - GoldenEye Rogue Agent
+[Core] Values set here will override the main dolphin settings.
+TLBHack = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationIssues = Videos are messed up. Use LLE for proper sound.(r7446)
+EmulationStateId = 4
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+$Master Code
+0C3F0328 4E800020
+C43F0328 0000FF01
+0C0135B8 4E800020
+C40135B8 0000FF02
+0C71AEC8 4E800020
+C471AEC8 0000FF03
+$Never Lose Health
+040A0D44 60000000
+$Never Lose Armor
+040A0C70 60000000
+$Never Lose Eye Power
+040A43E0 4E800020
+$Infinite Ammo
+04542E4C 00000001
+$Unlock All Missions
+0000314D 00000018
+$Unlock Multiplayer Maps (Use On A Empty Profile)
+000094AC 000000FF
+$Enemies Are Idiots (Use On A Empty Profile)
+0410ECAC 4E800020
+$Enemies Cannot Throw Grenades (Use On A Empty Profile)
+040FC010 4E800020
+$Big Arms (Use On A Empty Profile)
+04542E78 3F800000
+$Slow Enemies (Use On A Empty Profile)
+044F7FFC 3D000000
+$Disable Shadows (Use On A Empty Profile)
+044FA2A4 00000001
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video_Hacks]
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
diff --git a/Data/User/GameConfig/GOYF69.ini b/Data/User/GameConfig/GOYF69.ini
index 2522901b02..dbbedced45 100644
--- a/Data/User/GameConfig/GOYF69.ini
+++ b/Data/User/GameConfig/GOYF69.ini
@@ -1,20 +1,19 @@
-# GOYF69 - GoldenEye Rogue Agent
-[Core] Values set here will override the main dolphin settings.
-TLBHack = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues = Videos are messed up. Use LLE for proper sound.(r7446)
-EmulationStateId = 4
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Video_Hacks]
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
+# GOYF69 - GoldenEye Rogue Agent
+[Core] Values set here will override the main dolphin settings.
+TLBHack = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationIssues = Videos are messed up. Use LLE for proper sound.(r7446)
+EmulationStateId = 4
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video_Hacks]
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
diff --git a/Data/User/GameConfig/GPHE52.ini b/Data/User/GameConfig/GPHE52.ini
index 3047d82bc4..8cab6cfd00 100644
--- a/Data/User/GameConfig/GPHE52.ini
+++ b/Data/User/GameConfig/GPHE52.ini
@@ -1,15 +1,14 @@
-# GPHE52 - Pitfall: The Lost Expedition
-[Core] Values set here will override the main dolphin settings.
-TLBHack = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-
+# GPHE52 - Pitfall: The Lost Expedition
+[Core] Values set here will override the main dolphin settings.
+TLBHack = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+
diff --git a/Data/User/GameConfig/GPOE8P.ini b/Data/User/GameConfig/GPOE8P.ini
index 7b94b09ec5..e19f95a1a9 100644
--- a/Data/User/GameConfig/GPOE8P.ini
+++ b/Data/User/GameConfig/GPOE8P.ini
@@ -1,49 +1,48 @@
-# GPOE8P - PHANTASY STAR ONLINE EPISODE I&II
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 5
-EmulationIssues =
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-$Save Validation Code v1.2/Plus
-0E800351 08000000
-4C1FD7D0 7C040040
-041FD7CC 7C0521AE
-041FD7D4 4800000C
-4C1FD874 7C040040
-041FD870 7C0521AE
-041FD878 4800000C
-$Make Save Copyable NTSC Port - PLUS/1.2
-0C386974 909C0028
-04386978 4BC80004
-04001D60 38000004
-04001D64 981C0034
-04001D68 38000000
-04001D6C 48384C14
-$Save Validation Code v 1.0/v1.1
-0E800251 08000000
-4C1FCE48 7C040040
-041FCE44 7C0521AE
-041FCE4C 4800000C
-4C1FCEEC 7C040040
-041FCEE8 7C0521AE
-041FCEF0 4800000C
-$Make Save Copyable NTSC Port - 1.0/1.1
-07FE0C8C 08000000
-0C383230 909C0028
-04383234 4BC7FCEC
-04002F20 38000004
-04002F24 981C0034
-04002F28 38000000
-04002F2C 4838030C
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
+# GPOE8P - PHANTASY STAR ONLINE EPISODE I&II
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 5
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+$Save Validation Code v1.2/Plus
+0E800351 08000000
+4C1FD7D0 7C040040
+041FD7CC 7C0521AE
+041FD7D4 4800000C
+4C1FD874 7C040040
+041FD870 7C0521AE
+041FD878 4800000C
+$Make Save Copyable NTSC Port - PLUS/1.2
+0C386974 909C0028
+04386978 4BC80004
+04001D60 38000004
+04001D64 981C0034
+04001D68 38000000
+04001D6C 48384C14
+$Save Validation Code v 1.0/v1.1
+0E800251 08000000
+4C1FCE48 7C040040
+041FCE44 7C0521AE
+041FCE4C 4800000C
+4C1FCEEC 7C040040
+041FCEE8 7C0521AE
+041FCEF0 4800000C
+$Make Save Copyable NTSC Port - 1.0/1.1
+07FE0C8C 08000000
+0C383230 909C0028
+04383234 4BC7FCEC
+04002F20 38000004
+04002F24 981C0034
+04002F28 38000000
+04002F2C 4838030C
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/GPOP8P.ini b/Data/User/GameConfig/GPOP8P.ini
index c6fe1f33e1..8209604c06 100644
--- a/Data/User/GameConfig/GPOP8P.ini
+++ b/Data/User/GameConfig/GPOP8P.ini
@@ -1,66 +1,66 @@
-# GPOP8P - PSO EPISODE I&II
-[EmuState]
-#The Emulation State.
-EmulationStateId = 4
-EmulationIssues = needs texture cache
-[OnFrame]
-[ActionReplay]
-$ENABLE
-07FE0000 98000000
-0C010BE0 4E800020
-C4010BE0 0000FF01
-0C6CB69C 4E800020
-C46CB69C 0000FF02
-0C37AAA0 4E800020
-C437AAA0 0002FF03
-C437AAA0 0002FF03
-$No textures
-07FE6365 18000000
-04205128 38600010
-$God of Equip
-07FE0675 18000000
-801052D4 38000005
-$All Areas Open
-0418665C 3800FFFF
-04186D60 3800FFFF
-$Mag is Always Hungry
-07FE1026 18000000
-$All Kills Worth 7FFF Exp
-07FE3C45 18000000
-041B1404 3BC07FFF
-$Buy rare in Armor Shop
-0FFC1110 98000000
-057DFDD8 4BD266F0
-057DFDDC 000009C0
-3FFC1111 98000000
-057DFDD8 4BD25BB0
-057DFDDC 00000B40
-5FFC1112 98000000
-057DFDD8 4BD27D90
-057DFDDC 00000AA0
-7FFC1112 98000000
-057DFDD8 4BD270B0
-$Game Save Valid
-4C1FD6CC 7C040040
-041FD6C8 7C0521AE
-041FD6D0 4800000C
-4C1FD770 7C040040
-041FD76C 7C0521AE
-041FD774 4800000C
-$Game Save copyable
-0C385460 909C0028
-04385464 4BC7DABC
-04002F20 38000004
-04002F24 981C0034
-04002F28 38000000
-04002F2C 4838253C
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Video_Settings]
-SafeTextureCache = True
-[Gecko]
+# GPOP8P - PSO EPISODE I&II
+[EmuState]
+#The Emulation State.
+EmulationStateId = 4
+EmulationIssues = needs texture cache
+[OnFrame]
+[ActionReplay]
+$ENABLE
+07FE0000 98000000
+0C010BE0 4E800020
+C4010BE0 0000FF01
+0C6CB69C 4E800020
+C46CB69C 0000FF02
+0C37AAA0 4E800020
+C437AAA0 0002FF03
+C437AAA0 0002FF03
+$No textures
+07FE6365 18000000
+04205128 38600010
+$God of Equip
+07FE0675 18000000
+801052D4 38000005
+$All Areas Open
+0418665C 3800FFFF
+04186D60 3800FFFF
+$Mag is Always Hungry
+07FE1026 18000000
+$All Kills Worth 7FFF Exp
+07FE3C45 18000000
+041B1404 3BC07FFF
+$Buy rare in Armor Shop
+0FFC1110 98000000
+057DFDD8 4BD266F0
+057DFDDC 000009C0
+3FFC1111 98000000
+057DFDD8 4BD25BB0
+057DFDDC 00000B40
+5FFC1112 98000000
+057DFDD8 4BD27D90
+057DFDDC 00000AA0
+7FFC1112 98000000
+057DFDD8 4BD270B0
+$Game Save Valid
+4C1FD6CC 7C040040
+041FD6C8 7C0521AE
+041FD6D0 4800000C
+4C1FD770 7C040040
+041FD76C 7C0521AE
+041FD774 4800000C
+$Game Save copyable
+0C385460 909C0028
+04385464 4BC7DABC
+04002F20 38000004
+04002F24 981C0034
+04002F28 38000000
+04002F2C 4838253C
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Gecko]
diff --git a/Data/User/GameConfig/GPSP8P.ini b/Data/User/GameConfig/GPSP8P.ini
index 787743cc82..df7b555fb1 100644
--- a/Data/User/GameConfig/GPSP8P.ini
+++ b/Data/User/GameConfig/GPSP8P.ini
@@ -1,65 +1,65 @@
-# GPSP8P - PHANTASY STAR ONLINE EPISODE III
-[EmuState]
-#The Emulation State.
-EmulationStateId = 2
-EmulationIssues = needs texture cache
-[Speedhacks]
-# Patch OSYieldThread in attempt to make a speedhack (gave me a few fps more :) )
-0x8036eba0=400
-[OnFrame]
-[ActionReplay]
-$All cards All range: A + R to activate (made by Daco)
-4A58E8A0 00000120
-804565D4 3CA08054
-804565D8 38A5D740
-804565DC A0A50000
-804565E0 2C050140
-804565E4 38A00000
-804565E8 4182000C
-804565EC 3C03FFF1
-804565F0 4E800020
-804565F4 38007FFF
-804565F8 4E800020
-80230DE8 28007FFF
-80230DE4 482257F1
-8011DD70 807F0030
-$No texture mode (made by phytress/card gray, imported to pal by daco)
-804565D4 A0850AE4
-804565D8 2C040140
-804565DC 38800000
-804565E0 4182000C
-804565E4 807F0030
-804565E8 4E800020
-804565EC 38600010
-804565F0 4E800020
-8011DD70 48338865
-$Char Save is Valid - Ep3 port
-0F006464 09000000
-4C115730 7C040040
-0411572C 7C0521AE
-04115734 4800000C
-4C1157D4 7C040040
-041157D0 7C0521AE
-041157D8 4800000C
-$Fix Ep3 Online Port
-0F006464 07000000
-4C4469CC 000023F4
-044469CC 000023F3
-$Make Saved data copyable
-0F006363 09000000
-0C330600 909C0028
-04330604 4BCCFA8C
-04000090 38000004
-04000094 981C0034
-04000098 38000000
-0400009C 4833056C
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Video_Settings]
-SafeTextureCache = True
-[Gecko]
+# GPSP8P - PHANTASY STAR ONLINE EPISODE III
+[EmuState]
+#The Emulation State.
+EmulationStateId = 2
+EmulationIssues = needs texture cache
+[Speedhacks]
+# Patch OSYieldThread in attempt to make a speedhack (gave me a few fps more :) )
+0x8036eba0=400
+[OnFrame]
+[ActionReplay]
+$All cards All range: A + R to activate (made by Daco)
+4A58E8A0 00000120
+804565D4 3CA08054
+804565D8 38A5D740
+804565DC A0A50000
+804565E0 2C050140
+804565E4 38A00000
+804565E8 4182000C
+804565EC 3C03FFF1
+804565F0 4E800020
+804565F4 38007FFF
+804565F8 4E800020
+80230DE8 28007FFF
+80230DE4 482257F1
+8011DD70 807F0030
+$No texture mode (made by phytress/card gray, imported to pal by daco)
+804565D4 A0850AE4
+804565D8 2C040140
+804565DC 38800000
+804565E0 4182000C
+804565E4 807F0030
+804565E8 4E800020
+804565EC 38600010
+804565F0 4E800020
+8011DD70 48338865
+$Char Save is Valid - Ep3 port
+0F006464 09000000
+4C115730 7C040040
+0411572C 7C0521AE
+04115734 4800000C
+4C1157D4 7C040040
+041157D0 7C0521AE
+041157D8 4800000C
+$Fix Ep3 Online Port
+0F006464 07000000
+4C4469CC 000023F4
+044469CC 000023F3
+$Make Saved data copyable
+0F006363 09000000
+0C330600 909C0028
+04330604 4BCCFA8C
+04000090 38000004
+04000094 981C0034
+04000098 38000000
+0400009C 4833056C
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Gecko]
diff --git a/Data/User/GameConfig/GQSDAF.ini b/Data/User/GameConfig/GQSDAF.ini
index 650f6ffd2a..bf754eb2c5 100644
--- a/Data/User/GameConfig/GQSDAF.ini
+++ b/Data/User/GameConfig/GQSDAF.ini
@@ -1,23 +1,22 @@
-# GQSDAF - TALES OF SYMPHONIA
-[Core]
-#Values set here will override the main dolphin settings.
-[EmuState]
-#The Emulation State. 1 is worst, 5 is best, 0 is not set.
-#Emulation state validated on r1648
-EmulationStateId = 4
-EmulationIssues = Sound issues need LLE plugin to be solved.(r7184)
-[OnFrame]
-[ActionReplay]
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear = 0.5
-PH_ZFar = 1
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Video_Hacks]
-DlistCachingEnable = False
+# GQSDAF - TALES OF SYMPHONIA
+[Core]
+#Values set here will override the main dolphin settings.
+[EmuState]
+#The Emulation State. 1 is worst, 5 is best, 0 is not set.
+#Emulation state validated on r1648
+EmulationStateId = 4
+EmulationIssues = Sound issues need LLE plugin to be solved.(r7184)
+[OnFrame]
+[ActionReplay]
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear = 0.5
+PH_ZFar = 1
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video_Hacks]
+DlistCachingEnable = False
diff --git a/Data/User/GameConfig/GQSEAF.ini b/Data/User/GameConfig/GQSEAF.ini
index 7cb18083db..5ab40734e7 100644
--- a/Data/User/GameConfig/GQSEAF.ini
+++ b/Data/User/GameConfig/GQSEAF.ini
@@ -1,794 +1,793 @@
-# GQSEAF - TALES OF SYMPHONIA 1
-[Core]
-#Values set here will override the main dolphin settings.
-[EmuState]
-#The Emulation State. 1 is worst, 5 is best, 0 is not set.
-#Emulation state validated on r1648
-EmulationStateId = 4
-#Action Replay Notes
-#
-# * * * * * NOTES ON EQUIPMENT MODIFIERS BEFORE USING THOSE CODES * * * *
-#
-#You can mess with other items all you want, but Weapons can only go to their respective characters #or the game will freeze. Empty Slots will also make the game freeze if used on Weapons. You can
-#put Accessories on other slots, like Persian Boots on Body Armor, Head Armor, Arm Armor, and
-#Accessory 1 %amp; 2. You need 4 Persian Boots to make characters Absorb Elements!
-#The format of the codes for these sections is:
-#
0000XXXX
-# YYYYZZZZ
-# AAAABBBB
-# 0000CCCC
-#where each 4 digit letter represents
-#XXXX = Weapon
-#YYYY = Body Armor
-#ZZZZ = Head Armor
-#AAAA = Arm Armor
-#BBBB = Accessory 1
-#CCCC = Accessory 2
-#0000 - Empty Slot
-#
-#You must manually set the intended item for each char's equipment BEFORE USING THESE CODES
-#
-#Lloyd
-#0087 - Wooden Blade
-#0088 - Rapier
-#0089 - Mumei
-#008A - Knight's Saber
-#008B - Masamune
-#008C - Osafune
-#008D - Sinclaire
-#008E - Nimble Rapier
-#008F - Ogre Sword
-#0090 - Kotetsu
-#0091 - Shiden
-#0092 - Saint Rapier
-#0093 - Dragon Tooth
-#0094 - Defenser
-#0095 - Elemental Brand
-#0096 - Muramasa
-#0097 - Wasier Rapier
-#0098 - Angel's Tear
-#0099 - Ninja Sword
-#009A - Material Blade
-#009B - Kusanagi Blade
-#009C - Valkyrie Saber
-#009D - Paper Fan
-#009E - Nebilim
-#
-#Colette
-#009F - Chakram
-#00A0 - Flying Disk
-#00A1 - Duel Ring
-#00A2 - Slicer Ring
-#00A3 - Mystic Ring
-#00A4 - Stinger Ring
-#00A5 - Ray Thrust
-#00A6 - Mythril Ring
-#00A7 - Shuriken
-#00A8 - Solar Spinner
-#00A9 - Lunar Ring
-#00AA - Toroid
-#00AB - Stardust
-#00AC - Angel's Halo
-#00AD - Tambourine
-#00AE - Evil Eye
-#
-#Genis
-#00AF - Nova
-#00B0 - Fine Star
-#00B1 - Duel Star
-#00B2 - Falling Star
-#00B3 - Cool Orbit
-#00B4 - Thunderbolt
-#00B5 - Shining Star
-#00B6 - Shadow Dancer
-#00B7 - Cor Leonis
-#00B8 - Northern Lights
-#00B9 - Southern Cross
-#00BA - Final Player
-#00BB - One World
-#00BC - Phantasmagoria
-#00BD - Disaster
-#
-#Raine
-#00BE - Rod
-#00BF - Battle Staff
-#00C0 - Gem Rod
-#00C1 - Earth Rod
-#00C2 - Ruby Wand
-#00C3 - Rune Staff
-#00C4 - Gale Staff
-#00C5 - Phoenix Rod
-#00C6 - Holy Staff
-#00C7 - Thunder Scepter
-#00C8 - Ancient Rod
-#00C9 - Hanuman's Staff
-#00CA - Crystal Rod
-#00CB - Deck Brush
-#00CC - Heart Of Chaos
-#
-#Sheena
-#00CD - Spell Card
-#00CE - Card of Water
-#00CF - Card of Earth
-#00D0 - Card of Fire
-#00D1 - Card of Lightning
-#00D2 - Card of Wind
-#00D3 - Card of Ice
-#00D4 - Vajra
-#00D5 - Yaska
-#00D6 - Asura
-#00D7 - Acalanatha
-#00D8 - Divine Judgement
-#00D9 - Money Bag
-#00DA - Gates of Hell
-#
-#Zelos/Kratos
-#00DB - Stiletto
-#00DC - Earth Dagger
-#00DD - Hydra Dagger
-#00DE - Assault dagger
-#00DF - Flame Dagger
-#00E0 - Gladius
-#00E1 - Crystal Dagger
-#00E2 - Toy Dagger
-#00E3 - Fafnir
-#00E4 - Long Sword
-#00E5 - Steel Sword
-#00E6 - Silver Sword
-#00E7 - Aqua Brand
-#00E8 - Sand Saber
-#00E9 - Lightning Sword
-#00EA - Ice Coffin
-#00EB - Ether Sword
-#00EC - Flamberge
-#00ED - Laser Blade
-#00EE - Excalibur
-#00EF - Last Fencer
-#00F0 - Baseball Bat
-#00F1 - Soul Eater
-#
-#Presea
-#00F2 - Francesca
-#00F3 - Battle Ax
-#00F4 - Great Ax
-#00F5 - Crescent Ax
-#00F6 - Tomahawk Lance
-#00F7 - Halberd
-#00F8 - Bardiche
-#00F9 - Myrthril Ax
-#00FA - War Hammer
-#00FB - Battle Pick
-#00FC - Strike Ax
-#00FD - Ogre Ax
-#00FE - Bahumut's Tear
-#00FF - Gaia Cleaver
-#0100 - Pow Hammer DX
-#0101 - Diablos
-#
-#Regal
-#0102 - Leather Greaves
-#0103 - Iron Greaves
-#0104 - Power Greaves
-#0105 - Venom
-#0106 - Bear Claw
-#0107 - Ghost Shell
-#0108 - Mythril Greaves
-#0109 - Aqua Greaves
-#010A - Crystal Shell
-#010B - Flare Greaves
-#010C - Dragon Fang
-#010D - Diamond Shell
-#010E - Kaiser Greaves
-#010F - Dynast
-#0110 - Glory Arts
-#0111 - Apocalypse
-#
-#Armors
-#0112 - Soft Leather
-#0113 - Chain Mail
-#0114 - Ring Mail
-#0115 - Iron Mail
-#0116 - Splint Mail
-#0117 - Breastplate
-#0118 - Battle Suit
-#0119 - Silver Mail
-#011A - Mythril Armor
-#011C - Brunnhilde
-#011D - Reflect
-#011E - Rare Plate
-#011F - Dragon Mail
-#0120 - Golden Armor
-#0121 - Star Mail
-#0122 - Mumbane
-#
-#Guards
-#0123 - Leather Guard
-#0124 - Fine Guard
-#0125 - Iron Guard
-#0126 - Elven Protector
-#0127 - Lunar Guard
-#0128 - Rune Guard
-#0129 - Star Guard
-#012A - Prism Guard
-#012B - Mana Protector
-#012C - Elemental Guard
-#
-#Cloaks
-#012D - Cloak
-#012E - White Cloak
-#012F - Amber Cloak
-#0130 - Silk Cloak
-#0131 - Rune Cloak
-#0132 - Holy Cloak
-#0133 - Mythril Mesh
-#0134 - Star Cloak
-#0135 - Phoenix Cloak
-#0136 - Mortality Cloak
-#
-#Robes
-#0137 - Robe
-#0138 - Feather Robe
-#013B - Silk Robe
-#013C - Rune Robe
-#013D - Holy Robe
-#013E - Spirit Robe
-#013F - Shaman Dress
-#0140 - Kannazuki
-#
-#Helmets
-#0141 - Leather Helm
-#0142 - Iron Helm
-#0143 - Armet Helm
-#0144 - Cross Helm
-#0145 - Duel Helm
-#0146 - Rune Helm
-#0147 - Sigurd
-#0148 - Rare Helm
-#0149 - Star Helm
-#014A - Golden Helm
-#
-#Ribbons
-#014C - Ribbon
-#014D - Blue Ribbon
-#014E - Striped Ribbon
-#014F - Tartan Ribbon
-#0150 - Pretty Ribbon
-#0151 - Hairpin
-#0152 - Maid's Hairband
-#0153 - Magical Ribbon
-#
-#Hats
-#0154 - Beret
-#0155 - Cleric's Hat
-#0156 - Straw Hat
-#0157 - Pointed Hat
-#0158 - Rune Hat
-#0159 - Headband
-#015A - Star Cap
-#015B - Aifread's Hat
-#
-#Circlets
-#015C - Circlet
-#015D - Silver Circlet
-#015E - Gold Circlet
-#015F - Mythril Circlet
-#0160 - Rune Circlet
-#0161 - Holy Circlet
-#0162 - Star Circlet
-#0163 - Elemental Circlet
-#
-#Shields
-#0164 - Lid Shield
-#0165 - Wooden Shield
-#0166 - Omega Shield
-#0167 - Mythril Shield
-#0168 - Rune Shield
-#0169 - Red Shield
-#016A - Rare Shield
-#016B - Arredoval
-#016C - Star Shield
-#016D - Beam Shield
-#016E - Blue Shield
-#
-#Gauntlets/Gloves
-#016F - Leather Glove
-#0170 - Iron Gauntlet
-#0171 - Claw Gauntlet
-#0172 - Mythril Gauntlet
-#0173 - Rune Gauntlet
-#0174 - Penguinist Gloves
-#0175 - Rare Gauntlet
-#0176 - Star Gauntlet
-#0177 - Hyper Gauntlet
-#
-#Bracelets
-#0178 - Bracelet
-#0179 - Iron Bracelet
-#017A - Mythril Bracelet
-#017B - Lapis Bracelet
-#017C - Star Bracelet
-#017D - Angel Bracelet
-#017E - Draupnir
-#017F - Shield Ring
-#
-#Gloves
-#0180 - Gloves
-#0181 - Kitchen Mittens
-#0182 - Pretty Mittens
-#0183 - Bridal Gloves
-#0184 - Silk Gloves
-#0185 - Cute Mittens
-#0186 - Lovely Mittens
-#0187 - Katz Mittens
-#
-#Charms
-#0188 - Poison Charm
-#0189 - Drain Charm
-#018A - Stone Charm
-#018B - Paralysis Charm
-#018C - Stun Charm
-#018D - Amulet
-#018B - Talisman
-#018E - Blue Talisman
-#018F - Manji Seal
-#0190 - Stun Bracelet
-#0191 - Heal Bracelet
-#0192 - Spirit Bangle
-#0193 - Yasakani Jewel
-#0194 - Yata Mirror
-#
-#Rings
-#0195 - Emerald Ring
-#0196 - Faerie Ring
-#0197 - Protect Ring
-#0198 - Force Ring
-#0199 - Resist Ring
-#019A - Reflect Ring
-#019B - Holy Ring
-#019C - Spirit Ring
-#019D - Revive Ring
-#019E - Attack Ring
-#019F - Defense Ring
-#01A0 - Magic Ring
-#
-#Symbols
-#01A1 - Warrior Symbol
-#01A2 - Guardian Symbol
-#01A3 - Rabbit's Foot
-#01A4 - Holy Symbol
-#01A5 - Spirit Symbol
-#01A6 - Dark Seal
-#01A7 - Demon's Seal
-#01A8 - Extreme Symbol
-#01A9 - Mystic Symbol
-#01AA - Krona Symbol
-#
-#Capes
-#01AC - Cape
-#01AD - Leather Cape
-#01AE - Thief's Cape
-#01AF - Elven Cape
-#01B0 - Aqua Cape
-#01B1 - Flare Cape
-#01B2 - Thunder Cape
-#01B3 - Rune Cape
-#
-#Boots
-#01B4 - Boots
-#01B5 - Leather Boots
-#01B6 - Elven Boots
-#01B7 - Water Spider
-#01B8 - Heavy Boots
-#01B9 - Rune Boots
-#01BA - Persian Boots
-#01BB - Jet Boots
-#
-#Jewels
-#01BC - Aquamarine
-#01BD - Amethyst
-#01BE - Opal
-#01BF - Garnet
-#01C0 - Sapphire
-#01C1 - Diamond
-#01C2 - Topaz
-#01C3 - Ruby
-#01C4 - Sardonyx
-#01C5 - Black Onyx
-#01C6 - Moon Stone
-#01C7 - Magic Mist
-#01C8 - Reverse Doll
-#01C9 - Sephira
-#01CA - Blue Sephira
-#01CB - Hard Leather
-#01CC - Lamellar Leather
-#01CD - Silver Guard
-#01CE - Rare Guard
-#01CF - Mage Cloak
-#01D0 - Druid Cloak
-#01D1 - Warlock Garb
-#01D2 - Battle Cloak
-#01D3 - White Robe
-#01D4 - Yayoi
-#01D5 - Minazuki
-#01D6 - Nagazuki
-#01DB - Strike Ring
-#01DC - Technical Ring
-#01E0 - Snow Hare
-#01E4 - Mythril Guard
-#01E5 - Solar Guard
-#01E6 - Elder Cloak
-#01E7 - Moon Robe
-#01E8 - Ancient Robe
-#0157 - Heavenly Robe
-#01FC - Penguinist Quill
-#0203 - Turquoise
-#
-# Max Affection codes
-# use only one of these codes at a time for your
-# favorite character to have max affection.
-EmulationIssues = Sound issues need LLE plugin to be solved.(r7184)
-[OnFrame]
-[ActionReplay]
-$(M) (Datel)
-05A0DBAC 88000000
-C4114108 0000FF01
-$Infinite Gald
-05A0DBAD 08000000
-045B68C0 05F5E0FF
-$Infinite Grade
-05A0DBAE 08000000
-045B87E8 000F41DC
-$Save Anywhere
-05A0DBAF 08000000
-0035A73D 00000001
-$Max Encounters
-05A0DBB0 08000000
-025B68C4 0000FFFF
-$Max Combo
-05A0DBB1 08000000
-025B68C6 0000FFFF
-$Low Game Time
-05A0DBB2 08000000
-0435AA1C 00002197
-045B68C8 00000001
-$Less Random Encounters
-05A0DBB3 08000000
-005B86E3 00000001
-$More Random Encounters
-05A0DBB4 08000000
-005B86E3 00000002
-$Have Tons of Items and Weapons
-05A0DC0E 08000000
-005B776E 00003209
-005B77B8 0000C609
-$All Recipes
-05A0DC0F 08000000
-045B86D8 00FFFFFF
-$100% Collectors Book
-05A01F54 08000000
-005B79E4 000043FF
-$Full Monsters List
-05A03E16 08000000
-005B68D0 0000FAFF
-$19 of each Energy/Healing/Revive/Monster Items
-05A05563 08000000
-005B7774 00000213
-005B7778 00000113
-005B7784 00000113
-$19 of all Customizing Items
-05A03AAA 08000000
-005B77B8 00000913
-$19 of all Food Ingredients
-05A02C74 08000000
-005B77C2 00003113
-$19 of each EX Gems
-05A0276B 08000000
-005B7795 00000313
-005B795D 00000013
-$19 of each Red Herb
-05A00388 08000000
-005B778C 00000513
-$19 of each Quartz Item
-05A046A9 08000000
-005B7799 00000713
-$19 of each Symbol
-05A0705F 08000000
-005B790F 00000A13
-$19 of each Miscellaneous Item
-05A07583 08000000
-005B7792 00000213
-$19 of each type of Pellet
-05A04113 08000000
-005B7970 00000313
-$Full Unison Attack Gauge
-05A07223 08000000
-005B8710 000000C8
-$Over Limits Status For ALL Characters
-05A008B3 08000000
-005B6BCE 00000064
-005B6CE6 00000064
-005B6DFE 00000064
-005B6F16 00000064
-005B702E 00000064
-005B7146 00000064
-005B725E 00000064
-005B7376 00000064
-005B748E 00000064
-$LLOYD Full HP
-05A0DBB7 08000000
-025B6B8A 0000270F
-$LLOYD Max HP
-05A0DBB8 08000000
-025B6BAE 0000270F
-$LLOYD Full TP
-05A0DBB9 08000000
-025B6B8C 000003E7
-$LLOYD Max TP
-05A0DBBA 08000000
-025B6BB0 000003E7
-$LLOYD Max Stats
-05A0DBBB 08000000
-025B6BB2 000707CF
-$LLOYD Status Always Normal
-05A0DBBC 08000000
-005B6B97 00000000
-$LLOYD Super Quick Level Up
-05A0DBBD 08000000
-045B6B90 0098967F
-$LLOYD Have All Titles
-05A0DBBE 08000000
-045B6B98 FFFFE7FF
-$COLETTE Full HP
-05A0DBC0 08000000
-025B6CA2 0000270F
-$COLETTE Max HP
-05A0DBC1 08000000
-025B6CC6 0000270F
-$COLETTE Full TP
-05A0DBC2 08000000
-025B6CA4 000003E7
-$COLETTE Max TP
-05A0DBC3 08000000
-025B6CC8 000003E7
-$COLETTE Max Stats
-05A0DBC4 08000000
-025B6CCA 000707CF
-$COLETTE Status Always Normal
-05A0DBC5 08000000
-005B6CAF 00000000
-$COLETTE Super Quick Level Up
-05A0DBC6 08000000
-045B6CA8 0098967F
-$COLETTE Have All Titles
-05A0DBC7 08000000
-045B6CB0 08000000
-$GENIS Full HP
-05A0DBC9 08000000
-025B6DBA 0000270F
-$GENIS Max HP
-05A0DBCA 08000000
-025B6DDE 0000270F
-$GENIS Full TP
-05A0DBCB 08000000
-025B6DBC 000003E7
-$GENIS Max TP
-05A0DBCC 08000000
-025B6DE0 000003E7
-$GENIS Max Stats
-05A0DBCD 08000000
-025B6DE2 000707CF
-$GENIS Status Always Normal
-05A0DBCE 08000000
-005B6DC7 00000000
-$GENIS Super Quick Level Up
-05A0DBCF 08000000
-045B6DC0 0098967F
-$GENIS Have All Titles
-05A0DBD0 08000000
-045B6DC8 FFFFE7FF
-$RAINE Full HP
-05A0DBD2 08000000
-025B6ED2 0000270F
-$RAINE Max HP
-05A0DBD3 08000000
-025B6EF6 0000270F
-$RAINE Full TP
-05A0DBD4 08000000
-025B6ED4 000003E7
-$RAINE Max TP
-05A0DBD5 08000000
-025B6EF8 000003E7
-$RAINE Max Stats
-05A0DBD6 08000000
-025B6EFA 000707CF
-$RAINE Status Always Normal
-05A0DBD7 08000000
-005B6EDF 00000000
-$RAINE Super Quick Level Up
-05A0DBD8 08000000
-045B6ED8 0098967F
-$RAINE Have All Titles
-05A0DBD9 08000000
-045B6EE0 08000000
-$KRATOS Full HP
-05A0DBDB 08000000
-025B744A 0000270F
-$KRATOS Max HP
-05A0DBDC 08000000
-025B746E 0000270F
-$KRATOS Full TP
-05A0DBDD 08000000
-025B744C 000003E7
-$KRATOS Max TP
-05A0DBDE 08000000
-025B7470 000003E7
-$KRATOS Max Stats
-05A0DBDF 08000000
-025B7472 000707CF
-$KRATOS Status Always Normal
-05A0DBE0 08000000
-005B7457 00000000
-$KRATOS Super Quick Level Up
-05A0DBE1 08000000
-045B7450 0098967F
-$KRATOS Have All Titles
-05A0DBE2 08000000
-045B7458 000003FF
-$SHEENA Full HP
-05A0DC11 08000000
-025B6FEA 0000270F
-$SHEENA Max HP
-05A0DC12 08000000
-025B700E 0000270F
-$SHEENA Full TP
-05A0DC13 08000000
-025B6FEC 000003E7
-$SHEENA Max TP
-05A0DC14 08000000
-025B7010 000003E7
-$SHEENA Max Stats
-05A0DC15 08000000
-025B7012 000707CF
-$SHEENA Status Always Normal
-05A0DC16 08000000
-005B6FF7 00000001
-$SHEENA Super Quick Level Up
-05A0DC17 08000000
-045B6FF0 0098967F
-$SHEENA Have All Titles
-05A0DC18 08000000
-045B6FF8 08000000
-$ZELOS Full HP
-05A0DC1A 08000000
-025B7102 0000270F
-$ZELOS Max HP
-05A0DC1B 08000000
-025B7126 0000270F
-$ZELOS Full TP
-05A0DC1C 08000000
-025B7104 000003E7
-$ZELOS Max TP
-05A0DC1D 08000000
-025B7128 000003E7
-$ZELOS Max Stats
-05A0DC1E 08000000
-025B712A 000707CF
-$ZELOS Status Always Normal
-05A0DC1F 08000000
-005B710F 00000000
-$ZELOS Super Quick Level Up
-05A0DC20 08000000
-045B7108 0098967F
-$ZELOS Have All Titles
-05A0DC21 08000000
-045B7110 08000000
-$PRESEA Full HP
-05A0DC23 08000000
-025B721A 0000270F
-$PRESEA Max HP
-05A0DC24 08000000
-025B723E 0000270F
-$PRESEA Full TP
-05A0DC25 08000000
-025B721C 000003E7
-$PRESEA Max TP
-05A0DC26 08000000
-025B7240 000003E7
-$PRESEA Max Stats
-05A0DC27 08000000
-025B7242 000707CF
-$PRESEA Status Always Normal
-05A0DC28 08000000
-005B7227 00000000
-$PRESEA Super Quick Level Up
-05A0DC29 08000000
-045B7220 0098967F
-$PRESEA Have All Titles
-05A0DC2A 08000000
-045B7228 08000000
-$Equipment Modifier-Lloyd - READ INSTRUCTIONS
-025B6BC2 0000009B
-045B6BC4 0122014A
-045B6BC8 017701BD
-025B6BCC 00000189
-$Equipment Modifier-Colette - READ INSTRUCTIONS
-025B6CDA 00000000
-045B6CDC 00000000
-045B6CE0 00000000
-025B6CE4 00000000
-$Equipment Modifier-Genis - READ INSTRUCTIONS
-025B6DF2 00000000
-045B6DF4 00000000
-045B6DF8 00000000
-025B6DFC 00000000
-$Equipment Modifier -
-025B6F0A 00000000
-045B6F0C 00000000
-045B6F10 00000000
-045B6F14 00000000
-$Equipment Modifier-Raine - READ INSTRUCTIONS
-025B6F0A 00000000
-045B6F0C 00000000
-045B6F10 00000000
-045B6F14 00000000
-$Equipment Modifier-Sheena - READ INSTRUCTIONS
-025B7022 00000000
-045B7024 00000000
-045B7028 00000000
-045B702C 00000000
-$Equipment Modifier-Zelos - READ INSTRUCTIONS
-025B713A 00000000
-045B713C 00000000
-045B7140 00000000
-025B7144 00000000
-$Equipment Modifier-Presea - READ INSTRUCTIONS
-025B7252 00000000
-045B7254 00000000
-045B7258 00000000
-025B725C 00000000
-$Equipment Modifier-Regal - READ INSTRUCTIONS
-025B736A 00000000
-045B736C 00000000
-045B7370 00000000
-025B7374 00000000
-$Colette Affection to Lloyd - max is 0000270F
-05A02376 08000000
-025B6CEA 0000270F
-$Genis Affection to Lloyd - max is 0000270F
-05A055DC 08000000
-025B6E02 0000270F
-$Raine Affection to Lloyd - max is 0000270F
-05A03466 08000000
-025B6F1A 0000270F
-$Sheena Affection to Lloyd - max is 0000270F
-05A01152 08000000
-025B7032 0000270F
-$Zelos Affection to Lloyd - max is 0000270F
-05A01C97 08000000
-025B714A 0000270F
-$Presea Affection to Lloyd - max is 0000270F
-05A038CC 08000000
-025B7262 0000270F
-$Regal Affection to Lloyd - max is 0000270F
-05A0483C 08000000
-025B737A 0000270F
-$REGAL Super Quick Level Up
-05A0DC32 08000000
-045B7338 0098967F
-$Kratos Affection to Lloyd - max is 0000270F
-05A040B8 08000000
-025B7492 0000270F
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear = 0.5
-PH_ZFar = 1
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Video_Hacks]
-DlistCachingEnable = False
-
+# GQSEAF - TALES OF SYMPHONIA 1
+[Core]
+#Values set here will override the main dolphin settings.
+[EmuState]
+#The Emulation State. 1 is worst, 5 is best, 0 is not set.
+#Emulation state validated on r1648
+EmulationStateId = 4
+#Action Replay Notes
+#
+# * * * * * NOTES ON EQUIPMENT MODIFIERS BEFORE USING THOSE CODES * * * *
+#
+#You can mess with other items all you want, but Weapons can only go to their respective characters #or the game will freeze. Empty Slots will also make the game freeze if used on Weapons. You can
+#put Accessories on other slots, like Persian Boots on Body Armor, Head Armor, Arm Armor, and
+#Accessory 1 %amp; 2. You need 4 Persian Boots to make characters Absorb Elements!
+#The format of the codes for these sections is:
+# 0000XXXX
+# YYYYZZZZ
+# AAAABBBB
+# 0000CCCC
+#where each 4 digit letter represents
+#XXXX = Weapon
+#YYYY = Body Armor
+#ZZZZ = Head Armor
+#AAAA = Arm Armor
+#BBBB = Accessory 1
+#CCCC = Accessory 2
+#0000 - Empty Slot
+#
+#You must manually set the intended item for each char's equipment BEFORE USING THESE CODES
+#
+#Lloyd
+#0087 - Wooden Blade
+#0088 - Rapier
+#0089 - Mumei
+#008A - Knight's Saber
+#008B - Masamune
+#008C - Osafune
+#008D - Sinclaire
+#008E - Nimble Rapier
+#008F - Ogre Sword
+#0090 - Kotetsu
+#0091 - Shiden
+#0092 - Saint Rapier
+#0093 - Dragon Tooth
+#0094 - Defenser
+#0095 - Elemental Brand
+#0096 - Muramasa
+#0097 - Wasier Rapier
+#0098 - Angel's Tear
+#0099 - Ninja Sword
+#009A - Material Blade
+#009B - Kusanagi Blade
+#009C - Valkyrie Saber
+#009D - Paper Fan
+#009E - Nebilim
+#
+#Colette
+#009F - Chakram
+#00A0 - Flying Disk
+#00A1 - Duel Ring
+#00A2 - Slicer Ring
+#00A3 - Mystic Ring
+#00A4 - Stinger Ring
+#00A5 - Ray Thrust
+#00A6 - Mythril Ring
+#00A7 - Shuriken
+#00A8 - Solar Spinner
+#00A9 - Lunar Ring
+#00AA - Toroid
+#00AB - Stardust
+#00AC - Angel's Halo
+#00AD - Tambourine
+#00AE - Evil Eye
+#
+#Genis
+#00AF - Nova
+#00B0 - Fine Star
+#00B1 - Duel Star
+#00B2 - Falling Star
+#00B3 - Cool Orbit
+#00B4 - Thunderbolt
+#00B5 - Shining Star
+#00B6 - Shadow Dancer
+#00B7 - Cor Leonis
+#00B8 - Northern Lights
+#00B9 - Southern Cross
+#00BA - Final Player
+#00BB - One World
+#00BC - Phantasmagoria
+#00BD - Disaster
+#
+#Raine
+#00BE - Rod
+#00BF - Battle Staff
+#00C0 - Gem Rod
+#00C1 - Earth Rod
+#00C2 - Ruby Wand
+#00C3 - Rune Staff
+#00C4 - Gale Staff
+#00C5 - Phoenix Rod
+#00C6 - Holy Staff
+#00C7 - Thunder Scepter
+#00C8 - Ancient Rod
+#00C9 - Hanuman's Staff
+#00CA - Crystal Rod
+#00CB - Deck Brush
+#00CC - Heart Of Chaos
+#
+#Sheena
+#00CD - Spell Card
+#00CE - Card of Water
+#00CF - Card of Earth
+#00D0 - Card of Fire
+#00D1 - Card of Lightning
+#00D2 - Card of Wind
+#00D3 - Card of Ice
+#00D4 - Vajra
+#00D5 - Yaska
+#00D6 - Asura
+#00D7 - Acalanatha
+#00D8 - Divine Judgement
+#00D9 - Money Bag
+#00DA - Gates of Hell
+#
+#Zelos/Kratos
+#00DB - Stiletto
+#00DC - Earth Dagger
+#00DD - Hydra Dagger
+#00DE - Assault dagger
+#00DF - Flame Dagger
+#00E0 - Gladius
+#00E1 - Crystal Dagger
+#00E2 - Toy Dagger
+#00E3 - Fafnir
+#00E4 - Long Sword
+#00E5 - Steel Sword
+#00E6 - Silver Sword
+#00E7 - Aqua Brand
+#00E8 - Sand Saber
+#00E9 - Lightning Sword
+#00EA - Ice Coffin
+#00EB - Ether Sword
+#00EC - Flamberge
+#00ED - Laser Blade
+#00EE - Excalibur
+#00EF - Last Fencer
+#00F0 - Baseball Bat
+#00F1 - Soul Eater
+#
+#Presea
+#00F2 - Francesca
+#00F3 - Battle Ax
+#00F4 - Great Ax
+#00F5 - Crescent Ax
+#00F6 - Tomahawk Lance
+#00F7 - Halberd
+#00F8 - Bardiche
+#00F9 - Myrthril Ax
+#00FA - War Hammer
+#00FB - Battle Pick
+#00FC - Strike Ax
+#00FD - Ogre Ax
+#00FE - Bahumut's Tear
+#00FF - Gaia Cleaver
+#0100 - Pow Hammer DX
+#0101 - Diablos
+#
+#Regal
+#0102 - Leather Greaves
+#0103 - Iron Greaves
+#0104 - Power Greaves
+#0105 - Venom
+#0106 - Bear Claw
+#0107 - Ghost Shell
+#0108 - Mythril Greaves
+#0109 - Aqua Greaves
+#010A - Crystal Shell
+#010B - Flare Greaves
+#010C - Dragon Fang
+#010D - Diamond Shell
+#010E - Kaiser Greaves
+#010F - Dynast
+#0110 - Glory Arts
+#0111 - Apocalypse
+#
+#Armors
+#0112 - Soft Leather
+#0113 - Chain Mail
+#0114 - Ring Mail
+#0115 - Iron Mail
+#0116 - Splint Mail
+#0117 - Breastplate
+#0118 - Battle Suit
+#0119 - Silver Mail
+#011A - Mythril Armor
+#011C - Brunnhilde
+#011D - Reflect
+#011E - Rare Plate
+#011F - Dragon Mail
+#0120 - Golden Armor
+#0121 - Star Mail
+#0122 - Mumbane
+#
+#Guards
+#0123 - Leather Guard
+#0124 - Fine Guard
+#0125 - Iron Guard
+#0126 - Elven Protector
+#0127 - Lunar Guard
+#0128 - Rune Guard
+#0129 - Star Guard
+#012A - Prism Guard
+#012B - Mana Protector
+#012C - Elemental Guard
+#
+#Cloaks
+#012D - Cloak
+#012E - White Cloak
+#012F - Amber Cloak
+#0130 - Silk Cloak
+#0131 - Rune Cloak
+#0132 - Holy Cloak
+#0133 - Mythril Mesh
+#0134 - Star Cloak
+#0135 - Phoenix Cloak
+#0136 - Mortality Cloak
+#
+#Robes
+#0137 - Robe
+#0138 - Feather Robe
+#013B - Silk Robe
+#013C - Rune Robe
+#013D - Holy Robe
+#013E - Spirit Robe
+#013F - Shaman Dress
+#0140 - Kannazuki
+#
+#Helmets
+#0141 - Leather Helm
+#0142 - Iron Helm
+#0143 - Armet Helm
+#0144 - Cross Helm
+#0145 - Duel Helm
+#0146 - Rune Helm
+#0147 - Sigurd
+#0148 - Rare Helm
+#0149 - Star Helm
+#014A - Golden Helm
+#
+#Ribbons
+#014C - Ribbon
+#014D - Blue Ribbon
+#014E - Striped Ribbon
+#014F - Tartan Ribbon
+#0150 - Pretty Ribbon
+#0151 - Hairpin
+#0152 - Maid's Hairband
+#0153 - Magical Ribbon
+#
+#Hats
+#0154 - Beret
+#0155 - Cleric's Hat
+#0156 - Straw Hat
+#0157 - Pointed Hat
+#0158 - Rune Hat
+#0159 - Headband
+#015A - Star Cap
+#015B - Aifread's Hat
+#
+#Circlets
+#015C - Circlet
+#015D - Silver Circlet
+#015E - Gold Circlet
+#015F - Mythril Circlet
+#0160 - Rune Circlet
+#0161 - Holy Circlet
+#0162 - Star Circlet
+#0163 - Elemental Circlet
+#
+#Shields
+#0164 - Lid Shield
+#0165 - Wooden Shield
+#0166 - Omega Shield
+#0167 - Mythril Shield
+#0168 - Rune Shield
+#0169 - Red Shield
+#016A - Rare Shield
+#016B - Arredoval
+#016C - Star Shield
+#016D - Beam Shield
+#016E - Blue Shield
+#
+#Gauntlets/Gloves
+#016F - Leather Glove
+#0170 - Iron Gauntlet
+#0171 - Claw Gauntlet
+#0172 - Mythril Gauntlet
+#0173 - Rune Gauntlet
+#0174 - Penguinist Gloves
+#0175 - Rare Gauntlet
+#0176 - Star Gauntlet
+#0177 - Hyper Gauntlet
+#
+#Bracelets
+#0178 - Bracelet
+#0179 - Iron Bracelet
+#017A - Mythril Bracelet
+#017B - Lapis Bracelet
+#017C - Star Bracelet
+#017D - Angel Bracelet
+#017E - Draupnir
+#017F - Shield Ring
+#
+#Gloves
+#0180 - Gloves
+#0181 - Kitchen Mittens
+#0182 - Pretty Mittens
+#0183 - Bridal Gloves
+#0184 - Silk Gloves
+#0185 - Cute Mittens
+#0186 - Lovely Mittens
+#0187 - Katz Mittens
+#
+#Charms
+#0188 - Poison Charm
+#0189 - Drain Charm
+#018A - Stone Charm
+#018B - Paralysis Charm
+#018C - Stun Charm
+#018D - Amulet
+#018B - Talisman
+#018E - Blue Talisman
+#018F - Manji Seal
+#0190 - Stun Bracelet
+#0191 - Heal Bracelet
+#0192 - Spirit Bangle
+#0193 - Yasakani Jewel
+#0194 - Yata Mirror
+#
+#Rings
+#0195 - Emerald Ring
+#0196 - Faerie Ring
+#0197 - Protect Ring
+#0198 - Force Ring
+#0199 - Resist Ring
+#019A - Reflect Ring
+#019B - Holy Ring
+#019C - Spirit Ring
+#019D - Revive Ring
+#019E - Attack Ring
+#019F - Defense Ring
+#01A0 - Magic Ring
+#
+#Symbols
+#01A1 - Warrior Symbol
+#01A2 - Guardian Symbol
+#01A3 - Rabbit's Foot
+#01A4 - Holy Symbol
+#01A5 - Spirit Symbol
+#01A6 - Dark Seal
+#01A7 - Demon's Seal
+#01A8 - Extreme Symbol
+#01A9 - Mystic Symbol
+#01AA - Krona Symbol
+#
+#Capes
+#01AC - Cape
+#01AD - Leather Cape
+#01AE - Thief's Cape
+#01AF - Elven Cape
+#01B0 - Aqua Cape
+#01B1 - Flare Cape
+#01B2 - Thunder Cape
+#01B3 - Rune Cape
+#
+#Boots
+#01B4 - Boots
+#01B5 - Leather Boots
+#01B6 - Elven Boots
+#01B7 - Water Spider
+#01B8 - Heavy Boots
+#01B9 - Rune Boots
+#01BA - Persian Boots
+#01BB - Jet Boots
+#
+#Jewels
+#01BC - Aquamarine
+#01BD - Amethyst
+#01BE - Opal
+#01BF - Garnet
+#01C0 - Sapphire
+#01C1 - Diamond
+#01C2 - Topaz
+#01C3 - Ruby
+#01C4 - Sardonyx
+#01C5 - Black Onyx
+#01C6 - Moon Stone
+#01C7 - Magic Mist
+#01C8 - Reverse Doll
+#01C9 - Sephira
+#01CA - Blue Sephira
+#01CB - Hard Leather
+#01CC - Lamellar Leather
+#01CD - Silver Guard
+#01CE - Rare Guard
+#01CF - Mage Cloak
+#01D0 - Druid Cloak
+#01D1 - Warlock Garb
+#01D2 - Battle Cloak
+#01D3 - White Robe
+#01D4 - Yayoi
+#01D5 - Minazuki
+#01D6 - Nagazuki
+#01DB - Strike Ring
+#01DC - Technical Ring
+#01E0 - Snow Hare
+#01E4 - Mythril Guard
+#01E5 - Solar Guard
+#01E6 - Elder Cloak
+#01E7 - Moon Robe
+#01E8 - Ancient Robe
+#0157 - Heavenly Robe
+#01FC - Penguinist Quill
+#0203 - Turquoise
+#
+# Max Affection codes
+# use only one of these codes at a time for your
+# favorite character to have max affection.
+EmulationIssues = Sound issues need LLE plugin to be solved.(r7184)
+[OnFrame]
+[ActionReplay]
+$(M) (Datel)
+05A0DBAC 88000000
+C4114108 0000FF01
+$Infinite Gald
+05A0DBAD 08000000
+045B68C0 05F5E0FF
+$Infinite Grade
+05A0DBAE 08000000
+045B87E8 000F41DC
+$Save Anywhere
+05A0DBAF 08000000
+0035A73D 00000001
+$Max Encounters
+05A0DBB0 08000000
+025B68C4 0000FFFF
+$Max Combo
+05A0DBB1 08000000
+025B68C6 0000FFFF
+$Low Game Time
+05A0DBB2 08000000
+0435AA1C 00002197
+045B68C8 00000001
+$Less Random Encounters
+05A0DBB3 08000000
+005B86E3 00000001
+$More Random Encounters
+05A0DBB4 08000000
+005B86E3 00000002
+$Have Tons of Items and Weapons
+05A0DC0E 08000000
+005B776E 00003209
+005B77B8 0000C609
+$All Recipes
+05A0DC0F 08000000
+045B86D8 00FFFFFF
+$100% Collectors Book
+05A01F54 08000000
+005B79E4 000043FF
+$Full Monsters List
+05A03E16 08000000
+005B68D0 0000FAFF
+$19 of each Energy/Healing/Revive/Monster Items
+05A05563 08000000
+005B7774 00000213
+005B7778 00000113
+005B7784 00000113
+$19 of all Customizing Items
+05A03AAA 08000000
+005B77B8 00000913
+$19 of all Food Ingredients
+05A02C74 08000000
+005B77C2 00003113
+$19 of each EX Gems
+05A0276B 08000000
+005B7795 00000313
+005B795D 00000013
+$19 of each Red Herb
+05A00388 08000000
+005B778C 00000513
+$19 of each Quartz Item
+05A046A9 08000000
+005B7799 00000713
+$19 of each Symbol
+05A0705F 08000000
+005B790F 00000A13
+$19 of each Miscellaneous Item
+05A07583 08000000
+005B7792 00000213
+$19 of each type of Pellet
+05A04113 08000000
+005B7970 00000313
+$Full Unison Attack Gauge
+05A07223 08000000
+005B8710 000000C8
+$Over Limits Status For ALL Characters
+05A008B3 08000000
+005B6BCE 00000064
+005B6CE6 00000064
+005B6DFE 00000064
+005B6F16 00000064
+005B702E 00000064
+005B7146 00000064
+005B725E 00000064
+005B7376 00000064
+005B748E 00000064
+$LLOYD Full HP
+05A0DBB7 08000000
+025B6B8A 0000270F
+$LLOYD Max HP
+05A0DBB8 08000000
+025B6BAE 0000270F
+$LLOYD Full TP
+05A0DBB9 08000000
+025B6B8C 000003E7
+$LLOYD Max TP
+05A0DBBA 08000000
+025B6BB0 000003E7
+$LLOYD Max Stats
+05A0DBBB 08000000
+025B6BB2 000707CF
+$LLOYD Status Always Normal
+05A0DBBC 08000000
+005B6B97 00000000
+$LLOYD Super Quick Level Up
+05A0DBBD 08000000
+045B6B90 0098967F
+$LLOYD Have All Titles
+05A0DBBE 08000000
+045B6B98 FFFFE7FF
+$COLETTE Full HP
+05A0DBC0 08000000
+025B6CA2 0000270F
+$COLETTE Max HP
+05A0DBC1 08000000
+025B6CC6 0000270F
+$COLETTE Full TP
+05A0DBC2 08000000
+025B6CA4 000003E7
+$COLETTE Max TP
+05A0DBC3 08000000
+025B6CC8 000003E7
+$COLETTE Max Stats
+05A0DBC4 08000000
+025B6CCA 000707CF
+$COLETTE Status Always Normal
+05A0DBC5 08000000
+005B6CAF 00000000
+$COLETTE Super Quick Level Up
+05A0DBC6 08000000
+045B6CA8 0098967F
+$COLETTE Have All Titles
+05A0DBC7 08000000
+045B6CB0 08000000
+$GENIS Full HP
+05A0DBC9 08000000
+025B6DBA 0000270F
+$GENIS Max HP
+05A0DBCA 08000000
+025B6DDE 0000270F
+$GENIS Full TP
+05A0DBCB 08000000
+025B6DBC 000003E7
+$GENIS Max TP
+05A0DBCC 08000000
+025B6DE0 000003E7
+$GENIS Max Stats
+05A0DBCD 08000000
+025B6DE2 000707CF
+$GENIS Status Always Normal
+05A0DBCE 08000000
+005B6DC7 00000000
+$GENIS Super Quick Level Up
+05A0DBCF 08000000
+045B6DC0 0098967F
+$GENIS Have All Titles
+05A0DBD0 08000000
+045B6DC8 FFFFE7FF
+$RAINE Full HP
+05A0DBD2 08000000
+025B6ED2 0000270F
+$RAINE Max HP
+05A0DBD3 08000000
+025B6EF6 0000270F
+$RAINE Full TP
+05A0DBD4 08000000
+025B6ED4 000003E7
+$RAINE Max TP
+05A0DBD5 08000000
+025B6EF8 000003E7
+$RAINE Max Stats
+05A0DBD6 08000000
+025B6EFA 000707CF
+$RAINE Status Always Normal
+05A0DBD7 08000000
+005B6EDF 00000000
+$RAINE Super Quick Level Up
+05A0DBD8 08000000
+045B6ED8 0098967F
+$RAINE Have All Titles
+05A0DBD9 08000000
+045B6EE0 08000000
+$KRATOS Full HP
+05A0DBDB 08000000
+025B744A 0000270F
+$KRATOS Max HP
+05A0DBDC 08000000
+025B746E 0000270F
+$KRATOS Full TP
+05A0DBDD 08000000
+025B744C 000003E7
+$KRATOS Max TP
+05A0DBDE 08000000
+025B7470 000003E7
+$KRATOS Max Stats
+05A0DBDF 08000000
+025B7472 000707CF
+$KRATOS Status Always Normal
+05A0DBE0 08000000
+005B7457 00000000
+$KRATOS Super Quick Level Up
+05A0DBE1 08000000
+045B7450 0098967F
+$KRATOS Have All Titles
+05A0DBE2 08000000
+045B7458 000003FF
+$SHEENA Full HP
+05A0DC11 08000000
+025B6FEA 0000270F
+$SHEENA Max HP
+05A0DC12 08000000
+025B700E 0000270F
+$SHEENA Full TP
+05A0DC13 08000000
+025B6FEC 000003E7
+$SHEENA Max TP
+05A0DC14 08000000
+025B7010 000003E7
+$SHEENA Max Stats
+05A0DC15 08000000
+025B7012 000707CF
+$SHEENA Status Always Normal
+05A0DC16 08000000
+005B6FF7 00000001
+$SHEENA Super Quick Level Up
+05A0DC17 08000000
+045B6FF0 0098967F
+$SHEENA Have All Titles
+05A0DC18 08000000
+045B6FF8 08000000
+$ZELOS Full HP
+05A0DC1A 08000000
+025B7102 0000270F
+$ZELOS Max HP
+05A0DC1B 08000000
+025B7126 0000270F
+$ZELOS Full TP
+05A0DC1C 08000000
+025B7104 000003E7
+$ZELOS Max TP
+05A0DC1D 08000000
+025B7128 000003E7
+$ZELOS Max Stats
+05A0DC1E 08000000
+025B712A 000707CF
+$ZELOS Status Always Normal
+05A0DC1F 08000000
+005B710F 00000000
+$ZELOS Super Quick Level Up
+05A0DC20 08000000
+045B7108 0098967F
+$ZELOS Have All Titles
+05A0DC21 08000000
+045B7110 08000000
+$PRESEA Full HP
+05A0DC23 08000000
+025B721A 0000270F
+$PRESEA Max HP
+05A0DC24 08000000
+025B723E 0000270F
+$PRESEA Full TP
+05A0DC25 08000000
+025B721C 000003E7
+$PRESEA Max TP
+05A0DC26 08000000
+025B7240 000003E7
+$PRESEA Max Stats
+05A0DC27 08000000
+025B7242 000707CF
+$PRESEA Status Always Normal
+05A0DC28 08000000
+005B7227 00000000
+$PRESEA Super Quick Level Up
+05A0DC29 08000000
+045B7220 0098967F
+$PRESEA Have All Titles
+05A0DC2A 08000000
+045B7228 08000000
+$Equipment Modifier-Lloyd - READ INSTRUCTIONS
+025B6BC2 0000009B
+045B6BC4 0122014A
+045B6BC8 017701BD
+025B6BCC 00000189
+$Equipment Modifier-Colette - READ INSTRUCTIONS
+025B6CDA 00000000
+045B6CDC 00000000
+045B6CE0 00000000
+025B6CE4 00000000
+$Equipment Modifier-Genis - READ INSTRUCTIONS
+025B6DF2 00000000
+045B6DF4 00000000
+045B6DF8 00000000
+025B6DFC 00000000
+$Equipment Modifier -
+025B6F0A 00000000
+045B6F0C 00000000
+045B6F10 00000000
+045B6F14 00000000
+$Equipment Modifier-Raine - READ INSTRUCTIONS
+025B6F0A 00000000
+045B6F0C 00000000
+045B6F10 00000000
+045B6F14 00000000
+$Equipment Modifier-Sheena - READ INSTRUCTIONS
+025B7022 00000000
+045B7024 00000000
+045B7028 00000000
+045B702C 00000000
+$Equipment Modifier-Zelos - READ INSTRUCTIONS
+025B713A 00000000
+045B713C 00000000
+045B7140 00000000
+025B7144 00000000
+$Equipment Modifier-Presea - READ INSTRUCTIONS
+025B7252 00000000
+045B7254 00000000
+045B7258 00000000
+025B725C 00000000
+$Equipment Modifier-Regal - READ INSTRUCTIONS
+025B736A 00000000
+045B736C 00000000
+045B7370 00000000
+025B7374 00000000
+$Colette Affection to Lloyd - max is 0000270F
+05A02376 08000000
+025B6CEA 0000270F
+$Genis Affection to Lloyd - max is 0000270F
+05A055DC 08000000
+025B6E02 0000270F
+$Raine Affection to Lloyd - max is 0000270F
+05A03466 08000000
+025B6F1A 0000270F
+$Sheena Affection to Lloyd - max is 0000270F
+05A01152 08000000
+025B7032 0000270F
+$Zelos Affection to Lloyd - max is 0000270F
+05A01C97 08000000
+025B714A 0000270F
+$Presea Affection to Lloyd - max is 0000270F
+05A038CC 08000000
+025B7262 0000270F
+$Regal Affection to Lloyd - max is 0000270F
+05A0483C 08000000
+025B737A 0000270F
+$REGAL Super Quick Level Up
+05A0DC32 08000000
+045B7338 0098967F
+$Kratos Affection to Lloyd - max is 0000270F
+05A040B8 08000000
+025B7492 0000270F
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear = 0.5
+PH_ZFar = 1
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video_Hacks]
+DlistCachingEnable = False
+
diff --git a/Data/User/GameConfig/GQSFAF.ini b/Data/User/GameConfig/GQSFAF.ini
index 3395be24bb..56bc287e7e 100644
--- a/Data/User/GameConfig/GQSFAF.ini
+++ b/Data/User/GameConfig/GQSFAF.ini
@@ -1,23 +1,22 @@
-# GQSFAF - TALES OF SYMPHONIA
-[Core]
-#Values set here will override the main dolphin settings.
-[EmuState]
-#The Emulation State. 1 is worst, 5 is best, 0 is not set.
-#Emulation state validated on r1648
-EmulationStateId = 4
-EmulationIssues = Sound issues need LLE plugin to be solved.(r7184)
-[OnFrame]
-[ActionReplay]
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear = 0.5
-PH_ZFar = 1
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Video_Hacks]
-DlistCachingEnable = False
+# GQSFAF - TALES OF SYMPHONIA
+[Core]
+#Values set here will override the main dolphin settings.
+[EmuState]
+#The Emulation State. 1 is worst, 5 is best, 0 is not set.
+#Emulation state validated on r1648
+EmulationStateId = 4
+EmulationIssues = Sound issues need LLE plugin to be solved.(r7184)
+[OnFrame]
+[ActionReplay]
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear = 0.5
+PH_ZFar = 1
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video_Hacks]
+DlistCachingEnable = False
diff --git a/Data/User/GameConfig/GQSPAF.ini b/Data/User/GameConfig/GQSPAF.ini
index e6ddfab0a8..64132e6ca7 100644
--- a/Data/User/GameConfig/GQSPAF.ini
+++ b/Data/User/GameConfig/GQSPAF.ini
@@ -1,23 +1,22 @@
-# GQSPAF - TALES OF SYMPHONIA
-[Core]
-#Values set here will override the main dolphin settings.
-[EmuState]
-#The Emulation State. 1 is worst, 5 is best, 0 is not set.
-#Emulation state validated on r1648
-EmulationStateId = 4
-EmulationIssues = Sound issues need LLE plugin to be solved.(r7184)
-[OnFrame]
-[ActionReplay]
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear = 0.5
-PH_ZFar = 1
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Video_Hacks]
-DlistCachingEnable = False
+# GQSPAF - TALES OF SYMPHONIA
+[Core]
+#Values set here will override the main dolphin settings.
+[EmuState]
+#The Emulation State. 1 is worst, 5 is best, 0 is not set.
+#Emulation state validated on r1648
+EmulationStateId = 4
+EmulationIssues = Sound issues need LLE plugin to be solved.(r7184)
+[OnFrame]
+[ActionReplay]
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear = 0.5
+PH_ZFar = 1
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video_Hacks]
+DlistCachingEnable = False
diff --git a/Data/User/GameConfig/GQTE4Q.ini b/Data/User/GameConfig/GQTE4Q.ini
index 2f34294dc2..79ec455449 100644
--- a/Data/User/GameConfig/GQTE4Q.ini
+++ b/Data/User/GameConfig/GQTE4Q.ini
@@ -1,6 +1,5 @@
# GQTE4Q - Meet the Robinsons
[Core] Values set here will override the main dolphin settings.
-MMU = 1
TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationIssues =
@@ -9,5 +8,9 @@ EmulationStateId = 4
[ActionReplay] Add action replay cheats here.
[Video]
ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
[Gecko]
-
diff --git a/Data/User/GameConfig/GRKE41.ini b/Data/User/GameConfig/GRKE41.ini
index fd75690f3b..8a151be00a 100644
--- a/Data/User/GameConfig/GRKE41.ini
+++ b/Data/User/GameConfig/GRKE41.ini
@@ -1,21 +1,20 @@
-# GRKE41 - Rocky
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = Use Directx11 plugin (r6651)
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-UseXFB = True
-SafeTextureCache = True
-UseRealXFB = False
-SafeTextureCacheColorSamples = 512
-
+# GRKE41 - Rocky
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Use Directx11 plugin (r6651)
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+UseXFB = True
+UseRealXFB = False
+SafeTextureCacheColorSamples = 512
+
diff --git a/Data/User/GameConfig/GRKP7G.ini b/Data/User/GameConfig/GRKP7G.ini
index 98715d9bed..ad972d8b90 100644
--- a/Data/User/GameConfig/GRKP7G.ini
+++ b/Data/User/GameConfig/GRKP7G.ini
@@ -1,21 +1,20 @@
-# GRKP7G - Rocky
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = Use Directx11 plugin (r6651)
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-UseXFB = True
-SafeTextureCache = True
-UseRealXFB = False
-SafeTextureCacheColorSamples = 512
-
+# GRKP7G - Rocky
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Use Directx11 plugin (r6651)
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+UseXFB = True
+UseRealXFB = False
+SafeTextureCacheColorSamples = 512
+
diff --git a/Data/User/GameConfig/GRSEAF.ini b/Data/User/GameConfig/GRSEAF.ini
index 3afdd80aa3..6b4775e6ac 100644
--- a/Data/User/GameConfig/GRSEAF.ini
+++ b/Data/User/GameConfig/GRSEAF.ini
@@ -1,21 +1,20 @@
-# GRSEAF - SOULCALIBUR2
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-UseXFB = True
-SafeTextureCache = True
-UseRealXFB = False
-SafeTextureCacheColorSamples = 512
-
+# GRSEAF - SOULCALIBUR2
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+UseXFB = True
+UseRealXFB = False
+SafeTextureCacheColorSamples = 512
+
diff --git a/Data/User/GameConfig/GRSPAF.ini b/Data/User/GameConfig/GRSPAF.ini
index 2ce9edae96..afb3c53169 100644
--- a/Data/User/GameConfig/GRSPAF.ini
+++ b/Data/User/GameConfig/GRSPAF.ini
@@ -1,563 +1,562 @@
-# GRSPAF - SOULCALIBUR2
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay]
-$(M)
-03EC2BE2 98000000
-C4193E28 0000FF00
-$Infinite Time
-03EC2BE3 18000000
-043A3694 00000063
-$Player 2 Codes
-03ECD256 15008000
-$Health Codes
-03ECD257 14692B28
-0C000000 00000000
-$Player 2: Infinite Health
-03EC2C02 14692BC0
-04383A5C 43700000
-$Player 2: One Hit Kill Handicap
-03EC2C03 14692BC0
-0A383A5C 00004370
-04383A5C 33D601CE
-$Player 2: 75% Health
-03EC2C04 14692BC0
-34383A5C 43340000
-04383A5C 43340000
-$Player 2: 50% Health
-03EC2C05 14692BC0
-34383A5C 42F00000
-04383A5C 42F00000
-$Player 2: 25% Health
-03EC2C06 14692BC0
-34383A5C 42700000
-04383A5C 42700000
-$Player 1 Codes
-03ECD258 15008000
-$Player 1 Moves
-03ECD259 14692C28
-0C000000 00000000
-$Player 1: Uses Seung Mina Moves
-03EC2BEC 14692CC0
-0236149A 00000002
-$Player 1: Uses Mitsurugi Moves
-03EC2BEB 14692CC0
-0236149A 00000001
-$Player 1: Uses Taki Moves
-03EC2BED 14692CC0
-0236149A 00000003
-$Player 1: Uses Maxi Moves
-03EC2BEE 14692CC0
-0236149A 00000004
-$Player 1: Uses Voldo Moves
-03EC2BEF 14692CC0
-0236149A 00000005
-$Player 1: Uses Sophita Moves
-03EC2BF0 14692CC0
-0236149A 00000006
-$Player 1: Uses Ivy Moves
-03EC2BF1 14692CC0
-0236149A 0000000B
-$Player 1: Uses Kilik Moves
-03EC2BF2 14692CC0
-0236149A 0000000C
-$Player 1: Uses Xianghua Moves
-03EC2BF3 14692CC0
-0236149A 0000000D
-$Player 1: Uses Yoshimitsu Moves
-03EC2BF4 14692CC0
-0236149A 0000000F
-$Player 1: Uses Nightmare Moves
-03EC2BF5 14692CC0
-0236149A 00000011
-$Player 1: Uses Astaroth Moves
-03EC2BF6 14692CC0
-0236149A 00000012
-$Player 1: Uses Cervantes Moves
-03EC2BF7 14692CC0
-0236149A 00000014
-$Player 1: Uses Raphael Moves
-03EC2BF8 14692CC0
-0236149A 00000015
-$Player 1: Uses Talim Moves
-03EC2BF9 14692CC0
-0236149A 00000016
-$Player 1: Uses Cassandra Moves
-03EC2BFA 14692CC0
-0236149A 00000017
-$Player 1: Uses Charade Moves
-03EC2BFB 14692CC0
-0236149A 00000018
-$Player 1: Uses Necrid Moves
-03EC2BFC 14692CC0
-0236149A 00000019
-$Player 1: Uses Yunsung Moves
-03EC2BFD 14692CC0
-0236149A 0000001A
-$Player 1: Uses Link Moves
-03EC2BFE 14692CC0
-0236149A 0000001B
-$Player 1: Uses Lizardman Moves
-03EC2BFF 14692CC0
-0236149A 0000001E
-$Player 1: Uses Assassin Moves
-03EC2C00 14692CC0
-0236149A 0000001F
-$Player 1: Uses Beserker Moves
-03EC2C01 14692CC0
-0236149A 00000020
-$Health Codes
-03ECD25A 14692C28
-0C000000 00000000
-$Player 1: One Hit Kill Handicap
-03EC2BE5 14692D40
-0A36299C 00004370
-0436299C 33D601CE
-$Player 1: 75% Health
-03EC2BE6 14692D40
-3436299C 43340000
-0436299C 43340000
-$Player 1: Infinite Health
-03EC2BE4 14692D40
-0436299C 43700000
-$Player 1: 50% Health
-03EC2BE7 14692D40
-3436299C 42F00000
-0436299C 42F00000
-$Player 1: 25% Health
-03EC2BE8 14692D40
-3436299C 42700000
-0436299C 42700000
-$Player 1: Hypermode (Press L+R+B)
-03EC2BE9 14692C40
-0A2E91D8 00000260
-043617D8 40000000
-$Player 1: SlowMo (Press L+R+A)
-03EC2BEA 14692C40
-0A2E91D8 00000160
-043617D8 3E000000
-$Play as Assassin
-03ECE2A5 14692C40
-02361498 0000001F
-$Play as Beserker
-03ECE2A6 14692C40
-02361498 00000020
-$Play as Lizardman
-03ECE2A7 14692C40
-02361498 0000001E
-$Play as Inferno
-03ECE2A8 14692C40
-02361498 00000013
-$Time Attack Timer Is Zero
-03EC2CA2 18000000
-02375CE0 00030000
-$Unlock Everything
-03EC2C07 18000000
-004161E0 00011303
-$Unlock Sophita
-03EC2C08 18000000
-004161E0 00000003
-$Unlock Seung Mina
-03EC2C09 18000000
-004161E1 00000003
-$Unlock Yoshimitsu
-03EC2C0A 18000000
-004161E2 00000003
-$Unlock Charade
-03EC2C0B 18000000
-004161E3 00000003
-$Unlock Cervantes
-03EC2C0C 18000000
-004161E4 00000003
-$Unlock Lizardman
-03EC2C0D 18000000
-004161E5 00000003
-$Unlock Assassin
-03EC2C0E 18000000
-004161E6 00000003
-$Unlock Beserker
-03EC2C0F 18000000
-004161E7 00000003
-$Unlock Raphael Profile
-03EC2C10 18000000
-004161E8 00000003
-$Unlock Raphael Weapon Demonstration
-03EC2C11 18000000
-004161E9 00000003
-$Unlock Raphael's New Costume
-03EC2C12 18000000
-004161EA 00000003
-$Unlock Talim Profile
-03EC2C13 18000000
-004161EB 00000003
-$Unlock Talim Weapon Demonstration
-03EC2C14 18000000
-004161EC 00000003
-$Unlock Talim's New Costume
-03EC2C15 18000000
-004161ED 00000003
-$Unlock Yunsung Profile
-03EC2C16 18000000
-004161EE 00000003
-$Unlock Yunsung Weapon Demonstration
-03EC2C17 18000000
-004161EF 00000003
-$Unlock Cassandra Profile
-03EC2C18 18000000
-004161F0 00000003
-$Unlock Cassandra Weapon Demonstration
-03EC2C19 18000000
-004161F1 00000003
-$Unlock Cassandra's New Costume
-03EC2C1A 18000000
-004161F2 00000003
-$Unlock Mitsurugi Profile
-03EC2C1B 18000000
-004161F3 00000003
-$Unlock Mitsurugi Weapon Demonstration
-03EC2C1C 18000000
-004161F4 00000003
-$Unlock Mitsurugi's New Costume
-03EC2C1D 18000000
-004161F5 00000003
-$Unlock Taki Profile
-03EC2C1E 18000000
-004161F6 00000003
-$Unlock Taki Weapon Demonstration
-03EC2C1F 18000000
-004161F7 00000003
-$Unlock Taki's New Costume
-03EC2C20 18000000
-004161F8 00000003
-$Unlock Voldo Profile
-03EC2C21 18000000
-004161F9 00000003
-$Unlock Voldo Weapon Demonstration
-03EC2C22 18000000
-004161FA 00000003
-$Unlock Voldo's New Costume
-03EC2C23 18000000
-004161FB 00000003
-$Unlock Nightmare Profile
-03EC2C24 18000000
-004161FC 00000003
-$Unlock Nightmare Weapon Demonstration
-03EC2C25 18000000
-004161FD 00000003
-$Unlock Nightmare New Costume
-03EC2C26 18000000
-004161FE 00000003
-$Unlock Astaroth Profile
-03EC2C27 18000000
-004161FF 00000003
-$Unlock Astaroth Weapon Demonstration
-03EC2C28 18000000
-00416200 00000003
-$Unlock Astaroth's New Costume
-03EC2C29 18000000
-00416201 00000003
-$Unlock Ivy Profile
-03EC2C2A 18000000
-00416202 00000003
-$Unlock Ivy Weapon Demonstration
-03EC2C2B 18000000
-00416203 00000003
-$Unlock Ivy's New Costume
-03EC2C2C 18000000
-00416204 00000003
-$Unlock Kilik Profile
-03EC2C2D 18000000
-00416205 00000003
-$Unlock Kilik Weapon Demonstration
-03EC2C2E 18000000
-00416206 00000003
-$Unlock Xianghau Profile
-03EC2C2F 18000000
-00416207 00000003
-$Unlock Xianghau Weapon Demonstration
-03EC2C30 18000000
-00416208 00000003
-$Unlock Xianghau's New Costume
-03EC2C31 18000000
-00416209 00000003
-$Unlock Maxi Profile
-03EC2C32 18000000
-0041620A 00000003
-$Unlock Taki Weapon Demonstration
-03EC2C33 18000000
-0041620B 00000003
-$Unlock Necrid Profile
-03EC2C34 18000000
-0041620C 00000003
-$Unlock Necrid Weapon Demonstration
-03EC2C35 18000000
-0041620D 00000003
-$Unlock Link Profile
-03EC2C36 18000000
-0041620E 00000003
-$Unlock Link Weapon Demonstration
-03EC2C37 18000000
-0041620F 00000003
-$Unlock Link's New Costume
-03EC2C38 18000000
-00416210 00000003
-$Unlock Link's New Costume 2
-03EC2C39 18000000
-00416211 00000003
-$Unlock Sophitia Profile
-03EC2C3A 18000000
-00416212 00000003
-$Unlock Sophitia Weapon Demonstration
-03EC2C3B 18000000
-00416213 00000003
-$Unlock Sophitia New Costume
-03EC2C3C 18000000
-00416214 00000003
-$Unlock Seung Mina Profile
-03EC2C3D 18000000
-00416215 00000003
-$Unlock Seung Mina Weapon Demonstration
-03EC2C3E 18000000
-00416216 00000003
-$Unlock Seung Mina New Costume
-03EC2C3F 18000000
-00416217 00000003
-$Unlock Yoshimitsu Profile
-03EC2C40 18000000
-00416218 00000003
-$Unlock Yoshimitsu Weapon Demonstration
-03EC2C41 18000000
-00416219 00000003
-$Unlock Charade Profile
-03EC2C42 18000000
-0041621A 00000003
-$Unlock Charade Weapon Demonstration
-03EC2C43 18000000
-0041621B 00000003
-$Unlock Cervante Profile
-03EC2C44 18000000
-0041621C 00000003
-$Unlock Cervante Weapon Demonstration
-03EC2C45 18000000
-0041621D 00000003
-$Unlock Extra Arcade Mode
-03EC2C46 18000000
-0041621E 00000003
-$Unlock Extra Vs Battle Mode
-03EC2C47 18000000
-0041621F 00000003
-$Unlock Extra Time Attack (Standard) Mode
-03EC2C48 18000000
-00416220 00000003
-$Unlock Extra Time Attack (Alternative) Mode
-03EC2C49 18000000
-00416221 00000003
-$Unlock Extra Time Attack (Extreme) Mode
-03EC2C4A 18000000
-00416222 00000003
-$Unlock Extra Survival (Standard) Mode
-03EC2C4B 18000000
-00416223 00000003
-$Unlock Extra Survival (Death Match) Mode
-03EC2C4C 18000000
-00416224 00000003
-$Unlock Extra Survival (No Recovery) Mode
-03EC2C4D 18000000
-00416225 00000003
-$Unlock Extra Team Battle Mode
-03EC2C4E 18000000
-00416226 00000003
-$Unlock Extra VS Team Battle Mode
-03EC2C4F 18000000
-00416227 00000003
-$Unlock Extra Practice Mode
-03EC2C50 18000000
-00416228 00000003
-$Unlock Art Gallery (Hi-Res)
-03EC2C51 18000000
-00416229 00000003
-$Unlock Art Gallery (Illustrations)
-03EC2C52 18000000
-0041622A 00000003
-$Unlock Art Gallery (Special)
-03EC2C53 18000000
-0041622B 00000003
-$Unlock Battle Theatre
-03EC2C54 18000000
-0041622C 00000003
-$Unlock Weapon Gallery
-03EC2C55 18000000
-0041622D 00000003
-$Unlock Weapons Master Opening
-03EC2C56 18000000
-0041622E 00000003
-$Unlock Weapons Master Ending
-03EC2C57 18000000
-0041622F 00000003
-$Unlock Opening (Home Ver.)
-03EC2C58 18000000
-00416230 00000003
-$Unlock Opening (Arcade Ver.)
-03EC2C59 18000000
-00416231 00000003
-$Unlock Ending (Arcade Ver.)
-03EC2C5A 18000000
-00416232 00000003
-$Unlock Hwangseo Palace/Phoenix Court
-03EC2C5B 18000000
-00416233 00000003
-$Unlock Lakeside Coliseum
-03EC2C5C 18000000
-00416234 00000003
-$Unlock Money Pit/Top Tier
-03EC2C5D 18000000
-00416235 00000003
-$Unlock Egyptian Crypt
-03EC2C5E 18000000
-00416236 00000003
-$Unlock Labyrinth
-03EC2C5F 18000000
-00416237 00000003
-$Unlock Epee (Raphael)
-03EC2C60 18000000
-00416238 00000003
-$Unlock Stiletto (Raphael)
-03EC2C61 18000000
-00416239 00000003
-$Unlock Reiterpallasch (Raphael)
-03EC2C62 18000000
-0041623A 00000003
-$Unlock Wo Dao (Raphael)
-03EC2C63 18000000
-0041623B 00000003
-$Unlock Schweizer (Raphael)
-03EC2C64 18000000
-0041623C 00000003
-$Unlock Holy Antler (Raphael)
-03EC2C65 18000000
-0041623D 00000003
-$Unlock Estoc (Raphael)
-03EC2C66 18000000
-0041623E 00000003
-$Unlock Soul Edge (Complete)
-03EC2C67 18000000
-0041623F 00000003
-$Unlock Queen's Guard (Raphael)
-03EC2C68 18000000
-00416240 00000003
-$Unlock Cane (Raphael)
-03EC2C69 18000000
-00416241 00000003
-$Unlock Wind Guide (Talim)
-03EC2C6A 18000000
-00416242 00000003
-$Unlock Tonfa (Talim)
-03EC2C6B 18000000
-00416243 00000003
-$Unlock Side Harpe (Talim)
-03EC2C6C 18000000
-00416244 00000003
-$Unlock Double Crescent Blade (Talim)
-03EC2C6D 18000000
-00416245 00000003
-$Unlock Chaqu (Talim)
-03EC2C6E 18000000
-00416246 00000003
-$Unlock Cao Ankana (Talim)
-03EC2C6F 18000000
-00416247 00000003
-$Unlock Maila Kari (Talim)
-03EC2C70 18000000
-00416248 00000003
-$Unlock Soul Edge (Complete)
-03EC2C71 18000000
-00416249 00000003
-$Unlock Soul Calibur (Talim)
-03EC2C72 18000000
-0041624A 00000003
-$Unlock Weight (Talim)
-03EC2C73 18000000
-0041624B 00000003
-$Unlock Machete (Yunsung)
-03EC2C74 18000000
-0041624C 00000003
-$Unlock Khanjar (Yunsung)
-03EC2C75 18000000
-0041624D 00000003
-$Unlock Xiao Lian (Yunsung)
-03EC2C76 18000000
-0041624E 00000003
-$Unlock Giant Butcher Knife (Yunsung)
-03EC2C77 18000000
-0041624F 00000003
-$Unlock Cheng Ying (Yunsung)
-03EC2C78 18000000
-00416250 00000003
-$Unlock Ramdao (Yunsung)
-03EC2C79 18000000
-00416251 00000003
-$Unlock Blue Thunder (Yunsung)
-03EC2C7A 18000000
-00416252 00000003
-$Unlock Soul Edge (Complete) (Yunsung)
-03EC2C7B 18000000
-00416253 00000003
-$Unlock Han Guang (Yunsung)
-03EC2C7C 18000000
-00416254 00000003
-$Unlock Child's Sword (Yunsung)
-03EC2C7D 18000000
-00416255 00000003
-$Unlock Spiked Shield (Cassandra)
-03EC2C7E 18000000
-00416256 00000003
-$Unlock Dark Blade (Cassandra)
-03EC2C7F 18000000
-00416257 00000003
-$Unlock Metesashi (Cassandra)
-03EC2C80 18000000
-00416258 00000003
-$Unlock Spine Blade (Cassandra)
-03EC2C81 18000000
-00416259 00000003
-$Unlock Katzbalger (Cassandra)
-03EC2C82 18000000
-0041625A 00000003
-$Unlock Red Crystal Rod (Cassandra)
-03EC2C83 18000000
-0041625B 00000003
-$Unlock Ivan The Terrible (Cassandra)
-03EC2C84 18000000
-0041625C 00000003
-$Unlock Soul Edge (Complete) (Cassandra)
-03EC2C85 18000000
-0041625D 00000003
-$Unlock Valkyrie (Cassandra)
-03EC2C86 18000000
-0041625E 00000003
-$Unlock Keepsake (Cassandra)
-03EC2C87 18000000
-0041625F 00000003
-$Unlock Korefuji (Mitsurugi)
-03EC2C88 18000000
-00416260 00000003
-$Unlock Two-Handed Sword (Mitsurugi)
-03EC2C89 18000000
-00416261 00000003
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-UseXFB = True
-UseRealXFB = False
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-
+# GRSPAF - SOULCALIBUR2
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay]
+$(M)
+03EC2BE2 98000000
+C4193E28 0000FF00
+$Infinite Time
+03EC2BE3 18000000
+043A3694 00000063
+$Player 2 Codes
+03ECD256 15008000
+$Health Codes
+03ECD257 14692B28
+0C000000 00000000
+$Player 2: Infinite Health
+03EC2C02 14692BC0
+04383A5C 43700000
+$Player 2: One Hit Kill Handicap
+03EC2C03 14692BC0
+0A383A5C 00004370
+04383A5C 33D601CE
+$Player 2: 75% Health
+03EC2C04 14692BC0
+34383A5C 43340000
+04383A5C 43340000
+$Player 2: 50% Health
+03EC2C05 14692BC0
+34383A5C 42F00000
+04383A5C 42F00000
+$Player 2: 25% Health
+03EC2C06 14692BC0
+34383A5C 42700000
+04383A5C 42700000
+$Player 1 Codes
+03ECD258 15008000
+$Player 1 Moves
+03ECD259 14692C28
+0C000000 00000000
+$Player 1: Uses Seung Mina Moves
+03EC2BEC 14692CC0
+0236149A 00000002
+$Player 1: Uses Mitsurugi Moves
+03EC2BEB 14692CC0
+0236149A 00000001
+$Player 1: Uses Taki Moves
+03EC2BED 14692CC0
+0236149A 00000003
+$Player 1: Uses Maxi Moves
+03EC2BEE 14692CC0
+0236149A 00000004
+$Player 1: Uses Voldo Moves
+03EC2BEF 14692CC0
+0236149A 00000005
+$Player 1: Uses Sophita Moves
+03EC2BF0 14692CC0
+0236149A 00000006
+$Player 1: Uses Ivy Moves
+03EC2BF1 14692CC0
+0236149A 0000000B
+$Player 1: Uses Kilik Moves
+03EC2BF2 14692CC0
+0236149A 0000000C
+$Player 1: Uses Xianghua Moves
+03EC2BF3 14692CC0
+0236149A 0000000D
+$Player 1: Uses Yoshimitsu Moves
+03EC2BF4 14692CC0
+0236149A 0000000F
+$Player 1: Uses Nightmare Moves
+03EC2BF5 14692CC0
+0236149A 00000011
+$Player 1: Uses Astaroth Moves
+03EC2BF6 14692CC0
+0236149A 00000012
+$Player 1: Uses Cervantes Moves
+03EC2BF7 14692CC0
+0236149A 00000014
+$Player 1: Uses Raphael Moves
+03EC2BF8 14692CC0
+0236149A 00000015
+$Player 1: Uses Talim Moves
+03EC2BF9 14692CC0
+0236149A 00000016
+$Player 1: Uses Cassandra Moves
+03EC2BFA 14692CC0
+0236149A 00000017
+$Player 1: Uses Charade Moves
+03EC2BFB 14692CC0
+0236149A 00000018
+$Player 1: Uses Necrid Moves
+03EC2BFC 14692CC0
+0236149A 00000019
+$Player 1: Uses Yunsung Moves
+03EC2BFD 14692CC0
+0236149A 0000001A
+$Player 1: Uses Link Moves
+03EC2BFE 14692CC0
+0236149A 0000001B
+$Player 1: Uses Lizardman Moves
+03EC2BFF 14692CC0
+0236149A 0000001E
+$Player 1: Uses Assassin Moves
+03EC2C00 14692CC0
+0236149A 0000001F
+$Player 1: Uses Beserker Moves
+03EC2C01 14692CC0
+0236149A 00000020
+$Health Codes
+03ECD25A 14692C28
+0C000000 00000000
+$Player 1: One Hit Kill Handicap
+03EC2BE5 14692D40
+0A36299C 00004370
+0436299C 33D601CE
+$Player 1: 75% Health
+03EC2BE6 14692D40
+3436299C 43340000
+0436299C 43340000
+$Player 1: Infinite Health
+03EC2BE4 14692D40
+0436299C 43700000
+$Player 1: 50% Health
+03EC2BE7 14692D40
+3436299C 42F00000
+0436299C 42F00000
+$Player 1: 25% Health
+03EC2BE8 14692D40
+3436299C 42700000
+0436299C 42700000
+$Player 1: Hypermode (Press L+R+B)
+03EC2BE9 14692C40
+0A2E91D8 00000260
+043617D8 40000000
+$Player 1: SlowMo (Press L+R+A)
+03EC2BEA 14692C40
+0A2E91D8 00000160
+043617D8 3E000000
+$Play as Assassin
+03ECE2A5 14692C40
+02361498 0000001F
+$Play as Beserker
+03ECE2A6 14692C40
+02361498 00000020
+$Play as Lizardman
+03ECE2A7 14692C40
+02361498 0000001E
+$Play as Inferno
+03ECE2A8 14692C40
+02361498 00000013
+$Time Attack Timer Is Zero
+03EC2CA2 18000000
+02375CE0 00030000
+$Unlock Everything
+03EC2C07 18000000
+004161E0 00011303
+$Unlock Sophita
+03EC2C08 18000000
+004161E0 00000003
+$Unlock Seung Mina
+03EC2C09 18000000
+004161E1 00000003
+$Unlock Yoshimitsu
+03EC2C0A 18000000
+004161E2 00000003
+$Unlock Charade
+03EC2C0B 18000000
+004161E3 00000003
+$Unlock Cervantes
+03EC2C0C 18000000
+004161E4 00000003
+$Unlock Lizardman
+03EC2C0D 18000000
+004161E5 00000003
+$Unlock Assassin
+03EC2C0E 18000000
+004161E6 00000003
+$Unlock Beserker
+03EC2C0F 18000000
+004161E7 00000003
+$Unlock Raphael Profile
+03EC2C10 18000000
+004161E8 00000003
+$Unlock Raphael Weapon Demonstration
+03EC2C11 18000000
+004161E9 00000003
+$Unlock Raphael's New Costume
+03EC2C12 18000000
+004161EA 00000003
+$Unlock Talim Profile
+03EC2C13 18000000
+004161EB 00000003
+$Unlock Talim Weapon Demonstration
+03EC2C14 18000000
+004161EC 00000003
+$Unlock Talim's New Costume
+03EC2C15 18000000
+004161ED 00000003
+$Unlock Yunsung Profile
+03EC2C16 18000000
+004161EE 00000003
+$Unlock Yunsung Weapon Demonstration
+03EC2C17 18000000
+004161EF 00000003
+$Unlock Cassandra Profile
+03EC2C18 18000000
+004161F0 00000003
+$Unlock Cassandra Weapon Demonstration
+03EC2C19 18000000
+004161F1 00000003
+$Unlock Cassandra's New Costume
+03EC2C1A 18000000
+004161F2 00000003
+$Unlock Mitsurugi Profile
+03EC2C1B 18000000
+004161F3 00000003
+$Unlock Mitsurugi Weapon Demonstration
+03EC2C1C 18000000
+004161F4 00000003
+$Unlock Mitsurugi's New Costume
+03EC2C1D 18000000
+004161F5 00000003
+$Unlock Taki Profile
+03EC2C1E 18000000
+004161F6 00000003
+$Unlock Taki Weapon Demonstration
+03EC2C1F 18000000
+004161F7 00000003
+$Unlock Taki's New Costume
+03EC2C20 18000000
+004161F8 00000003
+$Unlock Voldo Profile
+03EC2C21 18000000
+004161F9 00000003
+$Unlock Voldo Weapon Demonstration
+03EC2C22 18000000
+004161FA 00000003
+$Unlock Voldo's New Costume
+03EC2C23 18000000
+004161FB 00000003
+$Unlock Nightmare Profile
+03EC2C24 18000000
+004161FC 00000003
+$Unlock Nightmare Weapon Demonstration
+03EC2C25 18000000
+004161FD 00000003
+$Unlock Nightmare New Costume
+03EC2C26 18000000
+004161FE 00000003
+$Unlock Astaroth Profile
+03EC2C27 18000000
+004161FF 00000003
+$Unlock Astaroth Weapon Demonstration
+03EC2C28 18000000
+00416200 00000003
+$Unlock Astaroth's New Costume
+03EC2C29 18000000
+00416201 00000003
+$Unlock Ivy Profile
+03EC2C2A 18000000
+00416202 00000003
+$Unlock Ivy Weapon Demonstration
+03EC2C2B 18000000
+00416203 00000003
+$Unlock Ivy's New Costume
+03EC2C2C 18000000
+00416204 00000003
+$Unlock Kilik Profile
+03EC2C2D 18000000
+00416205 00000003
+$Unlock Kilik Weapon Demonstration
+03EC2C2E 18000000
+00416206 00000003
+$Unlock Xianghau Profile
+03EC2C2F 18000000
+00416207 00000003
+$Unlock Xianghau Weapon Demonstration
+03EC2C30 18000000
+00416208 00000003
+$Unlock Xianghau's New Costume
+03EC2C31 18000000
+00416209 00000003
+$Unlock Maxi Profile
+03EC2C32 18000000
+0041620A 00000003
+$Unlock Taki Weapon Demonstration
+03EC2C33 18000000
+0041620B 00000003
+$Unlock Necrid Profile
+03EC2C34 18000000
+0041620C 00000003
+$Unlock Necrid Weapon Demonstration
+03EC2C35 18000000
+0041620D 00000003
+$Unlock Link Profile
+03EC2C36 18000000
+0041620E 00000003
+$Unlock Link Weapon Demonstration
+03EC2C37 18000000
+0041620F 00000003
+$Unlock Link's New Costume
+03EC2C38 18000000
+00416210 00000003
+$Unlock Link's New Costume 2
+03EC2C39 18000000
+00416211 00000003
+$Unlock Sophitia Profile
+03EC2C3A 18000000
+00416212 00000003
+$Unlock Sophitia Weapon Demonstration
+03EC2C3B 18000000
+00416213 00000003
+$Unlock Sophitia New Costume
+03EC2C3C 18000000
+00416214 00000003
+$Unlock Seung Mina Profile
+03EC2C3D 18000000
+00416215 00000003
+$Unlock Seung Mina Weapon Demonstration
+03EC2C3E 18000000
+00416216 00000003
+$Unlock Seung Mina New Costume
+03EC2C3F 18000000
+00416217 00000003
+$Unlock Yoshimitsu Profile
+03EC2C40 18000000
+00416218 00000003
+$Unlock Yoshimitsu Weapon Demonstration
+03EC2C41 18000000
+00416219 00000003
+$Unlock Charade Profile
+03EC2C42 18000000
+0041621A 00000003
+$Unlock Charade Weapon Demonstration
+03EC2C43 18000000
+0041621B 00000003
+$Unlock Cervante Profile
+03EC2C44 18000000
+0041621C 00000003
+$Unlock Cervante Weapon Demonstration
+03EC2C45 18000000
+0041621D 00000003
+$Unlock Extra Arcade Mode
+03EC2C46 18000000
+0041621E 00000003
+$Unlock Extra Vs Battle Mode
+03EC2C47 18000000
+0041621F 00000003
+$Unlock Extra Time Attack (Standard) Mode
+03EC2C48 18000000
+00416220 00000003
+$Unlock Extra Time Attack (Alternative) Mode
+03EC2C49 18000000
+00416221 00000003
+$Unlock Extra Time Attack (Extreme) Mode
+03EC2C4A 18000000
+00416222 00000003
+$Unlock Extra Survival (Standard) Mode
+03EC2C4B 18000000
+00416223 00000003
+$Unlock Extra Survival (Death Match) Mode
+03EC2C4C 18000000
+00416224 00000003
+$Unlock Extra Survival (No Recovery) Mode
+03EC2C4D 18000000
+00416225 00000003
+$Unlock Extra Team Battle Mode
+03EC2C4E 18000000
+00416226 00000003
+$Unlock Extra VS Team Battle Mode
+03EC2C4F 18000000
+00416227 00000003
+$Unlock Extra Practice Mode
+03EC2C50 18000000
+00416228 00000003
+$Unlock Art Gallery (Hi-Res)
+03EC2C51 18000000
+00416229 00000003
+$Unlock Art Gallery (Illustrations)
+03EC2C52 18000000
+0041622A 00000003
+$Unlock Art Gallery (Special)
+03EC2C53 18000000
+0041622B 00000003
+$Unlock Battle Theatre
+03EC2C54 18000000
+0041622C 00000003
+$Unlock Weapon Gallery
+03EC2C55 18000000
+0041622D 00000003
+$Unlock Weapons Master Opening
+03EC2C56 18000000
+0041622E 00000003
+$Unlock Weapons Master Ending
+03EC2C57 18000000
+0041622F 00000003
+$Unlock Opening (Home Ver.)
+03EC2C58 18000000
+00416230 00000003
+$Unlock Opening (Arcade Ver.)
+03EC2C59 18000000
+00416231 00000003
+$Unlock Ending (Arcade Ver.)
+03EC2C5A 18000000
+00416232 00000003
+$Unlock Hwangseo Palace/Phoenix Court
+03EC2C5B 18000000
+00416233 00000003
+$Unlock Lakeside Coliseum
+03EC2C5C 18000000
+00416234 00000003
+$Unlock Money Pit/Top Tier
+03EC2C5D 18000000
+00416235 00000003
+$Unlock Egyptian Crypt
+03EC2C5E 18000000
+00416236 00000003
+$Unlock Labyrinth
+03EC2C5F 18000000
+00416237 00000003
+$Unlock Epee (Raphael)
+03EC2C60 18000000
+00416238 00000003
+$Unlock Stiletto (Raphael)
+03EC2C61 18000000
+00416239 00000003
+$Unlock Reiterpallasch (Raphael)
+03EC2C62 18000000
+0041623A 00000003
+$Unlock Wo Dao (Raphael)
+03EC2C63 18000000
+0041623B 00000003
+$Unlock Schweizer (Raphael)
+03EC2C64 18000000
+0041623C 00000003
+$Unlock Holy Antler (Raphael)
+03EC2C65 18000000
+0041623D 00000003
+$Unlock Estoc (Raphael)
+03EC2C66 18000000
+0041623E 00000003
+$Unlock Soul Edge (Complete)
+03EC2C67 18000000
+0041623F 00000003
+$Unlock Queen's Guard (Raphael)
+03EC2C68 18000000
+00416240 00000003
+$Unlock Cane (Raphael)
+03EC2C69 18000000
+00416241 00000003
+$Unlock Wind Guide (Talim)
+03EC2C6A 18000000
+00416242 00000003
+$Unlock Tonfa (Talim)
+03EC2C6B 18000000
+00416243 00000003
+$Unlock Side Harpe (Talim)
+03EC2C6C 18000000
+00416244 00000003
+$Unlock Double Crescent Blade (Talim)
+03EC2C6D 18000000
+00416245 00000003
+$Unlock Chaqu (Talim)
+03EC2C6E 18000000
+00416246 00000003
+$Unlock Cao Ankana (Talim)
+03EC2C6F 18000000
+00416247 00000003
+$Unlock Maila Kari (Talim)
+03EC2C70 18000000
+00416248 00000003
+$Unlock Soul Edge (Complete)
+03EC2C71 18000000
+00416249 00000003
+$Unlock Soul Calibur (Talim)
+03EC2C72 18000000
+0041624A 00000003
+$Unlock Weight (Talim)
+03EC2C73 18000000
+0041624B 00000003
+$Unlock Machete (Yunsung)
+03EC2C74 18000000
+0041624C 00000003
+$Unlock Khanjar (Yunsung)
+03EC2C75 18000000
+0041624D 00000003
+$Unlock Xiao Lian (Yunsung)
+03EC2C76 18000000
+0041624E 00000003
+$Unlock Giant Butcher Knife (Yunsung)
+03EC2C77 18000000
+0041624F 00000003
+$Unlock Cheng Ying (Yunsung)
+03EC2C78 18000000
+00416250 00000003
+$Unlock Ramdao (Yunsung)
+03EC2C79 18000000
+00416251 00000003
+$Unlock Blue Thunder (Yunsung)
+03EC2C7A 18000000
+00416252 00000003
+$Unlock Soul Edge (Complete) (Yunsung)
+03EC2C7B 18000000
+00416253 00000003
+$Unlock Han Guang (Yunsung)
+03EC2C7C 18000000
+00416254 00000003
+$Unlock Child's Sword (Yunsung)
+03EC2C7D 18000000
+00416255 00000003
+$Unlock Spiked Shield (Cassandra)
+03EC2C7E 18000000
+00416256 00000003
+$Unlock Dark Blade (Cassandra)
+03EC2C7F 18000000
+00416257 00000003
+$Unlock Metesashi (Cassandra)
+03EC2C80 18000000
+00416258 00000003
+$Unlock Spine Blade (Cassandra)
+03EC2C81 18000000
+00416259 00000003
+$Unlock Katzbalger (Cassandra)
+03EC2C82 18000000
+0041625A 00000003
+$Unlock Red Crystal Rod (Cassandra)
+03EC2C83 18000000
+0041625B 00000003
+$Unlock Ivan The Terrible (Cassandra)
+03EC2C84 18000000
+0041625C 00000003
+$Unlock Soul Edge (Complete) (Cassandra)
+03EC2C85 18000000
+0041625D 00000003
+$Unlock Valkyrie (Cassandra)
+03EC2C86 18000000
+0041625E 00000003
+$Unlock Keepsake (Cassandra)
+03EC2C87 18000000
+0041625F 00000003
+$Unlock Korefuji (Mitsurugi)
+03EC2C88 18000000
+00416260 00000003
+$Unlock Two-Handed Sword (Mitsurugi)
+03EC2C89 18000000
+00416261 00000003
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+UseXFB = True
+UseRealXFB = False
+SafeTextureCacheColorSamples = 512
+
diff --git a/Data/User/GameConfig/GRYE41.ini b/Data/User/GameConfig/GRYE41.ini
new file mode 100644
index 0000000000..02d48539b1
--- /dev/null
+++ b/Data/User/GameConfig/GRYE41.ini
@@ -0,0 +1,18 @@
+# GRYE41 - RAYMAN ARENA
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Needs Real Xfb for videos to display.
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+UseXFB = True
+UseRealXFB = True
diff --git a/Data/User/GameConfig/GT3D52.ini b/Data/User/GameConfig/GT3D52.ini
index f50771d9b3..6376dff37e 100644
--- a/Data/User/GameConfig/GT3D52.ini
+++ b/Data/User/GameConfig/GT3D52.ini
@@ -2,7 +2,7 @@
[Core] Values set here will override the main dolphin settings.
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = Neads real xfb for videos to display.
+EmulationIssues = Needs real xfb for videos to display.
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/GT3E52.ini b/Data/User/GameConfig/GT3E52.ini
index dbfe35663e..ed7e72cbc0 100644
--- a/Data/User/GameConfig/GT3E52.ini
+++ b/Data/User/GameConfig/GT3E52.ini
@@ -2,7 +2,7 @@
[Core] Values set here will override the main dolphin settings.
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = Neads real xfb for videos to display.
+EmulationIssues = Needs real xfb for videos to display.
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/GT3F52.ini b/Data/User/GameConfig/GT3F52.ini
index 24d932371a..61649a10c9 100644
--- a/Data/User/GameConfig/GT3F52.ini
+++ b/Data/User/GameConfig/GT3F52.ini
@@ -2,7 +2,7 @@
[Core] Values set here will override the main dolphin settings.
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = Neads real xfb for videos to display.
+EmulationIssues = Needs real xfb for videos to display.
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/GT3P52.ini b/Data/User/GameConfig/GT3P52.ini
index aa644f6659..e96eb96699 100644
--- a/Data/User/GameConfig/GT3P52.ini
+++ b/Data/User/GameConfig/GT3P52.ini
@@ -2,7 +2,7 @@
[Core] Values set here will override the main dolphin settings.
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = Neads real xfb for videos to display.
+EmulationIssues = Needs real xfb for videos to display.
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/GT7E41.ini b/Data/User/GameConfig/GT7E41.ini
index 99426db64a..5c1651e27c 100644
--- a/Data/User/GameConfig/GT7E41.ini
+++ b/Data/User/GameConfig/GT7E41.ini
@@ -1,22 +1,20 @@
-# GT7E41 - TOM CLANCY'S SPLINTER CELL PANDORA TOMORROW
-[Core] Values set here will override the main dolphin settings.
-TLBHack = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 3
-EmulationIssues = Goes ingame using Jitil, videos need real XFB to show up and loading screens show garbage(r6898)
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-UseXFB = True
-UseRealXFB = True
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-
+# GT7E41 - TOM CLANCY'S SPLINTER CELL PANDORA TOMORROW
+[Core] Values set here will override the main dolphin settings.
+TLBHack = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 3
+EmulationIssues = Videos need real XFB to show up and loading screens show garbage.
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+UseXFB = True
+UseRealXFB = True
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/GT7P41.ini b/Data/User/GameConfig/GT7P41.ini
index 13cb3250bc..22caca43a4 100644
--- a/Data/User/GameConfig/GT7P41.ini
+++ b/Data/User/GameConfig/GT7P41.ini
@@ -1,20 +1,20 @@
-# GT7P41 - TOM CLANCY'S SPLINTER CELL PANDORA TOMORROW
-[Core] Values set here will override the main dolphin settings.
-TLBHack = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 3
-EmulationIssues = Goes ingame using Jitil, videos need real XFB to show up and loading screens show garbage(r6898)
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-UseXFB = True
-UseRealXFB = True
-SafeTextureCache = True
+# GT7P41 - TOM CLANCY'S SPLINTER CELL PANDORA TOMORROW
+[Core] Values set here will override the main dolphin settings.
+TLBHack = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 3
+EmulationIssues = Videos need real XFB to show up and loading screens show garbage.
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+UseXFB = True
+UseRealXFB = True
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/GT7X41.ini b/Data/User/GameConfig/GT7X41.ini
index e8144424d3..43ab6280d6 100644
--- a/Data/User/GameConfig/GT7X41.ini
+++ b/Data/User/GameConfig/GT7X41.ini
@@ -1,20 +1,20 @@
-# GT7X41 - TOM CLANCY'S SPLINTER CELL PANDORA TOMORROW
-[Core] Values set here will override the main dolphin settings.
-TLBHack = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 3
-EmulationIssues = Goes ingame using Jitil, videos need real XFB to show up and loading screens show garbage(r6898)
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-UseXFB = True
-UseRealXFB = True
-SafeTextureCache = True
+# GT7X41 - TOM CLANCY'S SPLINTER CELL PANDORA TOMORROW
+[Core] Values set here will override the main dolphin settings.
+TLBHack = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 3
+EmulationIssues = Videos need real XFB to show up and loading screens show garbage.
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+UseXFB = True
+UseRealXFB = True
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/GTKE51.ini b/Data/User/GameConfig/GTKE51.ini
index 3b098605c1..b95faa9a4e 100644
--- a/Data/User/GameConfig/GTKE51.ini
+++ b/Data/User/GameConfig/GTKE51.ini
@@ -1,20 +1,19 @@
-# GTKE51 - Turok: Evolution
-[Core] Values set here will override the main dolphin settings.
-MMU = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Video_Hacks]
+# GTKE51 - Turok: Evolution
+[Core] Values set here will override the main dolphin settings.
+MMU = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video_Hacks]
diff --git a/Data/User/GameConfig/GTKP51.ini b/Data/User/GameConfig/GTKP51.ini
index a3bf07df79..fd0990115d 100644
--- a/Data/User/GameConfig/GTKP51.ini
+++ b/Data/User/GameConfig/GTKP51.ini
@@ -1,20 +1,19 @@
-# GTKP51 - Turok: Evolution
-[Core] Values set here will override the main dolphin settings.
-MMU = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Video_Hacks]
+# GTKP51 - Turok: Evolution
+[Core] Values set here will override the main dolphin settings.
+MMU = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video_Hacks]
diff --git a/Data/User/GameConfig/GUBE69.ini b/Data/User/GameConfig/GUBE69.ini
index a7fb26674a..c7ec4b728b 100644
--- a/Data/User/GameConfig/GUBE69.ini
+++ b/Data/User/GameConfig/GUBE69.ini
@@ -1,19 +1,18 @@
-# GUBE69 - The Urbz GameCube
-[Core] Values set here will override the main dolphin settings.
-TLBHack = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = LLE audio is needed to fix some sound issues.
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
+# GUBE69 - The Urbz GameCube
+[Core] Values set here will override the main dolphin settings.
+TLBHack = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = LLE audio is needed to fix some sound issues.
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/GUBP69.ini b/Data/User/GameConfig/GUBP69.ini
index 1ac1ed9c1d..3903b90352 100644
--- a/Data/User/GameConfig/GUBP69.ini
+++ b/Data/User/GameConfig/GUBP69.ini
@@ -1,19 +1,18 @@
-# GUBP69 - The Urbz GameCube
-[Core] Values set here will override the main dolphin settings.
-TLBHack = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = LLE audio is needed to fix some sound issues.
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
+# GUBP69 - The Urbz GameCube
+[Core] Values set here will override the main dolphin settings.
+TLBHack = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = LLE audio is needed to fix some sound issues.
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/GVKE52.ini b/Data/User/GameConfig/GVKE52.ini
index c7269fd372..379960a872 100644
--- a/Data/User/GameConfig/GVKE52.ini
+++ b/Data/User/GameConfig/GVKE52.ini
@@ -3,10 +3,14 @@
TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues = Needs Jitil to run(r6871)
+EmulationIssues =
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
[Gecko]
-
diff --git a/Data/User/GameConfig/GWYE41.ini b/Data/User/GameConfig/GWYE41.ini
index 9aa12b7bd6..3c3154acba 100644
--- a/Data/User/GameConfig/GWYE41.ini
+++ b/Data/User/GameConfig/GWYE41.ini
@@ -1,20 +1,20 @@
-# GWYE41 - Tom Clancy's Splinter Cell Double Agent
-[Core] Values set here will override the main dolphin settings.
-TLBHack = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 3
-EmulationIssues = Requires MMUSH and ATC. Videos require real XFB.
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-UseXFB = True
-UseRealXFB = True
-SafeTextureCache = True
+# GWYE41 - Tom Clancy's Splinter Cell Double Agent
+[Core] Values set here will override the main dolphin settings.
+TLBHack = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 3
+EmulationIssues = Requires MMUSH and ATC. Videos require real XFB.
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+UseXFB = True
+UseRealXFB = True
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/GXFE69.ini b/Data/User/GameConfig/GXFE69.ini
index 8a70142f4a..d74632b761 100644
--- a/Data/User/GameConfig/GXFE69.ini
+++ b/Data/User/GameConfig/GXFE69.ini
@@ -1,9 +1,9 @@
# GXFE69 - FIFA Soccer 2004
[Core] Values set here will override the main dolphin settings.
-MMU = 1
+TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 3
-EmulationIssues = Sound issues need LLE plugin and videos are messed up. Slow due to MMU.Use Opengl backend for less graphic glitches.
+EmulationIssues = Sound issues need LLE plugin and videos are messed up. Unstable (crashes ingame).
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/GXFF69.ini b/Data/User/GameConfig/GXFF69.ini
index 22a7852666..10a4862537 100644
--- a/Data/User/GameConfig/GXFF69.ini
+++ b/Data/User/GameConfig/GXFF69.ini
@@ -1,9 +1,9 @@
# GXFF69 - FIFA Soccer 2004
[Core] Values set here will override the main dolphin settings.
-MMU = 1
+TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 3
-EmulationIssues = Sound issues need LLE plugin and videos are messed up. Slow due to MMU.Use Opengl backend for less graphic glitches.
+EmulationIssues = Sound issues need LLE plugin and videos are messed up. Unstable (crashes ingame).
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/GXFP69.ini b/Data/User/GameConfig/GXFP69.ini
index b6c9d1a977..ea3f4ead57 100644
--- a/Data/User/GameConfig/GXFP69.ini
+++ b/Data/User/GameConfig/GXFP69.ini
@@ -1,9 +1,9 @@
# GXFP69 - FIFA Soccer 2004
[Core] Values set here will override the main dolphin settings.
-MMU = 1
+TLBHack = 1
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 3
-EmulationIssues = Sound issues need LLE plugin and videos are messed up. Slow due to MMU.Use Opengl backend for less graphic glitches.
+EmulationIssues = Sound issues need LLE plugin and videos are messed up. Unstable (crashes ingame).
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/GXNE5D.ini b/Data/User/GameConfig/GXNE5D.ini
index a23df80156..ba576d98af 100644
--- a/Data/User/GameConfig/GXNE5D.ini
+++ b/Data/User/GameConfig/GXNE5D.ini
@@ -1,15 +1,14 @@
-# GXNE5D - Rampage: Total Destruction
-[Core] Values set here will override the main dolphin settings.
-TLBHack = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-
+# GXNE5D - Rampage: Total Destruction
+[Core] Values set here will override the main dolphin settings.
+TLBHack = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+
diff --git a/Data/User/GameConfig/GXXE01.ini b/Data/User/GameConfig/GXXE01.ini
index a66e71accf..ad0e45abdf 100644
--- a/Data/User/GameConfig/GXXE01.ini
+++ b/Data/User/GameConfig/GXXE01.ini
@@ -1,21 +1,19 @@
-# GXXE01 - POKeMON XD
-[Core] Values set here will override the main dolphin settings.
-CPUThread = 0
-BlockMerging = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = HLE music fades in and out. If EFB scale is not integral, 1x, 2x or 3x serious texture glitches occur
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-EFBScale = 1
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 0
+# GXXE01 - POKeMON XD
+[Core] Values set here will override the main dolphin settings.
+BlockMerging = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = HLE music fades in and out. If EFB scale is not integral, 1x, 2x or 3x serious texture glitches occur
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+EFBScale = 1
+SafeTextureCacheColorSamples = 0
diff --git a/Data/User/GameConfig/GXXP01.ini b/Data/User/GameConfig/GXXP01.ini
index 9d2a0435d5..16c64c1fa6 100644
--- a/Data/User/GameConfig/GXXP01.ini
+++ b/Data/User/GameConfig/GXXP01.ini
@@ -1,22 +1,19 @@
-# GXXP01 - POKeMON XD
-[Core] Values set here will override the main dolphin settings.
-CPUThread = 0
-BlockMerging = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = HLE music fades in and out. If EFB scale is not integral, 1x, 2x or 3x serious texture glitches occur
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-EFBScale = 1
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 0
-
+# GXXP01 - POKeMON XD
+[Core] Values set here will override the main dolphin settings.
+BlockMerging = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = HLE music fades in and out. If EFB scale is not integral, 1x, 2x or 3x serious texture glitches occur
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+EFBScale = 1
+SafeTextureCacheColorSamples = 0
diff --git a/Data/User/GameConfig/GYWD41.ini b/Data/User/GameConfig/GYWD41.ini
index 2056d831a7..97437f947d 100644
--- a/Data/User/GameConfig/GYWD41.ini
+++ b/Data/User/GameConfig/GYWD41.ini
@@ -1,8 +1,8 @@
# GYWD41 - Harvest Moon: A Wonderful Life
[Core] Values set here will override the main dolphin settings.
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 3
-EmulationIssues = Text is broken ingame. Fixed in tex-preload dolphin branch.
+EmulationStateId = 4
+EmulationIssues =
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/GYWEE9.ini b/Data/User/GameConfig/GYWEE9.ini
index 906558b987..c42f850e64 100644
--- a/Data/User/GameConfig/GYWEE9.ini
+++ b/Data/User/GameConfig/GYWEE9.ini
@@ -1,8 +1,8 @@
# GYWEE9 - Harvest Moon: A Wonderful Life
[Core] Values set here will override the main dolphin settings.
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 3
-EmulationIssues = Text is broken ingame. Fixed in tex-preload dolphin branch.
+EmulationStateId = 4
+EmulationIssues =
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/GYWP41.ini b/Data/User/GameConfig/GYWP41.ini
index 35634452c2..49a4ba2f05 100644
--- a/Data/User/GameConfig/GYWP41.ini
+++ b/Data/User/GameConfig/GYWP41.ini
@@ -1,8 +1,8 @@
# GYWP41 - Harvest Moon: A Wonderful Life
[Core] Values set here will override the main dolphin settings.
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 3
-EmulationIssues = Text is broken ingame. Fixed in tex-preload dolphin branch.
+EmulationStateId = 4
+EmulationIssues =
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/GZEE70.ini b/Data/User/GameConfig/GZEE70.ini
index 837b4c2f29..270e6220c5 100644
--- a/Data/User/GameConfig/GZEE70.ini
+++ b/Data/User/GameConfig/GZEE70.ini
@@ -1,20 +1,19 @@
-# GZEE70 - Dragon Ball Z Sagas
-[Core] Values set here will override the main dolphin settings.
-TLBHack = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-Issues="Playable,but sometimes slowdown FPS maybe is patched"
-EmulationIssues =
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
+# GZEE70 - Dragon Ball Z Sagas
+[Core] Values set here will override the main dolphin settings.
+TLBHack = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+Issues="Playable,but sometimes slowdown FPS maybe is patched"
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
diff --git a/Data/User/GameConfig/GZWE01.ini b/Data/User/GameConfig/GZWE01.ini
index ad6eda6c35..5f6416f088 100644
--- a/Data/User/GameConfig/GZWE01.ini
+++ b/Data/User/GameConfig/GZWE01.ini
@@ -1,20 +1,19 @@
-# GZWE01 - WarioWare, Inc. Mega Party Games
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 3
-EmulationIssues = Need Save texture cache,graphic glitches
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Video_Enhancements]
-[Video_Hacks]
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
+# GZWE01 - WarioWare, Inc. Mega Party Games
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 3
+EmulationIssues = Need Save texture cache,graphic glitches
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video_Enhancements]
+[Video_Hacks]
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
diff --git a/Data/User/GameConfig/GZWP01.ini b/Data/User/GameConfig/GZWP01.ini
index a9cb7448be..fb12e91396 100644
--- a/Data/User/GameConfig/GZWP01.ini
+++ b/Data/User/GameConfig/GZWP01.ini
@@ -1,20 +1,19 @@
-# GZWP01 - WarioWare, Inc. Mega Party Games
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 3
-EmulationIssues = Need Save texture cache,graphic glitches
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Video_Enhancements]
-[Video_Hacks]
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
+# GZWP01 - WarioWare, Inc. Mega Party Games
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 3
+EmulationIssues = Need Save texture cache,graphic glitches
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video_Enhancements]
+[Video_Hacks]
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
[Gecko]
\ No newline at end of file
diff --git a/Data/User/GameConfig/HACA01.ini b/Data/User/GameConfig/HACA01.ini
index d3a9f197b8..baf23b9b89 100644
--- a/Data/User/GameConfig/HACA01.ini
+++ b/Data/User/GameConfig/HACA01.ini
@@ -1,11 +1,11 @@
-# HACA01 - Mii Channel
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 5
-EmulationIssues =
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-[Video_Settings]
-SafeTextureCache = True
+# HACA01 - Mii Channel
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 5
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/R22E01.ini b/Data/User/GameConfig/R22E01.ini
index 8d992eb454..dfe3542671 100644
--- a/Data/User/GameConfig/R22E01.ini
+++ b/Data/User/GameConfig/R22E01.ini
@@ -1,22 +1,21 @@
-# R22E01 - FlingSmash
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Video_Hacks]
-EFBEmulateFormatChanges = True
-[Wii]
-DisableWiimoteSpeaker = 1
+# R22E01 - FlingSmash
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Needs real wiimote and motion plus.
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video_Hacks]
+EFBEmulateFormatChanges = True
+[Wii]
+DisableWiimoteSpeaker = 1
diff --git a/Data/User/GameConfig/R22J01.ini b/Data/User/GameConfig/R22J01.ini
index cdf18e0b81..c38ff20966 100644
--- a/Data/User/GameConfig/R22J01.ini
+++ b/Data/User/GameConfig/R22J01.ini
@@ -1,22 +1,21 @@
-# R22J01 - Tataite Hazumu: Super Smash Ball Plus
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Video_Hacks]
-EFBEmulateFormatChanges = True
-[Wii]
-DisableWiimoteSpeaker = 1
+# R22J01 - Tataite Hazumu: Super Smash Ball Plus
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Needs real wiimote and motion plus.
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video_Hacks]
+EFBEmulateFormatChanges = True
+[Wii]
+DisableWiimoteSpeaker = 1
diff --git a/Data/User/GameConfig/R22P01.ini b/Data/User/GameConfig/R22P01.ini
index 1a04cc43e1..6153cb0d06 100644
--- a/Data/User/GameConfig/R22P01.ini
+++ b/Data/User/GameConfig/R22P01.ini
@@ -1,22 +1,21 @@
-# R22P01 - FlingSmash
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Video_Hacks]
-EFBEmulateFormatChanges = True
-[Wii]
-DisableWiimoteSpeaker = 1
+# R22P01 - FlingSmash
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Needs real wiimote and motion plus.
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video_Hacks]
+EFBEmulateFormatChanges = True
+[Wii]
+DisableWiimoteSpeaker = 1
diff --git a/Data/User/GameConfig/R2GEXJ.ini b/Data/User/GameConfig/R2GEXJ.ini
index fc36105bbe..e23427e158 100644
--- a/Data/User/GameConfig/R2GEXJ.ini
+++ b/Data/User/GameConfig/R2GEXJ.ini
@@ -1,7 +1,7 @@
# R2GEXJ - FRAGILE DREAMS
[Core] Values set here will override the main dolphin settings.
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues = Enable progressive scan (r6436)
+EmulationIssues =
EmulationStateId = 4
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
diff --git a/Data/User/GameConfig/R2GJAF.ini b/Data/User/GameConfig/R2GJAF.ini
index d4da60084e..d93e14ce7a 100644
--- a/Data/User/GameConfig/R2GJAF.ini
+++ b/Data/User/GameConfig/R2GJAF.ini
@@ -1,7 +1,7 @@
# R2GJAF - FRAGILE
[Core] Values set here will override the main dolphin settings.
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues = Enable progressive scan (r6436)
+EmulationIssues =
EmulationStateId = 4
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
diff --git a/Data/User/GameConfig/R2GP99.ini b/Data/User/GameConfig/R2GP99.ini
index 330f1dd8aa..6f2140a5c2 100644
--- a/Data/User/GameConfig/R2GP99.ini
+++ b/Data/User/GameConfig/R2GP99.ini
@@ -1,7 +1,7 @@
# R2GP99 - FRAGILE DREAMS
[Core] Values set here will override the main dolphin settings.
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues = Enable progressive scan (r6436)
+EmulationIssues =
EmulationStateId = 4
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
diff --git a/Data/User/GameConfig/R3NEXS.ini b/Data/User/GameConfig/R3NEXS.ini
index a4cd53830f..2741dd6fdb 100644
--- a/Data/User/GameConfig/R3NEXS.ini
+++ b/Data/User/GameConfig/R3NEXS.ini
@@ -1,14 +1,13 @@
-# R3NEXS - Guilty Gear XX AC Plus
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-
+# R3NEXS - Guilty Gear XX AC Plus
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+
diff --git a/Data/User/GameConfig/R3NPH3.ini b/Data/User/GameConfig/R3NPH3.ini
index 3c02b59f1f..f2b267311e 100644
--- a/Data/User/GameConfig/R3NPH3.ini
+++ b/Data/User/GameConfig/R3NPH3.ini
@@ -1,14 +1,13 @@
-# R3NPH3 - Guilty Gear XX AC Plus
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-
+# R3NPH3 - Guilty Gear XX AC Plus
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+
diff --git a/Data/User/GameConfig/R3OE01.ini b/Data/User/GameConfig/R3OE01.ini
index db3ea992dd..c6261c3fe1 100644
--- a/Data/User/GameConfig/R3OE01.ini
+++ b/Data/User/GameConfig/R3OE01.ini
@@ -1,20 +1,19 @@
-# R3OE01 - Metroid: Other M
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues =
-EmulationStateId = 4
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 1
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 1
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Video_Enhancements]
-[Wii]
+# R3OE01 - Metroid: Other M
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationIssues =
+EmulationStateId = 4
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 1
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 1
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video_Enhancements]
+[Wii]
diff --git a/Data/User/GameConfig/R3OJ01.ini b/Data/User/GameConfig/R3OJ01.ini
index 2616b66fda..80de07feaf 100644
--- a/Data/User/GameConfig/R3OJ01.ini
+++ b/Data/User/GameConfig/R3OJ01.ini
@@ -1,17 +1,17 @@
-# R3OJ01 - Metroid: Other M
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues =
-EmulationStateId = 4
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 1
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 1
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
+# R3OJ01 - Metroid: Other M
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationIssues =
+EmulationStateId = 4
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 1
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 1
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/R3OP01.ini b/Data/User/GameConfig/R3OP01.ini
index 11284c5749..8095acc581 100644
--- a/Data/User/GameConfig/R3OP01.ini
+++ b/Data/User/GameConfig/R3OP01.ini
@@ -1,17 +1,17 @@
-# R3OP01 - Metroid: Other M
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues =
-EmulationStateId = 4
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 1
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 1
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
+# R3OP01 - Metroid: Other M
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationIssues =
+EmulationStateId = 4
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 1
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 1
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/R5DE5G.ini b/Data/User/GameConfig/R5DE5G.ini
index 0eaa856ab0..4d99e04a3c 100644
--- a/Data/User/GameConfig/R5DE5G.ini
+++ b/Data/User/GameConfig/R5DE5G.ini
@@ -3,7 +3,7 @@
SkipIdle = 0
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
-EmulationIssues =
+EmulationIssues = Idle skipping causes speed issues.
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
@@ -15,7 +15,5 @@ PH_ZNear =
PH_ZFar =
[Gecko]
[Video_Settings]
-UseXFB = True
-UseRealXFB = True
[Video_Hacks]
DlistCachingEnable = False
diff --git a/Data/User/GameConfig/R5IE4Q.ini b/Data/User/GameConfig/R5IE4Q.ini
index 3d7a37d075..65d857573d 100644
--- a/Data/User/GameConfig/R5IE4Q.ini
+++ b/Data/User/GameConfig/R5IE4Q.ini
@@ -1,19 +1,19 @@
-# R5IE4Q - Toy Story Mania!
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues =
-EmulationStateId = 0
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-[Video_Enhancements]
-ForceFiltering = False
+# R5IE4Q - Toy Story Mania!
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationIssues =
+EmulationStateId = 0
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video_Enhancements]
+ForceFiltering = False
diff --git a/Data/User/GameConfig/R5IP4Q.ini b/Data/User/GameConfig/R5IP4Q.ini
index a891668910..0fb2502410 100644
--- a/Data/User/GameConfig/R5IP4Q.ini
+++ b/Data/User/GameConfig/R5IP4Q.ini
@@ -1,19 +1,19 @@
-# R5IP4Q - Toy Story Mania!
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues =
-EmulationStateId = 0
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-[Video_Enhancements]
-ForceFiltering = False
+# R5IP4Q - Toy Story Mania!
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationIssues =
+EmulationStateId = 0
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video_Enhancements]
+ForceFiltering = False
diff --git a/Data/User/GameConfig/R5IX4Q.ini b/Data/User/GameConfig/R5IX4Q.ini
index a4ea4ef22d..9a2de79663 100644
--- a/Data/User/GameConfig/R5IX4Q.ini
+++ b/Data/User/GameConfig/R5IX4Q.ini
@@ -1,19 +1,19 @@
-# R5IX4Q - Toy Story Mania!
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues =
-EmulationStateId = 0
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-[Video_Enhancements]
-ForceFiltering = False
+# R5IX4Q - Toy Story Mania!
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationIssues =
+EmulationStateId = 0
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video_Enhancements]
+ForceFiltering = False
diff --git a/Data/User/GameConfig/R5WEA4.ini b/Data/User/GameConfig/R5WEA4.ini
index 7a63e0c040..315f7f340a 100644
--- a/Data/User/GameConfig/R5WEA4.ini
+++ b/Data/User/GameConfig/R5WEA4.ini
@@ -1,20 +1,19 @@
-# R5WEA4 - Silent Hill: Shattered Memories
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = Flashlight glitches (r6521)
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Wii]
-DisableWiimoteSpeaker = 1
+# R5WEA4 - Silent Hill: Shattered Memories
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Flashlight glitches (r6521)
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Wii]
+DisableWiimoteSpeaker = 1
diff --git a/Data/User/GameConfig/R5WJA4.ini b/Data/User/GameConfig/R5WJA4.ini
index beb946ea56..30a983b648 100644
--- a/Data/User/GameConfig/R5WJA4.ini
+++ b/Data/User/GameConfig/R5WJA4.ini
@@ -1,20 +1,19 @@
-# R5WJA4 - Silent Hill: Shattered Memories
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = Flashlight glitches (r6521)
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Wii]
-DisableWiimoteSpeaker = 1
+# R5WJA4 - Silent Hill: Shattered Memories
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Flashlight glitches (r6521)
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Wii]
+DisableWiimoteSpeaker = 1
diff --git a/Data/User/GameConfig/R6YEXS.ini b/Data/User/GameConfig/R6YEXS.ini
index 8624fff2d8..496d3bd058 100644
--- a/Data/User/GameConfig/R6YEXS.ini
+++ b/Data/User/GameConfig/R6YEXS.ini
@@ -1,12 +1,12 @@
-# R6YEXS - Squeeballs Party
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues =
-EmulationStateId = 0
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
+# R6YEXS - Squeeballs Party
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationIssues =
+EmulationStateId = 0
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/R6YPH3.ini b/Data/User/GameConfig/R6YPH3.ini
index cc17213f48..70e7e7c00f 100644
--- a/Data/User/GameConfig/R6YPH3.ini
+++ b/Data/User/GameConfig/R6YPH3.ini
@@ -1,12 +1,12 @@
-# R6YPH3 - Squeeballs Party
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues =
-EmulationStateId = 0
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
+# R6YPH3 - Squeeballs Party
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationIssues =
+EmulationStateId = 0
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/R7EE8P.ini b/Data/User/GameConfig/R7EE8P.ini
index debcf62f86..dcb93d30a3 100644
--- a/Data/User/GameConfig/R7EE8P.ini
+++ b/Data/User/GameConfig/R7EE8P.ini
@@ -1,19 +1,18 @@
-# R7EE8P - NiGHTS: Journey of Dreams
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 1
-PH_SZNear = 1
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar = 0.1
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 0
-[Video_Hacks]
+# R7EE8P - NiGHTS: Journey of Dreams
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 1
+PH_SZNear = 1
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar = 0.1
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 0
+[Video_Hacks]
diff --git a/Data/User/GameConfig/R7EJ8P.ini b/Data/User/GameConfig/R7EJ8P.ini
index ba735e5b0f..0b87ea190a 100644
--- a/Data/User/GameConfig/R7EJ8P.ini
+++ b/Data/User/GameConfig/R7EJ8P.ini
@@ -1,20 +1,19 @@
-# R7EJ8P - NiGHTS: Journey of Dreams
-[Core] Values set here will override the main dolphin settings.
-BAT = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 1
-PH_SZNear = 1
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar = 0.1
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 0
-[Video_Hacks]
+# R7EJ8P - NiGHTS: Journey of Dreams
+[Core] Values set here will override the main dolphin settings.
+BAT = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 1
+PH_SZNear = 1
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar = 0.1
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 0
+[Video_Hacks]
diff --git a/Data/User/GameConfig/R7EP8P.ini b/Data/User/GameConfig/R7EP8P.ini
index 9f7615756b..f8f98c6581 100644
--- a/Data/User/GameConfig/R7EP8P.ini
+++ b/Data/User/GameConfig/R7EP8P.ini
@@ -1,20 +1,19 @@
-# R7EP8P - NiGHTS: Journey of Dreams
-[Core] Values set here will override the main dolphin settings.
-BAT = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 1
-PH_SZNear = 1
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar = 0.1
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 0
-[Video_Hacks]
+# R7EP8P - NiGHTS: Journey of Dreams
+[Core] Values set here will override the main dolphin settings.
+BAT = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 1
+PH_SZNear = 1
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar = 0.1
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 0
+[Video_Hacks]
diff --git a/Data/User/GameConfig/R7XE69.ini b/Data/User/GameConfig/R7XE69.ini
new file mode 100644
index 0000000000..37dc50c356
--- /dev/null
+++ b/Data/User/GameConfig/R7XE69.ini
@@ -0,0 +1,20 @@
+# R7XE69 - Need for Speed: Nitro
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Videos are messed up, needs LLE audio for proper sound.
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video_Hacks]
+EFBToTextureEnable = False
+EFBCopyEnable = True
diff --git a/Data/User/GameConfig/R7XJ13.ini b/Data/User/GameConfig/R7XJ13.ini
new file mode 100644
index 0000000000..d888766ae8
--- /dev/null
+++ b/Data/User/GameConfig/R7XJ13.ini
@@ -0,0 +1,20 @@
+# R7XJ13 - Need for Speed: Nitro
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Videos are messed up, needs LLE audio for proper sound.
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video_Hacks]
+EFBToTextureEnable = False
+EFBCopyEnable = True
diff --git a/Data/User/GameConfig/R7XP69.ini b/Data/User/GameConfig/R7XP69.ini
new file mode 100644
index 0000000000..0cf1f33ccc
--- /dev/null
+++ b/Data/User/GameConfig/R7XP69.ini
@@ -0,0 +1,20 @@
+# R7XP69 - Need for Speed: Nitro
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Videos are messed up, needs LLE audio for proper sound.
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video_Hacks]
+EFBToTextureEnable = False
+EFBCopyEnable = True
diff --git a/Data/User/GameConfig/R84EE9.ini b/Data/User/GameConfig/R84EE9.ini
index cb3930e4b3..6a8f84dbbe 100644
--- a/Data/User/GameConfig/R84EE9.ini
+++ b/Data/User/GameConfig/R84EE9.ini
@@ -1,18 +1,17 @@
-# R84EE9 - Harvest Moon Tree Of Tranquility
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 0
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[EmuState]
-EmulationStateId = 0
-EmulationIssues =
-[OnFrame]
-[ActionReplay]
-[Gecko]
-
+# R84EE9 - Harvest Moon Tree Of Tranquility
+[Video_Settings]
+SafeTextureCacheColorSamples = 0
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[EmuState]
+EmulationStateId = 0
+EmulationIssues =
+[OnFrame]
+[ActionReplay]
+[Gecko]
+
diff --git a/Data/User/GameConfig/R84J99.ini b/Data/User/GameConfig/R84J99.ini
index 9b7abfa083..17b1968906 100644
--- a/Data/User/GameConfig/R84J99.ini
+++ b/Data/User/GameConfig/R84J99.ini
@@ -1,17 +1,16 @@
-# R84J99 - Bokujo for Wii
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 0
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[EmuState]
-EmulationStateId = 0
-EmulationIssues =
-[OnFrame]
-[ActionReplay]
-[Gecko]
+# R84J99 - Bokujo for Wii
+[Video_Settings]
+SafeTextureCacheColorSamples = 0
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[EmuState]
+EmulationStateId = 0
+EmulationIssues =
+[OnFrame]
+[ActionReplay]
+[Gecko]
diff --git a/Data/User/GameConfig/R84P99.ini b/Data/User/GameConfig/R84P99.ini
index 7e578edbde..2c8c399cec 100644
--- a/Data/User/GameConfig/R84P99.ini
+++ b/Data/User/GameConfig/R84P99.ini
@@ -1,17 +1,16 @@
-# R84P99 - Harvest Moon Tree Of Tranquility
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 0
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[EmuState]
-EmulationStateId = 0
-EmulationIssues =
-[OnFrame]
-[ActionReplay]
-[Gecko]
+# R84P99 - Harvest Moon Tree Of Tranquility
+[Video_Settings]
+SafeTextureCacheColorSamples = 0
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[EmuState]
+EmulationStateId = 0
+EmulationIssues =
+[OnFrame]
+[ActionReplay]
+[Gecko]
diff --git a/Data/User/GameConfig/R8AJ01.ini b/Data/User/GameConfig/R8AJ01.ini
index 546d2f51ca..594e651a76 100644
--- a/Data/User/GameConfig/R8AJ01.ini
+++ b/Data/User/GameConfig/R8AJ01.ini
@@ -1,7 +1,9 @@
# R8AJ01 - Pokepark Wii
[Core] Values set here will override the main dolphin settings.
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 2
-EmulationIssues = Stuck on loading screen after movie (see issue 2917).
+EmulationStateId = 4
+EmulationIssues = NPCs sporadically disappear.
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/R8AP01.ini b/Data/User/GameConfig/R8AP01.ini
index a1863578f0..1c06c00d3d 100644
--- a/Data/User/GameConfig/R8AP01.ini
+++ b/Data/User/GameConfig/R8AP01.ini
@@ -1,8 +1,8 @@
# R8AP01 - PokePark Wii
[Core] Values set here will override the main dolphin settings.
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 2
-EmulationIssues = Stuck on loading screen after movie (see issue 2917).
+EmulationStateId = 4
+EmulationIssues = NPCs sporadically disappear.
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
@@ -13,3 +13,5 @@ PH_ExtraParam = 0
PH_ZNear =
PH_ZFar =
[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/RBBE18.ini b/Data/User/GameConfig/RBBE18.ini
index a6983f3157..68710ec26e 100644
--- a/Data/User/GameConfig/RBBE18.ini
+++ b/Data/User/GameConfig/RBBE18.ini
@@ -1,20 +1,19 @@
-# RBBE18 - Bomberman Land
-[Video_Hacks]
-EFBEmulateFormatChanges = True
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Video_Enhancements]
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[EmuState]
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame]
-[ActionReplay]
-[Gecko]
+# RBBE18 - Bomberman Land
+[Video_Hacks]
+EFBEmulateFormatChanges = True
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video_Enhancements]
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[EmuState]
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame]
+[ActionReplay]
+[Gecko]
diff --git a/Data/User/GameConfig/RBBJ18.ini b/Data/User/GameConfig/RBBJ18.ini
index b8618a5021..024301ef94 100644
--- a/Data/User/GameConfig/RBBJ18.ini
+++ b/Data/User/GameConfig/RBBJ18.ini
@@ -1,20 +1,19 @@
-# RBBJ18 - Bomberman Land
-[Video_Hacks]
-EFBEmulateFormatChanges = True
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Video_Enhancements]
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[EmuState]
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame]
-[ActionReplay]
-[Gecko]
+# RBBJ18 - Bomberman Land
+[Video_Hacks]
+EFBEmulateFormatChanges = True
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video_Enhancements]
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[EmuState]
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame]
+[ActionReplay]
+[Gecko]
diff --git a/Data/User/GameConfig/RBBP99.ini b/Data/User/GameConfig/RBBP99.ini
index f4254a565e..ce6a5da635 100644
--- a/Data/User/GameConfig/RBBP99.ini
+++ b/Data/User/GameConfig/RBBP99.ini
@@ -1,20 +1,19 @@
-# RBBP99 - Bomberman Land
-[Video_Hacks]
-EFBEmulateFormatChanges = True
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Video_Enhancements]
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[EmuState]
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame]
-[ActionReplay]
-[Gecko]
+# RBBP99 - Bomberman Land
+[Video_Hacks]
+EFBEmulateFormatChanges = True
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video_Enhancements]
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[EmuState]
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame]
+[ActionReplay]
+[Gecko]
diff --git a/Data/User/GameConfig/RBHE08.ini b/Data/User/GameConfig/RBHE08.ini
index 70e107228b..80fb2a796e 100644
--- a/Data/User/GameConfig/RBHE08.ini
+++ b/Data/User/GameConfig/RBHE08.ini
@@ -1,21 +1,20 @@
-# RBHE08 - Resident Evil Archives: Resident Evil Zero
-[Core] Values set here will override the main dolphin settings.
-VBeam = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 5
-EmulationIssues =
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Hacks]
-DlistCachingEnable = False
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
+# RBHE08 - Resident Evil Archives: Resident Evil Zero
+[Core] Values set here will override the main dolphin settings.
+VBeam = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 5
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Hacks]
+DlistCachingEnable = False
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/RBHJ08.ini b/Data/User/GameConfig/RBHJ08.ini
index 7fd20513e4..7ed45e1ee7 100644
--- a/Data/User/GameConfig/RBHJ08.ini
+++ b/Data/User/GameConfig/RBHJ08.ini
@@ -1,22 +1,21 @@
-# RBHJ08 - Biohazard 0
-[Core] Values set here will override the main dolphin settings.
-VBeam = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 5
-EmulationIssues =
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Hacks]
-DlistCachingEnable = False
-[Video_Enhancements]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
+# RBHJ08 - Biohazard 0
+[Core] Values set here will override the main dolphin settings.
+VBeam = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 5
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Hacks]
+DlistCachingEnable = False
+[Video_Enhancements]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/RBHP08.ini b/Data/User/GameConfig/RBHP08.ini
index b7bd141069..ee4c6ec35f 100644
--- a/Data/User/GameConfig/RBHP08.ini
+++ b/Data/User/GameConfig/RBHP08.ini
@@ -1,22 +1,21 @@
-# RBHP08 - Resident Evil Archives: Resident Evil Zero
-[Core] Values set here will override the main dolphin settings.
-VBeam = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 5
-EmulationIssues =
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Hacks]
-DlistCachingEnable = False
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-
+# RBHP08 - Resident Evil Archives: Resident Evil Zero
+[Core] Values set here will override the main dolphin settings.
+VBeam = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 5
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Hacks]
+DlistCachingEnable = False
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+
diff --git a/Data/User/GameConfig/RBWE01.ini b/Data/User/GameConfig/RBWE01.ini
index 3a8f5fc212..60b08e73c4 100644
--- a/Data/User/GameConfig/RBWE01.ini
+++ b/Data/User/GameConfig/RBWE01.ini
@@ -1,8 +1,8 @@
# RBWE01 - Battalion Wars 2
[Core] Values set here will override the main dolphin settings.
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 3
-EmulationIssues = Recent revs crash ingame, use an older rev like r6461 with watermark tightness set to 600.
+EmulationStateId = 4
+EmulationIssues = Needs LLE audio for proper sound.
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
diff --git a/Data/User/GameConfig/RBWJ01.ini b/Data/User/GameConfig/RBWJ01.ini
index 0cfcdb0c24..8efad9729f 100644
--- a/Data/User/GameConfig/RBWJ01.ini
+++ b/Data/User/GameConfig/RBWJ01.ini
@@ -1,10 +1,16 @@
# RBWJ01 - Totsugeki Famicom Wars vs.
[Core] Values set here will override the main dolphin settings.
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 3
-EmulationIssues = Recent revs crash ingame, use an older rev like r6461 with watermark tightness set to 600.
+EmulationStateId = 4
+EmulationIssues = Needs LLE audio for proper sound.
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
ProjectionHack = 0
-[Gecko]
\ No newline at end of file
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Enhancements]
diff --git a/Data/User/GameConfig/RBWP01.ini b/Data/User/GameConfig/RBWP01.ini
index df90e22bfc..36b0b3bc98 100644
--- a/Data/User/GameConfig/RBWP01.ini
+++ b/Data/User/GameConfig/RBWP01.ini
@@ -1,10 +1,16 @@
# RBWP01 - Battalion Wars 2
[Core] Values set here will override the main dolphin settings.
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 3
-EmulationIssues = Recent revs crash ingame, use an older rev like r6461 with watermark tightness set to 600.
+EmulationStateId = 4
+EmulationIssues = Needs LLE audio for proper sound.
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
ProjectionHack = 0
-[Gecko]
\ No newline at end of file
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Enhancements]
diff --git a/Data/User/GameConfig/RDBPAF.ini b/Data/User/GameConfig/RDBPAF.ini
index 9d3ddb23e9..9423d27031 100644
--- a/Data/User/GameConfig/RDBPAF.ini
+++ b/Data/User/GameConfig/RDBPAF.ini
@@ -1,19 +1,18 @@
-# RDBPAF - Dragon Ball Z Budokai Tenkaichi 2
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 0
-EmulationIssues =
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-
+# RDBPAF - Dragon Ball Z Budokai Tenkaichi 2
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 0
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+
diff --git a/Data/User/GameConfig/RDSE70.ini b/Data/User/GameConfig/RDSE70.ini
index e3f23aa99c..d5e9d952f0 100644
--- a/Data/User/GameConfig/RDSE70.ini
+++ b/Data/User/GameConfig/RDSE70.ini
@@ -1,19 +1,18 @@
-# RDSE70 - Dragon Ball Z Budokai Tenkaichi 3
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues =
-EmulationStateId = 5
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-
+# RDSE70 - Dragon Ball Z Budokai Tenkaichi 3
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationIssues =
+EmulationStateId = 5
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+
diff --git a/Data/User/GameConfig/RDSJAF.ini b/Data/User/GameConfig/RDSJAF.ini
index 8b208019f3..d4ad2a22a4 100644
--- a/Data/User/GameConfig/RDSJAF.ini
+++ b/Data/User/GameConfig/RDSJAF.ini
@@ -1,12 +1,12 @@
-# RDSJAF - Dragon Ball Z Sparking METEOR
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues =
-EmulationStateId = 5
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
+# RDSJAF - Dragon Ball Z Sparking METEOR
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationIssues =
+EmulationStateId = 5
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/RDSPAF.ini b/Data/User/GameConfig/RDSPAF.ini
index 58cbbb496a..1af174149e 100644
--- a/Data/User/GameConfig/RDSPAF.ini
+++ b/Data/User/GameConfig/RDSPAF.ini
@@ -1,12 +1,12 @@
-# RDSPAF - Dragon Ball Z Budokai Tenkaichi 3
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues =
-EmulationStateId = 5
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
+# RDSPAF - Dragon Ball Z Budokai Tenkaichi 3
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationIssues =
+EmulationStateId = 5
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/RFCEGD.ini b/Data/User/GameConfig/RFCEGD.ini
index b4d1f1df19..2dc55b5025 100644
--- a/Data/User/GameConfig/RFCEGD.ini
+++ b/Data/User/GameConfig/RFCEGD.ini
@@ -1,15 +1,14 @@
-# RFCEGD - FFCC THE CRYSTAL BEARERS
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = Turn off "use panic handlers". Water glitches (r6521)
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Video_Enhancements]
-
+# RFCEGD - FFCC THE CRYSTAL BEARERS
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Turn off "use panic handlers". Water glitches (r6521)
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video_Enhancements]
+
diff --git a/Data/User/GameConfig/RFCJGD.ini b/Data/User/GameConfig/RFCJGD.ini
index 8d65cff383..5ba7cd23ca 100644
--- a/Data/User/GameConfig/RFCJGD.ini
+++ b/Data/User/GameConfig/RFCJGD.ini
@@ -1,12 +1,12 @@
-# RFCJGD - FFCC THE CRYSTAL BEARERS
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = Turn off "use panic handlers". Water glitches (r6521)
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
+# RFCJGD - FFCC THE CRYSTAL BEARERS
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Turn off "use panic handlers". Water glitches (r6521)
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/RFCPGD.ini b/Data/User/GameConfig/RFCPGD.ini
index 0a8daa4dbe..519a4987da 100644
--- a/Data/User/GameConfig/RFCPGD.ini
+++ b/Data/User/GameConfig/RFCPGD.ini
@@ -1,11 +1,11 @@
-# RFCPGD - FFCC THE CRYSTAL BEARERS
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = Turn off "use panic handlers". Water glitches (r6521)
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
+# RFCPGD - FFCC THE CRYSTAL BEARERS
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Turn off "use panic handlers". Water glitches (r6521)
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/RFFEGD.ini b/Data/User/GameConfig/RFFEGD.ini
index bbe10445f4..0db2a572ee 100644
--- a/Data/User/GameConfig/RFFEGD.ini
+++ b/Data/User/GameConfig/RFFEGD.ini
@@ -1,20 +1,19 @@
-# RFFEGD - FFCC EOT
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = Use efb scale x1 for the black lines to disappear
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-EFBScale = 2
-SafeTextureCacheColorSamples = 512
-
+# RFFEGD - FFCC EOT
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Use efb scale x1 for the black lines to disappear
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+EFBScale = 2
+SafeTextureCacheColorSamples = 512
+
diff --git a/Data/User/GameConfig/RFFJGD.ini b/Data/User/GameConfig/RFFJGD.ini
index 749f5e068f..24d3099bc8 100644
--- a/Data/User/GameConfig/RFFJGD.ini
+++ b/Data/User/GameConfig/RFFJGD.ini
@@ -1,19 +1,18 @@
-# RFFJGD - FFCC EOT
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = Use efb scale x1 for the black lines to disappear
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-EFBScale = 2
-
+# RFFJGD - FFCC EOT
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Use efb scale x1 for the black lines to disappear
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+EFBScale = 2
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/RFFPGD.ini b/Data/User/GameConfig/RFFPGD.ini
index 9c24e2df88..bb0471ea68 100644
--- a/Data/User/GameConfig/RFFPGD.ini
+++ b/Data/User/GameConfig/RFFPGD.ini
@@ -1,18 +1,18 @@
-# RFFPGD - FFCC EOT
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = Use efb scale x1 for the black lines to disappear
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-EFBScale = 2
+# RFFPGD - FFCC EOT
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Use efb scale x1 for the black lines to disappear
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+EFBScale = 2
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/RFQP69.ini b/Data/User/GameConfig/RFQP69.ini
index ced45265c7..f4e728a872 100644
--- a/Data/User/GameConfig/RFQP69.ini
+++ b/Data/User/GameConfig/RFQP69.ini
@@ -1,11 +1,11 @@
-# RFQP69 - FaceBreaker K.O. Party™
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-Hack = 3
-[Video_Settings]
-SafeTextureCache = True
+# RFQP69 - FaceBreaker K.O. Party™
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+Hack = 3
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/RIPEAF.ini b/Data/User/GameConfig/RIPEAF.ini
index d7c429abbb..da321f88ce 100644
--- a/Data/User/GameConfig/RIPEAF.ini
+++ b/Data/User/GameConfig/RIPEAF.ini
@@ -1,14 +1,13 @@
-# RIPEAF - ONEPIECE UNLIMITED ADVENTURE
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = Use direct3D11 plugin (r6932)
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Video_Enhancements]
+# RIPEAF - ONEPIECE UNLIMITED ADVENTURE
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Use direct3D11 plugin (r6932)
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video_Enhancements]
diff --git a/Data/User/GameConfig/RIPJAF.ini b/Data/User/GameConfig/RIPJAF.ini
index 8daa461e7c..dbbee55ffb 100644
--- a/Data/User/GameConfig/RIPJAF.ini
+++ b/Data/User/GameConfig/RIPJAF.ini
@@ -1,12 +1,12 @@
-# RIPJAF - ONEPIECE UNLIMITED ADVENTURE
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = Use direct3D11 plugin (r6932)
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
+# RIPJAF - ONEPIECE UNLIMITED ADVENTURE
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Use direct3D11 plugin (r6932)
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/RIPPAF.ini b/Data/User/GameConfig/RIPPAF.ini
index f0756110ea..64d6ac3fd5 100644
--- a/Data/User/GameConfig/RIPPAF.ini
+++ b/Data/User/GameConfig/RIPPAF.ini
@@ -1,12 +1,12 @@
-# RIPPAF - ONEPIECE UNLIMITED ADVENTURE
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = Use direct3D11 plugin (r6932)
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
+# RIPPAF - ONEPIECE UNLIMITED ADVENTURE
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Use direct3D11 plugin (r6932)
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/RIUJAF.ini b/Data/User/GameConfig/RIUJAF.ini
index c5dea403f9..e18411c3ff 100644
--- a/Data/User/GameConfig/RIUJAF.ini
+++ b/Data/User/GameConfig/RIUJAF.ini
@@ -1,12 +1,12 @@
-# RIUJAF - ONEPIECE UNLIMITED CRUISE EPISODE 2
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = Use direct3D11 plugin (r6932)
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
+# RIUJAF - ONEPIECE UNLIMITED CRUISE EPISODE 2
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Use direct3D11 plugin (r6932)
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/RIUPAF.ini b/Data/User/GameConfig/RIUPAF.ini
index 2b45e950b1..2192cb63bd 100644
--- a/Data/User/GameConfig/RIUPAF.ini
+++ b/Data/User/GameConfig/RIUPAF.ini
@@ -1,14 +1,13 @@
-# RIUPAF - ONEPIECE UNLIMITED CRUISE EPISODE 2
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = Use direct3D11 plugin (r6932)
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-
+# RIUPAF - ONEPIECE UNLIMITED CRUISE EPISODE 2
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Use direct3D11 plugin (r6932)
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+
diff --git a/Data/User/GameConfig/RK2EEB.ini b/Data/User/GameConfig/RK2EEB.ini
index 7c63634d23..6c5a0714ab 100644
--- a/Data/User/GameConfig/RK2EEB.ini
+++ b/Data/User/GameConfig/RK2EEB.ini
@@ -1,13 +1,12 @@
-# RK2EEB - TRAUMA CENTER NEW BLOOD
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues =
-EmulationStateId = 0
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
+# RK2EEB - TRAUMA CENTER NEW BLOOD
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationIssues =
+EmulationStateId = 0
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/RK2JEB.ini b/Data/User/GameConfig/RK2JEB.ini
index 8016eac272..bd31912d19 100644
--- a/Data/User/GameConfig/RK2JEB.ini
+++ b/Data/User/GameConfig/RK2JEB.ini
@@ -1,12 +1,12 @@
-# RK2JEB - TRAUMA CENTER NEW BLOOD
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues =
-EmulationStateId = 0
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
+# RK2JEB - TRAUMA CENTER NEW BLOOD
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationIssues =
+EmulationStateId = 0
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/RK2P01.ini b/Data/User/GameConfig/RK2P01.ini
index 9d8895d1d2..9a4a236510 100644
--- a/Data/User/GameConfig/RK2P01.ini
+++ b/Data/User/GameConfig/RK2P01.ini
@@ -1,12 +1,12 @@
-# RK2P01 - TRAUMA CENTER NEW BLOOD
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues =
-EmulationStateId = 0
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
+# RK2P01 - TRAUMA CENTER NEW BLOOD
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationIssues =
+EmulationStateId = 0
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/RKDEEB.ini b/Data/User/GameConfig/RKDEEB.ini
index 0494409839..a8c03dc138 100644
--- a/Data/User/GameConfig/RKDEEB.ini
+++ b/Data/User/GameConfig/RKDEEB.ini
@@ -1,14 +1,13 @@
-# RKDEEB - Trauma Center SO
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues =
-EmulationStateId = 0
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-
+# RKDEEB - Trauma Center SO
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationIssues =
+EmulationStateId = 0
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+
diff --git a/Data/User/GameConfig/RKDJEB.ini b/Data/User/GameConfig/RKDJEB.ini
index 1e475b1bc4..98c14db7a6 100644
--- a/Data/User/GameConfig/RKDJEB.ini
+++ b/Data/User/GameConfig/RKDJEB.ini
@@ -1,12 +1,12 @@
-# RKDJEB - Trauma Center SO
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues =
-EmulationStateId = 0
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
+# RKDJEB - Trauma Center SO
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationIssues =
+EmulationStateId = 0
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/RKDP01.ini b/Data/User/GameConfig/RKDP01.ini
index 5e430c75b9..ac319429c0 100644
--- a/Data/User/GameConfig/RKDP01.ini
+++ b/Data/User/GameConfig/RKDP01.ini
@@ -1,11 +1,11 @@
-# RKDP01 - Caduceus Z
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 5
-EmulationIssues =
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-[Video_Settings]
-SafeTextureCache = True
-
+# RKDP01 - Caduceus Z
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 5
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+
diff --git a/Data/User/GameConfig/RKDPEB.ini b/Data/User/GameConfig/RKDPEB.ini
index f6c8b3f8a2..30324324ae 100644
--- a/Data/User/GameConfig/RKDPEB.ini
+++ b/Data/User/GameConfig/RKDPEB.ini
@@ -1,12 +1,12 @@
-# RKDPEB - Trauma Center SO
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues =
-EmulationStateId = 0
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
+# RKDPEB - Trauma Center SO
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationIssues =
+EmulationStateId = 0
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/RM3E01.ini b/Data/User/GameConfig/RM3E01.ini
index cee3c4e962..cb87db9070 100644
--- a/Data/User/GameConfig/RM3E01.ini
+++ b/Data/User/GameConfig/RM3E01.ini
@@ -1,27 +1,26 @@
-# RM3E01 - Metroid Prime 3: Corruption
-[Core]
-#Values set here will override the main dolphin settings.
-[EmuState]
-#The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame]
-[ActionReplay]
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Video_Hacks]
-EFBToTextureEnable = False
-EFBCopyEnable = True
-[Wii]
-DisableWiimoteSpeaker = 1
-[Video_Hacks]
-EFBEmulateFormatChanges = True
+# RM3E01 - Metroid Prime 3: Corruption
+[Core]
+#Values set here will override the main dolphin settings.
+[EmuState]
+#The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame]
+[ActionReplay]
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video_Hacks]
+EFBToTextureEnable = False
+EFBCopyEnable = True
+[Wii]
+DisableWiimoteSpeaker = 1
+[Video_Hacks]
+EFBEmulateFormatChanges = True
diff --git a/Data/User/GameConfig/RM3J01.ini b/Data/User/GameConfig/RM3J01.ini
index 3a3292be12..97a88c4c69 100644
--- a/Data/User/GameConfig/RM3J01.ini
+++ b/Data/User/GameConfig/RM3J01.ini
@@ -1,27 +1,26 @@
-# RM3J01 - Metroid Prime 3: Corruption
-[Core]
-#Values set here will override the main dolphin settings.
-[EmuState]
-#The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame]
-[ActionReplay]
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Video_Hacks]
-EFBToTextureEnable = False
-EFBCopyEnable = True
-[Wii]
-DisableWiimoteSpeaker = 1
-[Video_Hacks]
-EFBEmulateFormatChanges = True
+# RM3J01 - Metroid Prime 3: Corruption
+[Core]
+#Values set here will override the main dolphin settings.
+[EmuState]
+#The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame]
+[ActionReplay]
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video_Hacks]
+EFBToTextureEnable = False
+EFBCopyEnable = True
+[Wii]
+DisableWiimoteSpeaker = 1
+[Video_Hacks]
+EFBEmulateFormatChanges = True
diff --git a/Data/User/GameConfig/RM3P01.ini b/Data/User/GameConfig/RM3P01.ini
index 18164dc78a..093afc15db 100644
--- a/Data/User/GameConfig/RM3P01.ini
+++ b/Data/User/GameConfig/RM3P01.ini
@@ -1,29 +1,28 @@
-# RM3P01 - Metroid Prime 3: Corruption
-[Core]
-#Values set here will override the main dolphin settings.
-[Speedhacks]
-0x804e8b20=600
-[EmuState]
-#The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = minor coloring problems
-[OnFrame]
-[ActionReplay]
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Video_Hacks]
-EFBToTextureEnable = False
-EFBCopyEnable = True
-[Wii]
-DisableWiimoteSpeaker = 1
-[Video_Hacks]
-EFBEmulateFormatChanges = True
+# RM3P01 - Metroid Prime 3: Corruption
+[Core]
+#Values set here will override the main dolphin settings.
+[Speedhacks]
+0x804e8b20=600
+[EmuState]
+#The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = minor coloring problems
+[OnFrame]
+[ActionReplay]
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video_Hacks]
+EFBToTextureEnable = False
+EFBCopyEnable = True
+[Wii]
+DisableWiimoteSpeaker = 1
+[Video_Hacks]
+EFBEmulateFormatChanges = True
diff --git a/Data/User/GameConfig/RMHE08.ini b/Data/User/GameConfig/RMHE08.ini
index aebbd4f7f8..85aebfdd73 100644
--- a/Data/User/GameConfig/RMHE08.ini
+++ b/Data/User/GameConfig/RMHE08.ini
@@ -1,24 +1,27 @@
-# RMHE08 - Monster Hunter Tri
-[Core] Values set here will override the main dolphin settings.
-TLBHack = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues = Skip efb access from cpu needs to be enabled for direct 3d 9 & 11 to have playable speeds.
-EmulationStateId = 4
-[OnFrame] Add memory patches to be applied every frame here.
-+$Bloom OFF
-0x04056FF4:dword:0xC022FFE4
-0x0479DA84:dword:0x3F800000
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Hacks]
-EFBAccessEnable = False
-EFBToTextureEnable = False
-EFBCopyEnable = True
-EFBCopyCacheEnable = True
+# RMHE08 - Monster Hunter Tri
+[Core] Values set here will override the main dolphin settings.
+TLBHack = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationIssues = Skip efb access from cpu needs to be enabled for direct 3d 9 & 11 to have playable speeds.
+EmulationStateId = 4
+[OnFrame] Add memory patches to be applied every frame here.
++$Bloom OFF
+0x04056FF4:dword:0xC022FFE4
+0x0479DA84:dword:0x3F800000
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Hacks]
+EFBAccessEnable = False
+EFBToTextureEnable = False
+EFBCopyEnable = True
+EFBCopyCacheEnable = True
+[Video_Settings]
+UseXFB = True
+UseRealXFB = False
diff --git a/Data/User/GameConfig/RMHJ08.ini b/Data/User/GameConfig/RMHJ08.ini
index 6a9b8231b8..af7e72d870 100644
--- a/Data/User/GameConfig/RMHJ08.ini
+++ b/Data/User/GameConfig/RMHJ08.ini
@@ -1,24 +1,27 @@
-# RMHJ08 - MONSTER HUNTER 3
-[Core] Values set here will override the main dolphin settings.
-TLBHack = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues = Skip efb access from cpu needs to be enabled for direct 3d 9 & 11 to have playable speeds.
-EmulationStateId = 4
-[OnFrame] Add memory patches to be applied every frame here.
-0x805DD6D4:dword:0x60000000
-0x805DD6D8:dword:0x60000000
-0x805DD6DC:dword:0x60000000
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Hacks]
-EFBAccessEnable = False
-EFBToTextureEnable = False
-EFBCopyEnable = True
-EFBCopyCacheEnable = True
+# RMHJ08 - MONSTER HUNTER 3
+[Core] Values set here will override the main dolphin settings.
+TLBHack = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationIssues = Skip efb access from cpu needs to be enabled for direct 3d 9 & 11 to have playable speeds.
+EmulationStateId = 4
+[OnFrame] Add memory patches to be applied every frame here.
+0x805DD6D4:dword:0x60000000
+0x805DD6D8:dword:0x60000000
+0x805DD6DC:dword:0x60000000
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Hacks]
+EFBAccessEnable = False
+EFBToTextureEnable = False
+EFBCopyEnable = True
+EFBCopyCacheEnable = True
+[Video_Settings]
+UseXFB = True
+UseRealXFB = False
diff --git a/Data/User/GameConfig/RMHP08.ini b/Data/User/GameConfig/RMHP08.ini
index d2f0179aa1..e710dbfe7d 100644
--- a/Data/User/GameConfig/RMHP08.ini
+++ b/Data/User/GameConfig/RMHP08.ini
@@ -1,16 +1,19 @@
-# RMHP08 - Monster Hunter Tri
-[Core] Values set here will override the main dolphin settings.
-TLBHack = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues = Skip efb access from cpu needs to be enabled for direct 3d 9 & 11 to have playable speeds.
-EmulationStateId = 4
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-[Gecko]
-[Video_Hacks]
-EFBAccessEnable = False
-EFBToTextureEnable = False
-EFBCopyEnable = True
-EFBCopyCacheEnable = True
+# RMHP08 - Monster Hunter Tri
+[Core] Values set here will override the main dolphin settings.
+TLBHack = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationIssues = Skip efb access from cpu needs to be enabled for direct 3d 9 & 11 to have playable speeds.
+EmulationStateId = 4
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+[Gecko]
+[Video_Hacks]
+EFBAccessEnable = False
+EFBToTextureEnable = False
+EFBCopyEnable = True
+EFBCopyCacheEnable = True
+[Video_Settings]
+UseXFB = True
+UseRealXFB = False
diff --git a/Data/User/GameConfig/RMLEH4.ini b/Data/User/GameConfig/RMLEH4.ini
index 6bf280dc75..9f46bde99a 100644
--- a/Data/User/GameConfig/RMLEH4.ini
+++ b/Data/User/GameConfig/RMLEH4.ini
@@ -1,19 +1,18 @@
-# RMLEH4 - METAL SLUG Anthology
-[Core] Values set here will override the main dolphin settings.
-TLBHack = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = Use LLE audio to solve some sound issues.
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
+# RMLEH4 - METAL SLUG Anthology
+[Core] Values set here will override the main dolphin settings.
+TLBHack = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Use LLE audio to solve some sound issues.
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/RMLJH4.ini b/Data/User/GameConfig/RMLJH4.ini
index cc6422800d..44f37e8c50 100644
--- a/Data/User/GameConfig/RMLJH4.ini
+++ b/Data/User/GameConfig/RMLJH4.ini
@@ -1,19 +1,18 @@
-# RMLJH4 - Metal Slug Complete
-[Core] Values set here will override the main dolphin settings.
-TLBHack = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = Use LLE audio to solve some sound issues.
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
+# RMLJH4 - Metal Slug Complete
+[Core] Values set here will override the main dolphin settings.
+TLBHack = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Use LLE audio to solve some sound issues.
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/RMLK52.ini b/Data/User/GameConfig/RMLK52.ini
index 12a6d1c800..47adb3efe8 100644
--- a/Data/User/GameConfig/RMLK52.ini
+++ b/Data/User/GameConfig/RMLK52.ini
@@ -1,19 +1,18 @@
-# RMLK52 - Metal Slug Complete
-[Core] Values set here will override the main dolphin settings.
-TLBHack = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = Use LLE audio to solve some sound issues.
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
+# RMLK52 - Metal Slug Complete
+[Core] Values set here will override the main dolphin settings.
+TLBHack = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Use LLE audio to solve some sound issues.
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/RMLP7U.ini b/Data/User/GameConfig/RMLP7U.ini
index 0666be4c4a..7dd5feeb6a 100644
--- a/Data/User/GameConfig/RMLP7U.ini
+++ b/Data/User/GameConfig/RMLP7U.ini
@@ -1,19 +1,18 @@
-# RMLP7U - METAL SLUG Anthology
-[Core] Values set here will override the main dolphin settings.
-TLBHack = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = Use LLE audio to solve some sound issues.
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
+# RMLP7U - METAL SLUG Anthology
+[Core] Values set here will override the main dolphin settings.
+TLBHack = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Use LLE audio to solve some sound issues.
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/RMLPH4.ini b/Data/User/GameConfig/RMLPH4.ini
index 9c062079f2..d9f964d486 100644
--- a/Data/User/GameConfig/RMLPH4.ini
+++ b/Data/User/GameConfig/RMLPH4.ini
@@ -1,19 +1,18 @@
-# RMLPH4 - METAL SLUG Anthology
-[Core] Values set here will override the main dolphin settings.
-TLBHack = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = Use LLE audio to solve some sound issues.
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
+# RMLPH4 - METAL SLUG Anthology
+[Core] Values set here will override the main dolphin settings.
+TLBHack = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Use LLE audio to solve some sound issues.
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/ROAE36.ini b/Data/User/GameConfig/ROAE36.ini
index 1171f7fda3..b252437731 100644
--- a/Data/User/GameConfig/ROAE36.ini
+++ b/Data/User/GameConfig/ROAE36.ini
@@ -1,18 +1,17 @@
-# ROAE36 - Overlord: Dark Legend
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = Accessing the map will crash the game (see issue 3953).
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
+# ROAE36 - Overlord: Dark Legend
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Accessing the map will crash the game (see issue 3953).
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/ROAP36.ini b/Data/User/GameConfig/ROAP36.ini
index d9c884ba5a..f07c480b55 100644
--- a/Data/User/GameConfig/ROAP36.ini
+++ b/Data/User/GameConfig/ROAP36.ini
@@ -1,18 +1,17 @@
-# ROAP36 - Overlord: Dark Legend
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = Accessing the map will crash the game (see issue 3953).
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
+# ROAP36 - Overlord: Dark Legend
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Accessing the map will crash the game (see issue 3953).
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/RODE01.ini b/Data/User/GameConfig/RODE01.ini
new file mode 100644
index 0000000000..c7fb51d19b
--- /dev/null
+++ b/Data/User/GameConfig/RODE01.ini
@@ -0,0 +1,17 @@
+# RODE01 - WarioWare: Smooth Moves
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Hacks]
+EFBEmulateFormatChanges = True
diff --git a/Data/User/GameConfig/RODJ01.ini b/Data/User/GameConfig/RODJ01.ini
new file mode 100644
index 0000000000..f707f66a84
--- /dev/null
+++ b/Data/User/GameConfig/RODJ01.ini
@@ -0,0 +1,17 @@
+# RODJ01 - WarioWare: Smooth Moves
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Hacks]
+EFBEmulateFormatChanges = True
diff --git a/Data/User/GameConfig/RODK01.ini b/Data/User/GameConfig/RODK01.ini
new file mode 100644
index 0000000000..5445f9e8c2
--- /dev/null
+++ b/Data/User/GameConfig/RODK01.ini
@@ -0,0 +1,17 @@
+# RODK01 - WarioWare: Smooth Moves
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Hacks]
+EFBEmulateFormatChanges = True
diff --git a/Data/User/GameConfig/RODP01.ini b/Data/User/GameConfig/RODP01.ini
index 2c2e2cbbd5..fd98297fa4 100644
--- a/Data/User/GameConfig/RODP01.ini
+++ b/Data/User/GameConfig/RODP01.ini
@@ -2,5 +2,16 @@
[Core] Values set here will override the main dolphin settings.
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
EmulationStateId = 4
+EmulationIssues =
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Hacks]
+EFBEmulateFormatChanges = True
diff --git a/Data/User/GameConfig/ROLE8P.ini b/Data/User/GameConfig/ROLE8P.ini
index fee61aa643..9fb165c654 100644
--- a/Data/User/GameConfig/ROLE8P.ini
+++ b/Data/User/GameConfig/ROLE8P.ini
@@ -1,18 +1,17 @@
-# ROLE8P - Mario & Sonic at the Olympic Winter Games
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = Use Direct 3d 11 backend.
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
+# ROLE8P - Mario & Sonic at the Olympic Winter Games
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Use Direct 3d 11 backend.
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/ROLJ01.ini b/Data/User/GameConfig/ROLJ01.ini
index 4ef9c12a69..59e58e525a 100644
--- a/Data/User/GameConfig/ROLJ01.ini
+++ b/Data/User/GameConfig/ROLJ01.ini
@@ -1,18 +1,17 @@
-# ROLJ01 - Mario & Sonic at the Olympic Winter Games
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = Use Direct 3d 11 backend.
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
+# ROLJ01 - Mario & Sonic at the Olympic Winter Games
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Use Direct 3d 11 backend.
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/ROLK01.ini b/Data/User/GameConfig/ROLK01.ini
index 6827e96fc9..51ee178104 100644
--- a/Data/User/GameConfig/ROLK01.ini
+++ b/Data/User/GameConfig/ROLK01.ini
@@ -1,18 +1,17 @@
-# ROLK01 - Mario & Sonic at the Olympic Winter Games
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = Use Direct 3d 11 backend.
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
+# ROLK01 - Mario & Sonic at the Olympic Winter Games
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Use Direct 3d 11 backend.
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/ROLP8P.ini b/Data/User/GameConfig/ROLP8P.ini
index a7bd40c64d..b969360e00 100644
--- a/Data/User/GameConfig/ROLP8P.ini
+++ b/Data/User/GameConfig/ROLP8P.ini
@@ -1,18 +1,17 @@
-# ROLP8P - Mario & Sonic at the Olympic Winter Games
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = Use Direct 3d 11 backend.
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
+# ROLP8P - Mario & Sonic at the Olympic Winter Games
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Use Direct 3d 11 backend.
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/ROUJAF.ini b/Data/User/GameConfig/ROUJAF.ini
index 6300f9c9c0..5dea114bf6 100644
--- a/Data/User/GameConfig/ROUJAF.ini
+++ b/Data/User/GameConfig/ROUJAF.ini
@@ -1,12 +1,12 @@
-# ROUJAF - ONEPIECE UNLIMITED CRUISE EPISODE 2
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = Use direct3D11 plugin (r6932)
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
+# ROUJAF - ONEPIECE UNLIMITED CRUISE EPISODE 2
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Use direct3D11 plugin (r6932)
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/ROUPAF.ini b/Data/User/GameConfig/ROUPAF.ini
index e362c4cf29..5f9b8e0ce7 100644
--- a/Data/User/GameConfig/ROUPAF.ini
+++ b/Data/User/GameConfig/ROUPAF.ini
@@ -1,13 +1,12 @@
-# ROUPAF - ONEPIECE UNLIMITED CRUISE EPISODE 2
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = Use direct3D11 plugin (r6932)
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
+# ROUPAF - ONEPIECE UNLIMITED CRUISE EPISODE 2
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Use direct3D11 plugin (r6932)
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/ROWE08.ini b/Data/User/GameConfig/ROWE08.ini
index 77c8759e7a..a392c3de77 100644
--- a/Data/User/GameConfig/ROWE08.ini
+++ b/Data/User/GameConfig/ROWE08.ini
@@ -1,23 +1,22 @@
-# ROWE08 - Okami
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = Use dx9 plugin. Game menu issues (r6564)
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Video_Hacks]
-EFBAccessEnable = True
-EFBToTextureEnable = False
-EFBCopyEnable = True
-
+# ROWE08 - Okami
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Use dx9 plugin. Game menu issues (r6564)
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video_Hacks]
+EFBAccessEnable = True
+EFBToTextureEnable = False
+EFBCopyEnable = True
+
diff --git a/Data/User/GameConfig/ROWJ08.ini b/Data/User/GameConfig/ROWJ08.ini
index be9440a87c..cb0e439393 100644
--- a/Data/User/GameConfig/ROWJ08.ini
+++ b/Data/User/GameConfig/ROWJ08.ini
@@ -1,22 +1,21 @@
-# ROWJ08 - Okami
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = Use dx9 plugin. Game menu issues (r6564)
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Video_Hacks]
-EFBAccessEnable = True
-EFBToTextureEnable = False
-EFBCopyEnable = True
+# ROWJ08 - Okami
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Use dx9 plugin. Game menu issues (r6564)
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video_Hacks]
+EFBAccessEnable = True
+EFBToTextureEnable = False
+EFBCopyEnable = True
diff --git a/Data/User/GameConfig/ROWP08.ini b/Data/User/GameConfig/ROWP08.ini
index a7f764a350..073886bccb 100644
--- a/Data/User/GameConfig/ROWP08.ini
+++ b/Data/User/GameConfig/ROWP08.ini
@@ -1,22 +1,21 @@
-# ROWP08 - Okami
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = Use dx9 plugin. Game menu issues (r6564)
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Video_Hacks]
-EFBAccessEnable = True
-EFBToTextureEnable = False
-EFBCopyEnable = True
+# ROWP08 - Okami
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Use dx9 plugin. Game menu issues (r6564)
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video_Hacks]
+EFBAccessEnable = True
+EFBToTextureEnable = False
+EFBCopyEnable = True
diff --git a/Data/User/GameConfig/RPBE01.ini b/Data/User/GameConfig/RPBE01.ini
index 317a718b98..d12718eb45 100644
--- a/Data/User/GameConfig/RPBE01.ini
+++ b/Data/User/GameConfig/RPBE01.ini
@@ -1,19 +1,18 @@
-# RPBE01 - Pokemon Battle Revolution
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = Needs texture cache set to "Safe"(r6906).
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 0
-
+# RPBE01 - Pokemon Battle Revolution
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Needs texture cache set to "Safe"(r6906).
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 0
+
diff --git a/Data/User/GameConfig/RPBJ01.ini b/Data/User/GameConfig/RPBJ01.ini
index e6a563da24..4ebf8e0934 100644
--- a/Data/User/GameConfig/RPBJ01.ini
+++ b/Data/User/GameConfig/RPBJ01.ini
@@ -1,18 +1,17 @@
-# RPBJ01 - Pokemon Battle Revolution
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = Needs texture cache set to "Safe"(r6906).
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 0
+# RPBJ01 - Pokemon Battle Revolution
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Needs texture cache set to "Safe"(r6906).
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 0
diff --git a/Data/User/GameConfig/RPBP01.ini b/Data/User/GameConfig/RPBP01.ini
index 5e696efd6a..fce7b6831e 100644
--- a/Data/User/GameConfig/RPBP01.ini
+++ b/Data/User/GameConfig/RPBP01.ini
@@ -1,18 +1,17 @@
-# RPBP01 - Pokemon Battle Revolution
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = Needs texture cache set to "Safe"(r6906).
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 0
+# RPBP01 - Pokemon Battle Revolution
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Needs texture cache set to "Safe"(r6906).
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 0
diff --git a/Data/User/GameConfig/RPJE7U.ini b/Data/User/GameConfig/RPJE7U.ini
index c9639856c5..56280aaf38 100644
--- a/Data/User/GameConfig/RPJE7U.ini
+++ b/Data/User/GameConfig/RPJE7U.ini
@@ -1,20 +1,19 @@
-# RPJE7U - ARC RISE FANTASIA
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues =
-EmulationStateId = 4
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Video_Hacks]
-DlistCachingEnable = False
+# RPJE7U - ARC RISE FANTASIA
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationIssues =
+EmulationStateId = 4
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video_Hacks]
+DlistCachingEnable = False
diff --git a/Data/User/GameConfig/RPJJ99.ini b/Data/User/GameConfig/RPJJ99.ini
index fe608fbbe1..c34ba44f56 100644
--- a/Data/User/GameConfig/RPJJ99.ini
+++ b/Data/User/GameConfig/RPJJ99.ini
@@ -1,20 +1,19 @@
-# RPJJ99 - ARC RISE FANTASIA
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues =
-EmulationStateId = 4
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Video_Hacks]
-DlistCachingEnable = False
+# RPJJ99 - ARC RISE FANTASIA
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationIssues =
+EmulationStateId = 4
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video_Hacks]
+DlistCachingEnable = False
diff --git a/Data/User/GameConfig/RQ6EJJ.ini b/Data/User/GameConfig/RQ6EJJ.ini
index d9bcac7936..1c21fc4c70 100644
--- a/Data/User/GameConfig/RQ6EJJ.ini
+++ b/Data/User/GameConfig/RQ6EJJ.ini
@@ -1,23 +1,20 @@
-# RQ6EJJ - Cursed Mountain
-[Video_Enhancements]
-MaxAnisotropy = 0
-[Video_Hacks]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 128
-[Core]
-MMU = 1
-BlockMerging = 1
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[EmuState]
-EmulationStateId = 4
-EmulationIssues = Use direct 3d 11 for less glitches. Slow, it needs mmu to not crash ingame(r7436).
-[OnFrame]
-[ActionReplay]
-[Gecko]
+# RQ6EJJ - Cursed Mountain
+[Video_Enhancements]
+MaxAnisotropy = 0
+[Video_Hacks]
+[Video_Settings]
+[Core]
+BlockMerging = 1
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[EmuState]
+EmulationStateId = 4
+EmulationIssues = Use direct 3d 11 for less glitches.
+[OnFrame]
+[ActionReplay]
+[Gecko]
diff --git a/Data/User/GameConfig/RQ6PKM.ini b/Data/User/GameConfig/RQ6PKM.ini
index cfc87e365d..a2d20c8992 100644
--- a/Data/User/GameConfig/RQ6PKM.ini
+++ b/Data/User/GameConfig/RQ6PKM.ini
@@ -1,23 +1,20 @@
-# RQ6PKM - Cursed Mountain
-[Video_Enhancements]
-MaxAnisotropy = 0
-[Video_Hacks]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 128
-[Core]
-MMU = 1
-BlockMerging = 1
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[EmuState]
-EmulationStateId = 4
-EmulationIssues = Use direct 3d 11 for less glitches. Slow, it needs mmu to not crash ingame(r7436).
-[OnFrame]
-[ActionReplay]
-[Gecko]
+# RQ6PKM - Cursed Mountain
+[Video_Enhancements]
+MaxAnisotropy = 0
+[Video_Hacks]
+[Video_Settings]
+[Core]
+BlockMerging = 1
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[EmuState]
+EmulationStateId = 4
+EmulationIssues = Use direct 3d 11 for less glitches.
+[OnFrame]
+[ActionReplay]
+[Gecko]
diff --git a/Data/User/GameConfig/RQ6XKM.ini b/Data/User/GameConfig/RQ6XKM.ini
index b8e03b8b37..896e14cbc5 100644
--- a/Data/User/GameConfig/RQ6XKM.ini
+++ b/Data/User/GameConfig/RQ6XKM.ini
@@ -1,23 +1,20 @@
-# RQ6XKM - Cursed Mountain
-[Video_Enhancements]
-MaxAnisotropy = 0
-[Video_Hacks]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 128
-[Core]
-MMU = 1
-BlockMerging = 1
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[EmuState]
-EmulationStateId = 4
-EmulationIssues = Use direct 3d 11 for less glitches. Slow, it needs mmu to not crash ingame(r7436).
-[OnFrame]
-[ActionReplay]
-[Gecko]
+# RQ6XKM - Cursed Mountain
+[Video_Enhancements]
+MaxAnisotropy = 0
+[Video_Hacks]
+[Video_Settings]
+[Core]
+BlockMerging = 1
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[EmuState]
+EmulationStateId = 4
+EmulationIssues = Use direct 3d 11 for less glitches.
+[OnFrame]
+[ActionReplay]
+[Gecko]
diff --git a/Data/User/GameConfig/RQREXJ.ini b/Data/User/GameConfig/RQREXJ.ini
index b3a8ed6f99..91a35e540d 100644
--- a/Data/User/GameConfig/RQREXJ.ini
+++ b/Data/User/GameConfig/RQREXJ.ini
@@ -1,22 +1,20 @@
-# RQREXJ - The Sky Crawlers
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 128
-[Video_Hacks]
-[Core]
-CPUThread = 0
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[EmuState]
-EmulationStateId = 4
-EmulationIssues = Needs single core to run properly(r7436).
-[OnFrame]
-[ActionReplay]
-[Gecko]
-[Wii]
-DisableWiimoteSpeaker = 1
+# RQREXJ - The Sky Crawlers
+[Video_Settings]
+[Video_Hacks]
+[Core]
+CPUThread = 0
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[EmuState]
+EmulationStateId = 4
+EmulationIssues = Needs single core to run properly(r7436).
+[OnFrame]
+[ActionReplay]
+[Gecko]
+[Wii]
+DisableWiimoteSpeaker = 1
diff --git a/Data/User/GameConfig/RQRJAF.ini b/Data/User/GameConfig/RQRJAF.ini
index 1a3d093110..c647c4acee 100644
--- a/Data/User/GameConfig/RQRJAF.ini
+++ b/Data/User/GameConfig/RQRJAF.ini
@@ -1,22 +1,20 @@
-# RQRJAF - The Sky Crawlers
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 128
-[Video_Hacks]
-[Core]
-CPUThread = 0
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[EmuState]
-EmulationStateId = 4
-EmulationIssues = Needs single core to run properly(r7436).
-[OnFrame]
-[ActionReplay]
-[Gecko]
-[Wii]
-DisableWiimoteSpeaker = 1
+# RQRJAF - The Sky Crawlers
+[Video_Settings]
+[Video_Hacks]
+[Core]
+CPUThread = 0
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[EmuState]
+EmulationStateId = 4
+EmulationIssues = Needs single core to run properly(r7436).
+[OnFrame]
+[ActionReplay]
+[Gecko]
+[Wii]
+DisableWiimoteSpeaker = 1
diff --git a/Data/User/GameConfig/RQRPAF.ini b/Data/User/GameConfig/RQRPAF.ini
index 58298f19e2..8052e6084b 100644
--- a/Data/User/GameConfig/RQRPAF.ini
+++ b/Data/User/GameConfig/RQRPAF.ini
@@ -1,22 +1,20 @@
-# RQRPAF - The Sky Crawlers
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 128
-[Video_Hacks]
-[Core]
-CPUThread = 0
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[EmuState]
-EmulationStateId = 4
-EmulationIssues = Needs single core to run properly(r7436).
-[OnFrame]
-[ActionReplay]
-[Gecko]
-[Wii]
-DisableWiimoteSpeaker = 1
+# RQRPAF - The Sky Crawlers
+[Video_Settings]
+[Video_Hacks]
+[Core]
+CPUThread = 0
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[EmuState]
+EmulationStateId = 4
+EmulationIssues = Needs single core to run properly(r7436).
+[OnFrame]
+[ActionReplay]
+[Gecko]
+[Wii]
+DisableWiimoteSpeaker = 1
diff --git a/Data/User/GameConfig/RRKE70.ini b/Data/User/GameConfig/RRKE70.ini
index f65ca62bdc..621b0dfd09 100644
--- a/Data/User/GameConfig/RRKE70.ini
+++ b/Data/User/GameConfig/RRKE70.ini
@@ -1,21 +1,20 @@
-# RRKE70 - Alone In The Dark
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[EmuState]
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame]
-[ActionReplay]
-[Gecko]
-[Video_Hacks]
-EFBEmulateFormatChanges = True
-[Wii]
-DisableWiimoteSpeaker = 1
+# RRKE70 - Alone In The Dark
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[EmuState]
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame]
+[ActionReplay]
+[Gecko]
+[Video_Hacks]
+EFBEmulateFormatChanges = True
+[Wii]
+DisableWiimoteSpeaker = 1
diff --git a/Data/User/GameConfig/RRKP70.ini b/Data/User/GameConfig/RRKP70.ini
index e87f2f60d3..c5fc07ede3 100644
--- a/Data/User/GameConfig/RRKP70.ini
+++ b/Data/User/GameConfig/RRKP70.ini
@@ -1,21 +1,20 @@
-# RRKP70 - Alone In The Dark
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[EmuState]
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame]
-[ActionReplay]
-[Gecko]
-[Video_Hacks]
-EFBEmulateFormatChanges = True
-[Wii]
-DisableWiimoteSpeaker = 1
+# RRKP70 - Alone In The Dark
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[EmuState]
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame]
+[ActionReplay]
+[Gecko]
+[Video_Hacks]
+EFBEmulateFormatChanges = True
+[Wii]
+DisableWiimoteSpeaker = 1
diff --git a/Data/User/GameConfig/RSFE7U.ini b/Data/User/GameConfig/RSFE7U.ini
index 54509721db..bf6e9e87c4 100644
--- a/Data/User/GameConfig/RSFE7U.ini
+++ b/Data/User/GameConfig/RSFE7U.ini
@@ -4,4 +4,14 @@
EmulationStateId = 5
EmulationIssues =
[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
\ No newline at end of file
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+EFBScale = 1
diff --git a/Data/User/GameConfig/RSFJ99.ini b/Data/User/GameConfig/RSFJ99.ini
new file mode 100644
index 0000000000..1113f6e7e9
--- /dev/null
+++ b/Data/User/GameConfig/RSFJ99.ini
@@ -0,0 +1,17 @@
+# RSFJ99 - Oboro Muramasa
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 5
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+EFBScale = 1
diff --git a/Data/User/GameConfig/RSFP99.ini b/Data/User/GameConfig/RSFP99.ini
index 6d5b39b234..ec07d38569 100644
--- a/Data/User/GameConfig/RSFP99.ini
+++ b/Data/User/GameConfig/RSFP99.ini
@@ -1,10 +1,17 @@
# RSFP99 - MURAMASA: THE DEMON BLADE
[Core] Values set here will override the main dolphin settings.
[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 0
+EmulationStateId = 5
EmulationIssues =
[OnFrame] Add memory patches to be applied every frame here.
[ActionReplay] Add action replay cheats here.
[Video]
ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
[Gecko]
+[Video_Settings]
+EFBScale = 1
diff --git a/Data/User/GameConfig/RSLEAF.ini b/Data/User/GameConfig/RSLEAF.ini
index ff0b93d089..82e10ca31b 100644
--- a/Data/User/GameConfig/RSLEAF.ini
+++ b/Data/User/GameConfig/RSLEAF.ini
@@ -1,17 +1,16 @@
-# RSLEAF - SOULCALIBUR Legends
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[EmuState]
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame]
-[ActionReplay]
-[Gecko]
+# RSLEAF - SOULCALIBUR Legends
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[EmuState]
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame]
+[ActionReplay]
+[Gecko]
diff --git a/Data/User/GameConfig/RSLJAF.ini b/Data/User/GameConfig/RSLJAF.ini
index cdaa23bae8..1a2b53b491 100644
--- a/Data/User/GameConfig/RSLJAF.ini
+++ b/Data/User/GameConfig/RSLJAF.ini
@@ -1,17 +1,16 @@
-# RSLJAF - SOULCALIBUR Legends
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[EmuState]
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame]
-[ActionReplay]
-[Gecko]
+# RSLJAF - SOULCALIBUR Legends
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[EmuState]
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame]
+[ActionReplay]
+[Gecko]
diff --git a/Data/User/GameConfig/RSLKAF.ini b/Data/User/GameConfig/RSLKAF.ini
index 190f5ba029..7e8324276c 100644
--- a/Data/User/GameConfig/RSLKAF.ini
+++ b/Data/User/GameConfig/RSLKAF.ini
@@ -1,17 +1,16 @@
-# RSLKAF - SOULCALIBUR Legends
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[EmuState]
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame]
-[ActionReplay]
-[Gecko]
+# RSLKAF - SOULCALIBUR Legends
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[EmuState]
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame]
+[ActionReplay]
+[Gecko]
diff --git a/Data/User/GameConfig/RSLPAF.ini b/Data/User/GameConfig/RSLPAF.ini
index faf79d36e3..2dc35e5dec 100644
--- a/Data/User/GameConfig/RSLPAF.ini
+++ b/Data/User/GameConfig/RSLPAF.ini
@@ -1,17 +1,16 @@
-# RSLPAF - SOULCALIBUR Legends
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[EmuState]
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame]
-[ActionReplay]
-[Gecko]
+# RSLPAF - SOULCALIBUR Legends
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[EmuState]
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame]
+[ActionReplay]
+[Gecko]
diff --git a/Data/User/GameConfig/RX3E01.ini b/Data/User/GameConfig/RX3E01.ini
index 39f17958fe..bda726f849 100644
--- a/Data/User/GameConfig/RX3E01.ini
+++ b/Data/User/GameConfig/RX3E01.ini
@@ -1,14 +1,13 @@
-# RX3E01 - ExciteBots
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = Tested with (r6521)
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-
+# RX3E01 - ExciteBots
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Tested with (r6521)
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+
diff --git a/Data/User/GameConfig/RZJD69.ini b/Data/User/GameConfig/RZJD69.ini
index 9a8825e038..671318fd38 100644
--- a/Data/User/GameConfig/RZJD69.ini
+++ b/Data/User/GameConfig/RZJD69.ini
@@ -1,22 +1,21 @@
-# RZJD69 - DeadSpace
-[Core] Values set here will override the main dolphin settings.
-TLBHack = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame] Add memory patches to be applied every frame here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[ActionReplay]
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Video_Enhancements]
-[Wii]
-DisableWiimoteSpeaker = 1
+# RZJD69 - DeadSpace
+[Core] Values set here will override the main dolphin settings.
+TLBHack = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[ActionReplay]
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video_Enhancements]
+[Wii]
+DisableWiimoteSpeaker = 1
diff --git a/Data/User/GameConfig/RZJE69.ini b/Data/User/GameConfig/RZJE69.ini
index b8902b2ff0..a37d3f9223 100644
--- a/Data/User/GameConfig/RZJE69.ini
+++ b/Data/User/GameConfig/RZJE69.ini
@@ -1,22 +1,21 @@
-# RZJE69 - DeadSpace
-[Core] Values set here will override the main dolphin settings.
-TLBHack = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame] Add memory patches to be applied every frame here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[ActionReplay]
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Video_Enhancements]
-[Wii]
-DisableWiimoteSpeaker = 1
+# RZJE69 - DeadSpace
+[Core] Values set here will override the main dolphin settings.
+TLBHack = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[ActionReplay]
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video_Enhancements]
+[Wii]
+DisableWiimoteSpeaker = 1
diff --git a/Data/User/GameConfig/RZJJ13.ini b/Data/User/GameConfig/RZJJ13.ini
index 79efb8b08c..d109d22a98 100644
--- a/Data/User/GameConfig/RZJJ13.ini
+++ b/Data/User/GameConfig/RZJJ13.ini
@@ -1,22 +1,21 @@
-# RZJJ13 - DeadSpace
-[Core] Values set here will override the main dolphin settings.
-TLBHack = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame] Add memory patches to be applied every frame here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[ActionReplay]
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Video_Enhancements]
-[Wii]
-DisableWiimoteSpeaker = 1
+# RZJJ13 - DeadSpace
+[Core] Values set here will override the main dolphin settings.
+TLBHack = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[ActionReplay]
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video_Enhancements]
+[Wii]
+DisableWiimoteSpeaker = 1
diff --git a/Data/User/GameConfig/RZJP69.ini b/Data/User/GameConfig/RZJP69.ini
index cef151134d..63b230b1da 100644
--- a/Data/User/GameConfig/RZJP69.ini
+++ b/Data/User/GameConfig/RZJP69.ini
@@ -1,37 +1,36 @@
-# RZJP69 - DeadSpace
-[Core] Values set here will override the main dolphin settings.
-TLBHack = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame] Add memory patches to be applied every frame here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[ActionReplay]
-[Gecko]
-$Unlock all Missions & Comics [TNTkryzt]
-077FB800 0000000C
-38C0000F 90DD0004
-4A83DE28 00000000
-0403962C 497C21D4
-$Have Max Weapon Level [TNTkryzt]
-0423BB0C 3B800004
-0423BB10 9B9E0028
-$Infinite Health [TNTkryzt]
-040DDA40 60000000
-$Infinite Ammo [TNTkryzt]
-0421AA54 3BC00000
-$Rapid Fire [TNTkryzt]
-0423A4DC 60000000
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Video_Enhancements]
-[Wii]
-DisableWiimoteSpeaker = 1
-
+# RZJP69 - DeadSpace
+[Core] Values set here will override the main dolphin settings.
+TLBHack = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[ActionReplay]
+[Gecko]
+$Unlock all Missions & Comics [TNTkryzt]
+077FB800 0000000C
+38C0000F 90DD0004
+4A83DE28 00000000
+0403962C 497C21D4
+$Have Max Weapon Level [TNTkryzt]
+0423BB0C 3B800004
+0423BB10 9B9E0028
+$Infinite Health [TNTkryzt]
+040DDA40 60000000
+$Infinite Ammo [TNTkryzt]
+0421AA54 3BC00000
+$Rapid Fire [TNTkryzt]
+0423A4DC 60000000
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video_Enhancements]
+[Wii]
+DisableWiimoteSpeaker = 1
+
diff --git a/Data/User/GameConfig/S2LE01.ini b/Data/User/GameConfig/S2LE01.ini
new file mode 100644
index 0000000000..980e8e4a8e
--- /dev/null
+++ b/Data/User/GameConfig/S2LE01.ini
@@ -0,0 +1,19 @@
+# S2LE01 - PokePark Wii2
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Needs EFB to Ram to display photographs.
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Hacks]
+EFBToTextureEnable = False
+EFBCopyEnable = True
+EFBCopyCacheEnable = True
diff --git a/Data/User/GameConfig/S2LJ01.ini b/Data/User/GameConfig/S2LJ01.ini
new file mode 100644
index 0000000000..9fd8978873
--- /dev/null
+++ b/Data/User/GameConfig/S2LJ01.ini
@@ -0,0 +1,19 @@
+# S2LJ01 - PokePark Wii2
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Needs EFB to Ram to display photographs.
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Hacks]
+EFBToTextureEnable = False
+EFBCopyEnable = True
+EFBCopyCacheEnable = True
diff --git a/Data/User/GameConfig/S2LP01.ini b/Data/User/GameConfig/S2LP01.ini
new file mode 100644
index 0000000000..da782c2d72
--- /dev/null
+++ b/Data/User/GameConfig/S2LP01.ini
@@ -0,0 +1,19 @@
+# S2LP01 - PokePark Wii2
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Needs EFB to Ram to display photographs.
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Hacks]
+EFBToTextureEnable = False
+EFBCopyEnable = True
+EFBCopyCacheEnable = True
diff --git a/Data/User/GameConfig/S2WE78.ini b/Data/User/GameConfig/S2WE78.ini
index 6c5eb28f80..d1925d21ea 100644
--- a/Data/User/GameConfig/S2WE78.ini
+++ b/Data/User/GameConfig/S2WE78.ini
@@ -1,19 +1,18 @@
-# S2WE78 - WWE All Stars
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Video_Enhancements]
-MaxAnisotropy = 0
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[EmuState]
-EmulationStateId = 4
-EmulationIssues = Use direct 3d 11 for less glitches(r7436)
-[OnFrame]
-[ActionReplay]
-[Gecko]
+# S2WE78 - WWE All Stars
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video_Enhancements]
+MaxAnisotropy = 0
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[EmuState]
+EmulationStateId = 4
+EmulationIssues = Use direct 3d 11 for less glitches(r7436)
+[OnFrame]
+[ActionReplay]
+[Gecko]
diff --git a/Data/User/GameConfig/S2WP78.ini b/Data/User/GameConfig/S2WP78.ini
index 12669e1c62..46b817972b 100644
--- a/Data/User/GameConfig/S2WP78.ini
+++ b/Data/User/GameConfig/S2WP78.ini
@@ -1,19 +1,18 @@
-# S2WP78 - WWE All Stars
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Video_Enhancements]
-MaxAnisotropy = 0
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[EmuState]
-EmulationStateId = 4
-EmulationIssues = Use direct 3d 11 for less glitches(r7436)
-[OnFrame]
-[ActionReplay]
-[Gecko]
+# S2WP78 - WWE All Stars
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video_Enhancements]
+MaxAnisotropy = 0
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[EmuState]
+EmulationStateId = 4
+EmulationIssues = Use direct 3d 11 for less glitches(r7436)
+[OnFrame]
+[ActionReplay]
+[Gecko]
diff --git a/Data/User/GameConfig/S3BEWR.ini b/Data/User/GameConfig/S3BEWR.ini
index b6bafb956c..c4f973fde7 100644
--- a/Data/User/GameConfig/S3BEWR.ini
+++ b/Data/User/GameConfig/S3BEWR.ini
@@ -1,19 +1,18 @@
-# S3BEWR - Batman: The Brave and the Bold
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 0
-[Video_Hacks]
-DlistCachingEnable = False
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[EmuState]
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame]
-[ActionReplay]
-[Gecko]
+# S3BEWR - Batman: The Brave and the Bold
+[Video_Settings]
+SafeTextureCacheColorSamples = 0
+[Video_Hacks]
+DlistCachingEnable = False
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[EmuState]
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame]
+[ActionReplay]
+[Gecko]
diff --git a/Data/User/GameConfig/S3BPWR.ini b/Data/User/GameConfig/S3BPWR.ini
index 2aa2b5049c..86dc70ed95 100644
--- a/Data/User/GameConfig/S3BPWR.ini
+++ b/Data/User/GameConfig/S3BPWR.ini
@@ -1,19 +1,18 @@
-# S3BPWR - Batman: The Brave and the Bold
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 0
-[Video_Hacks]
-DlistCachingEnable = False
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[EmuState]
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame]
-[ActionReplay]
-[Gecko]
+# S3BPWR - Batman: The Brave and the Bold
+[Video_Settings]
+SafeTextureCacheColorSamples = 0
+[Video_Hacks]
+DlistCachingEnable = False
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[EmuState]
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame]
+[ActionReplay]
+[Gecko]
diff --git a/Data/User/GameConfig/S59E01.ini b/Data/User/GameConfig/S59E01.ini
index adac044e0c..73b6e64169 100644
--- a/Data/User/GameConfig/S59E01.ini
+++ b/Data/User/GameConfig/S59E01.ini
@@ -1,12 +1,12 @@
-# S59E01 - SAMURAI WARRIORS 3
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues =
-EmulationStateId = 5
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
+# S59E01 - SAMURAI WARRIORS 3
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationIssues =
+EmulationStateId = 5
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/S59JC8.ini b/Data/User/GameConfig/S59JC8.ini
index a35db392e7..37de385c3f 100644
--- a/Data/User/GameConfig/S59JC8.ini
+++ b/Data/User/GameConfig/S59JC8.ini
@@ -1,12 +1,12 @@
-# S59JC8 - Sengoku Musou 3
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues =
-EmulationStateId = 5
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
+# S59JC8 - Sengoku Musou 3
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationIssues =
+EmulationStateId = 5
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/S59P01.ini b/Data/User/GameConfig/S59P01.ini
index f903683190..4ad52ec863 100644
--- a/Data/User/GameConfig/S59P01.ini
+++ b/Data/User/GameConfig/S59P01.ini
@@ -1,13 +1,12 @@
-# S59P01 - SAMURAI WARRIORS 3
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues =
-EmulationStateId = 5
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
+# S59P01 - SAMURAI WARRIORS 3
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationIssues =
+EmulationStateId = 5
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/S75E69.ini b/Data/User/GameConfig/S75E69.ini
index c831a31231..77dde099c5 100644
--- a/Data/User/GameConfig/S75E69.ini
+++ b/Data/User/GameConfig/S75E69.ini
@@ -1,20 +1,19 @@
-# S75E69 - Monopoly Streets
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues = Skip any errors at startup and use integral efb scale (r6682)
-EmulationStateId = 4
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-EFBScale = 1
-SafeTextureCacheColorSamples = 512
-
+# S75E69 - Monopoly Streets
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationIssues = Skip any errors at startup and use integral efb scale (r6682)
+EmulationStateId = 4
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+EFBScale = 1
+SafeTextureCacheColorSamples = 512
+
diff --git a/Data/User/GameConfig/S75P69.ini b/Data/User/GameConfig/S75P69.ini
index 6da8aa338c..00225d65fe 100644
--- a/Data/User/GameConfig/S75P69.ini
+++ b/Data/User/GameConfig/S75P69.ini
@@ -1,18 +1,17 @@
-# S75P69 - Monopoly Streets
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues = Skip any errors at startup and use integral efb scale (r6682)
-EmulationStateId = 4
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-EFBScale = 1
+# S75P69 - Monopoly Streets
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationIssues = Skip any errors at startup and use integral efb scale (r6682)
+EmulationStateId = 4
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+EFBScale = 1
diff --git a/Data/User/GameConfig/SAKENS.ini b/Data/User/GameConfig/SAKENS.ini
index f8c4f52479..bddd3cfbba 100644
--- a/Data/User/GameConfig/SAKENS.ini
+++ b/Data/User/GameConfig/SAKENS.ini
@@ -1,14 +1,13 @@
-# SAKENS - Sakura Wars: So Long, My Love
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 5
-EmulationIssues =
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-
+# SAKENS - Sakura Wars: So Long, My Love
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 5
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+
diff --git a/Data/User/GameConfig/SAKPNS.ini b/Data/User/GameConfig/SAKPNS.ini
index e702bc182f..d11f408fd8 100644
--- a/Data/User/GameConfig/SAKPNS.ini
+++ b/Data/User/GameConfig/SAKPNS.ini
@@ -1,12 +1,12 @@
-# SAKPNS - Sakura Wars: So Long, My Love
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 5
-EmulationIssues =
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
+# SAKPNS - Sakura Wars: So Long, My Love
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 5
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/SBDE08.ini b/Data/User/GameConfig/SBDE08.ini
index ca64242918..7f48f14214 100644
--- a/Data/User/GameConfig/SBDE08.ini
+++ b/Data/User/GameConfig/SBDE08.ini
@@ -1,18 +1,17 @@
-# SBDE08 - RESIDENT EVIL THE DARKSIDE CHRONICLES
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues =
-EmulationStateId = 4
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 1
-PH_SZNear = 0
-PH_SZFar = 1
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar = 0.5
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
+# SBDE08 - RESIDENT EVIL THE DARKSIDE CHRONICLES
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationIssues =
+EmulationStateId = 4
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 1
+PH_SZNear = 0
+PH_SZFar = 1
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar = 0.5
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/SBDJ08.ini b/Data/User/GameConfig/SBDJ08.ini
index a281b91c1a..51274d0218 100644
--- a/Data/User/GameConfig/SBDJ08.ini
+++ b/Data/User/GameConfig/SBDJ08.ini
@@ -1,17 +1,17 @@
-# SBDJ08 - RESIDENT EVIL THE DARKSIDE CHRONICLES
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues =
-EmulationStateId = 4
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 1
-PH_SZNear = 0
-PH_SZFar = 1
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar = 0.5
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
+# SBDJ08 - RESIDENT EVIL THE DARKSIDE CHRONICLES
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationIssues =
+EmulationStateId = 4
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 1
+PH_SZNear = 0
+PH_SZFar = 1
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar = 0.5
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/SBDK08.ini b/Data/User/GameConfig/SBDK08.ini
index d3166632f1..5fef940181 100644
--- a/Data/User/GameConfig/SBDK08.ini
+++ b/Data/User/GameConfig/SBDK08.ini
@@ -1,17 +1,17 @@
-# SBDK08 - RESIDENT EVIL THE DARKSIDE CHRONICLES
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues =
-EmulationStateId = 4
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 1
-PH_SZNear = 0
-PH_SZFar = 1
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar = 0.5
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
+# SBDK08 - RESIDENT EVIL THE DARKSIDE CHRONICLES
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationIssues =
+EmulationStateId = 4
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 1
+PH_SZNear = 0
+PH_SZFar = 1
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar = 0.5
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/SBDP08.ini b/Data/User/GameConfig/SBDP08.ini
index 529c32a43a..f50da37cba 100644
--- a/Data/User/GameConfig/SBDP08.ini
+++ b/Data/User/GameConfig/SBDP08.ini
@@ -1,17 +1,17 @@
-# SBDP08 - RESIDENT EVIL THE DARKSIDE CHRONICLES
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues =
-EmulationStateId = 4
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 1
-PH_SZNear = 0
-PH_SZFar = 1
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar = 0.5
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
+# SBDP08 - RESIDENT EVIL THE DARKSIDE CHRONICLES
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationIssues =
+EmulationStateId = 4
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 1
+PH_SZNear = 0
+PH_SZFar = 1
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar = 0.5
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/SC8E01.ini b/Data/User/GameConfig/SC8E01.ini
new file mode 100644
index 0000000000..639f962a6c
--- /dev/null
+++ b/Data/User/GameConfig/SC8E01.ini
@@ -0,0 +1,15 @@
+# SC8E01 - Wii Play: Motion
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Needs real wiimote and motion plus.
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
diff --git a/Data/User/GameConfig/SC8J01.ini b/Data/User/GameConfig/SC8J01.ini
new file mode 100644
index 0000000000..cc78b5632f
--- /dev/null
+++ b/Data/User/GameConfig/SC8J01.ini
@@ -0,0 +1,15 @@
+# SC8J01 - Wii Play: Motion
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Needs real wiimote and motion plus.
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
diff --git a/Data/User/GameConfig/SC8P01.ini b/Data/User/GameConfig/SC8P01.ini
new file mode 100644
index 0000000000..bbc6c1f1b4
--- /dev/null
+++ b/Data/User/GameConfig/SC8P01.ini
@@ -0,0 +1,15 @@
+# SC8P01 - Wii Play: Motion
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Needs real wiimote and motion plus.
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
diff --git a/Data/User/GameConfig/SCAE18.ini b/Data/User/GameConfig/SCAE18.ini
index 6a41856208..25bb57ce82 100644
--- a/Data/User/GameConfig/SCAE18.ini
+++ b/Data/User/GameConfig/SCAE18.ini
@@ -1,19 +1,18 @@
-# SCAE18 - CALLING
-[Video_Hacks]
-EFBEmulateFormatChanges = True
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[EmuState]
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame]
-[ActionReplay]
-[Gecko]
+# SCAE18 - CALLING
+[Video_Hacks]
+EFBEmulateFormatChanges = True
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[EmuState]
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame]
+[ActionReplay]
+[Gecko]
diff --git a/Data/User/GameConfig/SCAJ18.ini b/Data/User/GameConfig/SCAJ18.ini
index 7ba36f6af5..2821509834 100644
--- a/Data/User/GameConfig/SCAJ18.ini
+++ b/Data/User/GameConfig/SCAJ18.ini
@@ -1,19 +1,18 @@
-# SCAJ18 - CALLING Kuroki Chakushin
-[Video_Hacks]
-EFBEmulateFormatChanges = True
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[EmuState]
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame]
-[ActionReplay]
-[Gecko]
+# SCAJ18 - CALLING Kuroki Chakushin
+[Video_Hacks]
+EFBEmulateFormatChanges = True
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[EmuState]
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame]
+[ActionReplay]
+[Gecko]
diff --git a/Data/User/GameConfig/SCAP18.ini b/Data/User/GameConfig/SCAP18.ini
index 6fec8cd117..1b03dcc435 100644
--- a/Data/User/GameConfig/SCAP18.ini
+++ b/Data/User/GameConfig/SCAP18.ini
@@ -1,19 +1,18 @@
-# SCAP18 - CALLING
-[Video_Hacks]
-EFBEmulateFormatChanges = True
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[EmuState]
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame]
-[ActionReplay]
-[Gecko]
+# SCAP18 - CALLING
+[Video_Hacks]
+EFBEmulateFormatChanges = True
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[EmuState]
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame]
+[ActionReplay]
+[Gecko]
diff --git a/Data/User/GameConfig/SD2E41.ini b/Data/User/GameConfig/SD2E41.ini
index e5b2d686c7..179c13afb9 100644
--- a/Data/User/GameConfig/SD2E41.ini
+++ b/Data/User/GameConfig/SD2E41.ini
@@ -1,21 +1,20 @@
-# SD2E41 - Just Dance 2
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Video_Enhancements]
-MaxAnisotropy = 0
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[EmuState]
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame]
-[ActionReplay]
-[Gecko]
-[Wii]
-DisableWiimoteSpeaker = 1
+# SD2E41 - Just Dance 2
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video_Enhancements]
+MaxAnisotropy = 0
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[EmuState]
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame]
+[ActionReplay]
+[Gecko]
+[Wii]
+DisableWiimoteSpeaker = 1
diff --git a/Data/User/GameConfig/SD2J01.ini b/Data/User/GameConfig/SD2J01.ini
index 00fc5f9ed9..f29168a46c 100644
--- a/Data/User/GameConfig/SD2J01.ini
+++ b/Data/User/GameConfig/SD2J01.ini
@@ -1,21 +1,20 @@
-# SD2J01 - Just Dance 2
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Video_Enhancements]
-MaxAnisotropy = 0
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[EmuState]
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame]
-[ActionReplay]
-[Gecko]
-[Wii]
-DisableWiimoteSpeaker = 1
+# SD2J01 - Just Dance 2
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video_Enhancements]
+MaxAnisotropy = 0
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[EmuState]
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame]
+[ActionReplay]
+[Gecko]
+[Wii]
+DisableWiimoteSpeaker = 1
diff --git a/Data/User/GameConfig/SD2P41.ini b/Data/User/GameConfig/SD2P41.ini
index e8d047a675..744a354aaf 100644
--- a/Data/User/GameConfig/SD2P41.ini
+++ b/Data/User/GameConfig/SD2P41.ini
@@ -1,21 +1,20 @@
-# SD2P41 - Just Dance 2
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Video_Enhancements]
-MaxAnisotropy = 0
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[EmuState]
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame]
-[ActionReplay]
-[Gecko]
-[Wii]
-DisableWiimoteSpeaker = 1
+# SD2P41 - Just Dance 2
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video_Enhancements]
+MaxAnisotropy = 0
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[EmuState]
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame]
+[ActionReplay]
+[Gecko]
+[Wii]
+DisableWiimoteSpeaker = 1
diff --git a/Data/User/GameConfig/SD2Y41.ini b/Data/User/GameConfig/SD2Y41.ini
index d3c1bfb3ed..9daa079aac 100644
--- a/Data/User/GameConfig/SD2Y41.ini
+++ b/Data/User/GameConfig/SD2Y41.ini
@@ -1,21 +1,20 @@
-# SD2Y41 - Just Dance 2
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Video_Enhancements]
-MaxAnisotropy = 0
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[EmuState]
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame]
-[ActionReplay]
-[Gecko]
-[Wii]
-DisableWiimoteSpeaker = 1
+# SD2Y41 - Just Dance 2
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video_Enhancements]
+MaxAnisotropy = 0
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[EmuState]
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame]
+[ActionReplay]
+[Gecko]
+[Wii]
+DisableWiimoteSpeaker = 1
diff --git a/Data/User/GameConfig/SE2P69.ini b/Data/User/GameConfig/SE2P69.ini
index 54a3f18e16..de20f01001 100644
--- a/Data/User/GameConfig/SE2P69.ini
+++ b/Data/User/GameConfig/SE2P69.ini
@@ -1,14 +1,14 @@
-# SE2P69 - EA Sports Active 2
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 0
-EmulationIssues =
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-[Video_Enhancements]
-ForceFiltering = False
+# SE2P69 - EA Sports Active 2
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 0
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video_Enhancements]
+ForceFiltering = False
diff --git a/Data/User/GameConfig/SEAE69.ini b/Data/User/GameConfig/SEAE69.ini
index 67836c884d..892cb837ea 100644
--- a/Data/User/GameConfig/SEAE69.ini
+++ b/Data/User/GameConfig/SEAE69.ini
@@ -1,14 +1,14 @@
-# SEAE69 - EA Sports Active: More Workouts
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 0
-EmulationIssues =
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-[Video_Enhancements]
-ForceFiltering = False
+# SEAE69 - EA Sports Active: More Workouts
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 0
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video_Enhancements]
+ForceFiltering = False
diff --git a/Data/User/GameConfig/SEAJ13.ini b/Data/User/GameConfig/SEAJ13.ini
index caa68320ca..f3fadeb798 100644
--- a/Data/User/GameConfig/SEAJ13.ini
+++ b/Data/User/GameConfig/SEAJ13.ini
@@ -1,14 +1,14 @@
-# SEAJ13 - EA Sports Active: More Workouts
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 0
-EmulationIssues =
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-[Video_Enhancements]
-ForceFiltering = False
+# SEAJ13 - EA Sports Active: More Workouts
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 0
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video_Enhancements]
+ForceFiltering = False
diff --git a/Data/User/GameConfig/SEAP69.ini b/Data/User/GameConfig/SEAP69.ini
index 1310ccc94f..7e61ff997a 100644
--- a/Data/User/GameConfig/SEAP69.ini
+++ b/Data/User/GameConfig/SEAP69.ini
@@ -1,14 +1,14 @@
-# SEAP69 - EA Sports Active: More Workouts
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 0
-EmulationIssues =
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-[Video_Enhancements]
-ForceFiltering = False
+# SEAP69 - EA Sports Active: More Workouts
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 0
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video_Enhancements]
+ForceFiltering = False
diff --git a/Data/User/GameConfig/SEME4Q.ini b/Data/User/GameConfig/SEME4Q.ini
index 0dc0d03acc..9b246a03d9 100644
--- a/Data/User/GameConfig/SEME4Q.ini
+++ b/Data/User/GameConfig/SEME4Q.ini
@@ -1,25 +1,24 @@
-# SEME4Q - Disney Epic Mickey
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 0
-[Video_Enhancements]
-ForceFiltering = False
-[Video_Hacks]
-DlistCachingEnable = False
-[Wii]
-DisableWiimoteSpeaker = 1
-
+# SEME4Q - Disney Epic Mickey
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 0
+[Video_Enhancements]
+ForceFiltering = False
+[Video_Hacks]
+DlistCachingEnable = False
+[Wii]
+DisableWiimoteSpeaker = 1
+
diff --git a/Data/User/GameConfig/SEMP4Q.ini b/Data/User/GameConfig/SEMP4Q.ini
index 4703a7848d..1bb265c49c 100644
--- a/Data/User/GameConfig/SEMP4Q.ini
+++ b/Data/User/GameConfig/SEMP4Q.ini
@@ -1,24 +1,23 @@
-# SEMP4Q - Disney Epic Mickey
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 0
-[Video_Enhancements]
-ForceFiltering = False
-[Video_Hacks]
-DlistCachingEnable = False
-[Wii]
-DisableWiimoteSpeaker = 1
+# SEMP4Q - Disney Epic Mickey
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 0
+[Video_Enhancements]
+ForceFiltering = False
+[Video_Hacks]
+DlistCachingEnable = False
+[Wii]
+DisableWiimoteSpeaker = 1
diff --git a/Data/User/GameConfig/SEMX4Q.ini b/Data/User/GameConfig/SEMX4Q.ini
index 46246b3ca1..09597ac5fa 100644
--- a/Data/User/GameConfig/SEMX4Q.ini
+++ b/Data/User/GameConfig/SEMX4Q.ini
@@ -1,24 +1,23 @@
-# SEMX4Q - Disney Epic Mickey
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 0
-[Video_Enhancements]
-ForceFiltering = False
-[Video_Hacks]
-DlistCachingEnable = False
-[Wii]
-DisableWiimoteSpeaker = 1
+# SEMX4Q - Disney Epic Mickey
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 0
+[Video_Enhancements]
+ForceFiltering = False
+[Video_Hacks]
+DlistCachingEnable = False
+[Wii]
+DisableWiimoteSpeaker = 1
diff --git a/Data/User/GameConfig/SF8E01.ini b/Data/User/GameConfig/SF8E01.ini
index 7be1be3c3f..e8e185cda9 100644
--- a/Data/User/GameConfig/SF8E01.ini
+++ b/Data/User/GameConfig/SF8E01.ini
@@ -1,21 +1,20 @@
-# SF8E01 - Donkey Kong Country Returns
-[Core] Values set here will override the main dolphin settings.
-BlockMerging = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = Use LLE audio to fix sound issues (r7482)
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Wii]
-DisableWiimoteSpeaker = 1
+# SF8E01 - Donkey Kong Country Returns
+[Core] Values set here will override the main dolphin settings.
+BlockMerging = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Use LLE audio to fix sound issues (r7482)
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Wii]
+DisableWiimoteSpeaker = 1
diff --git a/Data/User/GameConfig/SF8J01.ini b/Data/User/GameConfig/SF8J01.ini
index a7a58eab98..bc0b0c2ba5 100644
--- a/Data/User/GameConfig/SF8J01.ini
+++ b/Data/User/GameConfig/SF8J01.ini
@@ -1,21 +1,20 @@
-# SF8J01 - Donkey Kong Country Returns
-[Core] Values set here will override the main dolphin settings.
-BlockMerging = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = Use LLE audio to fix sound issues (r7482)
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Wii]
-DisableWiimoteSpeaker = 1
+# SF8J01 - Donkey Kong Country Returns
+[Core] Values set here will override the main dolphin settings.
+BlockMerging = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Use LLE audio to fix sound issues (r7482)
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Wii]
+DisableWiimoteSpeaker = 1
diff --git a/Data/User/GameConfig/SF8P01.ini b/Data/User/GameConfig/SF8P01.ini
index 642c534cb1..41a5957888 100644
--- a/Data/User/GameConfig/SF8P01.ini
+++ b/Data/User/GameConfig/SF8P01.ini
@@ -1,21 +1,20 @@
-# SF8P01 - Donkey Kong Country Returns
-[Core] Values set here will override the main dolphin settings.
-BlockMerging = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = Use LLE audio to fix sound issues (r7482)
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Wii]
-DisableWiimoteSpeaker = 1
+# SF8P01 - Donkey Kong Country Returns
+[Core] Values set here will override the main dolphin settings.
+BlockMerging = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Use LLE audio to fix sound issues (r7482)
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Wii]
+DisableWiimoteSpeaker = 1
diff --git a/Data/User/GameConfig/SFIE01.ini b/Data/User/GameConfig/SFIE01.ini
index 6fe71784be..867859d8c4 100644
--- a/Data/User/GameConfig/SFIE01.ini
+++ b/Data/User/GameConfig/SFIE01.ini
@@ -1,22 +1,21 @@
-# SFIE01 - Mystery Case Files: The Malgrave Incident
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = Needs real xfb for videos to show up.
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Wii]
-DisableWiimoteSpeaker = 1
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-UseXFB = True
-UseRealXFB = True
+# SFIE01 - Mystery Case Files: The Malgrave Incident
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Needs real xfb for videos to show up.
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Wii]
+DisableWiimoteSpeaker = 1
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+UseXFB = True
+UseRealXFB = True
diff --git a/Data/User/GameConfig/SFIP01.ini b/Data/User/GameConfig/SFIP01.ini
index d655f59141..8a198d4fe8 100644
--- a/Data/User/GameConfig/SFIP01.ini
+++ b/Data/User/GameConfig/SFIP01.ini
@@ -1,22 +1,21 @@
-# SFIP01 - Mystery Case Files: The Malgrave Incident
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = Needs real xfb for videos to show up.
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Wii]
-DisableWiimoteSpeaker = 1
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-UseXFB = True
-UseRealXFB = True
+# SFIP01 - Mystery Case Files: The Malgrave Incident
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Needs real xfb for videos to show up.
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Wii]
+DisableWiimoteSpeaker = 1
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+UseXFB = True
+UseRealXFB = True
diff --git a/Data/User/GameConfig/SFWP69.ini b/Data/User/GameConfig/SFWP69.ini
index 40eaf1269d..e82ff183a5 100644
--- a/Data/User/GameConfig/SFWP69.ini
+++ b/Data/User/GameConfig/SFWP69.ini
@@ -1,11 +1,11 @@
-# SFWP69 - World Cup 2010
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = Lacks HLE Sound
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
+# SFWP69 - World Cup 2010
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Lacks HLE Sound
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/SHLPA4.ini b/Data/User/GameConfig/SHLPA4.ini
index 51f30f04aa..ce64ff21e1 100644
--- a/Data/User/GameConfig/SHLPA4.ini
+++ b/Data/User/GameConfig/SHLPA4.ini
@@ -1,20 +1,19 @@
-# SHLPA4 - Silent Hill: Shattered Memories
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = Flashlight glitches (r6521)
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Wii]
-DisableWiimoteSpeaker = 1
+# SHLPA4 - Silent Hill: Shattered Memories
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Flashlight glitches (r6521)
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Wii]
+DisableWiimoteSpeaker = 1
diff --git a/Data/User/GameConfig/SILE78.ini b/Data/User/GameConfig/SILE78.ini
index f399598cb6..7a7de8fcee 100644
--- a/Data/User/GameConfig/SILE78.ini
+++ b/Data/User/GameConfig/SILE78.ini
@@ -1,21 +1,20 @@
-# SILE78 - Worms Battle Islands
-[Core] Values set here will override the main dolphin settings.
-TLBHack = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Hardware]
-VSync = False
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
+# SILE78 - Worms Battle Islands
+[Core] Values set here will override the main dolphin settings.
+TLBHack = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Hardware]
+VSync = False
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/SILP78.ini b/Data/User/GameConfig/SILP78.ini
index dfd8bf299c..3be5d8870f 100644
--- a/Data/User/GameConfig/SILP78.ini
+++ b/Data/User/GameConfig/SILP78.ini
@@ -1,21 +1,20 @@
-# SILP78 - Worms Battle Islands
-[Core] Values set here will override the main dolphin settings.
-TLBHack = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Hardware]
-VSync = False
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
+# SILP78 - Worms Battle Islands
+[Core] Values set here will override the main dolphin settings.
+TLBHack = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Hardware]
+VSync = False
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/SK3EEB.ini b/Data/User/GameConfig/SK3EEB.ini
index ba164a7ffd..076608a2ab 100644
--- a/Data/User/GameConfig/SK3EEB.ini
+++ b/Data/User/GameConfig/SK3EEB.ini
@@ -1,20 +1,19 @@
-# SK3EEB - TRAUMA TEAM
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 5
-EmulationIssues =
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Video_Enhancements]
-
+# SK3EEB - TRAUMA TEAM
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 5
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video_Enhancements]
+
diff --git a/Data/User/GameConfig/SKJE78.ini b/Data/User/GameConfig/SKJE78.ini
index 195d68138e..bb4fb7cf66 100644
--- a/Data/User/GameConfig/SKJE78.ini
+++ b/Data/User/GameConfig/SKJE78.ini
@@ -1,19 +1,18 @@
-# SKJE78 - You Don't Know Jack
-[Video_Settings]
-UseXFB = True
-UseRealXFB = False
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 0
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[EmuState]
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame]
-[ActionReplay]
-[Gecko]
+# SKJE78 - You Don't Know Jack
+[Video_Settings]
+UseXFB = True
+UseRealXFB = False
+SafeTextureCacheColorSamples = 0
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[EmuState]
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame]
+[ActionReplay]
+[Gecko]
diff --git a/Data/User/GameConfig/SLSJ01.ini b/Data/User/GameConfig/SLSJ01.ini
new file mode 100644
index 0000000000..214f4735bd
--- /dev/null
+++ b/Data/User/GameConfig/SLSJ01.ini
@@ -0,0 +1,19 @@
+# SLSJ01 - THE LAST STORY
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Hacks]
+EFBToTextureEnable = False
+EFBCopyEnable = True
+EFBCopyCacheEnable = True
diff --git a/Data/User/GameConfig/SLSP01.ini b/Data/User/GameConfig/SLSP01.ini
new file mode 100644
index 0000000000..9f8c30c9e5
--- /dev/null
+++ b/Data/User/GameConfig/SLSP01.ini
@@ -0,0 +1,19 @@
+# SLSP01 - THE LAST STORY
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Hacks]
+EFBToTextureEnable = False
+EFBCopyEnable = True
+EFBCopyCacheEnable = True
diff --git a/Data/User/GameConfig/SMFE4Q.ini b/Data/User/GameConfig/SMFE4Q.ini
index b0d08ae051..0d6616b54c 100644
--- a/Data/User/GameConfig/SMFE4Q.ini
+++ b/Data/User/GameConfig/SMFE4Q.ini
@@ -1,22 +1,21 @@
-# SMFE4Q - Phineas and Ferb Across the 2nd Dimension
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 0
-UseXFB = True
-UseRealXFB = False
-[Video_Hacks]
-EFBEmulateFormatChanges = False
+# SMFE4Q - Phineas and Ferb Across the 2nd Dimension
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 0
+UseXFB = True
+UseRealXFB = False
+[Video_Hacks]
+EFBEmulateFormatChanges = False
diff --git a/Data/User/GameConfig/SMFP4Q.ini b/Data/User/GameConfig/SMFP4Q.ini
index ee1358c1c8..f6140b9c24 100644
--- a/Data/User/GameConfig/SMFP4Q.ini
+++ b/Data/User/GameConfig/SMFP4Q.ini
@@ -1,22 +1,21 @@
-# SMFP4Q - Phineas and Ferb Across the 2nd Dimension
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 0
-UseXFB = True
-UseRealXFB = False
-[Video_Hacks]
-EFBEmulateFormatChanges = False
+# SMFP4Q - Phineas and Ferb Across the 2nd Dimension
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 0
+UseXFB = True
+UseRealXFB = False
+[Video_Hacks]
+EFBEmulateFormatChanges = False
diff --git a/Data/User/GameConfig/SMNE01.ini b/Data/User/GameConfig/SMNE01.ini
index 9cda92dadd..6c37fc88b3 100644
--- a/Data/User/GameConfig/SMNE01.ini
+++ b/Data/User/GameConfig/SMNE01.ini
@@ -1,43 +1,43 @@
-# SMNE01 - New SUPER MARIO BROS. Wii
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues = Enable EFB to RAM for the coins to spin (it will cause a big slowdown).
-EmulationStateId = 4
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-$Infinite Lives
-00354E93 00000063
-015478EF 00000063
-$Infinite Mushrooms
-00C7FE69 00000063
-015DBB77 00000063
-$Infinite Fire Flowers
-00C7FE6A 00000063
-015DBB7B 00000063
-$Infinite Flying Suits
-00C7FE6B 00000063
-015DBB7F 00000063
-$Infinite Ice Flowers
-00C7FE6C 00000063
-015DBB83 00000063
-$Infinite Penguin Suits
-00C7FE6D 00000063
-015DBB87 00000063
-$Infinite Mini Mushrooms
-00C7FE6E 00000063
-015DBB8B 00000063
-$Infinite Stars
-00C7FE6F 00000063
-015DBB8F 00000063
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-[Video_Hacks]
-DlistCachingEnable = False
+# SMNE01 - New SUPER MARIO BROS. Wii
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationIssues = Enable EFB to RAM for the coins to spin (it will cause a big slowdown).
+EmulationStateId = 4
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+$Infinite Lives
+00354E93 00000063
+015478EF 00000063
+$Infinite Mushrooms
+00C7FE69 00000063
+015DBB77 00000063
+$Infinite Fire Flowers
+00C7FE6A 00000063
+015DBB7B 00000063
+$Infinite Flying Suits
+00C7FE6B 00000063
+015DBB7F 00000063
+$Infinite Ice Flowers
+00C7FE6C 00000063
+015DBB83 00000063
+$Infinite Penguin Suits
+00C7FE6D 00000063
+015DBB87 00000063
+$Infinite Mini Mushrooms
+00C7FE6E 00000063
+015DBB8B 00000063
+$Infinite Stars
+00C7FE6F 00000063
+015DBB8F 00000063
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video_Hacks]
+DlistCachingEnable = False
diff --git a/Data/User/GameConfig/SMNJ01.ini b/Data/User/GameConfig/SMNJ01.ini
index 7f1cfb06bf..6f17ef78ca 100644
--- a/Data/User/GameConfig/SMNJ01.ini
+++ b/Data/User/GameConfig/SMNJ01.ini
@@ -1,19 +1,19 @@
-# SMNJ01 - New SUPER MARIO BROS. Wii
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues = Enable EFB to RAM for the coins to spin (it will cause a big slowdown).
-EmulationStateId = 4
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-[Video_Hacks]
-DlistCachingEnable = False
+# SMNJ01 - New SUPER MARIO BROS. Wii
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationIssues = Enable EFB to RAM for the coins to spin (it will cause a big slowdown).
+EmulationStateId = 4
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video_Hacks]
+DlistCachingEnable = False
diff --git a/Data/User/GameConfig/SMNK01.ini b/Data/User/GameConfig/SMNK01.ini
index 30238bcbd4..315e58741b 100644
--- a/Data/User/GameConfig/SMNK01.ini
+++ b/Data/User/GameConfig/SMNK01.ini
@@ -1,19 +1,19 @@
-# SMNK01 - New SUPER MARIO BROS. Wii
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues = Enable EFB to RAM for the coins to spin (it will cause a big slowdown).
-EmulationStateId = 4
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-[Video_Hacks]
-DlistCachingEnable = False
+# SMNK01 - New SUPER MARIO BROS. Wii
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationIssues = Enable EFB to RAM for the coins to spin (it will cause a big slowdown).
+EmulationStateId = 4
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video_Hacks]
+DlistCachingEnable = False
diff --git a/Data/User/GameConfig/SMNP01.ini b/Data/User/GameConfig/SMNP01.ini
index 06240e2c36..6dea0d0bfe 100644
--- a/Data/User/GameConfig/SMNP01.ini
+++ b/Data/User/GameConfig/SMNP01.ini
@@ -1,29 +1,28 @@
-# SMNP01 - New SUPER MARIO BROS. Wii
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues = Enable EFB to RAM for the coins to spin (it will cause a big slowdown).
-EmulationStateId = 4
-[OnFrame] Add memory patches to be applied every frame here.
-+$Speed hack
-0x801D5B10:dword:0x60000000
-0x801D5B14:dword:0x60000000
-[ActionReplay] Add action replay cheats here.
-$98 lives (Mario, keep hat)
-04355190 00000062
-$99 lives (Mario, no hat)
-04355190 00000062
-$Freeze timer
-040E3AB8 3C0001F4
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Video_Hacks]
-DlistCachingEnable = False
+# SMNP01 - New SUPER MARIO BROS. Wii
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationIssues = Enable EFB to RAM for the coins to spin (it will cause a big slowdown).
+EmulationStateId = 4
+[OnFrame] Add memory patches to be applied every frame here.
++$Speed hack
+0x801D5B10:dword:0x60000000
+0x801D5B14:dword:0x60000000
+[ActionReplay] Add action replay cheats here.
+$98 lives (Mario, keep hat)
+04355190 00000062
+$99 lives (Mario, no hat)
+04355190 00000062
+$Freeze timer
+040E3AB8 3C0001F4
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video_Hacks]
+DlistCachingEnable = False
diff --git a/Data/User/GameConfig/SMNW01.ini b/Data/User/GameConfig/SMNW01.ini
index 0c6dfc2f57..3f2fcdda15 100644
--- a/Data/User/GameConfig/SMNW01.ini
+++ b/Data/User/GameConfig/SMNW01.ini
@@ -1,19 +1,19 @@
-# SMNW01 - New SUPER MARIO BROS. Wii
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues = Enable EFB to RAM for the coins to spin (it will cause a big slowdown).
-EmulationStateId = 4
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-[Video_Hacks]
-DlistCachingEnable = False
+# SMNW01 - New SUPER MARIO BROS. Wii
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationIssues = Enable EFB to RAM for the coins to spin (it will cause a big slowdown).
+EmulationStateId = 4
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video_Hacks]
+DlistCachingEnable = False
diff --git a/Data/User/GameConfig/SNDE20.ini b/Data/User/GameConfig/SNDE20.ini
new file mode 100644
index 0000000000..012a3b2ceb
--- /dev/null
+++ b/Data/User/GameConfig/SNDE20.ini
@@ -0,0 +1,17 @@
+# SNDE20 - Deal or No Deal
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/SNJE69.ini b/Data/User/GameConfig/SNJE69.ini
index fdc2b28e7f..b3b7720c46 100644
--- a/Data/User/GameConfig/SNJE69.ini
+++ b/Data/User/GameConfig/SNJE69.ini
@@ -1,36 +1,35 @@
-# SNJE69 - NBA JAM
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues = Initial slowdowns, no commentary & other sound issues that LLE plugin can fix (r6598)
-EmulationStateId = 4
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-$Score 999-000 ( 1 and B Button ) [ZiT]
-281ADCC0 00000600
-42000000 92000000
-0426BCE4 000003E7
-0426BCE8 00000000
-E0000000 80008000
-$Score 000-999 ( 2 and B Button ) [ZiT]
-281ADCC0 00000500
-42000000 92000000
-0426BCE4 00000000
-0426BCE8 000003E7
-E0000000 80008000
-$Time Stop ( - and B Button on/off ) [ZiT]
-281ADCC0 00001400
-04521C84 60000000
-CC000000 00000000
-04521C84 D01D0040
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-
+# SNJE69 - NBA JAM
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationIssues = Initial slowdowns, no commentary & other sound issues that LLE plugin can fix (r6598)
+EmulationStateId = 4
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+$Score 999-000 ( 1 and B Button ) [ZiT]
+281ADCC0 00000600
+42000000 92000000
+0426BCE4 000003E7
+0426BCE8 00000000
+E0000000 80008000
+$Score 000-999 ( 2 and B Button ) [ZiT]
+281ADCC0 00000500
+42000000 92000000
+0426BCE4 00000000
+0426BCE8 000003E7
+E0000000 80008000
+$Time Stop ( - and B Button on/off ) [ZiT]
+281ADCC0 00001400
+04521C84 60000000
+CC000000 00000000
+04521C84 D01D0040
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+
diff --git a/Data/User/GameConfig/SNJP69.ini b/Data/User/GameConfig/SNJP69.ini
index 5b87dc2614..72ab8eb62f 100644
--- a/Data/User/GameConfig/SNJP69.ini
+++ b/Data/User/GameConfig/SNJP69.ini
@@ -1,13 +1,13 @@
-# SNJP69 - NBA JAM
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationIssues = Initial slowdowns, no commentary & other sound issues that LLE plugin can fix (r6598)
-EmulationStateId = 4
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-
+# SNJP69 - NBA JAM
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationIssues = Initial slowdowns, no commentary & other sound issues that LLE plugin can fix (r6598)
+EmulationStateId = 4
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+
diff --git a/Data/User/GameConfig/SOUE01.ini b/Data/User/GameConfig/SOUE01.ini
index 3a17851101..8461821933 100644
--- a/Data/User/GameConfig/SOUE01.ini
+++ b/Data/User/GameConfig/SOUE01.ini
@@ -1,20 +1,21 @@
-# SOUE01 - The Legend of Zelda Skyward Sword
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = Needs real wiimote and motion plus. Use direct 3d9 backend for less graphic issues.
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Hacks]
-EFBAccessEnable = True
-DlistCachingEnable = False
-[Wii]
-DisableWiimoteSpeaker = 1
+# SOUE01 - The Legend of Zelda Skyward Sword
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Needs real wiimote and motion plus. Use direct 3d9 backend for less graphic issues.
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Hacks]
+EFBAccessEnable = True
+DlistCachingEnable = False
+[Wii]
+DisableWiimoteSpeaker = 1
+[Video_Settings]
diff --git a/Data/User/GameConfig/SOUJ01.ini b/Data/User/GameConfig/SOUJ01.ini
index 67e67a1525..ede7d81148 100644
--- a/Data/User/GameConfig/SOUJ01.ini
+++ b/Data/User/GameConfig/SOUJ01.ini
@@ -1,20 +1,21 @@
-# SOUJ01 - The Legend of Zelda Skyward Sword
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = Needs real wiimote and motion plus. Use direct 3d9 backend for less graphic issues.
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Hacks]
-EFBAccessEnable = True
-DlistCachingEnable = False
-[Wii]
-DisableWiimoteSpeaker = 1
+# SOUJ01 - The Legend of Zelda Skyward Sword
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Needs real wiimote and motion plus. Use direct 3d9 backend for less graphic issues.
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Hacks]
+EFBAccessEnable = True
+DlistCachingEnable = False
+[Wii]
+DisableWiimoteSpeaker = 1
+[Video_Settings]
diff --git a/Data/User/GameConfig/SOUK01.ini b/Data/User/GameConfig/SOUK01.ini
index f169b324bf..512bd21408 100644
--- a/Data/User/GameConfig/SOUK01.ini
+++ b/Data/User/GameConfig/SOUK01.ini
@@ -1,20 +1,21 @@
-# SOUK01 - The Legend of Zelda Skyward Sword
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = Needs real wiimote and motion plus. Use direct 3d9 backend for less graphic issues.
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Hacks]
-EFBAccessEnable = True
-DlistCachingEnable = False
-[Wii]
-DisableWiimoteSpeaker = 1
+# SOUK01 - The Legend of Zelda Skyward Sword
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Needs real wiimote and motion plus. Use direct 3d9 backend for less graphic issues.
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Hacks]
+EFBAccessEnable = True
+DlistCachingEnable = False
+[Wii]
+DisableWiimoteSpeaker = 1
+[Video_Settings]
diff --git a/Data/User/GameConfig/SOUP01.ini b/Data/User/GameConfig/SOUP01.ini
index 0e80a81656..1b6e47096f 100644
--- a/Data/User/GameConfig/SOUP01.ini
+++ b/Data/User/GameConfig/SOUP01.ini
@@ -1,20 +1,21 @@
-# SOUP01 - The Legend of Zelda Skyward Sword
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = Needs real wiimote and motion plus. Use direct 3d9 backend for less graphic issues.
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Hacks]
-EFBAccessEnable = True
-DlistCachingEnable = False
-[Wii]
-DisableWiimoteSpeaker = 1
+# SOUP01 - The Legend of Zelda Skyward Sword
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Needs real wiimote and motion plus. Use direct 3d9 backend for less graphic issues.
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Hacks]
+EFBAccessEnable = True
+DlistCachingEnable = False
+[Wii]
+DisableWiimoteSpeaker = 1
+[Video_Settings]
diff --git a/Data/User/GameConfig/SPTJEB.ini b/Data/User/GameConfig/SPTJEB.ini
index 3d223c0d5a..5c70d0dd54 100644
--- a/Data/User/GameConfig/SPTJEB.ini
+++ b/Data/User/GameConfig/SPTJEB.ini
@@ -1,12 +1,12 @@
-# SPTJEB - Hospital. 6 nin no Ishi
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 5
-EmulationIssues =
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
+# SPTJEB - Hospital. 6 nin no Ishi
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 5
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/SPVEA4.ini b/Data/User/GameConfig/SPVEA4.ini
index f03ffc2272..23a62c1394 100644
--- a/Data/User/GameConfig/SPVEA4.ini
+++ b/Data/User/GameConfig/SPVEA4.ini
@@ -1,17 +1,16 @@
-# SPVEA4 - Pro Evolution Soccer 2011
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[EmuState]
-EmulationStateId = 5
-EmulationIssues =
-[OnFrame]
-[ActionReplay]
-[Gecko]
+# SPVEA4 - Pro Evolution Soccer 2011
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[EmuState]
+EmulationStateId = 5
+EmulationIssues =
+[OnFrame]
+[ActionReplay]
+[Gecko]
diff --git a/Data/User/GameConfig/SPVPA4.ini b/Data/User/GameConfig/SPVPA4.ini
index 6b1ebabca9..10b7414ffa 100644
--- a/Data/User/GameConfig/SPVPA4.ini
+++ b/Data/User/GameConfig/SPVPA4.ini
@@ -1,17 +1,16 @@
-# SPVPA4 - Pro Evolution Soccer 2011
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[EmuState]
-EmulationStateId = 5
-EmulationIssues =
-[OnFrame]
-[ActionReplay]
-[Gecko]
+# SPVPA4 - Pro Evolution Soccer 2011
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[EmuState]
+EmulationStateId = 5
+EmulationIssues =
+[OnFrame]
+[ActionReplay]
+[Gecko]
diff --git a/Data/User/GameConfig/SPVXA4.ini b/Data/User/GameConfig/SPVXA4.ini
index b69413e399..95d2d85497 100644
--- a/Data/User/GameConfig/SPVXA4.ini
+++ b/Data/User/GameConfig/SPVXA4.ini
@@ -1,17 +1,16 @@
-# SPVXA4 - Pro Evolution Soccer 2011
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[EmuState]
-EmulationStateId = 5
-EmulationIssues =
-[OnFrame]
-[ActionReplay]
-[Gecko]
+# SPVXA4 - Pro Evolution Soccer 2011
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[EmuState]
+EmulationStateId = 5
+EmulationIssues =
+[OnFrame]
+[ActionReplay]
+[Gecko]
diff --git a/Data/User/GameConfig/SPVYA4.ini b/Data/User/GameConfig/SPVYA4.ini
index 81b7d14bb4..b558818b2d 100644
--- a/Data/User/GameConfig/SPVYA4.ini
+++ b/Data/User/GameConfig/SPVYA4.ini
@@ -1,17 +1,16 @@
-# SPVYA4 - Pro Evolution Soccer 2011
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[EmuState]
-EmulationStateId = 5
-EmulationIssues =
-[OnFrame]
-[ActionReplay]
-[Gecko]
+# SPVYA4 - Pro Evolution Soccer 2011
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[EmuState]
+EmulationStateId = 5
+EmulationIssues =
+[OnFrame]
+[ActionReplay]
+[Gecko]
diff --git a/Data/User/GameConfig/SSQE01.ini b/Data/User/GameConfig/SSQE01.ini
new file mode 100644
index 0000000000..af7219ba3e
--- /dev/null
+++ b/Data/User/GameConfig/SSQE01.ini
@@ -0,0 +1,19 @@
+# SSQE01 - Mario Party 9
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Flinger Painting minigame needs EFB to RAM to function properly.
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Hacks]
+EFBToTextureEnable = False
+EFBCopyEnable = True
+EFBCopyCacheEnable = True
diff --git a/Data/User/GameConfig/SSQJ01.ini b/Data/User/GameConfig/SSQJ01.ini
new file mode 100644
index 0000000000..feb7f9dbd7
--- /dev/null
+++ b/Data/User/GameConfig/SSQJ01.ini
@@ -0,0 +1,19 @@
+# SSQJ01 - Mario Party 9
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Flinger Painting minigame needs EFB to RAM to function properly.
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Hacks]
+EFBToTextureEnable = False
+EFBCopyEnable = True
+EFBCopyCacheEnable = True
diff --git a/Data/User/GameConfig/SSQP01.ini b/Data/User/GameConfig/SSQP01.ini
new file mode 100644
index 0000000000..b48a159480
--- /dev/null
+++ b/Data/User/GameConfig/SSQP01.ini
@@ -0,0 +1,19 @@
+# SSQP01 - Mario Party 9
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Flinger Painting minigame needs EFB to RAM to function properly.
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Hacks]
+EFBToTextureEnable = False
+EFBCopyEnable = True
+EFBCopyCacheEnable = True
diff --git a/Data/User/GameConfig/SUKE01.ini b/Data/User/GameConfig/SUKE01.ini
index a4c7b22fd4..154a760b7d 100644
--- a/Data/User/GameConfig/SUKE01.ini
+++ b/Data/User/GameConfig/SUKE01.ini
@@ -1,21 +1,18 @@
-# SUKE01 - Kirby Wii
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = Theater mode crashes, needs XFB for certain minigames.
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-UseXFB = True
-UseRealXFB = False
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 128
-
+# SUKE01 - Kirby Wii
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Some minigames need XFB to work.
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+UseXFB = True
+UseRealXFB = False
diff --git a/Data/User/GameConfig/SUKJ01.ini b/Data/User/GameConfig/SUKJ01.ini
index a6cd7a1961..a024c0eb63 100644
--- a/Data/User/GameConfig/SUKJ01.ini
+++ b/Data/User/GameConfig/SUKJ01.ini
@@ -1,20 +1,18 @@
-# SUKJ01 - Hoshi no Kirby Wii
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = Theater mode crashes, needs XFB for certain minigames.
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-UseXFB = True
-UseRealXFB = False
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 128
+# SUKJ01 - Hoshi no Kirby Wii
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Some minigames need XFB to work.
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+UseXFB = True
+UseRealXFB = False
diff --git a/Data/User/GameConfig/SUKP01.ini b/Data/User/GameConfig/SUKP01.ini
index 8ea6027097..40b75c0593 100644
--- a/Data/User/GameConfig/SUKP01.ini
+++ b/Data/User/GameConfig/SUKP01.ini
@@ -1,20 +1,18 @@
-# SUKP01 - Kirby's Adventure Wii
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = Theater mode crashes, needs XFB for certain minigames.
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-UseXFB = True
-UseRealXFB = False
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 128
+# SUKP01 - Kirby's Adventure Wii
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Some minigames need XFB to work.
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+UseXFB = True
+UseRealXFB = False
diff --git a/Data/User/GameConfig/SX3J01.ini b/Data/User/GameConfig/SX3J01.ini
new file mode 100644
index 0000000000..c9a05a2493
--- /dev/null
+++ b/Data/User/GameConfig/SX3J01.ini
@@ -0,0 +1,17 @@
+# SX3J01 - Pandora s Tower
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 0
diff --git a/Data/User/GameConfig/SX3P01.ini b/Data/User/GameConfig/SX3P01.ini
new file mode 100644
index 0000000000..f75f762001
--- /dev/null
+++ b/Data/User/GameConfig/SX3P01.ini
@@ -0,0 +1,17 @@
+# SX3P01 - Pandora s Tower
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 0
diff --git a/Data/User/GameConfig/SX8E52.ini b/Data/User/GameConfig/SX8E52.ini
index 170ef48db9..f682252135 100644
--- a/Data/User/GameConfig/SX8E52.ini
+++ b/Data/User/GameConfig/SX8E52.ini
@@ -1,20 +1,19 @@
-# SX8E52 - X-Men Destiny
-[Core] Values set here will override the main dolphin settings.
-SkipIdle = 0
-BlockMerging = 1
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = Idle skipping causes drop in performance.
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 0
+# SX8E52 - X-Men Destiny
+[Core] Values set here will override the main dolphin settings.
+SkipIdle = 0
+BlockMerging = 1
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Idle skipping causes drop in performance.
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 0
diff --git a/Data/User/GameConfig/SXCE52.ini b/Data/User/GameConfig/SXCE52.ini
index b003fc70d3..ba7ce1266e 100644
--- a/Data/User/GameConfig/SXCE52.ini
+++ b/Data/User/GameConfig/SXCE52.ini
@@ -1,14 +1,13 @@
-# SXCE52 - Guitar Hero Smash Hits
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = Create a quitar profile and use that for controls instead of wiimote controls(r6575)
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-
+# SXCE52 - Guitar Hero Smash Hits
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Create a quitar profile and use that for controls instead of wiimote controls(r6575)
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
+
diff --git a/Data/User/GameConfig/SXCP52.ini b/Data/User/GameConfig/SXCP52.ini
index 29bf6aab48..e0e8b25afe 100644
--- a/Data/User/GameConfig/SXCP52.ini
+++ b/Data/User/GameConfig/SXCP52.ini
@@ -1,12 +1,12 @@
-# SXCP52 - Guitar Hero Smash Hits
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues = Create a quitar profile and use that for controls instead of wiimote controls(r6575)
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
+# SXCP52 - Guitar Hero Smash Hits
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues = Create a quitar profile and use that for controls instead of wiimote controls(r6575)
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/WF4EGD.ini b/Data/User/GameConfig/WF4EGD.ini
index 38e0f8875b..3087160415 100644
--- a/Data/User/GameConfig/WF4EGD.ini
+++ b/Data/User/GameConfig/WF4EGD.ini
@@ -1,12 +1,12 @@
-# WF4EGD - FINAL FANTASY IV THE AFTER YEARS
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-[Gecko]
-[Video_Settings]
-SafeTextureCache = True
+# WF4EGD - FINAL FANTASY IV THE AFTER YEARS
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+[Gecko]
+[Video_Settings]
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/WR9E08.ini b/Data/User/GameConfig/WR9E08.ini
index b4b24bdb60..dc6f4fa551 100644
--- a/Data/User/GameConfig/WR9E08.ini
+++ b/Data/User/GameConfig/WR9E08.ini
@@ -1,21 +1,20 @@
-# WR9E08 - MEGA MAN 9
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-UseXFB = True
-UseRealXFB = False
-EFBScale = 2
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
+# WR9E08 - MEGA MAN 9
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+UseXFB = True
+UseRealXFB = False
+EFBScale = 2
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/WR9P08.ini b/Data/User/GameConfig/WR9P08.ini
index b10a3cc2cb..9579a68043 100644
--- a/Data/User/GameConfig/WR9P08.ini
+++ b/Data/User/GameConfig/WR9P08.ini
@@ -1,21 +1,20 @@
-# WR9P08 - MEGA MAN 9
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-UseXFB = True
-UseRealXFB = False
-EFBScale = 2
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
+# WR9P08 - MEGA MAN 9
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+UseXFB = True
+UseRealXFB = False
+EFBScale = 2
+SafeTextureCacheColorSamples = 512
diff --git a/Data/User/GameConfig/WRXE08.ini b/Data/User/GameConfig/WRXE08.ini
index 63feb0023c..393d9adbb5 100644
--- a/Data/User/GameConfig/WRXE08.ini
+++ b/Data/User/GameConfig/WRXE08.ini
@@ -1,21 +1,20 @@
-# WRXE08 - MEGA MAN 10
-[Core] Values set here will override the main dolphin settings.
-[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
-EmulationStateId = 4
-EmulationIssues =
-[OnFrame] Add memory patches to be applied every frame here.
-[ActionReplay] Add action replay cheats here.
-[Video]
-ProjectionHack = 0
-PH_SZNear = 0
-PH_SZFar = 0
-PH_ExtraParam = 0
-PH_ZNear =
-PH_ZFar =
-[Gecko]
-[Video_Settings]
-UseXFB = True
-UseRealXFB = False
-SafeTextureCache = True
-SafeTextureCacheColorSamples = 512
-EFBScale = 2
+# WRXE08 - MEGA MAN 10
+[Core] Values set here will override the main dolphin settings.
+[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set.
+EmulationStateId = 4
+EmulationIssues =
+[OnFrame] Add memory patches to be applied every frame here.
+[ActionReplay] Add action replay cheats here.
+[Video]
+ProjectionHack = 0
+PH_SZNear = 0
+PH_SZFar = 0
+PH_ExtraParam = 0
+PH_ZNear =
+PH_ZFar =
+[Gecko]
+[Video_Settings]
+UseXFB = True
+UseRealXFB = False
+SafeTextureCacheColorSamples = 512
+EFBScale = 2
diff --git a/Externals/Bochs_disasm/Bochs_disasm.vcxproj b/Externals/Bochs_disasm/Bochs_disasm.vcxproj
index f7110f2e9a..50f62f70f6 100644
--- a/Externals/Bochs_disasm/Bochs_disasm.vcxproj
+++ b/Externals/Bochs_disasm/Bochs_disasm.vcxproj
@@ -152,7 +152,6 @@
-
diff --git a/Externals/Bochs_disasm/SConscript b/Externals/Bochs_disasm/SConscript
deleted file mode 100644
index dd039eefe2..0000000000
--- a/Externals/Bochs_disasm/SConscript
+++ /dev/null
@@ -1,18 +0,0 @@
-# -*- python -*-
-
-Import('env')
-import sys
-
-files = [
- 'PowerPCDisasm.cpp',
- 'dis_decode.cpp',
- 'dis_groups.cpp',
- 'resolve.cpp',
- 'syntax.cpp',
- ]
-
-if sys.platform == 'win32':
- files += ['stdafx.cpp']
-
-env['CPPPATH'] += ['#Externals/Bochs_disasm']
-env['LIBS'] += env.StaticLibrary('bdisasm', files)
diff --git a/Externals/CLRun/SConscript b/Externals/CLRun/SConscript
deleted file mode 100644
index 30be41c431..0000000000
--- a/Externals/CLRun/SConscript
+++ /dev/null
@@ -1,17 +0,0 @@
-# -*- python -*-
-
-Import('env')
-import sys
-
-if sys.platform == 'darwin':
- Return()
-
-files = [
- 'clrun/clrun.c',
- 'clrun/dynamiclib.c',
- 'clrun/gencl.c',
- 'clrun/genclgl.c',
- ]
-
-env['CPPPATH'] += ['#Externals/CLRun/include']
-env['LIBS'] += env.StaticLibrary('clrun', files)
diff --git a/Externals/CLRun/clrun/CLRun.vcxproj b/Externals/CLRun/clrun/CLRun.vcxproj
index 0b168991d0..c6a4cb2e6d 100644
--- a/Externals/CLRun/clrun/CLRun.vcxproj
+++ b/Externals/CLRun/clrun/CLRun.vcxproj
@@ -166,9 +166,7 @@
-
-
diff --git a/Externals/CLRun/clrun/CLRun.vcxproj.filters b/Externals/CLRun/clrun/CLRun.vcxproj.filters
index 795200b898..3f252a668b 100644
--- a/Externals/CLRun/clrun/CLRun.vcxproj.filters
+++ b/Externals/CLRun/clrun/CLRun.vcxproj.filters
@@ -46,9 +46,7 @@
-
- Resource Files
diff --git a/Externals/GLew/SConscript b/Externals/GLew/SConscript
deleted file mode 100644
index 16bede105f..0000000000
--- a/Externals/GLew/SConscript
+++ /dev/null
@@ -1,21 +0,0 @@
-# -*- python -*-
-
-Import('env')
-import sys
-
-if env.has_key('shared_glew') and env['shared_glew']:
- Return()
-
-if sys.platform == 'darwin':
- libs = []
- frames = ['AGL', 'OpenGL']
-else:
- libs = ['GL', 'GLU']
- frames = []
-
-glew = env.StaticLibrary('GLEW', 'src/glew.c')
-libs += glew
-env.Program('glewinfo', 'src/glewinfo.c', LIBS = libs, FRAMEWORKS = frames)
-env.Program('visualinfo', 'src/visualinfo.c', LIBS = libs, FRAMEWORKS = frames)
-env['CPPPATH'] += ['#Externals/GLew/include']
-env['LIBS'] += glew
diff --git a/Externals/LZO/LZO.vcxproj b/Externals/LZO/LZO.vcxproj
index b29b9b2c84..76b75cdc4c 100644
--- a/Externals/LZO/LZO.vcxproj
+++ b/Externals/LZO/LZO.vcxproj
@@ -143,7 +143,6 @@
-
diff --git a/Externals/LZO/LZO.vcxproj.filters b/Externals/LZO/LZO.vcxproj.filters
index 50cd659802..889fdb14a0 100644
--- a/Externals/LZO/LZO.vcxproj.filters
+++ b/Externals/LZO/LZO.vcxproj.filters
@@ -26,6 +26,5 @@
-
\ No newline at end of file
diff --git a/Externals/LZO/SConscript b/Externals/LZO/SConscript
deleted file mode 100644
index 1d1ec2e582..0000000000
--- a/Externals/LZO/SConscript
+++ /dev/null
@@ -1,9 +0,0 @@
-# -*- python -*-
-
-Import('env')
-
-if env.has_key('shared_lzo') and env['shared_lzo']:
- Return()
-
-env['CPPPATH'] += ['#Externals/LZO']
-env['LIBS'] += env.StaticLibrary('lzo2', 'minilzo.c')
diff --git a/Externals/SDL/SConscript b/Externals/SDL/SConscript
deleted file mode 100644
index 0c696266cc..0000000000
--- a/Externals/SDL/SConscript
+++ /dev/null
@@ -1,45 +0,0 @@
-# -*- python -*-
-
-Import('env')
-import sys
-
-if env.has_key('shared_sdl') and env['shared_sdl']:
- Return()
-
-if sys.platform == 'darwin':
- Return()
-
-files = [
- 'src/SDL.c',
- 'src/SDL_error.c',
- 'src/SDL_fatal.c',
- 'src/joystick/SDL_joystick.c',
- ]
-
-if sys.platform.count('bsd'):
- env['LIBS'] += ['usbhid']
- files += [
- 'src/joystick/bsd/SDL_sysjoystick.c',
- 'src/stdlib/SDL_malloc.c',
- 'src/stdlib/SDL_string.c',
- ]
-elif sys.platform == 'darwin':
- files += [
- 'src/joystick/darwin/SDL_sysjoystick.c',
- ]
-elif sys.platform == 'linux2':
- files += [
- 'src/joystick/linux/SDL_sysjoystick.c',
- 'src/stdlib/SDL_string.c',
- ]
-elif sys.platform == 'win32':
- files += [
- 'src/joystick/win32/SDL_mmjoystick.c',
- ]
-else:
- files += [
- 'src/joystick/dummy/SDL_sysjoystick.c',
- ]
-
-env['CPPPATH'] += ['#Externals/SDL', '#Externals/SDL/include']
-env['LIBS'] += env.StaticLibrary('SDL', files)
diff --git a/Externals/SFML/SConscript b/Externals/SFML/SConscript
deleted file mode 100644
index 6b635710ca..0000000000
--- a/Externals/SFML/SConscript
+++ /dev/null
@@ -1,20 +0,0 @@
-# -*- python -*-
-
-Import('env')
-
-if env.has_key('shared_sfml') and env['shared_sfml']:
- Return()
-
-files = [
- 'src/SFML/Network/Ftp.cpp',
- 'src/SFML/Network/Http.cpp',
- 'src/SFML/Network/IPAddress.cpp',
- 'src/SFML/Network/Packet.cpp',
- 'src/SFML/Network/SelectorBase.cpp',
- 'src/SFML/Network/SocketTCP.cpp',
- 'src/SFML/Network/SocketUDP.cpp',
- 'src/SFML/Network/Unix/SocketHelper.cpp',
- ]
-
-env['CPPPATH'] += ['#Externals/SFML/include']
-env['LIBS'] += env.StaticLibrary('sfml-network', files)
diff --git a/Externals/SOIL/SConscript b/Externals/SOIL/SConscript
deleted file mode 100644
index 6000134707..0000000000
--- a/Externals/SOIL/SConscript
+++ /dev/null
@@ -1,16 +0,0 @@
-# -*- python -*-
-
-Import('env')
-
-if env.has_key('shared_soil') and env['shared_soil']:
- Return()
-
-files = [
- 'image_DXT.c',
- 'image_helper.c',
- 'SOIL.c',
- 'stb_image_aug.c'
- ]
-
-env['CPPPATH'] += ['#Externals/SOIL']
-env['LIBS'] += env.StaticLibrary('SOIL', files)
diff --git a/Externals/SOIL/SOIL.vcxproj b/Externals/SOIL/SOIL.vcxproj
index eba92bad49..33f75bbaf9 100644
--- a/Externals/SOIL/SOIL.vcxproj
+++ b/Externals/SOIL/SOIL.vcxproj
@@ -150,7 +150,6 @@
-
diff --git a/Externals/libpng/SConscript b/Externals/libpng/SConscript
deleted file mode 100644
index b232ca9be4..0000000000
--- a/Externals/libpng/SConscript
+++ /dev/null
@@ -1,28 +0,0 @@
-# -*- python -*-
-
-Import('env')
-import sys
-
-if env.has_key('shared_png') and env['shared_png']:
- Return()
-
-files = [
- 'png.c',
- 'pngerror.c',
- 'pngget.c',
- 'pngmem.c',
- 'pngpread.c',
- 'pngread.c',
- 'pngrio.c',
- 'pngrtran.c',
- 'pngrutil.c',
- 'pngset.c',
- 'pngtrans.c',
- 'pngwio.c',
- 'pngwrite.c',
- 'pngwtran.c',
- 'pngwutil.c',
- ]
-
-env['CPPPATH'] += ['#Externals/libpng']
-env['LIBS'] += env.StaticLibrary('png', files)
diff --git a/Externals/libpng/png/png.vcxproj b/Externals/libpng/png/png.vcxproj
new file mode 100644
index 0000000000..e272b07452
--- /dev/null
+++ b/Externals/libpng/png/png.vcxproj
@@ -0,0 +1,208 @@
+
+
+
+
+ DebugFast
+ Win32
+
+
+ DebugFast
+ x64
+
+
+ Debug
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ Win32
+
+
+ Release
+ x64
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {01573C36-AC6E-49F6-94BA-572517EB9740}
+ Win32Proj
+ png
+
+
+
+ StaticLibrary
+ true
+ Unicode
+
+
+ StaticLibrary
+ true
+ Unicode
+
+
+ StaticLibrary
+ false
+ Unicode
+
+
+ StaticLibrary
+ false
+ Unicode
+
+
+ StaticLibrary
+ false
+ Unicode
+
+
+ StaticLibrary
+ false
+ Unicode
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Disabled
+ ..\..\zlib;%(AdditionalIncludeDirectories)
+
+
+ Windows
+ true
+
+
+
+
+ Disabled
+ ..\..\zlib;%(AdditionalIncludeDirectories)
+
+
+ Windows
+ true
+
+
+
+
+ MaxSpeed
+ true
+ true
+ ..\..\zlib;%(AdditionalIncludeDirectories)
+
+
+ Windows
+ true
+ true
+ true
+
+
+
+
+ MaxSpeed
+ true
+ true
+ ..\..\zlib;%(AdditionalIncludeDirectories)
+
+
+ Windows
+ true
+ true
+ true
+
+
+
+
+ MaxSpeed
+ true
+ true
+ ..\..\zlib;%(AdditionalIncludeDirectories)
+
+
+ Windows
+ true
+ true
+ true
+
+
+
+
+ MaxSpeed
+ true
+ true
+ ..\..\zlib;%(AdditionalIncludeDirectories)
+
+
+ Windows
+ true
+ true
+ true
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Externals/libpng/png/png.vcxproj.filters b/Externals/libpng/png/png.vcxproj.filters
new file mode 100644
index 0000000000..5bccb29842
--- /dev/null
+++ b/Externals/libpng/png/png.vcxproj.filters
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Externals/portaudio/Win32/Debug/portaudio.lib b/Externals/portaudio/Win32/Debug/portaudio.lib
new file mode 100644
index 0000000000..058b3c404c
Binary files /dev/null and b/Externals/portaudio/Win32/Debug/portaudio.lib differ
diff --git a/Externals/portaudio/Win32/Debug/portaudio.pdb b/Externals/portaudio/Win32/Debug/portaudio.pdb
new file mode 100644
index 0000000000..c9269f2c5d
Binary files /dev/null and b/Externals/portaudio/Win32/Debug/portaudio.pdb differ
diff --git a/Externals/portaudio/Win32/DebugFast/portaudio.lib b/Externals/portaudio/Win32/DebugFast/portaudio.lib
new file mode 100644
index 0000000000..30874d6f05
Binary files /dev/null and b/Externals/portaudio/Win32/DebugFast/portaudio.lib differ
diff --git a/Externals/portaudio/Win32/DebugFast/portaudio.pdb b/Externals/portaudio/Win32/DebugFast/portaudio.pdb
new file mode 100644
index 0000000000..12415be92d
Binary files /dev/null and b/Externals/portaudio/Win32/DebugFast/portaudio.pdb differ
diff --git a/Externals/portaudio/Win32/Release/portaudio.lib b/Externals/portaudio/Win32/Release/portaudio.lib
new file mode 100644
index 0000000000..30874d6f05
Binary files /dev/null and b/Externals/portaudio/Win32/Release/portaudio.lib differ
diff --git a/Externals/portaudio/Win32/Release/portaudio.pdb b/Externals/portaudio/Win32/Release/portaudio.pdb
new file mode 100644
index 0000000000..12415be92d
Binary files /dev/null and b/Externals/portaudio/Win32/Release/portaudio.pdb differ
diff --git a/Externals/portaudio/Win32/portaudio.lib b/Externals/portaudio/Win32/portaudio.lib
deleted file mode 100644
index 01213c5399..0000000000
Binary files a/Externals/portaudio/Win32/portaudio.lib and /dev/null differ
diff --git a/Externals/portaudio/x64/Debug/portaudio.lib b/Externals/portaudio/x64/Debug/portaudio.lib
new file mode 100644
index 0000000000..a092624370
Binary files /dev/null and b/Externals/portaudio/x64/Debug/portaudio.lib differ
diff --git a/Externals/portaudio/x64/Debug/portaudio.pdb b/Externals/portaudio/x64/Debug/portaudio.pdb
new file mode 100644
index 0000000000..fd5cd214b4
Binary files /dev/null and b/Externals/portaudio/x64/Debug/portaudio.pdb differ
diff --git a/Externals/portaudio/x64/DebugFast/portaudio.lib b/Externals/portaudio/x64/DebugFast/portaudio.lib
new file mode 100644
index 0000000000..3029595193
Binary files /dev/null and b/Externals/portaudio/x64/DebugFast/portaudio.lib differ
diff --git a/Externals/portaudio/x64/DebugFast/portaudio.pdb b/Externals/portaudio/x64/DebugFast/portaudio.pdb
new file mode 100644
index 0000000000..3642ec683a
Binary files /dev/null and b/Externals/portaudio/x64/DebugFast/portaudio.pdb differ
diff --git a/Externals/portaudio/x64/Release/portaudio.lib b/Externals/portaudio/x64/Release/portaudio.lib
new file mode 100644
index 0000000000..3029595193
Binary files /dev/null and b/Externals/portaudio/x64/Release/portaudio.lib differ
diff --git a/Externals/portaudio/x64/Release/portaudio.pdb b/Externals/portaudio/x64/Release/portaudio.pdb
new file mode 100644
index 0000000000..3642ec683a
Binary files /dev/null and b/Externals/portaudio/x64/Release/portaudio.pdb differ
diff --git a/Externals/portaudio/x64/portaudio.lib b/Externals/portaudio/x64/portaudio.lib
deleted file mode 100644
index 1793b91480..0000000000
Binary files a/Externals/portaudio/x64/portaudio.lib and /dev/null differ
diff --git a/Externals/scons-local/scons-LICENSE b/Externals/scons-local/scons-LICENSE
deleted file mode 100644
index 790d9714b5..0000000000
--- a/Externals/scons-local/scons-LICENSE
+++ /dev/null
@@ -1,25 +0,0 @@
- Copyright and license for SCons - a software construction tool
-
- This copyright and license do not apply to any other software
- with which this software may have been included.
-
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/Externals/scons-local/scons-README b/Externals/scons-local/scons-README
deleted file mode 100644
index 32b691cfc1..0000000000
--- a/Externals/scons-local/scons-README
+++ /dev/null
@@ -1,204 +0,0 @@
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-
- SCons - a software construction tool
-
-This is the scons-README file for a version of SCons packaged for local
-execution--that is, execution out of a specific local directory, without
-having to install SCons as a system-wide utility.
-
-You are likely reading this file in one of the following two situations:
-
- 1) You have unpacked an scons-local-{version} package and are
- examining the contents.
-
- In this case, you are presumably interested in using this
- package to include a local copy of SCons with some other
- software that you package, so that you can use SCons to build
- your software without forcing all of your users to have it fully
- installed. Instructions for this can be found below.
-
- If you are not looking to use SCons in this way, then please
- use either the scons-{version} package to install SCons on your
- system, or the scons-src-{version} package if you want the full
- source to SCons, including its packaging code and underlying
- tests and testing infrastructure.
-
- 2) This file was included in some other software package so that
- the package could be built using SCons.
-
- In this case, follow the instructions provided with the
- rest of the software package for how to use SCons to build
- and/or install the software. The file containing build and
- installation instructions will typically be named README or
- INSTALL.
-
-LATEST VERSION
-==============
-
-Before going further, you can check for the latest version of the
-scons-local package, or any SCons package, at the SCons download page:
-
- http://www.scons.org/download.html
-
-
-EXECUTION REQUIREMENTS
-======================
-
-Running SCons requires Python version 2.4 or later. There should be
-no other dependencies or requirements to run SCons.
-
-The default SCons configuration assumes use of the Microsoft Visual C++
-compiler suite on WIN32 systems, and assumes a C compiler named 'cc',
-a C++ compiler named 'c++', and a Fortran compiler named 'g77' (such
-as found in the GNU C compiler suite) on any other type of system.
-You may, of course, override these default values by appropriate
-configuration of Environment construction variables.
-
-
-INSTALLATION
-============
-
-Installation of this package should be as simple as unpacking the
-archive (either .tar.gz or .zip) in any directory (top-level or a
-subdirectory) within the software package with which you want to ship
-SCons.
-
-Once you have installed this package, you should write an SConstruct
-file at the top level of your source tree to build your software as you
-see fit.
-
-Then modify the build/install instructions for your package to instruct
-your users to execute SCons as follows (if you installed this package in
-your top-level directory):
-
- $ python scons.py
-
-Or (if, for example, you installed this package in a subdirectory named
-"scons"):
-
- $ python scons/scons.py
-
-That should be all you have to do. (If it isn't that simple, please let
-us know!)
-
-
-CONTENTS OF THIS PACKAGE
-========================
-
-This scons-local package consists of the following:
-
-scons-LICENSE
- A copy of the copyright and terms under which SCons is
- distributed (the Open Source Initiative-approved MIT license).
-
- A disclaimer has been added to the beginning to make clear that
- this license applies only to SCons, and not to any separate
- software you've written with which you're planning to package
- SCons.
-
-scons-README
- What you're looking at right now.
-
-scons-local-{version}/
- The SCons build engine. This is structured as a Python
- library.
-
-scons.py
- The SCons script itself. The script sets up the Python
- sys.path variable to use the build engine found in the
- scons-local-{version}/ directory in preference to any other
- SCons build engine installed on your system.
-
-
-DOCUMENTATION
-=============
-
-Because this package is intended to be included with other software by
-experienced users, we have not included any SCons documentation in this
-package (other than this scons-README file you're reading right now).
-
-If, however, you need documentation about SCons, then consult any of the
-following from the corresponding scons-{version} or scons-src-{version}
-package:
-
- The RELEASE.txt file (src/RELEASE.txt file in the
- scons-src-{version} package), which contains notes about this
- specific release, including known problems.
-
- The CHANGES.txt file (src/CHANGES.txt file in the
- scons-src-{version} package), which contains a list of changes
- since the previous release.
-
- The scons.1 man page (doc/man/scons.1 in the scons-src-{version}
- package), which contains a section of small examples for getting
- started using SCons.
-
-Additional documentation for SCons is available at:
-
- http://www.scons.org/doc.html
-
-
-LICENSING
-=========
-
-SCons is distributed under the MIT license, a full copy of which is
-available in the scons-LICENSE file in this package. The MIT license is
-an approved Open Source license, which means:
-
- This software is OSI Certified Open Source Software. OSI
- Certified is a certification mark of the Open Source Initiative.
-
-More information about OSI certifications and Open Source software is
-available at:
-
- http://www.opensource.org/
-
-
-REPORTING BUGS
-==============
-
-You can report bugs either by following the "Tracker - Bugs" link
-on the SCons project page:
-
- http://sourceforge.net/projects/scons/
-
-or by sending mail to the SCons developers mailing list:
-
- scons-devel@lists.sourceforge.net
-
-
-MAILING LISTS
-=============
-
-A mailing list for users of SCons is available. You may send questions
-or comments to the list at:
-
- scons-users@lists.sourceforge.net
-
-You may subscribe to the scons-users mailing list at:
-
- http://lists.sourceforge.net/lists/listinfo/scons-users
-
-
-FOR MORE INFORMATION
-====================
-
-Check the SCons web site at:
-
- http://www.scons.org/
-
-
-AUTHOR INFO
-===========
-
-Steven Knight
-knight at baldmt dot com
-http://www.baldmt.com/~knight/
-
-With plenty of help from the SCons Development team:
- Chad Austin
- Charles Crain
- Steve Leblanc
- Anthony Roach
- Terrel Shumway
-
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Action.py b/Externals/scons-local/scons-local-2.0.1/SCons/Action.py
deleted file mode 100644
index 4300dd497a..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Action.py
+++ /dev/null
@@ -1,1241 +0,0 @@
-"""SCons.Action
-
-This encapsulates information about executing any sort of action that
-can build one or more target Nodes (typically files) from one or more
-source Nodes (also typically files) given a specific Environment.
-
-The base class here is ActionBase. The base class supplies just a few
-OO utility methods and some generic methods for displaying information
-about an Action in response to the various commands that control printing.
-
-A second-level base class is _ActionAction. This extends ActionBase
-by providing the methods that can be used to show and perform an
-action. True Action objects will subclass _ActionAction; Action
-factory class objects will subclass ActionBase.
-
-The heavy lifting is handled by subclasses for the different types of
-actions we might execute:
-
- CommandAction
- CommandGeneratorAction
- FunctionAction
- ListAction
-
-The subclasses supply the following public interface methods used by
-other modules:
-
- __call__()
- THE public interface, "calling" an Action object executes the
- command or Python function. This also takes care of printing
- a pre-substitution command for debugging purposes.
-
- get_contents()
- Fetches the "contents" of an Action for signature calculation
- plus the varlist. This is what gets MD5 checksummed to decide
- if a target needs to be rebuilt because its action changed.
-
- genstring()
- Returns a string representation of the Action *without*
- command substitution, but allows a CommandGeneratorAction to
- generate the right action based on the specified target,
- source and env. This is used by the Signature subsystem
- (through the Executor) to obtain an (imprecise) representation
- of the Action operation for informative purposes.
-
-
-Subclasses also supply the following methods for internal use within
-this module:
-
- __str__()
- Returns a string approximation of the Action; no variable
- substitution is performed.
-
- execute()
- The internal method that really, truly, actually handles the
- execution of a command or Python function. This is used so
- that the __call__() methods can take care of displaying any
- pre-substitution representations, and *then* execute an action
- without worrying about the specific Actions involved.
-
- get_presig()
- Fetches the "contents" of a subclass for signature calculation.
- The varlist is added to this to produce the Action's contents.
-
- strfunction()
- Returns a substituted string representation of the Action.
- This is used by the _ActionAction.show() command to display the
- command/function that will be executed to generate the target(s).
-
-There is a related independent ActionCaller class that looks like a
-regular Action, and which serves as a wrapper for arbitrary functions
-that we want to let the user specify the arguments to now, but actually
-execute later (when an out-of-date check determines that it's needed to
-be executed, for example). Objects of this class are returned by an
-ActionFactory class that provides a __call__() method as a convenient
-way for wrapping up the functions.
-
-"""
-
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-__revision__ = "src/engine/SCons/Action.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import SCons.compat
-
-import dis
-import os
-# compat layer imports "cPickle" for us if it's available.
-import pickle
-import re
-import sys
-import subprocess
-
-from SCons.Debug import logInstanceCreation
-import SCons.Errors
-import SCons.Executor
-import SCons.Util
-import SCons.Subst
-
-# we use these a lot, so try to optimize them
-is_String = SCons.Util.is_String
-is_List = SCons.Util.is_List
-
-class _null(object):
- pass
-
-print_actions = 1
-execute_actions = 1
-print_actions_presub = 0
-
-def rfile(n):
- try:
- return n.rfile()
- except AttributeError:
- return n
-
-def default_exitstatfunc(s):
- return s
-
-try:
- SET_LINENO = dis.SET_LINENO
- HAVE_ARGUMENT = dis.HAVE_ARGUMENT
-except AttributeError:
- remove_set_lineno_codes = lambda x: x
-else:
- def remove_set_lineno_codes(code):
- result = []
- n = len(code)
- i = 0
- while i < n:
- c = code[i]
- op = ord(c)
- if op >= HAVE_ARGUMENT:
- if op != SET_LINENO:
- result.append(code[i:i+3])
- i = i+3
- else:
- result.append(c)
- i = i+1
- return ''.join(result)
-
-strip_quotes = re.compile('^[\'"](.*)[\'"]$')
-
-
-def _callable_contents(obj):
- """Return the signature contents of a callable Python object.
- """
- try:
- # Test if obj is a method.
- return _function_contents(obj.im_func)
-
- except AttributeError:
- try:
- # Test if obj is a callable object.
- return _function_contents(obj.__call__.im_func)
-
- except AttributeError:
- try:
- # Test if obj is a code object.
- return _code_contents(obj)
-
- except AttributeError:
- # Test if obj is a function object.
- return _function_contents(obj)
-
-
-def _object_contents(obj):
- """Return the signature contents of any Python object.
-
- We have to handle the case where object contains a code object
- since it can be pickled directly.
- """
- try:
- # Test if obj is a method.
- return _function_contents(obj.im_func)
-
- except AttributeError:
- try:
- # Test if obj is a callable object.
- return _function_contents(obj.__call__.im_func)
-
- except AttributeError:
- try:
- # Test if obj is a code object.
- return _code_contents(obj)
-
- except AttributeError:
- try:
- # Test if obj is a function object.
- return _function_contents(obj)
-
- except AttributeError:
- # Should be a pickable Python object.
- try:
- return pickle.dumps(obj)
- except (pickle.PicklingError, TypeError):
- # This is weird, but it seems that nested classes
- # are unpickable. The Python docs say it should
- # always be a PicklingError, but some Python
- # versions seem to return TypeError. Just do
- # the best we can.
- return str(obj)
-
-
-def _code_contents(code):
- """Return the signature contents of a code object.
-
- By providing direct access to the code object of the
- function, Python makes this extremely easy. Hooray!
-
- Unfortunately, older versions of Python include line
- number indications in the compiled byte code. Boo!
- So we remove the line number byte codes to prevent
- recompilations from moving a Python function.
- """
-
- contents = []
-
- # The code contents depends on the number of local variables
- # but not their actual names.
- contents.append("%s,%s" % (code.co_argcount, len(code.co_varnames)))
- try:
- contents.append(",%s,%s" % (len(code.co_cellvars), len(code.co_freevars)))
- except AttributeError:
- # Older versions of Python do not support closures.
- contents.append(",0,0")
-
- # The code contents depends on any constants accessed by the
- # function. Note that we have to call _object_contents on each
- # constants because the code object of nested functions can
- # show-up among the constants.
- #
- # Note that we also always ignore the first entry of co_consts
- # which contains the function doc string. We assume that the
- # function does not access its doc string.
- contents.append(',(' + ','.join(map(_object_contents,code.co_consts[1:])) + ')')
-
- # The code contents depends on the variable names used to
- # accessed global variable, as changing the variable name changes
- # the variable actually accessed and therefore changes the
- # function result.
- contents.append(',(' + ','.join(map(_object_contents,code.co_names)) + ')')
-
-
- # The code contents depends on its actual code!!!
- contents.append(',(' + str(remove_set_lineno_codes(code.co_code)) + ')')
-
- return ''.join(contents)
-
-
-def _function_contents(func):
- """Return the signature contents of a function."""
-
- contents = [_code_contents(func.func_code)]
-
- # The function contents depends on the value of defaults arguments
- if func.func_defaults:
- contents.append(',(' + ','.join(map(_object_contents,func.func_defaults)) + ')')
- else:
- contents.append(',()')
-
- # The function contents depends on the closure captured cell values.
- try:
- closure = func.func_closure or []
- except AttributeError:
- # Older versions of Python do not support closures.
- closure = []
-
- #xxx = [_object_contents(x.cell_contents) for x in closure]
- try:
- xxx = [_object_contents(x.cell_contents) for x in closure]
- except AttributeError:
- xxx = []
- contents.append(',(' + ','.join(xxx) + ')')
-
- return ''.join(contents)
-
-
-def _actionAppend(act1, act2):
- # This function knows how to slap two actions together.
- # Mainly, it handles ListActions by concatenating into
- # a single ListAction.
- a1 = Action(act1)
- a2 = Action(act2)
- if a1 is None or a2 is None:
- raise TypeError("Cannot append %s to %s" % (type(act1), type(act2)))
- if isinstance(a1, ListAction):
- if isinstance(a2, ListAction):
- return ListAction(a1.list + a2.list)
- else:
- return ListAction(a1.list + [ a2 ])
- else:
- if isinstance(a2, ListAction):
- return ListAction([ a1 ] + a2.list)
- else:
- return ListAction([ a1, a2 ])
-
-def _do_create_keywords(args, kw):
- """This converts any arguments after the action argument into
- their equivalent keywords and adds them to the kw argument.
- """
- v = kw.get('varlist', ())
- # prevent varlist="FOO" from being interpreted as ['F', 'O', 'O']
- if is_String(v): v = (v,)
- kw['varlist'] = tuple(v)
- if args:
- # turn positional args into equivalent keywords
- cmdstrfunc = args[0]
- if cmdstrfunc is None or is_String(cmdstrfunc):
- kw['cmdstr'] = cmdstrfunc
- elif callable(cmdstrfunc):
- kw['strfunction'] = cmdstrfunc
- else:
- raise SCons.Errors.UserError(
- 'Invalid command display variable type. '
- 'You must either pass a string or a callback which '
- 'accepts (target, source, env) as parameters.')
- if len(args) > 1:
- kw['varlist'] = args[1:] + kw['varlist']
- if kw.get('strfunction', _null) is not _null \
- and kw.get('cmdstr', _null) is not _null:
- raise SCons.Errors.UserError(
- 'Cannot have both strfunction and cmdstr args to Action()')
-
-def _do_create_action(act, kw):
- """This is the actual "implementation" for the
- Action factory method, below. This handles the
- fact that passing lists to Action() itself has
- different semantics than passing lists as elements
- of lists.
-
- The former will create a ListAction, the latter
- will create a CommandAction by converting the inner
- list elements to strings."""
-
- if isinstance(act, ActionBase):
- return act
-
- if is_List(act):
- return CommandAction(act, **kw)
-
- if callable(act):
- try:
- gen = kw['generator']
- del kw['generator']
- except KeyError:
- gen = 0
- if gen:
- action_type = CommandGeneratorAction
- else:
- action_type = FunctionAction
- return action_type(act, kw)
-
- if is_String(act):
- var=SCons.Util.get_environment_var(act)
- if var:
- # This looks like a string that is purely an Environment
- # variable reference, like "$FOO" or "${FOO}". We do
- # something special here...we lazily evaluate the contents
- # of that Environment variable, so a user could put something
- # like a function or a CommandGenerator in that variable
- # instead of a string.
- return LazyAction(var, kw)
- commands = str(act).split('\n')
- if len(commands) == 1:
- return CommandAction(commands[0], **kw)
- # The list of string commands may include a LazyAction, so we
- # reprocess them via _do_create_list_action.
- return _do_create_list_action(commands, kw)
- return None
-
-def _do_create_list_action(act, kw):
- """A factory for list actions. Convert the input list into Actions
- and then wrap them in a ListAction."""
- acts = []
- for a in act:
- aa = _do_create_action(a, kw)
- if aa is not None: acts.append(aa)
- if not acts:
- return ListAction([])
- elif len(acts) == 1:
- return acts[0]
- else:
- return ListAction(acts)
-
-def Action(act, *args, **kw):
- """A factory for action objects."""
- # Really simple: the _do_create_* routines do the heavy lifting.
- _do_create_keywords(args, kw)
- if is_List(act):
- return _do_create_list_action(act, kw)
- return _do_create_action(act, kw)
-
-class ActionBase(object):
- """Base class for all types of action objects that can be held by
- other objects (Builders, Executors, etc.) This provides the
- common methods for manipulating and combining those actions."""
-
- def __cmp__(self, other):
- return cmp(self.__dict__, other)
-
- def no_batch_key(self, env, target, source):
- return None
-
- batch_key = no_batch_key
-
- def genstring(self, target, source, env):
- return str(self)
-
- def get_contents(self, target, source, env):
- result = [ self.get_presig(target, source, env) ]
- # This should never happen, as the Action() factory should wrap
- # the varlist, but just in case an action is created directly,
- # we duplicate this check here.
- vl = self.get_varlist(target, source, env)
- if is_String(vl): vl = (vl,)
- for v in vl:
- result.append(env.subst('${'+v+'}'))
- return ''.join(result)
-
- def __add__(self, other):
- return _actionAppend(self, other)
-
- def __radd__(self, other):
- return _actionAppend(other, self)
-
- def presub_lines(self, env):
- # CommandGeneratorAction needs a real environment
- # in order to return the proper string here, since
- # it may call LazyAction, which looks up a key
- # in that env. So we temporarily remember the env here,
- # and CommandGeneratorAction will use this env
- # when it calls its _generate method.
- self.presub_env = env
- lines = str(self).split('\n')
- self.presub_env = None # don't need this any more
- return lines
-
- def get_varlist(self, target, source, env, executor=None):
- return self.varlist
-
- def get_targets(self, env, executor):
- """
- Returns the type of targets ($TARGETS, $CHANGED_TARGETS) used
- by this action.
- """
- return self.targets
-
-class _ActionAction(ActionBase):
- """Base class for actions that create output objects."""
- def __init__(self, cmdstr=_null, strfunction=_null, varlist=(),
- presub=_null, chdir=None, exitstatfunc=None,
- batch_key=None, targets='$TARGETS',
- **kw):
- self.cmdstr = cmdstr
- if strfunction is not _null:
- if strfunction is None:
- self.cmdstr = None
- else:
- self.strfunction = strfunction
- self.varlist = varlist
- self.presub = presub
- self.chdir = chdir
- if not exitstatfunc:
- exitstatfunc = default_exitstatfunc
- self.exitstatfunc = exitstatfunc
-
- self.targets = targets
-
- if batch_key:
- if not callable(batch_key):
- # They have set batch_key, but not to their own
- # callable. The default behavior here will batch
- # *all* targets+sources using this action, separated
- # for each construction environment.
- def default_batch_key(self, env, target, source):
- return (id(self), id(env))
- batch_key = default_batch_key
- SCons.Util.AddMethod(self, batch_key, 'batch_key')
-
- def print_cmd_line(self, s, target, source, env):
- sys.stdout.write(s + u"\n")
-
- def __call__(self, target, source, env,
- exitstatfunc=_null,
- presub=_null,
- show=_null,
- execute=_null,
- chdir=_null,
- executor=None):
- if not is_List(target):
- target = [target]
- if not is_List(source):
- source = [source]
-
- if presub is _null:
- presub = self.presub
- if presub is _null:
- presub = print_actions_presub
- if exitstatfunc is _null: exitstatfunc = self.exitstatfunc
- if show is _null: show = print_actions
- if execute is _null: execute = execute_actions
- if chdir is _null: chdir = self.chdir
- save_cwd = None
- if chdir:
- save_cwd = os.getcwd()
- try:
- chdir = str(chdir.abspath)
- except AttributeError:
- if not is_String(chdir):
- if executor:
- chdir = str(executor.batches[0].targets[0].dir)
- else:
- chdir = str(target[0].dir)
- if presub:
- if executor:
- target = executor.get_all_targets()
- source = executor.get_all_sources()
- t = ' and '.join(map(str, target))
- l = '\n '.join(self.presub_lines(env))
- out = u"Building %s with action:\n %s\n" % (t, l)
- sys.stdout.write(out)
- cmd = None
- if show and self.strfunction:
- if executor:
- target = executor.get_all_targets()
- source = executor.get_all_sources()
- try:
- cmd = self.strfunction(target, source, env, executor)
- except TypeError:
- cmd = self.strfunction(target, source, env)
- if cmd:
- if chdir:
- cmd = ('os.chdir(%s)\n' % repr(chdir)) + cmd
- try:
- get = env.get
- except AttributeError:
- print_func = self.print_cmd_line
- else:
- print_func = get('PRINT_CMD_LINE_FUNC')
- if not print_func:
- print_func = self.print_cmd_line
- print_func(cmd, target, source, env)
- stat = 0
- if execute:
- if chdir:
- os.chdir(chdir)
- try:
- stat = self.execute(target, source, env, executor=executor)
- if isinstance(stat, SCons.Errors.BuildError):
- s = exitstatfunc(stat.status)
- if s:
- stat.status = s
- else:
- stat = s
- else:
- stat = exitstatfunc(stat)
- finally:
- if save_cwd:
- os.chdir(save_cwd)
- if cmd and save_cwd:
- print_func('os.chdir(%s)' % repr(save_cwd), target, source, env)
-
- return stat
-
-
-def _string_from_cmd_list(cmd_list):
- """Takes a list of command line arguments and returns a pretty
- representation for printing."""
- cl = []
- for arg in map(str, cmd_list):
- if ' ' in arg or '\t' in arg:
- arg = '"' + arg + '"'
- cl.append(arg)
- return ' '.join(cl)
-
-# A fiddlin' little function that has an 'import SCons.Environment' which
-# can't be moved to the top level without creating an import loop. Since
-# this import creates a local variable named 'SCons', it blocks access to
-# the global variable, so we move it here to prevent complaints about local
-# variables being used uninitialized.
-default_ENV = None
-def get_default_ENV(env):
- global default_ENV
- try:
- return env['ENV']
- except KeyError:
- if not default_ENV:
- import SCons.Environment
- # This is a hideously expensive way to get a default shell
- # environment. What it really should do is run the platform
- # setup to get the default ENV. Fortunately, it's incredibly
- # rare for an Environment not to have a shell environment, so
- # we're not going to worry about it overmuch.
- default_ENV = SCons.Environment.Environment()['ENV']
- return default_ENV
-
-# This function is still in draft mode. We're going to need something like
-# it in the long run as more and more places use subprocess, but I'm sure
-# it'll have to be tweaked to get the full desired functionality.
-# one special arg (so far?), 'error', to tell what to do with exceptions.
-def _subproc(scons_env, cmd, error = 'ignore', **kw):
- """Do common setup for a subprocess.Popen() call"""
- # allow std{in,out,err} to be "'devnull'"
- io = kw.get('stdin')
- if is_String(io) and io == 'devnull':
- kw['stdin'] = open(os.devnull)
- io = kw.get('stdout')
- if is_String(io) and io == 'devnull':
- kw['stdout'] = open(os.devnull, 'w')
- io = kw.get('stderr')
- if is_String(io) and io == 'devnull':
- kw['stderr'] = open(os.devnull, 'w')
-
- # Figure out what shell environment to use
- ENV = kw.get('env', None)
- if ENV is None: ENV = get_default_ENV(scons_env)
-
- # Ensure that the ENV values are all strings:
- new_env = {}
- for key, value in ENV.items():
- if is_List(value):
- # If the value is a list, then we assume it is a path list,
- # because that's a pretty common list-like value to stick
- # in an environment variable:
- value = SCons.Util.flatten_sequence(value)
- new_env[key] = os.pathsep.join(map(str, value))
- else:
- # It's either a string or something else. If it's a string,
- # we still want to call str() because it might be a *Unicode*
- # string, which makes subprocess.Popen() gag. If it isn't a
- # string or a list, then we just coerce it to a string, which
- # is the proper way to handle Dir and File instances and will
- # produce something reasonable for just about everything else:
- new_env[key] = str(value)
- kw['env'] = new_env
-
- try:
- #FUTURE return subprocess.Popen(cmd, **kw)
- return subprocess.Popen(cmd, **kw)
- except EnvironmentError, e:
- if error == 'raise': raise
- # return a dummy Popen instance that only returns error
- class dummyPopen(object):
- def __init__(self, e): self.exception = e
- def communicate(self): return ('','')
- def wait(self): return -self.exception.errno
- stdin = None
- class f(object):
- def read(self): return ''
- def readline(self): return ''
- stdout = stderr = f()
- return dummyPopen(e)
-
-class CommandAction(_ActionAction):
- """Class for command-execution actions."""
- def __init__(self, cmd, **kw):
- # Cmd can actually be a list or a single item; if it's a
- # single item it should be the command string to execute; if a
- # list then it should be the words of the command string to
- # execute. Only a single command should be executed by this
- # object; lists of commands should be handled by embedding
- # these objects in a ListAction object (which the Action()
- # factory above does). cmd will be passed to
- # Environment.subst_list() for substituting environment
- # variables.
- if __debug__: logInstanceCreation(self, 'Action.CommandAction')
-
- _ActionAction.__init__(self, **kw)
- if is_List(cmd):
- if list(filter(is_List, cmd)):
- raise TypeError("CommandAction should be given only " \
- "a single command")
- self.cmd_list = cmd
-
- def __str__(self):
- if is_List(self.cmd_list):
- return ' '.join(map(str, self.cmd_list))
- return str(self.cmd_list)
-
- def process(self, target, source, env, executor=None):
- if executor:
- result = env.subst_list(self.cmd_list, 0, executor=executor)
- else:
- result = env.subst_list(self.cmd_list, 0, target, source)
- silent = None
- ignore = None
- while True:
- try: c = result[0][0][0]
- except IndexError: c = None
- if c == '@': silent = 1
- elif c == '-': ignore = 1
- else: break
- result[0][0] = result[0][0][1:]
- try:
- if not result[0][0]:
- result[0] = result[0][1:]
- except IndexError:
- pass
- return result, ignore, silent
-
- def strfunction(self, target, source, env, executor=None):
- if self.cmdstr is None:
- return None
- if self.cmdstr is not _null:
- from SCons.Subst import SUBST_RAW
- if executor:
- c = env.subst(self.cmdstr, SUBST_RAW, executor=executor)
- else:
- c = env.subst(self.cmdstr, SUBST_RAW, target, source)
- if c:
- return c
- cmd_list, ignore, silent = self.process(target, source, env, executor)
- if silent:
- return ''
- return _string_from_cmd_list(cmd_list[0])
-
- def execute(self, target, source, env, executor=None):
- """Execute a command action.
-
- This will handle lists of commands as well as individual commands,
- because construction variable substitution may turn a single
- "command" into a list. This means that this class can actually
- handle lists of commands, even though that's not how we use it
- externally.
- """
- escape_list = SCons.Subst.escape_list
- flatten_sequence = SCons.Util.flatten_sequence
-
- try:
- shell = env['SHELL']
- except KeyError:
- raise SCons.Errors.UserError('Missing SHELL construction variable.')
-
- try:
- spawn = env['SPAWN']
- except KeyError:
- raise SCons.Errors.UserError('Missing SPAWN construction variable.')
- else:
- if is_String(spawn):
- spawn = env.subst(spawn, raw=1, conv=lambda x: x)
-
- escape = env.get('ESCAPE', lambda x: x)
-
- ENV = get_default_ENV(env)
-
- # Ensure that the ENV values are all strings:
- for key, value in ENV.items():
- if not is_String(value):
- if is_List(value):
- # If the value is a list, then we assume it is a
- # path list, because that's a pretty common list-like
- # value to stick in an environment variable:
- value = flatten_sequence(value)
- ENV[key] = os.pathsep.join(map(str, value))
- else:
- # If it isn't a string or a list, then we just coerce
- # it to a string, which is the proper way to handle
- # Dir and File instances and will produce something
- # reasonable for just about everything else:
- ENV[key] = str(value)
-
- if executor:
- target = executor.get_all_targets()
- source = executor.get_all_sources()
- cmd_list, ignore, silent = self.process(target, list(map(rfile, source)), env, executor)
-
- # Use len() to filter out any "command" that's zero-length.
- for cmd_line in filter(len, cmd_list):
- # Escape the command line for the interpreter we are using.
- cmd_line = escape_list(cmd_line, escape)
- result = spawn(shell, escape, cmd_line[0], cmd_line, ENV)
- if not ignore and result:
- msg = "Error %s" % result
- return SCons.Errors.BuildError(errstr=msg,
- status=result,
- action=self,
- command=cmd_line)
- return 0
-
- def get_presig(self, target, source, env, executor=None):
- """Return the signature contents of this action's command line.
-
- This strips $(-$) and everything in between the string,
- since those parts don't affect signatures.
- """
- from SCons.Subst import SUBST_SIG
- cmd = self.cmd_list
- if is_List(cmd):
- cmd = ' '.join(map(str, cmd))
- else:
- cmd = str(cmd)
- if executor:
- return env.subst_target_source(cmd, SUBST_SIG, executor=executor)
- else:
- return env.subst_target_source(cmd, SUBST_SIG, target, source)
-
- def get_implicit_deps(self, target, source, env, executor=None):
- icd = env.get('IMPLICIT_COMMAND_DEPENDENCIES', True)
- if is_String(icd) and icd[:1] == '$':
- icd = env.subst(icd)
- if not icd or icd in ('0', 'None'):
- return []
- from SCons.Subst import SUBST_SIG
- if executor:
- cmd_list = env.subst_list(self.cmd_list, SUBST_SIG, executor=executor)
- else:
- cmd_list = env.subst_list(self.cmd_list, SUBST_SIG, target, source)
- res = []
- for cmd_line in cmd_list:
- if cmd_line:
- d = str(cmd_line[0])
- m = strip_quotes.match(d)
- if m:
- d = m.group(1)
- d = env.WhereIs(d)
- if d:
- res.append(env.fs.File(d))
- return res
-
-class CommandGeneratorAction(ActionBase):
- """Class for command-generator actions."""
- def __init__(self, generator, kw):
- if __debug__: logInstanceCreation(self, 'Action.CommandGeneratorAction')
- self.generator = generator
- self.gen_kw = kw
- self.varlist = kw.get('varlist', ())
- self.targets = kw.get('targets', '$TARGETS')
-
- def _generate(self, target, source, env, for_signature, executor=None):
- # ensure that target is a list, to make it easier to write
- # generator functions:
- if not is_List(target):
- target = [target]
-
- if executor:
- target = executor.get_all_targets()
- source = executor.get_all_sources()
- ret = self.generator(target=target,
- source=source,
- env=env,
- for_signature=for_signature)
- gen_cmd = Action(ret, **self.gen_kw)
- if not gen_cmd:
- raise SCons.Errors.UserError("Object returned from command generator: %s cannot be used to create an Action." % repr(ret))
- return gen_cmd
-
- def __str__(self):
- try:
- env = self.presub_env
- except AttributeError:
- env = None
- if env is None:
- env = SCons.Defaults.DefaultEnvironment()
- act = self._generate([], [], env, 1)
- return str(act)
-
- def batch_key(self, env, target, source):
- return self._generate(target, source, env, 1).batch_key(env, target, source)
-
- def genstring(self, target, source, env, executor=None):
- return self._generate(target, source, env, 1, executor).genstring(target, source, env)
-
- def __call__(self, target, source, env, exitstatfunc=_null, presub=_null,
- show=_null, execute=_null, chdir=_null, executor=None):
- act = self._generate(target, source, env, 0, executor)
- if act is None:
- raise UserError("While building `%s': "
- "Cannot deduce file extension from source files: %s"
- % (repr(list(map(str, target))), repr(list(map(str, source)))))
- return act(target, source, env, exitstatfunc, presub,
- show, execute, chdir, executor)
-
- def get_presig(self, target, source, env, executor=None):
- """Return the signature contents of this action's command line.
-
- This strips $(-$) and everything in between the string,
- since those parts don't affect signatures.
- """
- return self._generate(target, source, env, 1, executor).get_presig(target, source, env)
-
- def get_implicit_deps(self, target, source, env, executor=None):
- return self._generate(target, source, env, 1, executor).get_implicit_deps(target, source, env)
-
- def get_varlist(self, target, source, env, executor=None):
- return self._generate(target, source, env, 1, executor).get_varlist(target, source, env, executor)
-
- def get_targets(self, env, executor):
- return self._generate(None, None, env, 1, executor).get_targets(env, executor)
-
-
-
-# A LazyAction is a kind of hybrid generator and command action for
-# strings of the form "$VAR". These strings normally expand to other
-# strings (think "$CCCOM" to "$CC -c -o $TARGET $SOURCE"), but we also
-# want to be able to replace them with functions in the construction
-# environment. Consequently, we want lazy evaluation and creation of
-# an Action in the case of the function, but that's overkill in the more
-# normal case of expansion to other strings.
-#
-# So we do this with a subclass that's both a generator *and*
-# a command action. The overridden methods all do a quick check
-# of the construction variable, and if it's a string we just call
-# the corresponding CommandAction method to do the heavy lifting.
-# If not, then we call the same-named CommandGeneratorAction method.
-# The CommandGeneratorAction methods work by using the overridden
-# _generate() method, that is, our own way of handling "generation" of
-# an action based on what's in the construction variable.
-
-class LazyAction(CommandGeneratorAction, CommandAction):
-
- def __init__(self, var, kw):
- if __debug__: logInstanceCreation(self, 'Action.LazyAction')
- #FUTURE CommandAction.__init__(self, '${'+var+'}', **kw)
- CommandAction.__init__(self, '${'+var+'}', **kw)
- self.var = SCons.Util.to_String(var)
- self.gen_kw = kw
-
- def get_parent_class(self, env):
- c = env.get(self.var)
- if is_String(c) and not '\n' in c:
- return CommandAction
- return CommandGeneratorAction
-
- def _generate_cache(self, env):
- if env:
- c = env.get(self.var, '')
- else:
- c = ''
- gen_cmd = Action(c, **self.gen_kw)
- if not gen_cmd:
- raise SCons.Errors.UserError("$%s value %s cannot be used to create an Action." % (self.var, repr(c)))
- return gen_cmd
-
- def _generate(self, target, source, env, for_signature, executor=None):
- return self._generate_cache(env)
-
- def __call__(self, target, source, env, *args, **kw):
- c = self.get_parent_class(env)
- return c.__call__(self, target, source, env, *args, **kw)
-
- def get_presig(self, target, source, env):
- c = self.get_parent_class(env)
- return c.get_presig(self, target, source, env)
-
- def get_varlist(self, target, source, env, executor=None):
- c = self.get_parent_class(env)
- return c.get_varlist(self, target, source, env, executor)
-
-
-class FunctionAction(_ActionAction):
- """Class for Python function actions."""
-
- def __init__(self, execfunction, kw):
- if __debug__: logInstanceCreation(self, 'Action.FunctionAction')
-
- self.execfunction = execfunction
- try:
- self.funccontents = _callable_contents(execfunction)
- except AttributeError:
- try:
- # See if execfunction will do the heavy lifting for us.
- self.gc = execfunction.get_contents
- except AttributeError:
- # This is weird, just do the best we can.
- self.funccontents = _object_contents(execfunction)
-
- _ActionAction.__init__(self, **kw)
-
- def function_name(self):
- try:
- return self.execfunction.__name__
- except AttributeError:
- try:
- return self.execfunction.__class__.__name__
- except AttributeError:
- return "unknown_python_function"
-
- def strfunction(self, target, source, env, executor=None):
- if self.cmdstr is None:
- return None
- if self.cmdstr is not _null:
- from SCons.Subst import SUBST_RAW
- if executor:
- c = env.subst(self.cmdstr, SUBST_RAW, executor=executor)
- else:
- c = env.subst(self.cmdstr, SUBST_RAW, target, source)
- if c:
- return c
- def array(a):
- def quote(s):
- try:
- str_for_display = s.str_for_display
- except AttributeError:
- s = repr(s)
- else:
- s = str_for_display()
- return s
- return '[' + ", ".join(map(quote, a)) + ']'
- try:
- strfunc = self.execfunction.strfunction
- except AttributeError:
- pass
- else:
- if strfunc is None:
- return None
- if callable(strfunc):
- return strfunc(target, source, env)
- name = self.function_name()
- tstr = array(target)
- sstr = array(source)
- return "%s(%s, %s)" % (name, tstr, sstr)
-
- def __str__(self):
- name = self.function_name()
- if name == 'ActionCaller':
- return str(self.execfunction)
- return "%s(target, source, env)" % name
-
- def execute(self, target, source, env, executor=None):
- exc_info = (None,None,None)
- try:
- if executor:
- target = executor.get_all_targets()
- source = executor.get_all_sources()
- rsources = list(map(rfile, source))
- try:
- result = self.execfunction(target=target, source=rsources, env=env)
- except KeyboardInterrupt, e:
- raise
- except SystemExit, e:
- raise
- except Exception, e:
- result = e
- exc_info = sys.exc_info()
-
- if result:
- result = SCons.Errors.convert_to_BuildError(result, exc_info)
- result.node=target
- result.action=self
- try:
- result.command=self.strfunction(target, source, env, executor)
- except TypeError:
- result.command=self.strfunction(target, source, env)
-
- # FIXME: This maintains backward compatibility with respect to
- # which type of exceptions were returned by raising an
- # exception and which ones were returned by value. It would
- # probably be best to always return them by value here, but
- # some codes do not check the return value of Actions and I do
- # not have the time to modify them at this point.
- if (exc_info[1] and
- not isinstance(exc_info[1],EnvironmentError)):
- raise result
-
- return result
- finally:
- # Break the cycle between the traceback object and this
- # function stack frame. See the sys.exc_info() doc info for
- # more information about this issue.
- del exc_info
-
-
- def get_presig(self, target, source, env):
- """Return the signature contents of this callable action."""
- try:
- return self.gc(target, source, env)
- except AttributeError:
- return self.funccontents
-
- def get_implicit_deps(self, target, source, env):
- return []
-
-class ListAction(ActionBase):
- """Class for lists of other actions."""
- def __init__(self, actionlist):
- if __debug__: logInstanceCreation(self, 'Action.ListAction')
- def list_of_actions(x):
- if isinstance(x, ActionBase):
- return x
- return Action(x)
- self.list = list(map(list_of_actions, actionlist))
- # our children will have had any varlist
- # applied; we don't need to do it again
- self.varlist = ()
- self.targets = '$TARGETS'
-
- def genstring(self, target, source, env):
- return '\n'.join([a.genstring(target, source, env) for a in self.list])
-
- def __str__(self):
- return '\n'.join(map(str, self.list))
-
- def presub_lines(self, env):
- return SCons.Util.flatten_sequence(
- [a.presub_lines(env) for a in self.list])
-
- def get_presig(self, target, source, env):
- """Return the signature contents of this action list.
-
- Simple concatenation of the signatures of the elements.
- """
- return "".join([x.get_contents(target, source, env) for x in self.list])
-
- def __call__(self, target, source, env, exitstatfunc=_null, presub=_null,
- show=_null, execute=_null, chdir=_null, executor=None):
- if executor:
- target = executor.get_all_targets()
- source = executor.get_all_sources()
- for act in self.list:
- stat = act(target, source, env, exitstatfunc, presub,
- show, execute, chdir, executor)
- if stat:
- return stat
- return 0
-
- def get_implicit_deps(self, target, source, env):
- result = []
- for act in self.list:
- result.extend(act.get_implicit_deps(target, source, env))
- return result
-
- def get_varlist(self, target, source, env, executor=None):
- result = SCons.Util.OrderedDict()
- for act in self.list:
- for var in act.get_varlist(target, source, env, executor):
- result[var] = True
- return list(result.keys())
-
-class ActionCaller(object):
- """A class for delaying calling an Action function with specific
- (positional and keyword) arguments until the Action is actually
- executed.
-
- This class looks to the rest of the world like a normal Action object,
- but what it's really doing is hanging on to the arguments until we
- have a target, source and env to use for the expansion.
- """
- def __init__(self, parent, args, kw):
- self.parent = parent
- self.args = args
- self.kw = kw
-
- def get_contents(self, target, source, env):
- actfunc = self.parent.actfunc
- try:
- # "self.actfunc" is a function.
- contents = str(actfunc.func_code.co_code)
- except AttributeError:
- # "self.actfunc" is a callable object.
- try:
- contents = str(actfunc.__call__.im_func.func_code.co_code)
- except AttributeError:
- # No __call__() method, so it might be a builtin
- # or something like that. Do the best we can.
- contents = str(actfunc)
- contents = remove_set_lineno_codes(contents)
- return contents
-
- def subst(self, s, target, source, env):
- # If s is a list, recursively apply subst()
- # to every element in the list
- if is_List(s):
- result = []
- for elem in s:
- result.append(self.subst(elem, target, source, env))
- return self.parent.convert(result)
-
- # Special-case hack: Let a custom function wrapped in an
- # ActionCaller get at the environment through which the action
- # was called by using this hard-coded value as a special return.
- if s == '$__env__':
- return env
- elif is_String(s):
- return env.subst(s, 1, target, source)
- return self.parent.convert(s)
-
- def subst_args(self, target, source, env):
- return [self.subst(x, target, source, env) for x in self.args]
-
- def subst_kw(self, target, source, env):
- kw = {}
- for key in self.kw.keys():
- kw[key] = self.subst(self.kw[key], target, source, env)
- return kw
-
- def __call__(self, target, source, env, executor=None):
- args = self.subst_args(target, source, env)
- kw = self.subst_kw(target, source, env)
- return self.parent.actfunc(*args, **kw)
-
- def strfunction(self, target, source, env):
- args = self.subst_args(target, source, env)
- kw = self.subst_kw(target, source, env)
- return self.parent.strfunc(*args, **kw)
-
- def __str__(self):
- return self.parent.strfunc(*self.args, **self.kw)
-
-class ActionFactory(object):
- """A factory class that will wrap up an arbitrary function
- as an SCons-executable Action object.
-
- The real heavy lifting here is done by the ActionCaller class.
- We just collect the (positional and keyword) arguments that we're
- called with and give them to the ActionCaller object we create,
- so it can hang onto them until it needs them.
- """
- def __init__(self, actfunc, strfunc, convert=lambda x: x):
- self.actfunc = actfunc
- self.strfunc = strfunc
- self.convert = convert
-
- def __call__(self, *args, **kw):
- ac = ActionCaller(self, args, kw)
- action = Action(ac, strfunction=ac.strfunction)
- return action
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Builder.py b/Externals/scons-local/scons-local-2.0.1/SCons/Builder.py
deleted file mode 100644
index 0592bb4922..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Builder.py
+++ /dev/null
@@ -1,877 +0,0 @@
-"""SCons.Builder
-
-Builder object subsystem.
-
-A Builder object is a callable that encapsulates information about how
-to execute actions to create a target Node (file) from source Nodes
-(files), and how to create those dependencies for tracking.
-
-The main entry point here is the Builder() factory method. This provides
-a procedural interface that creates the right underlying Builder object
-based on the keyword arguments supplied and the types of the arguments.
-
-The goal is for this external interface to be simple enough that the
-vast majority of users can create new Builders as necessary to support
-building new types of files in their configurations, without having to
-dive any deeper into this subsystem.
-
-The base class here is BuilderBase. This is a concrete base class which
-does, in fact, represent the Builder objects that we (or users) create.
-
-There is also a proxy that looks like a Builder:
-
- CompositeBuilder
-
- This proxies for a Builder with an action that is actually a
- dictionary that knows how to map file suffixes to a specific
- action. This is so that we can invoke different actions
- (compilers, compile options) for different flavors of source
- files.
-
-Builders and their proxies have the following public interface methods
-used by other modules:
-
- __call__()
- THE public interface. Calling a Builder object (with the
- use of internal helper methods) sets up the target and source
- dependencies, appropriate mapping to a specific action, and the
- environment manipulation necessary for overridden construction
- variable. This also takes care of warning about possible mistakes
- in keyword arguments.
-
- add_emitter()
- Adds an emitter for a specific file suffix, used by some Tool
- modules to specify that (for example) a yacc invocation on a .y
- can create a .h *and* a .c file.
-
- add_action()
- Adds an action for a specific file suffix, heavily used by
- Tool modules to add their specific action(s) for turning
- a source file into an object file to the global static
- and shared object file Builders.
-
-There are the following methods for internal use within this module:
-
- _execute()
- The internal method that handles the heavily lifting when a
- Builder is called. This is used so that the __call__() methods
- can set up warning about possible mistakes in keyword-argument
- overrides, and *then* execute all of the steps necessary so that
- the warnings only occur once.
-
- get_name()
- Returns the Builder's name within a specific Environment,
- primarily used to try to return helpful information in error
- messages.
-
- adjust_suffix()
- get_prefix()
- get_suffix()
- get_src_suffix()
- set_src_suffix()
- Miscellaneous stuff for handling the prefix and suffix
- manipulation we use in turning source file names into target
- file names.
-
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-__revision__ = "src/engine/SCons/Builder.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import collections
-
-import SCons.Action
-from SCons.Debug import logInstanceCreation
-from SCons.Errors import InternalError, UserError
-import SCons.Executor
-import SCons.Memoize
-import SCons.Node
-import SCons.Node.FS
-import SCons.Util
-import SCons.Warnings
-
-class _Null(object):
- pass
-
-_null = _Null
-
-def match_splitext(path, suffixes = []):
- if suffixes:
- matchsuf = [S for S in suffixes if path[-len(S):] == S]
- if matchsuf:
- suf = max([(len(_f),_f) for _f in matchsuf])[1]
- return [path[:-len(suf)], path[-len(suf):]]
- return SCons.Util.splitext(path)
-
-class DictCmdGenerator(SCons.Util.Selector):
- """This is a callable class that can be used as a
- command generator function. It holds on to a dictionary
- mapping file suffixes to Actions. It uses that dictionary
- to return the proper action based on the file suffix of
- the source file."""
-
- def __init__(self, dict=None, source_ext_match=1):
- SCons.Util.Selector.__init__(self, dict)
- self.source_ext_match = source_ext_match
-
- def src_suffixes(self):
- return list(self.keys())
-
- def add_action(self, suffix, action):
- """Add a suffix-action pair to the mapping.
- """
- self[suffix] = action
-
- def __call__(self, target, source, env, for_signature):
- if not source:
- return []
-
- if self.source_ext_match:
- suffixes = self.src_suffixes()
- ext = None
- for src in map(str, source):
- my_ext = match_splitext(src, suffixes)[1]
- if ext and my_ext != ext:
- raise UserError("While building `%s' from `%s': Cannot build multiple sources with different extensions: %s, %s"
- % (repr(list(map(str, target))), src, ext, my_ext))
- ext = my_ext
- else:
- ext = match_splitext(str(source[0]), self.src_suffixes())[1]
-
- if not ext:
- #return ext
- raise UserError("While building `%s': "
- "Cannot deduce file extension from source files: %s"
- % (repr(list(map(str, target))), repr(list(map(str, source)))))
-
- try:
- ret = SCons.Util.Selector.__call__(self, env, source, ext)
- except KeyError, e:
- raise UserError("Ambiguous suffixes after environment substitution: %s == %s == %s" % (e.args[0], e.args[1], e.args[2]))
- if ret is None:
- raise UserError("While building `%s' from `%s': Don't know how to build from a source file with suffix `%s'. Expected a suffix in this list: %s." % \
- (repr(list(map(str, target))), repr(list(map(str, source))), ext, repr(list(self.keys()))))
- return ret
-
-class CallableSelector(SCons.Util.Selector):
- """A callable dictionary that will, in turn, call the value it
- finds if it can."""
- def __call__(self, env, source):
- value = SCons.Util.Selector.__call__(self, env, source)
- if callable(value):
- value = value(env, source)
- return value
-
-class DictEmitter(SCons.Util.Selector):
- """A callable dictionary that maps file suffixes to emitters.
- When called, it finds the right emitter in its dictionary for the
- suffix of the first source file, and calls that emitter to get the
- right lists of targets and sources to return. If there's no emitter
- for the suffix in its dictionary, the original target and source are
- returned.
- """
- def __call__(self, target, source, env):
- emitter = SCons.Util.Selector.__call__(self, env, source)
- if emitter:
- target, source = emitter(target, source, env)
- return (target, source)
-
-class ListEmitter(collections.UserList):
- """A callable list of emitters that calls each in sequence,
- returning the result.
- """
- def __call__(self, target, source, env):
- for e in self.data:
- target, source = e(target, source, env)
- return (target, source)
-
-# These are a common errors when calling a Builder;
-# they are similar to the 'target' and 'source' keyword args to builders,
-# so we issue warnings when we see them. The warnings can, of course,
-# be disabled.
-misleading_keywords = {
- 'targets' : 'target',
- 'sources' : 'source',
-}
-
-class OverrideWarner(collections.UserDict):
- """A class for warning about keyword arguments that we use as
- overrides in a Builder call.
-
- This class exists to handle the fact that a single Builder call
- can actually invoke multiple builders. This class only emits the
- warnings once, no matter how many Builders are invoked.
- """
- def __init__(self, dict):
- collections.UserDict.__init__(self, dict)
- if __debug__: logInstanceCreation(self, 'Builder.OverrideWarner')
- self.already_warned = None
- def warn(self):
- if self.already_warned:
- return
- for k in self.keys():
- if k in misleading_keywords:
- alt = misleading_keywords[k]
- msg = "Did you mean to use `%s' instead of `%s'?" % (alt, k)
- SCons.Warnings.warn(SCons.Warnings.MisleadingKeywordsWarning, msg)
- self.already_warned = 1
-
-def Builder(**kw):
- """A factory for builder objects."""
- composite = None
- if 'generator' in kw:
- if 'action' in kw:
- raise UserError("You must not specify both an action and a generator.")
- kw['action'] = SCons.Action.CommandGeneratorAction(kw['generator'], {})
- del kw['generator']
- elif 'action' in kw:
- source_ext_match = kw.get('source_ext_match', 1)
- if 'source_ext_match' in kw:
- del kw['source_ext_match']
- if SCons.Util.is_Dict(kw['action']):
- composite = DictCmdGenerator(kw['action'], source_ext_match)
- kw['action'] = SCons.Action.CommandGeneratorAction(composite, {})
- kw['src_suffix'] = composite.src_suffixes()
- else:
- kw['action'] = SCons.Action.Action(kw['action'])
-
- if 'emitter' in kw:
- emitter = kw['emitter']
- if SCons.Util.is_String(emitter):
- # This allows users to pass in an Environment
- # variable reference (like "$FOO") as an emitter.
- # We will look in that Environment variable for
- # a callable to use as the actual emitter.
- var = SCons.Util.get_environment_var(emitter)
- if not var:
- raise UserError("Supplied emitter '%s' does not appear to refer to an Environment variable" % emitter)
- kw['emitter'] = EmitterProxy(var)
- elif SCons.Util.is_Dict(emitter):
- kw['emitter'] = DictEmitter(emitter)
- elif SCons.Util.is_List(emitter):
- kw['emitter'] = ListEmitter(emitter)
-
- result = BuilderBase(**kw)
-
- if not composite is None:
- result = CompositeBuilder(result, composite)
-
- return result
-
-def _node_errors(builder, env, tlist, slist):
- """Validate that the lists of target and source nodes are
- legal for this builder and environment. Raise errors or
- issue warnings as appropriate.
- """
-
- # First, figure out if there are any errors in the way the targets
- # were specified.
- for t in tlist:
- if t.side_effect:
- raise UserError("Multiple ways to build the same target were specified for: %s" % t)
- if t.has_explicit_builder():
- if not t.env is None and not t.env is env:
- action = t.builder.action
- t_contents = action.get_contents(tlist, slist, t.env)
- contents = action.get_contents(tlist, slist, env)
-
- if t_contents == contents:
- msg = "Two different environments were specified for target %s,\n\tbut they appear to have the same action: %s" % (t, action.genstring(tlist, slist, t.env))
- SCons.Warnings.warn(SCons.Warnings.DuplicateEnvironmentWarning, msg)
- else:
- msg = "Two environments with different actions were specified for the same target: %s" % t
- raise UserError(msg)
- if builder.multi:
- if t.builder != builder:
- msg = "Two different builders (%s and %s) were specified for the same target: %s" % (t.builder.get_name(env), builder.get_name(env), t)
- raise UserError(msg)
- # TODO(batch): list constructed each time!
- if t.get_executor().get_all_targets() != tlist:
- msg = "Two different target lists have a target in common: %s (from %s and from %s)" % (t, list(map(str, t.get_executor().get_all_targets())), list(map(str, tlist)))
- raise UserError(msg)
- elif t.sources != slist:
- msg = "Multiple ways to build the same target were specified for: %s (from %s and from %s)" % (t, list(map(str, t.sources)), list(map(str, slist)))
- raise UserError(msg)
-
- if builder.single_source:
- if len(slist) > 1:
- raise UserError("More than one source given for single-source builder: targets=%s sources=%s" % (list(map(str,tlist)), list(map(str,slist))))
-
-class EmitterProxy(object):
- """This is a callable class that can act as a
- Builder emitter. It holds on to a string that
- is a key into an Environment dictionary, and will
- look there at actual build time to see if it holds
- a callable. If so, we will call that as the actual
- emitter."""
- def __init__(self, var):
- self.var = SCons.Util.to_String(var)
-
- def __call__(self, target, source, env):
- emitter = self.var
-
- # Recursively substitute the variable.
- # We can't use env.subst() because it deals only
- # in strings. Maybe we should change that?
- while SCons.Util.is_String(emitter) and emitter in env:
- emitter = env[emitter]
- if callable(emitter):
- target, source = emitter(target, source, env)
- elif SCons.Util.is_List(emitter):
- for e in emitter:
- target, source = e(target, source, env)
-
- return (target, source)
-
-
- def __cmp__(self, other):
- return cmp(self.var, other.var)
-
-class BuilderBase(object):
- """Base class for Builders, objects that create output
- nodes (files) from input nodes (files).
- """
-
- if SCons.Memoize.use_memoizer:
- __metaclass__ = SCons.Memoize.Memoized_Metaclass
-
- memoizer_counters = []
-
- def __init__(self, action = None,
- prefix = '',
- suffix = '',
- src_suffix = '',
- target_factory = None,
- source_factory = None,
- target_scanner = None,
- source_scanner = None,
- emitter = None,
- multi = 0,
- env = None,
- single_source = 0,
- name = None,
- chdir = _null,
- is_explicit = 1,
- src_builder = None,
- ensure_suffix = False,
- **overrides):
- if __debug__: logInstanceCreation(self, 'Builder.BuilderBase')
- self._memo = {}
- self.action = action
- self.multi = multi
- if SCons.Util.is_Dict(prefix):
- prefix = CallableSelector(prefix)
- self.prefix = prefix
- if SCons.Util.is_Dict(suffix):
- suffix = CallableSelector(suffix)
- self.env = env
- self.single_source = single_source
- if 'overrides' in overrides:
- SCons.Warnings.warn(SCons.Warnings.DeprecatedBuilderKeywordsWarning,
- "The \"overrides\" keyword to Builder() creation has been deprecated;\n" +\
- "\tspecify the items as keyword arguments to the Builder() call instead.")
- overrides.update(overrides['overrides'])
- del overrides['overrides']
- if 'scanner' in overrides:
- SCons.Warnings.warn(SCons.Warnings.DeprecatedBuilderKeywordsWarning,
- "The \"scanner\" keyword to Builder() creation has been deprecated;\n"
- "\tuse: source_scanner or target_scanner as appropriate.")
- del overrides['scanner']
- self.overrides = overrides
-
- self.set_suffix(suffix)
- self.set_src_suffix(src_suffix)
- self.ensure_suffix = ensure_suffix
-
- self.target_factory = target_factory
- self.source_factory = source_factory
- self.target_scanner = target_scanner
- self.source_scanner = source_scanner
-
- self.emitter = emitter
-
- # Optional Builder name should only be used for Builders
- # that don't get attached to construction environments.
- if name:
- self.name = name
- self.executor_kw = {}
- if not chdir is _null:
- self.executor_kw['chdir'] = chdir
- self.is_explicit = is_explicit
-
- if src_builder is None:
- src_builder = []
- elif not SCons.Util.is_List(src_builder):
- src_builder = [ src_builder ]
- self.src_builder = src_builder
-
- def __nonzero__(self):
- raise InternalError("Do not test for the Node.builder attribute directly; use Node.has_builder() instead")
-
- def get_name(self, env):
- """Attempts to get the name of the Builder.
-
- Look at the BUILDERS variable of env, expecting it to be a
- dictionary containing this Builder, and return the key of the
- dictionary. If there's no key, then return a directly-configured
- name (if there is one) or the name of the class (by default)."""
-
- try:
- index = list(env['BUILDERS'].values()).index(self)
- return list(env['BUILDERS'].keys())[index]
- except (AttributeError, KeyError, TypeError, ValueError):
- try:
- return self.name
- except AttributeError:
- return str(self.__class__)
-
- def __cmp__(self, other):
- return cmp(self.__dict__, other.__dict__)
-
- def splitext(self, path, env=None):
- if not env:
- env = self.env
- if env:
- suffixes = self.src_suffixes(env)
- else:
- suffixes = []
- return match_splitext(path, suffixes)
-
- def _adjustixes(self, files, pre, suf, ensure_suffix=False):
- if not files:
- return []
- result = []
- if not SCons.Util.is_List(files):
- files = [files]
-
- for f in files:
- if SCons.Util.is_String(f):
- f = SCons.Util.adjustixes(f, pre, suf, ensure_suffix)
- result.append(f)
- return result
-
- def _create_nodes(self, env, target = None, source = None):
- """Create and return lists of target and source nodes.
- """
- src_suf = self.get_src_suffix(env)
-
- target_factory = env.get_factory(self.target_factory)
- source_factory = env.get_factory(self.source_factory)
-
- source = self._adjustixes(source, None, src_suf)
- slist = env.arg2nodes(source, source_factory)
-
- pre = self.get_prefix(env, slist)
- suf = self.get_suffix(env, slist)
-
- if target is None:
- try:
- t_from_s = slist[0].target_from_source
- except AttributeError:
- raise UserError("Do not know how to create a target from source `%s'" % slist[0])
- except IndexError:
- tlist = []
- else:
- splitext = lambda S: self.splitext(S,env)
- tlist = [ t_from_s(pre, suf, splitext) ]
- else:
- target = self._adjustixes(target, pre, suf, self.ensure_suffix)
- tlist = env.arg2nodes(target, target_factory, target=target, source=source)
-
- if self.emitter:
- # The emitter is going to do str(node), but because we're
- # being called *from* a builder invocation, the new targets
- # don't yet have a builder set on them and will look like
- # source files. Fool the emitter's str() calls by setting
- # up a temporary builder on the new targets.
- new_targets = []
- for t in tlist:
- if not t.is_derived():
- t.builder_set(self)
- new_targets.append(t)
-
- orig_tlist = tlist[:]
- orig_slist = slist[:]
-
- target, source = self.emitter(target=tlist, source=slist, env=env)
-
- # Now delete the temporary builders that we attached to any
- # new targets, so that _node_errors() doesn't do weird stuff
- # to them because it thinks they already have builders.
- for t in new_targets:
- if t.builder is self:
- # Only delete the temporary builder if the emitter
- # didn't change it on us.
- t.builder_set(None)
-
- # Have to call arg2nodes yet again, since it is legal for
- # emitters to spit out strings as well as Node instances.
- tlist = env.arg2nodes(target, target_factory,
- target=orig_tlist, source=orig_slist)
- slist = env.arg2nodes(source, source_factory,
- target=orig_tlist, source=orig_slist)
-
- return tlist, slist
-
- def _execute(self, env, target, source, overwarn={}, executor_kw={}):
- # We now assume that target and source are lists or None.
- if self.src_builder:
- source = self.src_builder_sources(env, source, overwarn)
-
- if self.single_source and len(source) > 1 and target is None:
- result = []
- if target is None: target = [None]*len(source)
- for tgt, src in zip(target, source):
- if not tgt is None: tgt = [tgt]
- if not src is None: src = [src]
- result.extend(self._execute(env, tgt, src, overwarn))
- return SCons.Node.NodeList(result)
-
- overwarn.warn()
-
- tlist, slist = self._create_nodes(env, target, source)
-
- # Check for errors with the specified target/source lists.
- _node_errors(self, env, tlist, slist)
-
- # The targets are fine, so find or make the appropriate Executor to
- # build this particular list of targets from this particular list of
- # sources.
-
- executor = None
- key = None
-
- if self.multi:
- try:
- executor = tlist[0].get_executor(create = 0)
- except (AttributeError, IndexError):
- pass
- else:
- executor.add_sources(slist)
-
- if executor is None:
- if not self.action:
- fmt = "Builder %s must have an action to build %s."
- raise UserError(fmt % (self.get_name(env or self.env),
- list(map(str,tlist))))
- key = self.action.batch_key(env or self.env, tlist, slist)
- if key:
- try:
- executor = SCons.Executor.GetBatchExecutor(key)
- except KeyError:
- pass
- else:
- executor.add_batch(tlist, slist)
-
- if executor is None:
- executor = SCons.Executor.Executor(self.action, env, [],
- tlist, slist, executor_kw)
- if key:
- SCons.Executor.AddBatchExecutor(key, executor)
-
- # Now set up the relevant information in the target Nodes themselves.
- for t in tlist:
- t.cwd = env.fs.getcwd()
- t.builder_set(self)
- t.env_set(env)
- t.add_source(slist)
- t.set_executor(executor)
- t.set_explicit(self.is_explicit)
-
- return SCons.Node.NodeList(tlist)
-
- def __call__(self, env, target=None, source=None, chdir=_null, **kw):
- # We now assume that target and source are lists or None.
- # The caller (typically Environment.BuilderWrapper) is
- # responsible for converting any scalar values to lists.
- if chdir is _null:
- ekw = self.executor_kw
- else:
- ekw = self.executor_kw.copy()
- ekw['chdir'] = chdir
- if kw:
- if 'srcdir' in kw:
- def prependDirIfRelative(f, srcdir=kw['srcdir']):
- import os.path
- if SCons.Util.is_String(f) and not os.path.isabs(f):
- f = os.path.join(srcdir, f)
- return f
- if not SCons.Util.is_List(source):
- source = [source]
- source = list(map(prependDirIfRelative, source))
- del kw['srcdir']
- if self.overrides:
- env_kw = self.overrides.copy()
- env_kw.update(kw)
- else:
- env_kw = kw
- else:
- env_kw = self.overrides
- env = env.Override(env_kw)
- return self._execute(env, target, source, OverrideWarner(kw), ekw)
-
- def adjust_suffix(self, suff):
- if suff and not suff[0] in [ '.', '_', '$' ]:
- return '.' + suff
- return suff
-
- def get_prefix(self, env, sources=[]):
- prefix = self.prefix
- if callable(prefix):
- prefix = prefix(env, sources)
- return env.subst(prefix)
-
- def set_suffix(self, suffix):
- if not callable(suffix):
- suffix = self.adjust_suffix(suffix)
- self.suffix = suffix
-
- def get_suffix(self, env, sources=[]):
- suffix = self.suffix
- if callable(suffix):
- suffix = suffix(env, sources)
- return env.subst(suffix)
-
- def set_src_suffix(self, src_suffix):
- if not src_suffix:
- src_suffix = []
- elif not SCons.Util.is_List(src_suffix):
- src_suffix = [ src_suffix ]
- self.src_suffix = [callable(suf) and suf or self.adjust_suffix(suf) for suf in src_suffix]
-
- def get_src_suffix(self, env):
- """Get the first src_suffix in the list of src_suffixes."""
- ret = self.src_suffixes(env)
- if not ret:
- return ''
- return ret[0]
-
- def add_emitter(self, suffix, emitter):
- """Add a suffix-emitter mapping to this Builder.
-
- This assumes that emitter has been initialized with an
- appropriate dictionary type, and will throw a TypeError if
- not, so the caller is responsible for knowing that this is an
- appropriate method to call for the Builder in question.
- """
- self.emitter[suffix] = emitter
-
- def add_src_builder(self, builder):
- """
- Add a new Builder to the list of src_builders.
-
- This requires wiping out cached values so that the computed
- lists of source suffixes get re-calculated.
- """
- self._memo = {}
- self.src_builder.append(builder)
-
- def _get_sdict(self, env):
- """
- Returns a dictionary mapping all of the source suffixes of all
- src_builders of this Builder to the underlying Builder that
- should be called first.
-
- This dictionary is used for each target specified, so we save a
- lot of extra computation by memoizing it for each construction
- environment.
-
- Note that this is re-computed each time, not cached, because there
- might be changes to one of our source Builders (or one of their
- source Builders, and so on, and so on...) that we can't "see."
-
- The underlying methods we call cache their computed values,
- though, so we hope repeatedly aggregating them into a dictionary
- like this won't be too big a hit. We may need to look for a
- better way to do this if performance data show this has turned
- into a significant bottleneck.
- """
- sdict = {}
- for bld in self.get_src_builders(env):
- for suf in bld.src_suffixes(env):
- sdict[suf] = bld
- return sdict
-
- def src_builder_sources(self, env, source, overwarn={}):
- sdict = self._get_sdict(env)
-
- src_suffixes = self.src_suffixes(env)
-
- lengths = list(set(map(len, src_suffixes)))
-
- def match_src_suffix(name, src_suffixes=src_suffixes, lengths=lengths):
- node_suffixes = [name[-l:] for l in lengths]
- for suf in src_suffixes:
- if suf in node_suffixes:
- return suf
- return None
-
- result = []
- for s in SCons.Util.flatten(source):
- if SCons.Util.is_String(s):
- match_suffix = match_src_suffix(env.subst(s))
- if not match_suffix and not '.' in s:
- src_suf = self.get_src_suffix(env)
- s = self._adjustixes(s, None, src_suf)[0]
- else:
- match_suffix = match_src_suffix(s.name)
- if match_suffix:
- try:
- bld = sdict[match_suffix]
- except KeyError:
- result.append(s)
- else:
- tlist = bld._execute(env, None, [s], overwarn)
- # If the subsidiary Builder returned more than one
- # target, then filter out any sources that this
- # Builder isn't capable of building.
- if len(tlist) > 1:
- tlist = [t for t in tlist if match_src_suffix(t.name)]
- result.extend(tlist)
- else:
- result.append(s)
-
- source_factory = env.get_factory(self.source_factory)
-
- return env.arg2nodes(result, source_factory)
-
- def _get_src_builders_key(self, env):
- return id(env)
-
- memoizer_counters.append(SCons.Memoize.CountDict('get_src_builders', _get_src_builders_key))
-
- def get_src_builders(self, env):
- """
- Returns the list of source Builders for this Builder.
-
- This exists mainly to look up Builders referenced as
- strings in the 'BUILDER' variable of the construction
- environment and cache the result.
- """
- memo_key = id(env)
- try:
- memo_dict = self._memo['get_src_builders']
- except KeyError:
- memo_dict = {}
- self._memo['get_src_builders'] = memo_dict
- else:
- try:
- return memo_dict[memo_key]
- except KeyError:
- pass
-
- builders = []
- for bld in self.src_builder:
- if SCons.Util.is_String(bld):
- try:
- bld = env['BUILDERS'][bld]
- except KeyError:
- continue
- builders.append(bld)
-
- memo_dict[memo_key] = builders
- return builders
-
- def _subst_src_suffixes_key(self, env):
- return id(env)
-
- memoizer_counters.append(SCons.Memoize.CountDict('subst_src_suffixes', _subst_src_suffixes_key))
-
- def subst_src_suffixes(self, env):
- """
- The suffix list may contain construction variable expansions,
- so we have to evaluate the individual strings. To avoid doing
- this over and over, we memoize the results for each construction
- environment.
- """
- memo_key = id(env)
- try:
- memo_dict = self._memo['subst_src_suffixes']
- except KeyError:
- memo_dict = {}
- self._memo['subst_src_suffixes'] = memo_dict
- else:
- try:
- return memo_dict[memo_key]
- except KeyError:
- pass
- suffixes = [env.subst(x) for x in self.src_suffix]
- memo_dict[memo_key] = suffixes
- return suffixes
-
- def src_suffixes(self, env):
- """
- Returns the list of source suffixes for all src_builders of this
- Builder.
-
- This is essentially a recursive descent of the src_builder "tree."
- (This value isn't cached because there may be changes in a
- src_builder many levels deep that we can't see.)
- """
- sdict = {}
- suffixes = self.subst_src_suffixes(env)
- for s in suffixes:
- sdict[s] = 1
- for builder in self.get_src_builders(env):
- for s in builder.src_suffixes(env):
- if s not in sdict:
- sdict[s] = 1
- suffixes.append(s)
- return suffixes
-
-class CompositeBuilder(SCons.Util.Proxy):
- """A Builder Proxy whose main purpose is to always have
- a DictCmdGenerator as its action, and to provide access
- to the DictCmdGenerator's add_action() method.
- """
-
- def __init__(self, builder, cmdgen):
- if __debug__: logInstanceCreation(self, 'Builder.CompositeBuilder')
- SCons.Util.Proxy.__init__(self, builder)
-
- # cmdgen should always be an instance of DictCmdGenerator.
- self.cmdgen = cmdgen
- self.builder = builder
-
- __call__ = SCons.Util.Delegate('__call__')
-
- def add_action(self, suffix, action):
- self.cmdgen.add_action(suffix, action)
- self.set_src_suffix(self.cmdgen.src_suffixes())
-
-def is_a_Builder(obj):
- """"Returns True iff the specified obj is one of our Builder classes.
-
- The test is complicated a bit by the fact that CompositeBuilder
- is a proxy, not a subclass of BuilderBase.
- """
- return (isinstance(obj, BuilderBase)
- or isinstance(obj, CompositeBuilder)
- or callable(obj))
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/CacheDir.py b/Externals/scons-local/scons-local-2.0.1/SCons/CacheDir.py
deleted file mode 100644
index 68ee1ca6c3..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/CacheDir.py
+++ /dev/null
@@ -1,216 +0,0 @@
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/CacheDir.py 5134 2010/08/16 23:02:40 bdeegan"
-
-__doc__ = """
-CacheDir support
-"""
-
-import os.path
-import stat
-import sys
-
-import SCons.Action
-
-cache_enabled = True
-cache_debug = False
-cache_force = False
-cache_show = False
-
-def CacheRetrieveFunc(target, source, env):
- t = target[0]
- fs = t.fs
- cd = env.get_CacheDir()
- cachedir, cachefile = cd.cachepath(t)
- if not fs.exists(cachefile):
- cd.CacheDebug('CacheRetrieve(%s): %s not in cache\n', t, cachefile)
- return 1
- cd.CacheDebug('CacheRetrieve(%s): retrieving from %s\n', t, cachefile)
- if SCons.Action.execute_actions:
- if fs.islink(cachefile):
- fs.symlink(fs.readlink(cachefile), t.path)
- else:
- env.copy_from_cache(cachefile, t.path)
- st = fs.stat(cachefile)
- fs.chmod(t.path, stat.S_IMODE(st[stat.ST_MODE]) | stat.S_IWRITE)
- return 0
-
-def CacheRetrieveString(target, source, env):
- t = target[0]
- fs = t.fs
- cd = env.get_CacheDir()
- cachedir, cachefile = cd.cachepath(t)
- if t.fs.exists(cachefile):
- return "Retrieved `%s' from cache" % t.path
- return None
-
-CacheRetrieve = SCons.Action.Action(CacheRetrieveFunc, CacheRetrieveString)
-
-CacheRetrieveSilent = SCons.Action.Action(CacheRetrieveFunc, None)
-
-def CachePushFunc(target, source, env):
- t = target[0]
- if t.nocache:
- return
- fs = t.fs
- cd = env.get_CacheDir()
- cachedir, cachefile = cd.cachepath(t)
- if fs.exists(cachefile):
- # Don't bother copying it if it's already there. Note that
- # usually this "shouldn't happen" because if the file already
- # existed in cache, we'd have retrieved the file from there,
- # not built it. This can happen, though, in a race, if some
- # other person running the same build pushes their copy to
- # the cache after we decide we need to build it but before our
- # build completes.
- cd.CacheDebug('CachePush(%s): %s already exists in cache\n', t, cachefile)
- return
-
- cd.CacheDebug('CachePush(%s): pushing to %s\n', t, cachefile)
-
- tempfile = cachefile+'.tmp'+str(os.getpid())
- errfmt = "Unable to copy %s to cache. Cache file is %s"
-
- if not fs.isdir(cachedir):
- try:
- fs.makedirs(cachedir)
- except EnvironmentError:
- # We may have received an exception because another process
- # has beaten us creating the directory.
- if not fs.isdir(cachedir):
- msg = errfmt % (str(target), cachefile)
- raise SCons.Errors.EnvironmentError(msg)
-
- try:
- if fs.islink(t.path):
- fs.symlink(fs.readlink(t.path), tempfile)
- else:
- fs.copy2(t.path, tempfile)
- fs.rename(tempfile, cachefile)
- st = fs.stat(t.path)
- fs.chmod(cachefile, stat.S_IMODE(st[stat.ST_MODE]) | stat.S_IWRITE)
- except EnvironmentError:
- # It's possible someone else tried writing the file at the
- # same time we did, or else that there was some problem like
- # the CacheDir being on a separate file system that's full.
- # In any case, inability to push a file to cache doesn't affect
- # the correctness of the build, so just print a warning.
- msg = errfmt % (str(target), cachefile)
- SCons.Warnings.warn(SCons.Warnings.CacheWriteErrorWarning, msg)
-
-CachePush = SCons.Action.Action(CachePushFunc, None)
-
-class CacheDir(object):
-
- def __init__(self, path):
- try:
- import hashlib
- except ImportError:
- msg = "No hashlib or MD5 module available, CacheDir() not supported"
- SCons.Warnings.warn(SCons.Warnings.NoMD5ModuleWarning, msg)
- self.path = None
- else:
- self.path = path
- self.current_cache_debug = None
- self.debugFP = None
-
- def CacheDebug(self, fmt, target, cachefile):
- if cache_debug != self.current_cache_debug:
- if cache_debug == '-':
- self.debugFP = sys.stdout
- elif cache_debug:
- self.debugFP = open(cache_debug, 'w')
- else:
- self.debugFP = None
- self.current_cache_debug = cache_debug
- if self.debugFP:
- self.debugFP.write(fmt % (target, os.path.split(cachefile)[1]))
-
- def is_enabled(self):
- return (cache_enabled and not self.path is None)
-
- def cachepath(self, node):
- """
- """
- if not self.is_enabled():
- return None, None
-
- sig = node.get_cachedir_bsig()
- subdir = sig[0].upper()
- dir = os.path.join(self.path, subdir)
- return dir, os.path.join(dir, sig)
-
- def retrieve(self, node):
- """
- This method is called from multiple threads in a parallel build,
- so only do thread safe stuff here. Do thread unsafe stuff in
- built().
-
- Note that there's a special trick here with the execute flag
- (one that's not normally done for other actions). Basically
- if the user requested a no_exec (-n) build, then
- SCons.Action.execute_actions is set to 0 and when any action
- is called, it does its showing but then just returns zero
- instead of actually calling the action execution operation.
- The problem for caching is that if the file does NOT exist in
- cache then the CacheRetrieveString won't return anything to
- show for the task, but the Action.__call__ won't call
- CacheRetrieveFunc; instead it just returns zero, which makes
- the code below think that the file *was* successfully
- retrieved from the cache, therefore it doesn't do any
- subsequent building. However, the CacheRetrieveString didn't
- print anything because it didn't actually exist in the cache,
- and no more build actions will be performed, so the user just
- sees nothing. The fix is to tell Action.__call__ to always
- execute the CacheRetrieveFunc and then have the latter
- explicitly check SCons.Action.execute_actions itself.
- """
- if not self.is_enabled():
- return False
-
- env = node.get_build_env()
- if cache_show:
- if CacheRetrieveSilent(node, [], env, execute=1) == 0:
- node.build(presub=0, execute=0)
- return True
- else:
- if CacheRetrieve(node, [], env, execute=1) == 0:
- return True
-
- return False
-
- def push(self, node):
- if not self.is_enabled():
- return
- return CachePush(node, [], node.get_build_env())
-
- def push_if_forced(self, node):
- if cache_force:
- return self.push(node)
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Conftest.py b/Externals/scons-local/scons-local-2.0.1/SCons/Conftest.py
deleted file mode 100644
index 04a6bc2aa9..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Conftest.py
+++ /dev/null
@@ -1,793 +0,0 @@
-"""SCons.Conftest
-
-Autoconf-like configuration support; low level implementation of tests.
-"""
-
-#
-# Copyright (c) 2003 Stichting NLnet Labs
-# Copyright (c) 2001, 2002, 2003 Steven Knight
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-#
-# The purpose of this module is to define how a check is to be performed.
-# Use one of the Check...() functions below.
-#
-
-#
-# A context class is used that defines functions for carrying out the tests,
-# logging and messages. The following methods and members must be present:
-#
-# context.Display(msg) Function called to print messages that are normally
-# displayed for the user. Newlines are explicitly used.
-# The text should also be written to the logfile!
-#
-# context.Log(msg) Function called to write to a log file.
-#
-# context.BuildProg(text, ext)
-# Function called to build a program, using "ext" for the
-# file extention. Must return an empty string for
-# success, an error message for failure.
-# For reliable test results building should be done just
-# like an actual program would be build, using the same
-# command and arguments (including configure results so
-# far).
-#
-# context.CompileProg(text, ext)
-# Function called to compile a program, using "ext" for
-# the file extention. Must return an empty string for
-# success, an error message for failure.
-# For reliable test results compiling should be done just
-# like an actual source file would be compiled, using the
-# same command and arguments (including configure results
-# so far).
-#
-# context.AppendLIBS(lib_name_list)
-# Append "lib_name_list" to the value of LIBS.
-# "lib_namelist" is a list of strings.
-# Return the value of LIBS before changing it (any type
-# can be used, it is passed to SetLIBS() later.)
-#
-# context.PrependLIBS(lib_name_list)
-# Prepend "lib_name_list" to the value of LIBS.
-# "lib_namelist" is a list of strings.
-# Return the value of LIBS before changing it (any type
-# can be used, it is passed to SetLIBS() later.)
-#
-# context.SetLIBS(value)
-# Set LIBS to "value". The type of "value" is what
-# AppendLIBS() returned.
-# Return the value of LIBS before changing it (any type
-# can be used, it is passed to SetLIBS() later.)
-#
-# context.headerfilename
-# Name of file to append configure results to, usually
-# "confdefs.h".
-# The file must not exist or be empty when starting.
-# Empty or None to skip this (some tests will not work!).
-#
-# context.config_h (may be missing). If present, must be a string, which
-# will be filled with the contents of a config_h file.
-#
-# context.vardict Dictionary holding variables used for the tests and
-# stores results from the tests, used for the build
-# commands.
-# Normally contains "CC", "LIBS", "CPPFLAGS", etc.
-#
-# context.havedict Dictionary holding results from the tests that are to
-# be used inside a program.
-# Names often start with "HAVE_". These are zero
-# (feature not present) or one (feature present). Other
-# variables may have any value, e.g., "PERLVERSION" can
-# be a number and "SYSTEMNAME" a string.
-#
-
-import re
-from types import IntType
-
-#
-# PUBLIC VARIABLES
-#
-
-LogInputFiles = 1 # Set that to log the input files in case of a failed test
-LogErrorMessages = 1 # Set that to log Conftest-generated error messages
-
-#
-# PUBLIC FUNCTIONS
-#
-
-# Generic remarks:
-# - When a language is specified which is not supported the test fails. The
-# message is a bit different, because not all the arguments for the normal
-# message are available yet (chicken-egg problem).
-
-
-def CheckBuilder(context, text = None, language = None):
- """
- Configure check to see if the compiler works.
- Note that this uses the current value of compiler and linker flags, make
- sure $CFLAGS, $CPPFLAGS and $LIBS are set correctly.
- "language" should be "C" or "C++" and is used to select the compiler.
- Default is "C".
- "text" may be used to specify the code to be build.
- Returns an empty string for success, an error message for failure.
- """
- lang, suffix, msg = _lang2suffix(language)
- if msg:
- context.Display("%s\n" % msg)
- return msg
-
- if not text:
- text = """
-int main() {
- return 0;
-}
-"""
-
- context.Display("Checking if building a %s file works... " % lang)
- ret = context.BuildProg(text, suffix)
- _YesNoResult(context, ret, None, text)
- return ret
-
-def CheckCC(context):
- """
- Configure check for a working C compiler.
-
- This checks whether the C compiler, as defined in the $CC construction
- variable, can compile a C source file. It uses the current $CCCOM value
- too, so that it can test against non working flags.
-
- """
- context.Display("Checking whether the C compiler works")
- text = """
-int main()
-{
- return 0;
-}
-"""
- ret = _check_empty_program(context, 'CC', text, 'C')
- _YesNoResult(context, ret, None, text)
- return ret
-
-def CheckSHCC(context):
- """
- Configure check for a working shared C compiler.
-
- This checks whether the C compiler, as defined in the $SHCC construction
- variable, can compile a C source file. It uses the current $SHCCCOM value
- too, so that it can test against non working flags.
-
- """
- context.Display("Checking whether the (shared) C compiler works")
- text = """
-int foo()
-{
- return 0;
-}
-"""
- ret = _check_empty_program(context, 'SHCC', text, 'C', use_shared = True)
- _YesNoResult(context, ret, None, text)
- return ret
-
-def CheckCXX(context):
- """
- Configure check for a working CXX compiler.
-
- This checks whether the CXX compiler, as defined in the $CXX construction
- variable, can compile a CXX source file. It uses the current $CXXCOM value
- too, so that it can test against non working flags.
-
- """
- context.Display("Checking whether the C++ compiler works")
- text = """
-int main()
-{
- return 0;
-}
-"""
- ret = _check_empty_program(context, 'CXX', text, 'C++')
- _YesNoResult(context, ret, None, text)
- return ret
-
-def CheckSHCXX(context):
- """
- Configure check for a working shared CXX compiler.
-
- This checks whether the CXX compiler, as defined in the $SHCXX construction
- variable, can compile a CXX source file. It uses the current $SHCXXCOM value
- too, so that it can test against non working flags.
-
- """
- context.Display("Checking whether the (shared) C++ compiler works")
- text = """
-int main()
-{
- return 0;
-}
-"""
- ret = _check_empty_program(context, 'SHCXX', text, 'C++', use_shared = True)
- _YesNoResult(context, ret, None, text)
- return ret
-
-def _check_empty_program(context, comp, text, language, use_shared = False):
- """Return 0 on success, 1 otherwise."""
- if comp not in context.env or not context.env[comp]:
- # The compiler construction variable is not set or empty
- return 1
-
- lang, suffix, msg = _lang2suffix(language)
- if msg:
- return 1
-
- if use_shared:
- return context.CompileSharedObject(text, suffix)
- else:
- return context.CompileProg(text, suffix)
-
-
-def CheckFunc(context, function_name, header = None, language = None):
- """
- Configure check for a function "function_name".
- "language" should be "C" or "C++" and is used to select the compiler.
- Default is "C".
- Optional "header" can be defined to define a function prototype, include a
- header file or anything else that comes before main().
- Sets HAVE_function_name in context.havedict according to the result.
- Note that this uses the current value of compiler and linker flags, make
- sure $CFLAGS, $CPPFLAGS and $LIBS are set correctly.
- Returns an empty string for success, an error message for failure.
- """
-
- # Remarks from autoconf:
- # - Don't include because on OSF/1 3.0 it includes
- # which includes which contains a prototype for select.
- # Similarly for bzero.
- # - assert.h is included to define __stub macros and hopefully few
- # prototypes, which can conflict with char $1(); below.
- # - Override any gcc2 internal prototype to avoid an error.
- # - We use char for the function declaration because int might match the
- # return type of a gcc2 builtin and then its argument prototype would
- # still apply.
- # - The GNU C library defines this for functions which it implements to
- # always fail with ENOSYS. Some functions are actually named something
- # starting with __ and the normal name is an alias.
-
- if context.headerfilename:
- includetext = '#include "%s"' % context.headerfilename
- else:
- includetext = ''
- if not header:
- header = """
-#ifdef __cplusplus
-extern "C"
-#endif
-char %s();""" % function_name
-
- lang, suffix, msg = _lang2suffix(language)
- if msg:
- context.Display("Cannot check for %s(): %s\n" % (function_name, msg))
- return msg
-
- text = """
-%(include)s
-#include
-%(hdr)s
-
-int main() {
-#if defined (__stub_%(name)s) || defined (__stub___%(name)s)
- fail fail fail
-#else
- %(name)s();
-#endif
-
- return 0;
-}
-""" % { 'name': function_name,
- 'include': includetext,
- 'hdr': header }
-
- context.Display("Checking for %s function %s()... " % (lang, function_name))
- ret = context.BuildProg(text, suffix)
- _YesNoResult(context, ret, "HAVE_" + function_name, text,
- "Define to 1 if the system has the function `%s'." %\
- function_name)
- return ret
-
-
-def CheckHeader(context, header_name, header = None, language = None,
- include_quotes = None):
- """
- Configure check for a C or C++ header file "header_name".
- Optional "header" can be defined to do something before including the
- header file (unusual, supported for consistency).
- "language" should be "C" or "C++" and is used to select the compiler.
- Default is "C".
- Sets HAVE_header_name in context.havedict according to the result.
- Note that this uses the current value of compiler and linker flags, make
- sure $CFLAGS and $CPPFLAGS are set correctly.
- Returns an empty string for success, an error message for failure.
- """
- # Why compile the program instead of just running the preprocessor?
- # It is possible that the header file exists, but actually using it may
- # fail (e.g., because it depends on other header files). Thus this test is
- # more strict. It may require using the "header" argument.
- #
- # Use <> by default, because the check is normally used for system header
- # files. SCons passes '""' to overrule this.
-
- # Include "confdefs.h" first, so that the header can use HAVE_HEADER_H.
- if context.headerfilename:
- includetext = '#include "%s"\n' % context.headerfilename
- else:
- includetext = ''
- if not header:
- header = ""
-
- lang, suffix, msg = _lang2suffix(language)
- if msg:
- context.Display("Cannot check for header file %s: %s\n"
- % (header_name, msg))
- return msg
-
- if not include_quotes:
- include_quotes = "<>"
-
- text = "%s%s\n#include %s%s%s\n\n" % (includetext, header,
- include_quotes[0], header_name, include_quotes[1])
-
- context.Display("Checking for %s header file %s... " % (lang, header_name))
- ret = context.CompileProg(text, suffix)
- _YesNoResult(context, ret, "HAVE_" + header_name, text,
- "Define to 1 if you have the <%s> header file." % header_name)
- return ret
-
-
-def CheckType(context, type_name, fallback = None,
- header = None, language = None):
- """
- Configure check for a C or C++ type "type_name".
- Optional "header" can be defined to include a header file.
- "language" should be "C" or "C++" and is used to select the compiler.
- Default is "C".
- Sets HAVE_type_name in context.havedict according to the result.
- Note that this uses the current value of compiler and linker flags, make
- sure $CFLAGS, $CPPFLAGS and $LIBS are set correctly.
- Returns an empty string for success, an error message for failure.
- """
-
- # Include "confdefs.h" first, so that the header can use HAVE_HEADER_H.
- if context.headerfilename:
- includetext = '#include "%s"' % context.headerfilename
- else:
- includetext = ''
- if not header:
- header = ""
-
- lang, suffix, msg = _lang2suffix(language)
- if msg:
- context.Display("Cannot check for %s type: %s\n" % (type_name, msg))
- return msg
-
- # Remarks from autoconf about this test:
- # - Grepping for the type in include files is not reliable (grep isn't
- # portable anyway).
- # - Using "TYPE my_var;" doesn't work for const qualified types in C++.
- # Adding an initializer is not valid for some C++ classes.
- # - Using the type as parameter to a function either fails for K&$ C or for
- # C++.
- # - Using "TYPE *my_var;" is valid in C for some types that are not
- # declared (struct something).
- # - Using "sizeof(TYPE)" is valid when TYPE is actually a variable.
- # - Using the previous two together works reliably.
- text = """
-%(include)s
-%(header)s
-
-int main() {
- if ((%(name)s *) 0)
- return 0;
- if (sizeof (%(name)s))
- return 0;
-}
-""" % { 'include': includetext,
- 'header': header,
- 'name': type_name }
-
- context.Display("Checking for %s type %s... " % (lang, type_name))
- ret = context.BuildProg(text, suffix)
- _YesNoResult(context, ret, "HAVE_" + type_name, text,
- "Define to 1 if the system has the type `%s'." % type_name)
- if ret and fallback and context.headerfilename:
- f = open(context.headerfilename, "a")
- f.write("typedef %s %s;\n" % (fallback, type_name))
- f.close()
-
- return ret
-
-def CheckTypeSize(context, type_name, header = None, language = None, expect = None):
- """This check can be used to get the size of a given type, or to check whether
- the type is of expected size.
-
- Arguments:
- - type : str
- the type to check
- - includes : sequence
- list of headers to include in the test code before testing the type
- - language : str
- 'C' or 'C++'
- - expect : int
- if given, will test wether the type has the given number of bytes.
- If not given, will automatically find the size.
-
- Returns:
- status : int
- 0 if the check failed, or the found size of the type if the check succeeded."""
-
- # Include "confdefs.h" first, so that the header can use HAVE_HEADER_H.
- if context.headerfilename:
- includetext = '#include "%s"' % context.headerfilename
- else:
- includetext = ''
-
- if not header:
- header = ""
-
- lang, suffix, msg = _lang2suffix(language)
- if msg:
- context.Display("Cannot check for %s type: %s\n" % (type_name, msg))
- return msg
-
- src = includetext + header
- if not expect is None:
- # Only check if the given size is the right one
- context.Display('Checking %s is %d bytes... ' % (type_name, expect))
-
- # test code taken from autoconf: this is a pretty clever hack to find that
- # a type is of a given size using only compilation. This speeds things up
- # quite a bit compared to straightforward code using TryRun
- src = src + r"""
-typedef %s scons_check_type;
-
-int main()
-{
- static int test_array[1 - 2 * !(((long int) (sizeof(scons_check_type))) == %d)];
- test_array[0] = 0;
-
- return 0;
-}
-"""
-
- st = context.CompileProg(src % (type_name, expect), suffix)
- if not st:
- context.Display("yes\n")
- _Have(context, "SIZEOF_%s" % type_name, expect,
- "The size of `%s', as computed by sizeof." % type_name)
- return expect
- else:
- context.Display("no\n")
- _LogFailed(context, src, st)
- return 0
- else:
- # Only check if the given size is the right one
- context.Message('Checking size of %s ... ' % type_name)
-
- # We have to be careful with the program we wish to test here since
- # compilation will be attempted using the current environment's flags.
- # So make sure that the program will compile without any warning. For
- # example using: 'int main(int argc, char** argv)' will fail with the
- # '-Wall -Werror' flags since the variables argc and argv would not be
- # used in the program...
- #
- src = src + """
-#include
-#include
-int main() {
- printf("%d", (int)sizeof(""" + type_name + """));
- return 0;
-}
- """
- st, out = context.RunProg(src, suffix)
- try:
- size = int(out)
- except ValueError:
- # If cannot convert output of test prog to an integer (the size),
- # something went wront, so just fail
- st = 1
- size = 0
-
- if not st:
- context.Display("yes\n")
- _Have(context, "SIZEOF_%s" % type_name, size,
- "The size of `%s', as computed by sizeof." % type_name)
- return size
- else:
- context.Display("no\n")
- _LogFailed(context, src, st)
- return 0
-
- return 0
-
-def CheckDeclaration(context, symbol, includes = None, language = None):
- """Checks whether symbol is declared.
-
- Use the same test as autoconf, that is test whether the symbol is defined
- as a macro or can be used as an r-value.
-
- Arguments:
- symbol : str
- the symbol to check
- includes : str
- Optional "header" can be defined to include a header file.
- language : str
- only C and C++ supported.
-
- Returns:
- status : bool
- True if the check failed, False if succeeded."""
-
- # Include "confdefs.h" first, so that the header can use HAVE_HEADER_H.
- if context.headerfilename:
- includetext = '#include "%s"' % context.headerfilename
- else:
- includetext = ''
-
- if not includes:
- includes = ""
-
- lang, suffix, msg = _lang2suffix(language)
- if msg:
- context.Display("Cannot check for declaration %s: %s\n" % (type_name, msg))
- return msg
-
- src = includetext + includes
- context.Display('Checking whether %s is declared... ' % symbol)
-
- src = src + r"""
-int main()
-{
-#ifndef %s
- (void) %s;
-#endif
- ;
- return 0;
-}
-""" % (symbol, symbol)
-
- st = context.CompileProg(src, suffix)
- _YesNoResult(context, st, "HAVE_DECL_" + symbol, src,
- "Set to 1 if %s is defined." % symbol)
- return st
-
-def CheckLib(context, libs, func_name = None, header = None,
- extra_libs = None, call = None, language = None, autoadd = 1,
- append = True):
- """
- Configure check for a C or C++ libraries "libs". Searches through
- the list of libraries, until one is found where the test succeeds.
- Tests if "func_name" or "call" exists in the library. Note: if it exists
- in another library the test succeeds anyway!
- Optional "header" can be defined to include a header file. If not given a
- default prototype for "func_name" is added.
- Optional "extra_libs" is a list of library names to be added after
- "lib_name" in the build command. To be used for libraries that "lib_name"
- depends on.
- Optional "call" replaces the call to "func_name" in the test code. It must
- consist of complete C statements, including a trailing ";".
- Both "func_name" and "call" arguments are optional, and in that case, just
- linking against the libs is tested.
- "language" should be "C" or "C++" and is used to select the compiler.
- Default is "C".
- Note that this uses the current value of compiler and linker flags, make
- sure $CFLAGS, $CPPFLAGS and $LIBS are set correctly.
- Returns an empty string for success, an error message for failure.
- """
- # Include "confdefs.h" first, so that the header can use HAVE_HEADER_H.
- if context.headerfilename:
- includetext = '#include "%s"' % context.headerfilename
- else:
- includetext = ''
- if not header:
- header = ""
-
- text = """
-%s
-%s""" % (includetext, header)
-
- # Add a function declaration if needed.
- if func_name and func_name != "main":
- if not header:
- text = text + """
-#ifdef __cplusplus
-extern "C"
-#endif
-char %s();
-""" % func_name
-
- # The actual test code.
- if not call:
- call = "%s();" % func_name
-
- # if no function to test, leave main() blank
- text = text + """
-int
-main() {
- %s
-return 0;
-}
-""" % (call or "")
-
- if call:
- i = call.find("\n")
- if i > 0:
- calltext = call[:i] + ".."
- elif call[-1] == ';':
- calltext = call[:-1]
- else:
- calltext = call
-
- for lib_name in libs:
-
- lang, suffix, msg = _lang2suffix(language)
- if msg:
- context.Display("Cannot check for library %s: %s\n" % (lib_name, msg))
- return msg
-
- # if a function was specified to run in main(), say it
- if call:
- context.Display("Checking for %s in %s library %s... "
- % (calltext, lang, lib_name))
- # otherwise, just say the name of library and language
- else:
- context.Display("Checking for %s library %s... "
- % (lang, lib_name))
-
- if lib_name:
- l = [ lib_name ]
- if extra_libs:
- l.extend(extra_libs)
- if append:
- oldLIBS = context.AppendLIBS(l)
- else:
- oldLIBS = context.PrependLIBS(l)
- sym = "HAVE_LIB" + lib_name
- else:
- oldLIBS = -1
- sym = None
-
- ret = context.BuildProg(text, suffix)
-
- _YesNoResult(context, ret, sym, text,
- "Define to 1 if you have the `%s' library." % lib_name)
- if oldLIBS != -1 and (ret or not autoadd):
- context.SetLIBS(oldLIBS)
-
- if not ret:
- return ret
-
- return ret
-
-#
-# END OF PUBLIC FUNCTIONS
-#
-
-def _YesNoResult(context, ret, key, text, comment = None):
- """
- Handle the result of a test with a "yes" or "no" result.
- "ret" is the return value: empty if OK, error message when not.
- "key" is the name of the symbol to be defined (HAVE_foo).
- "text" is the source code of the program used for testing.
- "comment" is the C comment to add above the line defining the symbol (the
- comment is automatically put inside a /* */). If None, no comment is added.
- """
- if key:
- _Have(context, key, not ret, comment)
- if ret:
- context.Display("no\n")
- _LogFailed(context, text, ret)
- else:
- context.Display("yes\n")
-
-
-def _Have(context, key, have, comment = None):
- """
- Store result of a test in context.havedict and context.headerfilename.
- "key" is a "HAVE_abc" name. It is turned into all CAPITALS and non-
- alphanumerics are replaced by an underscore.
- The value of "have" can be:
- 1 - Feature is defined, add "#define key".
- 0 - Feature is not defined, add "/* #undef key */".
- Adding "undef" is what autoconf does. Not useful for the
- compiler, but it shows that the test was done.
- number - Feature is defined to this number "#define key have".
- Doesn't work for 0 or 1, use a string then.
- string - Feature is defined to this string "#define key have".
- Give "have" as is should appear in the header file, include quotes
- when desired and escape special characters!
- """
- key_up = key.upper()
- key_up = re.sub('[^A-Z0-9_]', '_', key_up)
- context.havedict[key_up] = have
- if have == 1:
- line = "#define %s 1\n" % key_up
- elif have == 0:
- line = "/* #undef %s */\n" % key_up
- elif isinstance(have, IntType):
- line = "#define %s %d\n" % (key_up, have)
- else:
- line = "#define %s %s\n" % (key_up, str(have))
-
- if comment is not None:
- lines = "\n/* %s */\n" % comment + line
- else:
- lines = "\n" + line
-
- if context.headerfilename:
- f = open(context.headerfilename, "a")
- f.write(lines)
- f.close()
- elif hasattr(context,'config_h'):
- context.config_h = context.config_h + lines
-
-
-def _LogFailed(context, text, msg):
- """
- Write to the log about a failed program.
- Add line numbers, so that error messages can be understood.
- """
- if LogInputFiles:
- context.Log("Failed program was:\n")
- lines = text.split('\n')
- if len(lines) and lines[-1] == '':
- lines = lines[:-1] # remove trailing empty line
- n = 1
- for line in lines:
- context.Log("%d: %s\n" % (n, line))
- n = n + 1
- if LogErrorMessages:
- context.Log("Error message: %s\n" % msg)
-
-
-def _lang2suffix(lang):
- """
- Convert a language name to a suffix.
- When "lang" is empty or None C is assumed.
- Returns a tuple (lang, suffix, None) when it works.
- For an unrecognized language returns (None, None, msg).
- Where:
- lang = the unified language name
- suffix = the suffix, including the leading dot
- msg = an error message
- """
- if not lang or lang in ["C", "c"]:
- return ("C", ".c", None)
- if lang in ["c++", "C++", "cpp", "CXX", "cxx"]:
- return ("C++", ".cpp", None)
-
- return None, None, "Unsupported language: %s" % lang
-
-
-# vim: set sw=4 et sts=4 tw=79 fo+=l:
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Debug.py b/Externals/scons-local/scons-local-2.0.1/SCons/Debug.py
deleted file mode 100644
index f4eb65f276..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Debug.py
+++ /dev/null
@@ -1,220 +0,0 @@
-"""SCons.Debug
-
-Code for debugging SCons internal things. Shouldn't be
-needed by most users.
-
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Debug.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import os
-import sys
-import time
-import weakref
-
-tracked_classes = {}
-
-def logInstanceCreation(instance, name=None):
- if name is None:
- name = instance.__class__.__name__
- if name not in tracked_classes:
- tracked_classes[name] = []
- tracked_classes[name].append(weakref.ref(instance))
-
-def string_to_classes(s):
- if s == '*':
- return sorted(tracked_classes.keys())
- else:
- return s.split()
-
-def fetchLoggedInstances(classes="*"):
- classnames = string_to_classes(classes)
- return [(cn, len(tracked_classes[cn])) for cn in classnames]
-
-def countLoggedInstances(classes, file=sys.stdout):
- for classname in string_to_classes(classes):
- file.write("%s: %d\n" % (classname, len(tracked_classes[classname])))
-
-def listLoggedInstances(classes, file=sys.stdout):
- for classname in string_to_classes(classes):
- file.write('\n%s:\n' % classname)
- for ref in tracked_classes[classname]:
- obj = ref()
- if obj is not None:
- file.write(' %s\n' % repr(obj))
-
-def dumpLoggedInstances(classes, file=sys.stdout):
- for classname in string_to_classes(classes):
- file.write('\n%s:\n' % classname)
- for ref in tracked_classes[classname]:
- obj = ref()
- if obj is not None:
- file.write(' %s:\n' % obj)
- for key, value in obj.__dict__.items():
- file.write(' %20s : %s\n' % (key, value))
-
-
-
-if sys.platform[:5] == "linux":
- # Linux doesn't actually support memory usage stats from getrusage().
- def memory():
- mstr = open('/proc/self/stat').read()
- mstr = mstr.split()[22]
- return int(mstr)
-elif sys.platform[:6] == 'darwin':
- #TODO really get memory stats for OS X
- def memory():
- return 0
-else:
- try:
- import resource
- except ImportError:
- try:
- import win32process
- import win32api
- except ImportError:
- def memory():
- return 0
- else:
- def memory():
- process_handle = win32api.GetCurrentProcess()
- memory_info = win32process.GetProcessMemoryInfo( process_handle )
- return memory_info['PeakWorkingSetSize']
- else:
- def memory():
- res = resource.getrusage(resource.RUSAGE_SELF)
- return res[4]
-
-# returns caller's stack
-def caller_stack(*backlist):
- import traceback
- if not backlist:
- backlist = [0]
- result = []
- for back in backlist:
- tb = traceback.extract_stack(limit=3+back)
- key = tb[0][:3]
- result.append('%s:%d(%s)' % func_shorten(key))
- return result
-
-caller_bases = {}
-caller_dicts = {}
-
-# trace a caller's stack
-def caller_trace(back=0):
- import traceback
- tb = traceback.extract_stack(limit=3+back)
- tb.reverse()
- callee = tb[1][:3]
- caller_bases[callee] = caller_bases.get(callee, 0) + 1
- for caller in tb[2:]:
- caller = callee + caller[:3]
- try:
- entry = caller_dicts[callee]
- except KeyError:
- caller_dicts[callee] = entry = {}
- entry[caller] = entry.get(caller, 0) + 1
- callee = caller
-
-# print a single caller and its callers, if any
-def _dump_one_caller(key, file, level=0):
- leader = ' '*level
- for v,c in sorted([(-v,c) for c,v in caller_dicts[key].items()]):
- file.write("%s %6d %s:%d(%s)\n" % ((leader,-v) + func_shorten(c[-3:])))
- if c in caller_dicts:
- _dump_one_caller(c, file, level+1)
-
-# print each call tree
-def dump_caller_counts(file=sys.stdout):
- for k in sorted(caller_bases.keys()):
- file.write("Callers of %s:%d(%s), %d calls:\n"
- % (func_shorten(k) + (caller_bases[k],)))
- _dump_one_caller(k, file)
-
-shorten_list = [
- ( '/scons/SCons/', 1),
- ( '/src/engine/SCons/', 1),
- ( '/usr/lib/python', 0),
-]
-
-if os.sep != '/':
- shorten_list = [(t[0].replace('/', os.sep), t[1]) for t in shorten_list]
-
-def func_shorten(func_tuple):
- f = func_tuple[0]
- for t in shorten_list:
- i = f.find(t[0])
- if i >= 0:
- if t[1]:
- i = i + len(t[0])
- return (f[i:],)+func_tuple[1:]
- return func_tuple
-
-
-TraceFP = {}
-if sys.platform == 'win32':
- TraceDefault = 'con'
-else:
- TraceDefault = '/dev/tty'
-
-TimeStampDefault = None
-StartTime = time.time()
-PreviousTime = StartTime
-
-def Trace(msg, file=None, mode='w', tstamp=None):
- """Write a trace message to a file. Whenever a file is specified,
- it becomes the default for the next call to Trace()."""
- global TraceDefault
- global TimeStampDefault
- global PreviousTime
- if file is None:
- file = TraceDefault
- else:
- TraceDefault = file
- if tstamp is None:
- tstamp = TimeStampDefault
- else:
- TimeStampDefault = tstamp
- try:
- fp = TraceFP[file]
- except KeyError:
- try:
- fp = TraceFP[file] = open(file, mode)
- except TypeError:
- # Assume we were passed an open file pointer.
- fp = file
- if tstamp:
- now = time.time()
- fp.write('%8.4f %8.4f: ' % (now - StartTime, now - PreviousTime))
- PreviousTime = now
- fp.write(msg)
- fp.flush()
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Defaults.py b/Externals/scons-local/scons-local-2.0.1/SCons/Defaults.py
deleted file mode 100644
index f6b0fd1178..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Defaults.py
+++ /dev/null
@@ -1,480 +0,0 @@
-"""SCons.Defaults
-
-Builders and other things for the local site. Here's where we'll
-duplicate the functionality of autoconf until we move it into the
-installation procedure or use something like qmconf.
-
-The code that reads the registry to find MSVC components was borrowed
-from distutils.msvccompiler.
-
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-from __future__ import division
-
-__revision__ = "src/engine/SCons/Defaults.py 5134 2010/08/16 23:02:40 bdeegan"
-
-
-import os
-import errno
-import shutil
-import stat
-import time
-import sys
-
-import SCons.Action
-import SCons.Builder
-import SCons.CacheDir
-import SCons.Environment
-import SCons.PathList
-import SCons.Subst
-import SCons.Tool
-
-# A placeholder for a default Environment (for fetching source files
-# from source code management systems and the like). This must be
-# initialized later, after the top-level directory is set by the calling
-# interface.
-_default_env = None
-
-# Lazily instantiate the default environment so the overhead of creating
-# it doesn't apply when it's not needed.
-def _fetch_DefaultEnvironment(*args, **kw):
- """
- Returns the already-created default construction environment.
- """
- global _default_env
- return _default_env
-
-def DefaultEnvironment(*args, **kw):
- """
- Initial public entry point for creating the default construction
- Environment.
-
- After creating the environment, we overwrite our name
- (DefaultEnvironment) with the _fetch_DefaultEnvironment() function,
- which more efficiently returns the initialized default construction
- environment without checking for its existence.
-
- (This function still exists with its _default_check because someone
- else (*cough* Script/__init__.py *cough*) may keep a reference
- to this function. So we can't use the fully functional idiom of
- having the name originally be a something that *only* creates the
- construction environment and then overwrites the name.)
- """
- global _default_env
- if not _default_env:
- import SCons.Util
- _default_env = SCons.Environment.Environment(*args, **kw)
- if SCons.Util.md5:
- _default_env.Decider('MD5')
- else:
- _default_env.Decider('timestamp-match')
- global DefaultEnvironment
- DefaultEnvironment = _fetch_DefaultEnvironment
- _default_env._CacheDir_path = None
- return _default_env
-
-# Emitters for setting the shared attribute on object files,
-# and an action for checking that all of the source files
-# going into a shared library are, in fact, shared.
-def StaticObjectEmitter(target, source, env):
- for tgt in target:
- tgt.attributes.shared = None
- return (target, source)
-
-def SharedObjectEmitter(target, source, env):
- for tgt in target:
- tgt.attributes.shared = 1
- return (target, source)
-
-def SharedFlagChecker(source, target, env):
- same = env.subst('$STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME')
- if same == '0' or same == '' or same == 'False':
- for src in source:
- try:
- shared = src.attributes.shared
- except AttributeError:
- shared = None
- if not shared:
- raise SCons.Errors.UserError("Source file: %s is static and is not compatible with shared target: %s" % (src, target[0]))
-
-SharedCheck = SCons.Action.Action(SharedFlagChecker, None)
-
-# Some people were using these variable name before we made
-# SourceFileScanner part of the public interface. Don't break their
-# SConscript files until we've given them some fair warning and a
-# transition period.
-CScan = SCons.Tool.CScanner
-DScan = SCons.Tool.DScanner
-LaTeXScan = SCons.Tool.LaTeXScanner
-ObjSourceScan = SCons.Tool.SourceFileScanner
-ProgScan = SCons.Tool.ProgramScanner
-
-# These aren't really tool scanners, so they don't quite belong with
-# the rest of those in Tool/__init__.py, but I'm not sure where else
-# they should go. Leave them here for now.
-import SCons.Scanner.Dir
-DirScanner = SCons.Scanner.Dir.DirScanner()
-DirEntryScanner = SCons.Scanner.Dir.DirEntryScanner()
-
-# Actions for common languages.
-CAction = SCons.Action.Action("$CCCOM", "$CCCOMSTR")
-ShCAction = SCons.Action.Action("$SHCCCOM", "$SHCCCOMSTR")
-CXXAction = SCons.Action.Action("$CXXCOM", "$CXXCOMSTR")
-ShCXXAction = SCons.Action.Action("$SHCXXCOM", "$SHCXXCOMSTR")
-
-ASAction = SCons.Action.Action("$ASCOM", "$ASCOMSTR")
-ASPPAction = SCons.Action.Action("$ASPPCOM", "$ASPPCOMSTR")
-
-LinkAction = SCons.Action.Action("$LINKCOM", "$LINKCOMSTR")
-ShLinkAction = SCons.Action.Action("$SHLINKCOM", "$SHLINKCOMSTR")
-
-LdModuleLinkAction = SCons.Action.Action("$LDMODULECOM", "$LDMODULECOMSTR")
-
-# Common tasks that we allow users to perform in platform-independent
-# ways by creating ActionFactory instances.
-ActionFactory = SCons.Action.ActionFactory
-
-def get_paths_str(dest):
- # If dest is a list, we need to manually call str() on each element
- if SCons.Util.is_List(dest):
- elem_strs = []
- for element in dest:
- elem_strs.append('"' + str(element) + '"')
- return '[' + ', '.join(elem_strs) + ']'
- else:
- return '"' + str(dest) + '"'
-
-def chmod_func(dest, mode):
- SCons.Node.FS.invalidate_node_memos(dest)
- if not SCons.Util.is_List(dest):
- dest = [dest]
- for element in dest:
- os.chmod(str(element), mode)
-
-def chmod_strfunc(dest, mode):
- return 'Chmod(%s, 0%o)' % (get_paths_str(dest), mode)
-
-Chmod = ActionFactory(chmod_func, chmod_strfunc)
-
-def copy_func(dest, src):
- SCons.Node.FS.invalidate_node_memos(dest)
- if SCons.Util.is_List(src) and os.path.isdir(dest):
- for file in src:
- shutil.copy2(file, dest)
- return 0
- elif os.path.isfile(src):
- return shutil.copy2(src, dest)
- else:
- return shutil.copytree(src, dest, 1)
-
-Copy = ActionFactory(copy_func,
- lambda dest, src: 'Copy("%s", "%s")' % (dest, src),
- convert=str)
-
-def delete_func(dest, must_exist=0):
- SCons.Node.FS.invalidate_node_memos(dest)
- if not SCons.Util.is_List(dest):
- dest = [dest]
- for entry in dest:
- entry = str(entry)
- if not must_exist and not os.path.exists(entry):
- continue
- if not os.path.exists(entry) or os.path.isfile(entry):
- os.unlink(entry)
- continue
- else:
- shutil.rmtree(entry, 1)
- continue
-
-def delete_strfunc(dest, must_exist=0):
- return 'Delete(%s)' % get_paths_str(dest)
-
-Delete = ActionFactory(delete_func, delete_strfunc)
-
-def mkdir_func(dest):
- SCons.Node.FS.invalidate_node_memos(dest)
- if not SCons.Util.is_List(dest):
- dest = [dest]
- for entry in dest:
- try:
- os.makedirs(str(entry))
- except os.error, e:
- p = str(entry)
- if (e.args[0] == errno.EEXIST or
- (sys.platform=='win32' and e.args[0]==183)) \
- and os.path.isdir(str(entry)):
- pass # not an error if already exists
- else:
- raise
-
-Mkdir = ActionFactory(mkdir_func,
- lambda dir: 'Mkdir(%s)' % get_paths_str(dir))
-
-def move_func(dest, src):
- SCons.Node.FS.invalidate_node_memos(dest)
- SCons.Node.FS.invalidate_node_memos(src)
- shutil.move(src, dest)
-
-Move = ActionFactory(move_func,
- lambda dest, src: 'Move("%s", "%s")' % (dest, src),
- convert=str)
-
-def touch_func(dest):
- SCons.Node.FS.invalidate_node_memos(dest)
- if not SCons.Util.is_List(dest):
- dest = [dest]
- for file in dest:
- file = str(file)
- mtime = int(time.time())
- if os.path.exists(file):
- atime = os.path.getatime(file)
- else:
- open(file, 'w')
- atime = mtime
- os.utime(file, (atime, mtime))
-
-Touch = ActionFactory(touch_func,
- lambda file: 'Touch(%s)' % get_paths_str(file))
-
-# Internal utility functions
-
-def _concat(prefix, list, suffix, 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 finally calling _concat_ixes to concatenate 'prefix' and
- 'suffix' onto each element of the list.
- """
- if not list:
- return list
-
- l = f(SCons.PathList.PathList(list).subst_path(env, target, source))
- if l is not None:
- list = l
-
- return _concat_ixes(prefix, list, suffix, env)
-
-def _concat_ixes(prefix, list, suffix, env):
- """
- Creates a new list from 'list' by concatenating the 'prefix' and
- 'suffix' arguments onto each element of the list. A trailing space
- on 'prefix' or leading space on 'suffix' will cause them to be put
- into separate list elements rather than being concatenated.
- """
-
- result = []
-
- # ensure that prefix and suffix are strings
- prefix = str(env.subst(prefix, SCons.Subst.SUBST_RAW))
- suffix = str(env.subst(suffix, SCons.Subst.SUBST_RAW))
-
- for x in list:
- if isinstance(x, SCons.Node.FS.File):
- result.append(x)
- continue
- x = str(x)
- if x:
-
- if prefix:
- if prefix[-1] == ' ':
- result.append(prefix[:-1])
- elif x[:len(prefix)] != prefix:
- x = prefix + x
-
- result.append(x)
-
- if suffix:
- if suffix[0] == ' ':
- result.append(suffix[1:])
- elif x[-len(suffix):] != suffix:
- result[-1] = result[-1]+suffix
-
- return result
-
-def _stripixes(prefix, itms, suffix, stripprefixes, stripsuffixes, env, c=None):
- """
- This is a wrapper around _concat()/_concat_ixes() that checks for
- the existence of prefixes or suffixes on list items and strips them
- where it finds them. This is used by tools (like the GNU linker)
- that need to turn something like 'libfoo.a' into '-lfoo'.
- """
-
- if not itms:
- return itms
-
- if not callable(c):
- env_c = env['_concat']
- if env_c != _concat and callable(env_c):
- # There's a custom _concat() method in the construction
- # environment, and we've allowed people to set that in
- # the past (see test/custom-concat.py), so preserve the
- # backwards compatibility.
- c = env_c
- else:
- c = _concat_ixes
-
- stripprefixes = list(map(env.subst, SCons.Util.flatten(stripprefixes)))
- stripsuffixes = list(map(env.subst, SCons.Util.flatten(stripsuffixes)))
-
- stripped = []
- for l in SCons.PathList.PathList(itms).subst_path(env, None, None):
- if isinstance(l, SCons.Node.FS.File):
- stripped.append(l)
- continue
-
- if not SCons.Util.is_String(l):
- l = str(l)
-
- for stripprefix in stripprefixes:
- lsp = len(stripprefix)
- if l[:lsp] == stripprefix:
- l = l[lsp:]
- # Do not strip more than one prefix
- break
-
- for stripsuffix in stripsuffixes:
- lss = len(stripsuffix)
- if l[-lss:] == stripsuffix:
- l = l[:-lss]
- # Do not strip more than one suffix
- break
-
- stripped.append(l)
-
- return c(prefix, stripped, suffix, env)
-
-def processDefines(defs):
- """process defines, resolving strings, lists, dictionaries, into a list of
- strings
- """
- if SCons.Util.is_List(defs):
- l = []
- for d in defs:
- if SCons.Util.is_List(d) or isinstance(d, tuple):
- l.append(str(d[0]) + '=' + str(d[1]))
- else:
- l.append(str(d))
- elif SCons.Util.is_Dict(defs):
- # The items in a dictionary are stored in random order, but
- # if the order of the command-line options changes from
- # invocation to invocation, then the signature of the command
- # line will change and we'll get random unnecessary rebuilds.
- # Consequently, we have to sort the keys to ensure a
- # consistent order...
- l = []
- for k,v in sorted(defs.items()):
- if v is None:
- l.append(str(k))
- else:
- l.append(str(k) + '=' + str(v))
- else:
- l = [str(defs)]
- return l
-
-def _defines(prefix, defs, suffix, env, c=_concat_ixes):
- """A wrapper around _concat_ixes that turns a list or string
- into a list of C preprocessor command-line definitions.
- """
-
- return c(prefix, env.subst_path(processDefines(defs)), suffix, env)
-
-class NullCmdGenerator(object):
- """This is a callable class that can be used in place of other
- command generators if you don't want them to do anything.
-
- The __call__ method for this class simply returns the thing
- you instantiated it with.
-
- Example usage:
- env["DO_NOTHING"] = NullCmdGenerator
- env["LINKCOM"] = "${DO_NOTHING('$LINK $SOURCES $TARGET')}"
- """
-
- def __init__(self, cmd):
- self.cmd = cmd
-
- def __call__(self, target, source, env, for_signature=None):
- return self.cmd
-
-class Variable_Method_Caller(object):
- """A class for finding a construction variable on the stack and
- calling one of its methods.
-
- We use this to support "construction variables" in our string
- eval()s that actually stand in for methods--specifically, use
- of "RDirs" in call to _concat that should actually execute the
- "TARGET.RDirs" method. (We used to support this by creating a little
- "build dictionary" that mapped RDirs to the method, but this got in
- the way of Memoizing construction environments, because we had to
- create new environment objects to hold the variables.)
- """
- def __init__(self, variable, method):
- self.variable = variable
- self.method = method
- def __call__(self, *args, **kw):
- try: 1//0
- except ZeroDivisionError:
- # Don't start iterating with the current stack-frame to
- # prevent creating reference cycles (f_back is safe).
- frame = sys.exc_info()[2].tb_frame.f_back
- variable = self.variable
- while frame:
- if variable in frame.f_locals:
- v = frame.f_locals[variable]
- if v:
- method = getattr(v, self.method)
- return method(*args, **kw)
- frame = frame.f_back
- return None
-
-ConstructionEnvironment = {
- 'BUILDERS' : {},
- 'SCANNERS' : [],
- 'CONFIGUREDIR' : '#/.sconf_temp',
- 'CONFIGURELOG' : '#/config.log',
- 'CPPSUFFIXES' : SCons.Tool.CSuffixes,
- 'DSUFFIXES' : SCons.Tool.DSuffixes,
- 'ENV' : {},
- 'IDLSUFFIXES' : SCons.Tool.IDLSuffixes,
-# 'LATEXSUFFIXES' : SCons.Tool.LaTeXSuffixes, # moved to the TeX tools generate functions
- '_concat' : _concat,
- '_defines' : _defines,
- '_stripixes' : _stripixes,
- '_LIBFLAGS' : '${_concat(LIBLINKPREFIX, LIBS, LIBLINKSUFFIX, __env__)}',
- '_LIBDIRFLAGS' : '$( ${_concat(LIBDIRPREFIX, LIBPATH, LIBDIRSUFFIX, __env__, RDirs, TARGET, SOURCE)} $)',
- '_CPPINCFLAGS' : '$( ${_concat(INCPREFIX, CPPPATH, INCSUFFIX, __env__, RDirs, TARGET, SOURCE)} $)',
- '_CPPDEFFLAGS' : '${_defines(CPPDEFPREFIX, CPPDEFINES, CPPDEFSUFFIX, __env__)}',
- 'TEMPFILE' : NullCmdGenerator,
- 'Dir' : Variable_Method_Caller('TARGET', 'Dir'),
- 'Dirs' : Variable_Method_Caller('TARGET', 'Dirs'),
- 'File' : Variable_Method_Caller('TARGET', 'File'),
- 'RDirs' : Variable_Method_Caller('TARGET', 'RDirs'),
-}
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Environment.py b/Externals/scons-local/scons-local-2.0.1/SCons/Environment.py
deleted file mode 100644
index d5206fae29..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Environment.py
+++ /dev/null
@@ -1,2318 +0,0 @@
-"""SCons.Environment
-
-Base class for construction Environments. These are
-the primary objects used to communicate dependency and
-construction information to the build engine.
-
-Keyword arguments supplied when the construction Environment
-is created are construction variables used to initialize the
-Environment
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-__revision__ = "src/engine/SCons/Environment.py 5134 2010/08/16 23:02:40 bdeegan"
-
-
-import copy
-import os
-import sys
-import re
-import shlex
-from collections import UserDict
-
-import SCons.Action
-import SCons.Builder
-from SCons.Debug import logInstanceCreation
-import SCons.Defaults
-import SCons.Errors
-import SCons.Memoize
-import SCons.Node
-import SCons.Node.Alias
-import SCons.Node.FS
-import SCons.Node.Python
-import SCons.Platform
-import SCons.SConf
-import SCons.SConsign
-import SCons.Subst
-import SCons.Tool
-import SCons.Util
-import SCons.Warnings
-
-class _Null(object):
- pass
-
-_null = _Null
-
-_warn_copy_deprecated = True
-_warn_source_signatures_deprecated = True
-_warn_target_signatures_deprecated = True
-
-CleanTargets = {}
-CalculatorArgs = {}
-
-semi_deepcopy = SCons.Util.semi_deepcopy
-
-# Pull UserError into the global name space for the benefit of
-# Environment().SourceSignatures(), which has some import statements
-# which seem to mess up its ability to reference SCons directly.
-UserError = SCons.Errors.UserError
-
-def alias_builder(env, target, source):
- pass
-
-AliasBuilder = SCons.Builder.Builder(action = alias_builder,
- target_factory = SCons.Node.Alias.default_ans.Alias,
- source_factory = SCons.Node.FS.Entry,
- multi = 1,
- is_explicit = None,
- name='AliasBuilder')
-
-def apply_tools(env, tools, toolpath):
- # Store the toolpath in the Environment.
- if toolpath is not None:
- env['toolpath'] = toolpath
-
- if not tools:
- return
- # Filter out null tools from the list.
- for tool in [_f for _f in tools if _f]:
- if SCons.Util.is_List(tool) or isinstance(tool, tuple):
- toolname = tool[0]
- toolargs = tool[1] # should be a dict of kw args
- tool = env.Tool(toolname, **toolargs)
- else:
- env.Tool(tool)
-
-# These names are (or will be) controlled by SCons; users should never
-# set or override them. This warning can optionally be turned off,
-# but scons will still ignore the illegal variable names even if it's off.
-reserved_construction_var_names = [
- 'CHANGED_SOURCES',
- 'CHANGED_TARGETS',
- 'SOURCE',
- 'SOURCES',
- 'TARGET',
- 'TARGETS',
- 'UNCHANGED_SOURCES',
- 'UNCHANGED_TARGETS',
-]
-
-future_reserved_construction_var_names = [
- #'HOST_OS',
- #'HOST_ARCH',
- #'HOST_CPU',
- ]
-
-def copy_non_reserved_keywords(dict):
- result = semi_deepcopy(dict)
- for k in result.keys():
- if k in reserved_construction_var_names:
- msg = "Ignoring attempt to set reserved variable `$%s'"
- SCons.Warnings.warn(SCons.Warnings.ReservedVariableWarning, msg % k)
- del result[k]
- return result
-
-def _set_reserved(env, key, value):
- msg = "Ignoring attempt to set reserved variable `$%s'"
- SCons.Warnings.warn(SCons.Warnings.ReservedVariableWarning, msg % key)
-
-def _set_future_reserved(env, key, value):
- env._dict[key] = value
- msg = "`$%s' will be reserved in a future release and setting it will become ignored"
- SCons.Warnings.warn(SCons.Warnings.FutureReservedVariableWarning, msg % key)
-
-def _set_BUILDERS(env, key, value):
- try:
- bd = env._dict[key]
- for k in bd.keys():
- del bd[k]
- except KeyError:
- bd = BuilderDict(kwbd, env)
- env._dict[key] = bd
- for k, v in value.items():
- if not SCons.Builder.is_a_Builder(v):
- raise SCons.Errors.UserError('%s is not a Builder.' % repr(v))
- bd.update(value)
-
-def _del_SCANNERS(env, key):
- del env._dict[key]
- env.scanner_map_delete()
-
-def _set_SCANNERS(env, key, value):
- env._dict[key] = value
- env.scanner_map_delete()
-
-def _delete_duplicates(l, keep_last):
- """Delete duplicates from a sequence, keeping the first or last."""
- seen={}
- result=[]
- if keep_last: # reverse in & out, then keep first
- l.reverse()
- for i in l:
- try:
- if i not in seen:
- result.append(i)
- seen[i]=1
- except TypeError:
- # probably unhashable. Just keep it.
- result.append(i)
- if keep_last:
- result.reverse()
- return result
-
-
-
-# The following is partly based on code in a comment added by Peter
-# Shannon at the following page (there called the "transplant" class):
-#
-# ASPN : Python Cookbook : Dynamically added methods to a class
-# http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/81732
-#
-# We had independently been using the idiom as BuilderWrapper, but
-# factoring out the common parts into this base class, and making
-# BuilderWrapper a subclass that overrides __call__() to enforce specific
-# Builder calling conventions, simplified some of our higher-layer code.
-
-class MethodWrapper(object):
- """
- A generic Wrapper class that associates a method (which can
- actually be any callable) with an object. As part of creating this
- MethodWrapper object an attribute with the specified (by default,
- the name of the supplied method) is added to the underlying object.
- When that new "method" is called, our __call__() method adds the
- object as the first argument, simulating the Python behavior of
- supplying "self" on method calls.
-
- We hang on to the name by which the method was added to the underlying
- base class so that we can provide a method to "clone" ourselves onto
- a new underlying object being copied (without which we wouldn't need
- to save that info).
- """
- def __init__(self, object, method, name=None):
- if name is None:
- name = method.__name__
- self.object = object
- self.method = method
- self.name = name
- setattr(self.object, name, self)
-
- def __call__(self, *args, **kwargs):
- nargs = (self.object,) + args
- return self.method(*nargs, **kwargs)
-
- def clone(self, new_object):
- """
- Returns an object that re-binds the underlying "method" to
- the specified new object.
- """
- return self.__class__(new_object, self.method, self.name)
-
-class BuilderWrapper(MethodWrapper):
- """
- A MethodWrapper subclass that that associates an environment with
- a Builder.
-
- This mainly exists to wrap the __call__() function so that all calls
- to Builders can have their argument lists massaged in the same way
- (treat a lone argument as the source, treat two arguments as target
- then source, make sure both target and source are lists) without
- having to have cut-and-paste code to do it.
-
- As a bit of obsessive backwards compatibility, we also intercept
- attempts to get or set the "env" or "builder" attributes, which were
- the names we used before we put the common functionality into the
- MethodWrapper base class. We'll keep this around for a while in case
- people shipped Tool modules that reached into the wrapper (like the
- Tool/qt.py module does, or did). There shouldn't be a lot attribute
- fetching or setting on these, so a little extra work shouldn't hurt.
- """
- def __call__(self, target=None, source=_null, *args, **kw):
- if source is _null:
- source = target
- target = None
- if target is not None and not SCons.Util.is_List(target):
- target = [target]
- if source is not None and not SCons.Util.is_List(source):
- source = [source]
- return MethodWrapper.__call__(self, target, source, *args, **kw)
-
- def __repr__(self):
- return '' % repr(self.name)
-
- def __str__(self):
- return self.__repr__()
-
- def __getattr__(self, name):
- if name == 'env':
- return self.object
- elif name == 'builder':
- return self.method
- else:
- raise AttributeError(name)
-
- def __setattr__(self, name, value):
- if name == 'env':
- self.object = value
- elif name == 'builder':
- self.method = value
- else:
- self.__dict__[name] = value
-
- # This allows a Builder to be executed directly
- # through the Environment to which it's attached.
- # In practice, we shouldn't need this, because
- # builders actually get executed through a Node.
- # But we do have a unit test for this, and can't
- # yet rule out that it would be useful in the
- # future, so leave it for now.
- #def execute(self, **kw):
- # kw['env'] = self.env
- # self.builder.execute(**kw)
-
-class BuilderDict(UserDict):
- """This is a dictionary-like class used by an Environment to hold
- the Builders. We need to do this because every time someone changes
- the Builders in the Environment's BUILDERS dictionary, we must
- update the Environment's attributes."""
- def __init__(self, dict, env):
- # Set self.env before calling the superclass initialization,
- # because it will end up calling our other methods, which will
- # need to point the values in this dictionary to self.env.
- self.env = env
- UserDict.__init__(self, dict)
-
- def __semi_deepcopy__(self):
- return self.__class__(self.data, self.env)
-
- def __setitem__(self, item, val):
- try:
- method = getattr(self.env, item).method
- except AttributeError:
- pass
- else:
- self.env.RemoveMethod(method)
- UserDict.__setitem__(self, item, val)
- BuilderWrapper(self.env, val, item)
-
- def __delitem__(self, item):
- UserDict.__delitem__(self, item)
- delattr(self.env, item)
-
- def update(self, dict):
- for i, v in dict.items():
- self.__setitem__(i, v)
-
-
-
-_is_valid_var = re.compile(r'[_a-zA-Z]\w*$')
-
-def is_valid_construction_var(varstr):
- """Return if the specified string is a legitimate construction
- variable.
- """
- return _is_valid_var.match(varstr)
-
-
-
-class SubstitutionEnvironment(object):
- """Base class for different flavors of construction environments.
-
- This class contains a minimal set of methods that handle contruction
- variable expansion and conversion of strings to Nodes, which may or
- may not be actually useful as a stand-alone class. Which methods
- ended up in this class is pretty arbitrary right now. They're
- basically the ones which we've empirically determined are common to
- the different construction environment subclasses, and most of the
- others that use or touch the underlying dictionary of construction
- variables.
-
- Eventually, this class should contain all the methods that we
- determine are necessary for a "minimal" interface to the build engine.
- A full "native Python" SCons environment has gotten pretty heavyweight
- with all of the methods and Tools and construction variables we've
- jammed in there, so it would be nice to have a lighter weight
- alternative for interfaces that don't need all of the bells and
- whistles. (At some point, we'll also probably rename this class
- "Base," since that more reflects what we want this class to become,
- but because we've released comments that tell people to subclass
- Environment.Base to create their own flavors of construction
- environment, we'll save that for a future refactoring when this
- class actually becomes useful.)
- """
-
- if SCons.Memoize.use_memoizer:
- __metaclass__ = SCons.Memoize.Memoized_Metaclass
-
- def __init__(self, **kw):
- """Initialization of an underlying SubstitutionEnvironment class.
- """
- if __debug__: logInstanceCreation(self, 'Environment.SubstitutionEnvironment')
- self.fs = SCons.Node.FS.get_default_fs()
- self.ans = SCons.Node.Alias.default_ans
- self.lookup_list = SCons.Node.arg2nodes_lookups
- self._dict = kw.copy()
- self._init_special()
- self.added_methods = []
- #self._memo = {}
-
- def _init_special(self):
- """Initial the dispatch tables for special handling of
- special construction variables."""
- self._special_del = {}
- self._special_del['SCANNERS'] = _del_SCANNERS
-
- self._special_set = {}
- for key in reserved_construction_var_names:
- self._special_set[key] = _set_reserved
- for key in future_reserved_construction_var_names:
- self._special_set[key] = _set_future_reserved
- self._special_set['BUILDERS'] = _set_BUILDERS
- self._special_set['SCANNERS'] = _set_SCANNERS
-
- # Freeze the keys of self._special_set in a list for use by
- # methods that need to check. (Empirically, list scanning has
- # gotten better than dict.has_key() in Python 2.5.)
- self._special_set_keys = list(self._special_set.keys())
-
- def __cmp__(self, other):
- return cmp(self._dict, other._dict)
-
- def __delitem__(self, key):
- special = self._special_del.get(key)
- if special:
- special(self, key)
- else:
- del self._dict[key]
-
- def __getitem__(self, key):
- return self._dict[key]
-
- def __setitem__(self, key, value):
- # This is heavily used. This implementation is the best we have
- # according to the timings in bench/env.__setitem__.py.
- #
- # The "key in self._special_set_keys" test here seems to perform
- # pretty well for the number of keys we have. A hard-coded
- # list works a little better in Python 2.5, but that has the
- # disadvantage of maybe getting out of sync if we ever add more
- # variable names. Using self._special_set.has_key() works a
- # little better in Python 2.4, but is worse than this test.
- # So right now it seems like a good trade-off, but feel free to
- # revisit this with bench/env.__setitem__.py as needed (and
- # as newer versions of Python come out).
- if key in self._special_set_keys:
- self._special_set[key](self, key, value)
- else:
- # If we already have the entry, then it's obviously a valid
- # key and we don't need to check. If we do check, using a
- # global, pre-compiled regular expression directly is more
- # efficient than calling another function or a method.
- if key not in self._dict \
- and not _is_valid_var.match(key):
- raise SCons.Errors.UserError("Illegal construction variable `%s'" % key)
- self._dict[key] = value
-
- def get(self, key, default=None):
- """Emulates the get() method of dictionaries."""
- return self._dict.get(key, default)
-
- def has_key(self, key):
- return key in self._dict
-
- def __contains__(self, key):
- return self._dict.__contains__(key)
-
- def items(self):
- return list(self._dict.items())
-
- def arg2nodes(self, args, node_factory=_null, lookup_list=_null, **kw):
- if node_factory is _null:
- node_factory = self.fs.File
- if lookup_list is _null:
- lookup_list = self.lookup_list
-
- if not args:
- return []
-
- args = SCons.Util.flatten(args)
-
- nodes = []
- for v in args:
- if SCons.Util.is_String(v):
- n = None
- for l in lookup_list:
- n = l(v)
- if n is not None:
- break
- if n is not None:
- if SCons.Util.is_String(n):
- # n = self.subst(n, raw=1, **kw)
- kw['raw'] = 1
- n = self.subst(n, **kw)
- if node_factory:
- n = node_factory(n)
- if SCons.Util.is_List(n):
- nodes.extend(n)
- else:
- nodes.append(n)
- elif node_factory:
- # v = node_factory(self.subst(v, raw=1, **kw))
- kw['raw'] = 1
- v = node_factory(self.subst(v, **kw))
- if SCons.Util.is_List(v):
- nodes.extend(v)
- else:
- nodes.append(v)
- else:
- nodes.append(v)
-
- return nodes
-
- def gvars(self):
- return self._dict
-
- def lvars(self):
- return {}
-
- def subst(self, string, raw=0, target=None, source=None, conv=None, executor=None):
- """Recursively interpolates construction variables from the
- Environment into the specified string, returning the expanded
- result. Construction variables are specified by a $ prefix
- in the string and begin with an initial underscore or
- alphabetic character followed by any number of underscores
- or alphanumeric characters. The construction variable names
- may be surrounded by curly braces to separate the name from
- trailing characters.
- """
- gvars = self.gvars()
- lvars = self.lvars()
- lvars['__env__'] = self
- if executor:
- lvars.update(executor.get_lvars())
- return SCons.Subst.scons_subst(string, self, raw, target, source, gvars, lvars, conv)
-
- def subst_kw(self, kw, raw=0, target=None, source=None):
- nkw = {}
- for k, v in kw.items():
- k = self.subst(k, raw, target, source)
- if SCons.Util.is_String(v):
- v = self.subst(v, raw, target, source)
- nkw[k] = v
- return nkw
-
- def subst_list(self, string, raw=0, target=None, source=None, conv=None, executor=None):
- """Calls through to SCons.Subst.scons_subst_list(). See
- the documentation for that function."""
- gvars = self.gvars()
- lvars = self.lvars()
- lvars['__env__'] = self
- if executor:
- lvars.update(executor.get_lvars())
- return SCons.Subst.scons_subst_list(string, self, raw, target, source, gvars, lvars, conv)
-
- def subst_path(self, path, target=None, source=None):
- """Substitute a path list, turning EntryProxies into Nodes
- and leaving Nodes (and other objects) as-is."""
-
- if not SCons.Util.is_List(path):
- path = [path]
-
- def s(obj):
- """This is the "string conversion" routine that we have our
- substitutions use to return Nodes, not strings. This relies
- on the fact that an EntryProxy object has a get() method that
- returns the underlying Node that it wraps, which is a bit of
- architectural dependence that we might need to break or modify
- in the future in response to additional requirements."""
- try:
- get = obj.get
- except AttributeError:
- obj = SCons.Util.to_String_for_subst(obj)
- else:
- obj = get()
- return obj
-
- r = []
- for p in path:
- if SCons.Util.is_String(p):
- p = self.subst(p, target=target, source=source, conv=s)
- if SCons.Util.is_List(p):
- if len(p) == 1:
- p = p[0]
- else:
- # We have an object plus a string, or multiple
- # objects that we need to smush together. No choice
- # but to make them into a string.
- p = ''.join(map(SCons.Util.to_String_for_subst, p))
- else:
- p = s(p)
- r.append(p)
- return r
-
- subst_target_source = subst
-
- def backtick(self, command):
- import subprocess
- # common arguments
- kw = { 'stdin' : 'devnull',
- 'stdout' : subprocess.PIPE,
- 'stderr' : subprocess.PIPE,
- 'universal_newlines' : True,
- }
- # if the command is a list, assume it's been quoted
- # othewise force a shell
- if not SCons.Util.is_List(command): kw['shell'] = True
- # run constructed command
- p = SCons.Action._subproc(self, command, **kw)
- out,err = p.communicate()
- status = p.wait()
- if err:
- sys.stderr.write(unicode(err))
- if status:
- raise OSError("'%s' exited %d" % (command, status))
- return out
-
- def AddMethod(self, function, name=None):
- """
- Adds the specified function as a method of this construction
- environment with the specified name. If the name is omitted,
- the default name is the name of the function itself.
- """
- method = MethodWrapper(self, function, name)
- self.added_methods.append(method)
-
- def RemoveMethod(self, function):
- """
- Removes the specified function's MethodWrapper from the
- added_methods list, so we don't re-bind it when making a clone.
- """
- self.added_methods = [dm for dm in self.added_methods if not dm.method is function]
-
- def Override(self, overrides):
- """
- Produce a modified environment whose variables are overriden by
- the overrides dictionaries. "overrides" is a dictionary that
- will override the variables of this environment.
-
- This function is much more efficient than Clone() or creating
- a new Environment because it doesn't copy the construction
- environment dictionary, it just wraps the underlying construction
- environment, and doesn't even create a wrapper object if there
- are no overrides.
- """
- if not overrides: return self
- o = copy_non_reserved_keywords(overrides)
- if not o: return self
- overrides = {}
- merges = None
- for key, value in o.items():
- if key == 'parse_flags':
- merges = value
- else:
- overrides[key] = SCons.Subst.scons_subst_once(value, self, key)
- env = OverrideEnvironment(self, overrides)
- if merges: env.MergeFlags(merges)
- return env
-
- def ParseFlags(self, *flags):
- """
- Parse the set of flags and return a dict with the flags placed
- in the appropriate entry. The flags are treated as a typical
- set of command-line flags for a GNU-like toolchain and used to
- populate the entries in the dict immediately below. If one of
- the flag strings begins with a bang (exclamation mark), it is
- assumed to be a command and the rest of the string is executed;
- the result of that evaluation is then added to the dict.
- """
- dict = {
- 'ASFLAGS' : SCons.Util.CLVar(''),
- 'CFLAGS' : SCons.Util.CLVar(''),
- 'CCFLAGS' : SCons.Util.CLVar(''),
- 'CPPDEFINES' : [],
- 'CPPFLAGS' : SCons.Util.CLVar(''),
- 'CPPPATH' : [],
- 'FRAMEWORKPATH' : SCons.Util.CLVar(''),
- 'FRAMEWORKS' : SCons.Util.CLVar(''),
- 'LIBPATH' : [],
- 'LIBS' : [],
- 'LINKFLAGS' : SCons.Util.CLVar(''),
- 'RPATH' : [],
- }
-
- def do_parse(arg):
- # if arg is a sequence, recurse with each element
- if not arg:
- return
-
- if not SCons.Util.is_String(arg):
- for t in arg: do_parse(t)
- return
-
- # if arg is a command, execute it
- if arg[0] == '!':
- arg = self.backtick(arg[1:])
-
- # utility function to deal with -D option
- def append_define(name, dict = dict):
- t = name.split('=')
- if len(t) == 1:
- dict['CPPDEFINES'].append(name)
- else:
- dict['CPPDEFINES'].append([t[0], '='.join(t[1:])])
-
- # Loop through the flags and add them to the appropriate option.
- # This tries to strike a balance between checking for all possible
- # flags and keeping the logic to a finite size, so it doesn't
- # check for some that don't occur often. It particular, if the
- # flag is not known to occur in a config script and there's a way
- # of passing the flag to the right place (by wrapping it in a -W
- # flag, for example) we don't check for it. Note that most
- # preprocessor options are not handled, since unhandled options
- # are placed in CCFLAGS, so unless the preprocessor is invoked
- # separately, these flags will still get to the preprocessor.
- # Other options not currently handled:
- # -iqoutedir (preprocessor search path)
- # -u symbol (linker undefined symbol)
- # -s (linker strip files)
- # -static* (linker static binding)
- # -shared* (linker dynamic binding)
- # -symbolic (linker global binding)
- # -R dir (deprecated linker rpath)
- # IBM compilers may also accept -qframeworkdir=foo
-
- params = shlex.split(arg)
- append_next_arg_to = None # for multi-word args
- for arg in params:
- if append_next_arg_to:
- if append_next_arg_to == 'CPPDEFINES':
- append_define(arg)
- elif append_next_arg_to == '-include':
- t = ('-include', self.fs.File(arg))
- dict['CCFLAGS'].append(t)
- elif append_next_arg_to == '-isysroot':
- t = ('-isysroot', arg)
- dict['CCFLAGS'].append(t)
- dict['LINKFLAGS'].append(t)
- elif append_next_arg_to == '-arch':
- t = ('-arch', arg)
- dict['CCFLAGS'].append(t)
- dict['LINKFLAGS'].append(t)
- else:
- dict[append_next_arg_to].append(arg)
- append_next_arg_to = None
- elif not arg[0] in ['-', '+']:
- dict['LIBS'].append(self.fs.File(arg))
- elif arg[:2] == '-L':
- if arg[2:]:
- dict['LIBPATH'].append(arg[2:])
- else:
- append_next_arg_to = 'LIBPATH'
- elif arg[:2] == '-l':
- if arg[2:]:
- dict['LIBS'].append(arg[2:])
- else:
- append_next_arg_to = 'LIBS'
- elif arg[:2] == '-I':
- if arg[2:]:
- dict['CPPPATH'].append(arg[2:])
- else:
- append_next_arg_to = 'CPPPATH'
- elif arg[:4] == '-Wa,':
- dict['ASFLAGS'].append(arg[4:])
- dict['CCFLAGS'].append(arg)
- elif arg[:4] == '-Wl,':
- if arg[:11] == '-Wl,-rpath=':
- dict['RPATH'].append(arg[11:])
- elif arg[:7] == '-Wl,-R,':
- dict['RPATH'].append(arg[7:])
- elif arg[:6] == '-Wl,-R':
- dict['RPATH'].append(arg[6:])
- else:
- dict['LINKFLAGS'].append(arg)
- elif arg[:4] == '-Wp,':
- dict['CPPFLAGS'].append(arg)
- elif arg[:2] == '-D':
- if arg[2:]:
- append_define(arg[2:])
- else:
- append_next_arg_to = 'CPPDEFINES'
- elif arg == '-framework':
- append_next_arg_to = 'FRAMEWORKS'
- elif arg[:14] == '-frameworkdir=':
- dict['FRAMEWORKPATH'].append(arg[14:])
- elif arg[:2] == '-F':
- if arg[2:]:
- dict['FRAMEWORKPATH'].append(arg[2:])
- else:
- append_next_arg_to = 'FRAMEWORKPATH'
- elif arg == '-mno-cygwin':
- dict['CCFLAGS'].append(arg)
- dict['LINKFLAGS'].append(arg)
- elif arg == '-mwindows':
- dict['LINKFLAGS'].append(arg)
- elif arg == '-pthread':
- dict['CCFLAGS'].append(arg)
- dict['LINKFLAGS'].append(arg)
- elif arg[:5] == '-std=':
- dict['CFLAGS'].append(arg) # C only
- elif arg[0] == '+':
- dict['CCFLAGS'].append(arg)
- dict['LINKFLAGS'].append(arg)
- elif arg in ['-include', '-isysroot', '-arch']:
- append_next_arg_to = arg
- else:
- dict['CCFLAGS'].append(arg)
-
- for arg in flags:
- do_parse(arg)
- return dict
-
- def MergeFlags(self, args, unique=1, dict=None):
- """
- Merge the dict in args into the construction variables of this
- env, or the passed-in dict. If args is not a dict, it is
- converted into a dict using ParseFlags. If unique is not set,
- the flags are appended rather than merged.
- """
-
- if dict is None:
- dict = self
- if not SCons.Util.is_Dict(args):
- args = self.ParseFlags(args)
- if not unique:
- self.Append(**args)
- return self
- for key, value in args.items():
- if not value:
- continue
- try:
- orig = self[key]
- except KeyError:
- orig = value
- else:
- if not orig:
- orig = value
- elif value:
- # Add orig and value. The logic here was lifted from
- # part of env.Append() (see there for a lot of comments
- # about the order in which things are tried) and is
- # used mainly to handle coercion of strings to CLVar to
- # "do the right thing" given (e.g.) an original CCFLAGS
- # string variable like '-pipe -Wall'.
- try:
- orig = orig + value
- except (KeyError, TypeError):
- try:
- add_to_orig = orig.append
- except AttributeError:
- value.insert(0, orig)
- orig = value
- else:
- add_to_orig(value)
- t = []
- if key[-4:] == 'PATH':
- ### keep left-most occurence
- for v in orig:
- if v not in t:
- t.append(v)
- else:
- ### keep right-most occurence
- orig.reverse()
- for v in orig:
- if v not in t:
- t.insert(0, v)
- self[key] = t
- return self
-
-# def MergeShellPaths(self, args, prepend=1):
-# """
-# Merge the dict in args into the shell environment in env['ENV'].
-# Shell path elements are appended or prepended according to prepend.
-
-# Uses Pre/AppendENVPath, so it always appends or prepends uniquely.
-
-# Example: env.MergeShellPaths({'LIBPATH': '/usr/local/lib'})
-# prepends /usr/local/lib to env['ENV']['LIBPATH'].
-# """
-
-# for pathname, pathval in args.items():
-# if not pathval:
-# continue
-# if prepend:
-# self.PrependENVPath(pathname, pathval)
-# else:
-# self.AppendENVPath(pathname, pathval)
-
-
-def default_decide_source(dependency, target, prev_ni):
- f = SCons.Defaults.DefaultEnvironment().decide_source
- return f(dependency, target, prev_ni)
-
-def default_decide_target(dependency, target, prev_ni):
- f = SCons.Defaults.DefaultEnvironment().decide_target
- return f(dependency, target, prev_ni)
-
-def default_copy_from_cache(src, dst):
- f = SCons.Defaults.DefaultEnvironment().copy_from_cache
- return f(src, dst)
-
-class Base(SubstitutionEnvironment):
- """Base class for "real" construction Environments. These are the
- primary objects used to communicate dependency and construction
- information to the build engine.
-
- Keyword arguments supplied when the construction Environment
- is created are construction variables used to initialize the
- Environment.
- """
-
- memoizer_counters = []
-
- #######################################################################
- # This is THE class for interacting with the SCons build engine,
- # and it contains a lot of stuff, so we're going to try to keep this
- # a little organized by grouping the methods.
- #######################################################################
-
- #######################################################################
- # Methods that make an Environment act like a dictionary. These have
- # the expected standard names for Python mapping objects. Note that
- # we don't actually make an Environment a subclass of UserDict for
- # performance reasons. Note also that we only supply methods for
- # dictionary functionality that we actually need and use.
- #######################################################################
-
- def __init__(self,
- platform=None,
- tools=None,
- toolpath=None,
- variables=None,
- parse_flags = None,
- **kw):
- """
- Initialization of a basic SCons construction environment,
- including setting up special construction variables like BUILDER,
- PLATFORM, etc., and searching for and applying available Tools.
-
- Note that we do *not* call the underlying base class
- (SubsitutionEnvironment) initialization, because we need to
- initialize things in a very specific order that doesn't work
- with the much simpler base class initialization.
- """
- if __debug__: logInstanceCreation(self, 'Environment.Base')
- self._memo = {}
- self.fs = SCons.Node.FS.get_default_fs()
- self.ans = SCons.Node.Alias.default_ans
- self.lookup_list = SCons.Node.arg2nodes_lookups
- self._dict = semi_deepcopy(SCons.Defaults.ConstructionEnvironment)
- self._init_special()
- self.added_methods = []
-
- # We don't use AddMethod, or define these as methods in this
- # class, because we *don't* want these functions to be bound
- # methods. They need to operate independently so that the
- # settings will work properly regardless of whether a given
- # target ends up being built with a Base environment or an
- # OverrideEnvironment or what have you.
- self.decide_target = default_decide_target
- self.decide_source = default_decide_source
-
- self.copy_from_cache = default_copy_from_cache
-
- self._dict['BUILDERS'] = BuilderDict(self._dict['BUILDERS'], self)
-
- if platform is None:
- platform = self._dict.get('PLATFORM', None)
- if platform is None:
- platform = SCons.Platform.Platform()
- if SCons.Util.is_String(platform):
- platform = SCons.Platform.Platform(platform)
- self._dict['PLATFORM'] = str(platform)
- platform(self)
-
- self._dict['HOST_OS'] = self._dict.get('HOST_OS',None)
- self._dict['HOST_ARCH'] = self._dict.get('HOST_ARCH',None)
-
- # Now set defaults for TARGET_{OS|ARCH}
- self._dict['TARGET_OS'] = self._dict.get('HOST_OS',None)
- self._dict['TARGET_ARCH'] = self._dict.get('HOST_ARCH',None)
-
-
- # Apply the passed-in and customizable variables to the
- # environment before calling the tools, because they may use
- # some of them during initialization.
- if 'options' in kw:
- # Backwards compatibility: they may stll be using the
- # old "options" keyword.
- variables = kw['options']
- del kw['options']
- self.Replace(**kw)
- keys = list(kw.keys())
- if variables:
- keys = keys + list(variables.keys())
- variables.Update(self)
-
- save = {}
- for k in keys:
- try:
- save[k] = self._dict[k]
- except KeyError:
- # No value may have been set if they tried to pass in a
- # reserved variable name like TARGETS.
- pass
-
- SCons.Tool.Initializers(self)
-
- if tools is None:
- tools = self._dict.get('TOOLS', None)
- if tools is None:
- tools = ['default']
- apply_tools(self, tools, toolpath)
-
- # Now restore the passed-in and customized variables
- # to the environment, since the values the user set explicitly
- # should override any values set by the tools.
- for key, val in save.items():
- self._dict[key] = val
-
- # Finally, apply any flags to be merged in
- if parse_flags: self.MergeFlags(parse_flags)
-
- #######################################################################
- # Utility methods that are primarily for internal use by SCons.
- # These begin with lower-case letters.
- #######################################################################
-
- def get_builder(self, name):
- """Fetch the builder with the specified name from the environment.
- """
- try:
- return self._dict['BUILDERS'][name]
- except KeyError:
- return None
-
- def get_CacheDir(self):
- try:
- path = self._CacheDir_path
- except AttributeError:
- path = SCons.Defaults.DefaultEnvironment()._CacheDir_path
- try:
- if path == self._last_CacheDir_path:
- return self._last_CacheDir
- except AttributeError:
- pass
- cd = SCons.CacheDir.CacheDir(path)
- self._last_CacheDir_path = path
- self._last_CacheDir = cd
- return cd
-
- def get_factory(self, factory, default='File'):
- """Return a factory function for creating Nodes for this
- construction environment.
- """
- name = default
- try:
- is_node = issubclass(factory, SCons.Node.FS.Base)
- except TypeError:
- # The specified factory isn't a Node itself--it's
- # most likely None, or possibly a callable.
- pass
- else:
- if is_node:
- # The specified factory is a Node (sub)class. Try to
- # return the FS method that corresponds to the Node's
- # name--that is, we return self.fs.Dir if they want a Dir,
- # self.fs.File for a File, etc.
- try: name = factory.__name__
- except AttributeError: pass
- else: factory = None
- if not factory:
- # They passed us None, or we picked up a name from a specified
- # class, so return the FS method. (Note that we *don't*
- # use our own self.{Dir,File} methods because that would
- # cause env.subst() to be called twice on the file name,
- # interfering with files that have $$ in them.)
- factory = getattr(self.fs, name)
- return factory
-
- memoizer_counters.append(SCons.Memoize.CountValue('_gsm'))
-
- def _gsm(self):
- try:
- return self._memo['_gsm']
- except KeyError:
- pass
-
- result = {}
-
- try:
- scanners = self._dict['SCANNERS']
- except KeyError:
- pass
- else:
- # Reverse the scanner list so that, if multiple scanners
- # claim they can scan the same suffix, earlier scanners
- # in the list will overwrite later scanners, so that
- # the result looks like a "first match" to the user.
- if not SCons.Util.is_List(scanners):
- scanners = [scanners]
- else:
- scanners = scanners[:] # copy so reverse() doesn't mod original
- scanners.reverse()
- for scanner in scanners:
- for k in scanner.get_skeys(self):
- if k and self['PLATFORM'] == 'win32':
- k = k.lower()
- result[k] = scanner
-
- self._memo['_gsm'] = result
-
- return result
-
- def get_scanner(self, skey):
- """Find the appropriate scanner given a key (usually a file suffix).
- """
- if skey and self['PLATFORM'] == 'win32':
- skey = skey.lower()
- return self._gsm().get(skey)
-
- def scanner_map_delete(self, kw=None):
- """Delete the cached scanner map (if we need to).
- """
- try:
- del self._memo['_gsm']
- except KeyError:
- pass
-
- def _update(self, dict):
- """Update an environment's values directly, bypassing the normal
- checks that occur when users try to set items.
- """
- self._dict.update(dict)
-
- def get_src_sig_type(self):
- try:
- return self.src_sig_type
- except AttributeError:
- t = SCons.Defaults.DefaultEnvironment().src_sig_type
- self.src_sig_type = t
- return t
-
- def get_tgt_sig_type(self):
- try:
- return self.tgt_sig_type
- except AttributeError:
- t = SCons.Defaults.DefaultEnvironment().tgt_sig_type
- self.tgt_sig_type = t
- return t
-
- #######################################################################
- # Public methods for manipulating an Environment. These begin with
- # upper-case letters. The essential characteristic of methods in
- # this section is that they do *not* have corresponding same-named
- # global functions. For example, a stand-alone Append() function
- # makes no sense, because Append() is all about appending values to
- # an Environment's construction variables.
- #######################################################################
-
- def Append(self, **kw):
- """Append values to existing construction variables
- in an Environment.
- """
- kw = copy_non_reserved_keywords(kw)
- for key, val in kw.items():
- # It would be easier on the eyes to write this using
- # "continue" statements whenever we finish processing an item,
- # but Python 1.5.2 apparently doesn't let you use "continue"
- # within try:-except: blocks, so we have to nest our code.
- try:
- orig = self._dict[key]
- except KeyError:
- # No existing variable in the environment, so just set
- # it to the new value.
- self._dict[key] = val
- else:
- try:
- # Check if the original looks like a dictionary.
- # If it is, we can't just try adding the value because
- # dictionaries don't have __add__() methods, and
- # things like UserList will incorrectly coerce the
- # original dict to a list (which we don't want).
- update_dict = orig.update
- except AttributeError:
- try:
- # Most straightforward: just try to add them
- # together. This will work in most cases, when the
- # original and new values are of compatible types.
- self._dict[key] = orig + val
- except (KeyError, TypeError):
- try:
- # Check if the original is a list.
- add_to_orig = orig.append
- except AttributeError:
- # The original isn't a list, but the new
- # value is (by process of elimination),
- # so insert the original in the new value
- # (if there's one to insert) and replace
- # the variable with it.
- if orig:
- val.insert(0, orig)
- self._dict[key] = val
- else:
- # The original is a list, so append the new
- # value to it (if there's a value to append).
- if val:
- add_to_orig(val)
- else:
- # The original looks like a dictionary, so update it
- # based on what we think the value looks like.
- if SCons.Util.is_List(val):
- for v in val:
- orig[v] = None
- else:
- try:
- update_dict(val)
- except (AttributeError, TypeError, ValueError):
- if SCons.Util.is_Dict(val):
- for k, v in val.items():
- orig[k] = v
- else:
- orig[val] = None
- self.scanner_map_delete(kw)
-
- # allow Dirs and strings beginning with # for top-relative
- # Note this uses the current env's fs (in self).
- def _canonicalize(self, path):
- if not SCons.Util.is_String(path): # typically a Dir
- path = str(path)
- if path and path[0] == '#':
- path = str(self.fs.Dir(path))
- return path
-
- def AppendENVPath(self, name, newpath, envname = 'ENV',
- sep = os.pathsep, delete_existing=1):
- """Append path elements to the path 'name' in the 'ENV'
- dictionary for this environment. Will only add any particular
- path once, and will normpath and normcase all paths to help
- assure this. This can also handle the case where the env
- variable is a list instead of a string.
-
- If delete_existing is 0, a newpath which is already in the path
- will not be moved to the end (it will be left where it is).
- """
-
- orig = ''
- if envname in self._dict and name in self._dict[envname]:
- orig = self._dict[envname][name]
-
- nv = SCons.Util.AppendPath(orig, newpath, sep, delete_existing,
- canonicalize=self._canonicalize)
-
- if envname not in self._dict:
- self._dict[envname] = {}
-
- self._dict[envname][name] = nv
-
- def AppendUnique(self, delete_existing=0, **kw):
- """Append values to existing construction variables
- in an Environment, if they're not already there.
- If delete_existing is 1, removes existing values first, so
- values move to end.
- """
- kw = copy_non_reserved_keywords(kw)
- for key, val in kw.items():
- if SCons.Util.is_List(val):
- val = _delete_duplicates(val, delete_existing)
- if key not in self._dict or self._dict[key] in ('', None):
- self._dict[key] = val
- elif SCons.Util.is_Dict(self._dict[key]) and \
- SCons.Util.is_Dict(val):
- self._dict[key].update(val)
- elif SCons.Util.is_List(val):
- dk = self._dict[key]
- if not SCons.Util.is_List(dk):
- dk = [dk]
- if delete_existing:
- dk = [x for x in dk if x not in val]
- else:
- val = [x for x in val if x not in dk]
- self._dict[key] = dk + val
- else:
- dk = self._dict[key]
- if SCons.Util.is_List(dk):
- # By elimination, val is not a list. Since dk is a
- # list, wrap val in a list first.
- if delete_existing:
- dk = [x for x in dk if x not in val]
- self._dict[key] = dk + [val]
- else:
- if not val in dk:
- self._dict[key] = dk + [val]
- else:
- if delete_existing:
- dk = [x for x in dk if x not in val]
- self._dict[key] = dk + val
- self.scanner_map_delete(kw)
-
- def Clone(self, tools=[], toolpath=None, parse_flags = None, **kw):
- """Return a copy of a construction Environment. The
- copy is like a Python "deep copy"--that is, independent
- copies are made recursively of each objects--except that
- a reference is copied when an object is not deep-copyable
- (like a function). There are no references to any mutable
- objects in the original Environment.
- """
- clone = copy.copy(self)
- clone._dict = semi_deepcopy(self._dict)
-
- try:
- cbd = clone._dict['BUILDERS']
- except KeyError:
- pass
- else:
- clone._dict['BUILDERS'] = BuilderDict(cbd, clone)
-
- # Check the methods added via AddMethod() and re-bind them to
- # the cloned environment. Only do this if the attribute hasn't
- # been overwritten by the user explicitly and still points to
- # the added method.
- clone.added_methods = []
- for mw in self.added_methods:
- if mw == getattr(self, mw.name):
- clone.added_methods.append(mw.clone(clone))
-
- clone._memo = {}
-
- # Apply passed-in variables before the tools
- # so the tools can use the new variables
- kw = copy_non_reserved_keywords(kw)
- new = {}
- for key, value in kw.items():
- new[key] = SCons.Subst.scons_subst_once(value, self, key)
- clone.Replace(**new)
-
- apply_tools(clone, tools, toolpath)
-
- # apply them again in case the tools overwrote them
- clone.Replace(**new)
-
- # Finally, apply any flags to be merged in
- if parse_flags: clone.MergeFlags(parse_flags)
-
- if __debug__: logInstanceCreation(self, 'Environment.EnvironmentClone')
- return clone
-
- def Copy(self, *args, **kw):
- global _warn_copy_deprecated
- if _warn_copy_deprecated:
- msg = "The env.Copy() method is deprecated; use the env.Clone() method instead."
- SCons.Warnings.warn(SCons.Warnings.DeprecatedCopyWarning, msg)
- _warn_copy_deprecated = False
- return self.Clone(*args, **kw)
-
- def _changed_build(self, dependency, target, prev_ni):
- if dependency.changed_state(target, prev_ni):
- return 1
- return self.decide_source(dependency, target, prev_ni)
-
- def _changed_content(self, dependency, target, prev_ni):
- return dependency.changed_content(target, prev_ni)
-
- def _changed_source(self, dependency, target, prev_ni):
- target_env = dependency.get_build_env()
- type = target_env.get_tgt_sig_type()
- if type == 'source':
- return target_env.decide_source(dependency, target, prev_ni)
- else:
- return target_env.decide_target(dependency, target, prev_ni)
-
- def _changed_timestamp_then_content(self, dependency, target, prev_ni):
- return dependency.changed_timestamp_then_content(target, prev_ni)
-
- def _changed_timestamp_newer(self, dependency, target, prev_ni):
- return dependency.changed_timestamp_newer(target, prev_ni)
-
- def _changed_timestamp_match(self, dependency, target, prev_ni):
- return dependency.changed_timestamp_match(target, prev_ni)
-
- def _copy_from_cache(self, src, dst):
- return self.fs.copy(src, dst)
-
- def _copy2_from_cache(self, src, dst):
- return self.fs.copy2(src, dst)
-
- def Decider(self, function):
- copy_function = self._copy2_from_cache
- if function in ('MD5', 'content'):
- if not SCons.Util.md5:
- raise UserError("MD5 signatures are not available in this version of Python.")
- function = self._changed_content
- elif function == 'MD5-timestamp':
- function = self._changed_timestamp_then_content
- elif function in ('timestamp-newer', 'make'):
- function = self._changed_timestamp_newer
- copy_function = self._copy_from_cache
- elif function == 'timestamp-match':
- function = self._changed_timestamp_match
- elif not callable(function):
- raise UserError("Unknown Decider value %s" % repr(function))
-
- # We don't use AddMethod because we don't want to turn the
- # function, which only expects three arguments, into a bound
- # method, which would add self as an initial, fourth argument.
- self.decide_target = function
- self.decide_source = function
-
- self.copy_from_cache = copy_function
-
- def Detect(self, progs):
- """Return the first available program in progs.
- """
- if not SCons.Util.is_List(progs):
- progs = [ progs ]
- for prog in progs:
- path = self.WhereIs(prog)
- if path: return prog
- return None
-
- def Dictionary(self, *args):
- if not args:
- return self._dict
- dlist = [self._dict[x] for x in args]
- if len(dlist) == 1:
- dlist = dlist[0]
- return dlist
-
- def Dump(self, key = None):
- """
- Using the standard Python pretty printer, dump the contents of the
- scons build environment to stdout.
-
- If the key passed in is anything other than None, then that will
- be used as an index into the build environment dictionary and
- whatever is found there will be fed into the pretty printer. Note
- that this key is case sensitive.
- """
- import pprint
- pp = pprint.PrettyPrinter(indent=2)
- if key:
- dict = self.Dictionary(key)
- else:
- dict = self.Dictionary()
- return pp.pformat(dict)
-
- def FindIxes(self, paths, prefix, suffix):
- """
- Search a list of paths for something that matches the prefix and suffix.
-
- paths - the list of paths or nodes.
- prefix - construction variable for the prefix.
- suffix - construction variable for the suffix.
- """
-
- suffix = self.subst('$'+suffix)
- prefix = self.subst('$'+prefix)
-
- for path in paths:
- dir,name = os.path.split(str(path))
- if name[:len(prefix)] == prefix and name[-len(suffix):] == suffix:
- return path
-
- def ParseConfig(self, command, function=None, unique=1):
- """
- Use the specified function to parse the output of the command
- in order to modify the current environment. The 'command' can
- be a string or a list of strings representing a command and
- its arguments. 'Function' is an optional argument that takes
- the environment, the output of the command, and the unique flag.
- If no function is specified, MergeFlags, which treats the output
- as the result of a typical 'X-config' command (i.e. gtk-config),
- will merge the output into the appropriate variables.
- """
- if function is None:
- def parse_conf(env, cmd, unique=unique):
- return env.MergeFlags(cmd, unique)
- function = parse_conf
- if SCons.Util.is_List(command):
- command = ' '.join(command)
- command = self.subst(command)
- return function(self, self.backtick(command))
-
- def ParseDepends(self, filename, must_exist=None, only_one=0):
- """
- Parse a mkdep-style file for explicit dependencies. This is
- completely abusable, and should be unnecessary in the "normal"
- case of proper SCons configuration, but it may help make
- the transition from a Make hierarchy easier for some people
- to swallow. It can also be genuinely useful when using a tool
- that can write a .d file, but for which writing a scanner would
- be too complicated.
- """
- filename = self.subst(filename)
- try:
- fp = open(filename, 'r')
- except IOError:
- if must_exist:
- raise
- return
- lines = SCons.Util.LogicalLines(fp).readlines()
- lines = [l for l in lines if l[0] != '#']
- tdlist = []
- for line in lines:
- try:
- target, depends = line.split(':', 1)
- except (AttributeError, ValueError):
- # Throws AttributeError if line isn't a string. Can throw
- # ValueError if line doesn't split into two or more elements.
- pass
- else:
- tdlist.append((target.split(), depends.split()))
- if only_one:
- targets = []
- for td in tdlist:
- targets.extend(td[0])
- if len(targets) > 1:
- raise SCons.Errors.UserError(
- "More than one dependency target found in `%s': %s"
- % (filename, targets))
- for target, depends in tdlist:
- self.Depends(target, depends)
-
- def Platform(self, platform):
- platform = self.subst(platform)
- return SCons.Platform.Platform(platform)(self)
-
- def Prepend(self, **kw):
- """Prepend values to existing construction variables
- in an Environment.
- """
- kw = copy_non_reserved_keywords(kw)
- for key, val in kw.items():
- # It would be easier on the eyes to write this using
- # "continue" statements whenever we finish processing an item,
- # but Python 1.5.2 apparently doesn't let you use "continue"
- # within try:-except: blocks, so we have to nest our code.
- try:
- orig = self._dict[key]
- except KeyError:
- # No existing variable in the environment, so just set
- # it to the new value.
- self._dict[key] = val
- else:
- try:
- # Check if the original looks like a dictionary.
- # If it is, we can't just try adding the value because
- # dictionaries don't have __add__() methods, and
- # things like UserList will incorrectly coerce the
- # original dict to a list (which we don't want).
- update_dict = orig.update
- except AttributeError:
- try:
- # Most straightforward: just try to add them
- # together. This will work in most cases, when the
- # original and new values are of compatible types.
- self._dict[key] = val + orig
- except (KeyError, TypeError):
- try:
- # Check if the added value is a list.
- add_to_val = val.append
- except AttributeError:
- # The added value isn't a list, but the
- # original is (by process of elimination),
- # so insert the the new value in the original
- # (if there's one to insert).
- if val:
- orig.insert(0, val)
- else:
- # The added value is a list, so append
- # the original to it (if there's a value
- # to append).
- if orig:
- add_to_val(orig)
- self._dict[key] = val
- else:
- # The original looks like a dictionary, so update it
- # based on what we think the value looks like.
- if SCons.Util.is_List(val):
- for v in val:
- orig[v] = None
- else:
- try:
- update_dict(val)
- except (AttributeError, TypeError, ValueError):
- if SCons.Util.is_Dict(val):
- for k, v in val.items():
- orig[k] = v
- else:
- orig[val] = None
- self.scanner_map_delete(kw)
-
- def PrependENVPath(self, name, newpath, envname = 'ENV', sep = os.pathsep,
- delete_existing=1):
- """Prepend path elements to the path 'name' in the 'ENV'
- dictionary for this environment. Will only add any particular
- path once, and will normpath and normcase all paths to help
- assure this. This can also handle the case where the env
- variable is a list instead of a string.
-
- If delete_existing is 0, a newpath which is already in the path
- will not be moved to the front (it will be left where it is).
- """
-
- orig = ''
- if envname in self._dict and name in self._dict[envname]:
- orig = self._dict[envname][name]
-
- nv = SCons.Util.PrependPath(orig, newpath, sep, delete_existing,
- canonicalize=self._canonicalize)
-
- if envname not in self._dict:
- self._dict[envname] = {}
-
- self._dict[envname][name] = nv
-
- def PrependUnique(self, delete_existing=0, **kw):
- """Prepend values to existing construction variables
- in an Environment, if they're not already there.
- If delete_existing is 1, removes existing values first, so
- values move to front.
- """
- kw = copy_non_reserved_keywords(kw)
- for key, val in kw.items():
- if SCons.Util.is_List(val):
- val = _delete_duplicates(val, not delete_existing)
- if key not in self._dict or self._dict[key] in ('', None):
- self._dict[key] = val
- elif SCons.Util.is_Dict(self._dict[key]) and \
- SCons.Util.is_Dict(val):
- self._dict[key].update(val)
- elif SCons.Util.is_List(val):
- dk = self._dict[key]
- if not SCons.Util.is_List(dk):
- dk = [dk]
- if delete_existing:
- dk = [x for x in dk if x not in val]
- else:
- val = [x for x in val if x not in dk]
- self._dict[key] = val + dk
- else:
- dk = self._dict[key]
- if SCons.Util.is_List(dk):
- # By elimination, val is not a list. Since dk is a
- # list, wrap val in a list first.
- if delete_existing:
- dk = [x for x in dk if x not in val]
- self._dict[key] = [val] + dk
- else:
- if not val in dk:
- self._dict[key] = [val] + dk
- else:
- if delete_existing:
- dk = [x for x in dk if x not in val]
- self._dict[key] = val + dk
- self.scanner_map_delete(kw)
-
- def Replace(self, **kw):
- """Replace existing construction variables in an Environment
- with new construction variables and/or values.
- """
- try:
- kwbd = kw['BUILDERS']
- except KeyError:
- pass
- else:
- kwbd = semi_deepcopy(kwbd)
- del kw['BUILDERS']
- self.__setitem__('BUILDERS', kwbd)
- kw = copy_non_reserved_keywords(kw)
- self._update(semi_deepcopy(kw))
- self.scanner_map_delete(kw)
-
- def ReplaceIxes(self, path, old_prefix, old_suffix, new_prefix, new_suffix):
- """
- Replace old_prefix with new_prefix and old_suffix with new_suffix.
-
- env - Environment used to interpolate variables.
- path - the path that will be modified.
- old_prefix - construction variable for the old prefix.
- old_suffix - construction variable for the old suffix.
- new_prefix - construction variable for the new prefix.
- new_suffix - construction variable for the new suffix.
- """
- old_prefix = self.subst('$'+old_prefix)
- old_suffix = self.subst('$'+old_suffix)
-
- new_prefix = self.subst('$'+new_prefix)
- new_suffix = self.subst('$'+new_suffix)
-
- dir,name = os.path.split(str(path))
- if name[:len(old_prefix)] == old_prefix:
- name = name[len(old_prefix):]
- if name[-len(old_suffix):] == old_suffix:
- name = name[:-len(old_suffix)]
- return os.path.join(dir, new_prefix+name+new_suffix)
-
- def SetDefault(self, **kw):
- for k in kw.keys():
- if k in self._dict:
- del kw[k]
- self.Replace(**kw)
-
- def _find_toolpath_dir(self, tp):
- return self.fs.Dir(self.subst(tp)).srcnode().abspath
-
- def Tool(self, tool, toolpath=None, **kw):
- if SCons.Util.is_String(tool):
- tool = self.subst(tool)
- if toolpath is None:
- toolpath = self.get('toolpath', [])
- toolpath = list(map(self._find_toolpath_dir, toolpath))
- tool = SCons.Tool.Tool(tool, toolpath, **kw)
- tool(self)
-
- def WhereIs(self, prog, path=None, pathext=None, reject=[]):
- """Find prog in the path.
- """
- if path is None:
- try:
- path = self['ENV']['PATH']
- except KeyError:
- pass
- elif SCons.Util.is_String(path):
- path = self.subst(path)
- if pathext is None:
- try:
- pathext = self['ENV']['PATHEXT']
- except KeyError:
- pass
- elif SCons.Util.is_String(pathext):
- pathext = self.subst(pathext)
- prog = self.subst(prog)
- path = SCons.Util.WhereIs(prog, path, pathext, reject)
- if path: return path
- return None
-
- #######################################################################
- # Public methods for doing real "SCons stuff" (manipulating
- # dependencies, setting attributes on targets, etc.). These begin
- # with upper-case letters. The essential characteristic of methods
- # in this section is that they all *should* have corresponding
- # same-named global functions.
- #######################################################################
-
- def Action(self, *args, **kw):
- def subst_string(a, self=self):
- if SCons.Util.is_String(a):
- a = self.subst(a)
- return a
- nargs = list(map(subst_string, args))
- nkw = self.subst_kw(kw)
- return SCons.Action.Action(*nargs, **nkw)
-
- def AddPreAction(self, files, action):
- nodes = self.arg2nodes(files, self.fs.Entry)
- action = SCons.Action.Action(action)
- uniq = {}
- for executor in [n.get_executor() for n in nodes]:
- uniq[executor] = 1
- for executor in uniq.keys():
- executor.add_pre_action(action)
- return nodes
-
- def AddPostAction(self, files, action):
- nodes = self.arg2nodes(files, self.fs.Entry)
- action = SCons.Action.Action(action)
- uniq = {}
- for executor in [n.get_executor() for n in nodes]:
- uniq[executor] = 1
- for executor in uniq.keys():
- executor.add_post_action(action)
- return nodes
-
- def Alias(self, target, source=[], action=None, **kw):
- tlist = self.arg2nodes(target, self.ans.Alias)
- if not SCons.Util.is_List(source):
- source = [source]
- source = [_f for _f in source if _f]
-
- if not action:
- if not source:
- # There are no source files and no action, so just
- # return a target list of classic Alias Nodes, without
- # any builder. The externally visible effect is that
- # this will make the wrapping Script.BuildTask class
- # say that there's "Nothing to be done" for this Alias,
- # instead of that it's "up to date."
- return tlist
-
- # No action, but there are sources. Re-call all the target
- # builders to add the sources to each target.
- result = []
- for t in tlist:
- bld = t.get_builder(AliasBuilder)
- result.extend(bld(self, t, source))
- return result
-
- nkw = self.subst_kw(kw)
- nkw.update({
- 'action' : SCons.Action.Action(action),
- 'source_factory' : self.fs.Entry,
- 'multi' : 1,
- 'is_explicit' : None,
- })
- bld = SCons.Builder.Builder(**nkw)
-
- # Apply the Builder separately to each target so that the Aliases
- # stay separate. If we did one "normal" Builder call with the
- # whole target list, then all of the target Aliases would be
- # associated under a single Executor.
- result = []
- for t in tlist:
- # Calling the convert() method will cause a new Executor to be
- # created from scratch, so we have to explicitly initialize
- # it with the target's existing sources, plus our new ones,
- # so nothing gets lost.
- b = t.get_builder()
- if b is None or b is AliasBuilder:
- b = bld
- else:
- nkw['action'] = b.action + action
- b = SCons.Builder.Builder(**nkw)
- t.convert()
- result.extend(b(self, t, t.sources + source))
- return result
-
- def AlwaysBuild(self, *targets):
- tlist = []
- for t in targets:
- tlist.extend(self.arg2nodes(t, self.fs.Entry))
- for t in tlist:
- t.set_always_build()
- return tlist
-
- def BuildDir(self, *args, **kw):
- msg = """BuildDir() and the build_dir keyword have been deprecated;\n\tuse VariantDir() and the variant_dir keyword instead."""
- SCons.Warnings.warn(SCons.Warnings.DeprecatedBuildDirWarning, msg)
- if 'build_dir' in kw:
- kw['variant_dir'] = kw['build_dir']
- del kw['build_dir']
- return self.VariantDir(*args, **kw)
-
- def Builder(self, **kw):
- nkw = self.subst_kw(kw)
- return SCons.Builder.Builder(**nkw)
-
- def CacheDir(self, path):
- import SCons.CacheDir
- if path is not None:
- path = self.subst(path)
- self._CacheDir_path = path
-
- def Clean(self, targets, files):
- global CleanTargets
- tlist = self.arg2nodes(targets, self.fs.Entry)
- flist = self.arg2nodes(files, self.fs.Entry)
- for t in tlist:
- try:
- CleanTargets[t].extend(flist)
- except KeyError:
- CleanTargets[t] = flist
-
- def Configure(self, *args, **kw):
- nargs = [self]
- if args:
- nargs = nargs + self.subst_list(args)[0]
- nkw = self.subst_kw(kw)
- nkw['_depth'] = kw.get('_depth', 0) + 1
- try:
- nkw['custom_tests'] = self.subst_kw(nkw['custom_tests'])
- except KeyError:
- pass
- return SCons.SConf.SConf(*nargs, **nkw)
-
- def Command(self, target, source, action, **kw):
- """Builds the supplied target files from the supplied
- source files using the supplied action. Action may
- be any type that the Builder constructor will accept
- for an action."""
- bkw = {
- 'action' : action,
- 'target_factory' : self.fs.Entry,
- 'source_factory' : self.fs.Entry,
- }
- try: bkw['source_scanner'] = kw['source_scanner']
- except KeyError: pass
- else: del kw['source_scanner']
- bld = SCons.Builder.Builder(**bkw)
- return bld(self, target, source, **kw)
-
- def Depends(self, target, dependency):
- """Explicity specify that 'target's depend on 'dependency'."""
- tlist = self.arg2nodes(target, self.fs.Entry)
- dlist = self.arg2nodes(dependency, self.fs.Entry)
- for t in tlist:
- t.add_dependency(dlist)
- return tlist
-
- def Dir(self, name, *args, **kw):
- """
- """
- s = self.subst(name)
- if SCons.Util.is_Sequence(s):
- result=[]
- for e in s:
- result.append(self.fs.Dir(e, *args, **kw))
- return result
- return self.fs.Dir(s, *args, **kw)
-
- def NoClean(self, *targets):
- """Tags a target so that it will not be cleaned by -c"""
- tlist = []
- for t in targets:
- tlist.extend(self.arg2nodes(t, self.fs.Entry))
- for t in tlist:
- t.set_noclean()
- return tlist
-
- def NoCache(self, *targets):
- """Tags a target so that it will not be cached"""
- tlist = []
- for t in targets:
- tlist.extend(self.arg2nodes(t, self.fs.Entry))
- for t in tlist:
- t.set_nocache()
- return tlist
-
- def Entry(self, name, *args, **kw):
- """
- """
- s = self.subst(name)
- if SCons.Util.is_Sequence(s):
- result=[]
- for e in s:
- result.append(self.fs.Entry(e, *args, **kw))
- return result
- return self.fs.Entry(s, *args, **kw)
-
- def Environment(self, **kw):
- return SCons.Environment.Environment(**self.subst_kw(kw))
-
- def Execute(self, action, *args, **kw):
- """Directly execute an action through an Environment
- """
- action = self.Action(action, *args, **kw)
- result = action([], [], self)
- if isinstance(result, SCons.Errors.BuildError):
- errstr = result.errstr
- if result.filename:
- errstr = result.filename + ': ' + errstr
- sys.stderr.write("scons: *** %s\n" % errstr)
- return result.status
- else:
- return result
-
- def File(self, name, *args, **kw):
- """
- """
- s = self.subst(name)
- if SCons.Util.is_Sequence(s):
- result=[]
- for e in s:
- result.append(self.fs.File(e, *args, **kw))
- return result
- return self.fs.File(s, *args, **kw)
-
- def FindFile(self, file, dirs):
- file = self.subst(file)
- nodes = self.arg2nodes(dirs, self.fs.Dir)
- return SCons.Node.FS.find_file(file, tuple(nodes))
-
- def Flatten(self, sequence):
- return SCons.Util.flatten(sequence)
-
- def GetBuildPath(self, files):
- result = list(map(str, self.arg2nodes(files, self.fs.Entry)))
- if SCons.Util.is_List(files):
- return result
- else:
- return result[0]
-
- def Glob(self, pattern, ondisk=True, source=False, strings=False):
- return self.fs.Glob(self.subst(pattern), ondisk, source, strings)
-
- def Ignore(self, target, dependency):
- """Ignore a dependency."""
- tlist = self.arg2nodes(target, self.fs.Entry)
- dlist = self.arg2nodes(dependency, self.fs.Entry)
- for t in tlist:
- t.add_ignore(dlist)
- return tlist
-
- def Literal(self, string):
- return SCons.Subst.Literal(string)
-
- def Local(self, *targets):
- ret = []
- for targ in targets:
- if isinstance(targ, SCons.Node.Node):
- targ.set_local()
- ret.append(targ)
- else:
- for t in self.arg2nodes(targ, self.fs.Entry):
- t.set_local()
- ret.append(t)
- return ret
-
- def Precious(self, *targets):
- tlist = []
- for t in targets:
- tlist.extend(self.arg2nodes(t, self.fs.Entry))
- for t in tlist:
- t.set_precious()
- return tlist
-
- def Repository(self, *dirs, **kw):
- dirs = self.arg2nodes(list(dirs), self.fs.Dir)
- self.fs.Repository(*dirs, **kw)
-
- def Requires(self, target, prerequisite):
- """Specify that 'prerequisite' must be built before 'target',
- (but 'target' does not actually depend on 'prerequisite'
- and need not be rebuilt if it changes)."""
- tlist = self.arg2nodes(target, self.fs.Entry)
- plist = self.arg2nodes(prerequisite, self.fs.Entry)
- for t in tlist:
- t.add_prerequisite(plist)
- return tlist
-
- def Scanner(self, *args, **kw):
- nargs = []
- for arg in args:
- if SCons.Util.is_String(arg):
- arg = self.subst(arg)
- nargs.append(arg)
- nkw = self.subst_kw(kw)
- return SCons.Scanner.Base(*nargs, **nkw)
-
- def SConsignFile(self, name=".sconsign", dbm_module=None):
- if name is not None:
- name = self.subst(name)
- if not os.path.isabs(name):
- name = os.path.join(str(self.fs.SConstruct_dir), name)
- if name:
- name = os.path.normpath(name)
- sconsign_dir = os.path.dirname(name)
- if sconsign_dir and not os.path.exists(sconsign_dir):
- self.Execute(SCons.Defaults.Mkdir(sconsign_dir))
- SCons.SConsign.File(name, dbm_module)
-
- def SideEffect(self, side_effect, target):
- """Tell scons that side_effects are built as side
- effects of building targets."""
- side_effects = self.arg2nodes(side_effect, self.fs.Entry)
- targets = self.arg2nodes(target, self.fs.Entry)
-
- for side_effect in side_effects:
- if side_effect.multiple_side_effect_has_builder():
- raise SCons.Errors.UserError("Multiple ways to build the same target were specified for: %s" % str(side_effect))
- side_effect.add_source(targets)
- side_effect.side_effect = 1
- self.Precious(side_effect)
- for target in targets:
- target.side_effects.append(side_effect)
- return side_effects
-
- def SourceCode(self, entry, builder):
- """Arrange for a source code builder for (part of) a tree."""
- msg = """SourceCode() has been deprecated and there is no replacement.
-\tIf you need this function, please contact dev@scons.tigris.org."""
- SCons.Warnings.warn(SCons.Warnings.DeprecatedSourceCodeWarning, msg)
- entries = self.arg2nodes(entry, self.fs.Entry)
- for entry in entries:
- entry.set_src_builder(builder)
- return entries
-
- def SourceSignatures(self, type):
- global _warn_source_signatures_deprecated
- if _warn_source_signatures_deprecated:
- msg = "The env.SourceSignatures() method is deprecated;\n" + \
- "\tconvert your build to use the env.Decider() method instead."
- SCons.Warnings.warn(SCons.Warnings.DeprecatedSourceSignaturesWarning, msg)
- _warn_source_signatures_deprecated = False
- type = self.subst(type)
- self.src_sig_type = type
- if type == 'MD5':
- if not SCons.Util.md5:
- raise UserError("MD5 signatures are not available in this version of Python.")
- self.decide_source = self._changed_content
- elif type == 'timestamp':
- self.decide_source = self._changed_timestamp_match
- else:
- raise UserError("Unknown source signature type '%s'" % type)
-
- def Split(self, arg):
- """This function converts a string or list into a list of strings
- or Nodes. This makes things easier for users by allowing files to
- be specified as a white-space separated list to be split.
- The input rules are:
- - A single string containing names separated by spaces. These will be
- split apart at the spaces.
- - A single Node instance
- - A list containing either strings or Node instances. Any strings
- in the list are not split at spaces.
- In all cases, the function returns a list of Nodes and strings."""
- if SCons.Util.is_List(arg):
- return list(map(self.subst, arg))
- elif SCons.Util.is_String(arg):
- return self.subst(arg).split()
- else:
- return [self.subst(arg)]
-
- def TargetSignatures(self, type):
- global _warn_target_signatures_deprecated
- if _warn_target_signatures_deprecated:
- msg = "The env.TargetSignatures() method is deprecated;\n" + \
- "\tconvert your build to use the env.Decider() method instead."
- SCons.Warnings.warn(SCons.Warnings.DeprecatedTargetSignaturesWarning, msg)
- _warn_target_signatures_deprecated = False
- type = self.subst(type)
- self.tgt_sig_type = type
- if type in ('MD5', 'content'):
- if not SCons.Util.md5:
- raise UserError("MD5 signatures are not available in this version of Python.")
- self.decide_target = self._changed_content
- elif type == 'timestamp':
- self.decide_target = self._changed_timestamp_match
- elif type == 'build':
- self.decide_target = self._changed_build
- elif type == 'source':
- self.decide_target = self._changed_source
- else:
- raise UserError("Unknown target signature type '%s'"%type)
-
- def Value(self, value, built_value=None):
- """
- """
- return SCons.Node.Python.Value(value, built_value)
-
- def VariantDir(self, variant_dir, src_dir, duplicate=1):
- variant_dir = self.arg2nodes(variant_dir, self.fs.Dir)[0]
- src_dir = self.arg2nodes(src_dir, self.fs.Dir)[0]
- self.fs.VariantDir(variant_dir, src_dir, duplicate)
-
- def FindSourceFiles(self, node='.'):
- """ returns a list of all source files.
- """
- node = self.arg2nodes(node, self.fs.Entry)[0]
-
- sources = []
- def build_source(ss):
- for s in ss:
- if isinstance(s, SCons.Node.FS.Dir):
- build_source(s.all_children())
- elif s.has_builder():
- build_source(s.sources)
- elif isinstance(s.disambiguate(), SCons.Node.FS.File):
- sources.append(s)
- build_source(node.all_children())
-
- # THIS CODE APPEARS TO HAVE NO EFFECT
- # # get the final srcnode for all nodes, this means stripping any
- # # attached build node by calling the srcnode function
- # for file in sources:
- # srcnode = file.srcnode()
- # while srcnode != file.srcnode():
- # srcnode = file.srcnode()
-
- # remove duplicates
- return list(set(sources))
-
- def FindInstalledFiles(self):
- """ returns the list of all targets of the Install and InstallAs Builder.
- """
- from SCons.Tool import install
- if install._UNIQUE_INSTALLED_FILES is None:
- install._UNIQUE_INSTALLED_FILES = SCons.Util.uniquer_hashables(install._INSTALLED_FILES)
- return install._UNIQUE_INSTALLED_FILES
-
-class OverrideEnvironment(Base):
- """A proxy that overrides variables in a wrapped construction
- environment by returning values from an overrides dictionary in
- preference to values from the underlying subject environment.
-
- This is a lightweight (I hope) proxy that passes through most use of
- attributes to the underlying Environment.Base class, but has just
- enough additional methods defined to act like a real construction
- environment with overridden values. It can wrap either a Base
- construction environment, or another OverrideEnvironment, which
- can in turn nest arbitrary OverrideEnvironments...
-
- Note that we do *not* call the underlying base class
- (SubsitutionEnvironment) initialization, because we get most of those
- from proxying the attributes of the subject construction environment.
- But because we subclass SubstitutionEnvironment, this class also
- has inherited arg2nodes() and subst*() methods; those methods can't
- be proxied because they need *this* object's methods to fetch the
- values from the overrides dictionary.
- """
-
- def __init__(self, subject, overrides={}):
- if __debug__: logInstanceCreation(self, 'Environment.OverrideEnvironment')
- self.__dict__['__subject'] = subject
- self.__dict__['overrides'] = overrides
-
- # Methods that make this class act like a proxy.
- def __getattr__(self, name):
- return getattr(self.__dict__['__subject'], name)
- def __setattr__(self, name, value):
- setattr(self.__dict__['__subject'], name, value)
-
- # Methods that make this class act like a dictionary.
- def __getitem__(self, key):
- try:
- return self.__dict__['overrides'][key]
- except KeyError:
- return self.__dict__['__subject'].__getitem__(key)
- def __setitem__(self, key, value):
- if not is_valid_construction_var(key):
- raise SCons.Errors.UserError("Illegal construction variable `%s'" % key)
- self.__dict__['overrides'][key] = value
- def __delitem__(self, key):
- try:
- del self.__dict__['overrides'][key]
- except KeyError:
- deleted = 0
- else:
- deleted = 1
- try:
- result = self.__dict__['__subject'].__delitem__(key)
- except KeyError:
- if not deleted:
- raise
- result = None
- return result
- def get(self, key, default=None):
- """Emulates the get() method of dictionaries."""
- try:
- return self.__dict__['overrides'][key]
- except KeyError:
- return self.__dict__['__subject'].get(key, default)
- def has_key(self, key):
- try:
- self.__dict__['overrides'][key]
- return 1
- except KeyError:
- return key in self.__dict__['__subject']
- def __contains__(self, key):
- if self.__dict__['overrides'].__contains__(key):
- return 1
- return self.__dict__['__subject'].__contains__(key)
- def Dictionary(self):
- """Emulates the items() method of dictionaries."""
- d = self.__dict__['__subject'].Dictionary().copy()
- d.update(self.__dict__['overrides'])
- return d
- def items(self):
- """Emulates the items() method of dictionaries."""
- return list(self.Dictionary().items())
-
- # Overridden private construction environment methods.
- def _update(self, dict):
- """Update an environment's values directly, bypassing the normal
- checks that occur when users try to set items.
- """
- self.__dict__['overrides'].update(dict)
-
- def gvars(self):
- return self.__dict__['__subject'].gvars()
-
- def lvars(self):
- lvars = self.__dict__['__subject'].lvars()
- lvars.update(self.__dict__['overrides'])
- return lvars
-
- # Overridden public construction environment methods.
- def Replace(self, **kw):
- kw = copy_non_reserved_keywords(kw)
- self.__dict__['overrides'].update(semi_deepcopy(kw))
-
-# The entry point that will be used by the external world
-# to refer to a construction environment. This allows the wrapper
-# interface to extend a construction environment for its own purposes
-# by subclassing SCons.Environment.Base and then assigning the
-# class to SCons.Environment.Environment.
-
-Environment = Base
-
-# An entry point for returning a proxy subclass instance that overrides
-# the subst*() methods so they don't actually perform construction
-# variable substitution. This is specifically intended to be the shim
-# layer in between global function calls (which don't want construction
-# variable substitution) and the DefaultEnvironment() (which would
-# substitute variables if left to its own devices)."""
-#
-# We have to wrap this in a function that allows us to delay definition of
-# the class until it's necessary, so that when it subclasses Environment
-# it will pick up whatever Environment subclass the wrapper interface
-# might have assigned to SCons.Environment.Environment.
-
-def NoSubstitutionProxy(subject):
- class _NoSubstitutionProxy(Environment):
- def __init__(self, subject):
- self.__dict__['__subject'] = subject
- def __getattr__(self, name):
- return getattr(self.__dict__['__subject'], name)
- def __setattr__(self, name, value):
- return setattr(self.__dict__['__subject'], name, value)
- def raw_to_mode(self, dict):
- try:
- raw = dict['raw']
- except KeyError:
- pass
- else:
- del dict['raw']
- dict['mode'] = raw
- def subst(self, string, *args, **kwargs):
- return string
- def subst_kw(self, kw, *args, **kwargs):
- return kw
- def subst_list(self, string, *args, **kwargs):
- nargs = (string, self,) + args
- nkw = kwargs.copy()
- nkw['gvars'] = {}
- self.raw_to_mode(nkw)
- return SCons.Subst.scons_subst_list(*nargs, **nkw)
- def subst_target_source(self, string, *args, **kwargs):
- nargs = (string, self,) + args
- nkw = kwargs.copy()
- nkw['gvars'] = {}
- self.raw_to_mode(nkw)
- return SCons.Subst.scons_subst(*nargs, **nkw)
- return _NoSubstitutionProxy(subject)
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Errors.py b/Externals/scons-local/scons-local-2.0.1/SCons/Errors.py
deleted file mode 100644
index 63f9d417cd..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Errors.py
+++ /dev/null
@@ -1,205 +0,0 @@
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-"""SCons.Errors
-
-This file contains the exception classes used to handle internal
-and user errors in SCons.
-
-"""
-
-__revision__ = "src/engine/SCons/Errors.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import SCons.Util
-
-import exceptions
-
-class BuildError(Exception):
- """ Errors occuring while building.
-
- BuildError have the following attributes:
-
- Information about the cause of the build error:
- -----------------------------------------------
-
- errstr : a description of the error message
-
- status : the return code of the action that caused the build
- error. Must be set to a non-zero value even if the
- build error is not due to an action returning a
- non-zero returned code.
-
- exitstatus : SCons exit status due to this build error.
- Must be nonzero unless due to an explicit Exit()
- call. Not always the same as status, since
- actions return a status code that should be
- respected, but SCons typically exits with 2
- irrespective of the return value of the failed
- action.
-
- filename : The name of the file or directory that caused the
- build error. Set to None if no files are associated with
- this error. This might be different from the target
- being built. For example, failure to create the
- directory in which the target file will appear. It
- can be None if the error is not due to a particular
- filename.
-
- exc_info : Info about exception that caused the build
- error. Set to (None, None, None) if this build
- error is not due to an exception.
-
-
- Information about the cause of the location of the error:
- ---------------------------------------------------------
-
- node : the error occured while building this target node(s)
-
- executor : the executor that caused the build to fail (might
- be None if the build failures is not due to the
- executor failing)
-
- action : the action that caused the build to fail (might be
- None if the build failures is not due to the an
- action failure)
-
- command : the command line for the action that caused the
- build to fail (might be None if the build failures
- is not due to the an action failure)
- """
-
- def __init__(self,
- node=None, errstr="Unknown error", status=2, exitstatus=2,
- filename=None, executor=None, action=None, command=None,
- exc_info=(None, None, None)):
-
- self.errstr = errstr
- self.status = status
- self.exitstatus = exitstatus
- self.filename = filename
- self.exc_info = exc_info
-
- self.node = node
- self.executor = executor
- self.action = action
- self.command = command
-
- Exception.__init__(self, node, errstr, status, exitstatus, filename,
- executor, action, command, exc_info)
-
- def __str__(self):
- if self.filename:
- return self.filename + ': ' + self.errstr
- else:
- return self.errstr
-
-class InternalError(Exception):
- pass
-
-class UserError(Exception):
- pass
-
-class StopError(Exception):
- pass
-
-class EnvironmentError(Exception):
- pass
-
-class MSVCError(IOError):
- pass
-
-class ExplicitExit(Exception):
- def __init__(self, node=None, status=None, *args):
- self.node = node
- self.status = status
- self.exitstatus = status
- Exception.__init__(self, *args)
-
-def convert_to_BuildError(status, exc_info=None):
- """
- Convert any return code a BuildError Exception.
-
- `status' can either be a return code or an Exception.
- The buildError.status we set here will normally be
- used as the exit status of the "scons" process.
- """
- if not exc_info and isinstance(status, Exception):
- exc_info = (status.__class__, status, None)
-
- if isinstance(status, BuildError):
- buildError = status
- buildError.exitstatus = 2 # always exit with 2 on build errors
- elif isinstance(status, ExplicitExit):
- status = status.status
- errstr = 'Explicit exit, status %s' % status
- buildError = BuildError(
- errstr=errstr,
- status=status, # might be 0, OK here
- exitstatus=status, # might be 0, OK here
- exc_info=exc_info)
- elif isinstance(status, (StopError, UserError)):
- buildError = BuildError(
- errstr=str(status),
- status=2,
- exitstatus=2,
- exc_info=exc_info)
- elif isinstance(status, exceptions.EnvironmentError):
- # If an IOError/OSError happens, raise a BuildError.
- # Report the name of the file or directory that caused the
- # error, which might be different from the target being built
- # (for example, failure to create the directory in which the
- # target file will appear).
- try: filename = status.filename
- except AttributeError: filename = None
- buildError = BuildError(
- errstr=status.strerror,
- status=status.errno,
- exitstatus=2,
- filename=filename,
- exc_info=exc_info)
- elif isinstance(status, Exception):
- buildError = BuildError(
- errstr='%s : %s' % (status.__class__.__name__, status),
- status=2,
- exitstatus=2,
- exc_info=exc_info)
- elif SCons.Util.is_String(status):
- buildError = BuildError(
- errstr=status,
- status=2,
- exitstatus=2)
- else:
- buildError = BuildError(
- errstr="Error %s" % status,
- status=status,
- exitstatus=2)
-
- #import sys
- #sys.stderr.write("convert_to_BuildError: status %s => (errstr %s, status %s)"%(status,buildError.errstr, buildError.status))
- return buildError
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Executor.py b/Externals/scons-local/scons-local-2.0.1/SCons/Executor.py
deleted file mode 100644
index b31e3483ed..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Executor.py
+++ /dev/null
@@ -1,633 +0,0 @@
-"""SCons.Executor
-
-A module for executing actions with specific lists of target and source
-Nodes.
-
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-__revision__ = "src/engine/SCons/Executor.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import collections
-
-from SCons.Debug import logInstanceCreation
-import SCons.Errors
-import SCons.Memoize
-
-
-class Batch(object):
- """Remembers exact association between targets
- and sources of executor."""
- def __init__(self, targets=[], sources=[]):
- self.targets = targets
- self.sources = sources
-
-
-
-class TSList(collections.UserList):
- """A class that implements $TARGETS or $SOURCES expansions by wrapping
- an executor Method. This class is used in the Executor.lvars()
- to delay creation of NodeList objects until they're needed.
-
- Note that we subclass collections.UserList purely so that the
- is_Sequence() function will identify an object of this class as
- a list during variable expansion. We're not really using any
- collections.UserList methods in practice.
- """
- def __init__(self, func):
- self.func = func
- def __getattr__(self, attr):
- nl = self.func()
- return getattr(nl, attr)
- def __getitem__(self, i):
- nl = self.func()
- return nl[i]
- def __getslice__(self, i, j):
- nl = self.func()
- i = max(i, 0); j = max(j, 0)
- return nl[i:j]
- def __str__(self):
- nl = self.func()
- return str(nl)
- def __repr__(self):
- nl = self.func()
- return repr(nl)
-
-class TSObject(object):
- """A class that implements $TARGET or $SOURCE expansions by wrapping
- an Executor method.
- """
- def __init__(self, func):
- self.func = func
- def __getattr__(self, attr):
- n = self.func()
- return getattr(n, attr)
- def __str__(self):
- n = self.func()
- if n:
- return str(n)
- return ''
- def __repr__(self):
- n = self.func()
- if n:
- return repr(n)
- return ''
-
-def rfile(node):
- """
- A function to return the results of a Node's rfile() method,
- if it exists, and the Node itself otherwise (if it's a Value
- Node, e.g.).
- """
- try:
- rfile = node.rfile
- except AttributeError:
- return node
- else:
- return rfile()
-
-
-class Executor(object):
- """A class for controlling instances of executing an action.
-
- This largely exists to hold a single association of an action,
- environment, list of environment override dictionaries, targets
- and sources for later processing as needed.
- """
-
- if SCons.Memoize.use_memoizer:
- __metaclass__ = SCons.Memoize.Memoized_Metaclass
-
- memoizer_counters = []
-
- def __init__(self, action, env=None, overridelist=[{}],
- targets=[], sources=[], builder_kw={}):
- if __debug__: logInstanceCreation(self, 'Executor.Executor')
- self.set_action_list(action)
- self.pre_actions = []
- self.post_actions = []
- self.env = env
- self.overridelist = overridelist
- if targets or sources:
- self.batches = [Batch(targets[:], sources[:])]
- else:
- self.batches = []
- self.builder_kw = builder_kw
- self._memo = {}
-
- def get_lvars(self):
- try:
- return self.lvars
- except AttributeError:
- self.lvars = {
- 'CHANGED_SOURCES' : TSList(self._get_changed_sources),
- 'CHANGED_TARGETS' : TSList(self._get_changed_targets),
- 'SOURCE' : TSObject(self._get_source),
- 'SOURCES' : TSList(self._get_sources),
- 'TARGET' : TSObject(self._get_target),
- 'TARGETS' : TSList(self._get_targets),
- 'UNCHANGED_SOURCES' : TSList(self._get_unchanged_sources),
- 'UNCHANGED_TARGETS' : TSList(self._get_unchanged_targets),
- }
- return self.lvars
-
- def _get_changes(self):
- cs = []
- ct = []
- us = []
- ut = []
- for b in self.batches:
- if b.targets[0].is_up_to_date():
- us.extend(list(map(rfile, b.sources)))
- ut.extend(b.targets)
- else:
- cs.extend(list(map(rfile, b.sources)))
- ct.extend(b.targets)
- self._changed_sources_list = SCons.Util.NodeList(cs)
- self._changed_targets_list = SCons.Util.NodeList(ct)
- self._unchanged_sources_list = SCons.Util.NodeList(us)
- self._unchanged_targets_list = SCons.Util.NodeList(ut)
-
- def _get_changed_sources(self, *args, **kw):
- try:
- return self._changed_sources_list
- except AttributeError:
- self._get_changes()
- return self._changed_sources_list
-
- def _get_changed_targets(self, *args, **kw):
- try:
- return self._changed_targets_list
- except AttributeError:
- self._get_changes()
- return self._changed_targets_list
-
- def _get_source(self, *args, **kw):
- #return SCons.Util.NodeList([rfile(self.batches[0].sources[0]).get_subst_proxy()])
- return rfile(self.batches[0].sources[0]).get_subst_proxy()
-
- def _get_sources(self, *args, **kw):
- return SCons.Util.NodeList([rfile(n).get_subst_proxy() for n in self.get_all_sources()])
-
- def _get_target(self, *args, **kw):
- #return SCons.Util.NodeList([self.batches[0].targets[0].get_subst_proxy()])
- return self.batches[0].targets[0].get_subst_proxy()
-
- def _get_targets(self, *args, **kw):
- return SCons.Util.NodeList([n.get_subst_proxy() for n in self.get_all_targets()])
-
- def _get_unchanged_sources(self, *args, **kw):
- try:
- return self._unchanged_sources_list
- except AttributeError:
- self._get_changes()
- return self._unchanged_sources_list
-
- def _get_unchanged_targets(self, *args, **kw):
- try:
- return self._unchanged_targets_list
- except AttributeError:
- self._get_changes()
- return self._unchanged_targets_list
-
- def get_action_targets(self):
- if not self.action_list:
- return []
- targets_string = self.action_list[0].get_targets(self.env, self)
- if targets_string[0] == '$':
- targets_string = targets_string[1:]
- return self.get_lvars()[targets_string]
-
- def set_action_list(self, action):
- import SCons.Util
- if not SCons.Util.is_List(action):
- if not action:
- import SCons.Errors
- raise SCons.Errors.UserError("Executor must have an action.")
- action = [action]
- self.action_list = action
-
- def get_action_list(self):
- return self.pre_actions + self.action_list + self.post_actions
-
- def get_all_targets(self):
- """Returns all targets for all batches of this Executor."""
- result = []
- for batch in self.batches:
- result.extend(batch.targets)
- return result
-
- def get_all_sources(self):
- """Returns all sources for all batches of this Executor."""
- result = []
- for batch in self.batches:
- result.extend(batch.sources)
- return result
-
- def get_all_children(self):
- """Returns all unique children (dependencies) for all batches
- of this Executor.
-
- The Taskmaster can recognize when it's already evaluated a
- Node, so we don't have to make this list unique for its intended
- canonical use case, but we expect there to be a lot of redundancy
- (long lists of batched .cc files #including the same .h files
- over and over), so removing the duplicates once up front should
- save the Taskmaster a lot of work.
- """
- result = SCons.Util.UniqueList([])
- for target in self.get_all_targets():
- result.extend(target.children())
- return result
-
- def get_all_prerequisites(self):
- """Returns all unique (order-only) prerequisites for all batches
- of this Executor.
- """
- result = SCons.Util.UniqueList([])
- for target in self.get_all_targets():
- result.extend(target.prerequisites)
- return result
-
- def get_action_side_effects(self):
-
- """Returns all side effects for all batches of this
- Executor used by the underlying Action.
- """
- result = SCons.Util.UniqueList([])
- for target in self.get_action_targets():
- result.extend(target.side_effects)
- return result
-
- memoizer_counters.append(SCons.Memoize.CountValue('get_build_env'))
-
- def get_build_env(self):
- """Fetch or create the appropriate build Environment
- for this Executor.
- """
- try:
- return self._memo['get_build_env']
- except KeyError:
- pass
-
- # Create the build environment instance with appropriate
- # overrides. These get evaluated against the current
- # environment's construction variables so that users can
- # add to existing values by referencing the variable in
- # the expansion.
- overrides = {}
- for odict in self.overridelist:
- overrides.update(odict)
-
- import SCons.Defaults
- env = self.env or SCons.Defaults.DefaultEnvironment()
- build_env = env.Override(overrides)
-
- self._memo['get_build_env'] = build_env
-
- return build_env
-
- def get_build_scanner_path(self, scanner):
- """Fetch the scanner path for this executor's targets and sources.
- """
- env = self.get_build_env()
- try:
- cwd = self.batches[0].targets[0].cwd
- except (IndexError, AttributeError):
- cwd = None
- return scanner.path(env, cwd,
- self.get_all_targets(),
- self.get_all_sources())
-
- def get_kw(self, kw={}):
- result = self.builder_kw.copy()
- result.update(kw)
- result['executor'] = self
- return result
-
- def do_nothing(self, target, kw):
- return 0
-
- def do_execute(self, target, kw):
- """Actually execute the action list."""
- env = self.get_build_env()
- kw = self.get_kw(kw)
- status = 0
- for act in self.get_action_list():
- #args = (self.get_all_targets(), self.get_all_sources(), env)
- args = ([], [], env)
- status = act(*args, **kw)
- if isinstance(status, SCons.Errors.BuildError):
- status.executor = self
- raise status
- elif status:
- msg = "Error %s" % status
- raise SCons.Errors.BuildError(
- errstr=msg,
- node=self.batches[0].targets,
- executor=self,
- action=act)
- return status
-
- # use extra indirection because with new-style objects (Python 2.2
- # and above) we can't override special methods, and nullify() needs
- # to be able to do this.
-
- def __call__(self, target, **kw):
- return self.do_execute(target, kw)
-
- def cleanup(self):
- self._memo = {}
-
- def add_sources(self, sources):
- """Add source files to this Executor's list. This is necessary
- for "multi" Builders that can be called repeatedly to build up
- a source file list for a given target."""
- # TODO(batch): extend to multiple batches
- assert (len(self.batches) == 1)
- # TODO(batch): remove duplicates?
- sources = [x for x in sources if x not in self.batches[0].sources]
- self.batches[0].sources.extend(sources)
-
- def get_sources(self):
- return self.batches[0].sources
-
- def add_batch(self, targets, sources):
- """Add pair of associated target and source to this Executor's list.
- This is necessary for "batch" Builders that can be called repeatedly
- to build up a list of matching target and source files that will be
- used in order to update multiple target files at once from multiple
- corresponding source files, for tools like MSVC that support it."""
- self.batches.append(Batch(targets, sources))
-
- def prepare(self):
- """
- Preparatory checks for whether this Executor can go ahead
- and (try to) build its targets.
- """
- for s in self.get_all_sources():
- if s.missing():
- msg = "Source `%s' not found, needed by target `%s'."
- raise SCons.Errors.StopError(msg % (s, self.batches[0].targets[0]))
-
- def add_pre_action(self, action):
- self.pre_actions.append(action)
-
- def add_post_action(self, action):
- self.post_actions.append(action)
-
- # another extra indirection for new-style objects and nullify...
-
- def my_str(self):
- env = self.get_build_env()
- return "\n".join([action.genstring(self.get_all_targets(),
- self.get_all_sources(),
- env)
- for action in self.get_action_list()])
-
-
- def __str__(self):
- return self.my_str()
-
- def nullify(self):
- self.cleanup()
- self.do_execute = self.do_nothing
- self.my_str = lambda: ''
-
- memoizer_counters.append(SCons.Memoize.CountValue('get_contents'))
-
- def get_contents(self):
- """Fetch the signature contents. This is the main reason this
- class exists, so we can compute this once and cache it regardless
- of how many target or source Nodes there are.
- """
- try:
- return self._memo['get_contents']
- except KeyError:
- pass
- env = self.get_build_env()
- result = "".join([action.get_contents(self.get_all_targets(),
- self.get_all_sources(),
- env)
- for action in self.get_action_list()])
- self._memo['get_contents'] = result
- return result
-
- def get_timestamp(self):
- """Fetch a time stamp for this Executor. We don't have one, of
- course (only files do), but this is the interface used by the
- timestamp module.
- """
- return 0
-
- def scan_targets(self, scanner):
- # TODO(batch): scan by batches
- self.scan(scanner, self.get_all_targets())
-
- def scan_sources(self, scanner):
- # TODO(batch): scan by batches
- if self.batches[0].sources:
- self.scan(scanner, self.get_all_sources())
-
- def scan(self, scanner, node_list):
- """Scan a list of this Executor's files (targets or sources) for
- implicit dependencies and update all of the targets with them.
- This essentially short-circuits an N*M scan of the sources for
- each individual target, which is a hell of a lot more efficient.
- """
- env = self.get_build_env()
-
- # TODO(batch): scan by batches)
- deps = []
- if scanner:
- for node in node_list:
- node.disambiguate()
- s = scanner.select(node)
- if not s:
- continue
- path = self.get_build_scanner_path(s)
- deps.extend(node.get_implicit_deps(env, s, path))
- else:
- kw = self.get_kw()
- for node in node_list:
- node.disambiguate()
- scanner = node.get_env_scanner(env, kw)
- if not scanner:
- continue
- scanner = scanner.select(node)
- if not scanner:
- continue
- path = self.get_build_scanner_path(scanner)
- deps.extend(node.get_implicit_deps(env, scanner, path))
-
- deps.extend(self.get_implicit_deps())
-
- for tgt in self.get_all_targets():
- tgt.add_to_implicit(deps)
-
- def _get_unignored_sources_key(self, node, ignore=()):
- return (node,) + tuple(ignore)
-
- memoizer_counters.append(SCons.Memoize.CountDict('get_unignored_sources', _get_unignored_sources_key))
-
- def get_unignored_sources(self, node, ignore=()):
- key = (node,) + tuple(ignore)
- try:
- memo_dict = self._memo['get_unignored_sources']
- except KeyError:
- memo_dict = {}
- self._memo['get_unignored_sources'] = memo_dict
- else:
- try:
- return memo_dict[key]
- except KeyError:
- pass
-
- if node:
- # TODO: better way to do this (it's a linear search,
- # but it may not be critical path)?
- sourcelist = []
- for b in self.batches:
- if node in b.targets:
- sourcelist = b.sources
- break
- else:
- sourcelist = self.get_all_sources()
- if ignore:
- idict = {}
- for i in ignore:
- idict[i] = 1
- sourcelist = [s for s in sourcelist if s not in idict]
-
- memo_dict[key] = sourcelist
-
- return sourcelist
-
- def get_implicit_deps(self):
- """Return the executor's implicit dependencies, i.e. the nodes of
- the commands to be executed."""
- result = []
- build_env = self.get_build_env()
- for act in self.get_action_list():
- deps = act.get_implicit_deps(self.get_all_targets(),
- self.get_all_sources(),
- build_env)
- result.extend(deps)
- return result
-
-
-
-_batch_executors = {}
-
-def GetBatchExecutor(key):
- return _batch_executors[key]
-
-def AddBatchExecutor(key, executor):
- assert key not in _batch_executors
- _batch_executors[key] = executor
-
-nullenv = None
-
-
-def get_NullEnvironment():
- """Use singleton pattern for Null Environments."""
- global nullenv
-
- import SCons.Util
- class NullEnvironment(SCons.Util.Null):
- import SCons.CacheDir
- _CacheDir_path = None
- _CacheDir = SCons.CacheDir.CacheDir(None)
- def get_CacheDir(self):
- return self._CacheDir
-
- if not nullenv:
- nullenv = NullEnvironment()
- return nullenv
-
-class Null(object):
- """A null Executor, with a null build Environment, that does
- nothing when the rest of the methods call it.
-
- This might be able to disapper when we refactor things to
- disassociate Builders from Nodes entirely, so we're not
- going to worry about unit tests for this--at least for now.
- """
- def __init__(self, *args, **kw):
- if __debug__: logInstanceCreation(self, 'Executor.Null')
- self.batches = [Batch(kw['targets'][:], [])]
- def get_build_env(self):
- return get_NullEnvironment()
- def get_build_scanner_path(self):
- return None
- def cleanup(self):
- pass
- def prepare(self):
- pass
- def get_unignored_sources(self, *args, **kw):
- return tuple(())
- def get_action_targets(self):
- return []
- def get_action_list(self):
- return []
- def get_all_targets(self):
- return self.batches[0].targets
- def get_all_sources(self):
- return self.batches[0].targets[0].sources
- def get_all_children(self):
- return self.batches[0].targets[0].children()
- def get_all_prerequisites(self):
- return []
- def get_action_side_effects(self):
- return []
- def __call__(self, *args, **kw):
- return 0
- def get_contents(self):
- return ''
- def _morph(self):
- """Morph this Null executor to a real Executor object."""
- batches = self.batches
- self.__class__ = Executor
- self.__init__([])
- self.batches = batches
-
- # The following methods require morphing this Null Executor to a
- # real Executor object.
-
- def add_pre_action(self, action):
- self._morph()
- self.add_pre_action(action)
- def add_post_action(self, action):
- self._morph()
- self.add_post_action(action)
- def set_action_list(self, action):
- self._morph()
- self.set_action_list(action)
-
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Job.py b/Externals/scons-local/scons-local-2.0.1/SCons/Job.py
deleted file mode 100644
index 7866bb408e..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Job.py
+++ /dev/null
@@ -1,435 +0,0 @@
-"""SCons.Job
-
-This module defines the Serial and Parallel classes that execute tasks to
-complete a build. The Jobs class provides a higher level interface to start,
-stop, and wait on jobs.
-
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Job.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import SCons.compat
-
-import os
-import signal
-
-import SCons.Errors
-
-# The default stack size (in kilobytes) of the threads used to execute
-# jobs in parallel.
-#
-# We use a stack size of 256 kilobytes. The default on some platforms
-# is too large and prevents us from creating enough threads to fully
-# parallelized the build. For example, the default stack size on linux
-# is 8 MBytes.
-
-explicit_stack_size = None
-default_stack_size = 256
-
-interrupt_msg = 'Build interrupted.'
-
-
-class InterruptState(object):
- def __init__(self):
- self.interrupted = False
-
- def set(self):
- self.interrupted = True
-
- def __call__(self):
- return self.interrupted
-
-
-class Jobs(object):
- """An instance of this class initializes N jobs, and provides
- methods for starting, stopping, and waiting on all N jobs.
- """
-
- def __init__(self, num, taskmaster):
- """
- create 'num' jobs using the given taskmaster.
-
- If 'num' is 1 or less, then a serial job will be used,
- otherwise a parallel job with 'num' worker threads will
- be used.
-
- The 'num_jobs' attribute will be set to the actual number of jobs
- allocated. If more than one job is requested but the Parallel
- class can't do it, it gets reset to 1. Wrapping interfaces that
- care should check the value of 'num_jobs' after initialization.
- """
-
- self.job = None
- if num > 1:
- stack_size = explicit_stack_size
- if stack_size is None:
- stack_size = default_stack_size
-
- try:
- self.job = Parallel(taskmaster, num, stack_size)
- self.num_jobs = num
- except NameError:
- pass
- if self.job is None:
- self.job = Serial(taskmaster)
- self.num_jobs = 1
-
- def run(self, postfunc=lambda: None):
- """Run the jobs.
-
- postfunc() will be invoked after the jobs has run. It will be
- invoked even if the jobs are interrupted by a keyboard
- interrupt (well, in fact by a signal such as either SIGINT,
- SIGTERM or SIGHUP). The execution of postfunc() is protected
- against keyboard interrupts and is guaranteed to run to
- completion."""
- self._setup_sig_handler()
- try:
- self.job.start()
- finally:
- postfunc()
- self._reset_sig_handler()
-
- def were_interrupted(self):
- """Returns whether the jobs were interrupted by a signal."""
- return self.job.interrupted()
-
- def _setup_sig_handler(self):
- """Setup an interrupt handler so that SCons can shutdown cleanly in
- various conditions:
-
- a) SIGINT: Keyboard interrupt
- b) SIGTERM: kill or system shutdown
- c) SIGHUP: Controlling shell exiting
-
- We handle all of these cases by stopping the taskmaster. It
- turns out that it very difficult to stop the build process
- by throwing asynchronously an exception such as
- KeyboardInterrupt. For example, the python Condition
- variables (threading.Condition) and queue's do not seem to
- asynchronous-exception-safe. It would require adding a whole
- bunch of try/finally block and except KeyboardInterrupt all
- over the place.
-
- Note also that we have to be careful to handle the case when
- SCons forks before executing another process. In that case, we
- want the child to exit immediately.
- """
- def handler(signum, stack, self=self, parentpid=os.getpid()):
- if os.getpid() == parentpid:
- self.job.taskmaster.stop()
- self.job.interrupted.set()
- else:
- os._exit(2)
-
- self.old_sigint = signal.signal(signal.SIGINT, handler)
- self.old_sigterm = signal.signal(signal.SIGTERM, handler)
- try:
- self.old_sighup = signal.signal(signal.SIGHUP, handler)
- except AttributeError:
- pass
-
- def _reset_sig_handler(self):
- """Restore the signal handlers to their previous state (before the
- call to _setup_sig_handler()."""
-
- signal.signal(signal.SIGINT, self.old_sigint)
- signal.signal(signal.SIGTERM, self.old_sigterm)
- try:
- signal.signal(signal.SIGHUP, self.old_sighup)
- except AttributeError:
- pass
-
-class Serial(object):
- """This class is used to execute tasks in series, and is more efficient
- than Parallel, but is only appropriate for non-parallel builds. Only
- one instance of this class should be in existence at a time.
-
- This class is not thread safe.
- """
-
- def __init__(self, taskmaster):
- """Create a new serial job given a taskmaster.
-
- The taskmaster's next_task() method should return the next task
- that needs to be executed, or None if there are no more tasks. The
- taskmaster's executed() method will be called for each task when it
- is successfully executed or failed() will be called if it failed to
- execute (e.g. execute() raised an exception)."""
-
- self.taskmaster = taskmaster
- self.interrupted = InterruptState()
-
- def start(self):
- """Start the job. This will begin pulling tasks from the taskmaster
- and executing them, and return when there are no more tasks. If a task
- fails to execute (i.e. execute() raises an exception), then the job will
- stop."""
-
- while True:
- task = self.taskmaster.next_task()
-
- if task is None:
- break
-
- try:
- task.prepare()
- if task.needs_execute():
- task.execute()
- except:
- if self.interrupted():
- try:
- raise SCons.Errors.BuildError(
- task.targets[0], errstr=interrupt_msg)
- except:
- task.exception_set()
- else:
- task.exception_set()
-
- # Let the failed() callback function arrange for the
- # build to stop if that's appropriate.
- task.failed()
- else:
- task.executed()
-
- task.postprocess()
- self.taskmaster.cleanup()
-
-
-# Trap import failure so that everything in the Job module but the
-# Parallel class (and its dependent classes) will work if the interpreter
-# doesn't support threads.
-try:
- import queue
- import threading
-except ImportError:
- pass
-else:
- class Worker(threading.Thread):
- """A worker thread waits on a task to be posted to its request queue,
- dequeues the task, executes it, and posts a tuple including the task
- and a boolean indicating whether the task executed successfully. """
-
- def __init__(self, requestQueue, resultsQueue, interrupted):
- threading.Thread.__init__(self)
- self.setDaemon(1)
- self.requestQueue = requestQueue
- self.resultsQueue = resultsQueue
- self.interrupted = interrupted
- self.start()
-
- def run(self):
- while True:
- task = self.requestQueue.get()
-
- if task is None:
- # The "None" value is used as a sentinel by
- # ThreadPool.cleanup(). This indicates that there
- # are no more tasks, so we should quit.
- break
-
- try:
- if self.interrupted():
- raise SCons.Errors.BuildError(
- task.targets[0], errstr=interrupt_msg)
- task.execute()
- except:
- task.exception_set()
- ok = False
- else:
- ok = True
-
- self.resultsQueue.put((task, ok))
-
- class ThreadPool(object):
- """This class is responsible for spawning and managing worker threads."""
-
- def __init__(self, num, stack_size, interrupted):
- """Create the request and reply queues, and 'num' worker threads.
-
- One must specify the stack size of the worker threads. The
- stack size is specified in kilobytes.
- """
- self.requestQueue = queue.Queue(0)
- self.resultsQueue = queue.Queue(0)
-
- try:
- prev_size = threading.stack_size(stack_size*1024)
- except AttributeError, e:
- # Only print a warning if the stack size has been
- # explicitly set.
- if not explicit_stack_size is None:
- msg = "Setting stack size is unsupported by this version of Python:\n " + \
- e.args[0]
- SCons.Warnings.warn(SCons.Warnings.StackSizeWarning, msg)
- except ValueError, e:
- msg = "Setting stack size failed:\n " + str(e)
- SCons.Warnings.warn(SCons.Warnings.StackSizeWarning, msg)
-
- # Create worker threads
- self.workers = []
- for _ in range(num):
- worker = Worker(self.requestQueue, self.resultsQueue, interrupted)
- self.workers.append(worker)
-
- if 'prev_size' in locals():
- threading.stack_size(prev_size)
-
- def put(self, task):
- """Put task into request queue."""
- self.requestQueue.put(task)
-
- def get(self):
- """Remove and return a result tuple from the results queue."""
- return self.resultsQueue.get()
-
- def preparation_failed(self, task):
- self.resultsQueue.put((task, False))
-
- def cleanup(self):
- """
- Shuts down the thread pool, giving each worker thread a
- chance to shut down gracefully.
- """
- # For each worker thread, put a sentinel "None" value
- # on the requestQueue (indicating that there's no work
- # to be done) so that each worker thread will get one and
- # terminate gracefully.
- for _ in self.workers:
- self.requestQueue.put(None)
-
- # Wait for all of the workers to terminate.
- #
- # If we don't do this, later Python versions (2.4, 2.5) often
- # seem to raise exceptions during shutdown. This happens
- # in requestQueue.get(), as an assertion failure that
- # requestQueue.not_full is notified while not acquired,
- # seemingly because the main thread has shut down (or is
- # in the process of doing so) while the workers are still
- # trying to pull sentinels off the requestQueue.
- #
- # Normally these terminations should happen fairly quickly,
- # but we'll stick a one-second timeout on here just in case
- # someone gets hung.
- for worker in self.workers:
- worker.join(1.0)
- self.workers = []
-
- class Parallel(object):
- """This class is used to execute tasks in parallel, and is somewhat
- less efficient than Serial, but is appropriate for parallel builds.
-
- This class is thread safe.
- """
-
- def __init__(self, taskmaster, num, stack_size):
- """Create a new parallel job given a taskmaster.
-
- The taskmaster's next_task() method should return the next
- task that needs to be executed, or None if there are no more
- tasks. The taskmaster's executed() method will be called
- for each task when it is successfully executed or failed()
- will be called if the task failed to execute (i.e. execute()
- raised an exception).
-
- Note: calls to taskmaster are serialized, but calls to
- execute() on distinct tasks are not serialized, because
- that is the whole point of parallel jobs: they can execute
- multiple tasks simultaneously. """
-
- self.taskmaster = taskmaster
- self.interrupted = InterruptState()
- self.tp = ThreadPool(num, stack_size, self.interrupted)
-
- self.maxjobs = num
-
- def start(self):
- """Start the job. This will begin pulling tasks from the
- taskmaster and executing them, and return when there are no
- more tasks. If a task fails to execute (i.e. execute() raises
- an exception), then the job will stop."""
-
- jobs = 0
-
- while True:
- # Start up as many available tasks as we're
- # allowed to.
- while jobs < self.maxjobs:
- task = self.taskmaster.next_task()
- if task is None:
- break
-
- try:
- # prepare task for execution
- task.prepare()
- except:
- task.exception_set()
- task.failed()
- task.postprocess()
- else:
- if task.needs_execute():
- # dispatch task
- self.tp.put(task)
- jobs = jobs + 1
- else:
- task.executed()
- task.postprocess()
-
- if not task and not jobs: break
-
- # Let any/all completed tasks finish up before we go
- # back and put the next batch of tasks on the queue.
- while True:
- task, ok = self.tp.get()
- jobs = jobs - 1
-
- if ok:
- task.executed()
- else:
- if self.interrupted():
- try:
- raise SCons.Errors.BuildError(
- task.targets[0], errstr=interrupt_msg)
- except:
- task.exception_set()
-
- # Let the failed() callback function arrange
- # for the build to stop if that's appropriate.
- task.failed()
-
- task.postprocess()
-
- if self.tp.resultsQueue.empty():
- break
-
- self.tp.cleanup()
- self.taskmaster.cleanup()
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Memoize.py b/Externals/scons-local/scons-local-2.0.1/SCons/Memoize.py
deleted file mode 100644
index c76d6a52d9..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Memoize.py
+++ /dev/null
@@ -1,244 +0,0 @@
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Memoize.py 5134 2010/08/16 23:02:40 bdeegan"
-
-__doc__ = """Memoizer
-
-A metaclass implementation to count hits and misses of the computed
-values that various methods cache in memory.
-
-Use of this modules assumes that wrapped methods be coded to cache their
-values in a consistent way. Here is an example of wrapping a method
-that returns a computed value, with no input parameters:
-
- memoizer_counters = [] # Memoization
-
- memoizer_counters.append(SCons.Memoize.CountValue('foo')) # Memoization
-
- def foo(self):
-
- try: # Memoization
- return self._memo['foo'] # Memoization
- except KeyError: # Memoization
- pass # Memoization
-
- result = self.compute_foo_value()
-
- self._memo['foo'] = result # Memoization
-
- return result
-
-Here is an example of wrapping a method that will return different values
-based on one or more input arguments:
-
- def _bar_key(self, argument): # Memoization
- return argument # Memoization
-
- memoizer_counters.append(SCons.Memoize.CountDict('bar', _bar_key)) # Memoization
-
- def bar(self, argument):
-
- memo_key = argument # Memoization
- try: # Memoization
- memo_dict = self._memo['bar'] # Memoization
- except KeyError: # Memoization
- memo_dict = {} # Memoization
- self._memo['dict'] = memo_dict # Memoization
- else: # Memoization
- try: # Memoization
- return memo_dict[memo_key] # Memoization
- except KeyError: # Memoization
- pass # Memoization
-
- result = self.compute_bar_value(argument)
-
- memo_dict[memo_key] = result # Memoization
-
- return result
-
-At one point we avoided replicating this sort of logic in all the methods
-by putting it right into this module, but we've moved away from that at
-present (see the "Historical Note," below.).
-
-Deciding what to cache is tricky, because different configurations
-can have radically different performance tradeoffs, and because the
-tradeoffs involved are often so non-obvious. Consequently, deciding
-whether or not to cache a given method will likely be more of an art than
-a science, but should still be based on available data from this module.
-Here are some VERY GENERAL guidelines about deciding whether or not to
-cache return values from a method that's being called a lot:
-
- -- The first question to ask is, "Can we change the calling code
- so this method isn't called so often?" Sometimes this can be
- done by changing the algorithm. Sometimes the *caller* should
- be memoized, not the method you're looking at.
-
- -- The memoized function should be timed with multiple configurations
- to make sure it doesn't inadvertently slow down some other
- configuration.
-
- -- When memoizing values based on a dictionary key composed of
- input arguments, you don't need to use all of the arguments
- if some of them don't affect the return values.
-
-Historical Note: The initial Memoizer implementation actually handled
-the caching of values for the wrapped methods, based on a set of generic
-algorithms for computing hashable values based on the method's arguments.
-This collected caching logic nicely, but had two drawbacks:
-
- Running arguments through a generic key-conversion mechanism is slower
- (and less flexible) than just coding these things directly. Since the
- methods that need memoized values are generally performance-critical,
- slowing them down in order to collect the logic isn't the right
- tradeoff.
-
- Use of the memoizer really obscured what was being called, because
- all the memoized methods were wrapped with re-used generic methods.
- This made it more difficult, for example, to use the Python profiler
- to figure out how to optimize the underlying methods.
-"""
-
-import types
-
-# A flag controlling whether or not we actually use memoization.
-use_memoizer = None
-
-CounterList = []
-
-class Counter(object):
- """
- Base class for counting memoization hits and misses.
-
- We expect that the metaclass initialization will have filled in
- the .name attribute that represents the name of the function
- being counted.
- """
- def __init__(self, method_name):
- """
- """
- self.method_name = method_name
- self.hit = 0
- self.miss = 0
- CounterList.append(self)
- def display(self):
- fmt = " %7d hits %7d misses %s()"
- print fmt % (self.hit, self.miss, self.name)
- def __cmp__(self, other):
- try:
- return cmp(self.name, other.name)
- except AttributeError:
- return 0
-
-class CountValue(Counter):
- """
- A counter class for simple, atomic memoized values.
-
- A CountValue object should be instantiated in a class for each of
- the class's methods that memoizes its return value by simply storing
- the return value in its _memo dictionary.
-
- We expect that the metaclass initialization will fill in the
- .underlying_method attribute with the method that we're wrapping.
- We then call the underlying_method method after counting whether
- its memoized value has already been set (a hit) or not (a miss).
- """
- def __call__(self, *args, **kw):
- obj = args[0]
- if self.method_name in obj._memo:
- self.hit = self.hit + 1
- else:
- self.miss = self.miss + 1
- return self.underlying_method(*args, **kw)
-
-class CountDict(Counter):
- """
- A counter class for memoized values stored in a dictionary, with
- keys based on the method's input arguments.
-
- A CountDict object is instantiated in a class for each of the
- class's methods that memoizes its return value in a dictionary,
- indexed by some key that can be computed from one or more of
- its input arguments.
-
- We expect that the metaclass initialization will fill in the
- .underlying_method attribute with the method that we're wrapping.
- We then call the underlying_method method after counting whether the
- computed key value is already present in the memoization dictionary
- (a hit) or not (a miss).
- """
- def __init__(self, method_name, keymaker):
- """
- """
- Counter.__init__(self, method_name)
- self.keymaker = keymaker
- def __call__(self, *args, **kw):
- obj = args[0]
- try:
- memo_dict = obj._memo[self.method_name]
- except KeyError:
- self.miss = self.miss + 1
- else:
- key = self.keymaker(*args, **kw)
- if key in memo_dict:
- self.hit = self.hit + 1
- else:
- self.miss = self.miss + 1
- return self.underlying_method(*args, **kw)
-
-class Memoizer(object):
- """Object which performs caching of method calls for its 'primary'
- instance."""
-
- def __init__(self):
- pass
-
-def Dump(title=None):
- if title:
- print title
- CounterList.sort()
- for counter in CounterList:
- counter.display()
-
-class Memoized_Metaclass(type):
- def __init__(cls, name, bases, cls_dict):
- super(Memoized_Metaclass, cls).__init__(name, bases, cls_dict)
-
- for counter in cls_dict.get('memoizer_counters', []):
- method_name = counter.method_name
-
- counter.name = cls.__name__ + '.' + method_name
- counter.underlying_method = cls_dict[method_name]
-
- replacement_method = types.MethodType(counter, None, cls)
- setattr(cls, method_name, replacement_method)
-
-def EnableMemoization():
- global use_memoizer
- use_memoizer = 1
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Node/Alias.py b/Externals/scons-local/scons-local-2.0.1/SCons/Node/Alias.py
deleted file mode 100644
index c0f3eceee4..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Node/Alias.py
+++ /dev/null
@@ -1,152 +0,0 @@
-
-"""scons.Node.Alias
-
-Alias nodes.
-
-This creates a hash of global Aliases (dummy targets).
-
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Node/Alias.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import collections
-
-import SCons.Errors
-import SCons.Node
-import SCons.Util
-
-class AliasNameSpace(collections.UserDict):
- def Alias(self, name, **kw):
- if isinstance(name, SCons.Node.Alias.Alias):
- return name
- try:
- a = self[name]
- except KeyError:
- a = SCons.Node.Alias.Alias(name, **kw)
- self[name] = a
- return a
-
- def lookup(self, name, **kw):
- try:
- return self[name]
- except KeyError:
- return None
-
-class AliasNodeInfo(SCons.Node.NodeInfoBase):
- current_version_id = 1
- field_list = ['csig']
- def str_to_node(self, s):
- return default_ans.Alias(s)
-
-class AliasBuildInfo(SCons.Node.BuildInfoBase):
- current_version_id = 1
-
-class Alias(SCons.Node.Node):
-
- NodeInfo = AliasNodeInfo
- BuildInfo = AliasBuildInfo
-
- def __init__(self, name):
- SCons.Node.Node.__init__(self)
- self.name = name
-
- def str_for_display(self):
- return '"' + self.__str__() + '"'
-
- def __str__(self):
- return self.name
-
- def make_ready(self):
- self.get_csig()
-
- really_build = SCons.Node.Node.build
- is_up_to_date = SCons.Node.Node.children_are_up_to_date
-
- def is_under(self, dir):
- # Make Alias nodes get built regardless of
- # what directory scons was run from. Alias nodes
- # are outside the filesystem:
- return 1
-
- def get_contents(self):
- """The contents of an alias is the concatenation
- of the content signatures of all its sources."""
- childsigs = [n.get_csig() for n in self.children()]
- return ''.join(childsigs)
-
- def sconsign(self):
- """An Alias is not recorded in .sconsign files"""
- pass
-
- #
- #
- #
-
- def changed_since_last_build(self, target, prev_ni):
- cur_csig = self.get_csig()
- try:
- return cur_csig != prev_ni.csig
- except AttributeError:
- return 1
-
- def build(self):
- """A "builder" for aliases."""
- pass
-
- def convert(self):
- try: del self.builder
- except AttributeError: pass
- self.reset_executor()
- self.build = self.really_build
-
- def get_csig(self):
- """
- Generate a node's content signature, the digested signature
- of its content.
-
- node - the node
- cache - alternate node to use for the signature cache
- returns - the content signature
- """
- try:
- return self.ninfo.csig
- except AttributeError:
- pass
-
- contents = self.get_contents()
- csig = SCons.Util.MD5signature(contents)
- self.get_ninfo().csig = csig
- return csig
-
-default_ans = AliasNameSpace()
-
-SCons.Node.arg2nodes_lookups.append(default_ans.lookup)
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Node/FS.py b/Externals/scons-local/scons-local-2.0.1/SCons/Node/FS.py
deleted file mode 100644
index 0997fc0771..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Node/FS.py
+++ /dev/null
@@ -1,3142 +0,0 @@
-"""scons.Node.FS
-
-File system nodes.
-
-These Nodes represent the canonical external objects that people think
-of when they think of building software: files and directories.
-
-This holds a "default_fs" variable that should be initialized with an FS
-that can be used by scripts or modules looking for the canonical default.
-
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-__revision__ = "src/engine/SCons/Node/FS.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import fnmatch
-import os
-import re
-import shutil
-import stat
-import sys
-import time
-import codecs
-
-import SCons.Action
-from SCons.Debug import logInstanceCreation
-import SCons.Errors
-import SCons.Memoize
-import SCons.Node
-import SCons.Node.Alias
-import SCons.Subst
-import SCons.Util
-import SCons.Warnings
-
-from SCons.Debug import Trace
-
-do_store_info = True
-
-
-class EntryProxyAttributeError(AttributeError):
- """
- An AttributeError subclass for recording and displaying the name
- of the underlying Entry involved in an AttributeError exception.
- """
- def __init__(self, entry_proxy, attribute):
- AttributeError.__init__(self)
- self.entry_proxy = entry_proxy
- self.attribute = attribute
- def __str__(self):
- entry = self.entry_proxy.get()
- fmt = "%s instance %s has no attribute %s"
- return fmt % (entry.__class__.__name__,
- repr(entry.name),
- repr(self.attribute))
-
-# The max_drift value: by default, use a cached signature value for
-# any file that's been untouched for more than two days.
-default_max_drift = 2*24*60*60
-
-#
-# We stringify these file system Nodes a lot. Turning a file system Node
-# into a string is non-trivial, because the final string representation
-# can depend on a lot of factors: whether it's a derived target or not,
-# whether it's linked to a repository or source directory, and whether
-# there's duplication going on. The normal technique for optimizing
-# calculations like this is to memoize (cache) the string value, so you
-# only have to do the calculation once.
-#
-# A number of the above factors, however, can be set after we've already
-# been asked to return a string for a Node, because a Repository() or
-# VariantDir() call or the like may not occur until later in SConscript
-# files. So this variable controls whether we bother trying to save
-# string values for Nodes. The wrapper interface can set this whenever
-# they're done mucking with Repository and VariantDir and the other stuff,
-# to let this module know it can start returning saved string values
-# for Nodes.
-#
-Save_Strings = None
-
-def save_strings(val):
- global Save_Strings
- Save_Strings = val
-
-#
-# Avoid unnecessary function calls by recording a Boolean value that
-# tells us whether or not os.path.splitdrive() actually does anything
-# on this system, and therefore whether we need to bother calling it
-# when looking up path names in various methods below.
-#
-
-do_splitdrive = None
-
-def initialize_do_splitdrive():
- global do_splitdrive
- drive, path = os.path.splitdrive('X:/foo')
- do_splitdrive = not not drive
-
-initialize_do_splitdrive()
-
-#
-
-needs_normpath_check = None
-
-def initialize_normpath_check():
- """
- Initialize the normpath_check regular expression.
-
- This function is used by the unit tests to re-initialize the pattern
- when testing for behavior with different values of os.sep.
- """
- global needs_normpath_check
- if os.sep == '/':
- pattern = r'.*/|\.$|\.\.$'
- else:
- pattern = r'.*[/%s]|\.$|\.\.$' % re.escape(os.sep)
- needs_normpath_check = re.compile(pattern)
-
-initialize_normpath_check()
-
-#
-# SCons.Action objects for interacting with the outside world.
-#
-# The Node.FS methods in this module should use these actions to
-# create and/or remove files and directories; they should *not* use
-# os.{link,symlink,unlink,mkdir}(), etc., directly.
-#
-# Using these SCons.Action objects ensures that descriptions of these
-# external activities are properly displayed, that the displays are
-# suppressed when the -s (silent) option is used, and (most importantly)
-# the actions are disabled when the the -n option is used, in which case
-# there should be *no* changes to the external file system(s)...
-#
-
-if hasattr(os, 'link'):
- def _hardlink_func(fs, src, dst):
- # If the source is a symlink, we can't just hard-link to it
- # because a relative symlink may point somewhere completely
- # different. We must disambiguate the symlink and then
- # hard-link the final destination file.
- while fs.islink(src):
- link = fs.readlink(src)
- if not os.path.isabs(link):
- src = link
- else:
- src = os.path.join(os.path.dirname(src), link)
- fs.link(src, dst)
-else:
- _hardlink_func = None
-
-if hasattr(os, 'symlink'):
- def _softlink_func(fs, src, dst):
- fs.symlink(src, dst)
-else:
- _softlink_func = None
-
-def _copy_func(fs, src, dest):
- shutil.copy2(src, dest)
- st = fs.stat(src)
- fs.chmod(dest, stat.S_IMODE(st[stat.ST_MODE]) | stat.S_IWRITE)
-
-
-Valid_Duplicates = ['hard-soft-copy', 'soft-hard-copy',
- 'hard-copy', 'soft-copy', 'copy']
-
-Link_Funcs = [] # contains the callables of the specified duplication style
-
-def set_duplicate(duplicate):
- # Fill in the Link_Funcs list according to the argument
- # (discarding those not available on the platform).
-
- # Set up the dictionary that maps the argument names to the
- # underlying implementations. We do this inside this function,
- # not in the top-level module code, so that we can remap os.link
- # and os.symlink for testing purposes.
- link_dict = {
- 'hard' : _hardlink_func,
- 'soft' : _softlink_func,
- 'copy' : _copy_func
- }
-
- if not duplicate in Valid_Duplicates:
- raise SCons.Errors.InternalError("The argument of set_duplicate "
- "should be in Valid_Duplicates")
- global Link_Funcs
- Link_Funcs = []
- for func in duplicate.split('-'):
- if link_dict[func]:
- Link_Funcs.append(link_dict[func])
-
-def LinkFunc(target, source, env):
- # Relative paths cause problems with symbolic links, so
- # we use absolute paths, which may be a problem for people
- # who want to move their soft-linked src-trees around. Those
- # people should use the 'hard-copy' mode, softlinks cannot be
- # used for that; at least I have no idea how ...
- src = source[0].abspath
- dest = target[0].abspath
- dir, file = os.path.split(dest)
- if dir and not target[0].fs.isdir(dir):
- os.makedirs(dir)
- if not Link_Funcs:
- # Set a default order of link functions.
- set_duplicate('hard-soft-copy')
- fs = source[0].fs
- # Now link the files with the previously specified order.
- for func in Link_Funcs:
- try:
- func(fs, src, dest)
- break
- except (IOError, OSError):
- # An OSError indicates something happened like a permissions
- # problem or an attempt to symlink across file-system
- # boundaries. An IOError indicates something like the file
- # not existing. In either case, keeping trying additional
- # functions in the list and only raise an error if the last
- # one failed.
- if func == Link_Funcs[-1]:
- # exception of the last link method (copy) are fatal
- raise
- return 0
-
-Link = SCons.Action.Action(LinkFunc, None)
-def LocalString(target, source, env):
- return 'Local copy of %s from %s' % (target[0], source[0])
-
-LocalCopy = SCons.Action.Action(LinkFunc, LocalString)
-
-def UnlinkFunc(target, source, env):
- t = target[0]
- t.fs.unlink(t.abspath)
- return 0
-
-Unlink = SCons.Action.Action(UnlinkFunc, None)
-
-def MkdirFunc(target, source, env):
- t = target[0]
- if not t.exists():
- t.fs.mkdir(t.abspath)
- return 0
-
-Mkdir = SCons.Action.Action(MkdirFunc, None, presub=None)
-
-MkdirBuilder = None
-
-def get_MkdirBuilder():
- global MkdirBuilder
- if MkdirBuilder is None:
- import SCons.Builder
- import SCons.Defaults
- # "env" will get filled in by Executor.get_build_env()
- # calling SCons.Defaults.DefaultEnvironment() when necessary.
- MkdirBuilder = SCons.Builder.Builder(action = Mkdir,
- env = None,
- explain = None,
- is_explicit = None,
- target_scanner = SCons.Defaults.DirEntryScanner,
- name = "MkdirBuilder")
- return MkdirBuilder
-
-class _Null(object):
- pass
-
-_null = _Null()
-
-DefaultSCCSBuilder = None
-DefaultRCSBuilder = None
-
-def get_DefaultSCCSBuilder():
- global DefaultSCCSBuilder
- if DefaultSCCSBuilder is None:
- import SCons.Builder
- # "env" will get filled in by Executor.get_build_env()
- # calling SCons.Defaults.DefaultEnvironment() when necessary.
- act = SCons.Action.Action('$SCCSCOM', '$SCCSCOMSTR')
- DefaultSCCSBuilder = SCons.Builder.Builder(action = act,
- env = None,
- name = "DefaultSCCSBuilder")
- return DefaultSCCSBuilder
-
-def get_DefaultRCSBuilder():
- global DefaultRCSBuilder
- if DefaultRCSBuilder is None:
- import SCons.Builder
- # "env" will get filled in by Executor.get_build_env()
- # calling SCons.Defaults.DefaultEnvironment() when necessary.
- act = SCons.Action.Action('$RCS_COCOM', '$RCS_COCOMSTR')
- DefaultRCSBuilder = SCons.Builder.Builder(action = act,
- env = None,
- name = "DefaultRCSBuilder")
- return DefaultRCSBuilder
-
-# Cygwin's os.path.normcase pretends it's on a case-sensitive filesystem.
-_is_cygwin = sys.platform == "cygwin"
-if os.path.normcase("TeSt") == os.path.normpath("TeSt") and not _is_cygwin:
- def _my_normcase(x):
- return x
-else:
- def _my_normcase(x):
- return x.upper()
-
-
-
-class DiskChecker(object):
- def __init__(self, type, do, ignore):
- self.type = type
- self.do = do
- self.ignore = ignore
- self.func = do
- def __call__(self, *args, **kw):
- return self.func(*args, **kw)
- def set(self, list):
- if self.type in list:
- self.func = self.do
- else:
- self.func = self.ignore
-
-def do_diskcheck_match(node, predicate, errorfmt):
- result = predicate()
- try:
- # If calling the predicate() cached a None value from stat(),
- # remove it so it doesn't interfere with later attempts to
- # build this Node as we walk the DAG. (This isn't a great way
- # to do this, we're reaching into an interface that doesn't
- # really belong to us, but it's all about performance, so
- # for now we'll just document the dependency...)
- if node._memo['stat'] is None:
- del node._memo['stat']
- except (AttributeError, KeyError):
- pass
- if result:
- raise TypeError(errorfmt % node.abspath)
-
-def ignore_diskcheck_match(node, predicate, errorfmt):
- pass
-
-def do_diskcheck_rcs(node, name):
- try:
- rcs_dir = node.rcs_dir
- except AttributeError:
- if node.entry_exists_on_disk('RCS'):
- rcs_dir = node.Dir('RCS')
- else:
- rcs_dir = None
- node.rcs_dir = rcs_dir
- if rcs_dir:
- return rcs_dir.entry_exists_on_disk(name+',v')
- return None
-
-def ignore_diskcheck_rcs(node, name):
- return None
-
-def do_diskcheck_sccs(node, name):
- try:
- sccs_dir = node.sccs_dir
- except AttributeError:
- if node.entry_exists_on_disk('SCCS'):
- sccs_dir = node.Dir('SCCS')
- else:
- sccs_dir = None
- node.sccs_dir = sccs_dir
- if sccs_dir:
- return sccs_dir.entry_exists_on_disk('s.'+name)
- return None
-
-def ignore_diskcheck_sccs(node, name):
- return None
-
-diskcheck_match = DiskChecker('match', do_diskcheck_match, ignore_diskcheck_match)
-diskcheck_rcs = DiskChecker('rcs', do_diskcheck_rcs, ignore_diskcheck_rcs)
-diskcheck_sccs = DiskChecker('sccs', do_diskcheck_sccs, ignore_diskcheck_sccs)
-
-diskcheckers = [
- diskcheck_match,
- diskcheck_rcs,
- diskcheck_sccs,
-]
-
-def set_diskcheck(list):
- for dc in diskcheckers:
- dc.set(list)
-
-def diskcheck_types():
- return [dc.type for dc in diskcheckers]
-
-
-
-class EntryProxy(SCons.Util.Proxy):
-
- __str__ = SCons.Util.Delegate('__str__')
-
- def __get_abspath(self):
- entry = self.get()
- return SCons.Subst.SpecialAttrWrapper(entry.get_abspath(),
- entry.name + "_abspath")
-
- def __get_filebase(self):
- name = self.get().name
- return SCons.Subst.SpecialAttrWrapper(SCons.Util.splitext(name)[0],
- name + "_filebase")
-
- def __get_suffix(self):
- name = self.get().name
- return SCons.Subst.SpecialAttrWrapper(SCons.Util.splitext(name)[1],
- name + "_suffix")
-
- def __get_file(self):
- name = self.get().name
- return SCons.Subst.SpecialAttrWrapper(name, name + "_file")
-
- def __get_base_path(self):
- """Return the file's directory and file name, with the
- suffix stripped."""
- entry = self.get()
- return SCons.Subst.SpecialAttrWrapper(SCons.Util.splitext(entry.get_path())[0],
- entry.name + "_base")
-
- def __get_posix_path(self):
- """Return the path with / as the path separator,
- regardless of platform."""
- if os.sep == '/':
- return self
- else:
- entry = self.get()
- r = entry.get_path().replace(os.sep, '/')
- return SCons.Subst.SpecialAttrWrapper(r, entry.name + "_posix")
-
- def __get_windows_path(self):
- """Return the path with \ as the path separator,
- regardless of platform."""
- if os.sep == '\\':
- return self
- else:
- entry = self.get()
- r = entry.get_path().replace(os.sep, '\\')
- return SCons.Subst.SpecialAttrWrapper(r, entry.name + "_windows")
-
- def __get_srcnode(self):
- return EntryProxy(self.get().srcnode())
-
- def __get_srcdir(self):
- """Returns the directory containing the source node linked to this
- node via VariantDir(), or the directory of this node if not linked."""
- return EntryProxy(self.get().srcnode().dir)
-
- def __get_rsrcnode(self):
- return EntryProxy(self.get().srcnode().rfile())
-
- def __get_rsrcdir(self):
- """Returns the directory containing the source node linked to this
- node via VariantDir(), or the directory of this node if not linked."""
- return EntryProxy(self.get().srcnode().rfile().dir)
-
- def __get_dir(self):
- return EntryProxy(self.get().dir)
-
- dictSpecialAttrs = { "base" : __get_base_path,
- "posix" : __get_posix_path,
- "windows" : __get_windows_path,
- "win32" : __get_windows_path,
- "srcpath" : __get_srcnode,
- "srcdir" : __get_srcdir,
- "dir" : __get_dir,
- "abspath" : __get_abspath,
- "filebase" : __get_filebase,
- "suffix" : __get_suffix,
- "file" : __get_file,
- "rsrcpath" : __get_rsrcnode,
- "rsrcdir" : __get_rsrcdir,
- }
-
- def __getattr__(self, name):
- # This is how we implement the "special" attributes
- # such as base, posix, srcdir, etc.
- try:
- attr_function = self.dictSpecialAttrs[name]
- except KeyError:
- try:
- attr = SCons.Util.Proxy.__getattr__(self, name)
- except AttributeError, e:
- # Raise our own AttributeError subclass with an
- # overridden __str__() method that identifies the
- # name of the entry that caused the exception.
- raise EntryProxyAttributeError(self, name)
- return attr
- else:
- return attr_function(self)
-
-class Base(SCons.Node.Node):
- """A generic class for file system entries. This class is for
- when we don't know yet whether the entry being looked up is a file
- or a directory. Instances of this class can morph into either
- Dir or File objects by a later, more precise lookup.
-
- Note: this class does not define __cmp__ and __hash__ for
- efficiency reasons. SCons does a lot of comparing of
- Node.FS.{Base,Entry,File,Dir} objects, so those operations must be
- as fast as possible, which means we want to use Python's built-in
- object identity comparisons.
- """
-
- memoizer_counters = []
-
- def __init__(self, name, directory, fs):
- """Initialize a generic Node.FS.Base object.
-
- Call the superclass initialization, take care of setting up
- our relative and absolute paths, identify our parent
- directory, and indicate that this node should use
- signatures."""
- if __debug__: logInstanceCreation(self, 'Node.FS.Base')
- SCons.Node.Node.__init__(self)
-
- # Filenames and paths are probably reused and are intern'ed to
- # save some memory.
- self.name = SCons.Util.silent_intern(name)
- self.suffix = SCons.Util.silent_intern(SCons.Util.splitext(name)[1])
- self.fs = fs
-
- assert directory, "A directory must be provided"
-
- self.abspath = SCons.Util.silent_intern(directory.entry_abspath(name))
- self.labspath = SCons.Util.silent_intern(directory.entry_labspath(name))
- if directory.path == '.':
- self.path = SCons.Util.silent_intern(name)
- else:
- self.path = SCons.Util.silent_intern(directory.entry_path(name))
- if directory.tpath == '.':
- self.tpath = SCons.Util.silent_intern(name)
- else:
- self.tpath = SCons.Util.silent_intern(directory.entry_tpath(name))
- self.path_elements = directory.path_elements + [self]
-
- self.dir = directory
- self.cwd = None # will hold the SConscript directory for target nodes
- self.duplicate = directory.duplicate
-
- def str_for_display(self):
- return '"' + self.__str__() + '"'
-
- def must_be_same(self, klass):
- """
- This node, which already existed, is being looked up as the
- specified klass. Raise an exception if it isn't.
- """
- if isinstance(self, klass) or klass is Entry:
- return
- raise TypeError("Tried to lookup %s '%s' as a %s." %\
- (self.__class__.__name__, self.path, klass.__name__))
-
- def get_dir(self):
- return self.dir
-
- def get_suffix(self):
- return self.suffix
-
- def rfile(self):
- return self
-
- def __str__(self):
- """A Node.FS.Base object's string representation is its path
- name."""
- global Save_Strings
- if Save_Strings:
- return self._save_str()
- return self._get_str()
-
- memoizer_counters.append(SCons.Memoize.CountValue('_save_str'))
-
- def _save_str(self):
- try:
- return self._memo['_save_str']
- except KeyError:
- pass
- result = sys.intern(self._get_str())
- self._memo['_save_str'] = result
- return result
-
- def _get_str(self):
- global Save_Strings
- if self.duplicate or self.is_derived():
- return self.get_path()
- srcnode = self.srcnode()
- if srcnode.stat() is None and self.stat() is not None:
- result = self.get_path()
- else:
- result = srcnode.get_path()
- if not Save_Strings:
- # We're not at the point where we're saving the string string
- # representations of FS Nodes (because we haven't finished
- # reading the SConscript files and need to have str() return
- # things relative to them). That also means we can't yet
- # cache values returned (or not returned) by stat(), since
- # Python code in the SConscript files might still create
- # or otherwise affect the on-disk file. So get rid of the
- # values that the underlying stat() method saved.
- try: del self._memo['stat']
- except KeyError: pass
- if self is not srcnode:
- try: del srcnode._memo['stat']
- except KeyError: pass
- return result
-
- rstr = __str__
-
- memoizer_counters.append(SCons.Memoize.CountValue('stat'))
-
- def stat(self):
- try: return self._memo['stat']
- except KeyError: pass
- try: result = self.fs.stat(self.abspath)
- except os.error: result = None
- self._memo['stat'] = result
- return result
-
- def exists(self):
- return self.stat() is not None
-
- def rexists(self):
- return self.rfile().exists()
-
- def getmtime(self):
- st = self.stat()
- if st: return st[stat.ST_MTIME]
- else: return None
-
- def getsize(self):
- st = self.stat()
- if st: return st[stat.ST_SIZE]
- else: return None
-
- def isdir(self):
- st = self.stat()
- return st is not None and stat.S_ISDIR(st[stat.ST_MODE])
-
- def isfile(self):
- st = self.stat()
- return st is not None and stat.S_ISREG(st[stat.ST_MODE])
-
- if hasattr(os, 'symlink'):
- def islink(self):
- try: st = self.fs.lstat(self.abspath)
- except os.error: return 0
- return stat.S_ISLNK(st[stat.ST_MODE])
- else:
- def islink(self):
- return 0 # no symlinks
-
- def is_under(self, dir):
- if self is dir:
- return 1
- else:
- return self.dir.is_under(dir)
-
- def set_local(self):
- self._local = 1
-
- def srcnode(self):
- """If this node is in a build path, return the node
- corresponding to its source file. Otherwise, return
- ourself.
- """
- srcdir_list = self.dir.srcdir_list()
- if srcdir_list:
- srcnode = srcdir_list[0].Entry(self.name)
- srcnode.must_be_same(self.__class__)
- return srcnode
- return self
-
- def get_path(self, dir=None):
- """Return path relative to the current working directory of the
- Node.FS.Base object that owns us."""
- if not dir:
- dir = self.fs.getcwd()
- if self == dir:
- return '.'
- path_elems = self.path_elements
- try: i = path_elems.index(dir)
- except ValueError: pass
- else: path_elems = path_elems[i+1:]
- path_elems = [n.name for n in path_elems]
- return os.sep.join(path_elems)
-
- def set_src_builder(self, builder):
- """Set the source code builder for this node."""
- self.sbuilder = builder
- if not self.has_builder():
- self.builder_set(builder)
-
- def src_builder(self):
- """Fetch the source code builder for this node.
-
- If there isn't one, we cache the source code builder specified
- for the directory (which in turn will cache the value from its
- parent directory, and so on up to the file system root).
- """
- try:
- scb = self.sbuilder
- except AttributeError:
- scb = self.dir.src_builder()
- self.sbuilder = scb
- return scb
-
- def get_abspath(self):
- """Get the absolute path of the file."""
- return self.abspath
-
- def for_signature(self):
- # Return just our name. Even an absolute path would not work,
- # because that can change thanks to symlinks or remapped network
- # paths.
- return self.name
-
- def get_subst_proxy(self):
- try:
- return self._proxy
- except AttributeError:
- ret = EntryProxy(self)
- self._proxy = ret
- return ret
-
- def target_from_source(self, prefix, suffix, splitext=SCons.Util.splitext):
- """
-
- Generates a target entry that corresponds to this entry (usually
- a source file) with the specified prefix and suffix.
-
- Note that this method can be overridden dynamically for generated
- files that need different behavior. See Tool/swig.py for
- an example.
- """
- return self.dir.Entry(prefix + splitext(self.name)[0] + suffix)
-
- def _Rfindalldirs_key(self, pathlist):
- return pathlist
-
- memoizer_counters.append(SCons.Memoize.CountDict('Rfindalldirs', _Rfindalldirs_key))
-
- def Rfindalldirs(self, pathlist):
- """
- Return all of the directories for a given path list, including
- corresponding "backing" directories in any repositories.
-
- The Node lookups are relative to this Node (typically a
- directory), so memoizing result saves cycles from looking
- up the same path for each target in a given directory.
- """
- try:
- memo_dict = self._memo['Rfindalldirs']
- except KeyError:
- memo_dict = {}
- self._memo['Rfindalldirs'] = memo_dict
- else:
- try:
- return memo_dict[pathlist]
- except KeyError:
- pass
-
- create_dir_relative_to_self = self.Dir
- result = []
- for path in pathlist:
- if isinstance(path, SCons.Node.Node):
- result.append(path)
- else:
- dir = create_dir_relative_to_self(path)
- result.extend(dir.get_all_rdirs())
-
- memo_dict[pathlist] = result
-
- return result
-
- def RDirs(self, pathlist):
- """Search for a list of directories in the Repository list."""
- cwd = self.cwd or self.fs._cwd
- return cwd.Rfindalldirs(pathlist)
-
- memoizer_counters.append(SCons.Memoize.CountValue('rentry'))
-
- def rentry(self):
- try:
- return self._memo['rentry']
- except KeyError:
- pass
- result = self
- if not self.exists():
- norm_name = _my_normcase(self.name)
- for dir in self.dir.get_all_rdirs():
- try:
- node = dir.entries[norm_name]
- except KeyError:
- if dir.entry_exists_on_disk(self.name):
- result = dir.Entry(self.name)
- break
- self._memo['rentry'] = result
- return result
-
- def _glob1(self, pattern, ondisk=True, source=False, strings=False):
- return []
-
-class Entry(Base):
- """This is the class for generic Node.FS entries--that is, things
- that could be a File or a Dir, but we're just not sure yet.
- Consequently, the methods in this class really exist just to
- transform their associated object into the right class when the
- time comes, and then call the same-named method in the transformed
- class."""
-
- def diskcheck_match(self):
- pass
-
- def disambiguate(self, must_exist=None):
- """
- """
- if self.isdir():
- self.__class__ = Dir
- self._morph()
- elif self.isfile():
- self.__class__ = File
- self._morph()
- self.clear()
- else:
- # There was nothing on-disk at this location, so look in
- # the src directory.
- #
- # We can't just use self.srcnode() straight away because
- # that would create an actual Node for this file in the src
- # directory, and there might not be one. Instead, use the
- # dir_on_disk() method to see if there's something on-disk
- # with that name, in which case we can go ahead and call
- # self.srcnode() to create the right type of entry.
- srcdir = self.dir.srcnode()
- if srcdir != self.dir and \
- srcdir.entry_exists_on_disk(self.name) and \
- self.srcnode().isdir():
- self.__class__ = Dir
- self._morph()
- elif must_exist:
- msg = "No such file or directory: '%s'" % self.abspath
- raise SCons.Errors.UserError(msg)
- else:
- self.__class__ = File
- self._morph()
- self.clear()
- return self
-
- def rfile(self):
- """We're a generic Entry, but the caller is actually looking for
- a File at this point, so morph into one."""
- self.__class__ = File
- self._morph()
- self.clear()
- return File.rfile(self)
-
- def scanner_key(self):
- return self.get_suffix()
-
- def get_contents(self):
- """Fetch the contents of the entry. Returns the exact binary
- contents of the file."""
- try:
- self = self.disambiguate(must_exist=1)
- except SCons.Errors.UserError:
- # There was nothing on disk with which to disambiguate
- # this entry. Leave it as an Entry, but return a null
- # string so calls to get_contents() in emitters and the
- # like (e.g. in qt.py) don't have to disambiguate by hand
- # or catch the exception.
- return ''
- else:
- return self.get_contents()
-
- def get_text_contents(self):
- """Fetch the decoded text contents of a Unicode encoded Entry.
-
- Since this should return the text contents from the file
- system, we check to see into what sort of subclass we should
- morph this Entry."""
- try:
- self = self.disambiguate(must_exist=1)
- except SCons.Errors.UserError:
- # There was nothing on disk with which to disambiguate
- # this entry. Leave it as an Entry, but return a null
- # string so calls to get_text_contents() in emitters and
- # the like (e.g. in qt.py) don't have to disambiguate by
- # hand or catch the exception.
- return ''
- else:
- return self.get_text_contents()
-
- def must_be_same(self, klass):
- """Called to make sure a Node is a Dir. Since we're an
- Entry, we can morph into one."""
- if self.__class__ is not klass:
- self.__class__ = klass
- self._morph()
- self.clear()
-
- # The following methods can get called before the Taskmaster has
- # had a chance to call disambiguate() directly to see if this Entry
- # should really be a Dir or a File. We therefore use these to call
- # disambiguate() transparently (from our caller's point of view).
- #
- # Right now, this minimal set of methods has been derived by just
- # looking at some of the methods that will obviously be called early
- # in any of the various Taskmasters' calling sequences, and then
- # empirically figuring out which additional methods are necessary
- # to make various tests pass.
-
- def exists(self):
- """Return if the Entry exists. Check the file system to see
- what we should turn into first. Assume a file if there's no
- directory."""
- return self.disambiguate().exists()
-
- def rel_path(self, other):
- d = self.disambiguate()
- if d.__class__ is Entry:
- raise Exception("rel_path() could not disambiguate File/Dir")
- return d.rel_path(other)
-
- def new_ninfo(self):
- return self.disambiguate().new_ninfo()
-
- def changed_since_last_build(self, target, prev_ni):
- return self.disambiguate().changed_since_last_build(target, prev_ni)
-
- def _glob1(self, pattern, ondisk=True, source=False, strings=False):
- return self.disambiguate()._glob1(pattern, ondisk, source, strings)
-
- def get_subst_proxy(self):
- return self.disambiguate().get_subst_proxy()
-
-# This is for later so we can differentiate between Entry the class and Entry
-# the method of the FS class.
-_classEntry = Entry
-
-
-class LocalFS(object):
-
- if SCons.Memoize.use_memoizer:
- __metaclass__ = SCons.Memoize.Memoized_Metaclass
-
- # This class implements an abstraction layer for operations involving
- # a local file system. Essentially, this wraps any function in
- # the os, os.path or shutil modules that we use to actually go do
- # anything with or to the local file system.
- #
- # Note that there's a very good chance we'll refactor this part of
- # the architecture in some way as we really implement the interface(s)
- # for remote file system Nodes. For example, the right architecture
- # might be to have this be a subclass instead of a base class.
- # Nevertheless, we're using this as a first step in that direction.
- #
- # We're not using chdir() yet because the calling subclass method
- # needs to use os.chdir() directly to avoid recursion. Will we
- # really need this one?
- #def chdir(self, path):
- # return os.chdir(path)
- def chmod(self, path, mode):
- return os.chmod(path, mode)
- def copy(self, src, dst):
- return shutil.copy(src, dst)
- def copy2(self, src, dst):
- return shutil.copy2(src, dst)
- def exists(self, path):
- return os.path.exists(path)
- def getmtime(self, path):
- return os.path.getmtime(path)
- def getsize(self, path):
- return os.path.getsize(path)
- def isdir(self, path):
- return os.path.isdir(path)
- def isfile(self, path):
- return os.path.isfile(path)
- def link(self, src, dst):
- return os.link(src, dst)
- def lstat(self, path):
- return os.lstat(path)
- def listdir(self, path):
- return os.listdir(path)
- def makedirs(self, path):
- return os.makedirs(path)
- def mkdir(self, path):
- return os.mkdir(path)
- def rename(self, old, new):
- return os.rename(old, new)
- def stat(self, path):
- return os.stat(path)
- def symlink(self, src, dst):
- return os.symlink(src, dst)
- def open(self, path):
- return open(path)
- def unlink(self, path):
- return os.unlink(path)
-
- if hasattr(os, 'symlink'):
- def islink(self, path):
- return os.path.islink(path)
- else:
- def islink(self, path):
- return 0 # no symlinks
-
- if hasattr(os, 'readlink'):
- def readlink(self, file):
- return os.readlink(file)
- else:
- def readlink(self, file):
- return ''
-
-
-#class RemoteFS:
-# # Skeleton for the obvious methods we might need from the
-# # abstraction layer for a remote filesystem.
-# def upload(self, local_src, remote_dst):
-# pass
-# def download(self, remote_src, local_dst):
-# pass
-
-
-class FS(LocalFS):
-
- memoizer_counters = []
-
- def __init__(self, path = None):
- """Initialize the Node.FS subsystem.
-
- The supplied path is the top of the source tree, where we
- expect to find the top-level build file. If no path is
- supplied, the current directory is the default.
-
- The path argument must be a valid absolute path.
- """
- if __debug__: logInstanceCreation(self, 'Node.FS')
-
- self._memo = {}
-
- self.Root = {}
- self.SConstruct_dir = None
- self.max_drift = default_max_drift
-
- self.Top = None
- if path is None:
- self.pathTop = os.getcwd()
- else:
- self.pathTop = path
- self.defaultDrive = _my_normcase(os.path.splitdrive(self.pathTop)[0])
-
- self.Top = self.Dir(self.pathTop)
- self.Top.path = '.'
- self.Top.tpath = '.'
- self._cwd = self.Top
-
- DirNodeInfo.fs = self
- FileNodeInfo.fs = self
-
- def set_SConstruct_dir(self, dir):
- self.SConstruct_dir = dir
-
- def get_max_drift(self):
- return self.max_drift
-
- def set_max_drift(self, max_drift):
- self.max_drift = max_drift
-
- def getcwd(self):
- return self._cwd
-
- def chdir(self, dir, change_os_dir=0):
- """Change the current working directory for lookups.
- If change_os_dir is true, we will also change the "real" cwd
- to match.
- """
- curr=self._cwd
- try:
- if dir is not None:
- self._cwd = dir
- if change_os_dir:
- os.chdir(dir.abspath)
- except OSError:
- self._cwd = curr
- raise
-
- def get_root(self, drive):
- """
- Returns the root directory for the specified drive, creating
- it if necessary.
- """
- drive = _my_normcase(drive)
- try:
- return self.Root[drive]
- except KeyError:
- root = RootDir(drive, self)
- self.Root[drive] = root
- if not drive:
- self.Root[self.defaultDrive] = root
- elif drive == self.defaultDrive:
- self.Root[''] = root
- return root
-
- def _lookup(self, p, directory, fsclass, create=1):
- """
- The generic entry point for Node lookup with user-supplied data.
-
- This translates arbitrary input into a canonical Node.FS object
- of the specified fsclass. The general approach for strings is
- to turn it into a fully normalized absolute path and then call
- the root directory's lookup_abs() method for the heavy lifting.
-
- If the path name begins with '#', it is unconditionally
- interpreted relative to the top-level directory of this FS. '#'
- is treated as a synonym for the top-level SConstruct directory,
- much like '~' is treated as a synonym for the user's home
- directory in a UNIX shell. So both '#foo' and '#/foo' refer
- to the 'foo' subdirectory underneath the top-level SConstruct
- directory.
-
- If the path name is relative, then the path is looked up relative
- to the specified directory, or the current directory (self._cwd,
- typically the SConscript directory) if the specified directory
- is None.
- """
- if isinstance(p, Base):
- # It's already a Node.FS object. Make sure it's the right
- # class and return.
- p.must_be_same(fsclass)
- return p
- # str(p) in case it's something like a proxy object
- p = str(p)
-
- initial_hash = (p[0:1] == '#')
- if initial_hash:
- # There was an initial '#', so we strip it and override
- # whatever directory they may have specified with the
- # top-level SConstruct directory.
- p = p[1:]
- directory = self.Top
-
- if directory and not isinstance(directory, Dir):
- directory = self.Dir(directory)
-
- if do_splitdrive:
- drive, p = os.path.splitdrive(p)
- else:
- drive = ''
- if drive and not p:
- # This causes a naked drive letter to be treated as a synonym
- # for the root directory on that drive.
- p = os.sep
- absolute = os.path.isabs(p)
-
- needs_normpath = needs_normpath_check.match(p)
-
- if initial_hash or not absolute:
- # This is a relative lookup, either to the top-level
- # SConstruct directory (because of the initial '#') or to
- # the current directory (the path name is not absolute).
- # Add the string to the appropriate directory lookup path,
- # after which the whole thing gets normalized.
- if not directory:
- directory = self._cwd
- if p:
- p = directory.labspath + '/' + p
- else:
- p = directory.labspath
-
- if needs_normpath:
- p = os.path.normpath(p)
-
- if drive or absolute:
- root = self.get_root(drive)
- else:
- if not directory:
- directory = self._cwd
- root = directory.root
-
- if os.sep != '/':
- p = p.replace(os.sep, '/')
- return root._lookup_abs(p, fsclass, create)
-
- def Entry(self, name, directory = None, create = 1):
- """Look up or create a generic Entry node with the specified name.
- If the name is a relative path (begins with ./, ../, or a file
- name), then it is looked up relative to the supplied directory
- node, or to the top level directory of the FS (supplied at
- construction time) if no directory is supplied.
- """
- return self._lookup(name, directory, Entry, create)
-
- def File(self, name, directory = None, create = 1):
- """Look up or create a File node with the specified name. If
- the name is a relative path (begins with ./, ../, or a file name),
- then it is looked up relative to the supplied directory node,
- or to the top level directory of the FS (supplied at construction
- time) if no directory is supplied.
-
- This method will raise TypeError if a directory is found at the
- specified path.
- """
- return self._lookup(name, directory, File, create)
-
- def Dir(self, name, directory = None, create = True):
- """Look up or create a Dir node with the specified name. If
- the name is a relative path (begins with ./, ../, or a file name),
- then it is looked up relative to the supplied directory node,
- or to the top level directory of the FS (supplied at construction
- time) if no directory is supplied.
-
- This method will raise TypeError if a normal file is found at the
- specified path.
- """
- return self._lookup(name, directory, Dir, create)
-
- def VariantDir(self, variant_dir, src_dir, duplicate=1):
- """Link the supplied variant directory to the source directory
- for purposes of building files."""
-
- if not isinstance(src_dir, SCons.Node.Node):
- src_dir = self.Dir(src_dir)
- if not isinstance(variant_dir, SCons.Node.Node):
- variant_dir = self.Dir(variant_dir)
- if src_dir.is_under(variant_dir):
- raise SCons.Errors.UserError("Source directory cannot be under variant directory.")
- if variant_dir.srcdir:
- if variant_dir.srcdir == src_dir:
- return # We already did this.
- raise SCons.Errors.UserError("'%s' already has a source directory: '%s'."%(variant_dir, variant_dir.srcdir))
- variant_dir.link(src_dir, duplicate)
-
- def Repository(self, *dirs):
- """Specify Repository directories to search."""
- for d in dirs:
- if not isinstance(d, SCons.Node.Node):
- d = self.Dir(d)
- self.Top.addRepository(d)
-
- def variant_dir_target_climb(self, orig, dir, tail):
- """Create targets in corresponding variant directories
-
- Climb the directory tree, and look up path names
- relative to any linked variant directories we find.
-
- Even though this loops and walks up the tree, we don't memoize
- the return value because this is really only used to process
- the command-line targets.
- """
- targets = []
- message = None
- fmt = "building associated VariantDir targets: %s"
- start_dir = dir
- while dir:
- for bd in dir.variant_dirs:
- if start_dir.is_under(bd):
- # If already in the build-dir location, don't reflect
- return [orig], fmt % str(orig)
- p = os.path.join(bd.path, *tail)
- targets.append(self.Entry(p))
- tail = [dir.name] + tail
- dir = dir.up()
- if targets:
- message = fmt % ' '.join(map(str, targets))
- return targets, message
-
- def Glob(self, pathname, ondisk=True, source=True, strings=False, cwd=None):
- """
- Globs
-
- This is mainly a shim layer
- """
- if cwd is None:
- cwd = self.getcwd()
- return cwd.glob(pathname, ondisk, source, strings)
-
-class DirNodeInfo(SCons.Node.NodeInfoBase):
- # This should get reset by the FS initialization.
- current_version_id = 1
-
- fs = None
-
- def str_to_node(self, s):
- top = self.fs.Top
- root = top.root
- if do_splitdrive:
- drive, s = os.path.splitdrive(s)
- if drive:
- root = self.fs.get_root(drive)
- if not os.path.isabs(s):
- s = top.labspath + '/' + s
- return root._lookup_abs(s, Entry)
-
-class DirBuildInfo(SCons.Node.BuildInfoBase):
- current_version_id = 1
-
-glob_magic_check = re.compile('[*?[]')
-
-def has_glob_magic(s):
- return glob_magic_check.search(s) is not None
-
-class Dir(Base):
- """A class for directories in a file system.
- """
-
- memoizer_counters = []
-
- NodeInfo = DirNodeInfo
- BuildInfo = DirBuildInfo
-
- def __init__(self, name, directory, fs):
- if __debug__: logInstanceCreation(self, 'Node.FS.Dir')
- Base.__init__(self, name, directory, fs)
- self._morph()
-
- def _morph(self):
- """Turn a file system Node (either a freshly initialized directory
- object or a separate Entry object) into a proper directory object.
-
- Set up this directory's entries and hook it into the file
- system tree. Specify that directories (this Node) don't use
- signatures for calculating whether they're current.
- """
-
- self.repositories = []
- self.srcdir = None
-
- self.entries = {}
- self.entries['.'] = self
- self.entries['..'] = self.dir
- self.cwd = self
- self.searched = 0
- self._sconsign = None
- self.variant_dirs = []
- self.root = self.dir.root
-
- # Don't just reset the executor, replace its action list,
- # because it might have some pre-or post-actions that need to
- # be preserved.
- self.builder = get_MkdirBuilder()
- self.get_executor().set_action_list(self.builder.action)
-
- def diskcheck_match(self):
- diskcheck_match(self, self.isfile,
- "File %s found where directory expected.")
-
- def __clearRepositoryCache(self, duplicate=None):
- """Called when we change the repository(ies) for a directory.
- This clears any cached information that is invalidated by changing
- the repository."""
-
- for node in self.entries.values():
- if node != self.dir:
- if node != self and isinstance(node, Dir):
- node.__clearRepositoryCache(duplicate)
- else:
- node.clear()
- try:
- del node._srcreps
- except AttributeError:
- pass
- if duplicate is not None:
- node.duplicate=duplicate
-
- def __resetDuplicate(self, node):
- if node != self:
- node.duplicate = node.get_dir().duplicate
-
- def Entry(self, name):
- """
- Looks up or creates an entry node named 'name' relative to
- this directory.
- """
- return self.fs.Entry(name, self)
-
- def Dir(self, name, create=True):
- """
- Looks up or creates a directory node named 'name' relative to
- this directory.
- """
- return self.fs.Dir(name, self, create)
-
- def File(self, name):
- """
- Looks up or creates a file node named 'name' relative to
- this directory.
- """
- return self.fs.File(name, self)
-
- def _lookup_rel(self, name, klass, create=1):
- """
- Looks up a *normalized* relative path name, relative to this
- directory.
-
- This method is intended for use by internal lookups with
- already-normalized path data. For general-purpose lookups,
- use the Entry(), Dir() and File() methods above.
-
- This method does *no* input checking and will die or give
- incorrect results if it's passed a non-normalized path name (e.g.,
- a path containing '..'), an absolute path name, a top-relative
- ('#foo') path name, or any kind of object.
- """
- name = self.entry_labspath(name)
- return self.root._lookup_abs(name, klass, create)
-
- def link(self, srcdir, duplicate):
- """Set this directory as the variant directory for the
- supplied source directory."""
- self.srcdir = srcdir
- self.duplicate = duplicate
- self.__clearRepositoryCache(duplicate)
- srcdir.variant_dirs.append(self)
-
- def getRepositories(self):
- """Returns a list of repositories for this directory.
- """
- if self.srcdir and not self.duplicate:
- return self.srcdir.get_all_rdirs() + self.repositories
- return self.repositories
-
- memoizer_counters.append(SCons.Memoize.CountValue('get_all_rdirs'))
-
- def get_all_rdirs(self):
- try:
- return list(self._memo['get_all_rdirs'])
- except KeyError:
- pass
-
- result = [self]
- fname = '.'
- dir = self
- while dir:
- for rep in dir.getRepositories():
- result.append(rep.Dir(fname))
- if fname == '.':
- fname = dir.name
- else:
- fname = dir.name + os.sep + fname
- dir = dir.up()
-
- self._memo['get_all_rdirs'] = list(result)
-
- return result
-
- def addRepository(self, dir):
- if dir != self and not dir in self.repositories:
- self.repositories.append(dir)
- dir.tpath = '.'
- self.__clearRepositoryCache()
-
- def up(self):
- return self.entries['..']
-
- def _rel_path_key(self, other):
- return str(other)
-
- memoizer_counters.append(SCons.Memoize.CountDict('rel_path', _rel_path_key))
-
- def rel_path(self, other):
- """Return a path to "other" relative to this directory.
- """
-
- # This complicated and expensive method, which constructs relative
- # paths between arbitrary Node.FS objects, is no longer used
- # by SCons itself. It was introduced to store dependency paths
- # in .sconsign files relative to the target, but that ended up
- # being significantly inefficient.
- #
- # We're continuing to support the method because some SConstruct
- # files out there started using it when it was available, and
- # we're all about backwards compatibility..
-
- try:
- memo_dict = self._memo['rel_path']
- except KeyError:
- memo_dict = {}
- self._memo['rel_path'] = memo_dict
- else:
- try:
- return memo_dict[other]
- except KeyError:
- pass
-
- if self is other:
- result = '.'
-
- elif not other in self.path_elements:
- try:
- other_dir = other.get_dir()
- except AttributeError:
- result = str(other)
- else:
- if other_dir is None:
- result = other.name
- else:
- dir_rel_path = self.rel_path(other_dir)
- if dir_rel_path == '.':
- result = other.name
- else:
- result = dir_rel_path + os.sep + other.name
- else:
- i = self.path_elements.index(other) + 1
-
- path_elems = ['..'] * (len(self.path_elements) - i) \
- + [n.name for n in other.path_elements[i:]]
-
- result = os.sep.join(path_elems)
-
- memo_dict[other] = result
-
- return result
-
- def get_env_scanner(self, env, kw={}):
- import SCons.Defaults
- return SCons.Defaults.DirEntryScanner
-
- def get_target_scanner(self):
- import SCons.Defaults
- return SCons.Defaults.DirEntryScanner
-
- def get_found_includes(self, env, scanner, path):
- """Return this directory's implicit dependencies.
-
- We don't bother caching the results because the scan typically
- shouldn't be requested more than once (as opposed to scanning
- .h file contents, which can be requested as many times as the
- files is #included by other files).
- """
- if not scanner:
- return []
- # Clear cached info for this Dir. If we already visited this
- # directory on our walk down the tree (because we didn't know at
- # that point it was being used as the source for another Node)
- # then we may have calculated build signature before realizing
- # we had to scan the disk. Now that we have to, though, we need
- # to invalidate the old calculated signature so that any node
- # dependent on our directory structure gets one that includes
- # info about everything on disk.
- self.clear()
- return scanner(self, env, path)
-
- #
- # Taskmaster interface subsystem
- #
-
- def prepare(self):
- pass
-
- def build(self, **kw):
- """A null "builder" for directories."""
- global MkdirBuilder
- if self.builder is not MkdirBuilder:
- SCons.Node.Node.build(self, **kw)
-
- #
- #
- #
-
- def _create(self):
- """Create this directory, silently and without worrying about
- whether the builder is the default or not."""
- listDirs = []
- parent = self
- while parent:
- if parent.exists():
- break
- listDirs.append(parent)
- p = parent.up()
- if p is None:
- # Don't use while: - else: for this condition because
- # if so, then parent is None and has no .path attribute.
- raise SCons.Errors.StopError(parent.path)
- parent = p
- listDirs.reverse()
- for dirnode in listDirs:
- try:
- # Don't call dirnode.build(), call the base Node method
- # directly because we definitely *must* create this
- # directory. The dirnode.build() method will suppress
- # the build if it's the default builder.
- SCons.Node.Node.build(dirnode)
- dirnode.get_executor().nullify()
- # The build() action may or may not have actually
- # created the directory, depending on whether the -n
- # option was used or not. Delete the _exists and
- # _rexists attributes so they can be reevaluated.
- dirnode.clear()
- except OSError:
- pass
-
- def multiple_side_effect_has_builder(self):
- global MkdirBuilder
- return self.builder is not MkdirBuilder and self.has_builder()
-
- def alter_targets(self):
- """Return any corresponding targets in a variant directory.
- """
- return self.fs.variant_dir_target_climb(self, self, [])
-
- def scanner_key(self):
- """A directory does not get scanned."""
- return None
-
- def get_text_contents(self):
- """We already emit things in text, so just return the binary
- version."""
- return self.get_contents()
-
- def get_contents(self):
- """Return content signatures and names of all our children
- separated by new-lines. Ensure that the nodes are sorted."""
- contents = []
- for node in sorted(self.children(), key=lambda t: t.name):
- contents.append('%s %s\n' % (node.get_csig(), node.name))
- return ''.join(contents)
-
- def get_csig(self):
- """Compute the content signature for Directory nodes. In
- general, this is not needed and the content signature is not
- stored in the DirNodeInfo. However, if get_contents on a Dir
- node is called which has a child directory, the child
- directory should return the hash of its contents."""
- contents = self.get_contents()
- return SCons.Util.MD5signature(contents)
-
- def do_duplicate(self, src):
- pass
-
- changed_since_last_build = SCons.Node.Node.state_has_changed
-
- def is_up_to_date(self):
- """If any child is not up-to-date, then this directory isn't,
- either."""
- if self.builder is not MkdirBuilder and not self.exists():
- return 0
- up_to_date = SCons.Node.up_to_date
- for kid in self.children():
- if kid.get_state() > up_to_date:
- return 0
- return 1
-
- def rdir(self):
- if not self.exists():
- norm_name = _my_normcase(self.name)
- for dir in self.dir.get_all_rdirs():
- try: node = dir.entries[norm_name]
- except KeyError: node = dir.dir_on_disk(self.name)
- if node and node.exists() and \
- (isinstance(dir, Dir) or isinstance(dir, Entry)):
- return node
- return self
-
- def sconsign(self):
- """Return the .sconsign file info for this directory,
- creating it first if necessary."""
- if not self._sconsign:
- import SCons.SConsign
- self._sconsign = SCons.SConsign.ForDirectory(self)
- return self._sconsign
-
- def srcnode(self):
- """Dir has a special need for srcnode()...if we
- have a srcdir attribute set, then that *is* our srcnode."""
- if self.srcdir:
- return self.srcdir
- return Base.srcnode(self)
-
- def get_timestamp(self):
- """Return the latest timestamp from among our children"""
- stamp = 0
- for kid in self.children():
- if kid.get_timestamp() > stamp:
- stamp = kid.get_timestamp()
- return stamp
-
- def entry_abspath(self, name):
- return self.abspath + os.sep + name
-
- def entry_labspath(self, name):
- return self.labspath + '/' + name
-
- def entry_path(self, name):
- return self.path + os.sep + name
-
- def entry_tpath(self, name):
- return self.tpath + os.sep + name
-
- def entry_exists_on_disk(self, name):
- try:
- d = self.on_disk_entries
- except AttributeError:
- d = {}
- try:
- entries = os.listdir(self.abspath)
- except OSError:
- pass
- else:
- for entry in map(_my_normcase, entries):
- d[entry] = True
- self.on_disk_entries = d
- if sys.platform == 'win32':
- name = _my_normcase(name)
- result = d.get(name)
- if result is None:
- # Belt-and-suspenders for Windows: check directly for
- # 8.3 file names that don't show up in os.listdir().
- result = os.path.exists(self.abspath + os.sep + name)
- d[name] = result
- return result
- else:
- return name in d
-
- memoizer_counters.append(SCons.Memoize.CountValue('srcdir_list'))
-
- def srcdir_list(self):
- try:
- return self._memo['srcdir_list']
- except KeyError:
- pass
-
- result = []
-
- dirname = '.'
- dir = self
- while dir:
- if dir.srcdir:
- result.append(dir.srcdir.Dir(dirname))
- dirname = dir.name + os.sep + dirname
- dir = dir.up()
-
- self._memo['srcdir_list'] = result
-
- return result
-
- def srcdir_duplicate(self, name):
- for dir in self.srcdir_list():
- if self.is_under(dir):
- # We shouldn't source from something in the build path;
- # variant_dir is probably under src_dir, in which case
- # we are reflecting.
- break
- if dir.entry_exists_on_disk(name):
- srcnode = dir.Entry(name).disambiguate()
- if self.duplicate:
- node = self.Entry(name).disambiguate()
- node.do_duplicate(srcnode)
- return node
- else:
- return srcnode
- return None
-
- def _srcdir_find_file_key(self, filename):
- return filename
-
- memoizer_counters.append(SCons.Memoize.CountDict('srcdir_find_file', _srcdir_find_file_key))
-
- def srcdir_find_file(self, filename):
- try:
- memo_dict = self._memo['srcdir_find_file']
- except KeyError:
- memo_dict = {}
- self._memo['srcdir_find_file'] = memo_dict
- else:
- try:
- return memo_dict[filename]
- except KeyError:
- pass
-
- def func(node):
- if (isinstance(node, File) or isinstance(node, Entry)) and \
- (node.is_derived() or node.exists()):
- return node
- return None
-
- norm_name = _my_normcase(filename)
-
- for rdir in self.get_all_rdirs():
- try: node = rdir.entries[norm_name]
- except KeyError: node = rdir.file_on_disk(filename)
- else: node = func(node)
- if node:
- result = (node, self)
- memo_dict[filename] = result
- return result
-
- for srcdir in self.srcdir_list():
- for rdir in srcdir.get_all_rdirs():
- try: node = rdir.entries[norm_name]
- except KeyError: node = rdir.file_on_disk(filename)
- else: node = func(node)
- if node:
- result = (File(filename, self, self.fs), srcdir)
- memo_dict[filename] = result
- return result
-
- result = (None, None)
- memo_dict[filename] = result
- return result
-
- def dir_on_disk(self, name):
- if self.entry_exists_on_disk(name):
- try: return self.Dir(name)
- except TypeError: pass
- node = self.srcdir_duplicate(name)
- if isinstance(node, File):
- return None
- return node
-
- def file_on_disk(self, name):
- if self.entry_exists_on_disk(name) or \
- diskcheck_rcs(self, name) or \
- diskcheck_sccs(self, name):
- try: return self.File(name)
- except TypeError: pass
- node = self.srcdir_duplicate(name)
- if isinstance(node, Dir):
- return None
- return node
-
- def walk(self, func, arg):
- """
- Walk this directory tree by calling the specified function
- for each directory in the tree.
-
- This behaves like the os.path.walk() function, but for in-memory
- Node.FS.Dir objects. The function takes the same arguments as
- the functions passed to os.path.walk():
-
- func(arg, dirname, fnames)
-
- Except that "dirname" will actually be the directory *Node*,
- not the string. The '.' and '..' entries are excluded from
- fnames. The fnames list may be modified in-place to filter the
- subdirectories visited or otherwise impose a specific order.
- The "arg" argument is always passed to func() and may be used
- in any way (or ignored, passing None is common).
- """
- entries = self.entries
- names = list(entries.keys())
- names.remove('.')
- names.remove('..')
- func(arg, self, names)
- for dirname in [n for n in names if isinstance(entries[n], Dir)]:
- entries[dirname].walk(func, arg)
-
- def glob(self, pathname, ondisk=True, source=False, strings=False):
- """
- Returns a list of Nodes (or strings) matching a specified
- pathname pattern.
-
- Pathname patterns follow UNIX shell semantics: * matches
- any-length strings of any characters, ? matches any character,
- and [] can enclose lists or ranges of characters. Matches do
- not span directory separators.
-
- The matches take into account Repositories, returning local
- Nodes if a corresponding entry exists in a Repository (either
- an in-memory Node or something on disk).
-
- By defafult, the glob() function matches entries that exist
- on-disk, in addition to in-memory Nodes. Setting the "ondisk"
- argument to False (or some other non-true value) causes the glob()
- function to only match in-memory Nodes. The default behavior is
- to return both the on-disk and in-memory Nodes.
-
- The "source" argument, when true, specifies that corresponding
- source Nodes must be returned if you're globbing in a build
- directory (initialized with VariantDir()). The default behavior
- is to return Nodes local to the VariantDir().
-
- The "strings" argument, when true, returns the matches as strings,
- not Nodes. The strings are path names relative to this directory.
-
- The underlying algorithm is adapted from the glob.glob() function
- in the Python library (but heavily modified), and uses fnmatch()
- under the covers.
- """
- dirname, basename = os.path.split(pathname)
- if not dirname:
- return sorted(self._glob1(basename, ondisk, source, strings),
- key=lambda t: str(t))
- if has_glob_magic(dirname):
- list = self.glob(dirname, ondisk, source, strings=False)
- else:
- list = [self.Dir(dirname, create=True)]
- result = []
- for dir in list:
- r = dir._glob1(basename, ondisk, source, strings)
- if strings:
- r = [os.path.join(str(dir), x) for x in r]
- result.extend(r)
- return sorted(result, key=lambda a: str(a))
-
- def _glob1(self, pattern, ondisk=True, source=False, strings=False):
- """
- Globs for and returns a list of entry names matching a single
- pattern in this directory.
-
- This searches any repositories and source directories for
- corresponding entries and returns a Node (or string) relative
- to the current directory if an entry is found anywhere.
-
- TODO: handle pattern with no wildcard
- """
- search_dir_list = self.get_all_rdirs()
- for srcdir in self.srcdir_list():
- search_dir_list.extend(srcdir.get_all_rdirs())
-
- selfEntry = self.Entry
- names = []
- for dir in search_dir_list:
- # We use the .name attribute from the Node because the keys of
- # the dir.entries dictionary are normalized (that is, all upper
- # case) on case-insensitive systems like Windows.
- node_names = [ v.name for k, v in dir.entries.items()
- if k not in ('.', '..') ]
- names.extend(node_names)
- if not strings:
- # Make sure the working directory (self) actually has
- # entries for all Nodes in repositories or variant dirs.
- for name in node_names: selfEntry(name)
- if ondisk:
- try:
- disk_names = os.listdir(dir.abspath)
- except os.error:
- continue
- names.extend(disk_names)
- if not strings:
- # We're going to return corresponding Nodes in
- # the local directory, so we need to make sure
- # those Nodes exist. We only want to create
- # Nodes for the entries that will match the
- # specified pattern, though, which means we
- # need to filter the list here, even though
- # the overall list will also be filtered later,
- # after we exit this loop.
- if pattern[0] != '.':
- #disk_names = [ d for d in disk_names if d[0] != '.' ]
- disk_names = [x for x in disk_names if x[0] != '.']
- disk_names = fnmatch.filter(disk_names, pattern)
- dirEntry = dir.Entry
- for name in disk_names:
- # Add './' before disk filename so that '#' at
- # beginning of filename isn't interpreted.
- name = './' + name
- node = dirEntry(name).disambiguate()
- n = selfEntry(name)
- if n.__class__ != node.__class__:
- n.__class__ = node.__class__
- n._morph()
-
- names = set(names)
- if pattern[0] != '.':
- #names = [ n for n in names if n[0] != '.' ]
- names = [x for x in names if x[0] != '.']
- names = fnmatch.filter(names, pattern)
-
- if strings:
- return names
-
- #return [ self.entries[_my_normcase(n)] for n in names ]
- return [self.entries[_my_normcase(n)] for n in names]
-
-class RootDir(Dir):
- """A class for the root directory of a file system.
-
- This is the same as a Dir class, except that the path separator
- ('/' or '\\') is actually part of the name, so we don't need to
- add a separator when creating the path names of entries within
- this directory.
- """
- def __init__(self, name, fs):
- if __debug__: logInstanceCreation(self, 'Node.FS.RootDir')
- # We're going to be our own parent directory (".." entry and .dir
- # attribute) so we have to set up some values so Base.__init__()
- # won't gag won't it calls some of our methods.
- self.abspath = ''
- self.labspath = ''
- self.path = ''
- self.tpath = ''
- self.path_elements = []
- self.duplicate = 0
- self.root = self
- Base.__init__(self, name, self, fs)
-
- # Now set our paths to what we really want them to be: the
- # initial drive letter (the name) plus the directory separator,
- # except for the "lookup abspath," which does not have the
- # drive letter.
- self.abspath = name + os.sep
- self.labspath = ''
- self.path = name + os.sep
- self.tpath = name + os.sep
- self._morph()
-
- self._lookupDict = {}
-
- # The // and os.sep + os.sep entries are necessary because
- # os.path.normpath() seems to preserve double slashes at the
- # beginning of a path (presumably for UNC path names), but
- # collapses triple slashes to a single slash.
- self._lookupDict[''] = self
- self._lookupDict['/'] = self
- self._lookupDict['//'] = self
- self._lookupDict[os.sep] = self
- self._lookupDict[os.sep + os.sep] = self
-
- def must_be_same(self, klass):
- if klass is Dir:
- return
- Base.must_be_same(self, klass)
-
- def _lookup_abs(self, p, klass, create=1):
- """
- Fast (?) lookup of a *normalized* absolute path.
-
- This method is intended for use by internal lookups with
- already-normalized path data. For general-purpose lookups,
- use the FS.Entry(), FS.Dir() or FS.File() methods.
-
- The caller is responsible for making sure we're passed a
- normalized absolute path; we merely let Python's dictionary look
- up and return the One True Node.FS object for the path.
-
- If no Node for the specified "p" doesn't already exist, and
- "create" is specified, the Node may be created after recursive
- invocation to find or create the parent directory or directories.
- """
- k = _my_normcase(p)
- try:
- result = self._lookupDict[k]
- except KeyError:
- if not create:
- msg = "No such file or directory: '%s' in '%s' (and create is False)" % (p, str(self))
- raise SCons.Errors.UserError(msg)
- # There is no Node for this path name, and we're allowed
- # to create it.
- dir_name, file_name = os.path.split(p)
- dir_node = self._lookup_abs(dir_name, Dir)
- result = klass(file_name, dir_node, self.fs)
-
- # Double-check on disk (as configured) that the Node we
- # created matches whatever is out there in the real world.
- result.diskcheck_match()
-
- self._lookupDict[k] = result
- dir_node.entries[_my_normcase(file_name)] = result
- dir_node.implicit = None
- else:
- # There is already a Node for this path name. Allow it to
- # complain if we were looking for an inappropriate type.
- result.must_be_same(klass)
- return result
-
- def __str__(self):
- return self.abspath
-
- def entry_abspath(self, name):
- return self.abspath + name
-
- def entry_labspath(self, name):
- return '/' + name
-
- def entry_path(self, name):
- return self.path + name
-
- def entry_tpath(self, name):
- return self.tpath + name
-
- def is_under(self, dir):
- if self is dir:
- return 1
- else:
- return 0
-
- def up(self):
- return None
-
- def get_dir(self):
- return None
-
- def src_builder(self):
- return _null
-
-class FileNodeInfo(SCons.Node.NodeInfoBase):
- current_version_id = 1
-
- field_list = ['csig', 'timestamp', 'size']
-
- # This should get reset by the FS initialization.
- fs = None
-
- def str_to_node(self, s):
- top = self.fs.Top
- root = top.root
- if do_splitdrive:
- drive, s = os.path.splitdrive(s)
- if drive:
- root = self.fs.get_root(drive)
- if not os.path.isabs(s):
- s = top.labspath + '/' + s
- return root._lookup_abs(s, Entry)
-
-class FileBuildInfo(SCons.Node.BuildInfoBase):
- current_version_id = 1
-
- def convert_to_sconsign(self):
- """
- Converts this FileBuildInfo object for writing to a .sconsign file
-
- This replaces each Node in our various dependency lists with its
- usual string representation: relative to the top-level SConstruct
- directory, or an absolute path if it's outside.
- """
- if os.sep == '/':
- node_to_str = str
- else:
- def node_to_str(n):
- try:
- s = n.path
- except AttributeError:
- s = str(n)
- else:
- s = s.replace(os.sep, '/')
- return s
- for attr in ['bsources', 'bdepends', 'bimplicit']:
- try:
- val = getattr(self, attr)
- except AttributeError:
- pass
- else:
- setattr(self, attr, list(map(node_to_str, val)))
- def convert_from_sconsign(self, dir, name):
- """
- Converts a newly-read FileBuildInfo object for in-SCons use
-
- For normal up-to-date checking, we don't have any conversion to
- perform--but we're leaving this method here to make that clear.
- """
- pass
- def prepare_dependencies(self):
- """
- Prepares a FileBuildInfo object for explaining what changed
-
- The bsources, bdepends and bimplicit lists have all been
- stored on disk as paths relative to the top-level SConstruct
- directory. Convert the strings to actual Nodes (for use by the
- --debug=explain code and --implicit-cache).
- """
- attrs = [
- ('bsources', 'bsourcesigs'),
- ('bdepends', 'bdependsigs'),
- ('bimplicit', 'bimplicitsigs'),
- ]
- for (nattr, sattr) in attrs:
- try:
- strings = getattr(self, nattr)
- nodeinfos = getattr(self, sattr)
- except AttributeError:
- continue
- nodes = []
- for s, ni in zip(strings, nodeinfos):
- if not isinstance(s, SCons.Node.Node):
- s = ni.str_to_node(s)
- nodes.append(s)
- setattr(self, nattr, nodes)
- def format(self, names=0):
- result = []
- bkids = self.bsources + self.bdepends + self.bimplicit
- bkidsigs = self.bsourcesigs + self.bdependsigs + self.bimplicitsigs
- for bkid, bkidsig in zip(bkids, bkidsigs):
- result.append(str(bkid) + ': ' +
- ' '.join(bkidsig.format(names=names)))
- result.append('%s [%s]' % (self.bactsig, self.bact))
- return '\n'.join(result)
-
-class File(Base):
- """A class for files in a file system.
- """
-
- memoizer_counters = []
-
- NodeInfo = FileNodeInfo
- BuildInfo = FileBuildInfo
-
- md5_chunksize = 64
-
- def diskcheck_match(self):
- diskcheck_match(self, self.isdir,
- "Directory %s found where file expected.")
-
- def __init__(self, name, directory, fs):
- if __debug__: logInstanceCreation(self, 'Node.FS.File')
- Base.__init__(self, name, directory, fs)
- self._morph()
-
- def Entry(self, name):
- """Create an entry node named 'name' relative to
- the directory of this file."""
- return self.dir.Entry(name)
-
- def Dir(self, name, create=True):
- """Create a directory node named 'name' relative to
- the directory of this file."""
- return self.dir.Dir(name, create=create)
-
- def Dirs(self, pathlist):
- """Create a list of directories relative to the SConscript
- directory of this file."""
- return [self.Dir(p) for p in pathlist]
-
- def File(self, name):
- """Create a file node named 'name' relative to
- the directory of this file."""
- return self.dir.File(name)
-
- #def generate_build_dict(self):
- # """Return an appropriate dictionary of values for building
- # this File."""
- # return {'Dir' : self.Dir,
- # 'File' : self.File,
- # 'RDirs' : self.RDirs}
-
- def _morph(self):
- """Turn a file system node into a File object."""
- self.scanner_paths = {}
- if not hasattr(self, '_local'):
- self._local = 0
-
- # If there was already a Builder set on this entry, then
- # we need to make sure we call the target-decider function,
- # not the source-decider. Reaching in and doing this by hand
- # is a little bogus. We'd prefer to handle this by adding
- # an Entry.builder_set() method that disambiguates like the
- # other methods, but that starts running into problems with the
- # fragile way we initialize Dir Nodes with their Mkdir builders,
- # yet still allow them to be overridden by the user. Since it's
- # not clear right now how to fix that, stick with what works
- # until it becomes clear...
- if self.has_builder():
- self.changed_since_last_build = self.decide_target
-
- def scanner_key(self):
- return self.get_suffix()
-
- def get_contents(self):
- if not self.rexists():
- return ''
- fname = self.rfile().abspath
- try:
- contents = open(fname, "rb").read()
- except EnvironmentError, e:
- if not e.filename:
- e.filename = fname
- raise
- return contents
-
- # This attempts to figure out what the encoding of the text is
- # based upon the BOM bytes, and then decodes the contents so that
- # it's a valid python string.
- def get_text_contents(self):
- contents = self.get_contents()
- # The behavior of various decode() methods and functions
- # w.r.t. the initial BOM bytes is different for different
- # encodings and/or Python versions. ('utf-8' does not strip
- # them, but has a 'utf-8-sig' which does; 'utf-16' seems to
- # strip them; etc.) Just sidestep all the complication by
- # explicitly stripping the BOM before we decode().
- if contents.startswith(codecs.BOM_UTF8):
- return contents[len(codecs.BOM_UTF8):].decode('utf-8')
- if contents.startswith(codecs.BOM_UTF16_LE):
- return contents[len(codecs.BOM_UTF16_LE):].decode('utf-16-le')
- if contents.startswith(codecs.BOM_UTF16_BE):
- return contents[len(codecs.BOM_UTF16_BE):].decode('utf-16-be')
- return contents
-
- def get_content_hash(self):
- """
- Compute and return the MD5 hash for this file.
- """
- if not self.rexists():
- return SCons.Util.MD5signature('')
- fname = self.rfile().abspath
- try:
- cs = SCons.Util.MD5filesignature(fname,
- chunksize=SCons.Node.FS.File.md5_chunksize*1024)
- except EnvironmentError, e:
- if not e.filename:
- e.filename = fname
- raise
- return cs
-
-
- memoizer_counters.append(SCons.Memoize.CountValue('get_size'))
-
- def get_size(self):
- try:
- return self._memo['get_size']
- except KeyError:
- pass
-
- if self.rexists():
- size = self.rfile().getsize()
- else:
- size = 0
-
- self._memo['get_size'] = size
-
- return size
-
- memoizer_counters.append(SCons.Memoize.CountValue('get_timestamp'))
-
- def get_timestamp(self):
- try:
- return self._memo['get_timestamp']
- except KeyError:
- pass
-
- if self.rexists():
- timestamp = self.rfile().getmtime()
- else:
- timestamp = 0
-
- self._memo['get_timestamp'] = timestamp
-
- return timestamp
-
- def store_info(self):
- # Merge our build information into the already-stored entry.
- # This accomodates "chained builds" where a file that's a target
- # in one build (SConstruct file) is a source in a different build.
- # See test/chained-build.py for the use case.
- if do_store_info:
- self.dir.sconsign().store_info(self.name, self)
-
- convert_copy_attrs = [
- 'bsources',
- 'bimplicit',
- 'bdepends',
- 'bact',
- 'bactsig',
- 'ninfo',
- ]
-
-
- convert_sig_attrs = [
- 'bsourcesigs',
- 'bimplicitsigs',
- 'bdependsigs',
- ]
-
- def convert_old_entry(self, old_entry):
- # Convert a .sconsign entry from before the Big Signature
- # Refactoring, doing what we can to convert its information
- # to the new .sconsign entry format.
- #
- # The old format looked essentially like this:
- #
- # BuildInfo
- # .ninfo (NodeInfo)
- # .bsig
- # .csig
- # .timestamp
- # .size
- # .bsources
- # .bsourcesigs ("signature" list)
- # .bdepends
- # .bdependsigs ("signature" list)
- # .bimplicit
- # .bimplicitsigs ("signature" list)
- # .bact
- # .bactsig
- #
- # The new format looks like this:
- #
- # .ninfo (NodeInfo)
- # .bsig
- # .csig
- # .timestamp
- # .size
- # .binfo (BuildInfo)
- # .bsources
- # .bsourcesigs (NodeInfo list)
- # .bsig
- # .csig
- # .timestamp
- # .size
- # .bdepends
- # .bdependsigs (NodeInfo list)
- # .bsig
- # .csig
- # .timestamp
- # .size
- # .bimplicit
- # .bimplicitsigs (NodeInfo list)
- # .bsig
- # .csig
- # .timestamp
- # .size
- # .bact
- # .bactsig
- #
- # The basic idea of the new structure is that a NodeInfo always
- # holds all available information about the state of a given Node
- # at a certain point in time. The various .b*sigs lists can just
- # be a list of pointers to the .ninfo attributes of the different
- # dependent nodes, without any copying of information until it's
- # time to pickle it for writing out to a .sconsign file.
- #
- # The complicating issue is that the *old* format only stored one
- # "signature" per dependency, based on however the *last* build
- # was configured. We don't know from just looking at it whether
- # it was a build signature, a content signature, or a timestamp
- # "signature". Since we no longer use build signatures, the
- # best we can do is look at the length and if it's thirty two,
- # assume that it was (or might have been) a content signature.
- # If it was actually a build signature, then it will cause a
- # rebuild anyway when it doesn't match the new content signature,
- # but that's probably the best we can do.
- import SCons.SConsign
- new_entry = SCons.SConsign.SConsignEntry()
- new_entry.binfo = self.new_binfo()
- binfo = new_entry.binfo
- for attr in self.convert_copy_attrs:
- try:
- value = getattr(old_entry, attr)
- except AttributeError:
- continue
- setattr(binfo, attr, value)
- delattr(old_entry, attr)
- for attr in self.convert_sig_attrs:
- try:
- sig_list = getattr(old_entry, attr)
- except AttributeError:
- continue
- value = []
- for sig in sig_list:
- ninfo = self.new_ninfo()
- if len(sig) == 32:
- ninfo.csig = sig
- else:
- ninfo.timestamp = sig
- value.append(ninfo)
- setattr(binfo, attr, value)
- delattr(old_entry, attr)
- return new_entry
-
- memoizer_counters.append(SCons.Memoize.CountValue('get_stored_info'))
-
- def get_stored_info(self):
- try:
- return self._memo['get_stored_info']
- except KeyError:
- pass
-
- try:
- sconsign_entry = self.dir.sconsign().get_entry(self.name)
- except (KeyError, EnvironmentError):
- import SCons.SConsign
- sconsign_entry = SCons.SConsign.SConsignEntry()
- sconsign_entry.binfo = self.new_binfo()
- sconsign_entry.ninfo = self.new_ninfo()
- else:
- if isinstance(sconsign_entry, FileBuildInfo):
- # This is a .sconsign file from before the Big Signature
- # Refactoring; convert it as best we can.
- sconsign_entry = self.convert_old_entry(sconsign_entry)
- try:
- delattr(sconsign_entry.ninfo, 'bsig')
- except AttributeError:
- pass
-
- self._memo['get_stored_info'] = sconsign_entry
-
- return sconsign_entry
-
- def get_stored_implicit(self):
- binfo = self.get_stored_info().binfo
- binfo.prepare_dependencies()
- try: return binfo.bimplicit
- except AttributeError: return None
-
- def rel_path(self, other):
- return self.dir.rel_path(other)
-
- def _get_found_includes_key(self, env, scanner, path):
- return (id(env), id(scanner), path)
-
- memoizer_counters.append(SCons.Memoize.CountDict('get_found_includes', _get_found_includes_key))
-
- def get_found_includes(self, env, scanner, path):
- """Return the included implicit dependencies in this file.
- Cache results so we only scan the file once per path
- regardless of how many times this information is requested.
- """
- memo_key = (id(env), id(scanner), path)
- try:
- memo_dict = self._memo['get_found_includes']
- except KeyError:
- memo_dict = {}
- self._memo['get_found_includes'] = memo_dict
- else:
- try:
- return memo_dict[memo_key]
- except KeyError:
- pass
-
- if scanner:
- # result = [n.disambiguate() for n in scanner(self, env, path)]
- result = scanner(self, env, path)
- result = [N.disambiguate() for N in result]
- else:
- result = []
-
- memo_dict[memo_key] = result
-
- return result
-
- def _createDir(self):
- # ensure that the directories for this node are
- # created.
- self.dir._create()
-
- def push_to_cache(self):
- """Try to push the node into a cache
- """
- # This should get called before the Nodes' .built() method is
- # called, which would clear the build signature if the file has
- # a source scanner.
- #
- # We have to clear the local memoized values *before* we push
- # the node to cache so that the memoization of the self.exists()
- # return value doesn't interfere.
- if self.nocache:
- return
- self.clear_memoized_values()
- if self.exists():
- self.get_build_env().get_CacheDir().push(self)
-
- def retrieve_from_cache(self):
- """Try to retrieve the node's content from a cache
-
- This method is called from multiple threads in a parallel build,
- so only do thread safe stuff here. Do thread unsafe stuff in
- built().
-
- Returns true iff the node was successfully retrieved.
- """
- if self.nocache:
- return None
- if not self.is_derived():
- return None
- return self.get_build_env().get_CacheDir().retrieve(self)
-
- def visited(self):
- if self.exists():
- self.get_build_env().get_CacheDir().push_if_forced(self)
-
- ninfo = self.get_ninfo()
-
- csig = self.get_max_drift_csig()
- if csig:
- ninfo.csig = csig
-
- ninfo.timestamp = self.get_timestamp()
- ninfo.size = self.get_size()
-
- if not self.has_builder():
- # This is a source file, but it might have been a target file
- # in another build that included more of the DAG. Copy
- # any build information that's stored in the .sconsign file
- # into our binfo object so it doesn't get lost.
- old = self.get_stored_info()
- self.get_binfo().__dict__.update(old.binfo.__dict__)
-
- self.store_info()
-
- def find_src_builder(self):
- if self.rexists():
- return None
- scb = self.dir.src_builder()
- if scb is _null:
- if diskcheck_sccs(self.dir, self.name):
- scb = get_DefaultSCCSBuilder()
- elif diskcheck_rcs(self.dir, self.name):
- scb = get_DefaultRCSBuilder()
- else:
- scb = None
- if scb is not None:
- try:
- b = self.builder
- except AttributeError:
- b = None
- if b is None:
- self.builder_set(scb)
- return scb
-
- def has_src_builder(self):
- """Return whether this Node has a source builder or not.
-
- If this Node doesn't have an explicit source code builder, this
- is where we figure out, on the fly, if there's a transparent
- source code builder for it.
-
- Note that if we found a source builder, we also set the
- self.builder attribute, so that all of the methods that actually
- *build* this file don't have to do anything different.
- """
- try:
- scb = self.sbuilder
- except AttributeError:
- scb = self.sbuilder = self.find_src_builder()
- return scb is not None
-
- def alter_targets(self):
- """Return any corresponding targets in a variant directory.
- """
- if self.is_derived():
- return [], None
- return self.fs.variant_dir_target_climb(self, self.dir, [self.name])
-
- def _rmv_existing(self):
- self.clear_memoized_values()
- e = Unlink(self, [], None)
- if isinstance(e, SCons.Errors.BuildError):
- raise e
-
- #
- # Taskmaster interface subsystem
- #
-
- def make_ready(self):
- self.has_src_builder()
- self.get_binfo()
-
- def prepare(self):
- """Prepare for this file to be created."""
- SCons.Node.Node.prepare(self)
-
- if self.get_state() != SCons.Node.up_to_date:
- if self.exists():
- if self.is_derived() and not self.precious:
- self._rmv_existing()
- else:
- try:
- self._createDir()
- except SCons.Errors.StopError, drive:
- desc = "No drive `%s' for target `%s'." % (drive, self)
- raise SCons.Errors.StopError(desc)
-
- #
- #
- #
-
- def remove(self):
- """Remove this file."""
- if self.exists() or self.islink():
- self.fs.unlink(self.path)
- return 1
- return None
-
- def do_duplicate(self, src):
- self._createDir()
- Unlink(self, None, None)
- e = Link(self, src, None)
- if isinstance(e, SCons.Errors.BuildError):
- desc = "Cannot duplicate `%s' in `%s': %s." % (src.path, self.dir.path, e.errstr)
- raise SCons.Errors.StopError(desc)
- self.linked = 1
- # The Link() action may or may not have actually
- # created the file, depending on whether the -n
- # option was used or not. Delete the _exists and
- # _rexists attributes so they can be reevaluated.
- self.clear()
-
- memoizer_counters.append(SCons.Memoize.CountValue('exists'))
-
- def exists(self):
- try:
- return self._memo['exists']
- except KeyError:
- pass
- # Duplicate from source path if we are set up to do this.
- if self.duplicate and not self.is_derived() and not self.linked:
- src = self.srcnode()
- if src is not self:
- # At this point, src is meant to be copied in a variant directory.
- src = src.rfile()
- if src.abspath != self.abspath:
- if src.exists():
- self.do_duplicate(src)
- # Can't return 1 here because the duplication might
- # not actually occur if the -n option is being used.
- else:
- # The source file does not exist. Make sure no old
- # copy remains in the variant directory.
- if Base.exists(self) or self.islink():
- self.fs.unlink(self.path)
- # Return None explicitly because the Base.exists() call
- # above will have cached its value if the file existed.
- self._memo['exists'] = None
- return None
- result = Base.exists(self)
- self._memo['exists'] = result
- return result
-
- #
- # SIGNATURE SUBSYSTEM
- #
-
- def get_max_drift_csig(self):
- """
- Returns the content signature currently stored for this node
- if it's been unmodified longer than the max_drift value, or the
- max_drift value is 0. Returns None otherwise.
- """
- old = self.get_stored_info()
- mtime = self.get_timestamp()
-
- max_drift = self.fs.max_drift
- if max_drift > 0:
- if (time.time() - mtime) > max_drift:
- try:
- n = old.ninfo
- if n.timestamp and n.csig and n.timestamp == mtime:
- return n.csig
- except AttributeError:
- pass
- elif max_drift == 0:
- try:
- return old.ninfo.csig
- except AttributeError:
- pass
-
- return None
-
- def get_csig(self):
- """
- Generate a node's content signature, the digested signature
- of its content.
-
- node - the node
- cache - alternate node to use for the signature cache
- returns - the content signature
- """
- ninfo = self.get_ninfo()
- try:
- return ninfo.csig
- except AttributeError:
- pass
-
- csig = self.get_max_drift_csig()
- if csig is None:
-
- try:
- if self.get_size() < SCons.Node.FS.File.md5_chunksize:
- contents = self.get_contents()
- else:
- csig = self.get_content_hash()
- except IOError:
- # This can happen if there's actually a directory on-disk,
- # which can be the case if they've disabled disk checks,
- # or if an action with a File target actually happens to
- # create a same-named directory by mistake.
- csig = ''
- else:
- if not csig:
- csig = SCons.Util.MD5signature(contents)
-
- ninfo.csig = csig
-
- return csig
-
- #
- # DECISION SUBSYSTEM
- #
-
- def builder_set(self, builder):
- SCons.Node.Node.builder_set(self, builder)
- self.changed_since_last_build = self.decide_target
-
- def changed_content(self, target, prev_ni):
- cur_csig = self.get_csig()
- try:
- return cur_csig != prev_ni.csig
- except AttributeError:
- return 1
-
- def changed_state(self, target, prev_ni):
- return self.state != SCons.Node.up_to_date
-
- def changed_timestamp_then_content(self, target, prev_ni):
- if not self.changed_timestamp_match(target, prev_ni):
- try:
- self.get_ninfo().csig = prev_ni.csig
- except AttributeError:
- pass
- return False
- return self.changed_content(target, prev_ni)
-
- def changed_timestamp_newer(self, target, prev_ni):
- try:
- return self.get_timestamp() > target.get_timestamp()
- except AttributeError:
- return 1
-
- def changed_timestamp_match(self, target, prev_ni):
- try:
- return self.get_timestamp() != prev_ni.timestamp
- except AttributeError:
- return 1
-
- def decide_source(self, target, prev_ni):
- return target.get_build_env().decide_source(self, target, prev_ni)
-
- def decide_target(self, target, prev_ni):
- return target.get_build_env().decide_target(self, target, prev_ni)
-
- # Initialize this Node's decider function to decide_source() because
- # every file is a source file until it has a Builder attached...
- changed_since_last_build = decide_source
-
- def is_up_to_date(self):
- T = 0
- if T: Trace('is_up_to_date(%s):' % self)
- if not self.exists():
- if T: Trace(' not self.exists():')
- # The file doesn't exist locally...
- r = self.rfile()
- if r != self:
- # ...but there is one in a Repository...
- if not self.changed(r):
- if T: Trace(' changed(%s):' % r)
- # ...and it's even up-to-date...
- if self._local:
- # ...and they'd like a local copy.
- e = LocalCopy(self, r, None)
- if isinstance(e, SCons.Errors.BuildError):
- raise
- self.store_info()
- if T: Trace(' 1\n')
- return 1
- self.changed()
- if T: Trace(' None\n')
- return None
- else:
- r = self.changed()
- if T: Trace(' self.exists(): %s\n' % r)
- return not r
-
- memoizer_counters.append(SCons.Memoize.CountValue('rfile'))
-
- def rfile(self):
- try:
- return self._memo['rfile']
- except KeyError:
- pass
- result = self
- if not self.exists():
- norm_name = _my_normcase(self.name)
- for dir in self.dir.get_all_rdirs():
- try: node = dir.entries[norm_name]
- except KeyError: node = dir.file_on_disk(self.name)
- if node and node.exists() and \
- (isinstance(node, File) or isinstance(node, Entry) \
- or not node.is_derived()):
- result = node
- # Copy over our local attributes to the repository
- # Node so we identify shared object files in the
- # repository and don't assume they're static.
- #
- # This isn't perfect; the attribute would ideally
- # be attached to the object in the repository in
- # case it was built statically in the repository
- # and we changed it to shared locally, but that's
- # rarely the case and would only occur if you
- # intentionally used the same suffix for both
- # shared and static objects anyway. So this
- # should work well in practice.
- result.attributes = self.attributes
- break
- self._memo['rfile'] = result
- return result
-
- def rstr(self):
- return str(self.rfile())
-
- def get_cachedir_csig(self):
- """
- Fetch a Node's content signature for purposes of computing
- another Node's cachesig.
-
- This is a wrapper around the normal get_csig() method that handles
- the somewhat obscure case of using CacheDir with the -n option.
- Any files that don't exist would normally be "built" by fetching
- them from the cache, but the normal get_csig() method will try
- to open up the local file, which doesn't exist because the -n
- option meant we didn't actually pull the file from cachedir.
- But since the file *does* actually exist in the cachedir, we
- can use its contents for the csig.
- """
- try:
- return self.cachedir_csig
- except AttributeError:
- pass
-
- cachedir, cachefile = self.get_build_env().get_CacheDir().cachepath(self)
- if not self.exists() and cachefile and os.path.exists(cachefile):
- self.cachedir_csig = SCons.Util.MD5filesignature(cachefile, \
- SCons.Node.FS.File.md5_chunksize * 1024)
- else:
- self.cachedir_csig = self.get_csig()
- return self.cachedir_csig
-
- def get_cachedir_bsig(self):
- try:
- return self.cachesig
- except AttributeError:
- pass
-
- # Add the path to the cache signature, because multiple
- # targets built by the same action will all have the same
- # build signature, and we have to differentiate them somehow.
- children = self.children()
- executor = self.get_executor()
- # sigs = [n.get_cachedir_csig() for n in children]
- sigs = [n.get_cachedir_csig() for n in children]
- sigs.append(SCons.Util.MD5signature(executor.get_contents()))
- sigs.append(self.path)
- result = self.cachesig = SCons.Util.MD5collect(sigs)
- return result
-
-
-default_fs = None
-
-def get_default_fs():
- global default_fs
- if not default_fs:
- default_fs = FS()
- return default_fs
-
-class FileFinder(object):
- """
- """
- if SCons.Memoize.use_memoizer:
- __metaclass__ = SCons.Memoize.Memoized_Metaclass
-
- memoizer_counters = []
-
- def __init__(self):
- self._memo = {}
-
- def filedir_lookup(self, p, fd=None):
- """
- A helper method for find_file() that looks up a directory for
- a file we're trying to find. This only creates the Dir Node if
- it exists on-disk, since if the directory doesn't exist we know
- we won't find any files in it... :-)
-
- It would be more compact to just use this as a nested function
- with a default keyword argument (see the commented-out version
- below), but that doesn't work unless you have nested scopes,
- so we define it here just so this work under Python 1.5.2.
- """
- if fd is None:
- fd = self.default_filedir
- dir, name = os.path.split(fd)
- drive, d = os.path.splitdrive(dir)
- if not name and d[:1] in ('/', os.sep):
- #return p.fs.get_root(drive).dir_on_disk(name)
- return p.fs.get_root(drive)
- if dir:
- p = self.filedir_lookup(p, dir)
- if not p:
- return None
- norm_name = _my_normcase(name)
- try:
- node = p.entries[norm_name]
- except KeyError:
- return p.dir_on_disk(name)
- if isinstance(node, Dir):
- return node
- if isinstance(node, Entry):
- node.must_be_same(Dir)
- return node
- return None
-
- def _find_file_key(self, filename, paths, verbose=None):
- return (filename, paths)
-
- memoizer_counters.append(SCons.Memoize.CountDict('find_file', _find_file_key))
-
- def find_file(self, filename, paths, verbose=None):
- """
- find_file(str, [Dir()]) -> [nodes]
-
- filename - a filename to find
- paths - a list of directory path *nodes* to search in. Can be
- represented as a list, a tuple, or a callable that is
- called with no arguments and returns the list or tuple.
-
- returns - the node created from the found file.
-
- Find a node corresponding to either a derived file or a file
- that exists already.
-
- Only the first file found is returned, and none is returned
- if no file is found.
- """
- memo_key = self._find_file_key(filename, paths)
- try:
- memo_dict = self._memo['find_file']
- except KeyError:
- memo_dict = {}
- self._memo['find_file'] = memo_dict
- else:
- try:
- return memo_dict[memo_key]
- except KeyError:
- pass
-
- if verbose and not callable(verbose):
- if not SCons.Util.is_String(verbose):
- verbose = "find_file"
- _verbose = u' %s: ' % verbose
- verbose = lambda s: sys.stdout.write(_verbose + s)
-
- filedir, filename = os.path.split(filename)
- if filedir:
- # More compact code that we can't use until we drop
- # support for Python 1.5.2:
- #
- #def filedir_lookup(p, fd=filedir):
- # """
- # A helper function that looks up a directory for a file
- # we're trying to find. This only creates the Dir Node
- # if it exists on-disk, since if the directory doesn't
- # exist we know we won't find any files in it... :-)
- # """
- # dir, name = os.path.split(fd)
- # if dir:
- # p = filedir_lookup(p, dir)
- # if not p:
- # return None
- # norm_name = _my_normcase(name)
- # try:
- # node = p.entries[norm_name]
- # except KeyError:
- # return p.dir_on_disk(name)
- # if isinstance(node, Dir):
- # return node
- # if isinstance(node, Entry):
- # node.must_be_same(Dir)
- # return node
- # if isinstance(node, Dir) or isinstance(node, Entry):
- # return node
- # return None
- #paths = [_f for _f in map(filedir_lookup, paths) if _f]
-
- self.default_filedir = filedir
- paths = [_f for _f in map(self.filedir_lookup, paths) if _f]
-
- result = None
- for dir in paths:
- if verbose:
- verbose("looking for '%s' in '%s' ...\n" % (filename, dir))
- node, d = dir.srcdir_find_file(filename)
- if node:
- if verbose:
- verbose("... FOUND '%s' in '%s'\n" % (filename, d))
- result = node
- break
-
- memo_dict[memo_key] = result
-
- return result
-
-find_file = FileFinder().find_file
-
-
-def invalidate_node_memos(targets):
- """
- Invalidate the memoized values of all Nodes (files or directories)
- that are associated with the given entries. Has been added to
- clear the cache of nodes affected by a direct execution of an
- action (e.g. Delete/Copy/Chmod). Existing Node caches become
- inconsistent if the action is run through Execute(). The argument
- `targets` can be a single Node object or filename, or a sequence
- of Nodes/filenames.
- """
- from traceback import extract_stack
-
- # First check if the cache really needs to be flushed. Only
- # actions run in the SConscript with Execute() seem to be
- # affected. XXX The way to check if Execute() is in the stacktrace
- # is a very dirty hack and should be replaced by a more sensible
- # solution.
- for f in extract_stack():
- if f[2] == 'Execute' and f[0][-14:] == 'Environment.py':
- break
- else:
- # Dont have to invalidate, so return
- return
-
- if not SCons.Util.is_List(targets):
- targets = [targets]
-
- for entry in targets:
- # If the target is a Node object, clear the cache. If it is a
- # filename, look up potentially existing Node object first.
- try:
- entry.clear_memoized_values()
- except AttributeError:
- # Not a Node object, try to look up Node by filename. XXX
- # This creates Node objects even for those filenames which
- # do not correspond to an existing Node object.
- node = get_default_fs().Entry(entry)
- if node:
- node.clear_memoized_values()
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Node/Python.py b/Externals/scons-local/scons-local-2.0.1/SCons/Node/Python.py
deleted file mode 100644
index 3245005919..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Node/Python.py
+++ /dev/null
@@ -1,128 +0,0 @@
-"""scons.Node.Python
-
-Python nodes.
-
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Node/Python.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import SCons.Node
-
-class ValueNodeInfo(SCons.Node.NodeInfoBase):
- current_version_id = 1
-
- field_list = ['csig']
-
- def str_to_node(self, s):
- return Value(s)
-
-class ValueBuildInfo(SCons.Node.BuildInfoBase):
- current_version_id = 1
-
-class Value(SCons.Node.Node):
- """A class for Python variables, typically passed on the command line
- or generated by a script, but not from a file or some other source.
- """
-
- NodeInfo = ValueNodeInfo
- BuildInfo = ValueBuildInfo
-
- def __init__(self, value, built_value=None):
- SCons.Node.Node.__init__(self)
- self.value = value
- if built_value is not None:
- self.built_value = built_value
-
- def str_for_display(self):
- return repr(self.value)
-
- def __str__(self):
- return str(self.value)
-
- def make_ready(self):
- self.get_csig()
-
- def build(self, **kw):
- if not hasattr(self, 'built_value'):
- SCons.Node.Node.build(self, **kw)
-
- is_up_to_date = SCons.Node.Node.children_are_up_to_date
-
- def is_under(self, dir):
- # Make Value nodes get built regardless of
- # what directory scons was run from. Value nodes
- # are outside the filesystem:
- return 1
-
- def write(self, built_value):
- """Set the value of the node."""
- self.built_value = built_value
-
- def read(self):
- """Return the value. If necessary, the value is built."""
- self.build()
- if not hasattr(self, 'built_value'):
- self.built_value = self.value
- return self.built_value
-
- def get_text_contents(self):
- """By the assumption that the node.built_value is a
- deterministic product of the sources, the contents of a Value
- are the concatenation of all the contents of its sources. As
- the value need not be built when get_contents() is called, we
- cannot use the actual node.built_value."""
- ###TODO: something reasonable about universal newlines
- contents = str(self.value)
- for kid in self.children(None):
- contents = contents + kid.get_contents()
- return contents
-
- get_contents = get_text_contents ###TODO should return 'bytes' value
-
- def changed_since_last_build(self, target, prev_ni):
- cur_csig = self.get_csig()
- try:
- return cur_csig != prev_ni.csig
- except AttributeError:
- return 1
-
- def get_csig(self, calc=None):
- """Because we're a Python value node and don't have a real
- timestamp, we get to ignore the calculator and just use the
- value contents."""
- try:
- return self.ninfo.csig
- except AttributeError:
- pass
- contents = self.get_contents()
- self.get_ninfo().csig = contents
- return contents
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Node/__init__.py b/Externals/scons-local/scons-local-2.0.1/SCons/Node/__init__.py
deleted file mode 100644
index b737798730..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Node/__init__.py
+++ /dev/null
@@ -1,1328 +0,0 @@
-"""SCons.Node
-
-The Node package for the SCons software construction utility.
-
-This is, in many ways, the heart of SCons.
-
-A Node is where we encapsulate all of the dependency information about
-any thing that SCons can build, or about any thing which SCons can use
-to build some other thing. The canonical "thing," of course, is a file,
-but a Node can also represent something remote (like a web page) or
-something completely abstract (like an Alias).
-
-Each specific type of "thing" is specifically represented by a subclass
-of the Node base class: Node.FS.File for files, Node.Alias for aliases,
-etc. Dependency information is kept here in the base class, and
-information specific to files/aliases/etc. is in the subclass. The
-goal, if we've done this correctly, is that any type of "thing" should
-be able to depend on any other type of "thing."
-
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-__revision__ = "src/engine/SCons/Node/__init__.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import collections
-import copy
-from itertools import chain
-
-from SCons.Debug import logInstanceCreation
-import SCons.Executor
-import SCons.Memoize
-import SCons.Util
-
-from SCons.Debug import Trace
-
-def classname(obj):
- return str(obj.__class__).split('.')[-1]
-
-# Node states
-#
-# These are in "priority" order, so that the maximum value for any
-# child/dependency of a node represents the state of that node if
-# it has no builder of its own. The canonical example is a file
-# system directory, which is only up to date if all of its children
-# were up to date.
-no_state = 0
-pending = 1
-executing = 2
-up_to_date = 3
-executed = 4
-failed = 5
-
-StateString = {
- 0 : "no_state",
- 1 : "pending",
- 2 : "executing",
- 3 : "up_to_date",
- 4 : "executed",
- 5 : "failed",
-}
-
-# controls whether implicit dependencies are cached:
-implicit_cache = 0
-
-# controls whether implicit dep changes are ignored:
-implicit_deps_unchanged = 0
-
-# controls whether the cached implicit deps are ignored:
-implicit_deps_changed = 0
-
-# A variable that can be set to an interface-specific function be called
-# to annotate a Node with information about its creation.
-def do_nothing(node): pass
-
-Annotate = do_nothing
-
-# Classes for signature info for Nodes.
-
-class NodeInfoBase(object):
- """
- The generic base class for signature information for a Node.
-
- Node subclasses should subclass NodeInfoBase to provide their own
- logic for dealing with their own Node-specific signature information.
- """
- current_version_id = 1
- def __init__(self, node=None):
- # Create an object attribute from the class attribute so it ends up
- # in the pickled data in the .sconsign file.
- self._version_id = self.current_version_id
- def update(self, node):
- try:
- field_list = self.field_list
- except AttributeError:
- return
- for f in field_list:
- try:
- delattr(self, f)
- except AttributeError:
- pass
- try:
- func = getattr(node, 'get_' + f)
- except AttributeError:
- pass
- else:
- setattr(self, f, func())
- def convert(self, node, val):
- pass
- def merge(self, other):
- self.__dict__.update(other.__dict__)
- def format(self, field_list=None, names=0):
- if field_list is None:
- try:
- field_list = self.field_list
- except AttributeError:
- field_list = sorted(self.__dict__.keys())
- fields = []
- for field in field_list:
- try:
- f = getattr(self, field)
- except AttributeError:
- f = None
- f = str(f)
- if names:
- f = field + ': ' + f
- fields.append(f)
- return fields
-
-class BuildInfoBase(object):
- """
- The generic base class for build information for a Node.
-
- This is what gets stored in a .sconsign file for each target file.
- It contains a NodeInfo instance for this node (signature information
- that's specific to the type of Node) and direct attributes for the
- generic build stuff we have to track: sources, explicit dependencies,
- implicit dependencies, and action information.
- """
- current_version_id = 1
- def __init__(self, node=None):
- # Create an object attribute from the class attribute so it ends up
- # in the pickled data in the .sconsign file.
- self._version_id = self.current_version_id
- self.bsourcesigs = []
- self.bdependsigs = []
- self.bimplicitsigs = []
- self.bactsig = None
- def merge(self, other):
- self.__dict__.update(other.__dict__)
-
-class Node(object):
- """The base Node class, for entities that we know how to
- build, or use to build other Nodes.
- """
-
- if SCons.Memoize.use_memoizer:
- __metaclass__ = SCons.Memoize.Memoized_Metaclass
-
- memoizer_counters = []
-
- class Attrs(object):
- pass
-
- def __init__(self):
- if __debug__: logInstanceCreation(self, 'Node.Node')
- # Note that we no longer explicitly initialize a self.builder
- # attribute to None here. That's because the self.builder
- # attribute may be created on-the-fly later by a subclass (the
- # canonical example being a builder to fetch a file from a
- # source code system like CVS or Subversion).
-
- # Each list of children that we maintain is accompanied by a
- # dictionary used to look up quickly whether a node is already
- # present in the list. Empirical tests showed that it was
- # fastest to maintain them as side-by-side Node attributes in
- # this way, instead of wrapping up each list+dictionary pair in
- # a class. (Of course, we could always still do that in the
- # future if we had a good reason to...).
- self.sources = [] # source files used to build node
- self.sources_set = set()
- self._specific_sources = False
- self.depends = [] # explicit dependencies (from Depends)
- self.depends_set = set()
- self.ignore = [] # dependencies to ignore
- self.ignore_set = set()
- self.prerequisites = SCons.Util.UniqueList()
- self.implicit = None # implicit (scanned) dependencies (None means not scanned yet)
- self.waiting_parents = set()
- self.waiting_s_e = set()
- self.ref_count = 0
- self.wkids = None # Kids yet to walk, when it's an array
-
- self.env = None
- self.state = no_state
- self.precious = None
- self.noclean = 0
- self.nocache = 0
- self.always_build = None
- self.includes = None
- self.attributes = self.Attrs() # Generic place to stick information about the Node.
- self.side_effect = 0 # true iff this node is a side effect
- self.side_effects = [] # the side effects of building this target
- self.linked = 0 # is this node linked to the variant directory?
-
- self.clear_memoized_values()
-
- # Let the interface in which the build engine is embedded
- # annotate this Node with its own info (like a description of
- # what line in what file created the node, for example).
- Annotate(self)
-
- def disambiguate(self, must_exist=None):
- return self
-
- def get_suffix(self):
- return ''
-
- memoizer_counters.append(SCons.Memoize.CountValue('get_build_env'))
-
- def get_build_env(self):
- """Fetch the appropriate Environment to build this node.
- """
- try:
- return self._memo['get_build_env']
- except KeyError:
- pass
- result = self.get_executor().get_build_env()
- self._memo['get_build_env'] = result
- return result
-
- def get_build_scanner_path(self, scanner):
- """Fetch the appropriate scanner path for this node."""
- return self.get_executor().get_build_scanner_path(scanner)
-
- def set_executor(self, executor):
- """Set the action executor for this node."""
- self.executor = executor
-
- def get_executor(self, create=1):
- """Fetch the action executor for this node. Create one if
- there isn't already one, and requested to do so."""
- try:
- executor = self.executor
- except AttributeError:
- if not create:
- raise
- try:
- act = self.builder.action
- except AttributeError:
- executor = SCons.Executor.Null(targets=[self])
- else:
- executor = SCons.Executor.Executor(act,
- self.env or self.builder.env,
- [self.builder.overrides],
- [self],
- self.sources)
- self.executor = executor
- return executor
-
- def executor_cleanup(self):
- """Let the executor clean up any cached information."""
- try:
- executor = self.get_executor(create=None)
- except AttributeError:
- pass
- else:
- executor.cleanup()
-
- def reset_executor(self):
- "Remove cached executor; forces recompute when needed."
- try:
- delattr(self, 'executor')
- except AttributeError:
- pass
-
- def push_to_cache(self):
- """Try to push a node into a cache
- """
- pass
-
- def retrieve_from_cache(self):
- """Try to retrieve the node's content from a cache
-
- This method is called from multiple threads in a parallel build,
- so only do thread safe stuff here. Do thread unsafe stuff in
- built().
-
- Returns true iff the node was successfully retrieved.
- """
- return 0
-
- #
- # Taskmaster interface subsystem
- #
-
- def make_ready(self):
- """Get a Node ready for evaluation.
-
- This is called before the Taskmaster decides if the Node is
- up-to-date or not. Overriding this method allows for a Node
- subclass to be disambiguated if necessary, or for an implicit
- source builder to be attached.
- """
- pass
-
- def prepare(self):
- """Prepare for this Node to be built.
-
- This is called after the Taskmaster has decided that the Node
- is out-of-date and must be rebuilt, but before actually calling
- the method to build the Node.
-
- This default implementation checks that explicit or implicit
- dependencies either exist or are derived, and initializes the
- BuildInfo structure that will hold the information about how
- this node is, uh, built.
-
- (The existence of source files is checked separately by the
- Executor, which aggregates checks for all of the targets built
- by a specific action.)
-
- Overriding this method allows for for a Node subclass to remove
- the underlying file from the file system. Note that subclass
- methods should call this base class method to get the child
- check and the BuildInfo structure.
- """
- for d in self.depends:
- if d.missing():
- msg = "Explicit dependency `%s' not found, needed by target `%s'."
- raise SCons.Errors.StopError(msg % (d, self))
- if self.implicit is not None:
- for i in self.implicit:
- if i.missing():
- msg = "Implicit dependency `%s' not found, needed by target `%s'."
- raise SCons.Errors.StopError(msg % (i, self))
- self.binfo = self.get_binfo()
-
- def build(self, **kw):
- """Actually build the node.
-
- This is called by the Taskmaster after it's decided that the
- Node is out-of-date and must be rebuilt, and after the prepare()
- method has gotten everything, uh, prepared.
-
- This method is called from multiple threads in a parallel build,
- so only do thread safe stuff here. Do thread unsafe stuff
- in built().
-
- """
- try:
- self.get_executor()(self, **kw)
- except SCons.Errors.BuildError, e:
- e.node = self
- raise
-
- def built(self):
- """Called just after this node is successfully built."""
-
- # Clear the implicit dependency caches of any Nodes
- # waiting for this Node to be built.
- for parent in self.waiting_parents:
- parent.implicit = None
-
- self.clear()
-
- self.ninfo.update(self)
-
- def visited(self):
- """Called just after this node has been visited (with or
- without a build)."""
- try:
- binfo = self.binfo
- except AttributeError:
- # Apparently this node doesn't need build info, so
- # don't bother calculating or storing it.
- pass
- else:
- self.ninfo.update(self)
- self.store_info()
-
- #
- #
- #
-
- def add_to_waiting_s_e(self, node):
- self.waiting_s_e.add(node)
-
- def add_to_waiting_parents(self, node):
- """
- Returns the number of nodes added to our waiting parents list:
- 1 if we add a unique waiting parent, 0 if not. (Note that the
- returned values are intended to be used to increment a reference
- count, so don't think you can "clean up" this function by using
- True and False instead...)
- """
- wp = self.waiting_parents
- if node in wp:
- return 0
- wp.add(node)
- return 1
-
- def postprocess(self):
- """Clean up anything we don't need to hang onto after we've
- been built."""
- self.executor_cleanup()
- self.waiting_parents = set()
-
- def clear(self):
- """Completely clear a Node of all its cached state (so that it
- can be re-evaluated by interfaces that do continuous integration
- builds).
- """
- # The del_binfo() call here isn't necessary for normal execution,
- # but is for interactive mode, where we might rebuild the same
- # target and need to start from scratch.
- self.del_binfo()
- self.clear_memoized_values()
- self.ninfo = self.new_ninfo()
- self.executor_cleanup()
- try:
- delattr(self, '_calculated_sig')
- except AttributeError:
- pass
- self.includes = None
-
- def clear_memoized_values(self):
- self._memo = {}
-
- def builder_set(self, builder):
- self.builder = builder
- try:
- del self.executor
- except AttributeError:
- pass
-
- def has_builder(self):
- """Return whether this Node has a builder or not.
-
- In Boolean tests, this turns out to be a *lot* more efficient
- than simply examining the builder attribute directly ("if
- node.builder: ..."). When the builder attribute is examined
- directly, it ends up calling __getattr__ for both the __len__
- and __nonzero__ attributes on instances of our Builder Proxy
- class(es), generating a bazillion extra calls and slowing
- things down immensely.
- """
- try:
- b = self.builder
- except AttributeError:
- # There was no explicit builder for this Node, so initialize
- # the self.builder attribute to None now.
- b = self.builder = None
- return b is not None
-
- def set_explicit(self, is_explicit):
- self.is_explicit = is_explicit
-
- def has_explicit_builder(self):
- """Return whether this Node has an explicit builder
-
- This allows an internal Builder created by SCons to be marked
- non-explicit, so that it can be overridden by an explicit
- builder that the user supplies (the canonical example being
- directories)."""
- try:
- return self.is_explicit
- except AttributeError:
- self.is_explicit = None
- return self.is_explicit
-
- def get_builder(self, default_builder=None):
- """Return the set builder, or a specified default value"""
- try:
- return self.builder
- except AttributeError:
- return default_builder
-
- multiple_side_effect_has_builder = has_builder
-
- def is_derived(self):
- """
- Returns true iff this node is derived (i.e. built).
-
- This should return true only for nodes whose path should be in
- the variant directory when duplicate=0 and should contribute their build
- signatures when they are used as source files to other derived files. For
- example: source with source builders are not derived in this sense,
- and hence should not return true.
- """
- return self.has_builder() or self.side_effect
-
- def alter_targets(self):
- """Return a list of alternate targets for this Node.
- """
- return [], None
-
- def get_found_includes(self, env, scanner, path):
- """Return the scanned include lines (implicit dependencies)
- found in this node.
-
- The default is no implicit dependencies. We expect this method
- to be overridden by any subclass that can be scanned for
- implicit dependencies.
- """
- return []
-
- def get_implicit_deps(self, env, scanner, path):
- """Return a list of implicit dependencies for this node.
-
- This method exists to handle recursive invocation of the scanner
- on the implicit dependencies returned by the scanner, if the
- scanner's recursive flag says that we should.
- """
- if not scanner:
- return []
-
- # Give the scanner a chance to select a more specific scanner
- # for this Node.
- #scanner = scanner.select(self)
-
- nodes = [self]
- seen = {}
- seen[self] = 1
- deps = []
- while nodes:
- n = nodes.pop(0)
- d = [x for x in n.get_found_includes(env, scanner, path) if x not in seen]
- if d:
- deps.extend(d)
- for n in d:
- seen[n] = 1
- nodes.extend(scanner.recurse_nodes(d))
-
- return deps
-
- def get_env_scanner(self, env, kw={}):
- return env.get_scanner(self.scanner_key())
-
- def get_target_scanner(self):
- return self.builder.target_scanner
-
- def get_source_scanner(self, node):
- """Fetch the source scanner for the specified node
-
- NOTE: "self" is the target being built, "node" is
- the source file for which we want to fetch the scanner.
-
- Implies self.has_builder() is true; again, expect to only be
- called from locations where this is already verified.
-
- This function may be called very often; it attempts to cache
- the scanner found to improve performance.
- """
- scanner = None
- try:
- scanner = self.builder.source_scanner
- except AttributeError:
- pass
- if not scanner:
- # The builder didn't have an explicit scanner, so go look up
- # a scanner from env['SCANNERS'] based on the node's scanner
- # key (usually the file extension).
- scanner = self.get_env_scanner(self.get_build_env())
- if scanner:
- scanner = scanner.select(node)
- return scanner
-
- def add_to_implicit(self, deps):
- if not hasattr(self, 'implicit') or self.implicit is None:
- self.implicit = []
- self.implicit_set = set()
- self._children_reset()
- self._add_child(self.implicit, self.implicit_set, deps)
-
- def scan(self):
- """Scan this node's dependents for implicit dependencies."""
- # Don't bother scanning non-derived files, because we don't
- # care what their dependencies are.
- # Don't scan again, if we already have scanned.
- if self.implicit is not None:
- return
- self.implicit = []
- self.implicit_set = set()
- self._children_reset()
- if not self.has_builder():
- return
-
- build_env = self.get_build_env()
- executor = self.get_executor()
-
- # Here's where we implement --implicit-cache.
- if implicit_cache and not implicit_deps_changed:
- implicit = self.get_stored_implicit()
- if implicit is not None:
- # We now add the implicit dependencies returned from the
- # stored .sconsign entry to have already been converted
- # to Nodes for us. (We used to run them through a
- # source_factory function here.)
-
- # Update all of the targets with them. This
- # essentially short-circuits an N*M scan of the
- # sources for each individual target, which is a hell
- # of a lot more efficient.
- for tgt in executor.get_all_targets():
- tgt.add_to_implicit(implicit)
-
- if implicit_deps_unchanged or self.is_up_to_date():
- return
- # one of this node's sources has changed,
- # so we must recalculate the implicit deps:
- self.implicit = []
- self.implicit_set = set()
-
- # Have the executor scan the sources.
- executor.scan_sources(self.builder.source_scanner)
-
- # If there's a target scanner, have the executor scan the target
- # node itself and associated targets that might be built.
- scanner = self.get_target_scanner()
- if scanner:
- executor.scan_targets(scanner)
-
- def scanner_key(self):
- return None
-
- def select_scanner(self, scanner):
- """Selects a scanner for this Node.
-
- This is a separate method so it can be overridden by Node
- subclasses (specifically, Node.FS.Dir) that *must* use their
- own Scanner and don't select one the Scanner.Selector that's
- configured for the target.
- """
- return scanner.select(self)
-
- def env_set(self, env, safe=0):
- if safe and self.env:
- return
- self.env = env
-
- #
- # SIGNATURE SUBSYSTEM
- #
-
- NodeInfo = NodeInfoBase
- BuildInfo = BuildInfoBase
-
- def new_ninfo(self):
- ninfo = self.NodeInfo(self)
- return ninfo
-
- def get_ninfo(self):
- try:
- return self.ninfo
- except AttributeError:
- self.ninfo = self.new_ninfo()
- return self.ninfo
-
- def new_binfo(self):
- binfo = self.BuildInfo(self)
- return binfo
-
- def get_binfo(self):
- """
- Fetch a node's build information.
-
- node - the node whose sources will be collected
- cache - alternate node to use for the signature cache
- returns - the build signature
-
- This no longer handles the recursive descent of the
- node's children's signatures. We expect that they're
- already built and updated by someone else, if that's
- what's wanted.
- """
- try:
- return self.binfo
- except AttributeError:
- pass
-
- binfo = self.new_binfo()
- self.binfo = binfo
-
- executor = self.get_executor()
- ignore_set = self.ignore_set
-
- if self.has_builder():
- binfo.bact = str(executor)
- binfo.bactsig = SCons.Util.MD5signature(executor.get_contents())
-
- if self._specific_sources:
- sources = []
- for s in self.sources:
- if s not in ignore_set:
- sources.append(s)
- else:
- sources = executor.get_unignored_sources(self, self.ignore)
- seen = set()
- bsources = []
- bsourcesigs = []
- for s in sources:
- if not s in seen:
- seen.add(s)
- bsources.append(s)
- bsourcesigs.append(s.get_ninfo())
- binfo.bsources = bsources
- binfo.bsourcesigs = bsourcesigs
-
- depends = self.depends
- dependsigs = []
- for d in depends:
- if d not in ignore_set:
- dependsigs.append(d.get_ninfo())
- binfo.bdepends = depends
- binfo.bdependsigs = dependsigs
-
- implicit = self.implicit or []
- implicitsigs = []
- for i in implicit:
- if i not in ignore_set:
- implicitsigs.append(i.get_ninfo())
- binfo.bimplicit = implicit
- binfo.bimplicitsigs = implicitsigs
-
- return binfo
-
- def del_binfo(self):
- """Delete the build info from this node."""
- try:
- delattr(self, 'binfo')
- except AttributeError:
- pass
-
- def get_csig(self):
- try:
- return self.ninfo.csig
- except AttributeError:
- ninfo = self.get_ninfo()
- ninfo.csig = SCons.Util.MD5signature(self.get_contents())
- return self.ninfo.csig
-
- def get_cachedir_csig(self):
- return self.get_csig()
-
- def store_info(self):
- """Make the build signature permanent (that is, store it in the
- .sconsign file or equivalent)."""
- pass
-
- def do_not_store_info(self):
- pass
-
- def get_stored_info(self):
- return None
-
- def get_stored_implicit(self):
- """Fetch the stored implicit dependencies"""
- return None
-
- #
- #
- #
-
- def set_precious(self, precious = 1):
- """Set the Node's precious value."""
- self.precious = precious
-
- def set_noclean(self, noclean = 1):
- """Set the Node's noclean value."""
- # Make sure noclean is an integer so the --debug=stree
- # output in Util.py can use it as an index.
- self.noclean = noclean and 1 or 0
-
- def set_nocache(self, nocache = 1):
- """Set the Node's nocache value."""
- # Make sure nocache is an integer so the --debug=stree
- # output in Util.py can use it as an index.
- self.nocache = nocache and 1 or 0
-
- def set_always_build(self, always_build = 1):
- """Set the Node's always_build value."""
- self.always_build = always_build
-
- def exists(self):
- """Does this node exists?"""
- # All node exist by default:
- return 1
-
- def rexists(self):
- """Does this node exist locally or in a repositiory?"""
- # There are no repositories by default:
- return self.exists()
-
- def missing(self):
- return not self.is_derived() and \
- not self.linked and \
- not self.rexists()
-
- def remove(self):
- """Remove this Node: no-op by default."""
- return None
-
- def add_dependency(self, depend):
- """Adds dependencies."""
- try:
- self._add_child(self.depends, self.depends_set, depend)
- except TypeError, e:
- e = e.args[0]
- if SCons.Util.is_List(e):
- s = list(map(str, e))
- else:
- s = str(e)
- raise SCons.Errors.UserError("attempted to add a non-Node dependency to %s:\n\t%s is a %s, not a Node" % (str(self), s, type(e)))
-
- def add_prerequisite(self, prerequisite):
- """Adds prerequisites"""
- self.prerequisites.extend(prerequisite)
- self._children_reset()
-
- def add_ignore(self, depend):
- """Adds dependencies to ignore."""
- try:
- self._add_child(self.ignore, self.ignore_set, depend)
- except TypeError, e:
- e = e.args[0]
- if SCons.Util.is_List(e):
- s = list(map(str, e))
- else:
- s = str(e)
- raise SCons.Errors.UserError("attempted to ignore a non-Node dependency of %s:\n\t%s is a %s, not a Node" % (str(self), s, type(e)))
-
- def add_source(self, source):
- """Adds sources."""
- if self._specific_sources:
- return
- try:
- self._add_child(self.sources, self.sources_set, source)
- except TypeError, e:
- e = e.args[0]
- if SCons.Util.is_List(e):
- s = list(map(str, e))
- else:
- s = str(e)
- raise SCons.Errors.UserError("attempted to add a non-Node as source of %s:\n\t%s is a %s, not a Node" % (str(self), s, type(e)))
-
- def _add_child(self, collection, set, child):
- """Adds 'child' to 'collection', first checking 'set' to see if it's
- already present."""
- #if type(child) is not type([]):
- # child = [child]
- #for c in child:
- # if not isinstance(c, Node):
- # raise TypeError, c
- added = None
- for c in child:
- if c not in set:
- set.add(c)
- collection.append(c)
- added = 1
- if added:
- self._children_reset()
-
- def set_specific_source(self, source):
- self.add_source(source)
- self._specific_sources = True
-
- def add_wkid(self, wkid):
- """Add a node to the list of kids waiting to be evaluated"""
- if self.wkids is not None:
- self.wkids.append(wkid)
-
- def _children_reset(self):
- self.clear_memoized_values()
- # We need to let the Executor clear out any calculated
- # build info that it's cached so we can re-calculate it.
- self.executor_cleanup()
-
- memoizer_counters.append(SCons.Memoize.CountValue('_children_get'))
-
- def _children_get(self):
- try:
- return self._memo['children_get']
- except KeyError:
- pass
-
- # The return list may contain duplicate Nodes, especially in
- # source trees where there are a lot of repeated #includes
- # of a tangle of .h files. Profiling shows, however, that
- # eliminating the duplicates with a brute-force approach that
- # preserves the order (that is, something like:
- #
- # u = []
- # for n in list:
- # if n not in u:
- # u.append(n)"
- #
- # takes more cycles than just letting the underlying methods
- # hand back cached values if a Node's information is requested
- # multiple times. (Other methods of removing duplicates, like
- # using dictionary keys, lose the order, and the only ordered
- # dictionary patterns I found all ended up using "not in"
- # internally anyway...)
- if self.ignore_set:
- if self.implicit is None:
- iter = chain(self.sources,self.depends)
- else:
- iter = chain(self.sources, self.depends, self.implicit)
-
- children = []
- for i in iter:
- if i not in self.ignore_set:
- children.append(i)
- else:
- if self.implicit is None:
- children = self.sources + self.depends
- else:
- children = self.sources + self.depends + self.implicit
-
- self._memo['children_get'] = children
- return children
-
- def all_children(self, scan=1):
- """Return a list of all the node's direct children."""
- if scan:
- self.scan()
-
- # The return list may contain duplicate Nodes, especially in
- # source trees where there are a lot of repeated #includes
- # of a tangle of .h files. Profiling shows, however, that
- # eliminating the duplicates with a brute-force approach that
- # preserves the order (that is, something like:
- #
- # u = []
- # for n in list:
- # if n not in u:
- # u.append(n)"
- #
- # takes more cycles than just letting the underlying methods
- # hand back cached values if a Node's information is requested
- # multiple times. (Other methods of removing duplicates, like
- # using dictionary keys, lose the order, and the only ordered
- # dictionary patterns I found all ended up using "not in"
- # internally anyway...)
- if self.implicit is None:
- return self.sources + self.depends
- else:
- return self.sources + self.depends + self.implicit
-
- def children(self, scan=1):
- """Return a list of the node's direct children, minus those
- that are ignored by this node."""
- if scan:
- self.scan()
- return self._children_get()
-
- def set_state(self, state):
- self.state = state
-
- def get_state(self):
- return self.state
-
- def state_has_changed(self, target, prev_ni):
- return (self.state != SCons.Node.up_to_date)
-
- def get_env(self):
- env = self.env
- if not env:
- import SCons.Defaults
- env = SCons.Defaults.DefaultEnvironment()
- return env
-
- def changed_since_last_build(self, target, prev_ni):
- """
-
- Must be overridden in a specific subclass to return True if this
- Node (a dependency) has changed since the last time it was used
- to build the specified target. prev_ni is this Node's state (for
- example, its file timestamp, length, maybe content signature)
- as of the last time the target was built.
-
- Note that this method is called through the dependency, not the
- target, because a dependency Node must be able to use its own
- logic to decide if it changed. For example, File Nodes need to
- obey if we're configured to use timestamps, but Python Value Nodes
- never use timestamps and always use the content. If this method
- were called through the target, then each Node's implementation
- of this method would have to have more complicated logic to
- handle all the different Node types on which it might depend.
- """
- raise NotImplementedError
-
- def Decider(self, function):
- SCons.Util.AddMethod(self, function, 'changed_since_last_build')
-
- def changed(self, node=None):
- """
- Returns if the node is up-to-date with respect to the BuildInfo
- stored last time it was built. The default behavior is to compare
- it against our own previously stored BuildInfo, but the stored
- BuildInfo from another Node (typically one in a Repository)
- can be used instead.
-
- Note that we now *always* check every dependency. We used to
- short-circuit the check by returning as soon as we detected
- any difference, but we now rely on checking every dependency
- to make sure that any necessary Node information (for example,
- the content signature of an #included .h file) is updated.
- """
- t = 0
- if t: Trace('changed(%s [%s], %s)' % (self, classname(self), node))
- if node is None:
- node = self
-
- result = False
-
- bi = node.get_stored_info().binfo
- then = bi.bsourcesigs + bi.bdependsigs + bi.bimplicitsigs
- children = self.children()
-
- diff = len(children) - len(then)
- if diff:
- # The old and new dependency lists are different lengths.
- # This always indicates that the Node must be rebuilt.
- # We also extend the old dependency list with enough None
- # entries to equal the new dependency list, for the benefit
- # of the loop below that updates node information.
- then.extend([None] * diff)
- if t: Trace(': old %s new %s' % (len(then), len(children)))
- result = True
-
- for child, prev_ni in zip(children, then):
- if child.changed_since_last_build(self, prev_ni):
- if t: Trace(': %s changed' % child)
- result = True
-
- contents = self.get_executor().get_contents()
- if self.has_builder():
- import SCons.Util
- newsig = SCons.Util.MD5signature(contents)
- if bi.bactsig != newsig:
- if t: Trace(': bactsig %s != newsig %s' % (bi.bactsig, newsig))
- result = True
-
- if not result:
- if t: Trace(': up to date')
-
- if t: Trace('\n')
-
- return result
-
- def is_up_to_date(self):
- """Default check for whether the Node is current: unknown Node
- subtypes are always out of date, so they will always get built."""
- return None
-
- def children_are_up_to_date(self):
- """Alternate check for whether the Node is current: If all of
- our children were up-to-date, then this Node was up-to-date, too.
-
- The SCons.Node.Alias and SCons.Node.Python.Value subclasses
- rebind their current() method to this method."""
- # Allow the children to calculate their signatures.
- self.binfo = self.get_binfo()
- if self.always_build:
- return None
- state = 0
- for kid in self.children(None):
- s = kid.get_state()
- if s and (not state or s > state):
- state = s
- return (state == 0 or state == SCons.Node.up_to_date)
-
- def is_literal(self):
- """Always pass the string representation of a Node to
- the command interpreter literally."""
- return 1
-
- def render_include_tree(self):
- """
- Return a text representation, suitable for displaying to the
- user, of the include tree for the sources of this node.
- """
- if self.is_derived() and self.env:
- env = self.get_build_env()
- for s in self.sources:
- scanner = self.get_source_scanner(s)
- if scanner:
- path = self.get_build_scanner_path(scanner)
- else:
- path = None
- def f(node, env=env, scanner=scanner, path=path):
- return node.get_found_includes(env, scanner, path)
- return SCons.Util.render_tree(s, f, 1)
- else:
- return None
-
- def get_abspath(self):
- """
- Return an absolute path to the Node. This will return simply
- str(Node) by default, but for Node types that have a concept of
- relative path, this might return something different.
- """
- return str(self)
-
- def for_signature(self):
- """
- Return a string representation of the Node that will always
- be the same for this particular Node, no matter what. This
- is by contrast to the __str__() method, which might, for
- instance, return a relative path for a file Node. The purpose
- of this method is to generate a value to be used in signature
- calculation for the command line used to build a target, and
- we use this method instead of str() to avoid unnecessary
- rebuilds. This method does not need to return something that
- would actually work in a command line; it can return any kind of
- nonsense, so long as it does not change.
- """
- return str(self)
-
- def get_string(self, for_signature):
- """This is a convenience function designed primarily to be
- used in command generators (i.e., CommandGeneratorActions or
- Environment variables that are callable), which are called
- with a for_signature argument that is nonzero if the command
- generator is being called to generate a signature for the
- command line, which determines if we should rebuild or not.
-
- Such command generators should use this method in preference
- to str(Node) when converting a Node to a string, passing
- in the for_signature parameter, such that we will call
- Node.for_signature() or str(Node) properly, depending on whether
- we are calculating a signature or actually constructing a
- command line."""
- if for_signature:
- return self.for_signature()
- return str(self)
-
- def get_subst_proxy(self):
- """
- This method is expected to return an object that will function
- exactly like this Node, except that it implements any additional
- special features that we would like to be in effect for
- Environment variable substitution. The principle use is that
- some Nodes would like to implement a __getattr__() method,
- but putting that in the Node type itself has a tendency to kill
- performance. We instead put it in a proxy and return it from
- this method. It is legal for this method to return self
- if no new functionality is needed for Environment substitution.
- """
- return self
-
- def explain(self):
- if not self.exists():
- return "building `%s' because it doesn't exist\n" % self
-
- if self.always_build:
- return "rebuilding `%s' because AlwaysBuild() is specified\n" % self
-
- old = self.get_stored_info()
- if old is None:
- return None
-
- old = old.binfo
- old.prepare_dependencies()
-
- try:
- old_bkids = old.bsources + old.bdepends + old.bimplicit
- old_bkidsigs = old.bsourcesigs + old.bdependsigs + old.bimplicitsigs
- except AttributeError:
- return "Cannot explain why `%s' is being rebuilt: No previous build information found\n" % self
-
- new = self.get_binfo()
-
- new_bkids = new.bsources + new.bdepends + new.bimplicit
- new_bkidsigs = new.bsourcesigs + new.bdependsigs + new.bimplicitsigs
-
- osig = dict(zip(old_bkids, old_bkidsigs))
- nsig = dict(zip(new_bkids, new_bkidsigs))
-
- # The sources and dependencies we'll want to report are all stored
- # as relative paths to this target's directory, but we want to
- # report them relative to the top-level SConstruct directory,
- # so we only print them after running them through this lambda
- # to turn them into the right relative Node and then return
- # its string.
- def stringify( s, E=self.dir.Entry ) :
- if hasattr( s, 'dir' ) :
- return str(E(s))
- return str(s)
-
- lines = []
-
- removed = [x for x in old_bkids if not x in new_bkids]
- if removed:
- removed = list(map(stringify, removed))
- fmt = "`%s' is no longer a dependency\n"
- lines.extend([fmt % s for s in removed])
-
- for k in new_bkids:
- if not k in old_bkids:
- lines.append("`%s' is a new dependency\n" % stringify(k))
- elif k.changed_since_last_build(self, osig[k]):
- lines.append("`%s' changed\n" % stringify(k))
-
- if len(lines) == 0 and old_bkids != new_bkids:
- lines.append("the dependency order changed:\n" +
- "%sold: %s\n" % (' '*15, list(map(stringify, old_bkids))) +
- "%snew: %s\n" % (' '*15, list(map(stringify, new_bkids))))
-
- if len(lines) == 0:
- def fmt_with_title(title, strlines):
- lines = strlines.split('\n')
- sep = '\n' + ' '*(15 + len(title))
- return ' '*15 + title + sep.join(lines) + '\n'
- if old.bactsig != new.bactsig:
- if old.bact == new.bact:
- lines.append("the contents of the build action changed\n" +
- fmt_with_title('action: ', new.bact))
- else:
- lines.append("the build action changed:\n" +
- fmt_with_title('old: ', old.bact) +
- fmt_with_title('new: ', new.bact))
-
- if len(lines) == 0:
- return "rebuilding `%s' for unknown reasons\n" % self
-
- preamble = "rebuilding `%s' because" % self
- if len(lines) == 1:
- return "%s %s" % (preamble, lines[0])
- else:
- lines = ["%s:\n" % preamble] + lines
- return ( ' '*11).join(lines)
-
-class NodeList(collections.UserList):
- def __str__(self):
- return str(list(map(str, self.data)))
-
-def get_children(node, parent): return node.children()
-def ignore_cycle(node, stack): pass
-def do_nothing(node, parent): pass
-
-class Walker(object):
- """An iterator for walking a Node tree.
-
- This is depth-first, children are visited before the parent.
- The Walker object can be initialized with any node, and
- returns the next node on the descent with each get_next() call.
- 'kids_func' is an optional function that will be called to
- get the children of a node instead of calling 'children'.
- 'cycle_func' is an optional function that will be called
- when a cycle is detected.
-
- This class does not get caught in node cycles caused, for example,
- by C header file include loops.
- """
- def __init__(self, node, kids_func=get_children,
- cycle_func=ignore_cycle,
- eval_func=do_nothing):
- self.kids_func = kids_func
- self.cycle_func = cycle_func
- self.eval_func = eval_func
- node.wkids = copy.copy(kids_func(node, None))
- self.stack = [node]
- self.history = {} # used to efficiently detect and avoid cycles
- self.history[node] = None
-
- def get_next(self):
- """Return the next node for this walk of the tree.
-
- This function is intentionally iterative, not recursive,
- to sidestep any issues of stack size limitations.
- """
-
- while self.stack:
- if self.stack[-1].wkids:
- node = self.stack[-1].wkids.pop(0)
- if not self.stack[-1].wkids:
- self.stack[-1].wkids = None
- if node in self.history:
- self.cycle_func(node, self.stack)
- else:
- node.wkids = copy.copy(self.kids_func(node, self.stack[-1]))
- self.stack.append(node)
- self.history[node] = None
- else:
- node = self.stack.pop()
- del self.history[node]
- if node:
- if self.stack:
- parent = self.stack[-1]
- else:
- parent = None
- self.eval_func(node, parent)
- return node
- return None
-
- def is_done(self):
- return not self.stack
-
-
-arg2nodes_lookups = []
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Options/BoolOption.py b/Externals/scons-local/scons-local-2.0.1/SCons/Options/BoolOption.py
deleted file mode 100644
index 46099672ca..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Options/BoolOption.py
+++ /dev/null
@@ -1,50 +0,0 @@
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Options/BoolOption.py 5134 2010/08/16 23:02:40 bdeegan"
-
-__doc__ = """Place-holder for the old SCons.Options module hierarchy
-
-This is for backwards compatibility. The new equivalent is the Variables/
-class hierarchy. These will have deprecation warnings added (some day),
-and will then be removed entirely (some day).
-"""
-
-import SCons.Variables
-import SCons.Warnings
-
-warned = False
-
-def BoolOption(*args, **kw):
- global warned
- if not warned:
- msg = "The BoolOption() function is deprecated; use the BoolVariable() function instead."
- SCons.Warnings.warn(SCons.Warnings.DeprecatedOptionsWarning, msg)
- warned = True
- return SCons.Variables.BoolVariable(*args, **kw)
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Options/EnumOption.py b/Externals/scons-local/scons-local-2.0.1/SCons/Options/EnumOption.py
deleted file mode 100644
index 1357984ca7..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Options/EnumOption.py
+++ /dev/null
@@ -1,50 +0,0 @@
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Options/EnumOption.py 5134 2010/08/16 23:02:40 bdeegan"
-
-__doc__ = """Place-holder for the old SCons.Options module hierarchy
-
-This is for backwards compatibility. The new equivalent is the Variables/
-class hierarchy. These will have deprecation warnings added (some day),
-and will then be removed entirely (some day).
-"""
-
-import SCons.Variables
-import SCons.Warnings
-
-warned = False
-
-def EnumOption(*args, **kw):
- global warned
- if not warned:
- msg = "The EnumOption() function is deprecated; use the EnumVariable() function instead."
- SCons.Warnings.warn(SCons.Warnings.DeprecatedOptionsWarning, msg)
- warned = True
- return SCons.Variables.EnumVariable(*args, **kw)
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Options/ListOption.py b/Externals/scons-local/scons-local-2.0.1/SCons/Options/ListOption.py
deleted file mode 100644
index 1f34cd6dd1..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Options/ListOption.py
+++ /dev/null
@@ -1,50 +0,0 @@
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Options/ListOption.py 5134 2010/08/16 23:02:40 bdeegan"
-
-__doc__ = """Place-holder for the old SCons.Options module hierarchy
-
-This is for backwards compatibility. The new equivalent is the Variables/
-class hierarchy. These will have deprecation warnings added (some day),
-and will then be removed entirely (some day).
-"""
-
-import SCons.Variables
-import SCons.Warnings
-
-warned = False
-
-def ListOption(*args, **kw):
- global warned
- if not warned:
- msg = "The ListOption() function is deprecated; use the ListVariable() function instead."
- SCons.Warnings.warn(SCons.Warnings.DeprecatedOptionsWarning, msg)
- warned = True
- return SCons.Variables.ListVariable(*args, **kw)
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Options/PackageOption.py b/Externals/scons-local/scons-local-2.0.1/SCons/Options/PackageOption.py
deleted file mode 100644
index 1bb88b1d18..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Options/PackageOption.py
+++ /dev/null
@@ -1,50 +0,0 @@
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Options/PackageOption.py 5134 2010/08/16 23:02:40 bdeegan"
-
-__doc__ = """Place-holder for the old SCons.Options module hierarchy
-
-This is for backwards compatibility. The new equivalent is the Variables/
-class hierarchy. These will have deprecation warnings added (some day),
-and will then be removed entirely (some day).
-"""
-
-import SCons.Variables
-import SCons.Warnings
-
-warned = False
-
-def PackageOption(*args, **kw):
- global warned
- if not warned:
- msg = "The PackageOption() function is deprecated; use the PackageVariable() function instead."
- SCons.Warnings.warn(SCons.Warnings.DeprecatedOptionsWarning, msg)
- warned = True
- return SCons.Variables.PackageVariable(*args, **kw)
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Options/PathOption.py b/Externals/scons-local/scons-local-2.0.1/SCons/Options/PathOption.py
deleted file mode 100644
index 2e38de3e17..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Options/PathOption.py
+++ /dev/null
@@ -1,76 +0,0 @@
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Options/PathOption.py 5134 2010/08/16 23:02:40 bdeegan"
-
-__doc__ = """Place-holder for the old SCons.Options module hierarchy
-
-This is for backwards compatibility. The new equivalent is the Variables/
-class hierarchy. These will have deprecation warnings added (some day),
-and will then be removed entirely (some day).
-"""
-
-import SCons.Variables
-import SCons.Warnings
-
-warned = False
-
-class _PathOptionClass(object):
- def warn(self):
- global warned
- if not warned:
- msg = "The PathOption() function is deprecated; use the PathVariable() function instead."
- SCons.Warnings.warn(SCons.Warnings.DeprecatedOptionsWarning, msg)
- warned = True
-
- def __call__(self, *args, **kw):
- self.warn()
- return SCons.Variables.PathVariable(*args, **kw)
-
- def PathAccept(self, *args, **kw):
- self.warn()
- return SCons.Variables.PathVariable.PathAccept(*args, **kw)
-
- def PathIsDir(self, *args, **kw):
- self.warn()
- return SCons.Variables.PathVariable.PathIsDir(*args, **kw)
-
- def PathIsDirCreate(self, *args, **kw):
- self.warn()
- return SCons.Variables.PathVariable.PathIsDirCreate(*args, **kw)
-
- def PathIsFile(self, *args, **kw):
- self.warn()
- return SCons.Variables.PathVariable.PathIsFile(*args, **kw)
-
- def PathExists(self, *args, **kw):
- self.warn()
- return SCons.Variables.PathVariable.PathExists(*args, **kw)
-
-PathOption = _PathOptionClass()
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Options/__init__.py b/Externals/scons-local/scons-local-2.0.1/SCons/Options/__init__.py
deleted file mode 100644
index edb627324b..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Options/__init__.py
+++ /dev/null
@@ -1,67 +0,0 @@
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Options/__init__.py 5134 2010/08/16 23:02:40 bdeegan"
-
-__doc__ = """Place-holder for the old SCons.Options module hierarchy
-
-This is for backwards compatibility. The new equivalent is the Variables/
-class hierarchy. These will have deprecation warnings added (some day),
-and will then be removed entirely (some day).
-"""
-
-import SCons.Variables
-import SCons.Warnings
-
-from BoolOption import BoolOption # okay
-from EnumOption import EnumOption # okay
-from ListOption import ListOption # naja
-from PackageOption import PackageOption # naja
-from PathOption import PathOption # okay
-
-warned = False
-
-class Options(SCons.Variables.Variables):
- def __init__(self, *args, **kw):
- global warned
- if not warned:
- msg = "The Options class is deprecated; use the Variables class instead."
- SCons.Warnings.warn(SCons.Warnings.DeprecatedOptionsWarning, msg)
- warned = True
- SCons.Variables.Variables.__init__(self, *args, **kw)
-
- def AddOptions(self, *args, **kw):
- return SCons.Variables.Variables.AddVariables(self, *args, **kw)
-
- def UnknownOptions(self, *args, **kw):
- return SCons.Variables.Variables.UnknownVariables(self, *args, **kw)
-
- def FormatOptionHelpText(self, *args, **kw):
- return SCons.Variables.Variables.FormatVariableHelpText(self, *args,
- **kw)
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/PathList.py b/Externals/scons-local/scons-local-2.0.1/SCons/PathList.py
deleted file mode 100644
index 4b27193f9c..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/PathList.py
+++ /dev/null
@@ -1,231 +0,0 @@
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/PathList.py 5134 2010/08/16 23:02:40 bdeegan"
-
-__doc__ = """SCons.PathList
-
-A module for handling lists of directory paths (the sort of things
-that get set as CPPPATH, LIBPATH, etc.) with as much caching of data and
-efficiency as we can while still keeping the evaluation delayed so that we
-Do the Right Thing (almost) regardless of how the variable is specified.
-
-"""
-
-import os
-
-import SCons.Memoize
-import SCons.Node
-import SCons.Util
-
-#
-# Variables to specify the different types of entries in a PathList object:
-#
-
-TYPE_STRING_NO_SUBST = 0 # string with no '$'
-TYPE_STRING_SUBST = 1 # string containing '$'
-TYPE_OBJECT = 2 # other object
-
-def node_conv(obj):
- """
- This is the "string conversion" routine that we have our substitutions
- use to return Nodes, not strings. This relies on the fact that an
- EntryProxy object has a get() method that returns the underlying
- Node that it wraps, which is a bit of architectural dependence
- that we might need to break or modify in the future in response to
- additional requirements.
- """
- try:
- get = obj.get
- except AttributeError:
- if isinstance(obj, SCons.Node.Node) or SCons.Util.is_Sequence( obj ):
- result = obj
- else:
- result = str(obj)
- else:
- result = get()
- return result
-
-class _PathList(object):
- """
- An actual PathList object.
- """
- def __init__(self, pathlist):
- """
- Initializes a PathList object, canonicalizing the input and
- pre-processing it for quicker substitution later.
-
- The stored representation of the PathList is a list of tuples
- containing (type, value), where the "type" is one of the TYPE_*
- variables defined above. We distinguish between:
-
- strings that contain no '$' and therefore need no
- delayed-evaluation string substitution (we expect that there
- will be many of these and that we therefore get a pretty
- big win from avoiding string substitution)
-
- strings that contain '$' and therefore need substitution
- (the hard case is things like '${TARGET.dir}/include',
- which require re-evaluation for every target + source)
-
- other objects (which may be something like an EntryProxy
- that needs a method called to return a Node)
-
- Pre-identifying the type of each element in the PathList up-front
- and storing the type in the list of tuples is intended to reduce
- the amount of calculation when we actually do the substitution
- over and over for each target.
- """
- if SCons.Util.is_String(pathlist):
- pathlist = pathlist.split(os.pathsep)
- elif not SCons.Util.is_Sequence(pathlist):
- pathlist = [pathlist]
-
- pl = []
- for p in pathlist:
- try:
- index = p.find('$')
- except (AttributeError, TypeError):
- type = TYPE_OBJECT
- else:
- if index == -1:
- type = TYPE_STRING_NO_SUBST
- else:
- type = TYPE_STRING_SUBST
- pl.append((type, p))
-
- self.pathlist = tuple(pl)
-
- def __len__(self): return len(self.pathlist)
-
- def __getitem__(self, i): return self.pathlist[i]
-
- def subst_path(self, env, target, source):
- """
- Performs construction variable substitution on a pre-digested
- PathList for a specific target and source.
- """
- result = []
- for type, value in self.pathlist:
- if type == TYPE_STRING_SUBST:
- value = env.subst(value, target=target, source=source,
- conv=node_conv)
- if SCons.Util.is_Sequence(value):
- result.extend(value)
- continue
-
- elif type == TYPE_OBJECT:
- value = node_conv(value)
- if value:
- result.append(value)
- return tuple(result)
-
-
-class PathListCache(object):
- """
- A class to handle caching of PathList lookups.
-
- This class gets instantiated once and then deleted from the namespace,
- so it's used as a Singleton (although we don't enforce that in the
- usual Pythonic ways). We could have just made the cache a dictionary
- in the module namespace, but putting it in this class allows us to
- use the same Memoizer pattern that we use elsewhere to count cache
- hits and misses, which is very valuable.
-
- Lookup keys in the cache are computed by the _PathList_key() method.
- Cache lookup should be quick, so we don't spend cycles canonicalizing
- all forms of the same lookup key. For example, 'x:y' and ['x',
- 'y'] logically represent the same list, but we don't bother to
- split string representations and treat those two equivalently.
- (Note, however, that we do, treat lists and tuples the same.)
-
- The main type of duplication we're trying to catch will come from
- looking up the same path list from two different clones of the
- same construction environment. That is, given
-
- env2 = env1.Clone()
-
- both env1 and env2 will have the same CPPPATH value, and we can
- cheaply avoid re-parsing both values of CPPPATH by using the
- common value from this cache.
- """
- if SCons.Memoize.use_memoizer:
- __metaclass__ = SCons.Memoize.Memoized_Metaclass
-
- memoizer_counters = []
-
- def __init__(self):
- self._memo = {}
-
- def _PathList_key(self, pathlist):
- """
- Returns the key for memoization of PathLists.
-
- Note that we want this to be pretty quick, so we don't completely
- canonicalize all forms of the same list. For example,
- 'dir1:$ROOT/dir2' and ['$ROOT/dir1', 'dir'] may logically
- represent the same list if you're executing from $ROOT, but
- we're not going to bother splitting strings into path elements,
- or massaging strings into Nodes, to identify that equivalence.
- We just want to eliminate obvious redundancy from the normal
- case of re-using exactly the same cloned value for a path.
- """
- if SCons.Util.is_Sequence(pathlist):
- pathlist = tuple(SCons.Util.flatten(pathlist))
- return pathlist
-
- memoizer_counters.append(SCons.Memoize.CountDict('PathList', _PathList_key))
-
- def PathList(self, pathlist):
- """
- Returns the cached _PathList object for the specified pathlist,
- creating and caching a new object as necessary.
- """
- pathlist = self._PathList_key(pathlist)
- try:
- memo_dict = self._memo['PathList']
- except KeyError:
- memo_dict = {}
- self._memo['PathList'] = memo_dict
- else:
- try:
- return memo_dict[pathlist]
- except KeyError:
- pass
-
- result = _PathList(pathlist)
-
- memo_dict[pathlist] = result
-
- return result
-
-PathList = PathListCache().PathList
-
-
-del PathListCache
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Platform/__init__.py b/Externals/scons-local/scons-local-2.0.1/SCons/Platform/__init__.py
deleted file mode 100644
index 7621e40ab1..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Platform/__init__.py
+++ /dev/null
@@ -1,241 +0,0 @@
-"""SCons.Platform
-
-SCons platform selection.
-
-This looks for modules that define a callable object that can modify a
-construction environment as appropriate for a given platform.
-
-Note that we take a more simplistic view of "platform" than Python does.
-We're looking for a single string that determines a set of
-tool-independent variables with which to initialize a construction
-environment. Consequently, we'll examine both sys.platform and os.name
-(and anything else that might come in to play) in order to return some
-specification which is unique enough for our purposes.
-
-Note that because this subsysem just *selects* a callable that can
-modify a construction environment, it's possible for people to define
-their own "platform specification" in an arbitrary callable function.
-No one needs to use or tie in to this subsystem in order to roll
-their own platform definition.
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Platform/__init__.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import SCons.compat
-
-import imp
-import os
-import sys
-import tempfile
-
-import SCons.Errors
-import SCons.Subst
-import SCons.Tool
-
-def platform_default():
- """Return the platform string for our execution environment.
-
- The returned value should map to one of the SCons/Platform/*.py
- files. Since we're architecture independent, though, we don't
- care about the machine architecture.
- """
- osname = os.name
- if osname == 'java':
- osname = os._osType
- if osname == 'posix':
- if sys.platform == 'cygwin':
- return 'cygwin'
- elif sys.platform.find('irix') != -1:
- return 'irix'
- elif sys.platform.find('sunos') != -1:
- return 'sunos'
- elif sys.platform.find('hp-ux') != -1:
- return 'hpux'
- elif sys.platform.find('aix') != -1:
- return 'aix'
- elif sys.platform.find('darwin') != -1:
- return 'darwin'
- else:
- return 'posix'
- elif os.name == 'os2':
- return 'os2'
- else:
- return sys.platform
-
-def platform_module(name = platform_default()):
- """Return the imported module for the platform.
-
- This looks for a module name that matches the specified argument.
- If the name is unspecified, we fetch the appropriate default for
- our execution environment.
- """
- full_name = 'SCons.Platform.' + name
- if full_name not in sys.modules:
- if os.name == 'java':
- eval(full_name)
- else:
- try:
- file, path, desc = imp.find_module(name,
- sys.modules['SCons.Platform'].__path__)
- try:
- mod = imp.load_module(full_name, file, path, desc)
- finally:
- if file:
- file.close()
- except ImportError:
- try:
- import zipimport
- importer = zipimport.zipimporter( sys.modules['SCons.Platform'].__path__[0] )
- mod = importer.load_module(full_name)
- except ImportError:
- raise SCons.Errors.UserError("No platform named '%s'" % name)
- setattr(SCons.Platform, name, mod)
- return sys.modules[full_name]
-
-def DefaultToolList(platform, env):
- """Select a default tool list for the specified platform.
- """
- return SCons.Tool.tool_list(platform, env)
-
-class PlatformSpec(object):
- def __init__(self, name, generate):
- self.name = name
- self.generate = generate
-
- def __call__(self, *args, **kw):
- return self.generate(*args, **kw)
-
- def __str__(self):
- return self.name
-
-class TempFileMunge(object):
- """A callable class. You can set an Environment variable to this,
- then call it with a string argument, then it will perform temporary
- file substitution on it. This is used to circumvent the long command
- line limitation.
-
- Example usage:
- env["TEMPFILE"] = TempFileMunge
- env["LINKCOM"] = "${TEMPFILE('$LINK $TARGET $SOURCES')}"
-
- By default, the name of the temporary file used begins with a
- prefix of '@'. This may be configred for other tool chains by
- setting '$TEMPFILEPREFIX'.
-
- env["TEMPFILEPREFIX"] = '-@' # diab compiler
- env["TEMPFILEPREFIX"] = '-via' # arm tool chain
- """
- def __init__(self, cmd):
- self.cmd = cmd
-
- def __call__(self, target, source, env, for_signature):
- if for_signature:
- # If we're being called for signature calculation, it's
- # because we're being called by the string expansion in
- # Subst.py, which has the logic to strip any $( $) that
- # may be in the command line we squirreled away. So we
- # just return the raw command line and let the upper
- # string substitution layers do their thing.
- return self.cmd
-
- # Now we're actually being called because someone is actually
- # going to try to execute the command, so we have to do our
- # own expansion.
- cmd = env.subst_list(self.cmd, SCons.Subst.SUBST_CMD, target, source)[0]
- try:
- maxline = int(env.subst('$MAXLINELENGTH'))
- except ValueError:
- maxline = 2048
-
- length = 0
- for c in cmd:
- length += len(c)
- if length <= maxline:
- return self.cmd
-
- # We do a normpath because mktemp() has what appears to be
- # a bug in Windows that will use a forward slash as a path
- # delimiter. Windows's link mistakes that for a command line
- # switch and barfs.
- #
- # We use the .lnk suffix for the benefit of the Phar Lap
- # linkloc linker, which likes to append an .lnk suffix if
- # none is given.
- (fd, tmp) = tempfile.mkstemp('.lnk', text=True)
- native_tmp = SCons.Util.get_native_path(os.path.normpath(tmp))
-
- if env['SHELL'] and env['SHELL'] == 'sh':
- # The sh shell will try to escape the backslashes in the
- # path, so unescape them.
- native_tmp = native_tmp.replace('\\', r'\\\\')
- # In Cygwin, we want to use rm to delete the temporary
- # file, because del does not exist in the sh shell.
- rm = env.Detect('rm') or 'del'
- else:
- # Don't use 'rm' if the shell is not sh, because rm won't
- # work with the Windows shells (cmd.exe or command.com) or
- # Windows path names.
- rm = 'del'
-
- prefix = env.subst('$TEMPFILEPREFIX')
- if not prefix:
- prefix = '@'
-
- args = list(map(SCons.Subst.quote_spaces, cmd[1:]))
- os.write(fd, " ".join(args) + "\n")
- os.close(fd)
- # XXX Using the SCons.Action.print_actions value directly
- # like this is bogus, but expedient. This class should
- # really be rewritten as an Action that defines the
- # __call__() and strfunction() methods and lets the
- # normal action-execution logic handle whether or not to
- # print/execute the action. The problem, though, is all
- # of that is decided before we execute this method as
- # part of expanding the $TEMPFILE construction variable.
- # Consequently, refactoring this will have to wait until
- # we get more flexible with allowing Actions to exist
- # independently and get strung together arbitrarily like
- # Ant tasks. In the meantime, it's going to be more
- # user-friendly to not let obsession with architectural
- # purity get in the way of just being helpful, so we'll
- # reach into SCons.Action directly.
- if SCons.Action.print_actions:
- print("Using tempfile "+native_tmp+" for command line:\n"+
- str(cmd[0]) + " " + " ".join(args))
- return [ cmd[0], prefix + native_tmp + '\n' + rm, native_tmp ]
-
-def Platform(name = platform_default()):
- """Select a canned Platform specification.
- """
- module = platform_module(name)
- spec = PlatformSpec(name, module.generate)
- return spec
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Platform/aix.py b/Externals/scons-local/scons-local-2.0.1/SCons/Platform/aix.py
deleted file mode 100644
index 821c9da90d..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Platform/aix.py
+++ /dev/null
@@ -1,69 +0,0 @@
-"""engine.SCons.Platform.aix
-
-Platform-specific initialization for IBM AIX systems.
-
-There normally shouldn't be any need to import this module directly. It
-will usually be imported through the generic SCons.Platform.Platform()
-selection method.
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Platform/aix.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import os
-
-import posix
-
-def get_xlc(env, xlc=None, xlc_r=None, packages=[]):
- # Use the AIX package installer tool lslpp to figure out where a
- # given xl* compiler is installed and what version it is.
- xlcPath = None
- xlcVersion = None
-
- if xlc is None:
- xlc = env.get('CC', 'xlc')
- if xlc_r is None:
- xlc_r = xlc + '_r'
- for package in packages:
- cmd = "lslpp -fc " + package + " 2>/dev/null | egrep '" + xlc + "([^-_a-zA-Z0-9].*)?$'"
- line = os.popen(cmd).readline()
- if line:
- v, p = line.split(':')[1:3]
- xlcVersion = v.split()[1]
- xlcPath = p.split()[0]
- xlcPath = xlcPath[:xlcPath.rindex('/')]
- break
- return (xlcPath, xlc, xlc_r, xlcVersion)
-
-def generate(env):
- posix.generate(env)
- #Based on AIX 5.2: ARG_MAX=24576 - 3000 for environment expansion
- env['MAXLINELENGTH'] = 21576
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Platform/cygwin.py b/Externals/scons-local/scons-local-2.0.1/SCons/Platform/cygwin.py
deleted file mode 100644
index 8370ea61a6..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Platform/cygwin.py
+++ /dev/null
@@ -1,55 +0,0 @@
-"""SCons.Platform.cygwin
-
-Platform-specific initialization for Cygwin systems.
-
-There normally shouldn't be any need to import this module directly. It
-will usually be imported through the generic SCons.Platform.Platform()
-selection method.
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Platform/cygwin.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import posix
-from SCons.Platform import TempFileMunge
-
-def generate(env):
- posix.generate(env)
-
- env['PROGPREFIX'] = ''
- env['PROGSUFFIX'] = '.exe'
- env['SHLIBPREFIX'] = ''
- env['SHLIBSUFFIX'] = '.dll'
- env['LIBPREFIXES'] = [ '$LIBPREFIX', '$SHLIBPREFIX' ]
- env['LIBSUFFIXES'] = [ '$LIBSUFFIX', '$SHLIBSUFFIX' ]
- env['TEMPFILE'] = TempFileMunge
- env['TEMPFILEPREFIX'] = '@'
- env['MAXLINELENGTH'] = 2048
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Platform/darwin.py b/Externals/scons-local/scons-local-2.0.1/SCons/Platform/darwin.py
deleted file mode 100644
index 3a9c9eb46c..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Platform/darwin.py
+++ /dev/null
@@ -1,46 +0,0 @@
-"""engine.SCons.Platform.darwin
-
-Platform-specific initialization for Mac OS X systems.
-
-There normally shouldn't be any need to import this module directly. It
-will usually be imported through the generic SCons.Platform.Platform()
-selection method.
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Platform/darwin.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import posix
-
-def generate(env):
- posix.generate(env)
- env['SHLIBSUFFIX'] = '.dylib'
- env['ENV']['PATH'] = env['ENV']['PATH'] + ':/sw/bin'
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Platform/hpux.py b/Externals/scons-local/scons-local-2.0.1/SCons/Platform/hpux.py
deleted file mode 100644
index 77d6db3928..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Platform/hpux.py
+++ /dev/null
@@ -1,46 +0,0 @@
-"""engine.SCons.Platform.hpux
-
-Platform-specific initialization for HP-UX systems.
-
-There normally shouldn't be any need to import this module directly. It
-will usually be imported through the generic SCons.Platform.Platform()
-selection method.
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Platform/hpux.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import posix
-
-def generate(env):
- posix.generate(env)
- #Based on HP-UX11i: ARG_MAX=2048000 - 3000 for environment expansion
- env['MAXLINELENGTH'] = 2045000
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Platform/irix.py b/Externals/scons-local/scons-local-2.0.1/SCons/Platform/irix.py
deleted file mode 100644
index ff0c323cf2..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Platform/irix.py
+++ /dev/null
@@ -1,44 +0,0 @@
-"""SCons.Platform.irix
-
-Platform-specific initialization for SGI IRIX systems.
-
-There normally shouldn't be any need to import this module directly. It
-will usually be imported through the generic SCons.Platform.Platform()
-selection method.
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Platform/irix.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import posix
-
-def generate(env):
- posix.generate(env)
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Platform/os2.py b/Externals/scons-local/scons-local-2.0.1/SCons/Platform/os2.py
deleted file mode 100644
index cdb4082b6b..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Platform/os2.py
+++ /dev/null
@@ -1,58 +0,0 @@
-"""SCons.Platform.os2
-
-Platform-specific initialization for OS/2 systems.
-
-There normally shouldn't be any need to import this module directly. It
-will usually be imported through the generic SCons.Platform.Platform()
-selection method.
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Platform/os2.py 5134 2010/08/16 23:02:40 bdeegan"
-import win32
-
-def generate(env):
- if 'ENV' not in env:
- env['ENV'] = {}
- env['OBJPREFIX'] = ''
- env['OBJSUFFIX'] = '.obj'
- env['SHOBJPREFIX'] = '$OBJPREFIX'
- env['SHOBJSUFFIX'] = '$OBJSUFFIX'
- env['PROGPREFIX'] = ''
- env['PROGSUFFIX'] = '.exe'
- env['LIBPREFIX'] = ''
- env['LIBSUFFIX'] = '.lib'
- env['SHLIBPREFIX'] = ''
- env['SHLIBSUFFIX'] = '.dll'
- env['LIBPREFIXES'] = '$LIBPREFIX'
- env['LIBSUFFIXES'] = [ '$LIBSUFFIX', '$SHLIBSUFFIX' ]
- env['HOST_OS'] = 'os2'
- env['HOST_ARCH'] = win32.get_architecture().arch
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Platform/posix.py b/Externals/scons-local/scons-local-2.0.1/SCons/Platform/posix.py
deleted file mode 100644
index 87de9dfc39..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Platform/posix.py
+++ /dev/null
@@ -1,263 +0,0 @@
-"""SCons.Platform.posix
-
-Platform-specific initialization for POSIX (Linux, UNIX, etc.) systems.
-
-There normally shouldn't be any need to import this module directly. It
-will usually be imported through the generic SCons.Platform.Platform()
-selection method.
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Platform/posix.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import errno
-import os
-import os.path
-import subprocess
-import sys
-import select
-
-import SCons.Util
-from SCons.Platform import TempFileMunge
-
-exitvalmap = {
- 2 : 127,
- 13 : 126,
-}
-
-def escape(arg):
- "escape shell special characters"
- slash = '\\'
- special = '"$()'
-
- arg = arg.replace(slash, slash+slash)
- for c in special:
- arg = arg.replace(c, slash+c)
-
- return '"' + arg + '"'
-
-def exec_system(l, env):
- stat = os.system(' '.join(l))
- if stat & 0xff:
- return stat | 0x80
- return stat >> 8
-
-def exec_spawnvpe(l, env):
- stat = os.spawnvpe(os.P_WAIT, l[0], l, env)
- # os.spawnvpe() returns the actual exit code, not the encoding
- # returned by os.waitpid() or os.system().
- return stat
-
-def exec_fork(l, env):
- pid = os.fork()
- if not pid:
- # Child process.
- exitval = 127
- try:
- os.execvpe(l[0], l, env)
- except OSError, e:
- exitval = exitvalmap.get(e[0], e[0])
- sys.stderr.write("scons: %s: %s\n" % (l[0], e[1]))
- os._exit(exitval)
- else:
- # Parent process.
- pid, stat = os.waitpid(pid, 0)
- if stat & 0xff:
- return stat | 0x80
- return stat >> 8
-
-def _get_env_command(sh, escape, cmd, args, env):
- s = ' '.join(args)
- if env:
- l = ['env', '-'] + \
- [escape(t[0])+'='+escape(t[1]) for t in env.items()] + \
- [sh, '-c', escape(s)]
- s = ' '.join(l)
- return s
-
-def env_spawn(sh, escape, cmd, args, env):
- return exec_system([_get_env_command( sh, escape, cmd, args, env)], env)
-
-def spawnvpe_spawn(sh, escape, cmd, args, env):
- return exec_spawnvpe([sh, '-c', ' '.join(args)], env)
-
-def fork_spawn(sh, escape, cmd, args, env):
- return exec_fork([sh, '-c', ' '.join(args)], env)
-
-def process_cmd_output(cmd_stdout, cmd_stderr, stdout, stderr):
- stdout_eof = stderr_eof = 0
- while not (stdout_eof and stderr_eof):
- try:
- (i,o,e) = select.select([cmd_stdout, cmd_stderr], [], [])
- if cmd_stdout in i:
- str = cmd_stdout.read()
- if len(str) == 0:
- stdout_eof = 1
- elif stdout is not None:
- stdout.write(str)
- if cmd_stderr in i:
- str = cmd_stderr.read()
- if len(str) == 0:
- #sys.__stderr__.write( "stderr_eof=1\n" )
- stderr_eof = 1
- else:
- #sys.__stderr__.write( "str(stderr) = %s\n" % str )
- stderr.write(str)
- except select.error, (_errno, _strerror):
- if _errno != errno.EINTR:
- raise
-
-def exec_popen3(l, env, stdout, stderr):
- proc = subprocess.Popen(' '.join(l),
- stdout=stdout,
- stderr=stderr,
- shell=True)
- stat = proc.wait()
- if stat & 0xff:
- return stat | 0x80
- return stat >> 8
-
-def exec_piped_fork(l, env, stdout, stderr):
- # spawn using fork / exec and providing a pipe for the command's
- # stdout / stderr stream
- if stdout != stderr:
- (rFdOut, wFdOut) = os.pipe()
- (rFdErr, wFdErr) = os.pipe()
- else:
- (rFdOut, wFdOut) = os.pipe()
- rFdErr = rFdOut
- wFdErr = wFdOut
- # do the fork
- pid = os.fork()
- if not pid:
- # Child process
- os.close( rFdOut )
- if rFdOut != rFdErr:
- os.close( rFdErr )
- os.dup2( wFdOut, 1 ) # is there some symbolic way to do that ?
- os.dup2( wFdErr, 2 )
- os.close( wFdOut )
- if stdout != stderr:
- os.close( wFdErr )
- exitval = 127
- try:
- os.execvpe(l[0], l, env)
- except OSError, e:
- exitval = exitvalmap.get(e[0], e[0])
- stderr.write("scons: %s: %s\n" % (l[0], e[1]))
- os._exit(exitval)
- else:
- # Parent process
- pid, stat = os.waitpid(pid, 0)
- os.close( wFdOut )
- if stdout != stderr:
- os.close( wFdErr )
- childOut = os.fdopen( rFdOut )
- if stdout != stderr:
- childErr = os.fdopen( rFdErr )
- else:
- childErr = childOut
- process_cmd_output(childOut, childErr, stdout, stderr)
- os.close( rFdOut )
- if stdout != stderr:
- os.close( rFdErr )
- if stat & 0xff:
- return stat | 0x80
- return stat >> 8
-
-def piped_env_spawn(sh, escape, cmd, args, env, stdout, stderr):
- # spawn using Popen3 combined with the env command
- # the command name and the command's stdout is written to stdout
- # the command's stderr is written to stderr
- return exec_popen3([_get_env_command(sh, escape, cmd, args, env)],
- env, stdout, stderr)
-
-def piped_fork_spawn(sh, escape, cmd, args, env, stdout, stderr):
- # spawn using fork / exec and providing a pipe for the command's
- # stdout / stderr stream
- return exec_piped_fork([sh, '-c', ' '.join(args)],
- env, stdout, stderr)
-
-
-
-def generate(env):
- # If os.spawnvpe() exists, we use it to spawn commands. Otherwise
- # if the env utility exists, we use os.system() to spawn commands,
- # finally we fall back on os.fork()/os.exec().
- #
- # os.spawnvpe() is prefered because it is the most efficient. But
- # for Python versions without it, os.system() is prefered because it
- # is claimed that it works better with threads (i.e. -j) and is more
- # efficient than forking Python.
- #
- # NB: Other people on the scons-users mailing list have claimed that
- # os.fork()/os.exec() works better than os.system(). There may just
- # not be a default that works best for all users.
-
- if 'spawnvpe' in os.__dict__:
- spawn = spawnvpe_spawn
- elif env.Detect('env'):
- spawn = env_spawn
- else:
- spawn = fork_spawn
-
- if env.Detect('env'):
- pspawn = piped_env_spawn
- else:
- pspawn = piped_fork_spawn
-
- if 'ENV' not in env:
- env['ENV'] = {}
- env['ENV']['PATH'] = '/usr/local/bin:/opt/bin:/bin:/usr/bin'
- env['OBJPREFIX'] = ''
- env['OBJSUFFIX'] = '.o'
- env['SHOBJPREFIX'] = '$OBJPREFIX'
- env['SHOBJSUFFIX'] = '$OBJSUFFIX'
- env['PROGPREFIX'] = ''
- env['PROGSUFFIX'] = ''
- env['LIBPREFIX'] = 'lib'
- env['LIBSUFFIX'] = '.a'
- env['SHLIBPREFIX'] = '$LIBPREFIX'
- env['SHLIBSUFFIX'] = '.so'
- env['LIBPREFIXES'] = [ '$LIBPREFIX' ]
- env['LIBSUFFIXES'] = [ '$LIBSUFFIX', '$SHLIBSUFFIX' ]
- env['PSPAWN'] = pspawn
- env['SPAWN'] = spawn
- env['SHELL'] = 'sh'
- env['ESCAPE'] = escape
- env['TEMPFILE'] = TempFileMunge
- env['TEMPFILEPREFIX'] = '@'
- #Based on LINUX: ARG_MAX=ARG_MAX=131072 - 3000 for environment expansion
- #Note: specific platforms might rise or lower this value
- env['MAXLINELENGTH'] = 128072
-
- # This platform supports RPATH specifications.
- env['__RPATH'] = '$_RPATH'
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Platform/sunos.py b/Externals/scons-local/scons-local-2.0.1/SCons/Platform/sunos.py
deleted file mode 100644
index 15011071d2..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Platform/sunos.py
+++ /dev/null
@@ -1,50 +0,0 @@
-"""engine.SCons.Platform.sunos
-
-Platform-specific initialization for Sun systems.
-
-There normally shouldn't be any need to import this module directly. It
-will usually be imported through the generic SCons.Platform.Platform()
-selection method.
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Platform/sunos.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import posix
-
-def generate(env):
- posix.generate(env)
- # Based on sunSparc 8:32bit
- # ARG_MAX=1048320 - 3000 for environment expansion
- env['MAXLINELENGTH'] = 1045320
- env['PKGINFO'] = 'pkginfo'
- env['PKGCHK'] = '/usr/sbin/pkgchk'
- env['ENV']['PATH'] = env['ENV']['PATH'] + ':/opt/SUNWspro/bin:/usr/ccs/bin'
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Platform/win32.py b/Externals/scons-local/scons-local-2.0.1/SCons/Platform/win32.py
deleted file mode 100644
index 7a232aef8c..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Platform/win32.py
+++ /dev/null
@@ -1,385 +0,0 @@
-"""SCons.Platform.win32
-
-Platform-specific initialization for Win32 systems.
-
-There normally shouldn't be any need to import this module directly. It
-will usually be imported through the generic SCons.Platform.Platform()
-selection method.
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Platform/win32.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import os
-import os.path
-import sys
-import tempfile
-
-from SCons.Platform.posix import exitvalmap
-from SCons.Platform import TempFileMunge
-import SCons.Util
-
-try:
- import msvcrt
- import win32api
- import win32con
-
- msvcrt.get_osfhandle
- win32api.SetHandleInformation
- win32con.HANDLE_FLAG_INHERIT
-except ImportError:
- parallel_msg = \
- "you do not seem to have the pywin32 extensions installed;\n" + \
- "\tparallel (-j) builds may not work reliably with open Python files."
-except AttributeError:
- parallel_msg = \
- "your pywin32 extensions do not support file handle operations;\n" + \
- "\tparallel (-j) builds may not work reliably with open Python files."
-else:
- parallel_msg = None
-
- import builtins
-
- _builtin_file = builtins.file
- _builtin_open = builtins.open
-
- def _scons_file(*args, **kw):
- fp = _builtin_file(*args, **kw)
- win32api.SetHandleInformation(msvcrt.get_osfhandle(fp.fileno()),
- win32con.HANDLE_FLAG_INHERIT,
- 0)
- return fp
-
- def _scons_open(*args, **kw):
- fp = _builtin_open(*args, **kw)
- win32api.SetHandleInformation(msvcrt.get_osfhandle(fp.fileno()),
- win32con.HANDLE_FLAG_INHERIT,
- 0)
- return fp
-
- builtins.file = _scons_file
- builtins.open = _scons_open
-
-
-
-# The upshot of all this is that, if you are using Python 1.5.2,
-# you had better have cmd or command.com in your PATH when you run
-# scons.
-
-def piped_spawn(sh, escape, cmd, args, env, stdout, stderr):
- # There is no direct way to do that in python. What we do
- # here should work for most cases:
- # In case stdout (stderr) is not redirected to a file,
- # we redirect it into a temporary file tmpFileStdout
- # (tmpFileStderr) and copy the contents of this file
- # to stdout (stderr) given in the argument
- if not sh:
- sys.stderr.write("scons: Could not find command interpreter, is it in your PATH?\n")
- return 127
- else:
- # one temporary file for stdout and stderr
- tmpFileStdout = os.path.normpath(tempfile.mktemp())
- tmpFileStderr = os.path.normpath(tempfile.mktemp())
-
- # check if output is redirected
- stdoutRedirected = 0
- stderrRedirected = 0
- for arg in args:
- # are there more possibilities to redirect stdout ?
- if (arg.find( ">", 0, 1 ) != -1 or
- arg.find( "1>", 0, 2 ) != -1):
- stdoutRedirected = 1
- # are there more possibilities to redirect stderr ?
- if arg.find( "2>", 0, 2 ) != -1:
- stderrRedirected = 1
-
- # redirect output of non-redirected streams to our tempfiles
- if stdoutRedirected == 0:
- args.append(">" + str(tmpFileStdout))
- if stderrRedirected == 0:
- args.append("2>" + str(tmpFileStderr))
-
- # actually do the spawn
- try:
- args = [sh, '/C', escape(' '.join(args)) ]
- ret = os.spawnve(os.P_WAIT, sh, args, env)
- except OSError, e:
- # catch any error
- try:
- ret = exitvalmap[e[0]]
- except KeyError:
- sys.stderr.write("scons: unknown OSError exception code %d - %s: %s\n" % (e[0], cmd, e[1]))
- if stderr is not None:
- stderr.write("scons: %s: %s\n" % (cmd, e[1]))
- # copy child output from tempfiles to our streams
- # and do clean up stuff
- if stdout is not None and stdoutRedirected == 0:
- try:
- stdout.write(open( tmpFileStdout, "r" ).read())
- os.remove( tmpFileStdout )
- except (IOError, OSError):
- pass
-
- if stderr is not None and stderrRedirected == 0:
- try:
- stderr.write(open( tmpFileStderr, "r" ).read())
- os.remove( tmpFileStderr )
- except (IOError, OSError):
- pass
- return ret
-
-def exec_spawn(l, env):
- try:
- result = os.spawnve(os.P_WAIT, l[0], l, env)
- except OSError, e:
- try:
- result = exitvalmap[e[0]]
- sys.stderr.write("scons: %s: %s\n" % (l[0], e[1]))
- except KeyError:
- result = 127
- if len(l) > 2:
- if len(l[2]) < 1000:
- command = ' '.join(l[0:3])
- else:
- command = l[0]
- else:
- command = l[0]
- sys.stderr.write("scons: unknown OSError exception code %d - '%s': %s\n" % (e[0], command, e[1]))
- return result
-
-def spawn(sh, escape, cmd, args, env):
- if not sh:
- sys.stderr.write("scons: Could not find command interpreter, is it in your PATH?\n")
- return 127
- return exec_spawn([sh, '/C', escape(' '.join(args))], env)
-
-# Windows does not allow special characters in file names anyway, so no
-# need for a complex escape function, we will just quote the arg, except
-# that "cmd /c" requires that if an argument ends with a backslash it
-# needs to be escaped so as not to interfere with closing double quote
-# that we add.
-def escape(x):
- if x[-1] == '\\':
- x = x + '\\'
- return '"' + x + '"'
-
-# Get the windows system directory name
-_system_root = None
-
-def get_system_root():
- global _system_root
- if _system_root is not None:
- return _system_root
-
- # A resonable default if we can't read the registry
- val = os.environ.get('SystemRoot', "C:\\WINDOWS")
-
- if SCons.Util.can_read_reg:
- try:
- # Look for Windows NT system root
- k=SCons.Util.RegOpenKeyEx(SCons.Util.hkey_mod.HKEY_LOCAL_MACHINE,
- 'Software\\Microsoft\\Windows NT\\CurrentVersion')
- val, tok = SCons.Util.RegQueryValueEx(k, 'SystemRoot')
- except SCons.Util.RegError:
- try:
- # Okay, try the Windows 9x system root
- k=SCons.Util.RegOpenKeyEx(SCons.Util.hkey_mod.HKEY_LOCAL_MACHINE,
- 'Software\\Microsoft\\Windows\\CurrentVersion')
- val, tok = SCons.Util.RegQueryValueEx(k, 'SystemRoot')
- except KeyboardInterrupt:
- raise
- except:
- pass
- _system_root = val
- return val
-
-# Get the location of the program files directory
-def get_program_files_dir():
- # Now see if we can look in the registry...
- val = ''
- if SCons.Util.can_read_reg:
- try:
- # Look for Windows Program Files directory
- k=SCons.Util.RegOpenKeyEx(SCons.Util.hkey_mod.HKEY_LOCAL_MACHINE,
- 'Software\\Microsoft\\Windows\\CurrentVersion')
- val, tok = SCons.Util.RegQueryValueEx(k, 'ProgramFilesDir')
- except SCons.Util.RegError:
- val = ''
- pass
-
- if val == '':
- # A reasonable default if we can't read the registry
- # (Actually, it's pretty reasonable even if we can :-)
- val = os.path.join(os.path.dirname(get_system_root()),"Program Files")
-
- return val
-
-
-
-# Determine which windows CPU were running on.
-class ArchDefinition(object):
- """
- A class for defining architecture-specific settings and logic.
- """
- def __init__(self, arch, synonyms=[]):
- self.arch = arch
- self.synonyms = synonyms
-
-SupportedArchitectureList = [
- ArchDefinition(
- 'x86',
- ['i386', 'i486', 'i586', 'i686'],
- ),
-
- ArchDefinition(
- 'x86_64',
- ['AMD64', 'amd64', 'em64t', 'EM64T', 'x86_64'],
- ),
-
- ArchDefinition(
- 'ia64',
- ['IA64'],
- ),
-]
-
-SupportedArchitectureMap = {}
-for a in SupportedArchitectureList:
- SupportedArchitectureMap[a.arch] = a
- for s in a.synonyms:
- SupportedArchitectureMap[s] = a
-
-def get_architecture(arch=None):
- """Returns the definition for the specified architecture string.
-
- If no string is specified, the system default is returned (as defined
- by the PROCESSOR_ARCHITEW6432 or PROCESSOR_ARCHITECTURE environment
- variables).
- """
- if arch is None:
- arch = os.environ.get('PROCESSOR_ARCHITEW6432')
- if not arch:
- arch = os.environ.get('PROCESSOR_ARCHITECTURE')
- return SupportedArchitectureMap.get(arch, ArchDefinition('', ['']))
-
-def generate(env):
- # Attempt to find cmd.exe (for WinNT/2k/XP) or
- # command.com for Win9x
- cmd_interp = ''
- # First see if we can look in the registry...
- if SCons.Util.can_read_reg:
- try:
- # Look for Windows NT system root
- k=SCons.Util.RegOpenKeyEx(SCons.Util.hkey_mod.HKEY_LOCAL_MACHINE,
- 'Software\\Microsoft\\Windows NT\\CurrentVersion')
- val, tok = SCons.Util.RegQueryValueEx(k, 'SystemRoot')
- cmd_interp = os.path.join(val, 'System32\\cmd.exe')
- except SCons.Util.RegError:
- try:
- # Okay, try the Windows 9x system root
- k=SCons.Util.RegOpenKeyEx(SCons.Util.hkey_mod.HKEY_LOCAL_MACHINE,
- 'Software\\Microsoft\\Windows\\CurrentVersion')
- val, tok = SCons.Util.RegQueryValueEx(k, 'SystemRoot')
- cmd_interp = os.path.join(val, 'command.com')
- except KeyboardInterrupt:
- raise
- except:
- pass
-
- # For the special case of not having access to the registry, we
- # use a temporary path and pathext to attempt to find the command
- # interpreter. If we fail, we try to find the interpreter through
- # the env's PATH. The problem with that is that it might not
- # contain an ENV and a PATH.
- if not cmd_interp:
- systemroot = get_system_root()
- tmp_path = systemroot + os.pathsep + \
- os.path.join(systemroot,'System32')
- tmp_pathext = '.com;.exe;.bat;.cmd'
- if 'PATHEXT' in os.environ:
- tmp_pathext = os.environ['PATHEXT']
- cmd_interp = SCons.Util.WhereIs('cmd', tmp_path, tmp_pathext)
- if not cmd_interp:
- cmd_interp = SCons.Util.WhereIs('command', tmp_path, tmp_pathext)
-
- if not cmd_interp:
- cmd_interp = env.Detect('cmd')
- if not cmd_interp:
- cmd_interp = env.Detect('command')
-
-
- if 'ENV' not in env:
- env['ENV'] = {}
-
- # Import things from the external environment to the construction
- # environment's ENV. This is a potential slippery slope, because we
- # *don't* want to make builds dependent on the user's environment by
- # default. We're doing this for SystemRoot, though, because it's
- # needed for anything that uses sockets, and seldom changes, and
- # for SystemDrive because it's related.
- #
- # Weigh the impact carefully before adding other variables to this list.
- import_env = [ 'SystemDrive', 'SystemRoot', 'TEMP', 'TMP' ]
- for var in import_env:
- v = os.environ.get(var)
- if v:
- env['ENV'][var] = v
-
- if 'COMSPEC' not in env['ENV']:
- v = os.environ.get("COMSPEC")
- if v:
- env['ENV']['COMSPEC'] = v
-
- env.AppendENVPath('PATH', get_system_root() + '\System32')
-
- env['ENV']['PATHEXT'] = '.COM;.EXE;.BAT;.CMD'
- env['OBJPREFIX'] = ''
- env['OBJSUFFIX'] = '.obj'
- env['SHOBJPREFIX'] = '$OBJPREFIX'
- env['SHOBJSUFFIX'] = '$OBJSUFFIX'
- env['PROGPREFIX'] = ''
- env['PROGSUFFIX'] = '.exe'
- env['LIBPREFIX'] = ''
- env['LIBSUFFIX'] = '.lib'
- env['SHLIBPREFIX'] = ''
- env['SHLIBSUFFIX'] = '.dll'
- env['LIBPREFIXES'] = [ '$LIBPREFIX' ]
- env['LIBSUFFIXES'] = [ '$LIBSUFFIX' ]
- env['PSPAWN'] = piped_spawn
- env['SPAWN'] = spawn
- env['SHELL'] = cmd_interp
- env['TEMPFILE'] = TempFileMunge
- env['TEMPFILEPREFIX'] = '@'
- env['MAXLINELENGTH'] = 2048
- env['ESCAPE'] = escape
-
- env['HOST_OS'] = 'win32'
- env['HOST_ARCH'] = get_architecture().arch
-
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/SConf.py b/Externals/scons-local/scons-local-2.0.1/SCons/SConf.py
deleted file mode 100644
index 7b4343678e..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/SConf.py
+++ /dev/null
@@ -1,1030 +0,0 @@
-"""SCons.SConf
-
-Autoconf-like configuration support.
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/SConf.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import SCons.compat
-
-import io
-import os
-import re
-import sys
-import traceback
-
-import SCons.Action
-import SCons.Builder
-import SCons.Errors
-import SCons.Job
-import SCons.Node.FS
-import SCons.Taskmaster
-import SCons.Util
-import SCons.Warnings
-import SCons.Conftest
-
-from SCons.Debug import Trace
-
-# Turn off the Conftest error logging
-SCons.Conftest.LogInputFiles = 0
-SCons.Conftest.LogErrorMessages = 0
-
-# Set
-build_type = None
-build_types = ['clean', 'help']
-
-def SetBuildType(type):
- global build_type
- build_type = type
-
-# to be set, if we are in dry-run mode
-dryrun = 0
-
-AUTO=0 # use SCons dependency scanning for up-to-date checks
-FORCE=1 # force all tests to be rebuilt
-CACHE=2 # force all tests to be taken from cache (raise an error, if necessary)
-cache_mode = AUTO
-
-def SetCacheMode(mode):
- """Set the Configure cache mode. mode must be one of "auto", "force",
- or "cache"."""
- global cache_mode
- if mode == "auto":
- cache_mode = AUTO
- elif mode == "force":
- cache_mode = FORCE
- elif mode == "cache":
- cache_mode = CACHE
- else:
- raise ValueError("SCons.SConf.SetCacheMode: Unknown mode " + mode)
-
-progress_display = SCons.Util.display # will be overwritten by SCons.Script
-def SetProgressDisplay(display):
- """Set the progress display to use (called from SCons.Script)"""
- global progress_display
- progress_display = display
-
-SConfFS = None
-
-_ac_build_counter = 0 # incremented, whenever TryBuild is called
-_ac_config_logs = {} # all config.log files created in this build
-_ac_config_hs = {} # all config.h files created in this build
-sconf_global = None # current sconf object
-
-def _createConfigH(target, source, env):
- t = open(str(target[0]), "w")
- defname = re.sub('[^A-Za-z0-9_]', '_', str(target[0]).upper())
- t.write("""#ifndef %(DEFNAME)s_SEEN
-#define %(DEFNAME)s_SEEN
-
-""" % {'DEFNAME' : defname})
- t.write(source[0].get_contents())
- t.write("""
-#endif /* %(DEFNAME)s_SEEN */
-""" % {'DEFNAME' : defname})
- t.close()
-
-def _stringConfigH(target, source, env):
- return "scons: Configure: creating " + str(target[0])
-
-def CreateConfigHBuilder(env):
- """Called just before the building targets phase begins."""
- if len(_ac_config_hs) == 0:
- return
- action = SCons.Action.Action(_createConfigH,
- _stringConfigH)
- sconfigHBld = SCons.Builder.Builder(action=action)
- env.Append( BUILDERS={'SConfigHBuilder':sconfigHBld} )
- for k in _ac_config_hs.keys():
- env.SConfigHBuilder(k, env.Value(_ac_config_hs[k]))
-
-class SConfWarning(SCons.Warnings.Warning):
- pass
-SCons.Warnings.enableWarningClass(SConfWarning)
-
-# some error definitions
-class SConfError(SCons.Errors.UserError):
- def __init__(self,msg):
- SCons.Errors.UserError.__init__(self,msg)
-
-class ConfigureDryRunError(SConfError):
- """Raised when a file or directory needs to be updated during a Configure
- process, but the user requested a dry-run"""
- def __init__(self,target):
- if not isinstance(target, SCons.Node.FS.File):
- msg = 'Cannot create configure directory "%s" within a dry-run.' % str(target)
- else:
- msg = 'Cannot update configure test "%s" within a dry-run.' % str(target)
- SConfError.__init__(self,msg)
-
-class ConfigureCacheError(SConfError):
- """Raised when a use explicitely requested the cache feature, but the test
- is run the first time."""
- def __init__(self,target):
- SConfError.__init__(self, '"%s" is not yet built and cache is forced.' % str(target))
-
-# define actions for building text files
-def _createSource( target, source, env ):
- fd = open(str(target[0]), "w")
- fd.write(source[0].get_contents())
- fd.close()
-def _stringSource( target, source, env ):
- return (str(target[0]) + ' <-\n |' +
- source[0].get_contents().replace( '\n', "\n |" ) )
-
-class SConfBuildInfo(SCons.Node.FS.FileBuildInfo):
- """
- Special build info for targets of configure tests. Additional members
- are result (did the builder succeed last time?) and string, which
- contains messages of the original build phase.
- """
- result = None # -> 0/None -> no error, != 0 error
- string = None # the stdout / stderr output when building the target
-
- def set_build_result(self, result, string):
- self.result = result
- self.string = string
-
-
-class Streamer(object):
- """
- 'Sniffer' for a file-like writable object. Similar to the unix tool tee.
- """
- def __init__(self, orig):
- self.orig = orig
- self.s = io.StringIO()
-
- def write(self, str):
- if self.orig:
- self.orig.write(str)
- self.s.write(str)
-
- def writelines(self, lines):
- for l in lines:
- self.write(l + '\n')
-
- def getvalue(self):
- """
- Return everything written to orig since the Streamer was created.
- """
- return self.s.getvalue()
-
- def flush(self):
- if self.orig:
- self.orig.flush()
- self.s.flush()
-
-
-class SConfBuildTask(SCons.Taskmaster.AlwaysTask):
- """
- This is almost the same as SCons.Script.BuildTask. Handles SConfErrors
- correctly and knows about the current cache_mode.
- """
- def display(self, message):
- if sconf_global.logstream:
- sconf_global.logstream.write("scons: Configure: " + message + "\n")
-
- def display_cached_string(self, bi):
- """
- Logs the original builder messages, given the SConfBuildInfo instance
- bi.
- """
- if not isinstance(bi, SConfBuildInfo):
- SCons.Warnings.warn(SConfWarning,
- "The stored build information has an unexpected class: %s" % bi.__class__)
- else:
- self.display("The original builder output was:\n" +
- (" |" + str(bi.string)).replace("\n", "\n |"))
-
- def failed(self):
- # check, if the reason was a ConfigureDryRunError or a
- # ConfigureCacheError and if yes, reraise the exception
- exc_type = self.exc_info()[0]
- if issubclass(exc_type, SConfError):
- raise
- elif issubclass(exc_type, SCons.Errors.BuildError):
- # we ignore Build Errors (occurs, when a test doesn't pass)
- # Clear the exception to prevent the contained traceback
- # to build a reference cycle.
- self.exc_clear()
- else:
- self.display('Caught exception while building "%s":\n' %
- self.targets[0])
- try:
- excepthook = sys.excepthook
- except AttributeError:
- # Earlier versions of Python don't have sys.excepthook...
- def excepthook(type, value, tb):
- traceback.print_tb(tb)
- print type, value
- excepthook(*self.exc_info())
- return SCons.Taskmaster.Task.failed(self)
-
- def collect_node_states(self):
- # returns (is_up_to_date, cached_error, cachable)
- # where is_up_to_date is 1, if the node(s) are up_to_date
- # cached_error is 1, if the node(s) are up_to_date, but the
- # build will fail
- # cachable is 0, if some nodes are not in our cache
- T = 0
- changed = False
- cached_error = False
- cachable = True
- for t in self.targets:
- if T: Trace('%s' % (t))
- bi = t.get_stored_info().binfo
- if isinstance(bi, SConfBuildInfo):
- if T: Trace(': SConfBuildInfo')
- if cache_mode == CACHE:
- t.set_state(SCons.Node.up_to_date)
- if T: Trace(': set_state(up_to-date)')
- else:
- if T: Trace(': get_state() %s' % t.get_state())
- if T: Trace(': changed() %s' % t.changed())
- if (t.get_state() != SCons.Node.up_to_date and t.changed()):
- changed = True
- if T: Trace(': changed %s' % changed)
- cached_error = cached_error or bi.result
- else:
- if T: Trace(': else')
- # the node hasn't been built in a SConf context or doesn't
- # exist
- cachable = False
- changed = ( t.get_state() != SCons.Node.up_to_date )
- if T: Trace(': changed %s' % changed)
- if T: Trace('\n')
- return (not changed, cached_error, cachable)
-
- def execute(self):
- if not self.targets[0].has_builder():
- return
-
- sconf = sconf_global
-
- is_up_to_date, cached_error, cachable = self.collect_node_states()
-
- if cache_mode == CACHE and not cachable:
- raise ConfigureCacheError(self.targets[0])
- elif cache_mode == FORCE:
- is_up_to_date = 0
-
- if cached_error and is_up_to_date:
- self.display("Building \"%s\" failed in a previous run and all "
- "its sources are up to date." % str(self.targets[0]))
- binfo = self.targets[0].get_stored_info().binfo
- self.display_cached_string(binfo)
- raise SCons.Errors.BuildError # will be 'caught' in self.failed
- elif is_up_to_date:
- self.display("\"%s\" is up to date." % str(self.targets[0]))
- binfo = self.targets[0].get_stored_info().binfo
- self.display_cached_string(binfo)
- elif dryrun:
- raise ConfigureDryRunError(self.targets[0])
- else:
- # note stdout and stderr are the same here
- s = sys.stdout = sys.stderr = Streamer(sys.stdout)
- try:
- env = self.targets[0].get_build_env()
- if cache_mode == FORCE:
- # Set up the Decider() to force rebuilds by saying
- # that every source has changed. Note that we still
- # call the environment's underlying source decider so
- # that the correct .sconsign info will get calculated
- # and keep the build state consistent.
- def force_build(dependency, target, prev_ni,
- env_decider=env.decide_source):
- env_decider(dependency, target, prev_ni)
- return True
- if env.decide_source.func_code is not force_build.func_code:
- env.Decider(force_build)
- env['PSTDOUT'] = env['PSTDERR'] = s
- try:
- sconf.cached = 0
- self.targets[0].build()
- finally:
- sys.stdout = sys.stderr = env['PSTDOUT'] = \
- env['PSTDERR'] = sconf.logstream
- except KeyboardInterrupt:
- raise
- except SystemExit:
- exc_value = sys.exc_info()[1]
- raise SCons.Errors.ExplicitExit(self.targets[0],exc_value.code)
- except Exception, e:
- for t in self.targets:
- binfo = t.get_binfo()
- binfo.__class__ = SConfBuildInfo
- binfo.set_build_result(1, s.getvalue())
- sconsign_entry = SCons.SConsign.SConsignEntry()
- sconsign_entry.binfo = binfo
- #sconsign_entry.ninfo = self.get_ninfo()
- # We'd like to do this as follows:
- # t.store_info(binfo)
- # However, we need to store it as an SConfBuildInfo
- # object, and store_info() will turn it into a
- # regular FileNodeInfo if the target is itself a
- # regular File.
- sconsign = t.dir.sconsign()
- sconsign.set_entry(t.name, sconsign_entry)
- sconsign.merge()
- raise e
- else:
- for t in self.targets:
- binfo = t.get_binfo()
- binfo.__class__ = SConfBuildInfo
- binfo.set_build_result(0, s.getvalue())
- sconsign_entry = SCons.SConsign.SConsignEntry()
- sconsign_entry.binfo = binfo
- #sconsign_entry.ninfo = self.get_ninfo()
- # We'd like to do this as follows:
- # t.store_info(binfo)
- # However, we need to store it as an SConfBuildInfo
- # object, and store_info() will turn it into a
- # regular FileNodeInfo if the target is itself a
- # regular File.
- sconsign = t.dir.sconsign()
- sconsign.set_entry(t.name, sconsign_entry)
- sconsign.merge()
-
-class SConfBase(object):
- """This is simply a class to represent a configure context. After
- creating a SConf object, you can call any tests. After finished with your
- tests, be sure to call the Finish() method, which returns the modified
- environment.
- Some words about caching: In most cases, it is not necessary to cache
- Test results explicitely. Instead, we use the scons dependency checking
- mechanism. For example, if one wants to compile a test program
- (SConf.TryLink), the compiler is only called, if the program dependencies
- have changed. However, if the program could not be compiled in a former
- SConf run, we need to explicitely cache this error.
- """
-
- def __init__(self, env, custom_tests = {}, conf_dir='$CONFIGUREDIR',
- log_file='$CONFIGURELOG', config_h = None, _depth = 0):
- """Constructor. Pass additional tests in the custom_tests-dictinary,
- e.g. custom_tests={'CheckPrivate':MyPrivateTest}, where MyPrivateTest
- defines a custom test.
- Note also the conf_dir and log_file arguments (you may want to
- build tests in the VariantDir, not in the SourceDir)
- """
- global SConfFS
- if not SConfFS:
- SConfFS = SCons.Node.FS.default_fs or \
- SCons.Node.FS.FS(env.fs.pathTop)
- if sconf_global is not None:
- raise SCons.Errors.UserError
- self.env = env
- if log_file is not None:
- log_file = SConfFS.File(env.subst(log_file))
- self.logfile = log_file
- self.logstream = None
- self.lastTarget = None
- self.depth = _depth
- self.cached = 0 # will be set, if all test results are cached
-
- # add default tests
- default_tests = {
- 'CheckCC' : CheckCC,
- 'CheckCXX' : CheckCXX,
- 'CheckSHCC' : CheckSHCC,
- 'CheckSHCXX' : CheckSHCXX,
- 'CheckFunc' : CheckFunc,
- 'CheckType' : CheckType,
- 'CheckTypeSize' : CheckTypeSize,
- 'CheckDeclaration' : CheckDeclaration,
- 'CheckHeader' : CheckHeader,
- 'CheckCHeader' : CheckCHeader,
- 'CheckCXXHeader' : CheckCXXHeader,
- 'CheckLib' : CheckLib,
- 'CheckLibWithHeader' : CheckLibWithHeader,
- }
- self.AddTests(default_tests)
- self.AddTests(custom_tests)
- self.confdir = SConfFS.Dir(env.subst(conf_dir))
- if config_h is not None:
- config_h = SConfFS.File(config_h)
- self.config_h = config_h
- self._startup()
-
- def Finish(self):
- """Call this method after finished with your tests:
- env = sconf.Finish()
- """
- self._shutdown()
- return self.env
-
- def Define(self, name, value = None, comment = None):
- """
- Define a pre processor symbol name, with the optional given value in the
- current config header.
-
- If value is None (default), then #define name is written. If value is not
- none, then #define name value is written.
-
- comment is a string which will be put as a C comment in the
- header, to explain the meaning of the value (appropriate C comments /* and
- */ will be put automatically."""
- lines = []
- if comment:
- comment_str = "/* %s */" % comment
- lines.append(comment_str)
-
- if value is not None:
- define_str = "#define %s %s" % (name, value)
- else:
- define_str = "#define %s" % name
- lines.append(define_str)
- lines.append('')
-
- self.config_h_text = self.config_h_text + '\n'.join(lines)
-
- def BuildNodes(self, nodes):
- """
- Tries to build the given nodes immediately. Returns 1 on success,
- 0 on error.
- """
- if self.logstream is not None:
- # override stdout / stderr to write in log file
- oldStdout = sys.stdout
- sys.stdout = self.logstream
- oldStderr = sys.stderr
- sys.stderr = self.logstream
-
- # the engine assumes the current path is the SConstruct directory ...
- old_fs_dir = SConfFS.getcwd()
- old_os_dir = os.getcwd()
- SConfFS.chdir(SConfFS.Top, change_os_dir=1)
-
- # Because we take responsibility here for writing out our
- # own .sconsign info (see SConfBuildTask.execute(), above),
- # we override the store_info() method with a null place-holder
- # so we really control how it gets written.
- for n in nodes:
- n.store_info = n.do_not_store_info
-
- ret = 1
-
- try:
- # ToDo: use user options for calc
- save_max_drift = SConfFS.get_max_drift()
- SConfFS.set_max_drift(0)
- tm = SCons.Taskmaster.Taskmaster(nodes, SConfBuildTask)
- # we don't want to build tests in parallel
- jobs = SCons.Job.Jobs(1, tm )
- jobs.run()
- for n in nodes:
- state = n.get_state()
- if (state != SCons.Node.executed and
- state != SCons.Node.up_to_date):
- # the node could not be built. we return 0 in this case
- ret = 0
- finally:
- SConfFS.set_max_drift(save_max_drift)
- os.chdir(old_os_dir)
- SConfFS.chdir(old_fs_dir, change_os_dir=0)
- if self.logstream is not None:
- # restore stdout / stderr
- sys.stdout = oldStdout
- sys.stderr = oldStderr
- return ret
-
- def pspawn_wrapper(self, sh, escape, cmd, args, env):
- """Wrapper function for handling piped spawns.
-
- This looks to the calling interface (in Action.py) like a "normal"
- spawn, but associates the call with the PSPAWN variable from
- the construction environment and with the streams to which we
- want the output logged. This gets slid into the construction
- environment as the SPAWN variable so Action.py doesn't have to
- know or care whether it's spawning a piped command or not.
- """
- return self.pspawn(sh, escape, cmd, args, env, self.logstream, self.logstream)
-
-
- def TryBuild(self, builder, text = None, extension = ""):
- """Low level TryBuild implementation. Normally you don't need to
- call that - you can use TryCompile / TryLink / TryRun instead
- """
- global _ac_build_counter
-
- # Make sure we have a PSPAWN value, and save the current
- # SPAWN value.
- try:
- self.pspawn = self.env['PSPAWN']
- except KeyError:
- raise SCons.Errors.UserError('Missing PSPAWN construction variable.')
- try:
- save_spawn = self.env['SPAWN']
- except KeyError:
- raise SCons.Errors.UserError('Missing SPAWN construction variable.')
-
- nodesToBeBuilt = []
-
- f = "conftest_" + str(_ac_build_counter)
- pref = self.env.subst( builder.builder.prefix )
- suff = self.env.subst( builder.builder.suffix )
- target = self.confdir.File(pref + f + suff)
-
- try:
- # Slide our wrapper into the construction environment as
- # the SPAWN function.
- self.env['SPAWN'] = self.pspawn_wrapper
- sourcetext = self.env.Value(text)
-
- if text is not None:
- textFile = self.confdir.File(f + extension)
- textFileNode = self.env.SConfSourceBuilder(target=textFile,
- source=sourcetext)
- nodesToBeBuilt.extend(textFileNode)
- source = textFileNode
- else:
- source = None
-
- nodes = builder(target = target, source = source)
- if not SCons.Util.is_List(nodes):
- nodes = [nodes]
- nodesToBeBuilt.extend(nodes)
- result = self.BuildNodes(nodesToBeBuilt)
-
- finally:
- self.env['SPAWN'] = save_spawn
-
- _ac_build_counter = _ac_build_counter + 1
- if result:
- self.lastTarget = nodes[0]
- else:
- self.lastTarget = None
-
- return result
-
- def TryAction(self, action, text = None, extension = ""):
- """Tries to execute the given action with optional source file
- contents and optional source file extension ,
- Returns the status (0 : failed, 1 : ok) and the contents of the
- output file.
- """
- builder = SCons.Builder.Builder(action=action)
- self.env.Append( BUILDERS = {'SConfActionBuilder' : builder} )
- ok = self.TryBuild(self.env.SConfActionBuilder, text, extension)
- del self.env['BUILDERS']['SConfActionBuilder']
- if ok:
- outputStr = self.lastTarget.get_contents()
- return (1, outputStr)
- return (0, "")
-
- def TryCompile( self, text, extension):
- """Compiles the program given in text to an env.Object, using extension
- as file extension (e.g. '.c'). Returns 1, if compilation was
- successful, 0 otherwise. The target is saved in self.lastTarget (for
- further processing).
- """
- return self.TryBuild(self.env.Object, text, extension)
-
- def TryLink( self, text, extension ):
- """Compiles the program given in text to an executable env.Program,
- using extension as file extension (e.g. '.c'). Returns 1, if
- compilation was successful, 0 otherwise. The target is saved in
- self.lastTarget (for further processing).
- """
- return self.TryBuild(self.env.Program, text, extension )
-
- def TryRun(self, text, extension ):
- """Compiles and runs the program given in text, using extension
- as file extension (e.g. '.c'). Returns (1, outputStr) on success,
- (0, '') otherwise. The target (a file containing the program's stdout)
- is saved in self.lastTarget (for further processing).
- """
- ok = self.TryLink(text, extension)
- if( ok ):
- prog = self.lastTarget
- pname = prog.path
- output = self.confdir.File(os.path.basename(pname)+'.out')
- node = self.env.Command(output, prog, [ [ pname, ">", "${TARGET}"] ])
- ok = self.BuildNodes(node)
- if ok:
- outputStr = output.get_contents()
- return( 1, outputStr)
- return (0, "")
-
- class TestWrapper(object):
- """A wrapper around Tests (to ensure sanity)"""
- def __init__(self, test, sconf):
- self.test = test
- self.sconf = sconf
- def __call__(self, *args, **kw):
- if not self.sconf.active:
- raise SCons.Errors.UserError
- context = CheckContext(self.sconf)
- ret = self.test(context, *args, **kw)
- if self.sconf.config_h is not None:
- self.sconf.config_h_text = self.sconf.config_h_text + context.config_h
- context.Result("error: no result")
- return ret
-
- def AddTest(self, test_name, test_instance):
- """Adds test_class to this SConf instance. It can be called with
- self.test_name(...)"""
- setattr(self, test_name, SConfBase.TestWrapper(test_instance, self))
-
- def AddTests(self, tests):
- """Adds all the tests given in the tests dictionary to this SConf
- instance
- """
- for name in tests.keys():
- self.AddTest(name, tests[name])
-
- def _createDir( self, node ):
- dirName = str(node)
- if dryrun:
- if not os.path.isdir( dirName ):
- raise ConfigureDryRunError(dirName)
- else:
- if not os.path.isdir( dirName ):
- os.makedirs( dirName )
- node._exists = 1
-
- def _startup(self):
- """Private method. Set up logstream, and set the environment
- variables necessary for a piped build
- """
- global _ac_config_logs
- global sconf_global
- global SConfFS
-
- self.lastEnvFs = self.env.fs
- self.env.fs = SConfFS
- self._createDir(self.confdir)
- self.confdir.up().add_ignore( [self.confdir] )
-
- if self.logfile is not None and not dryrun:
- # truncate logfile, if SConf.Configure is called for the first time
- # in a build
- if self.logfile in _ac_config_logs:
- log_mode = "a"
- else:
- _ac_config_logs[self.logfile] = None
- log_mode = "w"
- fp = open(str(self.logfile), log_mode)
- self.logstream = SCons.Util.Unbuffered(fp)
- # logfile may stay in a build directory, so we tell
- # the build system not to override it with a eventually
- # existing file with the same name in the source directory
- self.logfile.dir.add_ignore( [self.logfile] )
-
- tb = traceback.extract_stack()[-3-self.depth]
- old_fs_dir = SConfFS.getcwd()
- SConfFS.chdir(SConfFS.Top, change_os_dir=0)
- self.logstream.write('file %s,line %d:\n\tConfigure(confdir = %s)\n' %
- (tb[0], tb[1], str(self.confdir)) )
- SConfFS.chdir(old_fs_dir)
- else:
- self.logstream = None
- # we use a special builder to create source files from TEXT
- action = SCons.Action.Action(_createSource,
- _stringSource)
- sconfSrcBld = SCons.Builder.Builder(action=action)
- self.env.Append( BUILDERS={'SConfSourceBuilder':sconfSrcBld} )
- self.config_h_text = _ac_config_hs.get(self.config_h, "")
- self.active = 1
- # only one SConf instance should be active at a time ...
- sconf_global = self
-
- def _shutdown(self):
- """Private method. Reset to non-piped spawn"""
- global sconf_global, _ac_config_hs
-
- if not self.active:
- raise SCons.Errors.UserError("Finish may be called only once!")
- if self.logstream is not None and not dryrun:
- self.logstream.write("\n")
- self.logstream.close()
- self.logstream = None
- # remove the SConfSourceBuilder from the environment
- blds = self.env['BUILDERS']
- del blds['SConfSourceBuilder']
- self.env.Replace( BUILDERS=blds )
- self.active = 0
- sconf_global = None
- if not self.config_h is None:
- _ac_config_hs[self.config_h] = self.config_h_text
- self.env.fs = self.lastEnvFs
-
-class CheckContext(object):
- """Provides a context for configure tests. Defines how a test writes to the
- screen and log file.
-
- A typical test is just a callable with an instance of CheckContext as
- first argument:
-
- def CheckCustom(context, ...)
- context.Message('Checking my weird test ... ')
- ret = myWeirdTestFunction(...)
- context.Result(ret)
-
- Often, myWeirdTestFunction will be one of
- context.TryCompile/context.TryLink/context.TryRun. The results of
- those are cached, for they are only rebuild, if the dependencies have
- changed.
- """
-
- def __init__(self, sconf):
- """Constructor. Pass the corresponding SConf instance."""
- self.sconf = sconf
- self.did_show_result = 0
-
- # for Conftest.py:
- self.vardict = {}
- self.havedict = {}
- self.headerfilename = None
- self.config_h = "" # config_h text will be stored here
- # we don't regenerate the config.h file after each test. That means,
- # that tests won't be able to include the config.h file, and so
- # they can't do an #ifdef HAVE_XXX_H. This shouldn't be a major
- # issue, though. If it turns out, that we need to include config.h
- # in tests, we must ensure, that the dependencies are worked out
- # correctly. Note that we can't use Conftest.py's support for config.h,
- # cause we will need to specify a builder for the config.h file ...
-
- def Message(self, text):
- """Inform about what we are doing right now, e.g.
- 'Checking for SOMETHING ... '
- """
- self.Display(text)
- self.sconf.cached = 1
- self.did_show_result = 0
-
- def Result(self, res):
- """Inform about the result of the test. res may be an integer or a
- string. In case of an integer, the written text will be 'yes' or 'no'.
- The result is only displayed when self.did_show_result is not set.
- """
- if isinstance(res, (int, bool)):
- if res:
- text = "yes"
- else:
- text = "no"
- elif isinstance(res, str):
- text = res
- else:
- raise TypeError("Expected string, int or bool, got " + str(type(res)))
-
- if self.did_show_result == 0:
- # Didn't show result yet, do it now.
- self.Display(text + "\n")
- self.did_show_result = 1
-
- def TryBuild(self, *args, **kw):
- return self.sconf.TryBuild(*args, **kw)
-
- def TryAction(self, *args, **kw):
- return self.sconf.TryAction(*args, **kw)
-
- def TryCompile(self, *args, **kw):
- return self.sconf.TryCompile(*args, **kw)
-
- def TryLink(self, *args, **kw):
- return self.sconf.TryLink(*args, **kw)
-
- def TryRun(self, *args, **kw):
- return self.sconf.TryRun(*args, **kw)
-
- def __getattr__( self, attr ):
- if( attr == 'env' ):
- return self.sconf.env
- elif( attr == 'lastTarget' ):
- return self.sconf.lastTarget
- else:
- raise AttributeError("CheckContext instance has no attribute '%s'" % attr)
-
- #### Stuff used by Conftest.py (look there for explanations).
-
- def BuildProg(self, text, ext):
- self.sconf.cached = 1
- # TODO: should use self.vardict for $CC, $CPPFLAGS, etc.
- return not self.TryBuild(self.env.Program, text, ext)
-
- def CompileProg(self, text, ext):
- self.sconf.cached = 1
- # TODO: should use self.vardict for $CC, $CPPFLAGS, etc.
- return not self.TryBuild(self.env.Object, text, ext)
-
- def CompileSharedObject(self, text, ext):
- self.sconf.cached = 1
- # TODO: should use self.vardict for $SHCC, $CPPFLAGS, etc.
- return not self.TryBuild(self.env.SharedObject, text, ext)
-
- def RunProg(self, text, ext):
- self.sconf.cached = 1
- # TODO: should use self.vardict for $CC, $CPPFLAGS, etc.
- st, out = self.TryRun(text, ext)
- return not st, out
-
- def AppendLIBS(self, lib_name_list):
- oldLIBS = self.env.get( 'LIBS', [] )
- self.env.Append(LIBS = lib_name_list)
- return oldLIBS
-
- def PrependLIBS(self, lib_name_list):
- oldLIBS = self.env.get( 'LIBS', [] )
- self.env.Prepend(LIBS = lib_name_list)
- return oldLIBS
-
- def SetLIBS(self, val):
- oldLIBS = self.env.get( 'LIBS', [] )
- self.env.Replace(LIBS = val)
- return oldLIBS
-
- def Display(self, msg):
- if self.sconf.cached:
- # We assume that Display is called twice for each test here
- # once for the Checking for ... message and once for the result.
- # The self.sconf.cached flag can only be set between those calls
- msg = "(cached) " + msg
- self.sconf.cached = 0
- progress_display(msg, append_newline=0)
- self.Log("scons: Configure: " + msg + "\n")
-
- def Log(self, msg):
- if self.sconf.logstream is not None:
- self.sconf.logstream.write(msg)
-
- #### End of stuff used by Conftest.py.
-
-
-def SConf(*args, **kw):
- if kw.get(build_type, True):
- kw['_depth'] = kw.get('_depth', 0) + 1
- for bt in build_types:
- try:
- del kw[bt]
- except KeyError:
- pass
- return SConfBase(*args, **kw)
- else:
- return SCons.Util.Null()
-
-
-def CheckFunc(context, function_name, header = None, language = None):
- res = SCons.Conftest.CheckFunc(context, function_name, header = header, language = language)
- context.did_show_result = 1
- return not res
-
-def CheckType(context, type_name, includes = "", language = None):
- res = SCons.Conftest.CheckType(context, type_name,
- header = includes, language = language)
- context.did_show_result = 1
- return not res
-
-def CheckTypeSize(context, type_name, includes = "", language = None, expect = None):
- res = SCons.Conftest.CheckTypeSize(context, type_name,
- header = includes, language = language,
- expect = expect)
- context.did_show_result = 1
- return res
-
-def CheckDeclaration(context, declaration, includes = "", language = None):
- res = SCons.Conftest.CheckDeclaration(context, declaration,
- includes = includes,
- language = language)
- context.did_show_result = 1
- return not res
-
-def createIncludesFromHeaders(headers, leaveLast, include_quotes = '""'):
- # used by CheckHeader and CheckLibWithHeader to produce C - #include
- # statements from the specified header (list)
- if not SCons.Util.is_List(headers):
- headers = [headers]
- l = []
- if leaveLast:
- lastHeader = headers[-1]
- headers = headers[:-1]
- else:
- lastHeader = None
- for s in headers:
- l.append("#include %s%s%s\n"
- % (include_quotes[0], s, include_quotes[1]))
- return ''.join(l), lastHeader
-
-def CheckHeader(context, header, include_quotes = '<>', language = None):
- """
- A test for a C or C++ header file.
- """
- prog_prefix, hdr_to_check = \
- createIncludesFromHeaders(header, 1, include_quotes)
- res = SCons.Conftest.CheckHeader(context, hdr_to_check, prog_prefix,
- language = language,
- include_quotes = include_quotes)
- context.did_show_result = 1
- return not res
-
-def CheckCC(context):
- res = SCons.Conftest.CheckCC(context)
- context.did_show_result = 1
- return not res
-
-def CheckCXX(context):
- res = SCons.Conftest.CheckCXX(context)
- context.did_show_result = 1
- return not res
-
-def CheckSHCC(context):
- res = SCons.Conftest.CheckSHCC(context)
- context.did_show_result = 1
- return not res
-
-def CheckSHCXX(context):
- res = SCons.Conftest.CheckSHCXX(context)
- context.did_show_result = 1
- return not res
-
-# Bram: Make this function obsolete? CheckHeader() is more generic.
-
-def CheckCHeader(context, header, include_quotes = '""'):
- """
- A test for a C header file.
- """
- return CheckHeader(context, header, include_quotes, language = "C")
-
-
-# Bram: Make this function obsolete? CheckHeader() is more generic.
-
-def CheckCXXHeader(context, header, include_quotes = '""'):
- """
- A test for a C++ header file.
- """
- return CheckHeader(context, header, include_quotes, language = "C++")
-
-
-def CheckLib(context, library = None, symbol = "main",
- header = None, language = None, autoadd = 1):
- """
- A test for a library. See also CheckLibWithHeader.
- Note that library may also be None to test whether the given symbol
- compiles without flags.
- """
-
- if library == []:
- library = [None]
-
- if not SCons.Util.is_List(library):
- library = [library]
-
- # ToDo: accept path for the library
- res = SCons.Conftest.CheckLib(context, library, symbol, header = header,
- language = language, autoadd = autoadd)
- context.did_show_result = 1
- return not res
-
-# XXX
-# Bram: Can only include one header and can't use #ifdef HAVE_HEADER_H.
-
-def CheckLibWithHeader(context, libs, header, language,
- call = None, autoadd = 1):
- # ToDo: accept path for library. Support system header files.
- """
- Another (more sophisticated) test for a library.
- Checks, if library and header is available for language (may be 'C'
- or 'CXX'). Call maybe be a valid expression _with_ a trailing ';'.
- As in CheckLib, we support library=None, to test if the call compiles
- without extra link flags.
- """
- prog_prefix, dummy = \
- createIncludesFromHeaders(header, 0)
- if libs == []:
- libs = [None]
-
- if not SCons.Util.is_List(libs):
- libs = [libs]
-
- res = SCons.Conftest.CheckLib(context, libs, None, prog_prefix,
- call = call, language = language, autoadd = autoadd)
- context.did_show_result = 1
- return not res
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/SConsign.py b/Externals/scons-local/scons-local-2.0.1/SCons/SConsign.py
deleted file mode 100644
index 0d78a6d671..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/SConsign.py
+++ /dev/null
@@ -1,383 +0,0 @@
-"""SCons.SConsign
-
-Writing and reading information to the .sconsign file or files.
-
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/SConsign.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import SCons.compat
-
-import os
-# compat layer imports "cPickle" for us if it's available.
-import pickle
-
-import SCons.dblite
-import SCons.Warnings
-
-def corrupt_dblite_warning(filename):
- SCons.Warnings.warn(SCons.Warnings.CorruptSConsignWarning,
- "Ignoring corrupt .sconsign file: %s"%filename)
-
-SCons.dblite.ignore_corrupt_dbfiles = 1
-SCons.dblite.corruption_warning = corrupt_dblite_warning
-
-#XXX Get rid of the global array so this becomes re-entrant.
-sig_files = []
-
-# Info for the database SConsign implementation (now the default):
-# "DataBase" is a dictionary that maps top-level SConstruct directories
-# to open database handles.
-# "DB_Module" is the Python database module to create the handles.
-# "DB_Name" is the base name of the database file (minus any
-# extension the underlying DB module will add).
-DataBase = {}
-DB_Module = SCons.dblite
-DB_Name = ".sconsign"
-DB_sync_list = []
-
-def Get_DataBase(dir):
- global DataBase, DB_Module, DB_Name
- top = dir.fs.Top
- if not os.path.isabs(DB_Name) and top.repositories:
- mode = "c"
- for d in [top] + top.repositories:
- if dir.is_under(d):
- try:
- return DataBase[d], mode
- except KeyError:
- path = d.entry_abspath(DB_Name)
- try: db = DataBase[d] = DB_Module.open(path, mode)
- except (IOError, OSError): pass
- else:
- if mode != "r":
- DB_sync_list.append(db)
- return db, mode
- mode = "r"
- try:
- return DataBase[top], "c"
- except KeyError:
- db = DataBase[top] = DB_Module.open(DB_Name, "c")
- DB_sync_list.append(db)
- return db, "c"
- except TypeError:
- print "DataBase =", DataBase
- raise
-
-def Reset():
- """Reset global state. Used by unit tests that end up using
- SConsign multiple times to get a clean slate for each test."""
- global sig_files, DB_sync_list
- sig_files = []
- DB_sync_list = []
-
-normcase = os.path.normcase
-
-def write():
- global sig_files
- for sig_file in sig_files:
- sig_file.write(sync=0)
- for db in DB_sync_list:
- try:
- syncmethod = db.sync
- except AttributeError:
- pass # Not all anydbm modules have sync() methods.
- else:
- syncmethod()
-
-class SConsignEntry(object):
- """
- Wrapper class for the generic entry in a .sconsign file.
- The Node subclass populates it with attributes as it pleases.
-
- XXX As coded below, we do expect a '.binfo' attribute to be added,
- but we'll probably generalize this in the next refactorings.
- """
- current_version_id = 1
- def __init__(self):
- # Create an object attribute from the class attribute so it ends up
- # in the pickled data in the .sconsign file.
- _version_id = self.current_version_id
- def convert_to_sconsign(self):
- self.binfo.convert_to_sconsign()
- def convert_from_sconsign(self, dir, name):
- self.binfo.convert_from_sconsign(dir, name)
-
-class Base(object):
- """
- This is the controlling class for the signatures for the collection of
- entries associated with a specific directory. The actual directory
- association will be maintained by a subclass that is specific to
- the underlying storage method. This class provides a common set of
- methods for fetching and storing the individual bits of information
- that make up signature entry.
- """
- def __init__(self):
- self.entries = {}
- self.dirty = False
- self.to_be_merged = {}
-
- def get_entry(self, filename):
- """
- Fetch the specified entry attribute.
- """
- return self.entries[filename]
-
- def set_entry(self, filename, obj):
- """
- Set the entry.
- """
- self.entries[filename] = obj
- self.dirty = True
-
- def do_not_set_entry(self, filename, obj):
- pass
-
- def store_info(self, filename, node):
- entry = node.get_stored_info()
- entry.binfo.merge(node.get_binfo())
- self.to_be_merged[filename] = node
- self.dirty = True
-
- def do_not_store_info(self, filename, node):
- pass
-
- def merge(self):
- for key, node in self.to_be_merged.items():
- entry = node.get_stored_info()
- try:
- ninfo = entry.ninfo
- except AttributeError:
- # This happens with SConf Nodes, because the configuration
- # subsystem takes direct control over how the build decision
- # is made and its information stored.
- pass
- else:
- ninfo.merge(node.get_ninfo())
- self.entries[key] = entry
- self.to_be_merged = {}
-
-class DB(Base):
- """
- A Base subclass that reads and writes signature information
- from a global .sconsign.db* file--the actual file suffix is
- determined by the database module.
- """
- def __init__(self, dir):
- Base.__init__(self)
-
- self.dir = dir
-
- db, mode = Get_DataBase(dir)
-
- # Read using the path relative to the top of the Repository
- # (self.dir.tpath) from which we're fetching the signature
- # information.
- path = normcase(dir.tpath)
- try:
- rawentries = db[path]
- except KeyError:
- pass
- else:
- try:
- self.entries = pickle.loads(rawentries)
- if not isinstance(self.entries, dict):
- self.entries = {}
- raise TypeError
- except KeyboardInterrupt:
- raise
- except Exception, e:
- SCons.Warnings.warn(SCons.Warnings.CorruptSConsignWarning,
- "Ignoring corrupt sconsign entry : %s (%s)\n"%(self.dir.tpath, e))
- for key, entry in self.entries.items():
- entry.convert_from_sconsign(dir, key)
-
- if mode == "r":
- # This directory is actually under a repository, which means
- # likely they're reaching in directly for a dependency on
- # a file there. Don't actually set any entry info, so we
- # won't try to write to that .sconsign.dblite file.
- self.set_entry = self.do_not_set_entry
- self.store_info = self.do_not_store_info
-
- global sig_files
- sig_files.append(self)
-
- def write(self, sync=1):
- if not self.dirty:
- return
-
- self.merge()
-
- db, mode = Get_DataBase(self.dir)
-
- # Write using the path relative to the top of the SConstruct
- # directory (self.dir.path), not relative to the top of
- # the Repository; we only write to our own .sconsign file,
- # not to .sconsign files in Repositories.
- path = normcase(self.dir.path)
- for key, entry in self.entries.items():
- entry.convert_to_sconsign()
- db[path] = pickle.dumps(self.entries, 1)
-
- if sync:
- try:
- syncmethod = db.sync
- except AttributeError:
- # Not all anydbm modules have sync() methods.
- pass
- else:
- syncmethod()
-
-class Dir(Base):
- def __init__(self, fp=None, dir=None):
- """
- fp - file pointer to read entries from
- """
- Base.__init__(self)
-
- if not fp:
- return
-
- self.entries = pickle.load(fp)
- if not isinstance(self.entries, dict):
- self.entries = {}
- raise TypeError
-
- if dir:
- for key, entry in self.entries.items():
- entry.convert_from_sconsign(dir, key)
-
-class DirFile(Dir):
- """
- Encapsulates reading and writing a per-directory .sconsign file.
- """
- def __init__(self, dir):
- """
- dir - the directory for the file
- """
-
- self.dir = dir
- self.sconsign = os.path.join(dir.path, '.sconsign')
-
- try:
- fp = open(self.sconsign, 'rb')
- except IOError:
- fp = None
-
- try:
- Dir.__init__(self, fp, dir)
- except KeyboardInterrupt:
- raise
- except:
- SCons.Warnings.warn(SCons.Warnings.CorruptSConsignWarning,
- "Ignoring corrupt .sconsign file: %s"%self.sconsign)
-
- global sig_files
- sig_files.append(self)
-
- def write(self, sync=1):
- """
- Write the .sconsign file to disk.
-
- Try to write to a temporary file first, and rename it if we
- succeed. If we can't write to the temporary file, it's
- probably because the directory isn't writable (and if so,
- how did we build anything in this directory, anyway?), so
- try to write directly to the .sconsign file as a backup.
- If we can't rename, try to copy the temporary contents back
- to the .sconsign file. Either way, always try to remove
- the temporary file at the end.
- """
- if not self.dirty:
- return
-
- self.merge()
-
- temp = os.path.join(self.dir.path, '.scons%d' % os.getpid())
- try:
- file = open(temp, 'wb')
- fname = temp
- except IOError:
- try:
- file = open(self.sconsign, 'wb')
- fname = self.sconsign
- except IOError:
- return
- for key, entry in self.entries.items():
- entry.convert_to_sconsign()
- pickle.dump(self.entries, file, 1)
- file.close()
- if fname != self.sconsign:
- try:
- mode = os.stat(self.sconsign)[0]
- os.chmod(self.sconsign, 0666)
- os.unlink(self.sconsign)
- except (IOError, OSError):
- # Try to carry on in the face of either OSError
- # (things like permission issues) or IOError (disk
- # or network issues). If there's a really dangerous
- # issue, it should get re-raised by the calls below.
- pass
- try:
- os.rename(fname, self.sconsign)
- except OSError:
- # An OSError failure to rename may indicate something
- # like the directory has no write permission, but
- # the .sconsign file itself might still be writable,
- # so try writing on top of it directly. An IOError
- # here, or in any of the following calls, would get
- # raised, indicating something like a potentially
- # serious disk or network issue.
- open(self.sconsign, 'wb').write(open(fname, 'rb').read())
- os.chmod(self.sconsign, mode)
- try:
- os.unlink(temp)
- except (IOError, OSError):
- pass
-
-ForDirectory = DB
-
-def File(name, dbm_module=None):
- """
- Arrange for all signatures to be stored in a global .sconsign.db*
- file.
- """
- global ForDirectory, DB_Name, DB_Module
- if name is None:
- ForDirectory = DirFile
- DB_Module = None
- else:
- ForDirectory = DB
- DB_Name = name
- if not dbm_module is None:
- DB_Module = dbm_module
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Scanner/C.py b/Externals/scons-local/scons-local-2.0.1/SCons/Scanner/C.py
deleted file mode 100644
index 3ac769ae42..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Scanner/C.py
+++ /dev/null
@@ -1,132 +0,0 @@
-"""SCons.Scanner.C
-
-This module implements the depenency scanner for C/C++ code.
-
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Scanner/C.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import SCons.Node.FS
-import SCons.Scanner
-import SCons.Util
-
-import SCons.cpp
-
-class SConsCPPScanner(SCons.cpp.PreProcessor):
- """
- SCons-specific subclass of the cpp.py module's processing.
-
- We subclass this so that: 1) we can deal with files represented
- by Nodes, not strings; 2) we can keep track of the files that are
- missing.
- """
- def __init__(self, *args, **kw):
- SCons.cpp.PreProcessor.__init__(self, *args, **kw)
- self.missing = []
- def initialize_result(self, fname):
- self.result = SCons.Util.UniqueList([fname])
- def finalize_result(self, fname):
- return self.result[1:]
- def find_include_file(self, t):
- keyword, quote, fname = t
- result = SCons.Node.FS.find_file(fname, self.searchpath[quote])
- if not result:
- self.missing.append((fname, self.current_file))
- return result
- def read_file(self, file):
- try:
- fp = open(str(file.rfile()))
- except EnvironmentError, e:
- self.missing.append((file, self.current_file))
- return ''
- else:
- return fp.read()
-
-def dictify_CPPDEFINES(env):
- cppdefines = env.get('CPPDEFINES', {})
- if cppdefines is None:
- return {}
- if SCons.Util.is_Sequence(cppdefines):
- result = {}
- for c in cppdefines:
- if SCons.Util.is_Sequence(c):
- result[c[0]] = c[1]
- else:
- result[c] = None
- return result
- if not SCons.Util.is_Dict(cppdefines):
- return {cppdefines : None}
- return cppdefines
-
-class SConsCPPScannerWrapper(object):
- """
- The SCons wrapper around a cpp.py scanner.
-
- This is the actual glue between the calling conventions of generic
- SCons scanners, and the (subclass of) cpp.py class that knows how
- to look for #include lines with reasonably real C-preprocessor-like
- evaluation of #if/#ifdef/#else/#elif lines.
- """
- def __init__(self, name, variable):
- self.name = name
- self.path = SCons.Scanner.FindPathDirs(variable)
- def __call__(self, node, env, path = ()):
- cpp = SConsCPPScanner(current = node.get_dir(),
- cpppath = path,
- dict = dictify_CPPDEFINES(env))
- result = cpp(node)
- for included, includer in cpp.missing:
- fmt = "No dependency generated for file: %s (included from: %s) -- file not found"
- SCons.Warnings.warn(SCons.Warnings.DependencyWarning,
- fmt % (included, includer))
- return result
-
- def recurse_nodes(self, nodes):
- return nodes
- def select(self, node):
- return self
-
-def CScanner():
- """Return a prototype Scanner instance for scanning source files
- that use the C pre-processor"""
-
- # Here's how we would (or might) use the CPP scanner code above that
- # knows how to evaluate #if/#ifdef/#else/#elif lines when searching
- # for #includes. This is commented out for now until we add the
- # right configurability to let users pick between the scanners.
- #return SConsCPPScannerWrapper("CScanner", "CPPPATH")
-
- cs = SCons.Scanner.ClassicCPP("CScanner",
- "$CPPSUFFIXES",
- "CPPPATH",
- '^[ \t]*#[ \t]*(?:include|import)[ \t]*(<|")([^>"]+)(>|")')
- return cs
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Scanner/D.py b/Externals/scons-local/scons-local-2.0.1/SCons/Scanner/D.py
deleted file mode 100644
index 2293ddd0ea..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Scanner/D.py
+++ /dev/null
@@ -1,73 +0,0 @@
-"""SCons.Scanner.D
-
-Scanner for the Digital Mars "D" programming language.
-
-Coded by Andy Friesen
-17 Nov 2003
-
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Scanner/D.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import re
-
-import SCons.Scanner
-
-def DScanner():
- """Return a prototype Scanner instance for scanning D source files"""
- ds = D()
- return ds
-
-class D(SCons.Scanner.Classic):
- def __init__ (self):
- SCons.Scanner.Classic.__init__ (self,
- name = "DScanner",
- suffixes = '$DSUFFIXES',
- path_variable = 'DPATH',
- regex = 'import\s+(?:[a-zA-Z0-9_.]+)\s*(?:,\s*(?:[a-zA-Z0-9_.]+)\s*)*;')
-
- self.cre2 = re.compile ('(?:import\s)?\s*([a-zA-Z0-9_.]+)\s*(?:,|;)', re.M)
-
- def find_include(self, include, source_dir, path):
- # translate dots (package separators) to slashes
- inc = include.replace('.', '/')
-
- i = SCons.Node.FS.find_file(inc + '.d', (source_dir,) + path)
- if i is None:
- i = SCons.Node.FS.find_file (inc + '.di', (source_dir,) + path)
- return i, include
-
- def find_include_names(self, node):
- includes = []
- for i in self.cre.findall(node.get_text_contents()):
- includes = includes + self.cre2.findall(i)
- return includes
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Scanner/Dir.py b/Externals/scons-local/scons-local-2.0.1/SCons/Scanner/Dir.py
deleted file mode 100644
index df0de4e697..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Scanner/Dir.py
+++ /dev/null
@@ -1,109 +0,0 @@
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-__revision__ = "src/engine/SCons/Scanner/Dir.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import SCons.Node.FS
-import SCons.Scanner
-
-def only_dirs(nodes):
- is_Dir = lambda n: isinstance(n.disambiguate(), SCons.Node.FS.Dir)
- return list(filter(is_Dir, nodes))
-
-def DirScanner(**kw):
- """Return a prototype Scanner instance for scanning
- directories for on-disk files"""
- kw['node_factory'] = SCons.Node.FS.Entry
- kw['recursive'] = only_dirs
- return SCons.Scanner.Base(scan_on_disk, "DirScanner", **kw)
-
-def DirEntryScanner(**kw):
- """Return a prototype Scanner instance for "scanning"
- directory Nodes for their in-memory entries"""
- kw['node_factory'] = SCons.Node.FS.Entry
- kw['recursive'] = None
- return SCons.Scanner.Base(scan_in_memory, "DirEntryScanner", **kw)
-
-skip_entry = {}
-
-skip_entry_list = [
- '.',
- '..',
- '.sconsign',
- # Used by the native dblite.py module.
- '.sconsign.dblite',
- # Used by dbm and dumbdbm.
- '.sconsign.dir',
- # Used by dbm.
- '.sconsign.pag',
- # Used by dumbdbm.
- '.sconsign.dat',
- '.sconsign.bak',
- # Used by some dbm emulations using Berkeley DB.
- '.sconsign.db',
-]
-
-for skip in skip_entry_list:
- skip_entry[skip] = 1
- skip_entry[SCons.Node.FS._my_normcase(skip)] = 1
-
-do_not_scan = lambda k: k not in skip_entry
-
-def scan_on_disk(node, env, path=()):
- """
- Scans a directory for on-disk files and directories therein.
-
- Looking up the entries will add these to the in-memory Node tree
- representation of the file system, so all we have to do is just
- that and then call the in-memory scanning function.
- """
- try:
- flist = node.fs.listdir(node.abspath)
- except (IOError, OSError):
- return []
- e = node.Entry
- for f in filter(do_not_scan, flist):
- # Add ./ to the beginning of the file name so if it begins with a
- # '#' we don't look it up relative to the top-level directory.
- e('./' + f)
- return scan_in_memory(node, env, path)
-
-def scan_in_memory(node, env, path=()):
- """
- "Scans" a Node.FS.Dir for its in-memory entries.
- """
- try:
- entries = node.entries
- except AttributeError:
- # It's not a Node.FS.Dir (or doesn't look enough like one for
- # our purposes), which can happen if a target list containing
- # mixed Node types (Dirs and Files, for example) has a Dir as
- # the first entry.
- return []
- entry_list = sorted(filter(do_not_scan, list(entries.keys())))
- return [entries[n] for n in entry_list]
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Scanner/Fortran.py b/Externals/scons-local/scons-local-2.0.1/SCons/Scanner/Fortran.py
deleted file mode 100644
index 63d34e49a5..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Scanner/Fortran.py
+++ /dev/null
@@ -1,316 +0,0 @@
-"""SCons.Scanner.Fortran
-
-This module implements the dependency scanner for Fortran code.
-
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-__revision__ = "src/engine/SCons/Scanner/Fortran.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import re
-
-import SCons.Node
-import SCons.Node.FS
-import SCons.Scanner
-import SCons.Util
-import SCons.Warnings
-
-class F90Scanner(SCons.Scanner.Classic):
- """
- A Classic Scanner subclass for Fortran source files which takes
- into account both USE and INCLUDE statements. This scanner will
- work for both F77 and F90 (and beyond) compilers.
-
- Currently, this scanner assumes that the include files do not contain
- USE statements. To enable the ability to deal with USE statements
- in include files, add logic right after the module names are found
- to loop over each include file, search for and locate each USE
- statement, and append each module name to the list of dependencies.
- Caching the search results in a common dictionary somewhere so that
- the same include file is not searched multiple times would be a
- smart thing to do.
- """
-
- def __init__(self, name, suffixes, path_variable,
- use_regex, incl_regex, def_regex, *args, **kw):
-
- self.cre_use = re.compile(use_regex, re.M)
- self.cre_incl = re.compile(incl_regex, re.M)
- self.cre_def = re.compile(def_regex, re.M)
-
- def _scan(node, env, path, self=self):
- node = node.rfile()
-
- if not node.exists():
- return []
-
- return self.scan(node, env, path)
-
- kw['function'] = _scan
- kw['path_function'] = SCons.Scanner.FindPathDirs(path_variable)
- kw['recursive'] = 1
- kw['skeys'] = suffixes
- kw['name'] = name
-
- SCons.Scanner.Current.__init__(self, *args, **kw)
-
- def scan(self, node, env, path=()):
-
- # cache the includes list in node so we only scan it once:
- if node.includes != None:
- mods_and_includes = node.includes
- else:
- # retrieve all included filenames
- includes = self.cre_incl.findall(node.get_text_contents())
- # retrieve all USE'd module names
- modules = self.cre_use.findall(node.get_text_contents())
- # retrieve all defined module names
- defmodules = self.cre_def.findall(node.get_text_contents())
-
- # Remove all USE'd module names that are defined in the same file
- # (case-insensitively)
- d = {}
- for m in defmodules:
- d[m.lower()] = 1
- modules = [m for m in modules if m.lower() not in d]
-
- # Convert module name to a .mod filename
- suffix = env.subst('$FORTRANMODSUFFIX')
- modules = [x.lower() + suffix for x in modules]
- # Remove unique items from the list
- mods_and_includes = SCons.Util.unique(includes+modules)
- node.includes = mods_and_includes
-
- # This is a hand-coded DSU (decorate-sort-undecorate, or
- # Schwartzian transform) pattern. The sort key is the raw name
- # of the file as specifed on the USE or INCLUDE line, which lets
- # us keep the sort order constant regardless of whether the file
- # is actually found in a Repository or locally.
- nodes = []
- source_dir = node.get_dir()
- if callable(path):
- path = path()
- for dep in mods_and_includes:
- n, i = self.find_include(dep, source_dir, path)
-
- if n is None:
- SCons.Warnings.warn(SCons.Warnings.DependencyWarning,
- "No dependency generated for file: %s (referenced by: %s) -- file not found" % (i, node))
- else:
- sortkey = self.sort_key(dep)
- nodes.append((sortkey, n))
-
- return [pair[1] for pair in sorted(nodes)]
-
-def FortranScan(path_variable="FORTRANPATH"):
- """Return a prototype Scanner instance for scanning source files
- for Fortran USE & INCLUDE statements"""
-
-# The USE statement regex matches the following:
-#
-# USE module_name
-# USE :: module_name
-# USE, INTRINSIC :: module_name
-# USE, NON_INTRINSIC :: module_name
-#
-# Limitations
-#
-# -- While the regex can handle multiple USE statements on one line,
-# it cannot properly handle them if they are commented out.
-# In either of the following cases:
-#
-# ! USE mod_a ; USE mod_b [entire line is commented out]
-# USE mod_a ! ; USE mod_b [in-line comment of second USE statement]
-#
-# the second module name (mod_b) will be picked up as a dependency
-# even though it should be ignored. The only way I can see
-# to rectify this would be to modify the scanner to eliminate
-# the call to re.findall, read in the contents of the file,
-# treating the comment character as an end-of-line character
-# in addition to the normal linefeed, loop over each line,
-# weeding out the comments, and looking for the USE statements.
-# One advantage to this is that the regex passed to the scanner
-# would no longer need to match a semicolon.
-#
-# -- I question whether or not we need to detect dependencies to
-# INTRINSIC modules because these are built-in to the compiler.
-# If we consider them a dependency, will SCons look for them, not
-# find them, and kill the build? Or will we there be standard
-# compiler-specific directories we will need to point to so the
-# compiler and SCons can locate the proper object and mod files?
-
-# Here is a breakdown of the regex:
-#
-# (?i) : regex is case insensitive
-# ^ : start of line
-# (?: : group a collection of regex symbols without saving the match as a "group"
-# ^|; : matches either the start of the line or a semicolon - semicolon
-# ) : end the unsaved grouping
-# \s* : any amount of white space
-# USE : match the string USE, case insensitive
-# (?: : group a collection of regex symbols without saving the match as a "group"
-# \s+| : match one or more whitespace OR .... (the next entire grouped set of regex symbols)
-# (?: : group a collection of regex symbols without saving the match as a "group"
-# (?: : establish another unsaved grouping of regex symbols
-# \s* : any amount of white space
-# , : match a comma
-# \s* : any amount of white space
-# (?:NON_)? : optionally match the prefix NON_, case insensitive
-# INTRINSIC : match the string INTRINSIC, case insensitive
-# )? : optionally match the ", INTRINSIC/NON_INTRINSIC" grouped expression
-# \s* : any amount of white space
-# :: : match a double colon that must appear after the INTRINSIC/NON_INTRINSIC attribute
-# ) : end the unsaved grouping
-# ) : end the unsaved grouping
-# \s* : match any amount of white space
-# (\w+) : match the module name that is being USE'd
-#
-#
- use_regex = "(?i)(?:^|;)\s*USE(?:\s+|(?:(?:\s*,\s*(?:NON_)?INTRINSIC)?\s*::))\s*(\w+)"
-
-
-# The INCLUDE statement regex matches the following:
-#
-# INCLUDE 'some_Text'
-# INCLUDE "some_Text"
-# INCLUDE "some_Text" ; INCLUDE "some_Text"
-# INCLUDE kind_"some_Text"
-# INCLUDE kind_'some_Text"
-#
-# where some_Text can include any alphanumeric and/or special character
-# as defined by the Fortran 2003 standard.
-#
-# Limitations:
-#
-# -- The Fortran standard dictates that a " or ' in the INCLUDE'd
-# string must be represented as a "" or '', if the quotes that wrap
-# the entire string are either a ' or ", respectively. While the
-# regular expression below can detect the ' or " characters just fine,
-# the scanning logic, presently is unable to detect them and reduce
-# them to a single instance. This probably isn't an issue since,
-# in practice, ' or " are not generally used in filenames.
-#
-# -- This regex will not properly deal with multiple INCLUDE statements
-# when the entire line has been commented out, ala
-#
-# ! INCLUDE 'some_file' ; INCLUDE 'some_file'
-#
-# In such cases, it will properly ignore the first INCLUDE file,
-# but will actually still pick up the second. Interestingly enough,
-# the regex will properly deal with these cases:
-#
-# INCLUDE 'some_file'
-# INCLUDE 'some_file' !; INCLUDE 'some_file'
-#
-# To get around the above limitation, the FORTRAN programmer could
-# simply comment each INCLUDE statement separately, like this
-#
-# ! INCLUDE 'some_file' !; INCLUDE 'some_file'
-#
-# The way I see it, the only way to get around this limitation would
-# be to modify the scanning logic to replace the calls to re.findall
-# with a custom loop that processes each line separately, throwing
-# away fully commented out lines before attempting to match against
-# the INCLUDE syntax.
-#
-# Here is a breakdown of the regex:
-#
-# (?i) : regex is case insensitive
-# (?: : begin a non-saving group that matches the following:
-# ^ : either the start of the line
-# | : or
-# ['">]\s*; : a semicolon that follows a single quote,
-# double quote or greater than symbol (with any
-# amount of whitespace in between). This will
-# allow the regex to match multiple INCLUDE
-# statements per line (although it also requires
-# the positive lookahead assertion that is
-# used below). It will even properly deal with
-# (i.e. ignore) cases in which the additional
-# INCLUDES are part of an in-line comment, ala
-# " INCLUDE 'someFile' ! ; INCLUDE 'someFile2' "
-# ) : end of non-saving group
-# \s* : any amount of white space
-# INCLUDE : match the string INCLUDE, case insensitive
-# \s+ : match one or more white space characters
-# (?\w+_)? : match the optional "kind-param _" prefix allowed by the standard
-# [<"'] : match the include delimiter - an apostrophe, double quote, or less than symbol
-# (.+?) : match one or more characters that make up
-# the included path and file name and save it
-# in a group. The Fortran standard allows for
-# any non-control character to be used. The dot
-# operator will pick up any character, including
-# control codes, but I can't conceive of anyone
-# putting control codes in their file names.
-# The question mark indicates it is non-greedy so
-# that regex will match only up to the next quote,
-# double quote, or greater than symbol
-# (?=["'>]) : positive lookahead assertion to match the include
-# delimiter - an apostrophe, double quote, or
-# greater than symbol. This level of complexity
-# is required so that the include delimiter is
-# not consumed by the match, thus allowing the
-# sub-regex discussed above to uniquely match a
-# set of semicolon-separated INCLUDE statements
-# (as allowed by the F2003 standard)
-
- include_regex = """(?i)(?:^|['">]\s*;)\s*INCLUDE\s+(?:\w+_)?[<"'](.+?)(?=["'>])"""
-
-# The MODULE statement regex finds module definitions by matching
-# the following:
-#
-# MODULE module_name
-#
-# but *not* the following:
-#
-# MODULE PROCEDURE procedure_name
-#
-# Here is a breakdown of the regex:
-#
-# (?i) : regex is case insensitive
-# ^\s* : any amount of white space
-# MODULE : match the string MODULE, case insensitive
-# \s+ : match one or more white space characters
-# (?!PROCEDURE) : but *don't* match if the next word matches
-# PROCEDURE (negative lookahead assertion),
-# case insensitive
-# (\w+) : match one or more alphanumeric characters
-# that make up the defined module name and
-# save it in a group
-
- def_regex = """(?i)^\s*MODULE\s+(?!PROCEDURE)(\w+)"""
-
- scanner = F90Scanner("FortranScan",
- "$FORTRANSUFFIXES",
- path_variable,
- use_regex,
- include_regex,
- def_regex)
- return scanner
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Scanner/IDL.py b/Externals/scons-local/scons-local-2.0.1/SCons/Scanner/IDL.py
deleted file mode 100644
index 8ccda1b419..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Scanner/IDL.py
+++ /dev/null
@@ -1,48 +0,0 @@
-"""SCons.Scanner.IDL
-
-This module implements the depenency scanner for IDL (Interface
-Definition Language) files.
-
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Scanner/IDL.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import SCons.Node.FS
-import SCons.Scanner
-
-def IDLScan():
- """Return a prototype Scanner instance for scanning IDL source files"""
- cs = SCons.Scanner.ClassicCPP("IDLScan",
- "$IDLSUFFIXES",
- "CPPPATH",
- '^[ \t]*(?:#[ \t]*include|[ \t]*import)[ \t]+(<|")([^>"]+)(>|")')
- return cs
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Scanner/LaTeX.py b/Externals/scons-local/scons-local-2.0.1/SCons/Scanner/LaTeX.py
deleted file mode 100644
index ae542cf574..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Scanner/LaTeX.py
+++ /dev/null
@@ -1,384 +0,0 @@
-"""SCons.Scanner.LaTeX
-
-This module implements the dependency scanner for LaTeX code.
-
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Scanner/LaTeX.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import os.path
-import re
-
-import SCons.Scanner
-import SCons.Util
-
-# list of graphics file extensions for TeX and LaTeX
-TexGraphics = ['.eps', '.ps']
-LatexGraphics = ['.pdf', '.png', '.jpg', '.gif', '.tif']
-
-# Used as a return value of modify_env_var if the variable is not set.
-class _Null(object):
- pass
-_null = _Null
-
-# The user specifies the paths in env[variable], similar to other builders.
-# They may be relative and must be converted to absolute, as expected
-# by LaTeX and Co. The environment may already have some paths in
-# env['ENV'][var]. These paths are honored, but the env[var] paths have
-# higher precedence. All changes are un-done on exit.
-def modify_env_var(env, var, abspath):
- try:
- save = env['ENV'][var]
- except KeyError:
- save = _null
- env.PrependENVPath(var, abspath)
- try:
- if SCons.Util.is_List(env[var]):
- env.PrependENVPath(var, [os.path.abspath(str(p)) for p in env[var]])
- else:
- # Split at os.pathsep to convert into absolute path
- env.PrependENVPath(var, [os.path.abspath(p) for p in str(env[var]).split(os.pathsep)])
- except KeyError:
- pass
-
- # Convert into a string explicitly to append ":" (without which it won't search system
- # paths as well). The problem is that env.AppendENVPath(var, ":")
- # does not work, refuses to append ":" (os.pathsep).
-
- if SCons.Util.is_List(env['ENV'][var]):
- env['ENV'][var] = os.pathsep.join(env['ENV'][var])
- # Append the trailing os.pathsep character here to catch the case with no env[var]
- env['ENV'][var] = env['ENV'][var] + os.pathsep
-
- return save
-
-class FindENVPathDirs(object):
- """A class to bind a specific *PATH variable name to a function that
- will return all of the *path directories."""
- def __init__(self, variable):
- self.variable = variable
- def __call__(self, env, dir=None, target=None, source=None, argument=None):
- import SCons.PathList
- try:
- path = env['ENV'][self.variable]
- except KeyError:
- return ()
-
- dir = dir or env.fs._cwd
- path = SCons.PathList.PathList(path).subst_path(env, target, source)
- return tuple(dir.Rfindalldirs(path))
-
-
-
-def LaTeXScanner():
- """Return a prototype Scanner instance for scanning LaTeX source files
- when built with latex.
- """
- ds = LaTeX(name = "LaTeXScanner",
- suffixes = '$LATEXSUFFIXES',
- # in the search order, see below in LaTeX class docstring
- graphics_extensions = TexGraphics,
- recursive = 0)
- return ds
-
-def PDFLaTeXScanner():
- """Return a prototype Scanner instance for scanning LaTeX source files
- when built with pdflatex.
- """
- ds = LaTeX(name = "PDFLaTeXScanner",
- suffixes = '$LATEXSUFFIXES',
- # in the search order, see below in LaTeX class docstring
- graphics_extensions = LatexGraphics,
- recursive = 0)
- return ds
-
-class LaTeX(SCons.Scanner.Base):
- """Class for scanning LaTeX files for included files.
-
- Unlike most scanners, which use regular expressions that just
- return the included file name, this returns a tuple consisting
- of the keyword for the inclusion ("include", "includegraphics",
- "input", or "bibliography"), and then the file name itself.
- Based on a quick look at LaTeX documentation, it seems that we
- should append .tex suffix for the "include" keywords, append .tex if
- there is no extension for the "input" keyword, and need to add .bib
- for the "bibliography" keyword that does not accept extensions by itself.
-
- Finally, if there is no extension for an "includegraphics" keyword
- latex will append .ps or .eps to find the file, while pdftex may use .pdf,
- .jpg, .tif, .mps, or .png.
-
- The actual subset and search order may be altered by
- DeclareGraphicsExtensions command. This complication is ignored.
- The default order corresponds to experimentation with teTeX
- $ latex --version
- pdfeTeX 3.141592-1.21a-2.2 (Web2C 7.5.4)
- kpathsea version 3.5.4
- The order is:
- ['.eps', '.ps'] for latex
- ['.png', '.pdf', '.jpg', '.tif'].
-
- Another difference is that the search path is determined by the type
- of the file being searched:
- env['TEXINPUTS'] for "input" and "include" keywords
- env['TEXINPUTS'] for "includegraphics" keyword
- env['TEXINPUTS'] for "lstinputlisting" keyword
- env['BIBINPUTS'] for "bibliography" keyword
- env['BSTINPUTS'] for "bibliographystyle" keyword
-
- FIXME: also look for the class or style in document[class|style]{}
- FIXME: also look for the argument of bibliographystyle{}
- """
- keyword_paths = {'include': 'TEXINPUTS',
- 'input': 'TEXINPUTS',
- 'includegraphics': 'TEXINPUTS',
- 'bibliography': 'BIBINPUTS',
- 'bibliographystyle': 'BSTINPUTS',
- 'usepackage': 'TEXINPUTS',
- 'lstinputlisting': 'TEXINPUTS'}
- env_variables = SCons.Util.unique(list(keyword_paths.values()))
-
- def __init__(self, name, suffixes, graphics_extensions, *args, **kw):
-
- # We have to include \n with the % we exclude from the first part
- # part of the regex because the expression is compiled with re.M.
- # Without the \n, the ^ could match the beginning of a *previous*
- # line followed by one or more newline characters (i.e. blank
- # lines), interfering with a match on the next line.
- # add option for whitespace before the '[options]' or the '{filename}'
- regex = r'^[^%\n]*\\(include|includegraphics(?:\s*\[[^\]]+\])?|lstinputlisting(?:\[[^\]]+\])?|input|bibliography|usepackage)\s*{([^}]*)}'
- self.cre = re.compile(regex, re.M)
- self.comment_re = re.compile(r'^((?:(?:\\%)|[^%\n])*)(.*)$', re.M)
-
- self.graphics_extensions = graphics_extensions
-
- def _scan(node, env, path=(), self=self):
- node = node.rfile()
- if not node.exists():
- return []
- return self.scan_recurse(node, path)
-
- class FindMultiPathDirs(object):
- """The stock FindPathDirs function has the wrong granularity:
- it is called once per target, while we need the path that depends
- on what kind of included files is being searched. This wrapper
- hides multiple instances of FindPathDirs, one per the LaTeX path
- variable in the environment. When invoked, the function calculates
- and returns all the required paths as a dictionary (converted into
- a tuple to become hashable). Then the scan function converts it
- back and uses a dictionary of tuples rather than a single tuple
- of paths.
- """
- def __init__(self, dictionary):
- self.dictionary = {}
- for k,n in dictionary.items():
- self.dictionary[k] = ( SCons.Scanner.FindPathDirs(n),
- FindENVPathDirs(n) )
-
- def __call__(self, env, dir=None, target=None, source=None,
- argument=None):
- di = {}
- for k,(c,cENV) in self.dictionary.items():
- di[k] = ( c(env, dir=None, target=None, source=None,
- argument=None) ,
- cENV(env, dir=None, target=None, source=None,
- argument=None) )
- # To prevent "dict is not hashable error"
- return tuple(di.items())
-
- class LaTeXScanCheck(object):
- """Skip all but LaTeX source files, i.e., do not scan *.eps,
- *.pdf, *.jpg, etc.
- """
- def __init__(self, suffixes):
- self.suffixes = suffixes
- def __call__(self, node, env):
- current = not node.has_builder() or node.is_up_to_date()
- scannable = node.get_suffix() in env.subst_list(self.suffixes)[0]
- # Returning false means that the file is not scanned.
- return scannable and current
-
- kw['function'] = _scan
- kw['path_function'] = FindMultiPathDirs(LaTeX.keyword_paths)
- kw['recursive'] = 0
- kw['skeys'] = suffixes
- kw['scan_check'] = LaTeXScanCheck(suffixes)
- kw['name'] = name
-
- SCons.Scanner.Base.__init__(self, *args, **kw)
-
- def _latex_names(self, include):
- filename = include[1]
- if include[0] == 'input':
- base, ext = os.path.splitext( filename )
- if ext == "":
- return [filename + '.tex']
- if (include[0] == 'include'):
- return [filename + '.tex']
- if include[0] == 'bibliography':
- base, ext = os.path.splitext( filename )
- if ext == "":
- return [filename + '.bib']
- if include[0] == 'usepackage':
- base, ext = os.path.splitext( filename )
- if ext == "":
- return [filename + '.sty']
- if include[0] == 'includegraphics':
- base, ext = os.path.splitext( filename )
- if ext == "":
- #return [filename+e for e in self.graphics_extensions + TexGraphics]
- # use the line above to find dependencies for the PDF builder
- # when only an .eps figure is present. Since it will be found
- # if the user tells scons how to make the pdf figure, leave
- # it out for now.
- return [filename+e for e in self.graphics_extensions]
- return [filename]
-
- def sort_key(self, include):
- return SCons.Node.FS._my_normcase(str(include))
-
- def find_include(self, include, source_dir, path):
- try:
- sub_path = path[include[0]]
- except (IndexError, KeyError):
- sub_path = ()
- try_names = self._latex_names(include)
- for n in try_names:
- # see if we find it using the path in env[var]
- i = SCons.Node.FS.find_file(n, (source_dir,) + sub_path[0])
- if i:
- return i, include
- # see if we find it using the path in env['ENV'][var]
- i = SCons.Node.FS.find_file(n, (source_dir,) + sub_path[1])
- if i:
- return i, include
- return i, include
-
- def canonical_text(self, text):
- """Standardize an input TeX-file contents.
-
- Currently:
- * removes comments, unwrapping comment-wrapped lines.
- """
- out = []
- line_continues_a_comment = False
- for line in text.splitlines():
- line,comment = self.comment_re.findall(line)[0]
- if line_continues_a_comment == True:
- out[-1] = out[-1] + line.lstrip()
- else:
- out.append(line)
- line_continues_a_comment = len(comment) > 0
- return '\n'.join(out).rstrip()+'\n'
-
- def scan(self, node):
- # Modify the default scan function to allow for the regular
- # expression to return a comma separated list of file names
- # as can be the case with the bibliography keyword.
-
- # Cache the includes list in node so we only scan it once:
- # path_dict = dict(list(path))
- # add option for whitespace (\s) before the '['
- noopt_cre = re.compile('\s*\[.*$')
- if node.includes != None:
- includes = node.includes
- else:
- text = self.canonical_text(node.get_text_contents())
- includes = self.cre.findall(text)
- # 1. Split comma-separated lines, e.g.
- # ('bibliography', 'phys,comp')
- # should become two entries
- # ('bibliography', 'phys')
- # ('bibliography', 'comp')
- # 2. Remove the options, e.g., such as
- # ('includegraphics[clip,width=0.7\\linewidth]', 'picture.eps')
- # should become
- # ('includegraphics', 'picture.eps')
- split_includes = []
- for include in includes:
- inc_type = noopt_cre.sub('', include[0])
- inc_list = include[1].split(',')
- for j in range(len(inc_list)):
- split_includes.append( (inc_type, inc_list[j]) )
- #
- includes = split_includes
- node.includes = includes
-
- return includes
-
- def scan_recurse(self, node, path=()):
- """ do a recursive scan of the top level target file
- This lets us search for included files based on the
- directory of the main file just as latex does"""
-
- path_dict = dict(list(path))
-
- queue = []
- queue.extend( self.scan(node) )
- seen = {}
-
- # This is a hand-coded DSU (decorate-sort-undecorate, or
- # Schwartzian transform) pattern. The sort key is the raw name
- # of the file as specifed on the \include, \input, etc. line.
- # TODO: what about the comment in the original Classic scanner:
- # """which lets
- # us keep the sort order constant regardless of whether the file
- # is actually found in a Repository or locally."""
- nodes = []
- source_dir = node.get_dir()
- #for include in includes:
- while queue:
-
- include = queue.pop()
- try:
- if seen[include[1]] == 1:
- continue
- except KeyError:
- seen[include[1]] = 1
-
- #
- # Handle multiple filenames in include[1]
- #
- n, i = self.find_include(include, source_dir, path_dict)
- if n is None:
- # Do not bother with 'usepackage' warnings, as they most
- # likely refer to system-level files
- if include[0] != 'usepackage':
- SCons.Warnings.warn(SCons.Warnings.DependencyWarning,
- "No dependency generated for file: %s (included from: %s) -- file not found" % (i, node))
- else:
- sortkey = self.sort_key(n)
- nodes.append((sortkey, n))
- # recurse down
- queue.extend( self.scan(n) )
-
- return [pair[1] for pair in sorted(nodes)]
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Scanner/Prog.py b/Externals/scons-local/scons-local-2.0.1/SCons/Scanner/Prog.py
deleted file mode 100644
index 03121323b7..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Scanner/Prog.py
+++ /dev/null
@@ -1,101 +0,0 @@
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Scanner/Prog.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import SCons.Node
-import SCons.Node.FS
-import SCons.Scanner
-import SCons.Util
-
-# global, set by --debug=findlibs
-print_find_libs = None
-
-def ProgramScanner(**kw):
- """Return a prototype Scanner instance for scanning executable
- files for static-lib dependencies"""
- kw['path_function'] = SCons.Scanner.FindPathDirs('LIBPATH')
- ps = SCons.Scanner.Base(scan, "ProgramScanner", **kw)
- return ps
-
-def scan(node, env, libpath = ()):
- """
- This scanner scans program files for static-library
- dependencies. It will search the LIBPATH environment variable
- for libraries specified in the LIBS variable, returning any
- files it finds as dependencies.
- """
- try:
- libs = env['LIBS']
- except KeyError:
- # There are no LIBS in this environment, so just return a null list:
- return []
- if SCons.Util.is_String(libs):
- libs = libs.split()
- else:
- libs = SCons.Util.flatten(libs)
-
- try:
- prefix = env['LIBPREFIXES']
- if not SCons.Util.is_List(prefix):
- prefix = [ prefix ]
- except KeyError:
- prefix = [ '' ]
-
- try:
- suffix = env['LIBSUFFIXES']
- if not SCons.Util.is_List(suffix):
- suffix = [ suffix ]
- except KeyError:
- suffix = [ '' ]
-
- pairs = []
- for suf in map(env.subst, suffix):
- for pref in map(env.subst, prefix):
- pairs.append((pref, suf))
-
- result = []
-
- if callable(libpath):
- libpath = libpath()
-
- find_file = SCons.Node.FS.find_file
- adjustixes = SCons.Util.adjustixes
- for lib in libs:
- if SCons.Util.is_String(lib):
- lib = env.subst(lib)
- for pref, suf in pairs:
- l = adjustixes(lib, pref, suf)
- l = find_file(l, libpath, verbose=print_find_libs)
- if l:
- result.append(l)
- else:
- result.append(lib)
-
- return result
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Scanner/RC.py b/Externals/scons-local/scons-local-2.0.1/SCons/Scanner/RC.py
deleted file mode 100644
index 9013a093be..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Scanner/RC.py
+++ /dev/null
@@ -1,55 +0,0 @@
-"""SCons.Scanner.RC
-
-This module implements the depenency scanner for RC (Interface
-Definition Language) files.
-
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Scanner/RC.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import SCons.Node.FS
-import SCons.Scanner
-import re
-
-def RCScan():
- """Return a prototype Scanner instance for scanning RC source files"""
-
- res_re= r'^(?:\s*#\s*(?:include)|' \
- '.*?\s+(?:ICON|BITMAP|CURSOR|HTML|FONT|MESSAGETABLE|TYPELIB|REGISTRY|D3DFX)' \
- '\s*.*?)' \
- '\s*(<|"| )([^>"\s]+)(?:[>" ])*$'
- resScanner = SCons.Scanner.ClassicCPP( "ResourceScanner",
- "$RCSUFFIXES",
- "CPPPATH",
- res_re )
-
- return resScanner
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Scanner/__init__.py b/Externals/scons-local/scons-local-2.0.1/SCons/Scanner/__init__.py
deleted file mode 100644
index 1a8dcbcb99..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Scanner/__init__.py
+++ /dev/null
@@ -1,413 +0,0 @@
-"""SCons.Scanner
-
-The Scanner package for the SCons software construction utility.
-
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Scanner/__init__.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import re
-
-import SCons.Node.FS
-import SCons.Util
-
-
-class _Null(object):
- pass
-
-# This is used instead of None as a default argument value so None can be
-# used as an actual argument value.
-_null = _Null
-
-def Scanner(function, *args, **kw):
- """
- Public interface factory function for creating different types
- of Scanners based on the different types of "functions" that may
- be supplied.
-
- TODO: Deprecate this some day. We've moved the functionality
- inside the Base class and really don't need this factory function
- any more. It was, however, used by some of our Tool modules, so
- the call probably ended up in various people's custom modules
- patterned on SCons code.
- """
- if SCons.Util.is_Dict(function):
- return Selector(function, *args, **kw)
- else:
- return Base(function, *args, **kw)
-
-
-
-class FindPathDirs(object):
- """A class to bind a specific *PATH variable name to a function that
- will return all of the *path directories."""
- def __init__(self, variable):
- self.variable = variable
- def __call__(self, env, dir=None, target=None, source=None, argument=None):
- import SCons.PathList
- try:
- path = env[self.variable]
- except KeyError:
- return ()
-
- dir = dir or env.fs._cwd
- path = SCons.PathList.PathList(path).subst_path(env, target, source)
- return tuple(dir.Rfindalldirs(path))
-
-
-
-class Base(object):
- """
- The base class for dependency scanners. This implements
- straightforward, single-pass scanning of a single file.
- """
-
- def __init__(self,
- function,
- name = "NONE",
- argument = _null,
- skeys = _null,
- path_function = None,
- # Node.FS.Base so that, by default, it's okay for a
- # scanner to return a Dir, File or Entry.
- node_class = SCons.Node.FS.Base,
- node_factory = None,
- scan_check = None,
- recursive = None):
- """
- Construct a new scanner object given a scanner function.
-
- 'function' - a scanner function taking two or three
- arguments and returning a list of strings.
-
- 'name' - a name for identifying this scanner object.
-
- 'argument' - an optional argument that, if specified, will be
- passed to both the scanner function and the path_function.
-
- 'skeys' - an optional list argument that can be used to determine
- which scanner should be used for a given Node. In the case of File
- nodes, for example, the 'skeys' would be file suffixes.
-
- 'path_function' - a function that takes four or five arguments
- (a construction environment, Node for the directory containing
- the SConscript file that defined the primary target, list of
- target nodes, list of source nodes, and optional argument for
- this instance) and returns a tuple of the directories that can
- be searched for implicit dependency files. May also return a
- callable() which is called with no args and returns the tuple
- (supporting Bindable class).
-
- 'node_class' - the class of Nodes which this scan will return.
- If node_class is None, then this scanner will not enforce any
- Node conversion and will return the raw results from the
- underlying scanner function.
-
- 'node_factory' - the factory function to be called to translate
- the raw results returned by the scanner function into the
- expected node_class objects.
-
- 'scan_check' - a function to be called to first check whether
- this node really needs to be scanned.
-
- 'recursive' - specifies that this scanner should be invoked
- recursively on all of the implicit dependencies it returns
- (the canonical example being #include lines in C source files).
- May be a callable, which will be called to filter the list
- of nodes found to select a subset for recursive scanning
- (the canonical example being only recursively scanning
- subdirectories within a directory).
-
- The scanner function's first argument will be a Node that should
- be scanned for dependencies, the second argument will be an
- Environment object, the third argument will be the tuple of paths
- returned by the path_function, and the fourth argument will be
- the value passed into 'argument', and the returned list should
- contain the Nodes for all the direct dependencies of the file.
-
- Examples:
-
- s = Scanner(my_scanner_function)
-
- s = Scanner(function = my_scanner_function)
-
- s = Scanner(function = my_scanner_function, argument = 'foo')
-
- """
-
- # Note: this class could easily work with scanner functions that take
- # something other than a filename as an argument (e.g. a database
- # node) and a dependencies list that aren't file names. All that
- # would need to be changed is the documentation.
-
- self.function = function
- self.path_function = path_function
- self.name = name
- self.argument = argument
-
- if skeys is _null:
- if SCons.Util.is_Dict(function):
- skeys = list(function.keys())
- else:
- skeys = []
- self.skeys = skeys
-
- self.node_class = node_class
- self.node_factory = node_factory
- self.scan_check = scan_check
- if callable(recursive):
- self.recurse_nodes = recursive
- elif recursive:
- self.recurse_nodes = self._recurse_all_nodes
- else:
- self.recurse_nodes = self._recurse_no_nodes
-
- def path(self, env, dir=None, target=None, source=None):
- if not self.path_function:
- return ()
- if not self.argument is _null:
- return self.path_function(env, dir, target, source, self.argument)
- else:
- return self.path_function(env, dir, target, source)
-
- def __call__(self, node, env, path = ()):
- """
- This method scans a single object. 'node' is the node
- that will be passed to the scanner function, and 'env' is the
- environment that will be passed to the scanner function. A list of
- direct dependency nodes for the specified node will be returned.
- """
- if self.scan_check and not self.scan_check(node, env):
- return []
-
- self = self.select(node)
-
- if not self.argument is _null:
- list = self.function(node, env, path, self.argument)
- else:
- list = self.function(node, env, path)
-
- kw = {}
- if hasattr(node, 'dir'):
- kw['directory'] = node.dir
- node_factory = env.get_factory(self.node_factory)
- nodes = []
- for l in list:
- if self.node_class and not isinstance(l, self.node_class):
- l = node_factory(l, **kw)
- nodes.append(l)
- return nodes
-
- def __cmp__(self, other):
- try:
- return cmp(self.__dict__, other.__dict__)
- except AttributeError:
- # other probably doesn't have a __dict__
- return cmp(self.__dict__, other)
-
- def __hash__(self):
- return id(self)
-
- def __str__(self):
- return self.name
-
- def add_skey(self, skey):
- """Add a skey to the list of skeys"""
- self.skeys.append(skey)
-
- def get_skeys(self, env=None):
- if env and SCons.Util.is_String(self.skeys):
- return env.subst_list(self.skeys)[0]
- return self.skeys
-
- def select(self, node):
- if SCons.Util.is_Dict(self.function):
- key = node.scanner_key()
- try:
- return self.function[key]
- except KeyError:
- return None
- else:
- return self
-
- def _recurse_all_nodes(self, nodes):
- return nodes
-
- def _recurse_no_nodes(self, nodes):
- return []
-
- recurse_nodes = _recurse_no_nodes
-
- def add_scanner(self, skey, scanner):
- self.function[skey] = scanner
- self.add_skey(skey)
-
-
-class Selector(Base):
- """
- A class for selecting a more specific scanner based on the
- scanner_key() (suffix) for a specific Node.
-
- TODO: This functionality has been moved into the inner workings of
- the Base class, and this class will be deprecated at some point.
- (It was never exposed directly as part of the public interface,
- although it is used by the Scanner() factory function that was
- used by various Tool modules and therefore was likely a template
- for custom modules that may be out there.)
- """
- def __init__(self, dict, *args, **kw):
- Base.__init__(self, None, *args, **kw)
- self.dict = dict
- self.skeys = list(dict.keys())
-
- def __call__(self, node, env, path = ()):
- return self.select(node)(node, env, path)
-
- def select(self, node):
- try:
- return self.dict[node.scanner_key()]
- except KeyError:
- return None
-
- def add_scanner(self, skey, scanner):
- self.dict[skey] = scanner
- self.add_skey(skey)
-
-
-class Current(Base):
- """
- A class for scanning files that are source files (have no builder)
- or are derived files and are current (which implies that they exist,
- either locally or in a repository).
- """
-
- def __init__(self, *args, **kw):
- def current_check(node, env):
- return not node.has_builder() or node.is_up_to_date()
- kw['scan_check'] = current_check
- Base.__init__(self, *args, **kw)
-
-class Classic(Current):
- """
- A Scanner subclass to contain the common logic for classic CPP-style
- include scanning, but which can be customized to use different
- regular expressions to find the includes.
-
- Note that in order for this to work "out of the box" (without
- overriding the find_include() and sort_key() methods), the regular
- expression passed to the constructor must return the name of the
- include file in group 0.
- """
-
- def __init__(self, name, suffixes, path_variable, regex, *args, **kw):
-
- self.cre = re.compile(regex, re.M)
-
- def _scan(node, env, path=(), self=self):
- node = node.rfile()
- if not node.exists():
- return []
- return self.scan(node, path)
-
- kw['function'] = _scan
- kw['path_function'] = FindPathDirs(path_variable)
- kw['recursive'] = 1
- kw['skeys'] = suffixes
- kw['name'] = name
-
- Current.__init__(self, *args, **kw)
-
- def find_include(self, include, source_dir, path):
- n = SCons.Node.FS.find_file(include, (source_dir,) + tuple(path))
- return n, include
-
- def sort_key(self, include):
- return SCons.Node.FS._my_normcase(include)
-
- def find_include_names(self, node):
- return self.cre.findall(node.get_text_contents())
-
- def scan(self, node, path=()):
-
- # cache the includes list in node so we only scan it once:
- if node.includes is not None:
- includes = node.includes
- else:
- includes = self.find_include_names (node)
- # Intern the names of the include files. Saves some memory
- # if the same header is included many times.
- node.includes = list(map(SCons.Util.silent_intern, includes))
-
- # This is a hand-coded DSU (decorate-sort-undecorate, or
- # Schwartzian transform) pattern. The sort key is the raw name
- # of the file as specifed on the #include line (including the
- # " or <, since that may affect what file is found), which lets
- # us keep the sort order constant regardless of whether the file
- # is actually found in a Repository or locally.
- nodes = []
- source_dir = node.get_dir()
- if callable(path):
- path = path()
- for include in includes:
- n, i = self.find_include(include, source_dir, path)
-
- if n is None:
- SCons.Warnings.warn(SCons.Warnings.DependencyWarning,
- "No dependency generated for file: %s (included from: %s) -- file not found" % (i, node))
- else:
- nodes.append((self.sort_key(include), n))
-
- return [pair[1] for pair in sorted(nodes)]
-
-class ClassicCPP(Classic):
- """
- A Classic Scanner subclass which takes into account the type of
- bracketing used to include the file, and uses classic CPP rules
- for searching for the files based on the bracketing.
-
- Note that in order for this to work, the regular expression passed
- to the constructor must return the leading bracket in group 0, and
- the contained filename in group 1.
- """
- def find_include(self, include, source_dir, path):
- if include[0] == '"':
- paths = (source_dir,) + tuple(path)
- else:
- paths = tuple(path) + (source_dir,)
-
- n = SCons.Node.FS.find_file(include[1], paths)
-
- i = SCons.Util.silent_intern(include[1])
- return n, i
-
- def sort_key(self, include):
- return SCons.Node.FS._my_normcase(' '.join(include))
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Script/Interactive.py b/Externals/scons-local/scons-local-2.0.1/SCons/Script/Interactive.py
deleted file mode 100644
index e2906d4e0b..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Script/Interactive.py
+++ /dev/null
@@ -1,384 +0,0 @@
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-__revision__ = "src/engine/SCons/Script/Interactive.py 5134 2010/08/16 23:02:40 bdeegan"
-
-__doc__ = """
-SCons interactive mode
-"""
-
-# TODO:
-#
-# This has the potential to grow into something with a really big life
-# of its own, which might or might not be a good thing. Nevertheless,
-# here are some enhancements that will probably be requested some day
-# and are worth keeping in mind (assuming this takes off):
-#
-# - A command to re-read / re-load the SConscript files. This may
-# involve allowing people to specify command-line options (e.g. -f,
-# -I, --no-site-dir) that affect how the SConscript files are read.
-#
-# - Additional command-line options on the "build" command.
-#
-# Of the supported options that seemed to make sense (after a quick
-# pass through the list), the ones that seemed likely enough to be
-# used are listed in the man page and have explicit test scripts.
-#
-# These had code changed in Script/Main.py to support them, but didn't
-# seem likely to be used regularly, so had no test scripts added:
-#
-# build --diskcheck=*
-# build --implicit-cache=*
-# build --implicit-deps-changed=*
-# build --implicit-deps-unchanged=*
-#
-# These look like they should "just work" with no changes to the
-# existing code, but like those above, look unlikely to be used and
-# therefore had no test scripts added:
-#
-# build --random
-#
-# These I'm not sure about. They might be useful for individual
-# "build" commands, and may even work, but they seem unlikely enough
-# that we'll wait until they're requested before spending any time on
-# writing test scripts for them, or investigating whether they work.
-#
-# build -q [??? is there a useful analog to the exit status?]
-# build --duplicate=
-# build --profile=
-# build --max-drift=
-# build --warn=*
-# build --Y
-#
-# - Most of the SCons command-line options that the "build" command
-# supports should be settable as default options that apply to all
-# subsequent "build" commands. Maybe a "set {option}" command that
-# maps to "SetOption('{option}')".
-#
-# - Need something in the 'help' command that prints the -h output.
-#
-# - A command to run the configure subsystem separately (must see how
-# this interacts with the new automake model).
-#
-# - Command-line completion of target names; maybe even of SCons options?
-# Completion is something that's supported by the Python cmd module,
-# so this should be doable without too much trouble.
-#
-
-import cmd
-import copy
-import os
-import re
-import shlex
-import sys
-
-try:
- import readline
-except ImportError:
- pass
-
-class SConsInteractiveCmd(cmd.Cmd):
- """\
- build [TARGETS] Build the specified TARGETS and their dependencies.
- 'b' is a synonym.
- clean [TARGETS] Clean (remove) the specified TARGETS and their
- dependencies. 'c' is a synonym.
- exit Exit SCons interactive mode.
- help [COMMAND] Prints help for the specified COMMAND. 'h' and
- '?' are synonyms.
- shell [COMMANDLINE] Execute COMMANDLINE in a subshell. 'sh' and '!'
- are synonyms.
- version Prints SCons version information.
- """
-
- synonyms = {
- 'b' : 'build',
- 'c' : 'clean',
- 'h' : 'help',
- 'scons' : 'build',
- 'sh' : 'shell',
- }
-
- def __init__(self, **kw):
- cmd.Cmd.__init__(self)
- for key, val in kw.items():
- setattr(self, key, val)
-
- if sys.platform == 'win32':
- self.shell_variable = 'COMSPEC'
- else:
- self.shell_variable = 'SHELL'
-
- def default(self, argv):
- print "*** Unknown command: %s" % argv[0]
-
- def onecmd(self, line):
- line = line.strip()
- if not line:
- print self.lastcmd
- return self.emptyline()
- self.lastcmd = line
- if line[0] == '!':
- line = 'shell ' + line[1:]
- elif line[0] == '?':
- line = 'help ' + line[1:]
- if os.sep == '\\':
- line = line.replace('\\', '\\\\')
- argv = shlex.split(line)
- argv[0] = self.synonyms.get(argv[0], argv[0])
- if not argv[0]:
- return self.default(line)
- else:
- try:
- func = getattr(self, 'do_' + argv[0])
- except AttributeError:
- return self.default(argv)
- return func(argv)
-
- def do_build(self, argv):
- """\
- build [TARGETS] Build the specified TARGETS and their
- dependencies. 'b' is a synonym.
- """
- import SCons.Node
- import SCons.SConsign
- import SCons.Script.Main
-
- options = copy.deepcopy(self.options)
-
- options, targets = self.parser.parse_args(argv[1:], values=options)
-
- SCons.Script.COMMAND_LINE_TARGETS = targets
-
- if targets:
- SCons.Script.BUILD_TARGETS = targets
- else:
- # If the user didn't specify any targets on the command line,
- # use the list of default targets.
- SCons.Script.BUILD_TARGETS = SCons.Script._build_plus_default
-
- nodes = SCons.Script.Main._build_targets(self.fs,
- options,
- targets,
- self.target_top)
-
- if not nodes:
- return
-
- # Call each of the Node's alter_targets() methods, which may
- # provide additional targets that ended up as part of the build
- # (the canonical example being a VariantDir() when we're building
- # from a source directory) and which we therefore need their
- # state cleared, too.
- x = []
- for n in nodes:
- x.extend(n.alter_targets()[0])
- nodes.extend(x)
-
- # Clean up so that we can perform the next build correctly.
- #
- # We do this by walking over all the children of the targets,
- # and clearing their state.
- #
- # We currently have to re-scan each node to find their
- # children, because built nodes have already been partially
- # cleared and don't remember their children. (In scons
- # 0.96.1 and earlier, this wasn't the case, and we didn't
- # have to re-scan the nodes.)
- #
- # Because we have to re-scan each node, we can't clear the
- # nodes as we walk over them, because we may end up rescanning
- # a cleared node as we scan a later node. Therefore, only
- # store the list of nodes that need to be cleared as we walk
- # the tree, and clear them in a separate pass.
- #
- # XXX: Someone more familiar with the inner workings of scons
- # may be able to point out a more efficient way to do this.
-
- SCons.Script.Main.progress_display("scons: Clearing cached node information ...")
-
- seen_nodes = {}
-
- def get_unseen_children(node, parent, seen_nodes=seen_nodes):
- def is_unseen(node, seen_nodes=seen_nodes):
- return node not in seen_nodes
- return list(filter(is_unseen, node.children(scan=1)))
-
- def add_to_seen_nodes(node, parent, seen_nodes=seen_nodes):
- seen_nodes[node] = 1
-
- # If this file is in a VariantDir and has a
- # corresponding source file in the source tree, remember the
- # node in the source tree, too. This is needed in
- # particular to clear cached implicit dependencies on the
- # source file, since the scanner will scan it if the
- # VariantDir was created with duplicate=0.
- try:
- rfile_method = node.rfile
- except AttributeError:
- return
- else:
- rfile = rfile_method()
- if rfile != node:
- seen_nodes[rfile] = 1
-
- for node in nodes:
- walker = SCons.Node.Walker(node,
- kids_func=get_unseen_children,
- eval_func=add_to_seen_nodes)
- n = walker.get_next()
- while n:
- n = walker.get_next()
-
- for node in seen_nodes.keys():
- # Call node.clear() to clear most of the state
- node.clear()
- # node.clear() doesn't reset node.state, so call
- # node.set_state() to reset it manually
- node.set_state(SCons.Node.no_state)
- node.implicit = None
-
- # Debug: Uncomment to verify that all Taskmaster reference
- # counts have been reset to zero.
- #if node.ref_count != 0:
- # from SCons.Debug import Trace
- # Trace('node %s, ref_count %s !!!\n' % (node, node.ref_count))
-
- SCons.SConsign.Reset()
- SCons.Script.Main.progress_display("scons: done clearing node information.")
-
- def do_clean(self, argv):
- """\
- clean [TARGETS] Clean (remove) the specified TARGETS
- and their dependencies. 'c' is a synonym.
- """
- return self.do_build(['build', '--clean'] + argv[1:])
-
- def do_EOF(self, argv):
- print
- self.do_exit(argv)
-
- def _do_one_help(self, arg):
- try:
- # If help_() exists, then call it.
- func = getattr(self, 'help_' + arg)
- except AttributeError:
- try:
- func = getattr(self, 'do_' + arg)
- except AttributeError:
- doc = None
- else:
- doc = self._doc_to_help(func)
- if doc:
- sys.stdout.write(doc + '\n')
- sys.stdout.flush()
- else:
- doc = self.strip_initial_spaces(func())
- if doc:
- sys.stdout.write(doc + '\n')
- sys.stdout.flush()
-
- def _doc_to_help(self, obj):
- doc = obj.__doc__
- if doc is None:
- return ''
- return self._strip_initial_spaces(doc)
-
- def _strip_initial_spaces(self, s):
- #lines = s.split('\n')
- lines = s.split('\n')
- spaces = re.match(' *', lines[0]).group(0)
- #def strip_spaces(l):
- # if l.startswith(spaces):
- # l = l[len(spaces):]
- # return l
- #return '\n'.join([ strip_spaces(l) for l in lines ])
- def strip_spaces(l, spaces=spaces):
- if l[:len(spaces)] == spaces:
- l = l[len(spaces):]
- return l
- lines = list(map(strip_spaces, lines))
- return '\n'.join(lines)
-
- def do_exit(self, argv):
- """\
- exit Exit SCons interactive mode.
- """
- sys.exit(0)
-
- def do_help(self, argv):
- """\
- help [COMMAND] Prints help for the specified COMMAND. 'h'
- and '?' are synonyms.
- """
- if argv[1:]:
- for arg in argv[1:]:
- if self._do_one_help(arg):
- break
- else:
- # If bare 'help' is called, print this class's doc
- # string (if it has one).
- doc = self._doc_to_help(self.__class__)
- if doc:
- sys.stdout.write(doc + '\n')
- sys.stdout.flush()
-
- def do_shell(self, argv):
- """\
- shell [COMMANDLINE] Execute COMMANDLINE in a subshell. 'sh' and
- '!' are synonyms.
- """
- import subprocess
- argv = argv[1:]
- if not argv:
- argv = os.environ[self.shell_variable]
- try:
- # Per "[Python-Dev] subprocess insufficiently platform-independent?"
- # http://mail.python.org/pipermail/python-dev/2008-August/081979.html "+
- # Doing the right thing with an argument list currently
- # requires different shell= values on Windows and Linux.
- p = subprocess.Popen(argv, shell=(sys.platform=='win32'))
- except EnvironmentError, e:
- sys.stderr.write('scons: %s: %s\n' % (argv[0], e.strerror))
- else:
- p.wait()
-
- def do_version(self, argv):
- """\
- version Prints SCons version information.
- """
- sys.stdout.write(self.parser.version + '\n')
-
-def interact(fs, parser, options, targets, target_top):
- c = SConsInteractiveCmd(prompt = 'scons>>> ',
- fs = fs,
- parser = parser,
- options = options,
- targets = targets,
- target_top = target_top)
- c.cmdloop()
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Script/Main.py b/Externals/scons-local/scons-local-2.0.1/SCons/Script/Main.py
deleted file mode 100644
index 31bcff3d6b..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Script/Main.py
+++ /dev/null
@@ -1,1334 +0,0 @@
-"""SCons.Script
-
-This file implements the main() function used by the scons script.
-
-Architecturally, this *is* the scons script, and will likely only be
-called from the external "scons" wrapper. Consequently, anything here
-should not be, or be considered, part of the build engine. If it's
-something that we expect other software to want to use, it should go in
-some other module. If it's specific to the "scons" script invocation,
-it goes here.
-"""
-
-unsupported_python_version = (2, 3, 0)
-deprecated_python_version = (2, 4, 0)
-
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-__revision__ = "src/engine/SCons/Script/Main.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import SCons.compat
-
-import os
-import sys
-import time
-import traceback
-
-# Strip the script directory from sys.path() so on case-insensitive
-# (Windows) systems Python doesn't think that the "scons" script is the
-# "SCons" package. Replace it with our own version directory so, if
-# if they're there, we pick up the right version of the build engine
-# modules.
-#sys.path = [os.path.join(sys.prefix,
-# 'lib',
-# 'scons-%d' % SCons.__version__)] + sys.path[1:]
-
-import SCons.CacheDir
-import SCons.Debug
-import SCons.Defaults
-import SCons.Environment
-import SCons.Errors
-import SCons.Job
-import SCons.Node
-import SCons.Node.FS
-import SCons.SConf
-import SCons.Script
-import SCons.Taskmaster
-import SCons.Util
-import SCons.Warnings
-
-import SCons.Script.Interactive
-
-def fetch_win32_parallel_msg():
- # A subsidiary function that exists solely to isolate this import
- # so we don't have to pull it in on all platforms, and so that an
- # in-line "import" statement in the _main() function below doesn't
- # cause warnings about local names shadowing use of the 'SCons'
- # globl in nest scopes and UnboundLocalErrors and the like in some
- # versions (2.1) of Python.
- import SCons.Platform.win32
- return SCons.Platform.win32.parallel_msg
-
-#
-
-class SConsPrintHelpException(Exception):
- pass
-
-display = SCons.Util.display
-progress_display = SCons.Util.DisplayEngine()
-
-first_command_start = None
-last_command_end = None
-
-class Progressor(object):
- prev = ''
- count = 0
- target_string = '$TARGET'
-
- def __init__(self, obj, interval=1, file=None, overwrite=False):
- if file is None:
- file = sys.stdout
-
- self.obj = obj
- self.file = file
- self.interval = interval
- self.overwrite = overwrite
-
- if callable(obj):
- self.func = obj
- elif SCons.Util.is_List(obj):
- self.func = self.spinner
- elif obj.find(self.target_string) != -1:
- self.func = self.replace_string
- else:
- self.func = self.string
-
- def write(self, s):
- self.file.write(s)
- self.file.flush()
- self.prev = s
-
- def erase_previous(self):
- if self.prev:
- length = len(self.prev)
- if self.prev[-1] in ('\n', '\r'):
- length = length - 1
- self.write(' ' * length + '\r')
- self.prev = ''
-
- def spinner(self, node):
- self.write(self.obj[self.count % len(self.obj)])
-
- def string(self, node):
- self.write(self.obj)
-
- def replace_string(self, node):
- self.write(self.obj.replace(self.target_string, str(node)))
-
- def __call__(self, node):
- self.count = self.count + 1
- if (self.count % self.interval) == 0:
- if self.overwrite:
- self.erase_previous()
- self.func(node)
-
-ProgressObject = SCons.Util.Null()
-
-def Progress(*args, **kw):
- global ProgressObject
- ProgressObject = Progressor(*args, **kw)
-
-# Task control.
-#
-
-_BuildFailures = []
-
-def GetBuildFailures():
- return _BuildFailures
-
-class BuildTask(SCons.Taskmaster.OutOfDateTask):
- """An SCons build task."""
- progress = ProgressObject
-
- def display(self, message):
- display('scons: ' + message)
-
- def prepare(self):
- self.progress(self.targets[0])
- return SCons.Taskmaster.OutOfDateTask.prepare(self)
-
- def needs_execute(self):
- if SCons.Taskmaster.OutOfDateTask.needs_execute(self):
- return True
- if self.top and self.targets[0].has_builder():
- display("scons: `%s' is up to date." % str(self.node))
- return False
-
- def execute(self):
- if print_time:
- start_time = time.time()
- global first_command_start
- if first_command_start is None:
- first_command_start = start_time
- SCons.Taskmaster.OutOfDateTask.execute(self)
- if print_time:
- global cumulative_command_time
- global last_command_end
- finish_time = time.time()
- last_command_end = finish_time
- cumulative_command_time = cumulative_command_time+finish_time-start_time
- sys.stdout.write("Command execution time: %f seconds\n"%(finish_time-start_time))
-
- def do_failed(self, status=2):
- _BuildFailures.append(self.exception[1])
- global exit_status
- global this_build_status
- if self.options.ignore_errors:
- SCons.Taskmaster.OutOfDateTask.executed(self)
- elif self.options.keep_going:
- SCons.Taskmaster.OutOfDateTask.fail_continue(self)
- exit_status = status
- this_build_status = status
- else:
- SCons.Taskmaster.OutOfDateTask.fail_stop(self)
- exit_status = status
- this_build_status = status
-
- def executed(self):
- t = self.targets[0]
- if self.top and not t.has_builder() and not t.side_effect:
- if not t.exists():
- if t.__class__.__name__ in ('File', 'Dir', 'Entry'):
- errstr="Do not know how to make %s target `%s' (%s)." % (t.__class__.__name__, t, t.abspath)
- else: # Alias or Python or ...
- errstr="Do not know how to make %s target `%s'." % (t.__class__.__name__, t)
- sys.stderr.write("scons: *** " + errstr)
- if not self.options.keep_going:
- sys.stderr.write(" Stop.")
- sys.stderr.write("\n")
- try:
- raise SCons.Errors.BuildError(t, errstr)
- except KeyboardInterrupt:
- raise
- except:
- self.exception_set()
- self.do_failed()
- else:
- print "scons: Nothing to be done for `%s'." % t
- SCons.Taskmaster.OutOfDateTask.executed(self)
- else:
- SCons.Taskmaster.OutOfDateTask.executed(self)
-
- def failed(self):
- # Handle the failure of a build task. The primary purpose here
- # is to display the various types of Errors and Exceptions
- # appropriately.
- exc_info = self.exc_info()
- try:
- t, e, tb = exc_info
- except ValueError:
- t, e = exc_info
- tb = None
-
- if t is None:
- # The Taskmaster didn't record an exception for this Task;
- # see if the sys module has one.
- try:
- t, e, tb = sys.exc_info()[:]
- except ValueError:
- t, e = exc_info
- tb = None
-
- # Deprecated string exceptions will have their string stored
- # in the first entry of the tuple.
- if e is None:
- e = t
-
- buildError = SCons.Errors.convert_to_BuildError(e)
- if not buildError.node:
- buildError.node = self.node
-
- node = buildError.node
- if not SCons.Util.is_List(node):
- node = [ node ]
- nodename = ', '.join(map(str, node))
-
- errfmt = "scons: *** [%s] %s\n"
- sys.stderr.write(errfmt % (nodename, buildError))
-
- if (buildError.exc_info[2] and buildError.exc_info[1] and
- not isinstance(
- buildError.exc_info[1],
- (EnvironmentError, SCons.Errors.StopError,
- SCons.Errors.UserError))):
- type, value, trace = buildError.exc_info
- traceback.print_exception(type, value, trace)
- elif tb and print_stacktrace:
- sys.stderr.write("scons: internal stack trace:\n")
- traceback.print_tb(tb, file=sys.stderr)
-
- self.exception = (e, buildError, tb) # type, value, traceback
- self.do_failed(buildError.exitstatus)
-
- self.exc_clear()
-
- def postprocess(self):
- if self.top:
- t = self.targets[0]
- for tp in self.options.tree_printers:
- tp.display(t)
- if self.options.debug_includes:
- tree = t.render_include_tree()
- if tree:
- print
- print tree
- SCons.Taskmaster.OutOfDateTask.postprocess(self)
-
- def make_ready(self):
- """Make a task ready for execution"""
- SCons.Taskmaster.OutOfDateTask.make_ready(self)
- if self.out_of_date and self.options.debug_explain:
- explanation = self.out_of_date[0].explain()
- if explanation:
- sys.stdout.write("scons: " + explanation)
-
-class CleanTask(SCons.Taskmaster.AlwaysTask):
- """An SCons clean task."""
- def fs_delete(self, path, pathstr, remove=1):
- try:
- if os.path.lexists(path):
- if os.path.isfile(path) or os.path.islink(path):
- if remove: os.unlink(path)
- display("Removed " + pathstr)
- elif os.path.isdir(path) and not os.path.islink(path):
- # delete everything in the dir
- for e in sorted(os.listdir(path)):
- p = os.path.join(path, e)
- s = os.path.join(pathstr, e)
- if os.path.isfile(p):
- if remove: os.unlink(p)
- display("Removed " + s)
- else:
- self.fs_delete(p, s, remove)
- # then delete dir itself
- if remove: os.rmdir(path)
- display("Removed directory " + pathstr)
- else:
- errstr = "Path '%s' exists but isn't a file or directory."
- raise SCons.Errors.UserError(errstr % (pathstr))
- except SCons.Errors.UserError, e:
- print e
- except (IOError, OSError), e:
- print "scons: Could not remove '%s':" % pathstr, e.strerror
-
- def show(self):
- target = self.targets[0]
- if (target.has_builder() or target.side_effect) and not target.noclean:
- for t in self.targets:
- if not t.isdir():
- display("Removed " + str(t))
- if target in SCons.Environment.CleanTargets:
- files = SCons.Environment.CleanTargets[target]
- for f in files:
- self.fs_delete(f.abspath, str(f), 0)
-
- def remove(self):
- target = self.targets[0]
- if (target.has_builder() or target.side_effect) and not target.noclean:
- for t in self.targets:
- try:
- removed = t.remove()
- except OSError, e:
- # An OSError may indicate something like a permissions
- # issue, an IOError would indicate something like
- # the file not existing. In either case, print a
- # message and keep going to try to remove as many
- # targets aa possible.
- print "scons: Could not remove '%s':" % str(t), e.strerror
- else:
- if removed:
- display("Removed " + str(t))
- if target in SCons.Environment.CleanTargets:
- files = SCons.Environment.CleanTargets[target]
- for f in files:
- self.fs_delete(f.abspath, str(f))
-
- execute = remove
-
- # We want the Taskmaster to update the Node states (and therefore
- # handle reference counts, etc.), but we don't want to call
- # back to the Node's post-build methods, which would do things
- # we don't want, like store .sconsign information.
- executed = SCons.Taskmaster.Task.executed_without_callbacks
-
- # Have the taskmaster arrange to "execute" all of the targets, because
- # we'll figure out ourselves (in remove() or show() above) whether
- # anything really needs to be done.
- make_ready = SCons.Taskmaster.Task.make_ready_all
-
- def prepare(self):
- pass
-
-class QuestionTask(SCons.Taskmaster.AlwaysTask):
- """An SCons task for the -q (question) option."""
- def prepare(self):
- pass
-
- def execute(self):
- if self.targets[0].get_state() != SCons.Node.up_to_date or \
- (self.top and not self.targets[0].exists()):
- global exit_status
- global this_build_status
- exit_status = 1
- this_build_status = 1
- self.tm.stop()
-
- def executed(self):
- pass
-
-
-class TreePrinter(object):
- def __init__(self, derived=False, prune=False, status=False):
- self.derived = derived
- self.prune = prune
- self.status = status
- def get_all_children(self, node):
- return node.all_children()
- def get_derived_children(self, node):
- children = node.all_children(None)
- return [x for x in children if x.has_builder()]
- def display(self, t):
- if self.derived:
- func = self.get_derived_children
- else:
- func = self.get_all_children
- s = self.status and 2 or 0
- SCons.Util.print_tree(t, func, prune=self.prune, showtags=s)
-
-
-def python_version_string():
- return sys.version.split()[0]
-
-def python_version_unsupported(version=sys.version_info):
- return version < unsupported_python_version
-
-def python_version_deprecated(version=sys.version_info):
- return version < deprecated_python_version
-
-
-# Global variables
-
-print_objects = 0
-print_memoizer = 0
-print_stacktrace = 0
-print_time = 0
-sconscript_time = 0
-cumulative_command_time = 0
-exit_status = 0 # final exit status, assume success by default
-this_build_status = 0 # "exit status" of an individual build
-num_jobs = None
-delayed_warnings = []
-
-class FakeOptionParser(object):
- """
- A do-nothing option parser, used for the initial OptionsParser variable.
-
- During normal SCons operation, the OptionsParser is created right
- away by the main() function. Certain tests scripts however, can
- introspect on different Tool modules, the initialization of which
- can try to add a new, local option to an otherwise uninitialized
- OptionsParser object. This allows that introspection to happen
- without blowing up.
-
- """
- class FakeOptionValues(object):
- def __getattr__(self, attr):
- return None
- values = FakeOptionValues()
- def add_local_option(self, *args, **kw):
- pass
-
-OptionsParser = FakeOptionParser()
-
-def AddOption(*args, **kw):
- if 'default' not in kw:
- kw['default'] = None
- result = OptionsParser.add_local_option(*args, **kw)
- return result
-
-def GetOption(name):
- return getattr(OptionsParser.values, name)
-
-def SetOption(name, value):
- return OptionsParser.values.set_option(name, value)
-
-#
-class Stats(object):
- def __init__(self):
- self.stats = []
- self.labels = []
- self.append = self.do_nothing
- self.print_stats = self.do_nothing
- def enable(self, outfp):
- self.outfp = outfp
- self.append = self.do_append
- self.print_stats = self.do_print
- def do_nothing(self, *args, **kw):
- pass
-
-class CountStats(Stats):
- def do_append(self, label):
- self.labels.append(label)
- self.stats.append(SCons.Debug.fetchLoggedInstances())
- def do_print(self):
- stats_table = {}
- for s in self.stats:
- for n in [t[0] for t in s]:
- stats_table[n] = [0, 0, 0, 0]
- i = 0
- for s in self.stats:
- for n, c in s:
- stats_table[n][i] = c
- i = i + 1
- self.outfp.write("Object counts:\n")
- pre = [" "]
- post = [" %s\n"]
- l = len(self.stats)
- fmt1 = ''.join(pre + [' %7s']*l + post)
- fmt2 = ''.join(pre + [' %7d']*l + post)
- labels = self.labels[:l]
- labels.append(("", "Class"))
- self.outfp.write(fmt1 % tuple([x[0] for x in labels]))
- self.outfp.write(fmt1 % tuple([x[1] for x in labels]))
- for k in sorted(stats_table.keys()):
- r = stats_table[k][:l] + [k]
- self.outfp.write(fmt2 % tuple(r))
-
-count_stats = CountStats()
-
-class MemStats(Stats):
- def do_append(self, label):
- self.labels.append(label)
- self.stats.append(SCons.Debug.memory())
- def do_print(self):
- fmt = 'Memory %-32s %12d\n'
- for label, stats in zip(self.labels, self.stats):
- self.outfp.write(fmt % (label, stats))
-
-memory_stats = MemStats()
-
-# utility functions
-
-def _scons_syntax_error(e):
- """Handle syntax errors. Print out a message and show where the error
- occurred.
- """
- etype, value, tb = sys.exc_info()
- lines = traceback.format_exception_only(etype, value)
- for line in lines:
- sys.stderr.write(line+'\n')
- sys.exit(2)
-
-def find_deepest_user_frame(tb):
- """
- Find the deepest stack frame that is not part of SCons.
-
- Input is a "pre-processed" stack trace in the form
- returned by traceback.extract_tb() or traceback.extract_stack()
- """
-
- tb.reverse()
-
- # find the deepest traceback frame that is not part
- # of SCons:
- for frame in tb:
- filename = frame[0]
- if filename.find(os.sep+'SCons'+os.sep) == -1:
- return frame
- return tb[0]
-
-def _scons_user_error(e):
- """Handle user errors. Print out a message and a description of the
- error, along with the line number and routine where it occured.
- The file and line number will be the deepest stack frame that is
- not part of SCons itself.
- """
- global print_stacktrace
- etype, value, tb = sys.exc_info()
- if print_stacktrace:
- traceback.print_exception(etype, value, tb)
- filename, lineno, routine, dummy = find_deepest_user_frame(traceback.extract_tb(tb))
- sys.stderr.write("\nscons: *** %s\n" % value)
- sys.stderr.write('File "%s", line %d, in %s\n' % (filename, lineno, routine))
- sys.exit(2)
-
-def _scons_user_warning(e):
- """Handle user warnings. Print out a message and a description of
- the warning, along with the line number and routine where it occured.
- The file and line number will be the deepest stack frame that is
- not part of SCons itself.
- """
- etype, value, tb = sys.exc_info()
- filename, lineno, routine, dummy = find_deepest_user_frame(traceback.extract_tb(tb))
- sys.stderr.write("\nscons: warning: %s\n" % e)
- sys.stderr.write('File "%s", line %d, in %s\n' % (filename, lineno, routine))
-
-def _scons_internal_warning(e):
- """Slightly different from _scons_user_warning in that we use the
- *current call stack* rather than sys.exc_info() to get our stack trace.
- This is used by the warnings framework to print warnings."""
- filename, lineno, routine, dummy = find_deepest_user_frame(traceback.extract_stack())
- sys.stderr.write("\nscons: warning: %s\n" % e.args[0])
- sys.stderr.write('File "%s", line %d, in %s\n' % (filename, lineno, routine))
-
-def _scons_internal_error():
- """Handle all errors but user errors. Print out a message telling
- the user what to do in this case and print a normal trace.
- """
- print 'internal error'
- traceback.print_exc()
- sys.exit(2)
-
-def _SConstruct_exists(dirname='', repositories=[], filelist=None):
- """This function checks that an SConstruct file exists in a directory.
- If so, it returns the path of the file. By default, it checks the
- current directory.
- """
- if not filelist:
- filelist = ['SConstruct', 'Sconstruct', 'sconstruct']
- for file in filelist:
- sfile = os.path.join(dirname, file)
- if os.path.isfile(sfile):
- return sfile
- if not os.path.isabs(sfile):
- for rep in repositories:
- if os.path.isfile(os.path.join(rep, sfile)):
- return sfile
- return None
-
-def _set_debug_values(options):
- global print_memoizer, print_objects, print_stacktrace, print_time
-
- debug_values = options.debug
-
- if "count" in debug_values:
- # All of the object counts are within "if __debug__:" blocks,
- # which get stripped when running optimized (with python -O or
- # from compiled *.pyo files). Provide a warning if __debug__ is
- # stripped, so it doesn't just look like --debug=count is broken.
- enable_count = False
- if __debug__: enable_count = True
- if enable_count:
- count_stats.enable(sys.stdout)
- else:
- msg = "--debug=count is not supported when running SCons\n" + \
- "\twith the python -O option or optimized (.pyo) modules."
- SCons.Warnings.warn(SCons.Warnings.NoObjectCountWarning, msg)
- if "dtree" in debug_values:
- options.tree_printers.append(TreePrinter(derived=True))
- options.debug_explain = ("explain" in debug_values)
- if "findlibs" in debug_values:
- SCons.Scanner.Prog.print_find_libs = "findlibs"
- options.debug_includes = ("includes" in debug_values)
- print_memoizer = ("memoizer" in debug_values)
- if "memory" in debug_values:
- memory_stats.enable(sys.stdout)
- print_objects = ("objects" in debug_values)
- if "presub" in debug_values:
- SCons.Action.print_actions_presub = 1
- if "stacktrace" in debug_values:
- print_stacktrace = 1
- if "stree" in debug_values:
- options.tree_printers.append(TreePrinter(status=True))
- if "time" in debug_values:
- print_time = 1
- if "tree" in debug_values:
- options.tree_printers.append(TreePrinter())
-
-def _create_path(plist):
- path = '.'
- for d in plist:
- if os.path.isabs(d):
- path = d
- else:
- path = path + '/' + d
- return path
-
-def _load_site_scons_dir(topdir, site_dir_name=None):
- """Load the site_scons dir under topdir.
- Adds site_scons to sys.path, imports site_scons/site_init.py,
- and adds site_scons/site_tools to default toolpath."""
- if site_dir_name:
- err_if_not_found = True # user specified: err if missing
- else:
- site_dir_name = "site_scons"
- err_if_not_found = False
-
- site_dir = os.path.join(topdir.path, site_dir_name)
- if not os.path.exists(site_dir):
- if err_if_not_found:
- raise SCons.Errors.UserError("site dir %s not found."%site_dir)
- return
-
- site_init_filename = "site_init.py"
- site_init_modname = "site_init"
- site_tools_dirname = "site_tools"
- sys.path = [os.path.abspath(site_dir)] + sys.path
- site_init_file = os.path.join(site_dir, site_init_filename)
- site_tools_dir = os.path.join(site_dir, site_tools_dirname)
- if os.path.exists(site_init_file):
- import imp
- # TODO(2.4): turn this into try:-except:-finally:
- try:
- try:
- fp, pathname, description = imp.find_module(site_init_modname,
- [site_dir])
- # Load the file into SCons.Script namespace. This is
- # opaque and clever; m is the module object for the
- # SCons.Script module, and the exec ... in call executes a
- # file (or string containing code) in the context of the
- # module's dictionary, so anything that code defines ends
- # up adding to that module. This is really short, but all
- # the error checking makes it longer.
- try:
- m = sys.modules['SCons.Script']
- except Exception, e:
- fmt = 'cannot import site_init.py: missing SCons.Script module %s'
- raise SCons.Errors.InternalError(fmt % repr(e))
- try:
- # This is the magic.
- exec fp in m.__dict__
- except KeyboardInterrupt:
- raise
- except Exception, e:
- fmt = '*** Error loading site_init file %s:\n'
- sys.stderr.write(fmt % repr(site_init_file))
- raise
- except KeyboardInterrupt:
- raise
- except ImportError, e:
- fmt = '*** cannot import site init file %s:\n'
- sys.stderr.write(fmt % repr(site_init_file))
- raise
- finally:
- if fp:
- fp.close()
- if os.path.exists(site_tools_dir):
- SCons.Tool.DefaultToolpath.append(os.path.abspath(site_tools_dir))
-
-def version_string(label, module):
- version = module.__version__
- build = module.__build__
- if build:
- if build[0] != '.':
- build = '.' + build
- version = version + build
- fmt = "\t%s: v%s, %s, by %s on %s\n"
- return fmt % (label,
- version,
- module.__date__,
- module.__developer__,
- module.__buildsys__)
-
-def _main(parser):
- global exit_status
- global this_build_status
-
- options = parser.values
-
- # Here's where everything really happens.
-
- # First order of business: set up default warnings and then
- # handle the user's warning options, so that we can issue (or
- # suppress) appropriate warnings about anything that might happen,
- # as configured by the user.
-
- default_warnings = [ SCons.Warnings.WarningOnByDefault,
- SCons.Warnings.DeprecatedWarning,
- ]
-
- for warning in default_warnings:
- SCons.Warnings.enableWarningClass(warning)
- SCons.Warnings._warningOut = _scons_internal_warning
- SCons.Warnings.process_warn_strings(options.warn)
-
- # Now that we have the warnings configuration set up, we can actually
- # issue (or suppress) any warnings about warning-worthy things that
- # occurred while the command-line options were getting parsed.
- try:
- dw = options.delayed_warnings
- except AttributeError:
- pass
- else:
- delayed_warnings.extend(dw)
- for warning_type, message in delayed_warnings:
- SCons.Warnings.warn(warning_type, message)
-
- if options.diskcheck:
- SCons.Node.FS.set_diskcheck(options.diskcheck)
-
- # Next, we want to create the FS object that represents the outside
- # world's file system, as that's central to a lot of initialization.
- # To do this, however, we need to be in the directory from which we
- # want to start everything, which means first handling any relevant
- # options that might cause us to chdir somewhere (-C, -D, -U, -u).
- if options.directory:
- script_dir = os.path.abspath(_create_path(options.directory))
- else:
- script_dir = os.getcwd()
-
- target_top = None
- if options.climb_up:
- target_top = '.' # directory to prepend to targets
- while script_dir and not _SConstruct_exists(script_dir,
- options.repository,
- options.file):
- script_dir, last_part = os.path.split(script_dir)
- if last_part:
- target_top = os.path.join(last_part, target_top)
- else:
- script_dir = ''
-
- if script_dir and script_dir != os.getcwd():
- display("scons: Entering directory `%s'" % script_dir)
- try:
- os.chdir(script_dir)
- except OSError:
- sys.stderr.write("Could not change directory to %s\n" % script_dir)
-
- # Now that we're in the top-level SConstruct directory, go ahead
- # and initialize the FS object that represents the file system,
- # and make it the build engine default.
- fs = SCons.Node.FS.get_default_fs()
-
- for rep in options.repository:
- fs.Repository(rep)
-
- # Now that we have the FS object, the next order of business is to
- # check for an SConstruct file (or other specified config file).
- # If there isn't one, we can bail before doing any more work.
- scripts = []
- if options.file:
- scripts.extend(options.file)
- if not scripts:
- sfile = _SConstruct_exists(repositories=options.repository,
- filelist=options.file)
- if sfile:
- scripts.append(sfile)
-
- if not scripts:
- if options.help:
- # There's no SConstruct, but they specified -h.
- # Give them the options usage now, before we fail
- # trying to read a non-existent SConstruct file.
- raise SConsPrintHelpException
- raise SCons.Errors.UserError("No SConstruct file found.")
-
- if scripts[0] == "-":
- d = fs.getcwd()
- else:
- d = fs.File(scripts[0]).dir
- fs.set_SConstruct_dir(d)
-
- _set_debug_values(options)
- SCons.Node.implicit_cache = options.implicit_cache
- SCons.Node.implicit_deps_changed = options.implicit_deps_changed
- SCons.Node.implicit_deps_unchanged = options.implicit_deps_unchanged
-
- if options.no_exec:
- SCons.SConf.dryrun = 1
- SCons.Action.execute_actions = None
- if options.question:
- SCons.SConf.dryrun = 1
- if options.clean:
- SCons.SConf.SetBuildType('clean')
- if options.help:
- SCons.SConf.SetBuildType('help')
- SCons.SConf.SetCacheMode(options.config)
- SCons.SConf.SetProgressDisplay(progress_display)
-
- if options.no_progress or options.silent:
- progress_display.set_mode(0)
-
- if options.site_dir:
- _load_site_scons_dir(d, options.site_dir)
- elif not options.no_site_dir:
- _load_site_scons_dir(d)
-
- if options.include_dir:
- sys.path = options.include_dir + sys.path
-
- # That should cover (most of) the options. Next, set up the variables
- # that hold command-line arguments, so the SConscript files that we
- # read and execute have access to them.
- targets = []
- xmit_args = []
- for a in parser.largs:
- if a[:1] == '-':
- continue
- if '=' in a:
- xmit_args.append(a)
- else:
- targets.append(a)
- SCons.Script._Add_Targets(targets + parser.rargs)
- SCons.Script._Add_Arguments(xmit_args)
-
- # If stdout is not a tty, replace it with a wrapper object to call flush
- # after every write.
- #
- # Tty devices automatically flush after every newline, so the replacement
- # isn't necessary. Furthermore, if we replace sys.stdout, the readline
- # module will no longer work. This affects the behavior during
- # --interactive mode. --interactive should only be used when stdin and
- # stdout refer to a tty.
- if not hasattr(sys.stdout, 'isatty') or not sys.stdout.isatty():
- sys.stdout = SCons.Util.Unbuffered(sys.stdout)
- if not hasattr(sys.stderr, 'isatty') or not sys.stderr.isatty():
- sys.stderr = SCons.Util.Unbuffered(sys.stderr)
-
- memory_stats.append('before reading SConscript files:')
- count_stats.append(('pre-', 'read'))
-
- # And here's where we (finally) read the SConscript files.
-
- progress_display("scons: Reading SConscript files ...")
-
- start_time = time.time()
- try:
- for script in scripts:
- SCons.Script._SConscript._SConscript(fs, script)
- except SCons.Errors.StopError, e:
- # We had problems reading an SConscript file, such as it
- # couldn't be copied in to the VariantDir. Since we're just
- # reading SConscript files and haven't started building
- # things yet, stop regardless of whether they used -i or -k
- # or anything else.
- sys.stderr.write("scons: *** %s Stop.\n" % e)
- exit_status = 2
- sys.exit(exit_status)
- global sconscript_time
- sconscript_time = time.time() - start_time
-
- progress_display("scons: done reading SConscript files.")
-
- memory_stats.append('after reading SConscript files:')
- count_stats.append(('post-', 'read'))
-
- # Re-{enable,disable} warnings in case they disabled some in
- # the SConscript file.
- #
- # We delay enabling the PythonVersionWarning class until here so that,
- # if they explicity disabled it in either in the command line or in
- # $SCONSFLAGS, or in the SConscript file, then the search through
- # the list of deprecated warning classes will find that disabling
- # first and not issue the warning.
- #SCons.Warnings.enableWarningClass(SCons.Warnings.PythonVersionWarning)
- SCons.Warnings.process_warn_strings(options.warn)
-
- # Now that we've read the SConscript files, we can check for the
- # warning about deprecated Python versions--delayed until here
- # in case they disabled the warning in the SConscript files.
- if python_version_deprecated():
- msg = "Support for pre-2.4 Python (%s) is deprecated.\n" + \
- " If this will cause hardship, contact dev@scons.tigris.org."
- SCons.Warnings.warn(SCons.Warnings.PythonVersionWarning,
- msg % python_version_string())
-
- if not options.help:
- SCons.SConf.CreateConfigHBuilder(SCons.Defaults.DefaultEnvironment())
-
- # Now re-parse the command-line options (any to the left of a '--'
- # argument, that is) with any user-defined command-line options that
- # the SConscript files may have added to the parser object. This will
- # emit the appropriate error message and exit if any unknown option
- # was specified on the command line.
-
- parser.preserve_unknown_options = False
- parser.parse_args(parser.largs, options)
-
- if options.help:
- help_text = SCons.Script.help_text
- if help_text is None:
- # They specified -h, but there was no Help() inside the
- # SConscript files. Give them the options usage.
- raise SConsPrintHelpException
- else:
- print help_text
- print "Use scons -H for help about command-line options."
- exit_status = 0
- return
-
- # Change directory to the top-level SConstruct directory, then tell
- # the Node.FS subsystem that we're all done reading the SConscript
- # files and calling Repository() and VariantDir() and changing
- # directories and the like, so it can go ahead and start memoizing
- # the string values of file system nodes.
-
- fs.chdir(fs.Top)
-
- SCons.Node.FS.save_strings(1)
-
- # Now that we've read the SConscripts we can set the options
- # that are SConscript settable:
- SCons.Node.implicit_cache = options.implicit_cache
- SCons.Node.FS.set_duplicate(options.duplicate)
- fs.set_max_drift(options.max_drift)
-
- SCons.Job.explicit_stack_size = options.stack_size
-
- if options.md5_chunksize:
- SCons.Node.FS.File.md5_chunksize = options.md5_chunksize
-
- platform = SCons.Platform.platform_module()
-
- if options.interactive:
- SCons.Script.Interactive.interact(fs, OptionsParser, options,
- targets, target_top)
-
- else:
-
- # Build the targets
- nodes = _build_targets(fs, options, targets, target_top)
- if not nodes:
- exit_status = 2
-
-def _build_targets(fs, options, targets, target_top):
-
- global this_build_status
- this_build_status = 0
-
- progress_display.set_mode(not (options.no_progress or options.silent))
- display.set_mode(not options.silent)
- SCons.Action.print_actions = not options.silent
- SCons.Action.execute_actions = not options.no_exec
- SCons.Node.FS.do_store_info = not options.no_exec
- SCons.SConf.dryrun = options.no_exec
-
- if options.diskcheck:
- SCons.Node.FS.set_diskcheck(options.diskcheck)
-
- SCons.CacheDir.cache_enabled = not options.cache_disable
- SCons.CacheDir.cache_debug = options.cache_debug
- SCons.CacheDir.cache_force = options.cache_force
- SCons.CacheDir.cache_show = options.cache_show
-
- if options.no_exec:
- CleanTask.execute = CleanTask.show
- else:
- CleanTask.execute = CleanTask.remove
-
- lookup_top = None
- if targets or SCons.Script.BUILD_TARGETS != SCons.Script._build_plus_default:
- # They specified targets on the command line or modified
- # BUILD_TARGETS in the SConscript file(s), so if they used -u,
- # -U or -D, we have to look up targets relative to the top,
- # but we build whatever they specified.
- if target_top:
- lookup_top = fs.Dir(target_top)
- target_top = None
-
- targets = SCons.Script.BUILD_TARGETS
- else:
- # There are no targets specified on the command line,
- # so if they used -u, -U or -D, we may have to restrict
- # what actually gets built.
- d = None
- if target_top:
- if options.climb_up == 1:
- # -u, local directory and below
- target_top = fs.Dir(target_top)
- lookup_top = target_top
- elif options.climb_up == 2:
- # -D, all Default() targets
- target_top = None
- lookup_top = None
- elif options.climb_up == 3:
- # -U, local SConscript Default() targets
- target_top = fs.Dir(target_top)
- def check_dir(x, target_top=target_top):
- if hasattr(x, 'cwd') and not x.cwd is None:
- cwd = x.cwd.srcnode()
- return cwd == target_top
- else:
- # x doesn't have a cwd, so it's either not a target,
- # or not a file, so go ahead and keep it as a default
- # target and let the engine sort it out:
- return 1
- d = list(filter(check_dir, SCons.Script.DEFAULT_TARGETS))
- SCons.Script.DEFAULT_TARGETS[:] = d
- target_top = None
- lookup_top = None
-
- targets = SCons.Script._Get_Default_Targets(d, fs)
-
- if not targets:
- sys.stderr.write("scons: *** No targets specified and no Default() targets found. Stop.\n")
- return None
-
- def Entry(x, ltop=lookup_top, ttop=target_top, fs=fs):
- if isinstance(x, SCons.Node.Node):
- node = x
- else:
- node = None
- # Why would ltop be None? Unfortunately this happens.
- if ltop is None: ltop = ''
- # Curdir becomes important when SCons is called with -u, -C,
- # or similar option that changes directory, and so the paths
- # of targets given on the command line need to be adjusted.
- curdir = os.path.join(os.getcwd(), str(ltop))
- for lookup in SCons.Node.arg2nodes_lookups:
- node = lookup(x, curdir=curdir)
- if node is not None:
- break
- if node is None:
- node = fs.Entry(x, directory=ltop, create=1)
- if ttop and not node.is_under(ttop):
- if isinstance(node, SCons.Node.FS.Dir) and ttop.is_under(node):
- node = ttop
- else:
- node = None
- return node
-
- nodes = [_f for _f in map(Entry, targets) if _f]
-
- task_class = BuildTask # default action is to build targets
- opening_message = "Building targets ..."
- closing_message = "done building targets."
- if options.keep_going:
- failure_message = "done building targets (errors occurred during build)."
- else:
- failure_message = "building terminated because of errors."
- if options.question:
- task_class = QuestionTask
- try:
- if options.clean:
- task_class = CleanTask
- opening_message = "Cleaning targets ..."
- closing_message = "done cleaning targets."
- if options.keep_going:
- failure_message = "done cleaning targets (errors occurred during clean)."
- else:
- failure_message = "cleaning terminated because of errors."
- except AttributeError:
- pass
-
- task_class.progress = ProgressObject
-
- if options.random:
- def order(dependencies):
- """Randomize the dependencies."""
- import random
- # This is cribbed from the implementation of
- # random.shuffle() in Python 2.X.
- d = dependencies
- for i in range(len(d)-1, 0, -1):
- j = int(random.random() * (i+1))
- d[i], d[j] = d[j], d[i]
- return d
- else:
- def order(dependencies):
- """Leave the order of dependencies alone."""
- return dependencies
-
- if options.taskmastertrace_file == '-':
- tmtrace = sys.stdout
- elif options.taskmastertrace_file:
- tmtrace = open(options.taskmastertrace_file, 'wb')
- else:
- tmtrace = None
- taskmaster = SCons.Taskmaster.Taskmaster(nodes, task_class, order, tmtrace)
-
- # Let the BuildTask objects get at the options to respond to the
- # various print_* settings, tree_printer list, etc.
- BuildTask.options = options
-
- global num_jobs
- num_jobs = options.num_jobs
- jobs = SCons.Job.Jobs(num_jobs, taskmaster)
- if num_jobs > 1:
- msg = None
- if jobs.num_jobs == 1:
- msg = "parallel builds are unsupported by this version of Python;\n" + \
- "\tignoring -j or num_jobs option.\n"
- elif sys.platform == 'win32':
- msg = fetch_win32_parallel_msg()
- if msg:
- SCons.Warnings.warn(SCons.Warnings.NoParallelSupportWarning, msg)
-
- memory_stats.append('before building targets:')
- count_stats.append(('pre-', 'build'))
-
- def jobs_postfunc(
- jobs=jobs,
- options=options,
- closing_message=closing_message,
- failure_message=failure_message
- ):
- if jobs.were_interrupted():
- if not options.no_progress and not options.silent:
- sys.stderr.write("scons: Build interrupted.\n")
- global exit_status
- global this_build_status
- exit_status = 2
- this_build_status = 2
-
- if this_build_status:
- progress_display("scons: " + failure_message)
- else:
- progress_display("scons: " + closing_message)
- if not options.no_exec:
- if jobs.were_interrupted():
- progress_display("scons: writing .sconsign file.")
- SCons.SConsign.write()
-
- progress_display("scons: " + opening_message)
- jobs.run(postfunc = jobs_postfunc)
-
- memory_stats.append('after building targets:')
- count_stats.append(('post-', 'build'))
-
- return nodes
-
-def _exec_main(parser, values):
- sconsflags = os.environ.get('SCONSFLAGS', '')
- all_args = sconsflags.split() + sys.argv[1:]
-
- options, args = parser.parse_args(all_args, values)
-
- if isinstance(options.debug, list) and "pdb" in options.debug:
- import pdb
- pdb.Pdb().runcall(_main, parser)
- elif options.profile_file:
- # compat layer imports "cProfile" for us if it's available.
- from profile import Profile
-
- # Some versions of Python 2.4 shipped a profiler that had the
- # wrong 'c_exception' entry in its dispatch table. Make sure
- # we have the right one. (This may put an unnecessary entry
- # in the table in earlier versions of Python, but its presence
- # shouldn't hurt anything).
- try:
- dispatch = Profile.dispatch
- except AttributeError:
- pass
- else:
- dispatch['c_exception'] = Profile.trace_dispatch_return
-
- prof = Profile()
- try:
- prof.runcall(_main, parser)
- except SConsPrintHelpException, e:
- prof.dump_stats(options.profile_file)
- raise e
- except SystemExit:
- pass
- prof.dump_stats(options.profile_file)
- else:
- _main(parser)
-
-def main():
- global OptionsParser
- global exit_status
- global first_command_start
-
- # Check up front for a Python version we do not support. We
- # delay the check for deprecated Python versions until later,
- # after the SConscript files have been read, in case they
- # disable that warning.
- if python_version_unsupported():
- msg = "scons: *** SCons version %s does not run under Python version %s.\n"
- sys.stderr.write(msg % (SCons.__version__, python_version_string()))
- sys.exit(1)
-
- parts = ["SCons by Steven Knight et al.:\n"]
- try:
- import __main__
- parts.append(version_string("script", __main__))
- except (ImportError, AttributeError):
- # On Windows there is no scons.py, so there is no
- # __main__.__version__, hence there is no script version.
- pass
- parts.append(version_string("engine", SCons))
- parts.append("Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation")
- version = ''.join(parts)
-
- import SConsOptions
- parser = SConsOptions.Parser(version)
- values = SConsOptions.SConsValues(parser.get_default_values())
-
- OptionsParser = parser
-
- try:
- _exec_main(parser, values)
- except SystemExit, s:
- if s:
- exit_status = s
- except KeyboardInterrupt:
- print("scons: Build interrupted.")
- sys.exit(2)
- except SyntaxError, e:
- _scons_syntax_error(e)
- except SCons.Errors.InternalError:
- _scons_internal_error()
- except SCons.Errors.UserError, e:
- _scons_user_error(e)
- except SConsPrintHelpException:
- parser.print_help()
- exit_status = 0
- except SCons.Errors.BuildError, e:
- exit_status = e.exitstatus
- except:
- # An exception here is likely a builtin Python exception Python
- # code in an SConscript file. Show them precisely what the
- # problem was and where it happened.
- SCons.Script._SConscript.SConscript_exception()
- sys.exit(2)
-
- memory_stats.print_stats()
- count_stats.print_stats()
-
- if print_objects:
- SCons.Debug.listLoggedInstances('*')
- #SCons.Debug.dumpLoggedInstances('*')
-
- if print_memoizer:
- SCons.Memoize.Dump("Memoizer (memory cache) hits and misses:")
-
- # Dump any development debug info that may have been enabled.
- # These are purely for internal debugging during development, so
- # there's no need to control them with --debug= options; they're
- # controlled by changing the source code.
- SCons.Debug.dump_caller_counts()
- SCons.Taskmaster.dump_stats()
-
- if print_time:
- total_time = time.time() - SCons.Script.start_time
- if num_jobs == 1:
- ct = cumulative_command_time
- else:
- if last_command_end is None or first_command_start is None:
- ct = 0.0
- else:
- ct = last_command_end - first_command_start
- scons_time = total_time - sconscript_time - ct
- print "Total build time: %f seconds"%total_time
- print "Total SConscript file execution time: %f seconds"%sconscript_time
- print "Total SCons execution time: %f seconds"%scons_time
- print "Total command execution time: %f seconds"%ct
-
- sys.exit(exit_status)
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Script/SConsOptions.py b/Externals/scons-local/scons-local-2.0.1/SCons/Script/SConsOptions.py
deleted file mode 100644
index 8afedf63a8..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Script/SConsOptions.py
+++ /dev/null
@@ -1,939 +0,0 @@
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Script/SConsOptions.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import optparse
-import re
-import sys
-import textwrap
-
-no_hyphen_re = re.compile(r'(\s+|(?<=[\w\!\"\'\&\.\,\?])-{2,}(?=\w))')
-
-try:
- from gettext import gettext
-except ImportError:
- def gettext(message):
- return message
-_ = gettext
-
-import SCons.Node.FS
-import SCons.Warnings
-
-OptionValueError = optparse.OptionValueError
-SUPPRESS_HELP = optparse.SUPPRESS_HELP
-
-diskcheck_all = SCons.Node.FS.diskcheck_types()
-
-def diskcheck_convert(value):
- if value is None:
- return []
- if not SCons.Util.is_List(value):
- value = value.split(',')
- result = []
- for v in value:
- v = v.lower()
- if v == 'all':
- result = diskcheck_all
- elif v == 'none':
- result = []
- elif v in diskcheck_all:
- result.append(v)
- else:
- raise ValueError(v)
- return result
-
-class SConsValues(optparse.Values):
- """
- Holder class for uniform access to SCons options, regardless
- of whether or not they can be set on the command line or in the
- SConscript files (using the SetOption() function).
-
- A SCons option value can originate three different ways:
-
- 1) set on the command line;
- 2) set in an SConscript file;
- 3) the default setting (from the the op.add_option()
- calls in the Parser() function, below).
-
- The command line always overrides a value set in a SConscript file,
- which in turn always overrides default settings. Because we want
- to support user-specified options in the SConscript file itself,
- though, we may not know about all of the options when the command
- line is first parsed, so we can't make all the necessary precedence
- decisions at the time the option is configured.
-
- The solution implemented in this class is to keep these different sets
- of settings separate (command line, SConscript file, and default)
- and to override the __getattr__() method to check them in turn.
- This should allow the rest of the code to just fetch values as
- attributes of an instance of this class, without having to worry
- about where they came from.
-
- Note that not all command line options are settable from SConscript
- files, and the ones that are must be explicitly added to the
- "settable" list in this class, and optionally validated and coerced
- in the set_option() method.
- """
-
- def __init__(self, defaults):
- self.__dict__['__defaults__'] = defaults
- self.__dict__['__SConscript_settings__'] = {}
-
- def __getattr__(self, attr):
- """
- Fetches an options value, checking first for explicit settings
- from the command line (which are direct attributes), then the
- SConscript file settings, then the default values.
- """
- try:
- return self.__dict__[attr]
- except KeyError:
- try:
- return self.__dict__['__SConscript_settings__'][attr]
- except KeyError:
- return getattr(self.__dict__['__defaults__'], attr)
-
- settable = [
- 'clean',
- 'diskcheck',
- 'duplicate',
- 'help',
- 'implicit_cache',
- 'max_drift',
- 'md5_chunksize',
- 'no_exec',
- 'num_jobs',
- 'random',
- 'stack_size',
- 'warn',
- ]
-
- def set_option(self, name, value):
- """
- Sets an option from an SConscript file.
- """
- if not name in self.settable:
- raise SCons.Errors.UserError("This option is not settable from a SConscript file: %s"%name)
-
- if name == 'num_jobs':
- try:
- value = int(value)
- if value < 1:
- raise ValueError
- except ValueError:
- raise SCons.Errors.UserError("A positive integer is required: %s"%repr(value))
- elif name == 'max_drift':
- try:
- value = int(value)
- except ValueError:
- raise SCons.Errors.UserError("An integer is required: %s"%repr(value))
- elif name == 'duplicate':
- try:
- value = str(value)
- except ValueError:
- raise SCons.Errors.UserError("A string is required: %s"%repr(value))
- if not value in SCons.Node.FS.Valid_Duplicates:
- raise SCons.Errors.UserError("Not a valid duplication style: %s" % value)
- # Set the duplicate style right away so it can affect linking
- # of SConscript files.
- SCons.Node.FS.set_duplicate(value)
- elif name == 'diskcheck':
- try:
- value = diskcheck_convert(value)
- except ValueError, v:
- raise SCons.Errors.UserError("Not a valid diskcheck value: %s"%v)
- if 'diskcheck' not in self.__dict__:
- # No --diskcheck= option was specified on the command line.
- # Set this right away so it can affect the rest of the
- # file/Node lookups while processing the SConscript files.
- SCons.Node.FS.set_diskcheck(value)
- elif name == 'stack_size':
- try:
- value = int(value)
- except ValueError:
- raise SCons.Errors.UserError("An integer is required: %s"%repr(value))
- elif name == 'md5_chunksize':
- try:
- value = int(value)
- except ValueError:
- raise SCons.Errors.UserError("An integer is required: %s"%repr(value))
- elif name == 'warn':
- if SCons.Util.is_String(value):
- value = [value]
- value = self.__SConscript_settings__.get(name, []) + value
- SCons.Warnings.process_warn_strings(value)
-
- self.__SConscript_settings__[name] = value
-
-class SConsOption(optparse.Option):
- def convert_value(self, opt, value):
- if value is not None:
- if self.nargs in (1, '?'):
- return self.check_value(opt, value)
- else:
- return tuple([self.check_value(opt, v) for v in value])
-
- def process(self, opt, value, values, parser):
-
- # First, convert the value(s) to the right type. Howl if any
- # value(s) are bogus.
- value = self.convert_value(opt, value)
-
- # And then take whatever action is expected of us.
- # This is a separate method to make life easier for
- # subclasses to add new actions.
- return self.take_action(
- self.action, self.dest, opt, value, values, parser)
-
- def _check_nargs_optional(self):
- if self.nargs == '?' and self._short_opts:
- fmt = "option %s: nargs='?' is incompatible with short options"
- raise SCons.Errors.UserError(fmt % self._short_opts[0])
-
- try:
- _orig_CONST_ACTIONS = optparse.Option.CONST_ACTIONS
-
- _orig_CHECK_METHODS = optparse.Option.CHECK_METHODS
-
- except AttributeError:
- # optparse.Option had no CONST_ACTIONS before Python 2.5.
-
- _orig_CONST_ACTIONS = ("store_const",)
-
- def _check_const(self):
- if self.action not in self.CONST_ACTIONS and self.const is not None:
- raise OptionError(
- "'const' must not be supplied for action %r" % self.action,
- self)
-
- # optparse.Option collects its list of unbound check functions
- # up front. This sucks because it means we can't just override
- # the _check_const() function like a normal method, we have to
- # actually replace it in the list. This seems to be the most
- # straightforward way to do that.
-
- _orig_CHECK_METHODS = [optparse.Option._check_action,
- optparse.Option._check_type,
- optparse.Option._check_choice,
- optparse.Option._check_dest,
- _check_const,
- optparse.Option._check_nargs,
- optparse.Option._check_callback]
-
- CHECK_METHODS = _orig_CHECK_METHODS + [_check_nargs_optional]
-
- CONST_ACTIONS = _orig_CONST_ACTIONS + optparse.Option.TYPED_ACTIONS
-
-class SConsOptionGroup(optparse.OptionGroup):
- """
- A subclass for SCons-specific option groups.
-
- The only difference between this and the base class is that we print
- the group's help text flush left, underneath their own title but
- lined up with the normal "SCons Options".
- """
- def format_help(self, formatter):
- """
- Format an option group's help text, outdenting the title so it's
- flush with the "SCons Options" title we print at the top.
- """
- formatter.dedent()
- result = formatter.format_heading(self.title)
- formatter.indent()
- result = result + optparse.OptionContainer.format_help(self, formatter)
- return result
-
-class SConsOptionParser(optparse.OptionParser):
- preserve_unknown_options = False
-
- def error(self, msg):
- self.print_usage(sys.stderr)
- sys.stderr.write("SCons error: %s\n" % msg)
- sys.exit(2)
-
- def _process_long_opt(self, rargs, values):
- """
- SCons-specific processing of long options.
-
- This is copied directly from the normal
- optparse._process_long_opt() method, except that, if configured
- to do so, we catch the exception thrown when an unknown option
- is encountered and just stick it back on the "leftover" arguments
- for later (re-)processing.
- """
- arg = rargs.pop(0)
-
- # Value explicitly attached to arg? Pretend it's the next
- # argument.
- if "=" in arg:
- (opt, next_arg) = arg.split("=", 1)
- rargs.insert(0, next_arg)
- had_explicit_value = True
- else:
- opt = arg
- had_explicit_value = False
-
- try:
- opt = self._match_long_opt(opt)
- except optparse.BadOptionError:
- if self.preserve_unknown_options:
- # SCons-specific: if requested, add unknown options to
- # the "leftover arguments" list for later processing.
- self.largs.append(arg)
- if had_explicit_value:
- # The unknown option will be re-processed later,
- # so undo the insertion of the explicit value.
- rargs.pop(0)
- return
- raise
-
- option = self._long_opt[opt]
- if option.takes_value():
- nargs = option.nargs
- if nargs == '?':
- if had_explicit_value:
- value = rargs.pop(0)
- else:
- value = option.const
- elif len(rargs) < nargs:
- if nargs == 1:
- self.error(_("%s option requires an argument") % opt)
- else:
- self.error(_("%s option requires %d arguments")
- % (opt, nargs))
- elif nargs == 1:
- value = rargs.pop(0)
- else:
- value = tuple(rargs[0:nargs])
- del rargs[0:nargs]
-
- elif had_explicit_value:
- self.error(_("%s option does not take a value") % opt)
-
- else:
- value = None
-
- option.process(opt, value, values, self)
-
- def add_local_option(self, *args, **kw):
- """
- Adds a local option to the parser.
-
- This is initiated by a SetOption() call to add a user-defined
- command-line option. We add the option to a separate option
- group for the local options, creating the group if necessary.
- """
- try:
- group = self.local_option_group
- except AttributeError:
- group = SConsOptionGroup(self, 'Local Options')
- group = self.add_option_group(group)
- self.local_option_group = group
-
- result = group.add_option(*args, **kw)
-
- if result:
- # The option was added succesfully. We now have to add the
- # default value to our object that holds the default values
- # (so that an attempt to fetch the option's attribute will
- # yield the default value when not overridden) and then
- # we re-parse the leftover command-line options, so that
- # any value overridden on the command line is immediately
- # available if the user turns around and does a GetOption()
- # right away.
- setattr(self.values.__defaults__, result.dest, result.default)
- self.parse_args(self.largs, self.values)
-
- return result
-
-class SConsIndentedHelpFormatter(optparse.IndentedHelpFormatter):
- def format_usage(self, usage):
- return "usage: %s\n" % usage
-
- def format_heading(self, heading):
- """
- This translates any heading of "options" or "Options" into
- "SCons Options." Unfortunately, we have to do this here,
- because those titles are hard-coded in the optparse calls.
- """
- if heading == 'options':
- # The versions of optparse.py shipped with Pythons 2.3 and
- # 2.4 pass this in uncapitalized; override that so we get
- # consistent output on all versions.
- heading = "Options"
- if heading == 'Options':
- heading = "SCons Options"
- return optparse.IndentedHelpFormatter.format_heading(self, heading)
-
- def format_option(self, option):
- """
- A copy of the normal optparse.IndentedHelpFormatter.format_option()
- method. This has been snarfed so we can modify text wrapping to
- out liking:
-
- -- add our own regular expression that doesn't break on hyphens
- (so things like --no-print-directory don't get broken);
-
- -- wrap the list of options themselves when it's too long
- (the wrapper.fill(opts) call below);
-
- -- set the subsequent_indent when wrapping the help_text.
- """
- # The help for each option consists of two parts:
- # * the opt strings and metavars
- # eg. ("-x", or "-fFILENAME, --file=FILENAME")
- # * the user-supplied help string
- # eg. ("turn on expert mode", "read data from FILENAME")
- #
- # If possible, we write both of these on the same line:
- # -x turn on expert mode
- #
- # But if the opt string list is too long, we put the help
- # string on a second line, indented to the same column it would
- # start in if it fit on the first line.
- # -fFILENAME, --file=FILENAME
- # read data from FILENAME
- result = []
-
- try:
- opts = self.option_strings[option]
- except AttributeError:
- # The Python 2.3 version of optparse attaches this to
- # to the option argument, not to this object.
- opts = option.option_strings
-
- opt_width = self.help_position - self.current_indent - 2
- if len(opts) > opt_width:
- wrapper = textwrap.TextWrapper(width=self.width,
- initial_indent = ' ',
- subsequent_indent = ' ')
- wrapper.wordsep_re = no_hyphen_re
- opts = wrapper.fill(opts) + '\n'
- indent_first = self.help_position
- else: # start help on same line as opts
- opts = "%*s%-*s " % (self.current_indent, "", opt_width, opts)
- indent_first = 0
- result.append(opts)
- if option.help:
-
- try:
- expand_default = self.expand_default
- except AttributeError:
- # The HelpFormatter base class in the Python 2.3 version
- # of optparse has no expand_default() method.
- help_text = option.help
- else:
- help_text = expand_default(option)
-
- # SCons: indent every line of the help text but the first.
- wrapper = textwrap.TextWrapper(width=self.help_width,
- subsequent_indent = ' ')
- wrapper.wordsep_re = no_hyphen_re
- help_lines = wrapper.wrap(help_text)
- result.append("%*s%s\n" % (indent_first, "", help_lines[0]))
- for line in help_lines[1:]:
- result.append("%*s%s\n" % (self.help_position, "", line))
- elif opts[-1] != "\n":
- result.append("\n")
- return "".join(result)
-
- # For consistent help output across Python versions, we provide a
- # subclass copy of format_option_strings() and these two variables.
- # This is necessary (?) for Python2.3, which otherwise concatenates
- # a short option with its metavar.
- _short_opt_fmt = "%s %s"
- _long_opt_fmt = "%s=%s"
-
- def format_option_strings(self, option):
- """Return a comma-separated list of option strings & metavariables."""
- if option.takes_value():
- metavar = option.metavar or option.dest.upper()
- short_opts = []
- for sopt in option._short_opts:
- short_opts.append(self._short_opt_fmt % (sopt, metavar))
- long_opts = []
- for lopt in option._long_opts:
- long_opts.append(self._long_opt_fmt % (lopt, metavar))
- else:
- short_opts = option._short_opts
- long_opts = option._long_opts
-
- if self.short_first:
- opts = short_opts + long_opts
- else:
- opts = long_opts + short_opts
-
- return ", ".join(opts)
-
-def Parser(version):
- """
- Returns an options parser object initialized with the standard
- SCons options.
- """
-
- formatter = SConsIndentedHelpFormatter(max_help_position=30)
-
- op = SConsOptionParser(option_class=SConsOption,
- add_help_option=False,
- formatter=formatter,
- usage="usage: scons [OPTION] [TARGET] ...",)
-
- op.preserve_unknown_options = True
- op.version = version
-
- # Add the options to the parser we just created.
- #
- # These are in the order we want them to show up in the -H help
- # text, basically alphabetical. Each op.add_option() call below
- # should have a consistent format:
- #
- # op.add_option("-L", "--long-option-name",
- # nargs=1, type="string",
- # dest="long_option_name", default='foo',
- # action="callback", callback=opt_long_option,
- # help="help text goes here",
- # metavar="VAR")
- #
- # Even though the optparse module constructs reasonable default
- # destination names from the long option names, we're going to be
- # explicit about each one for easier readability and so this code
- # will at least show up when grepping the source for option attribute
- # names, or otherwise browsing the source code.
-
- # options ignored for compatibility
- def opt_ignore(option, opt, value, parser):
- sys.stderr.write("Warning: ignoring %s option\n" % opt)
- op.add_option("-b", "-d", "-e", "-m", "-S", "-t", "-w",
- "--environment-overrides",
- "--no-keep-going",
- "--no-print-directory",
- "--print-directory",
- "--stop",
- "--touch",
- action="callback", callback=opt_ignore,
- help="Ignored for compatibility.")
-
- op.add_option('-c', '--clean', '--remove',
- dest="clean", default=False,
- action="store_true",
- help="Remove specified targets and dependencies.")
-
- op.add_option('-C', '--directory',
- nargs=1, type="string",
- dest="directory", default=[],
- action="append",
- help="Change to DIR before doing anything.",
- metavar="DIR")
-
- op.add_option('--cache-debug',
- nargs=1,
- dest="cache_debug", default=None,
- action="store",
- help="Print CacheDir debug info to FILE.",
- metavar="FILE")
-
- op.add_option('--cache-disable', '--no-cache',
- dest='cache_disable', default=False,
- action="store_true",
- help="Do not retrieve built targets from CacheDir.")
-
- op.add_option('--cache-force', '--cache-populate',
- dest='cache_force', default=False,
- action="store_true",
- help="Copy already-built targets into the CacheDir.")
-
- op.add_option('--cache-show',
- dest='cache_show', default=False,
- action="store_true",
- help="Print build actions for files from CacheDir.")
-
- config_options = ["auto", "force" ,"cache"]
-
- def opt_config(option, opt, value, parser, c_options=config_options):
- if not value in c_options:
- raise OptionValueError("Warning: %s is not a valid config type" % value)
- setattr(parser.values, option.dest, value)
- opt_config_help = "Controls Configure subsystem: %s." \
- % ", ".join(config_options)
- op.add_option('--config',
- nargs=1, type="string",
- dest="config", default="auto",
- action="callback", callback=opt_config,
- help = opt_config_help,
- metavar="MODE")
-
- op.add_option('-D',
- dest="climb_up", default=None,
- action="store_const", const=2,
- help="Search up directory tree for SConstruct, "
- "build all Default() targets.")
-
- deprecated_debug_options = {
- "dtree" : '; please use --tree=derived instead',
- "nomemoizer" : ' and has no effect',
- "stree" : '; please use --tree=all,status instead',
- "tree" : '; please use --tree=all instead',
- }
-
- debug_options = ["count", "explain", "findlibs",
- "includes", "memoizer", "memory", "objects",
- "pdb", "presub", "stacktrace",
- "time"] + list(deprecated_debug_options.keys())
-
- def opt_debug(option, opt, value, parser,
- debug_options=debug_options,
- deprecated_debug_options=deprecated_debug_options):
- if value in debug_options:
- parser.values.debug.append(value)
- if value in deprecated_debug_options.keys():
- try:
- parser.values.delayed_warnings
- except AttributeError:
- parser.values.delayed_warnings = []
- msg = deprecated_debug_options[value]
- w = "The --debug=%s option is deprecated%s." % (value, msg)
- t = (SCons.Warnings.DeprecatedDebugOptionsWarning, w)
- parser.values.delayed_warnings.append(t)
- else:
- raise OptionValueError("Warning: %s is not a valid debug type" % value)
- opt_debug_help = "Print various types of debugging information: %s." \
- % ", ".join(debug_options)
- op.add_option('--debug',
- nargs=1, type="string",
- dest="debug", default=[],
- action="callback", callback=opt_debug,
- help=opt_debug_help,
- metavar="TYPE")
-
- def opt_diskcheck(option, opt, value, parser):
- try:
- diskcheck_value = diskcheck_convert(value)
- except ValueError, e:
- raise OptionValueError("Warning: `%s' is not a valid diskcheck type" % e)
- setattr(parser.values, option.dest, diskcheck_value)
-
- op.add_option('--diskcheck',
- nargs=1, type="string",
- dest='diskcheck', default=None,
- action="callback", callback=opt_diskcheck,
- help="Enable specific on-disk checks.",
- metavar="TYPE")
-
- def opt_duplicate(option, opt, value, parser):
- if not value in SCons.Node.FS.Valid_Duplicates:
- raise OptionValueError("`%s' is not a valid duplication style." % value)
- setattr(parser.values, option.dest, value)
- # Set the duplicate style right away so it can affect linking
- # of SConscript files.
- SCons.Node.FS.set_duplicate(value)
-
- opt_duplicate_help = "Set the preferred duplication methods. Must be one of " \
- + ", ".join(SCons.Node.FS.Valid_Duplicates)
-
- op.add_option('--duplicate',
- nargs=1, type="string",
- dest="duplicate", default='hard-soft-copy',
- action="callback", callback=opt_duplicate,
- help=opt_duplicate_help)
-
- op.add_option('-f', '--file', '--makefile', '--sconstruct',
- nargs=1, type="string",
- dest="file", default=[],
- action="append",
- help="Read FILE as the top-level SConstruct file.")
-
- op.add_option('-h', '--help',
- dest="help", default=False,
- action="store_true",
- help="Print defined help message, or this one.")
-
- op.add_option("-H", "--help-options",
- action="help",
- help="Print this message and exit.")
-
- op.add_option('-i', '--ignore-errors',
- dest='ignore_errors', default=False,
- action="store_true",
- help="Ignore errors from build actions.")
-
- op.add_option('-I', '--include-dir',
- nargs=1,
- dest='include_dir', default=[],
- action="append",
- help="Search DIR for imported Python modules.",
- metavar="DIR")
-
- op.add_option('--implicit-cache',
- dest='implicit_cache', default=False,
- action="store_true",
- help="Cache implicit dependencies")
-
- def opt_implicit_deps(option, opt, value, parser):
- setattr(parser.values, 'implicit_cache', True)
- setattr(parser.values, option.dest, True)
-
- op.add_option('--implicit-deps-changed',
- dest="implicit_deps_changed", default=False,
- action="callback", callback=opt_implicit_deps,
- help="Ignore cached implicit dependencies.")
-
- op.add_option('--implicit-deps-unchanged',
- dest="implicit_deps_unchanged", default=False,
- action="callback", callback=opt_implicit_deps,
- help="Ignore changes in implicit dependencies.")
-
- op.add_option('--interact', '--interactive',
- dest='interactive', default=False,
- action="store_true",
- help="Run in interactive mode.")
-
- op.add_option('-j', '--jobs',
- nargs=1, type="int",
- dest="num_jobs", default=1,
- action="store",
- help="Allow N jobs at once.",
- metavar="N")
-
- op.add_option('-k', '--keep-going',
- dest='keep_going', default=False,
- action="store_true",
- help="Keep going when a target can't be made.")
-
- op.add_option('--max-drift',
- nargs=1, type="int",
- dest='max_drift', default=SCons.Node.FS.default_max_drift,
- action="store",
- help="Set maximum system clock drift to N seconds.",
- metavar="N")
-
- op.add_option('--md5-chunksize',
- nargs=1, type="int",
- dest='md5_chunksize', default=SCons.Node.FS.File.md5_chunksize,
- action="store",
- help="Set chunk-size for MD5 signature computation to N kilobytes.",
- metavar="N")
-
- op.add_option('-n', '--no-exec', '--just-print', '--dry-run', '--recon',
- dest='no_exec', default=False,
- action="store_true",
- help="Don't build; just print commands.")
-
- op.add_option('--no-site-dir',
- dest='no_site_dir', default=False,
- action="store_true",
- help="Don't search or use the usual site_scons dir.")
-
- op.add_option('--profile',
- nargs=1,
- dest="profile_file", default=None,
- action="store",
- help="Profile SCons and put results in FILE.",
- metavar="FILE")
-
- op.add_option('-q', '--question',
- dest="question", default=False,
- action="store_true",
- help="Don't build; exit status says if up to date.")
-
- op.add_option('-Q',
- dest='no_progress', default=False,
- action="store_true",
- help="Suppress \"Reading/Building\" progress messages.")
-
- op.add_option('--random',
- dest="random", default=False,
- action="store_true",
- help="Build dependencies in random order.")
-
- op.add_option('-s', '--silent', '--quiet',
- dest="silent", default=False,
- action="store_true",
- help="Don't print commands.")
-
- op.add_option('--site-dir',
- nargs=1,
- dest='site_dir', default=None,
- action="store",
- help="Use DIR instead of the usual site_scons dir.",
- metavar="DIR")
-
- op.add_option('--stack-size',
- nargs=1, type="int",
- dest='stack_size',
- action="store",
- help="Set the stack size of the threads used to run jobs to N kilobytes.",
- metavar="N")
-
- op.add_option('--taskmastertrace',
- nargs=1,
- dest="taskmastertrace_file", default=None,
- action="store",
- help="Trace Node evaluation to FILE.",
- metavar="FILE")
-
- tree_options = ["all", "derived", "prune", "status"]
-
- def opt_tree(option, opt, value, parser, tree_options=tree_options):
- import Main
- tp = Main.TreePrinter()
- for o in value.split(','):
- if o == 'all':
- tp.derived = False
- elif o == 'derived':
- tp.derived = True
- elif o == 'prune':
- tp.prune = True
- elif o == 'status':
- tp.status = True
- else:
- raise OptionValueError("Warning: %s is not a valid --tree option" % o)
- parser.values.tree_printers.append(tp)
-
- opt_tree_help = "Print a dependency tree in various formats: %s." \
- % ", ".join(tree_options)
-
- op.add_option('--tree',
- nargs=1, type="string",
- dest="tree_printers", default=[],
- action="callback", callback=opt_tree,
- help=opt_tree_help,
- metavar="OPTIONS")
-
- op.add_option('-u', '--up', '--search-up',
- dest="climb_up", default=0,
- action="store_const", const=1,
- help="Search up directory tree for SConstruct, "
- "build targets at or below current directory.")
-
- op.add_option('-U',
- dest="climb_up", default=0,
- action="store_const", const=3,
- help="Search up directory tree for SConstruct, "
- "build Default() targets from local SConscript.")
-
- def opt_version(option, opt, value, parser):
- sys.stdout.write(parser.version + '\n')
- sys.exit(0)
- op.add_option("-v", "--version",
- action="callback", callback=opt_version,
- help="Print the SCons version number and exit.")
-
- def opt_warn(option, opt, value, parser, tree_options=tree_options):
- if SCons.Util.is_String(value):
- value = value.split(',')
- parser.values.warn.extend(value)
-
- op.add_option('--warn', '--warning',
- nargs=1, type="string",
- dest="warn", default=[],
- action="callback", callback=opt_warn,
- help="Enable or disable warnings.",
- metavar="WARNING-SPEC")
-
- op.add_option('-Y', '--repository', '--srcdir',
- nargs=1,
- dest="repository", default=[],
- action="append",
- help="Search REPOSITORY for source and target files.")
-
- # Options from Make and Cons classic that we do not yet support,
- # but which we may support someday and whose (potential) meanings
- # we don't want to change. These all get a "the -X option is not
- # yet implemented" message and don't show up in the help output.
-
- def opt_not_yet(option, opt, value, parser):
- msg = "Warning: the %s option is not yet implemented\n" % opt
- sys.stderr.write(msg)
-
- op.add_option('-l', '--load-average', '--max-load',
- nargs=1, type="int",
- dest="load_average", default=0,
- action="callback", callback=opt_not_yet,
- # action="store",
- # help="Don't start multiple jobs unless load is below "
- # "LOAD-AVERAGE."
- help=SUPPRESS_HELP)
- op.add_option('--list-actions',
- dest="list_actions",
- action="callback", callback=opt_not_yet,
- # help="Don't build; list files and build actions."
- help=SUPPRESS_HELP)
- op.add_option('--list-derived',
- dest="list_derived",
- action="callback", callback=opt_not_yet,
- # help="Don't build; list files that would be built."
- help=SUPPRESS_HELP)
- op.add_option('--list-where',
- dest="list_where",
- action="callback", callback=opt_not_yet,
- # help="Don't build; list files and where defined."
- help=SUPPRESS_HELP)
- op.add_option('-o', '--old-file', '--assume-old',
- nargs=1, type="string",
- dest="old_file", default=[],
- action="callback", callback=opt_not_yet,
- # action="append",
- # help = "Consider FILE to be old; don't rebuild it."
- help=SUPPRESS_HELP)
- op.add_option('--override',
- nargs=1, type="string",
- action="callback", callback=opt_not_yet,
- dest="override",
- # help="Override variables as specified in FILE."
- help=SUPPRESS_HELP)
- op.add_option('-p',
- action="callback", callback=opt_not_yet,
- dest="p",
- # help="Print internal environments/objects."
- help=SUPPRESS_HELP)
- op.add_option('-r', '-R', '--no-builtin-rules', '--no-builtin-variables',
- action="callback", callback=opt_not_yet,
- dest="no_builtin_rules",
- # help="Clear default environments and variables."
- help=SUPPRESS_HELP)
- op.add_option('--write-filenames',
- nargs=1, type="string",
- dest="write_filenames",
- action="callback", callback=opt_not_yet,
- # help="Write all filenames examined into FILE."
- help=SUPPRESS_HELP)
- op.add_option('-W', '--new-file', '--assume-new', '--what-if',
- nargs=1, type="string",
- dest="new_file",
- action="callback", callback=opt_not_yet,
- # help="Consider FILE to be changed."
- help=SUPPRESS_HELP)
- op.add_option('--warn-undefined-variables',
- dest="warn_undefined_variables",
- action="callback", callback=opt_not_yet,
- # help="Warn when an undefined variable is referenced."
- help=SUPPRESS_HELP)
-
- return op
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Script/SConscript.py b/Externals/scons-local/scons-local-2.0.1/SCons/Script/SConscript.py
deleted file mode 100644
index 5e896f1fd4..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Script/SConscript.py
+++ /dev/null
@@ -1,640 +0,0 @@
-"""SCons.Script.SConscript
-
-This module defines the Python API provided to SConscript and SConstruct
-files.
-
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-from __future__ import division
-
-__revision__ = "src/engine/SCons/Script/SConscript.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import SCons
-import SCons.Action
-import SCons.Builder
-import SCons.Defaults
-import SCons.Environment
-import SCons.Errors
-import SCons.Node
-import SCons.Node.Alias
-import SCons.Node.FS
-import SCons.Platform
-import SCons.SConf
-import SCons.Script.Main
-import SCons.Tool
-import SCons.Util
-
-import collections
-import os
-import os.path
-import re
-import sys
-import traceback
-
-# The following variables used to live in this module. Some
-# SConscript files out there may have referred to them directly as
-# SCons.Script.SConscript.*. This is now supported by some special
-# handling towards the bottom of the SConscript.__init__.py module.
-#Arguments = {}
-#ArgList = []
-#BuildTargets = TargetList()
-#CommandLineTargets = []
-#DefaultTargets = []
-
-class SConscriptReturn(Exception):
- pass
-
-launch_dir = os.path.abspath(os.curdir)
-
-GlobalDict = None
-
-# global exports set by Export():
-global_exports = {}
-
-# chdir flag
-sconscript_chdir = 1
-
-def get_calling_namespaces():
- """Return the locals and globals for the function that called
- into this module in the current call stack."""
- try: 1//0
- except ZeroDivisionError:
- # Don't start iterating with the current stack-frame to
- # prevent creating reference cycles (f_back is safe).
- frame = sys.exc_info()[2].tb_frame.f_back
-
- # Find the first frame that *isn't* from this file. This means
- # that we expect all of the SCons frames that implement an Export()
- # or SConscript() call to be in this file, so that we can identify
- # the first non-Script.SConscript frame as the user's local calling
- # environment, and the locals and globals dictionaries from that
- # frame as the calling namespaces. See the comment below preceding
- # the DefaultEnvironmentCall block for even more explanation.
- while frame.f_globals.get("__name__") == __name__:
- frame = frame.f_back
-
- return frame.f_locals, frame.f_globals
-
-
-def compute_exports(exports):
- """Compute a dictionary of exports given one of the parameters
- to the Export() function or the exports argument to SConscript()."""
-
- loc, glob = get_calling_namespaces()
-
- retval = {}
- try:
- for export in exports:
- if SCons.Util.is_Dict(export):
- retval.update(export)
- else:
- try:
- retval[export] = loc[export]
- except KeyError:
- retval[export] = glob[export]
- except KeyError, x:
- raise SCons.Errors.UserError("Export of non-existent variable '%s'"%x)
-
- return retval
-
-class Frame(object):
- """A frame on the SConstruct/SConscript call stack"""
- def __init__(self, fs, exports, sconscript):
- self.globals = BuildDefaultGlobals()
- self.retval = None
- self.prev_dir = fs.getcwd()
- self.exports = compute_exports(exports) # exports from the calling SConscript
- # make sure the sconscript attr is a Node.
- if isinstance(sconscript, SCons.Node.Node):
- self.sconscript = sconscript
- elif sconscript == '-':
- self.sconscript = None
- else:
- self.sconscript = fs.File(str(sconscript))
-
-# the SConstruct/SConscript call stack:
-call_stack = []
-
-# For documentation on the methods in this file, see the scons man-page
-
-def Return(*vars, **kw):
- retval = []
- try:
- fvars = SCons.Util.flatten(vars)
- for var in fvars:
- for v in var.split():
- retval.append(call_stack[-1].globals[v])
- except KeyError, x:
- raise SCons.Errors.UserError("Return of non-existent variable '%s'"%x)
-
- if len(retval) == 1:
- call_stack[-1].retval = retval[0]
- else:
- call_stack[-1].retval = tuple(retval)
-
- stop = kw.get('stop', True)
-
- if stop:
- raise SConscriptReturn
-
-
-stack_bottom = '% Stack boTTom %' # hard to define a variable w/this name :)
-
-def _SConscript(fs, *files, **kw):
- top = fs.Top
- sd = fs.SConstruct_dir.rdir()
- exports = kw.get('exports', [])
-
- # evaluate each SConscript file
- results = []
- for fn in files:
- call_stack.append(Frame(fs, exports, fn))
- old_sys_path = sys.path
- try:
- SCons.Script.sconscript_reading = SCons.Script.sconscript_reading + 1
- if fn == "-":
- exec sys.stdin in call_stack[-1].globals
- else:
- if isinstance(fn, SCons.Node.Node):
- f = fn
- else:
- f = fs.File(str(fn))
- _file_ = None
-
- # Change directory to the top of the source
- # tree to make sure the os's cwd and the cwd of
- # fs match so we can open the SConscript.
- fs.chdir(top, change_os_dir=1)
- if f.rexists():
- actual = f.rfile()
- _file_ = open(actual.get_abspath(), "r")
- elif f.srcnode().rexists():
- actual = f.srcnode().rfile()
- _file_ = open(actual.get_abspath(), "r")
- elif f.has_src_builder():
- # The SConscript file apparently exists in a source
- # code management system. Build it, but then clear
- # the builder so that it doesn't get built *again*
- # during the actual build phase.
- f.build()
- f.built()
- f.builder_set(None)
- if f.exists():
- _file_ = open(f.get_abspath(), "r")
- if _file_:
- # Chdir to the SConscript directory. Use a path
- # name relative to the SConstruct file so that if
- # we're using the -f option, we're essentially
- # creating a parallel SConscript directory structure
- # in our local directory tree.
- #
- # XXX This is broken for multiple-repository cases
- # where the SConstruct and SConscript files might be
- # in different Repositories. For now, cross that
- # bridge when someone comes to it.
- try:
- src_dir = kw['src_dir']
- except KeyError:
- ldir = fs.Dir(f.dir.get_path(sd))
- else:
- ldir = fs.Dir(src_dir)
- if not ldir.is_under(f.dir):
- # They specified a source directory, but
- # it's above the SConscript directory.
- # Do the sensible thing and just use the
- # SConcript directory.
- ldir = fs.Dir(f.dir.get_path(sd))
- try:
- fs.chdir(ldir, change_os_dir=sconscript_chdir)
- except OSError:
- # There was no local directory, so we should be
- # able to chdir to the Repository directory.
- # Note that we do this directly, not through
- # fs.chdir(), because we still need to
- # interpret the stuff within the SConscript file
- # relative to where we are logically.
- fs.chdir(ldir, change_os_dir=0)
- os.chdir(actual.dir.get_abspath())
-
- # Append the SConscript directory to the beginning
- # of sys.path so Python modules in the SConscript
- # directory can be easily imported.
- sys.path = [ f.dir.get_abspath() ] + sys.path
-
- # This is the magic line that actually reads up
- # and executes the stuff in the SConscript file.
- # The locals for this frame contain the special
- # bottom-of-the-stack marker so that any
- # exceptions that occur when processing this
- # SConscript can base the printed frames at this
- # level and not show SCons internals as well.
- call_stack[-1].globals.update({stack_bottom:1})
- old_file = call_stack[-1].globals.get('__file__')
- try:
- del call_stack[-1].globals['__file__']
- except KeyError:
- pass
- try:
- try:
- exec _file_ in call_stack[-1].globals
- except SConscriptReturn:
- pass
- finally:
- if old_file is not None:
- call_stack[-1].globals.update({__file__:old_file})
- else:
- SCons.Warnings.warn(SCons.Warnings.MissingSConscriptWarning,
- "Ignoring missing SConscript '%s'" % f.path)
-
- finally:
- SCons.Script.sconscript_reading = SCons.Script.sconscript_reading - 1
- sys.path = old_sys_path
- frame = call_stack.pop()
- try:
- fs.chdir(frame.prev_dir, change_os_dir=sconscript_chdir)
- except OSError:
- # There was no local directory, so chdir to the
- # Repository directory. Like above, we do this
- # directly.
- fs.chdir(frame.prev_dir, change_os_dir=0)
- rdir = frame.prev_dir.rdir()
- rdir._create() # Make sure there's a directory there.
- try:
- os.chdir(rdir.get_abspath())
- except OSError, e:
- # We still couldn't chdir there, so raise the error,
- # but only if actions are being executed.
- #
- # If the -n option was used, the directory would *not*
- # have been created and we should just carry on and
- # let things muddle through. This isn't guaranteed
- # to work if the SConscript files are reading things
- # from disk (for example), but it should work well
- # enough for most configurations.
- if SCons.Action.execute_actions:
- raise e
-
- results.append(frame.retval)
-
- # if we only have one script, don't return a tuple
- if len(results) == 1:
- return results[0]
- else:
- return tuple(results)
-
-def SConscript_exception(file=sys.stderr):
- """Print an exception stack trace just for the SConscript file(s).
- This will show users who have Python errors where the problem is,
- without cluttering the output with all of the internal calls leading
- up to where we exec the SConscript."""
- exc_type, exc_value, exc_tb = sys.exc_info()
- tb = exc_tb
- while tb and stack_bottom not in tb.tb_frame.f_locals:
- tb = tb.tb_next
- if not tb:
- # We did not find our exec statement, so this was actually a bug
- # in SCons itself. Show the whole stack.
- tb = exc_tb
- stack = traceback.extract_tb(tb)
- try:
- type = exc_type.__name__
- except AttributeError:
- type = str(exc_type)
- if type[:11] == "exceptions.":
- type = type[11:]
- file.write('%s: %s:\n' % (type, exc_value))
- for fname, line, func, text in stack:
- file.write(' File "%s", line %d:\n' % (fname, line))
- file.write(' %s\n' % text)
-
-def annotate(node):
- """Annotate a node with the stack frame describing the
- SConscript file and line number that created it."""
- tb = sys.exc_info()[2]
- while tb and stack_bottom not in tb.tb_frame.f_locals:
- tb = tb.tb_next
- if not tb:
- # We did not find any exec of an SConscript file: what?!
- raise SCons.Errors.InternalError("could not find SConscript stack frame")
- node.creator = traceback.extract_stack(tb)[0]
-
-# The following line would cause each Node to be annotated using the
-# above function. Unfortunately, this is a *huge* performance hit, so
-# leave this disabled until we find a more efficient mechanism.
-#SCons.Node.Annotate = annotate
-
-class SConsEnvironment(SCons.Environment.Base):
- """An Environment subclass that contains all of the methods that
- are particular to the wrapper SCons interface and which aren't
- (or shouldn't be) part of the build engine itself.
-
- Note that not all of the methods of this class have corresponding
- global functions, there are some private methods.
- """
-
- #
- # Private methods of an SConsEnvironment.
- #
- def _exceeds_version(self, major, minor, v_major, v_minor):
- """Return 1 if 'major' and 'minor' are greater than the version
- in 'v_major' and 'v_minor', and 0 otherwise."""
- return (major > v_major or (major == v_major and minor > v_minor))
-
- def _get_major_minor_revision(self, version_string):
- """Split a version string into major, minor and (optionally)
- revision parts.
-
- This is complicated by the fact that a version string can be
- something like 3.2b1."""
- version = version_string.split(' ')[0].split('.')
- v_major = int(version[0])
- v_minor = int(re.match('\d+', version[1]).group())
- if len(version) >= 3:
- v_revision = int(re.match('\d+', version[2]).group())
- else:
- v_revision = 0
- return v_major, v_minor, v_revision
-
- def _get_SConscript_filenames(self, ls, kw):
- """
- Convert the parameters passed to SConscript() calls into a list
- of files and export variables. If the parameters are invalid,
- throws SCons.Errors.UserError. Returns a tuple (l, e) where l
- is a list of SConscript filenames and e is a list of exports.
- """
- exports = []
-
- if len(ls) == 0:
- try:
- dirs = kw["dirs"]
- except KeyError:
- raise SCons.Errors.UserError("Invalid SConscript usage - no parameters")
-
- if not SCons.Util.is_List(dirs):
- dirs = [ dirs ]
- dirs = list(map(str, dirs))
-
- name = kw.get('name', 'SConscript')
-
- files = [os.path.join(n, name) for n in dirs]
-
- elif len(ls) == 1:
-
- files = ls[0]
-
- elif len(ls) == 2:
-
- files = ls[0]
- exports = self.Split(ls[1])
-
- else:
-
- raise SCons.Errors.UserError("Invalid SConscript() usage - too many arguments")
-
- if not SCons.Util.is_List(files):
- files = [ files ]
-
- if kw.get('exports'):
- exports.extend(self.Split(kw['exports']))
-
- variant_dir = kw.get('variant_dir') or kw.get('build_dir')
- if variant_dir:
- if len(files) != 1:
- raise SCons.Errors.UserError("Invalid SConscript() usage - can only specify one SConscript with a variant_dir")
- duplicate = kw.get('duplicate', 1)
- src_dir = kw.get('src_dir')
- if not src_dir:
- src_dir, fname = os.path.split(str(files[0]))
- files = [os.path.join(str(variant_dir), fname)]
- else:
- if not isinstance(src_dir, SCons.Node.Node):
- src_dir = self.fs.Dir(src_dir)
- fn = files[0]
- if not isinstance(fn, SCons.Node.Node):
- fn = self.fs.File(fn)
- if fn.is_under(src_dir):
- # Get path relative to the source directory.
- fname = fn.get_path(src_dir)
- files = [os.path.join(str(variant_dir), fname)]
- else:
- files = [fn.abspath]
- kw['src_dir'] = variant_dir
- self.fs.VariantDir(variant_dir, src_dir, duplicate)
-
- return (files, exports)
-
- #
- # Public methods of an SConsEnvironment. These get
- # entry points in the global name space so they can be called
- # as global functions.
- #
-
- def Configure(self, *args, **kw):
- if not SCons.Script.sconscript_reading:
- raise SCons.Errors.UserError("Calling Configure from Builders is not supported.")
- kw['_depth'] = kw.get('_depth', 0) + 1
- return SCons.Environment.Base.Configure(self, *args, **kw)
-
- def Default(self, *targets):
- SCons.Script._Set_Default_Targets(self, targets)
-
- def EnsureSConsVersion(self, major, minor, revision=0):
- """Exit abnormally if the SCons version is not late enough."""
- scons_ver = self._get_major_minor_revision(SCons.__version__)
- if scons_ver < (major, minor, revision):
- if revision:
- scons_ver_string = '%d.%d.%d' % (major, minor, revision)
- else:
- scons_ver_string = '%d.%d' % (major, minor)
- print "SCons %s or greater required, but you have SCons %s" % \
- (scons_ver_string, SCons.__version__)
- sys.exit(2)
-
- def EnsurePythonVersion(self, major, minor):
- """Exit abnormally if the Python version is not late enough."""
- try:
- v_major, v_minor, v_micro, release, serial = sys.version_info
- python_ver = (v_major, v_minor)
- except AttributeError:
- python_ver = self._get_major_minor_revision(sys.version)[:2]
- if python_ver < (major, minor):
- v = sys.version.split(" ", 1)[0]
- print "Python %d.%d or greater required, but you have Python %s" %(major,minor,v)
- sys.exit(2)
-
- def Exit(self, value=0):
- sys.exit(value)
-
- def Export(self, *vars, **kw):
- for var in vars:
- global_exports.update(compute_exports(self.Split(var)))
- global_exports.update(kw)
-
- def GetLaunchDir(self):
- global launch_dir
- return launch_dir
-
- def GetOption(self, name):
- name = self.subst(name)
- return SCons.Script.Main.GetOption(name)
-
- def Help(self, text):
- text = self.subst(text, raw=1)
- SCons.Script.HelpFunction(text)
-
- def Import(self, *vars):
- try:
- frame = call_stack[-1]
- globals = frame.globals
- exports = frame.exports
- for var in vars:
- var = self.Split(var)
- for v in var:
- if v == '*':
- globals.update(global_exports)
- globals.update(exports)
- else:
- if v in exports:
- globals[v] = exports[v]
- else:
- globals[v] = global_exports[v]
- except KeyError,x:
- raise SCons.Errors.UserError("Import of non-existent variable '%s'"%x)
-
- def SConscript(self, *ls, **kw):
- if 'build_dir' in kw:
- msg = """The build_dir keyword has been deprecated; use the variant_dir keyword instead."""
- SCons.Warnings.warn(SCons.Warnings.DeprecatedBuildDirWarning, msg)
- def subst_element(x, subst=self.subst):
- if SCons.Util.is_List(x):
- x = list(map(subst, x))
- else:
- x = subst(x)
- return x
- ls = list(map(subst_element, ls))
- subst_kw = {}
- for key, val in kw.items():
- if SCons.Util.is_String(val):
- val = self.subst(val)
- elif SCons.Util.is_List(val):
- result = []
- for v in val:
- if SCons.Util.is_String(v):
- v = self.subst(v)
- result.append(v)
- val = result
- subst_kw[key] = val
-
- files, exports = self._get_SConscript_filenames(ls, subst_kw)
- subst_kw['exports'] = exports
- return _SConscript(self.fs, *files, **subst_kw)
-
- def SConscriptChdir(self, flag):
- global sconscript_chdir
- sconscript_chdir = flag
-
- def SetOption(self, name, value):
- name = self.subst(name)
- SCons.Script.Main.SetOption(name, value)
-
-#
-#
-#
-SCons.Environment.Environment = SConsEnvironment
-
-def Configure(*args, **kw):
- if not SCons.Script.sconscript_reading:
- raise SCons.Errors.UserError("Calling Configure from Builders is not supported.")
- kw['_depth'] = 1
- return SCons.SConf.SConf(*args, **kw)
-
-# It's very important that the DefaultEnvironmentCall() class stay in this
-# file, with the get_calling_namespaces() function, the compute_exports()
-# function, the Frame class and the SConsEnvironment.Export() method.
-# These things make up the calling stack leading up to the actual global
-# Export() or SConscript() call that the user issued. We want to allow
-# users to export local variables that they define, like so:
-#
-# def func():
-# x = 1
-# Export('x')
-#
-# To support this, the get_calling_namespaces() function assumes that
-# the *first* stack frame that's not from this file is the local frame
-# for the Export() or SConscript() call.
-
-_DefaultEnvironmentProxy = None
-
-def get_DefaultEnvironmentProxy():
- global _DefaultEnvironmentProxy
- if not _DefaultEnvironmentProxy:
- default_env = SCons.Defaults.DefaultEnvironment()
- _DefaultEnvironmentProxy = SCons.Environment.NoSubstitutionProxy(default_env)
- return _DefaultEnvironmentProxy
-
-class DefaultEnvironmentCall(object):
- """A class that implements "global function" calls of
- Environment methods by fetching the specified method from the
- DefaultEnvironment's class. Note that this uses an intermediate
- proxy class instead of calling the DefaultEnvironment method
- directly so that the proxy can override the subst() method and
- thereby prevent expansion of construction variables (since from
- the user's point of view this was called as a global function,
- with no associated construction environment)."""
- def __init__(self, method_name, subst=0):
- self.method_name = method_name
- if subst:
- self.factory = SCons.Defaults.DefaultEnvironment
- else:
- self.factory = get_DefaultEnvironmentProxy
- def __call__(self, *args, **kw):
- env = self.factory()
- method = getattr(env, self.method_name)
- return method(*args, **kw)
-
-
-def BuildDefaultGlobals():
- """
- Create a dictionary containing all the default globals for
- SConstruct and SConscript files.
- """
-
- global GlobalDict
- if GlobalDict is None:
- GlobalDict = {}
-
- import SCons.Script
- d = SCons.Script.__dict__
- def not_a_module(m, d=d, mtype=type(SCons.Script)):
- return not isinstance(d[m], mtype)
- for m in filter(not_a_module, dir(SCons.Script)):
- GlobalDict[m] = d[m]
-
- return GlobalDict.copy()
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Script/__init__.py b/Externals/scons-local/scons-local-2.0.1/SCons/Script/__init__.py
deleted file mode 100644
index b4545ecb6c..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Script/__init__.py
+++ /dev/null
@@ -1,412 +0,0 @@
-"""SCons.Script
-
-This file implements the main() function used by the scons script.
-
-Architecturally, this *is* the scons script, and will likely only be
-called from the external "scons" wrapper. Consequently, anything here
-should not be, or be considered, part of the build engine. If it's
-something that we expect other software to want to use, it should go in
-some other module. If it's specific to the "scons" script invocation,
-it goes here.
-
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Script/__init__.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import time
-start_time = time.time()
-
-import collections
-import os
-import sys
-
-# Special chicken-and-egg handling of the "--debug=memoizer" flag:
-#
-# SCons.Memoize contains a metaclass implementation that affects how
-# the other classes are instantiated. The Memoizer may add shim methods
-# to classes that have methods that cache computed values in order to
-# count and report the hits and misses.
-#
-# If we wait to enable the Memoization until after we've parsed the
-# command line options normally, it will be too late, because the Memoizer
-# will have already analyzed the classes that it's Memoizing and decided
-# to not add the shims. So we use a special-case, up-front check for
-# the "--debug=memoizer" flag and enable Memoizer before we import any
-# of the other modules that use it.
-
-_args = sys.argv + os.environ.get('SCONSFLAGS', '').split()
-if "--debug=memoizer" in _args:
- import SCons.Memoize
- import SCons.Warnings
- try:
- SCons.Memoize.EnableMemoization()
- except SCons.Warnings.Warning:
- # Some warning was thrown. Arrange for it to be displayed
- # or not after warnings are configured.
- import Main
- exc_type, exc_value, tb = sys.exc_info()
- Main.delayed_warnings.append((exc_type, exc_value))
-del _args
-
-import SCons.Action
-import SCons.Builder
-import SCons.Environment
-import SCons.Node.FS
-import SCons.Options
-import SCons.Platform
-import SCons.Scanner
-import SCons.SConf
-import SCons.Subst
-import SCons.Tool
-import SCons.Util
-import SCons.Variables
-import SCons.Defaults
-
-import Main
-
-main = Main.main
-
-# The following are global class definitions and variables that used to
-# live directly in this module back before 0.96.90, when it contained
-# a lot of code. Some SConscript files in widely-distributed packages
-# (Blender is the specific example) actually reached into SCons.Script
-# directly to use some of these. Rather than break those SConscript
-# files, we're going to propagate these names into the SCons.Script
-# namespace here.
-#
-# Some of these are commented out because it's *really* unlikely anyone
-# used them, but we're going to leave the comment here to try to make
-# it obvious what to do if the situation arises.
-BuildTask = Main.BuildTask
-CleanTask = Main.CleanTask
-QuestionTask = Main.QuestionTask
-#PrintHelp = Main.PrintHelp
-#SConscriptSettableOptions = Main.SConscriptSettableOptions
-
-AddOption = Main.AddOption
-GetOption = Main.GetOption
-SetOption = Main.SetOption
-Progress = Main.Progress
-GetBuildFailures = Main.GetBuildFailures
-
-#keep_going_on_error = Main.keep_going_on_error
-#print_dtree = Main.print_dtree
-#print_explanations = Main.print_explanations
-#print_includes = Main.print_includes
-#print_objects = Main.print_objects
-#print_time = Main.print_time
-#print_tree = Main.print_tree
-#memory_stats = Main.memory_stats
-#ignore_errors = Main.ignore_errors
-#sconscript_time = Main.sconscript_time
-#command_time = Main.command_time
-#exit_status = Main.exit_status
-#profiling = Main.profiling
-#repositories = Main.repositories
-
-#
-import SConscript
-_SConscript = SConscript
-
-call_stack = _SConscript.call_stack
-
-#
-Action = SCons.Action.Action
-AddMethod = SCons.Util.AddMethod
-AllowSubstExceptions = SCons.Subst.SetAllowableExceptions
-Builder = SCons.Builder.Builder
-Configure = _SConscript.Configure
-Environment = SCons.Environment.Environment
-#OptParser = SCons.SConsOptions.OptParser
-FindPathDirs = SCons.Scanner.FindPathDirs
-Platform = SCons.Platform.Platform
-Return = _SConscript.Return
-Scanner = SCons.Scanner.Base
-Tool = SCons.Tool.Tool
-WhereIs = SCons.Util.WhereIs
-
-#
-BoolVariable = SCons.Variables.BoolVariable
-EnumVariable = SCons.Variables.EnumVariable
-ListVariable = SCons.Variables.ListVariable
-PackageVariable = SCons.Variables.PackageVariable
-PathVariable = SCons.Variables.PathVariable
-
-# Deprecated names that will go away some day.
-BoolOption = SCons.Options.BoolOption
-EnumOption = SCons.Options.EnumOption
-ListOption = SCons.Options.ListOption
-PackageOption = SCons.Options.PackageOption
-PathOption = SCons.Options.PathOption
-
-# Action factories.
-Chmod = SCons.Defaults.Chmod
-Copy = SCons.Defaults.Copy
-Delete = SCons.Defaults.Delete
-Mkdir = SCons.Defaults.Mkdir
-Move = SCons.Defaults.Move
-Touch = SCons.Defaults.Touch
-
-# Pre-made, public scanners.
-CScanner = SCons.Tool.CScanner
-DScanner = SCons.Tool.DScanner
-DirScanner = SCons.Defaults.DirScanner
-ProgramScanner = SCons.Tool.ProgramScanner
-SourceFileScanner = SCons.Tool.SourceFileScanner
-
-# Functions we might still convert to Environment methods.
-CScan = SCons.Defaults.CScan
-DefaultEnvironment = SCons.Defaults.DefaultEnvironment
-
-# Other variables we provide.
-class TargetList(collections.UserList):
- def _do_nothing(self, *args, **kw):
- pass
- def _add_Default(self, list):
- self.extend(list)
- def _clear(self):
- del self[:]
-
-ARGUMENTS = {}
-ARGLIST = []
-BUILD_TARGETS = TargetList()
-COMMAND_LINE_TARGETS = []
-DEFAULT_TARGETS = []
-
-# BUILD_TARGETS can be modified in the SConscript files. If so, we
-# want to treat the modified BUILD_TARGETS list as if they specified
-# targets on the command line. To do that, though, we need to know if
-# BUILD_TARGETS was modified through "official" APIs or by hand. We do
-# this by updating two lists in parallel, the documented BUILD_TARGETS
-# list, above, and this internal _build_plus_default targets list which
-# should only have "official" API changes. Then Script/Main.py can
-# compare these two afterwards to figure out if the user added their
-# own targets to BUILD_TARGETS.
-_build_plus_default = TargetList()
-
-def _Add_Arguments(alist):
- for arg in alist:
- a, b = arg.split('=', 1)
- ARGUMENTS[a] = b
- ARGLIST.append((a, b))
-
-def _Add_Targets(tlist):
- if tlist:
- COMMAND_LINE_TARGETS.extend(tlist)
- BUILD_TARGETS.extend(tlist)
- BUILD_TARGETS._add_Default = BUILD_TARGETS._do_nothing
- BUILD_TARGETS._clear = BUILD_TARGETS._do_nothing
- _build_plus_default.extend(tlist)
- _build_plus_default._add_Default = _build_plus_default._do_nothing
- _build_plus_default._clear = _build_plus_default._do_nothing
-
-def _Set_Default_Targets_Has_Been_Called(d, fs):
- return DEFAULT_TARGETS
-
-def _Set_Default_Targets_Has_Not_Been_Called(d, fs):
- if d is None:
- d = [fs.Dir('.')]
- return d
-
-_Get_Default_Targets = _Set_Default_Targets_Has_Not_Been_Called
-
-def _Set_Default_Targets(env, tlist):
- global DEFAULT_TARGETS
- global _Get_Default_Targets
- _Get_Default_Targets = _Set_Default_Targets_Has_Been_Called
- for t in tlist:
- if t is None:
- # Delete the elements from the list in-place, don't
- # reassign an empty list to DEFAULT_TARGETS, so that the
- # variables will still point to the same object we point to.
- del DEFAULT_TARGETS[:]
- BUILD_TARGETS._clear()
- _build_plus_default._clear()
- elif isinstance(t, SCons.Node.Node):
- DEFAULT_TARGETS.append(t)
- BUILD_TARGETS._add_Default([t])
- _build_plus_default._add_Default([t])
- else:
- nodes = env.arg2nodes(t, env.fs.Entry)
- DEFAULT_TARGETS.extend(nodes)
- BUILD_TARGETS._add_Default(nodes)
- _build_plus_default._add_Default(nodes)
-
-#
-help_text = None
-
-def HelpFunction(text):
- global help_text
- if SCons.Script.help_text is None:
- SCons.Script.help_text = text
- else:
- help_text = help_text + text
-
-#
-# Will be non-zero if we are reading an SConscript file.
-sconscript_reading = 0
-
-#
-def Variables(files=[], args=ARGUMENTS):
- return SCons.Variables.Variables(files, args)
-
-def Options(files=[], args=ARGUMENTS):
- return SCons.Options.Options(files, args)
-
-# The list of global functions to add to the SConscript name space
-# that end up calling corresponding methods or Builders in the
-# DefaultEnvironment().
-GlobalDefaultEnvironmentFunctions = [
- # Methods from the SConsEnvironment class, above.
- 'Default',
- 'EnsurePythonVersion',
- 'EnsureSConsVersion',
- 'Exit',
- 'Export',
- 'GetLaunchDir',
- 'Help',
- 'Import',
- #'SConscript', is handled separately, below.
- 'SConscriptChdir',
-
- # Methods from the Environment.Base class.
- 'AddPostAction',
- 'AddPreAction',
- 'Alias',
- 'AlwaysBuild',
- 'BuildDir',
- 'CacheDir',
- 'Clean',
- #The Command() method is handled separately, below.
- 'Decider',
- 'Depends',
- 'Dir',
- 'NoClean',
- 'NoCache',
- 'Entry',
- 'Execute',
- 'File',
- 'FindFile',
- 'FindInstalledFiles',
- 'FindSourceFiles',
- 'Flatten',
- 'GetBuildPath',
- 'Glob',
- 'Ignore',
- 'Install',
- 'InstallAs',
- 'Literal',
- 'Local',
- 'ParseDepends',
- 'Precious',
- 'Repository',
- 'Requires',
- 'SConsignFile',
- 'SideEffect',
- 'SourceCode',
- 'SourceSignatures',
- 'Split',
- 'Tag',
- 'TargetSignatures',
- 'Value',
- 'VariantDir',
-]
-
-GlobalDefaultBuilders = [
- # Supported builders.
- 'CFile',
- 'CXXFile',
- 'DVI',
- 'Jar',
- 'Java',
- 'JavaH',
- 'Library',
- 'M4',
- 'MSVSProject',
- 'Object',
- 'PCH',
- 'PDF',
- 'PostScript',
- 'Program',
- 'RES',
- 'RMIC',
- 'SharedLibrary',
- 'SharedObject',
- 'StaticLibrary',
- 'StaticObject',
- 'Tar',
- 'TypeLibrary',
- 'Zip',
- 'Package',
-]
-
-for name in GlobalDefaultEnvironmentFunctions + GlobalDefaultBuilders:
- exec "%s = _SConscript.DefaultEnvironmentCall(%s)" % (name, repr(name))
-del name
-
-# There are a handful of variables that used to live in the
-# Script/SConscript.py module that some SConscript files out there were
-# accessing directly as SCons.Script.SConscript.*. The problem is that
-# "SConscript" in this namespace is no longer a module, it's a global
-# function call--or more precisely, an object that implements a global
-# function call through the default Environment. Nevertheless, we can
-# maintain backwards compatibility for SConscripts that were reaching in
-# this way by hanging some attributes off the "SConscript" object here.
-SConscript = _SConscript.DefaultEnvironmentCall('SConscript')
-
-# Make SConscript look enough like the module it used to be so
-# that pychecker doesn't barf.
-SConscript.__name__ = 'SConscript'
-
-SConscript.Arguments = ARGUMENTS
-SConscript.ArgList = ARGLIST
-SConscript.BuildTargets = BUILD_TARGETS
-SConscript.CommandLineTargets = COMMAND_LINE_TARGETS
-SConscript.DefaultTargets = DEFAULT_TARGETS
-
-# The global Command() function must be handled differently than the
-# global functions for other construction environment methods because
-# we want people to be able to use Actions that must expand $TARGET
-# and $SOURCE later, when (and if) the Action is invoked to build
-# the target(s). We do this with the subst=1 argument, which creates
-# a DefaultEnvironmentCall instance that wraps up a normal default
-# construction environment that performs variable substitution, not a
-# proxy that doesn't.
-#
-# There's a flaw here, though, because any other $-variables on a command
-# line will *also* be expanded, each to a null string, but that should
-# only be a problem in the unusual case where someone was passing a '$'
-# on a command line and *expected* the $ to get through to the shell
-# because they were calling Command() and not env.Command()... This is
-# unlikely enough that we're going to leave this as is and cross that
-# bridge if someone actually comes to it.
-Command = _SConscript.DefaultEnvironmentCall('Command', subst=1)
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Sig.py b/Externals/scons-local/scons-local-2.0.1/SCons/Sig.py
deleted file mode 100644
index 2a9bc8ea7d..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Sig.py
+++ /dev/null
@@ -1,63 +0,0 @@
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Sig.py 5134 2010/08/16 23:02:40 bdeegan"
-
-__doc__ = """Place-holder for the old SCons.Sig module hierarchy
-
-This is no longer used, but code out there (such as the NSIS module on
-the SCons wiki) may try to import SCons.Sig. If so, we generate a warning
-that points them to the line that caused the import, and don't die.
-
-If someone actually tried to use the sub-modules or functions within
-the package (for example, SCons.Sig.MD5.signature()), then they'll still
-get an AttributeError, but at least they'll know where to start looking.
-"""
-
-import SCons.Util
-import SCons.Warnings
-
-msg = 'The SCons.Sig module no longer exists.\n' \
- ' Remove the following "import SCons.Sig" line to eliminate this warning:'
-
-SCons.Warnings.warn(SCons.Warnings.DeprecatedSigModuleWarning, msg)
-
-default_calc = None
-default_module = None
-
-class MD5Null(SCons.Util.Null):
- def __repr__(self):
- return "MD5Null()"
-
-class TimeStampNull(SCons.Util.Null):
- def __repr__(self):
- return "TimeStampNull()"
-
-MD5 = MD5Null()
-TimeStamp = TimeStampNull()
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Subst.py b/Externals/scons-local/scons-local-2.0.1/SCons/Subst.py
deleted file mode 100644
index 84e71503b1..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Subst.py
+++ /dev/null
@@ -1,904 +0,0 @@
-"""SCons.Subst
-
-SCons string substitution.
-
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-__revision__ = "src/engine/SCons/Subst.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import collections
-import re
-
-import SCons.Errors
-
-from SCons.Util import is_String, is_Sequence
-
-# Indexed by the SUBST_* constants below.
-_strconv = [SCons.Util.to_String_for_subst,
- SCons.Util.to_String_for_subst,
- SCons.Util.to_String_for_signature]
-
-
-
-AllowableExceptions = (IndexError, NameError)
-
-def SetAllowableExceptions(*excepts):
- global AllowableExceptions
- AllowableExceptions = [_f for _f in excepts if _f]
-
-def raise_exception(exception, target, s):
- name = exception.__class__.__name__
- msg = "%s `%s' trying to evaluate `%s'" % (name, exception, s)
- if target:
- raise SCons.Errors.BuildError(target[0], msg)
- else:
- raise SCons.Errors.UserError(msg)
-
-
-
-class Literal(object):
- """A wrapper for a string. If you use this object wrapped
- around a string, then it will be interpreted as literal.
- When passed to the command interpreter, all special
- characters will be escaped."""
- def __init__(self, lstr):
- self.lstr = lstr
-
- def __str__(self):
- return self.lstr
-
- def escape(self, escape_func):
- return escape_func(self.lstr)
-
- def for_signature(self):
- return self.lstr
-
- def is_literal(self):
- return 1
-
-class SpecialAttrWrapper(object):
- """This is a wrapper for what we call a 'Node special attribute.'
- This is any of the attributes of a Node that we can reference from
- Environment variable substitution, such as $TARGET.abspath or
- $SOURCES[1].filebase. We implement the same methods as Literal
- so we can handle special characters, plus a for_signature method,
- such that we can return some canonical string during signature
- calculation to avoid unnecessary rebuilds."""
-
- def __init__(self, lstr, for_signature=None):
- """The for_signature parameter, if supplied, will be the
- canonical string we return from for_signature(). Else
- we will simply return lstr."""
- self.lstr = lstr
- if for_signature:
- self.forsig = for_signature
- else:
- self.forsig = lstr
-
- def __str__(self):
- return self.lstr
-
- def escape(self, escape_func):
- return escape_func(self.lstr)
-
- def for_signature(self):
- return self.forsig
-
- def is_literal(self):
- return 1
-
-def quote_spaces(arg):
- """Generic function for putting double quotes around any string that
- has white space in it."""
- if ' ' in arg or '\t' in arg:
- return '"%s"' % arg
- else:
- return str(arg)
-
-class CmdStringHolder(collections.UserString):
- """This is a special class used to hold strings generated by
- scons_subst() and scons_subst_list(). It defines a special method
- escape(). When passed a function with an escape algorithm for a
- particular platform, it will return the contained string with the
- proper escape sequences inserted.
- """
- def __init__(self, cmd, literal=None):
- collections.UserString.__init__(self, cmd)
- self.literal = literal
-
- def is_literal(self):
- return self.literal
-
- def escape(self, escape_func, quote_func=quote_spaces):
- """Escape the string with the supplied function. The
- function is expected to take an arbitrary string, then
- return it with all special characters escaped and ready
- for passing to the command interpreter.
-
- After calling this function, the next call to str() will
- return the escaped string.
- """
-
- if self.is_literal():
- return escape_func(self.data)
- elif ' ' in self.data or '\t' in self.data:
- return quote_func(self.data)
- else:
- return self.data
-
-def escape_list(mylist, escape_func):
- """Escape a list of arguments by running the specified escape_func
- on every object in the list that has an escape() method."""
- def escape(obj, escape_func=escape_func):
- try:
- e = obj.escape
- except AttributeError:
- return obj
- else:
- return e(escape_func)
- return list(map(escape, mylist))
-
-class NLWrapper(object):
- """A wrapper class that delays turning a list of sources or targets
- into a NodeList until it's needed. The specified function supplied
- when the object is initialized is responsible for turning raw nodes
- into proxies that implement the special attributes like .abspath,
- .source, etc. This way, we avoid creating those proxies just
- "in case" someone is going to use $TARGET or the like, and only
- go through the trouble if we really have to.
-
- In practice, this might be a wash performance-wise, but it's a little
- cleaner conceptually...
- """
-
- def __init__(self, list, func):
- self.list = list
- self.func = func
- def _return_nodelist(self):
- return self.nodelist
- def _gen_nodelist(self):
- mylist = self.list
- if mylist is None:
- mylist = []
- elif not is_Sequence(mylist):
- mylist = [mylist]
- # The map(self.func) call is what actually turns
- # a list into appropriate proxies.
- self.nodelist = SCons.Util.NodeList(list(map(self.func, mylist)))
- self._create_nodelist = self._return_nodelist
- return self.nodelist
- _create_nodelist = _gen_nodelist
-
-
-class Targets_or_Sources(collections.UserList):
- """A class that implements $TARGETS or $SOURCES expansions by in turn
- wrapping a NLWrapper. This class handles the different methods used
- to access the list, calling the NLWrapper to create proxies on demand.
-
- Note that we subclass collections.UserList purely so that the
- is_Sequence() function will identify an object of this class as
- a list during variable expansion. We're not really using any
- collections.UserList methods in practice.
- """
- def __init__(self, nl):
- self.nl = nl
- def __getattr__(self, attr):
- nl = self.nl._create_nodelist()
- return getattr(nl, attr)
- def __getitem__(self, i):
- nl = self.nl._create_nodelist()
- return nl[i]
- def __getslice__(self, i, j):
- nl = self.nl._create_nodelist()
- i = max(i, 0); j = max(j, 0)
- return nl[i:j]
- def __str__(self):
- nl = self.nl._create_nodelist()
- return str(nl)
- def __repr__(self):
- nl = self.nl._create_nodelist()
- return repr(nl)
-
-class Target_or_Source(object):
- """A class that implements $TARGET or $SOURCE expansions by in turn
- wrapping a NLWrapper. This class handles the different methods used
- to access an individual proxy Node, calling the NLWrapper to create
- a proxy on demand.
- """
- def __init__(self, nl):
- self.nl = nl
- def __getattr__(self, attr):
- nl = self.nl._create_nodelist()
- try:
- nl0 = nl[0]
- except IndexError:
- # If there is nothing in the list, then we have no attributes to
- # pass through, so raise AttributeError for everything.
- raise AttributeError("NodeList has no attribute: %s" % attr)
- return getattr(nl0, attr)
- def __str__(self):
- nl = self.nl._create_nodelist()
- if nl:
- return str(nl[0])
- return ''
- def __repr__(self):
- nl = self.nl._create_nodelist()
- if nl:
- return repr(nl[0])
- return ''
-
-class NullNodeList(SCons.Util.NullSeq):
- def __call__(self, *args, **kwargs): return ''
- def __str__(self): return ''
-
-NullNodesList = NullNodeList()
-
-def subst_dict(target, source):
- """Create a dictionary for substitution of special
- construction variables.
-
- This translates the following special arguments:
-
- target - the target (object or array of objects),
- used to generate the TARGET and TARGETS
- construction variables
-
- source - the source (object or array of objects),
- used to generate the SOURCES and SOURCE
- construction variables
- """
- dict = {}
-
- if target:
- def get_tgt_subst_proxy(thing):
- try:
- subst_proxy = thing.get_subst_proxy()
- except AttributeError:
- subst_proxy = thing # probably a string, just return it
- return subst_proxy
- tnl = NLWrapper(target, get_tgt_subst_proxy)
- dict['TARGETS'] = Targets_or_Sources(tnl)
- dict['TARGET'] = Target_or_Source(tnl)
-
- # This is a total cheat, but hopefully this dictionary goes
- # away soon anyway. We just let these expand to $TARGETS
- # because that's "good enough" for the use of ToolSurrogates
- # (see test/ToolSurrogate.py) to generate documentation.
- dict['CHANGED_TARGETS'] = '$TARGETS'
- dict['UNCHANGED_TARGETS'] = '$TARGETS'
- else:
- dict['TARGETS'] = NullNodesList
- dict['TARGET'] = NullNodesList
-
- if source:
- def get_src_subst_proxy(node):
- try:
- rfile = node.rfile
- except AttributeError:
- pass
- else:
- node = rfile()
- try:
- return node.get_subst_proxy()
- except AttributeError:
- return node # probably a String, just return it
- snl = NLWrapper(source, get_src_subst_proxy)
- dict['SOURCES'] = Targets_or_Sources(snl)
- dict['SOURCE'] = Target_or_Source(snl)
-
- # This is a total cheat, but hopefully this dictionary goes
- # away soon anyway. We just let these expand to $TARGETS
- # because that's "good enough" for the use of ToolSurrogates
- # (see test/ToolSurrogate.py) to generate documentation.
- dict['CHANGED_SOURCES'] = '$SOURCES'
- dict['UNCHANGED_SOURCES'] = '$SOURCES'
- else:
- dict['SOURCES'] = NullNodesList
- dict['SOURCE'] = NullNodesList
-
- return dict
-
-# Constants for the "mode" parameter to scons_subst_list() and
-# scons_subst(). SUBST_RAW gives the raw command line. SUBST_CMD
-# gives a command line suitable for passing to a shell. SUBST_SIG
-# gives a command line appropriate for calculating the signature
-# of a command line...if this changes, we should rebuild.
-SUBST_CMD = 0
-SUBST_RAW = 1
-SUBST_SIG = 2
-
-_rm = re.compile(r'\$[()]')
-_remove = re.compile(r'\$\([^\$]*(\$[^\)][^\$]*)*\$\)')
-
-# Indexed by the SUBST_* constants above.
-_regex_remove = [ _rm, None, _remove ]
-
-def _rm_list(list):
- #return [ l for l in list if not l in ('$(', '$)') ]
- return [l for l in list if not l in ('$(', '$)')]
-
-def _remove_list(list):
- result = []
- do_append = result.append
- for l in list:
- if l == '$(':
- do_append = lambda x: None
- elif l == '$)':
- do_append = result.append
- else:
- do_append(l)
- return result
-
-# Indexed by the SUBST_* constants above.
-_list_remove = [ _rm_list, None, _remove_list ]
-
-# Regular expressions for splitting strings and handling substitutions,
-# for use by the scons_subst() and scons_subst_list() functions:
-#
-# The first expression compiled matches all of the $-introduced tokens
-# that we need to process in some way, and is used for substitutions.
-# The expressions it matches are:
-#
-# "$$"
-# "$("
-# "$)"
-# "$variable" [must begin with alphabetic or underscore]
-# "${any stuff}"
-#
-# The second expression compiled is used for splitting strings into tokens
-# to be processed, and it matches all of the tokens listed above, plus
-# the following that affect how arguments do or don't get joined together:
-#
-# " " [white space]
-# "non-white-space" [without any dollar signs]
-# "$" [single dollar sign]
-#
-_dollar_exps_str = r'\$[\$\(\)]|\$[_a-zA-Z][\.\w]*|\${[^}]*}'
-_dollar_exps = re.compile(r'(%s)' % _dollar_exps_str)
-_separate_args = re.compile(r'(%s|\s+|[^\s\$]+|\$)' % _dollar_exps_str)
-
-# This regular expression is used to replace strings of multiple white
-# space characters in the string result from the scons_subst() function.
-_space_sep = re.compile(r'[\t ]+(?![^{]*})')
-
-def scons_subst(strSubst, env, mode=SUBST_RAW, target=None, source=None, gvars={}, lvars={}, conv=None):
- """Expand a string or list containing construction variable
- substitutions.
-
- This is the work-horse function for substitutions in file names
- and the like. The companion scons_subst_list() function (below)
- handles separating command lines into lists of arguments, so see
- that function if that's what you're looking for.
- """
- if isinstance(strSubst, str) and strSubst.find('$') < 0:
- return strSubst
-
- class StringSubber(object):
- """A class to construct the results of a scons_subst() call.
-
- This binds a specific construction environment, mode, target and
- source with two methods (substitute() and expand()) that handle
- the expansion.
- """
- def __init__(self, env, mode, conv, gvars):
- self.env = env
- self.mode = mode
- self.conv = conv
- self.gvars = gvars
-
- def expand(self, s, lvars):
- """Expand a single "token" as necessary, returning an
- appropriate string containing the expansion.
-
- This handles expanding different types of things (strings,
- lists, callables) appropriately. It calls the wrapper
- substitute() method to re-expand things as necessary, so that
- the results of expansions of side-by-side strings still get
- re-evaluated separately, not smushed together.
- """
- if is_String(s):
- try:
- s0, s1 = s[:2]
- except (IndexError, ValueError):
- return s
- if s0 != '$':
- return s
- if s1 == '$':
- return '$'
- elif s1 in '()':
- return s
- else:
- key = s[1:]
- if key[0] == '{' or key.find('.') >= 0:
- if key[0] == '{':
- key = key[1:-1]
- try:
- s = eval(key, self.gvars, lvars)
- except KeyboardInterrupt:
- raise
- except Exception, e:
- if e.__class__ in AllowableExceptions:
- return ''
- raise_exception(e, lvars['TARGETS'], s)
- else:
- if key in lvars:
- s = lvars[key]
- elif key in self.gvars:
- s = self.gvars[key]
- elif not NameError in AllowableExceptions:
- raise_exception(NameError(key), lvars['TARGETS'], s)
- else:
- return ''
-
- # Before re-expanding the result, handle
- # recursive expansion by copying the local
- # variable dictionary and overwriting a null
- # string for the value of the variable name
- # we just expanded.
- #
- # This could potentially be optimized by only
- # copying lvars when s contains more expansions,
- # but lvars is usually supposed to be pretty
- # small, and deeply nested variable expansions
- # are probably more the exception than the norm,
- # so it should be tolerable for now.
- lv = lvars.copy()
- var = key.split('.')[0]
- lv[var] = ''
- return self.substitute(s, lv)
- elif is_Sequence(s):
- def func(l, conv=self.conv, substitute=self.substitute, lvars=lvars):
- return conv(substitute(l, lvars))
- return list(map(func, s))
- elif callable(s):
- try:
- s = s(target=lvars['TARGETS'],
- source=lvars['SOURCES'],
- env=self.env,
- for_signature=(self.mode != SUBST_CMD))
- except TypeError:
- # This probably indicates that it's a callable
- # object that doesn't match our calling arguments
- # (like an Action).
- if self.mode == SUBST_RAW:
- return s
- s = self.conv(s)
- return self.substitute(s, lvars)
- elif s is None:
- return ''
- else:
- return s
-
- def substitute(self, args, lvars):
- """Substitute expansions in an argument or list of arguments.
-
- This serves as a wrapper for splitting up a string into
- separate tokens.
- """
- if is_String(args) and not isinstance(args, CmdStringHolder):
- args = str(args) # In case it's a UserString.
- try:
- def sub_match(match):
- return self.conv(self.expand(match.group(1), lvars))
- result = _dollar_exps.sub(sub_match, args)
- except TypeError:
- # If the internal conversion routine doesn't return
- # strings (it could be overridden to return Nodes, for
- # example), then the 1.5.2 re module will throw this
- # exception. Back off to a slower, general-purpose
- # algorithm that works for all data types.
- args = _separate_args.findall(args)
- result = []
- for a in args:
- result.append(self.conv(self.expand(a, lvars)))
- if len(result) == 1:
- result = result[0]
- else:
- result = ''.join(map(str, result))
- return result
- else:
- return self.expand(args, lvars)
-
- if conv is None:
- conv = _strconv[mode]
-
- # Doing this every time is a bit of a waste, since the Executor
- # has typically already populated the OverrideEnvironment with
- # $TARGET/$SOURCE variables. We're keeping this (for now), though,
- # because it supports existing behavior that allows us to call
- # an Action directly with an arbitrary target+source pair, which
- # we use in Tool/tex.py to handle calling $BIBTEX when necessary.
- # If we dropped that behavior (or found another way to cover it),
- # we could get rid of this call completely and just rely on the
- # Executor setting the variables.
- if 'TARGET' not in lvars:
- d = subst_dict(target, source)
- if d:
- lvars = lvars.copy()
- lvars.update(d)
-
- # We're (most likely) going to eval() things. If Python doesn't
- # find a __builtins__ value in the global dictionary used for eval(),
- # it copies the current global values for you. Avoid this by
- # setting it explicitly and then deleting, so we don't pollute the
- # construction environment Dictionary(ies) that are typically used
- # for expansion.
- gvars['__builtins__'] = __builtins__
-
- ss = StringSubber(env, mode, conv, gvars)
- result = ss.substitute(strSubst, lvars)
-
- try:
- del gvars['__builtins__']
- except KeyError:
- pass
-
- if is_String(result):
- # Remove $(-$) pairs and any stuff in between,
- # if that's appropriate.
- remove = _regex_remove[mode]
- if remove:
- result = remove.sub('', result)
- if mode != SUBST_RAW:
- # Compress strings of white space characters into
- # a single space.
- result = _space_sep.sub(' ', result).strip()
- elif is_Sequence(result):
- remove = _list_remove[mode]
- if remove:
- result = remove(result)
-
- return result
-
-#Subst_List_Strings = {}
-
-def scons_subst_list(strSubst, env, mode=SUBST_RAW, target=None, source=None, gvars={}, lvars={}, conv=None):
- """Substitute construction variables in a string (or list or other
- object) and separate the arguments into a command list.
-
- The companion scons_subst() function (above) handles basic
- substitutions within strings, so see that function instead
- if that's what you're looking for.
- """
-# try:
-# Subst_List_Strings[strSubst] = Subst_List_Strings[strSubst] + 1
-# except KeyError:
-# Subst_List_Strings[strSubst] = 1
-# import SCons.Debug
-# SCons.Debug.caller_trace(1)
- class ListSubber(collections.UserList):
- """A class to construct the results of a scons_subst_list() call.
-
- Like StringSubber, this class binds a specific construction
- environment, mode, target and source with two methods
- (substitute() and expand()) that handle the expansion.
-
- In addition, however, this class is used to track the state of
- the result(s) we're gathering so we can do the appropriate thing
- whenever we have to append another word to the result--start a new
- line, start a new word, append to the current word, etc. We do
- this by setting the "append" attribute to the right method so
- that our wrapper methods only need ever call ListSubber.append(),
- and the rest of the object takes care of doing the right thing
- internally.
- """
- def __init__(self, env, mode, conv, gvars):
- collections.UserList.__init__(self, [])
- self.env = env
- self.mode = mode
- self.conv = conv
- self.gvars = gvars
-
- if self.mode == SUBST_RAW:
- self.add_strip = lambda x: self.append(x)
- else:
- self.add_strip = lambda x: None
- self.in_strip = None
- self.next_line()
-
- def expand(self, s, lvars, within_list):
- """Expand a single "token" as necessary, appending the
- expansion to the current result.
-
- This handles expanding different types of things (strings,
- lists, callables) appropriately. It calls the wrapper
- substitute() method to re-expand things as necessary, so that
- the results of expansions of side-by-side strings still get
- re-evaluated separately, not smushed together.
- """
-
- if is_String(s):
- try:
- s0, s1 = s[:2]
- except (IndexError, ValueError):
- self.append(s)
- return
- if s0 != '$':
- self.append(s)
- return
- if s1 == '$':
- self.append('$')
- elif s1 == '(':
- self.open_strip('$(')
- elif s1 == ')':
- self.close_strip('$)')
- else:
- key = s[1:]
- if key[0] == '{' or key.find('.') >= 0:
- if key[0] == '{':
- key = key[1:-1]
- try:
- s = eval(key, self.gvars, lvars)
- except KeyboardInterrupt:
- raise
- except Exception, e:
- if e.__class__ in AllowableExceptions:
- return
- raise_exception(e, lvars['TARGETS'], s)
- else:
- if key in lvars:
- s = lvars[key]
- elif key in self.gvars:
- s = self.gvars[key]
- elif not NameError in AllowableExceptions:
- raise_exception(NameError(), lvars['TARGETS'], s)
- else:
- return
-
- # Before re-expanding the result, handle
- # recursive expansion by copying the local
- # variable dictionary and overwriting a null
- # string for the value of the variable name
- # we just expanded.
- lv = lvars.copy()
- var = key.split('.')[0]
- lv[var] = ''
- self.substitute(s, lv, 0)
- self.this_word()
- elif is_Sequence(s):
- for a in s:
- self.substitute(a, lvars, 1)
- self.next_word()
- elif callable(s):
- try:
- s = s(target=lvars['TARGETS'],
- source=lvars['SOURCES'],
- env=self.env,
- for_signature=(self.mode != SUBST_CMD))
- except TypeError:
- # This probably indicates that it's a callable
- # object that doesn't match our calling arguments
- # (like an Action).
- if self.mode == SUBST_RAW:
- self.append(s)
- return
- s = self.conv(s)
- self.substitute(s, lvars, within_list)
- elif s is None:
- self.this_word()
- else:
- self.append(s)
-
- def substitute(self, args, lvars, within_list):
- """Substitute expansions in an argument or list of arguments.
-
- This serves as a wrapper for splitting up a string into
- separate tokens.
- """
-
- if is_String(args) and not isinstance(args, CmdStringHolder):
- args = str(args) # In case it's a UserString.
- args = _separate_args.findall(args)
- for a in args:
- if a[0] in ' \t\n\r\f\v':
- if '\n' in a:
- self.next_line()
- elif within_list:
- self.append(a)
- else:
- self.next_word()
- else:
- self.expand(a, lvars, within_list)
- else:
- self.expand(args, lvars, within_list)
-
- def next_line(self):
- """Arrange for the next word to start a new line. This
- is like starting a new word, except that we have to append
- another line to the result."""
- collections.UserList.append(self, [])
- self.next_word()
-
- def this_word(self):
- """Arrange for the next word to append to the end of the
- current last word in the result."""
- self.append = self.add_to_current_word
-
- def next_word(self):
- """Arrange for the next word to start a new word."""
- self.append = self.add_new_word
-
- def add_to_current_word(self, x):
- """Append the string x to the end of the current last word
- in the result. If that is not possible, then just add
- it as a new word. Make sure the entire concatenated string
- inherits the object attributes of x (in particular, the
- escape function) by wrapping it as CmdStringHolder."""
-
- if not self.in_strip or self.mode != SUBST_SIG:
- try:
- current_word = self[-1][-1]
- except IndexError:
- self.add_new_word(x)
- else:
- # All right, this is a hack and it should probably
- # be refactored out of existence in the future.
- # The issue is that we want to smoosh words together
- # and make one file name that gets escaped if
- # we're expanding something like foo$EXTENSION,
- # but we don't want to smoosh them together if
- # it's something like >$TARGET, because then we'll
- # treat the '>' like it's part of the file name.
- # So for now, just hard-code looking for the special
- # command-line redirection characters...
- try:
- last_char = str(current_word)[-1]
- except IndexError:
- last_char = '\0'
- if last_char in '<>|':
- self.add_new_word(x)
- else:
- y = current_word + x
-
- # We used to treat a word appended to a literal
- # as a literal itself, but this caused problems
- # with interpreting quotes around space-separated
- # targets on command lines. Removing this makes
- # none of the "substantive" end-to-end tests fail,
- # so we'll take this out but leave it commented
- # for now in case there's a problem not covered
- # by the test cases and we need to resurrect this.
- #literal1 = self.literal(self[-1][-1])
- #literal2 = self.literal(x)
- y = self.conv(y)
- if is_String(y):
- #y = CmdStringHolder(y, literal1 or literal2)
- y = CmdStringHolder(y, None)
- self[-1][-1] = y
-
- def add_new_word(self, x):
- if not self.in_strip or self.mode != SUBST_SIG:
- literal = self.literal(x)
- x = self.conv(x)
- if is_String(x):
- x = CmdStringHolder(x, literal)
- self[-1].append(x)
- self.append = self.add_to_current_word
-
- def literal(self, x):
- try:
- l = x.is_literal
- except AttributeError:
- return None
- else:
- return l()
-
- def open_strip(self, x):
- """Handle the "open strip" $( token."""
- self.add_strip(x)
- self.in_strip = 1
-
- def close_strip(self, x):
- """Handle the "close strip" $) token."""
- self.add_strip(x)
- self.in_strip = None
-
- if conv is None:
- conv = _strconv[mode]
-
- # Doing this every time is a bit of a waste, since the Executor
- # has typically already populated the OverrideEnvironment with
- # $TARGET/$SOURCE variables. We're keeping this (for now), though,
- # because it supports existing behavior that allows us to call
- # an Action directly with an arbitrary target+source pair, which
- # we use in Tool/tex.py to handle calling $BIBTEX when necessary.
- # If we dropped that behavior (or found another way to cover it),
- # we could get rid of this call completely and just rely on the
- # Executor setting the variables.
- if 'TARGET' not in lvars:
- d = subst_dict(target, source)
- if d:
- lvars = lvars.copy()
- lvars.update(d)
-
- # We're (most likely) going to eval() things. If Python doesn't
- # find a __builtins__ value in the global dictionary used for eval(),
- # it copies the current global values for you. Avoid this by
- # setting it explicitly and then deleting, so we don't pollute the
- # construction environment Dictionary(ies) that are typically used
- # for expansion.
- gvars['__builtins__'] = __builtins__
-
- ls = ListSubber(env, mode, conv, gvars)
- ls.substitute(strSubst, lvars, 0)
-
- try:
- del gvars['__builtins__']
- except KeyError:
- pass
-
- return ls.data
-
-def scons_subst_once(strSubst, env, key):
- """Perform single (non-recursive) substitution of a single
- construction variable keyword.
-
- This is used when setting a variable when copying or overriding values
- in an Environment. We want to capture (expand) the old value before
- we override it, so people can do things like:
-
- env2 = env.Clone(CCFLAGS = '$CCFLAGS -g')
-
- We do this with some straightforward, brute-force code here...
- """
- if isinstance(strSubst, str) and strSubst.find('$') < 0:
- return strSubst
-
- matchlist = ['$' + key, '${' + key + '}']
- val = env.get(key, '')
- def sub_match(match, val=val, matchlist=matchlist):
- a = match.group(1)
- if a in matchlist:
- a = val
- if is_Sequence(a):
- return ' '.join(map(str, a))
- else:
- return str(a)
-
- if is_Sequence(strSubst):
- result = []
- for arg in strSubst:
- if is_String(arg):
- if arg in matchlist:
- arg = val
- if is_Sequence(arg):
- result.extend(arg)
- else:
- result.append(arg)
- else:
- result.append(_dollar_exps.sub(sub_match, arg))
- else:
- result.append(arg)
- return result
- elif is_String(strSubst):
- return _dollar_exps.sub(sub_match, strSubst)
- else:
- return strSubst
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Taskmaster.py b/Externals/scons-local/scons-local-2.0.1/SCons/Taskmaster.py
deleted file mode 100644
index 019b2d74d8..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Taskmaster.py
+++ /dev/null
@@ -1,1017 +0,0 @@
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-__doc__ = """
-Generic Taskmaster module for the SCons build engine.
-
-This module contains the primary interface(s) between a wrapping user
-interface and the SCons build engine. There are two key classes here:
-
- Taskmaster
- This is the main engine for walking the dependency graph and
- calling things to decide what does or doesn't need to be built.
-
- Task
- This is the base class for allowing a wrapping interface to
- decide what does or doesn't actually need to be done. The
- intention is for a wrapping interface to subclass this as
- appropriate for different types of behavior it may need.
-
- The canonical example is the SCons native Python interface,
- which has Task subclasses that handle its specific behavior,
- like printing "`foo' is up to date" when a top-level target
- doesn't need to be built, and handling the -c option by removing
- targets as its "build" action. There is also a separate subclass
- for suppressing this output when the -q option is used.
-
- The Taskmaster instantiates a Task object for each (set of)
- target(s) that it decides need to be evaluated and/or built.
-"""
-
-__revision__ = "src/engine/SCons/Taskmaster.py 5134 2010/08/16 23:02:40 bdeegan"
-
-from itertools import chain
-import operator
-import sys
-import traceback
-
-import SCons.Errors
-import SCons.Node
-import SCons.Warnings
-
-StateString = SCons.Node.StateString
-NODE_NO_STATE = SCons.Node.no_state
-NODE_PENDING = SCons.Node.pending
-NODE_EXECUTING = SCons.Node.executing
-NODE_UP_TO_DATE = SCons.Node.up_to_date
-NODE_EXECUTED = SCons.Node.executed
-NODE_FAILED = SCons.Node.failed
-
-
-# A subsystem for recording stats about how different Nodes are handled by
-# the main Taskmaster loop. There's no external control here (no need for
-# a --debug= option); enable it by changing the value of CollectStats.
-
-CollectStats = None
-
-class Stats(object):
- """
- A simple class for holding statistics about the disposition of a
- Node by the Taskmaster. If we're collecting statistics, each Node
- processed by the Taskmaster gets one of these attached, in which case
- the Taskmaster records its decision each time it processes the Node.
- (Ideally, that's just once per Node.)
- """
- def __init__(self):
- """
- Instantiates a Taskmaster.Stats object, initializing all
- appropriate counters to zero.
- """
- self.considered = 0
- self.already_handled = 0
- self.problem = 0
- self.child_failed = 0
- self.not_built = 0
- self.side_effects = 0
- self.build = 0
-
-StatsNodes = []
-
-fmt = "%(considered)3d "\
- "%(already_handled)3d " \
- "%(problem)3d " \
- "%(child_failed)3d " \
- "%(not_built)3d " \
- "%(side_effects)3d " \
- "%(build)3d "
-
-def dump_stats():
- for n in sorted(StatsNodes, key=lambda a: str(a)):
- print (fmt % n.stats.__dict__) + str(n)
-
-
-
-class Task(object):
- """
- Default SCons build engine task.
-
- This controls the interaction of the actual building of node
- and the rest of the engine.
-
- This is expected to handle all of the normally-customizable
- aspects of controlling a build, so any given application
- *should* be able to do what it wants by sub-classing this
- class and overriding methods as appropriate. If an application
- needs to customze something by sub-classing Taskmaster (or
- some other build engine class), we should first try to migrate
- that functionality into this class.
-
- Note that it's generally a good idea for sub-classes to call
- these methods explicitly to update state, etc., rather than
- roll their own interaction with Taskmaster from scratch.
- """
- def __init__(self, tm, targets, top, node):
- self.tm = tm
- self.targets = targets
- self.top = top
- self.node = node
- self.exc_clear()
-
- def trace_message(self, method, node, description='node'):
- fmt = '%-20s %s %s\n'
- return fmt % (method + ':', description, self.tm.trace_node(node))
-
- def display(self, message):
- """
- Hook to allow the calling interface to display a message.
-
- This hook gets called as part of preparing a task for execution
- (that is, a Node to be built). As part of figuring out what Node
- should be built next, the actually target list may be altered,
- along with a message describing the alteration. The calling
- interface can subclass Task and provide a concrete implementation
- of this method to see those messages.
- """
- pass
-
- def prepare(self):
- """
- Called just before the task is executed.
-
- This is mainly intended to give the target Nodes a chance to
- unlink underlying files and make all necessary directories before
- the Action is actually called to build the targets.
- """
- T = self.tm.trace
- if T: T.write(self.trace_message(u'Task.prepare()', self.node))
-
- # Now that it's the appropriate time, give the TaskMaster a
- # chance to raise any exceptions it encountered while preparing
- # this task.
- self.exception_raise()
-
- if self.tm.message:
- self.display(self.tm.message)
- self.tm.message = None
-
- # Let the targets take care of any necessary preparations.
- # This includes verifying that all of the necessary sources
- # and dependencies exist, removing the target file(s), etc.
- #
- # As of April 2008, the get_executor().prepare() method makes
- # sure that all of the aggregate sources necessary to build this
- # Task's target(s) exist in one up-front check. The individual
- # target t.prepare() methods check that each target's explicit
- # or implicit dependencies exists, and also initialize the
- # .sconsign info.
- executor = self.targets[0].get_executor()
- executor.prepare()
- for t in executor.get_action_targets():
- t.prepare()
- for s in t.side_effects:
- s.prepare()
-
- def get_target(self):
- """Fetch the target being built or updated by this task.
- """
- return self.node
-
- def needs_execute(self):
- # TODO(deprecate): "return True" is the old default behavior;
- # change it to NotImplementedError (after running through the
- # Deprecation Cycle) so the desired behavior is explicitly
- # determined by which concrete subclass is used.
- #raise NotImplementedError
- msg = ('Taskmaster.Task is an abstract base class; instead of\n'
- '\tusing it directly, '
- 'derive from it and override the abstract methods.')
- SCons.Warnings.warn(SCons.Warnings.TaskmasterNeedsExecuteWarning, msg)
- return True
-
- def execute(self):
- """
- Called to execute the task.
-
- This method is called from multiple threads in a parallel build,
- so only do thread safe stuff here. Do thread unsafe stuff in
- prepare(), executed() or failed().
- """
- T = self.tm.trace
- if T: T.write(self.trace_message(u'Task.execute()', self.node))
-
- try:
- everything_was_cached = 1
- for t in self.targets:
- if t.retrieve_from_cache():
- # Call the .built() method without calling the
- # .push_to_cache() method, since we just got the
- # target from the cache and don't need to push
- # it back there.
- t.set_state(NODE_EXECUTED)
- t.built()
- else:
- everything_was_cached = 0
- break
- if not everything_was_cached:
- self.targets[0].build()
- except SystemExit:
- exc_value = sys.exc_info()[1]
- raise SCons.Errors.ExplicitExit(self.targets[0], exc_value.code)
- except SCons.Errors.UserError:
- raise
- except SCons.Errors.BuildError:
- raise
- except Exception, e:
- buildError = SCons.Errors.convert_to_BuildError(e)
- buildError.node = self.targets[0]
- buildError.exc_info = sys.exc_info()
- raise buildError
-
- def executed_without_callbacks(self):
- """
- Called when the task has been successfully executed
- and the Taskmaster instance doesn't want to call
- the Node's callback methods.
- """
- T = self.tm.trace
- if T: T.write(self.trace_message('Task.executed_without_callbacks()',
- self.node))
-
- for t in self.targets:
- if t.get_state() == NODE_EXECUTING:
- for side_effect in t.side_effects:
- side_effect.set_state(NODE_NO_STATE)
- t.set_state(NODE_EXECUTED)
-
- def executed_with_callbacks(self):
- """
- Called when the task has been successfully executed and
- the Taskmaster instance wants to call the Node's callback
- methods.
-
- This may have been a do-nothing operation (to preserve build
- order), so we must check the node's state before deciding whether
- it was "built", in which case we call the appropriate Node method.
- In any event, we always call "visited()", which will handle any
- post-visit actions that must take place regardless of whether
- or not the target was an actual built target or a source Node.
- """
- T = self.tm.trace
- if T: T.write(self.trace_message('Task.executed_with_callbacks()',
- self.node))
-
- for t in self.targets:
- if t.get_state() == NODE_EXECUTING:
- for side_effect in t.side_effects:
- side_effect.set_state(NODE_NO_STATE)
- t.set_state(NODE_EXECUTED)
- t.push_to_cache()
- t.built()
- t.visited()
-
- executed = executed_with_callbacks
-
- def failed(self):
- """
- Default action when a task fails: stop the build.
-
- Note: Although this function is normally invoked on nodes in
- the executing state, it might also be invoked on up-to-date
- nodes when using Configure().
- """
- self.fail_stop()
-
- def fail_stop(self):
- """
- Explicit stop-the-build failure.
-
- This sets failure status on the target nodes and all of
- their dependent parent nodes.
-
- Note: Although this function is normally invoked on nodes in
- the executing state, it might also be invoked on up-to-date
- nodes when using Configure().
- """
- T = self.tm.trace
- if T: T.write(self.trace_message('Task.failed_stop()', self.node))
-
- # Invoke will_not_build() to clean-up the pending children
- # list.
- self.tm.will_not_build(self.targets, lambda n: n.set_state(NODE_FAILED))
-
- # Tell the taskmaster to not start any new tasks
- self.tm.stop()
-
- # We're stopping because of a build failure, but give the
- # calling Task class a chance to postprocess() the top-level
- # target under which the build failure occurred.
- self.targets = [self.tm.current_top]
- self.top = 1
-
- def fail_continue(self):
- """
- Explicit continue-the-build failure.
-
- This sets failure status on the target nodes and all of
- their dependent parent nodes.
-
- Note: Although this function is normally invoked on nodes in
- the executing state, it might also be invoked on up-to-date
- nodes when using Configure().
- """
- T = self.tm.trace
- if T: T.write(self.trace_message('Task.failed_continue()', self.node))
-
- self.tm.will_not_build(self.targets, lambda n: n.set_state(NODE_FAILED))
-
- def make_ready_all(self):
- """
- Marks all targets in a task ready for execution.
-
- This is used when the interface needs every target Node to be
- visited--the canonical example being the "scons -c" option.
- """
- T = self.tm.trace
- if T: T.write(self.trace_message('Task.make_ready_all()', self.node))
-
- self.out_of_date = self.targets[:]
- for t in self.targets:
- t.disambiguate().set_state(NODE_EXECUTING)
- for s in t.side_effects:
- # add disambiguate here to mirror the call on targets above
- s.disambiguate().set_state(NODE_EXECUTING)
-
- def make_ready_current(self):
- """
- Marks all targets in a task ready for execution if any target
- is not current.
-
- This is the default behavior for building only what's necessary.
- """
- T = self.tm.trace
- if T: T.write(self.trace_message(u'Task.make_ready_current()',
- self.node))
-
- self.out_of_date = []
- needs_executing = False
- for t in self.targets:
- try:
- t.disambiguate().make_ready()
- is_up_to_date = not t.has_builder() or \
- (not t.always_build and t.is_up_to_date())
- except EnvironmentError, e:
- raise SCons.Errors.BuildError(node=t, errstr=e.strerror, filename=e.filename)
-
- if not is_up_to_date:
- self.out_of_date.append(t)
- needs_executing = True
-
- if needs_executing:
- for t in self.targets:
- t.set_state(NODE_EXECUTING)
- for s in t.side_effects:
- # add disambiguate here to mirror the call on targets in first loop above
- s.disambiguate().set_state(NODE_EXECUTING)
- else:
- for t in self.targets:
- # We must invoke visited() to ensure that the node
- # information has been computed before allowing the
- # parent nodes to execute. (That could occur in a
- # parallel build...)
- t.visited()
- t.set_state(NODE_UP_TO_DATE)
-
- make_ready = make_ready_current
-
- def postprocess(self):
- """
- Post-processes a task after it's been executed.
-
- This examines all the targets just built (or not, we don't care
- if the build was successful, or even if there was no build
- because everything was up-to-date) to see if they have any
- waiting parent Nodes, or Nodes waiting on a common side effect,
- that can be put back on the candidates list.
- """
- T = self.tm.trace
- if T: T.write(self.trace_message(u'Task.postprocess()', self.node))
-
- # We may have built multiple targets, some of which may have
- # common parents waiting for this build. Count up how many
- # targets each parent was waiting for so we can subtract the
- # values later, and so we *don't* put waiting side-effect Nodes
- # back on the candidates list if the Node is also a waiting
- # parent.
-
- targets = set(self.targets)
-
- pending_children = self.tm.pending_children
- parents = {}
- for t in targets:
- # A node can only be in the pending_children set if it has
- # some waiting_parents.
- if t.waiting_parents:
- if T: T.write(self.trace_message(u'Task.postprocess()',
- t,
- 'removing'))
- pending_children.discard(t)
- for p in t.waiting_parents:
- parents[p] = parents.get(p, 0) + 1
-
- for t in targets:
- for s in t.side_effects:
- if s.get_state() == NODE_EXECUTING:
- s.set_state(NODE_NO_STATE)
- for p in s.waiting_parents:
- parents[p] = parents.get(p, 0) + 1
- for p in s.waiting_s_e:
- if p.ref_count == 0:
- self.tm.candidates.append(p)
-
- for p, subtract in parents.items():
- p.ref_count = p.ref_count - subtract
- if T: T.write(self.trace_message(u'Task.postprocess()',
- p,
- 'adjusted parent ref count'))
- if p.ref_count == 0:
- self.tm.candidates.append(p)
-
- for t in targets:
- t.postprocess()
-
- # Exception handling subsystem.
- #
- # Exceptions that occur while walking the DAG or examining Nodes
- # must be raised, but must be raised at an appropriate time and in
- # a controlled manner so we can, if necessary, recover gracefully,
- # possibly write out signature information for Nodes we've updated,
- # etc. This is done by having the Taskmaster tell us about the
- # exception, and letting
-
- def exc_info(self):
- """
- Returns info about a recorded exception.
- """
- return self.exception
-
- def exc_clear(self):
- """
- Clears any recorded exception.
-
- This also changes the "exception_raise" attribute to point
- to the appropriate do-nothing method.
- """
- self.exception = (None, None, None)
- self.exception_raise = self._no_exception_to_raise
-
- def exception_set(self, exception=None):
- """
- Records an exception to be raised at the appropriate time.
-
- This also changes the "exception_raise" attribute to point
- to the method that will, in fact
- """
- if not exception:
- exception = sys.exc_info()
- self.exception = exception
- self.exception_raise = self._exception_raise
-
- def _no_exception_to_raise(self):
- pass
-
- def _exception_raise(self):
- """
- Raises a pending exception that was recorded while getting a
- Task ready for execution.
- """
- exc = self.exc_info()[:]
- try:
- exc_type, exc_value, exc_traceback = exc
- except ValueError:
- exc_type, exc_value = exc
- exc_traceback = None
- raise exc_type, exc_value, exc_traceback
-
-class AlwaysTask(Task):
- def needs_execute(self):
- """
- Always returns True (indicating this Task should always
- be executed).
-
- Subclasses that need this behavior (as opposed to the default
- of only executing Nodes that are out of date w.r.t. their
- dependencies) can use this as follows:
-
- class MyTaskSubclass(SCons.Taskmaster.Task):
- needs_execute = SCons.Taskmaster.Task.execute_always
- """
- return True
-
-class OutOfDateTask(Task):
- def needs_execute(self):
- """
- Returns True (indicating this Task should be executed) if this
- Task's target state indicates it needs executing, which has
- already been determined by an earlier up-to-date check.
- """
- return self.targets[0].get_state() == SCons.Node.executing
-
-
-def find_cycle(stack, visited):
- if stack[-1] in visited:
- return None
- visited.add(stack[-1])
- for n in stack[-1].waiting_parents:
- stack.append(n)
- if stack[0] == stack[-1]:
- return stack
- if find_cycle(stack, visited):
- return stack
- stack.pop()
- return None
-
-
-class Taskmaster(object):
- """
- The Taskmaster for walking the dependency DAG.
- """
-
- def __init__(self, targets=[], tasker=None, order=None, trace=None):
- self.original_top = targets
- self.top_targets_left = targets[:]
- self.top_targets_left.reverse()
- self.candidates = []
- if tasker is None:
- tasker = OutOfDateTask
- self.tasker = tasker
- if not order:
- order = lambda l: l
- self.order = order
- self.message = None
- self.trace = trace
- self.next_candidate = self.find_next_candidate
- self.pending_children = set()
-
- def find_next_candidate(self):
- """
- Returns the next candidate Node for (potential) evaluation.
-
- The candidate list (really a stack) initially consists of all of
- the top-level (command line) targets provided when the Taskmaster
- was initialized. While we walk the DAG, visiting Nodes, all the
- children that haven't finished processing get pushed on to the
- candidate list. Each child can then be popped and examined in
- turn for whether *their* children are all up-to-date, in which
- case a Task will be created for their actual evaluation and
- potential building.
-
- Here is where we also allow candidate Nodes to alter the list of
- Nodes that should be examined. This is used, for example, when
- invoking SCons in a source directory. A source directory Node can
- return its corresponding build directory Node, essentially saying,
- "Hey, you really need to build this thing over here instead."
- """
- try:
- return self.candidates.pop()
- except IndexError:
- pass
- try:
- node = self.top_targets_left.pop()
- except IndexError:
- return None
- self.current_top = node
- alt, message = node.alter_targets()
- if alt:
- self.message = message
- self.candidates.append(node)
- self.candidates.extend(self.order(alt))
- node = self.candidates.pop()
- return node
-
- def no_next_candidate(self):
- """
- Stops Taskmaster processing by not returning a next candidate.
-
- Note that we have to clean-up the Taskmaster candidate list
- because the cycle detection depends on the fact all nodes have
- been processed somehow.
- """
- while self.candidates:
- candidates = self.candidates
- self.candidates = []
- self.will_not_build(candidates)
- return None
-
- def _validate_pending_children(self):
- """
- Validate the content of the pending_children set. Assert if an
- internal error is found.
-
- This function is used strictly for debugging the taskmaster by
- checking that no invariants are violated. It is not used in
- normal operation.
-
- The pending_children set is used to detect cycles in the
- dependency graph. We call a "pending child" a child that is
- found in the "pending" state when checking the dependencies of
- its parent node.
-
- A pending child can occur when the Taskmaster completes a loop
- through a cycle. For example, lets imagine a graph made of
- three node (A, B and C) making a cycle. The evaluation starts
- at node A. The taskmaster first consider whether node A's
- child B is up-to-date. Then, recursively, node B needs to
- check whether node C is up-to-date. This leaves us with a
- dependency graph looking like:
-
- Next candidate \
- \
- Node A (Pending) --> Node B(Pending) --> Node C (NoState)
- ^ |
- | |
- +-------------------------------------+
-
- Now, when the Taskmaster examines the Node C's child Node A,
- it finds that Node A is in the "pending" state. Therefore,
- Node A is a pending child of node C.
-
- Pending children indicate that the Taskmaster has potentially
- loop back through a cycle. We say potentially because it could
- also occur when a DAG is evaluated in parallel. For example,
- consider the following graph:
-
-
- Node A (Pending) --> Node B(Pending) --> Node C (Pending) --> ...
- | ^
- | |
- +----------> Node D (NoState) --------+
- /
- Next candidate /
-
- The Taskmaster first evaluates the nodes A, B, and C and
- starts building some children of node C. Assuming, that the
- maximum parallel level has not been reached, the Taskmaster
- will examine Node D. It will find that Node C is a pending
- child of Node D.
-
- In summary, evaluating a graph with a cycle will always
- involve a pending child at one point. A pending child might
- indicate either a cycle or a diamond-shaped DAG. Only a
- fraction of the nodes ends-up being a "pending child" of
- another node. This keeps the pending_children set small in
- practice.
-
- We can differentiate between the two cases if we wait until
- the end of the build. At this point, all the pending children
- nodes due to a diamond-shaped DAG will have been properly
- built (or will have failed to build). But, the pending
- children involved in a cycle will still be in the pending
- state.
-
- The taskmaster removes nodes from the pending_children set as
- soon as a pending_children node moves out of the pending
- state. This also helps to keep the pending_children set small.
- """
-
- for n in self.pending_children:
- assert n.state in (NODE_PENDING, NODE_EXECUTING), \
- (str(n), StateString[n.state])
- assert len(n.waiting_parents) != 0, (str(n), len(n.waiting_parents))
- for p in n.waiting_parents:
- assert p.ref_count > 0, (str(n), str(p), p.ref_count)
-
-
- def trace_message(self, message):
- return 'Taskmaster: %s\n' % message
-
- def trace_node(self, node):
- return '<%-10s %-3s %s>' % (StateString[node.get_state()],
- node.ref_count,
- repr(str(node)))
-
- def _find_next_ready_node(self):
- """
- Finds the next node that is ready to be built.
-
- This is *the* main guts of the DAG walk. We loop through the
- list of candidates, looking for something that has no un-built
- children (i.e., that is a leaf Node or has dependencies that are
- all leaf Nodes or up-to-date). Candidate Nodes are re-scanned
- (both the target Node itself and its sources, which are always
- scanned in the context of a given target) to discover implicit
- dependencies. A Node that must wait for some children to be
- built will be put back on the candidates list after the children
- have finished building. A Node that has been put back on the
- candidates list in this way may have itself (or its sources)
- re-scanned, in order to handle generated header files (e.g.) and
- the implicit dependencies therein.
-
- Note that this method does not do any signature calculation or
- up-to-date check itself. All of that is handled by the Task
- class. This is purely concerned with the dependency graph walk.
- """
-
- self.ready_exc = None
-
- T = self.trace
- if T: T.write(u'\n' + self.trace_message('Looking for a node to evaluate'))
-
- while True:
- node = self.next_candidate()
- if node is None:
- if T: T.write(self.trace_message('No candidate anymore.') + u'\n')
- return None
-
- node = node.disambiguate()
- state = node.get_state()
-
- # For debugging only:
- #
- # try:
- # self._validate_pending_children()
- # except:
- # self.ready_exc = sys.exc_info()
- # return node
-
- if CollectStats:
- if not hasattr(node, 'stats'):
- node.stats = Stats()
- StatsNodes.append(node)
- S = node.stats
- S.considered = S.considered + 1
- else:
- S = None
-
- if T: T.write(self.trace_message(u' Considering node %s and its children:' % self.trace_node(node)))
-
- if state == NODE_NO_STATE:
- # Mark this node as being on the execution stack:
- node.set_state(NODE_PENDING)
- elif state > NODE_PENDING:
- # Skip this node if it has already been evaluated:
- if S: S.already_handled = S.already_handled + 1
- if T: T.write(self.trace_message(u' already handled (executed)'))
- continue
-
- executor = node.get_executor()
-
- try:
- children = executor.get_all_children()
- except SystemExit:
- exc_value = sys.exc_info()[1]
- e = SCons.Errors.ExplicitExit(node, exc_value.code)
- self.ready_exc = (SCons.Errors.ExplicitExit, e)
- if T: T.write(self.trace_message(' SystemExit'))
- return node
- except Exception, e:
- # We had a problem just trying to figure out the
- # children (like a child couldn't be linked in to a
- # VariantDir, or a Scanner threw something). Arrange to
- # raise the exception when the Task is "executed."
- self.ready_exc = sys.exc_info()
- if S: S.problem = S.problem + 1
- if T: T.write(self.trace_message(' exception %s while scanning children.\n' % e))
- return node
-
- children_not_visited = []
- children_pending = set()
- children_not_ready = []
- children_failed = False
-
- for child in chain(executor.get_all_prerequisites(), children):
- childstate = child.get_state()
-
- if T: T.write(self.trace_message(u' ' + self.trace_node(child)))
-
- if childstate == NODE_NO_STATE:
- children_not_visited.append(child)
- elif childstate == NODE_PENDING:
- children_pending.add(child)
- elif childstate == NODE_FAILED:
- children_failed = True
-
- if childstate <= NODE_EXECUTING:
- children_not_ready.append(child)
-
-
- # These nodes have not even been visited yet. Add
- # them to the list so that on some next pass we can
- # take a stab at evaluating them (or their children).
- children_not_visited.reverse()
- self.candidates.extend(self.order(children_not_visited))
- #if T and children_not_visited:
- # T.write(self.trace_message(' adding to candidates: %s' % map(str, children_not_visited)))
- # T.write(self.trace_message(' candidates now: %s\n' % map(str, self.candidates)))
-
- # Skip this node if any of its children have failed.
- #
- # This catches the case where we're descending a top-level
- # target and one of our children failed while trying to be
- # built by a *previous* descent of an earlier top-level
- # target.
- #
- # It can also occur if a node is reused in multiple
- # targets. One first descends though the one of the
- # target, the next time occurs through the other target.
- #
- # Note that we can only have failed_children if the
- # --keep-going flag was used, because without it the build
- # will stop before diving in the other branch.
- #
- # Note that even if one of the children fails, we still
- # added the other children to the list of candidate nodes
- # to keep on building (--keep-going).
- if children_failed:
- for n in executor.get_action_targets():
- n.set_state(NODE_FAILED)
-
- if S: S.child_failed = S.child_failed + 1
- if T: T.write(self.trace_message('****** %s\n' % self.trace_node(node)))
- continue
-
- if children_not_ready:
- for child in children_not_ready:
- # We're waiting on one or more derived targets
- # that have not yet finished building.
- if S: S.not_built = S.not_built + 1
-
- # Add this node to the waiting parents lists of
- # anything we're waiting on, with a reference
- # count so we can be put back on the list for
- # re-evaluation when they've all finished.
- node.ref_count = node.ref_count + child.add_to_waiting_parents(node)
- if T: T.write(self.trace_message(u' adjusted ref count: %s, child %s' %
- (self.trace_node(node), repr(str(child)))))
-
- if T:
- for pc in children_pending:
- T.write(self.trace_message(' adding %s to the pending children set\n' %
- self.trace_node(pc)))
- self.pending_children = self.pending_children | children_pending
-
- continue
-
- # Skip this node if it has side-effects that are
- # currently being built:
- wait_side_effects = False
- for se in executor.get_action_side_effects():
- if se.get_state() == NODE_EXECUTING:
- se.add_to_waiting_s_e(node)
- wait_side_effects = True
-
- if wait_side_effects:
- if S: S.side_effects = S.side_effects + 1
- continue
-
- # The default when we've gotten through all of the checks above:
- # this node is ready to be built.
- if S: S.build = S.build + 1
- if T: T.write(self.trace_message(u'Evaluating %s\n' %
- self.trace_node(node)))
-
- # For debugging only:
- #
- # try:
- # self._validate_pending_children()
- # except:
- # self.ready_exc = sys.exc_info()
- # return node
-
- return node
-
- return None
-
- def next_task(self):
- """
- Returns the next task to be executed.
-
- This simply asks for the next Node to be evaluated, and then wraps
- it in the specific Task subclass with which we were initialized.
- """
- node = self._find_next_ready_node()
-
- if node is None:
- return None
-
- tlist = node.get_executor().get_all_targets()
-
- task = self.tasker(self, tlist, node in self.original_top, node)
- try:
- task.make_ready()
- except:
- # We had a problem just trying to get this task ready (like
- # a child couldn't be linked in to a VariantDir when deciding
- # whether this node is current). Arrange to raise the
- # exception when the Task is "executed."
- self.ready_exc = sys.exc_info()
-
- if self.ready_exc:
- task.exception_set(self.ready_exc)
-
- self.ready_exc = None
-
- return task
-
- def will_not_build(self, nodes, node_func=lambda n: None):
- """
- Perform clean-up about nodes that will never be built. Invokes
- a user defined function on all of these nodes (including all
- of their parents).
- """
-
- T = self.trace
-
- pending_children = self.pending_children
-
- to_visit = set(nodes)
- pending_children = pending_children - to_visit
-
- if T:
- for n in nodes:
- T.write(self.trace_message(' removing node %s from the pending children set\n' %
- self.trace_node(n)))
- try:
- while len(to_visit):
- node = to_visit.pop()
- node_func(node)
-
- # Prune recursion by flushing the waiting children
- # list immediately.
- parents = node.waiting_parents
- node.waiting_parents = set()
-
- to_visit = to_visit | parents
- pending_children = pending_children - parents
-
- for p in parents:
- p.ref_count = p.ref_count - 1
- if T: T.write(self.trace_message(' removing parent %s from the pending children set\n' %
- self.trace_node(p)))
- except KeyError:
- # The container to_visit has been emptied.
- pass
-
- # We have the stick back the pending_children list into the
- # taskmaster because the python 1.5.2 compatibility does not
- # allow us to use in-place updates
- self.pending_children = pending_children
-
- def stop(self):
- """
- Stops the current build completely.
- """
- self.next_candidate = self.no_next_candidate
-
- def cleanup(self):
- """
- Check for dependency cycles.
- """
- if not self.pending_children:
- return
-
- nclist = [(n, find_cycle([n], set())) for n in self.pending_children]
-
- genuine_cycles = [
- node for node,cycle in nclist
- if cycle or node.get_state() != NODE_EXECUTED
- ]
- if not genuine_cycles:
- # All of the "cycles" found were single nodes in EXECUTED state,
- # which is to say, they really weren't cycles. Just return.
- return
-
- desc = 'Found dependency cycle(s):\n'
- for node, cycle in nclist:
- if cycle:
- desc = desc + " " + " -> ".join(map(str, cycle)) + "\n"
- else:
- desc = desc + \
- " Internal Error: no cycle found for node %s (%s) in state %s\n" % \
- (node, repr(node), StateString[node.get_state()])
-
- raise SCons.Errors.UserError(desc)
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/386asm.py b/Externals/scons-local/scons-local-2.0.1/SCons/Tool/386asm.py
deleted file mode 100644
index 1ba99fa3eb..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/386asm.py
+++ /dev/null
@@ -1,61 +0,0 @@
-"""SCons.Tool.386asm
-
-Tool specification for the 386ASM assembler for the Phar Lap ETS embedded
-operating system.
-
-There normally shouldn't be any need to import this module directly.
-It will usually be imported through the generic SCons.Tool.Tool()
-selection method.
-
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Tool/386asm.py 5134 2010/08/16 23:02:40 bdeegan"
-
-from SCons.Tool.PharLapCommon import addPharLapPaths
-import SCons.Util
-
-as_module = __import__('as', globals(), locals(), [])
-
-def generate(env):
- """Add Builders and construction variables for ar to an Environment."""
- as_module.generate(env)
-
- env['AS'] = '386asm'
- env['ASFLAGS'] = SCons.Util.CLVar('')
- env['ASPPFLAGS'] = '$ASFLAGS'
- env['ASCOM'] = '$AS $ASFLAGS $SOURCES -o $TARGET'
- env['ASPPCOM'] = '$CC $ASPPFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS $SOURCES -o $TARGET'
-
- addPharLapPaths(env)
-
-def exists(env):
- return env.Detect('386asm')
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/BitKeeper.py b/Externals/scons-local/scons-local-2.0.1/SCons/Tool/BitKeeper.py
deleted file mode 100644
index 8c8991a1d3..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/BitKeeper.py
+++ /dev/null
@@ -1,67 +0,0 @@
-"""SCons.Tool.BitKeeper.py
-
-Tool-specific initialization for the BitKeeper source code control
-system.
-
-There normally shouldn't be any need to import this module directly.
-It will usually be imported through the generic SCons.Tool.Tool()
-selection method.
-
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Tool/BitKeeper.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import SCons.Action
-import SCons.Builder
-import SCons.Util
-
-def generate(env):
- """Add a Builder factory function and construction variables for
- BitKeeper to an Environment."""
-
- def BitKeeperFactory(env=env):
- """ """
- import SCons.Warnings as W
- W.warn(W.DeprecatedSourceCodeWarning, """The BitKeeper() factory is deprecated and there is no replacement.""")
- act = SCons.Action.Action("$BITKEEPERCOM", "$BITKEEPERCOMSTR")
- return SCons.Builder.Builder(action = act, env = env)
-
- #setattr(env, 'BitKeeper', BitKeeperFactory)
- env.BitKeeper = BitKeeperFactory
-
- env['BITKEEPER'] = 'bk'
- env['BITKEEPERGET'] = '$BITKEEPER get'
- env['BITKEEPERGETFLAGS'] = SCons.Util.CLVar('')
- env['BITKEEPERCOM'] = '$BITKEEPERGET $BITKEEPERGETFLAGS $TARGET'
-
-def exists(env):
- return env.Detect('bk')
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/CVS.py b/Externals/scons-local/scons-local-2.0.1/SCons/Tool/CVS.py
deleted file mode 100644
index 5d511f0580..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/CVS.py
+++ /dev/null
@@ -1,73 +0,0 @@
-"""SCons.Tool.CVS.py
-
-Tool-specific initialization for CVS.
-
-There normally shouldn't be any need to import this module directly.
-It will usually be imported through the generic SCons.Tool.Tool()
-selection method.
-
-"""
-
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-__revision__ = "src/engine/SCons/Tool/CVS.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import SCons.Action
-import SCons.Builder
-import SCons.Util
-
-def generate(env):
- """Add a Builder factory function and construction variables for
- CVS to an Environment."""
-
- def CVSFactory(repos, module='', env=env):
- """ """
- import SCons.Warnings as W
- W.warn(W.DeprecatedSourceCodeWarning, """The CVS() factory is deprecated and there is no replacement.""")
- # fail if repos is not an absolute path name?
- if module != '':
- # Don't use os.path.join() because the name we fetch might
- # be across a network and must use POSIX slashes as separators.
- module = module + '/'
- env['CVSCOM'] = '$CVS $CVSFLAGS co $CVSCOFLAGS -d ${TARGET.dir} $CVSMODULE${TARGET.posix}'
- act = SCons.Action.Action('$CVSCOM', '$CVSCOMSTR')
- return SCons.Builder.Builder(action = act,
- env = env,
- CVSREPOSITORY = repos,
- CVSMODULE = module)
-
- #setattr(env, 'CVS', CVSFactory)
- env.CVS = CVSFactory
-
- env['CVS'] = 'cvs'
- env['CVSFLAGS'] = SCons.Util.CLVar('-d $CVSREPOSITORY')
- env['CVSCOFLAGS'] = SCons.Util.CLVar('')
- env['CVSCOM'] = '$CVS $CVSFLAGS co $CVSCOFLAGS ${TARGET.posix}'
-
-def exists(env):
- return env.Detect('cvs')
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/FortranCommon.py b/Externals/scons-local/scons-local-2.0.1/SCons/Tool/FortranCommon.py
deleted file mode 100644
index 2194158274..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/FortranCommon.py
+++ /dev/null
@@ -1,246 +0,0 @@
-"""SCons.Tool.FortranCommon
-
-Stuff for processing Fortran, common to all fortran dialects.
-
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Tool/FortranCommon.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import re
-import os.path
-
-import SCons.Action
-import SCons.Defaults
-import SCons.Scanner.Fortran
-import SCons.Tool
-import SCons.Util
-
-def isfortran(env, source):
- """Return 1 if any of code in source has fortran files in it, 0
- otherwise."""
- try:
- fsuffixes = env['FORTRANSUFFIXES']
- except KeyError:
- # If no FORTRANSUFFIXES, no fortran tool, so there is no need to look
- # for fortran sources.
- return 0
-
- if not source:
- # Source might be None for unusual cases like SConf.
- return 0
- for s in source:
- if s.sources:
- ext = os.path.splitext(str(s.sources[0]))[1]
- if ext in fsuffixes:
- return 1
- return 0
-
-def _fortranEmitter(target, source, env):
- node = source[0].rfile()
- if not node.exists() and not node.is_derived():
- print "Could not locate " + str(node.name)
- return ([], [])
- mod_regex = """(?i)^\s*MODULE\s+(?!PROCEDURE)(\w+)"""
- cre = re.compile(mod_regex,re.M)
- # Retrieve all USE'd module names
- modules = cre.findall(node.get_text_contents())
- # Remove unique items from the list
- modules = SCons.Util.unique(modules)
- # Convert module name to a .mod filename
- suffix = env.subst('$FORTRANMODSUFFIX', target=target, source=source)
- moddir = env.subst('$FORTRANMODDIR', target=target, source=source)
- modules = [x.lower() + suffix for x in modules]
- for m in modules:
- target.append(env.fs.File(m, moddir))
- return (target, source)
-
-def FortranEmitter(target, source, env):
- target, source = _fortranEmitter(target, source, env)
- return SCons.Defaults.StaticObjectEmitter(target, source, env)
-
-def ShFortranEmitter(target, source, env):
- target, source = _fortranEmitter(target, source, env)
- return SCons.Defaults.SharedObjectEmitter(target, source, env)
-
-def ComputeFortranSuffixes(suffixes, ppsuffixes):
- """suffixes are fortran source files, and ppsuffixes the ones to be
- pre-processed. Both should be sequences, not strings."""
- assert len(suffixes) > 0
- s = suffixes[0]
- sup = s.upper()
- upper_suffixes = [_.upper() for _ in suffixes]
- if SCons.Util.case_sensitive_suffixes(s, sup):
- ppsuffixes.extend(upper_suffixes)
- else:
- suffixes.extend(upper_suffixes)
-
-def CreateDialectActions(dialect):
- """Create dialect specific actions."""
- CompAction = SCons.Action.Action('$%sCOM ' % dialect, '$%sCOMSTR' % dialect)
- CompPPAction = SCons.Action.Action('$%sPPCOM ' % dialect, '$%sPPCOMSTR' % dialect)
- ShCompAction = SCons.Action.Action('$SH%sCOM ' % dialect, '$SH%sCOMSTR' % dialect)
- ShCompPPAction = SCons.Action.Action('$SH%sPPCOM ' % dialect, '$SH%sPPCOMSTR' % dialect)
-
- return CompAction, CompPPAction, ShCompAction, ShCompPPAction
-
-def DialectAddToEnv(env, dialect, suffixes, ppsuffixes, support_module = 0):
- """Add dialect specific construction variables."""
- ComputeFortranSuffixes(suffixes, ppsuffixes)
-
- fscan = SCons.Scanner.Fortran.FortranScan("%sPATH" % dialect)
-
- for suffix in suffixes + ppsuffixes:
- SCons.Tool.SourceFileScanner.add_scanner(suffix, fscan)
-
- env.AppendUnique(FORTRANSUFFIXES = suffixes + ppsuffixes)
-
- compaction, compppaction, shcompaction, shcompppaction = \
- CreateDialectActions(dialect)
-
- static_obj, shared_obj = SCons.Tool.createObjBuilders(env)
-
- for suffix in suffixes:
- static_obj.add_action(suffix, compaction)
- shared_obj.add_action(suffix, shcompaction)
- static_obj.add_emitter(suffix, FortranEmitter)
- shared_obj.add_emitter(suffix, ShFortranEmitter)
-
- for suffix in ppsuffixes:
- static_obj.add_action(suffix, compppaction)
- shared_obj.add_action(suffix, shcompppaction)
- static_obj.add_emitter(suffix, FortranEmitter)
- shared_obj.add_emitter(suffix, ShFortranEmitter)
-
- if '%sFLAGS' % dialect not in env:
- env['%sFLAGS' % dialect] = SCons.Util.CLVar('')
-
- if 'SH%sFLAGS' % dialect not in env:
- env['SH%sFLAGS' % dialect] = SCons.Util.CLVar('$%sFLAGS' % dialect)
-
- # If a tool does not define fortran prefix/suffix for include path, use C ones
- if 'INC%sPREFIX' % dialect not in env:
- env['INC%sPREFIX' % dialect] = '$INCPREFIX'
-
- if 'INC%sSUFFIX' % dialect not in env:
- env['INC%sSUFFIX' % dialect] = '$INCSUFFIX'
-
- env['_%sINCFLAGS' % dialect] = '$( ${_concat(INC%sPREFIX, %sPATH, INC%sSUFFIX, __env__, RDirs, TARGET, SOURCE)} $)' % (dialect, dialect, dialect)
-
- if support_module == 1:
- env['%sCOM' % dialect] = '$%s -o $TARGET -c $%sFLAGS $_%sINCFLAGS $_FORTRANMODFLAG $SOURCES' % (dialect, dialect, dialect)
- env['%sPPCOM' % dialect] = '$%s -o $TARGET -c $%sFLAGS $CPPFLAGS $_CPPDEFFLAGS $_%sINCFLAGS $_FORTRANMODFLAG $SOURCES' % (dialect, dialect, dialect)
- env['SH%sCOM' % dialect] = '$SH%s -o $TARGET -c $SH%sFLAGS $_%sINCFLAGS $_FORTRANMODFLAG $SOURCES' % (dialect, dialect, dialect)
- env['SH%sPPCOM' % dialect] = '$SH%s -o $TARGET -c $SH%sFLAGS $CPPFLAGS $_CPPDEFFLAGS $_%sINCFLAGS $_FORTRANMODFLAG $SOURCES' % (dialect, dialect, dialect)
- else:
- env['%sCOM' % dialect] = '$%s -o $TARGET -c $%sFLAGS $_%sINCFLAGS $SOURCES' % (dialect, dialect, dialect)
- env['%sPPCOM' % dialect] = '$%s -o $TARGET -c $%sFLAGS $CPPFLAGS $_CPPDEFFLAGS $_%sINCFLAGS $SOURCES' % (dialect, dialect, dialect)
- env['SH%sCOM' % dialect] = '$SH%s -o $TARGET -c $SH%sFLAGS $_%sINCFLAGS $SOURCES' % (dialect, dialect, dialect)
- env['SH%sPPCOM' % dialect] = '$SH%s -o $TARGET -c $SH%sFLAGS $CPPFLAGS $_CPPDEFFLAGS $_%sINCFLAGS $SOURCES' % (dialect, dialect, dialect)
-
-def add_fortran_to_env(env):
- """Add Builders and construction variables for Fortran to an Environment."""
- try:
- FortranSuffixes = env['FORTRANFILESUFFIXES']
- except KeyError:
- FortranSuffixes = ['.f', '.for', '.ftn']
-
- #print "Adding %s to fortran suffixes" % FortranSuffixes
- try:
- FortranPPSuffixes = env['FORTRANPPFILESUFFIXES']
- except KeyError:
- FortranPPSuffixes = ['.fpp', '.FPP']
-
- DialectAddToEnv(env, "FORTRAN", FortranSuffixes,
- FortranPPSuffixes, support_module = 1)
-
- env['FORTRANMODPREFIX'] = '' # like $LIBPREFIX
- env['FORTRANMODSUFFIX'] = '.mod' # like $LIBSUFFIX
-
- env['FORTRANMODDIR'] = '' # where the compiler should place .mod files
- env['FORTRANMODDIRPREFIX'] = '' # some prefix to $FORTRANMODDIR - similar to $INCPREFIX
- env['FORTRANMODDIRSUFFIX'] = '' # some suffix to $FORTRANMODDIR - similar to $INCSUFFIX
- env['_FORTRANMODFLAG'] = '$( ${_concat(FORTRANMODDIRPREFIX, FORTRANMODDIR, FORTRANMODDIRSUFFIX, __env__, RDirs, TARGET, SOURCE)} $)'
-
-def add_f77_to_env(env):
- """Add Builders and construction variables for f77 to an Environment."""
- try:
- F77Suffixes = env['F77FILESUFFIXES']
- except KeyError:
- F77Suffixes = ['.f77']
-
- #print "Adding %s to f77 suffixes" % F77Suffixes
- try:
- F77PPSuffixes = env['F77PPFILESUFFIXES']
- except KeyError:
- F77PPSuffixes = []
-
- DialectAddToEnv(env, "F77", F77Suffixes, F77PPSuffixes)
-
-def add_f90_to_env(env):
- """Add Builders and construction variables for f90 to an Environment."""
- try:
- F90Suffixes = env['F90FILESUFFIXES']
- except KeyError:
- F90Suffixes = ['.f90']
-
- #print "Adding %s to f90 suffixes" % F90Suffixes
- try:
- F90PPSuffixes = env['F90PPFILESUFFIXES']
- except KeyError:
- F90PPSuffixes = []
-
- DialectAddToEnv(env, "F90", F90Suffixes, F90PPSuffixes,
- support_module = 1)
-
-def add_f95_to_env(env):
- """Add Builders and construction variables for f95 to an Environment."""
- try:
- F95Suffixes = env['F95FILESUFFIXES']
- except KeyError:
- F95Suffixes = ['.f95']
-
- #print "Adding %s to f95 suffixes" % F95Suffixes
- try:
- F95PPSuffixes = env['F95PPFILESUFFIXES']
- except KeyError:
- F95PPSuffixes = []
-
- DialectAddToEnv(env, "F95", F95Suffixes, F95PPSuffixes,
- support_module = 1)
-
-def add_all_to_env(env):
- """Add builders and construction variables for all supported fortran
- dialects."""
- add_fortran_to_env(env)
- add_f77_to_env(env)
- add_f90_to_env(env)
- add_f95_to_env(env)
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/JavaCommon.py b/Externals/scons-local/scons-local-2.0.1/SCons/Tool/JavaCommon.py
deleted file mode 100644
index 0a38409aa7..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/JavaCommon.py
+++ /dev/null
@@ -1,323 +0,0 @@
-"""SCons.Tool.JavaCommon
-
-Stuff for processing Java.
-
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Tool/JavaCommon.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import os
-import os.path
-import re
-
-java_parsing = 1
-
-default_java_version = '1.4'
-
-if java_parsing:
- # Parse Java files for class names.
- #
- # This is a really cool parser from Charles Crain
- # that finds appropriate class names in Java source.
-
- # A regular expression that will find, in a java file:
- # newlines;
- # double-backslashes;
- # a single-line comment "//";
- # single or double quotes preceeded by a backslash;
- # single quotes, double quotes, open or close braces, semi-colons,
- # periods, open or close parentheses;
- # floating-point numbers;
- # any alphanumeric token (keyword, class name, specifier);
- # any alphanumeric token surrounded by angle brackets (generics);
- # the multi-line comment begin and end tokens /* and */;
- # array declarations "[]".
- _reToken = re.compile(r'(\n|\\\\|//|\\[\'"]|[\'"\{\}\;\.\(\)]|' +
- r'\d*\.\d*|[A-Za-z_][\w\$\.]*|<[A-Za-z_]\w+>|' +
- r'/\*|\*/|\[\])')
-
- class OuterState(object):
- """The initial state for parsing a Java file for classes,
- interfaces, and anonymous inner classes."""
- def __init__(self, version=default_java_version):
-
- if not version in ('1.1', '1.2', '1.3','1.4', '1.5', '1.6',
- '5', '6'):
- msg = "Java version %s not supported" % version
- raise NotImplementedError(msg)
-
- self.version = version
- self.listClasses = []
- self.listOutputs = []
- self.stackBrackets = []
- self.brackets = 0
- self.nextAnon = 1
- self.localClasses = []
- self.stackAnonClassBrackets = []
- self.anonStacksStack = [[0]]
- self.package = None
-
- def trace(self):
- pass
-
- def __getClassState(self):
- try:
- return self.classState
- except AttributeError:
- ret = ClassState(self)
- self.classState = ret
- return ret
-
- def __getPackageState(self):
- try:
- return self.packageState
- except AttributeError:
- ret = PackageState(self)
- self.packageState = ret
- return ret
-
- def __getAnonClassState(self):
- try:
- return self.anonState
- except AttributeError:
- self.outer_state = self
- ret = SkipState(1, AnonClassState(self))
- self.anonState = ret
- return ret
-
- def __getSkipState(self):
- try:
- return self.skipState
- except AttributeError:
- ret = SkipState(1, self)
- self.skipState = ret
- return ret
-
- def __getAnonStack(self):
- return self.anonStacksStack[-1]
-
- def openBracket(self):
- self.brackets = self.brackets + 1
-
- def closeBracket(self):
- self.brackets = self.brackets - 1
- if len(self.stackBrackets) and \
- self.brackets == self.stackBrackets[-1]:
- self.listOutputs.append('$'.join(self.listClasses))
- self.localClasses.pop()
- self.listClasses.pop()
- self.anonStacksStack.pop()
- self.stackBrackets.pop()
- if len(self.stackAnonClassBrackets) and \
- self.brackets == self.stackAnonClassBrackets[-1]:
- self.__getAnonStack().pop()
- self.stackAnonClassBrackets.pop()
-
- def parseToken(self, token):
- if token[:2] == '//':
- return IgnoreState('\n', self)
- elif token == '/*':
- return IgnoreState('*/', self)
- elif token == '{':
- self.openBracket()
- elif token == '}':
- self.closeBracket()
- elif token in [ '"', "'" ]:
- return IgnoreState(token, self)
- elif token == "new":
- # anonymous inner class
- if len(self.listClasses) > 0:
- return self.__getAnonClassState()
- return self.__getSkipState() # Skip the class name
- elif token in ['class', 'interface', 'enum']:
- if len(self.listClasses) == 0:
- self.nextAnon = 1
- self.stackBrackets.append(self.brackets)
- return self.__getClassState()
- elif token == 'package':
- return self.__getPackageState()
- elif token == '.':
- # Skip the attribute, it might be named "class", in which
- # case we don't want to treat the following token as
- # an inner class name...
- return self.__getSkipState()
- return self
-
- def addAnonClass(self):
- """Add an anonymous inner class"""
- if self.version in ('1.1', '1.2', '1.3', '1.4'):
- clazz = self.listClasses[0]
- self.listOutputs.append('%s$%d' % (clazz, self.nextAnon))
- elif self.version in ('1.5', '1.6', '5', '6'):
- self.stackAnonClassBrackets.append(self.brackets)
- className = []
- className.extend(self.listClasses)
- self.__getAnonStack()[-1] = self.__getAnonStack()[-1] + 1
- for anon in self.__getAnonStack():
- className.append(str(anon))
- self.listOutputs.append('$'.join(className))
-
- self.nextAnon = self.nextAnon + 1
- self.__getAnonStack().append(0)
-
- def setPackage(self, package):
- self.package = package
-
- class AnonClassState(object):
- """A state that looks for anonymous inner classes."""
- def __init__(self, old_state):
- # outer_state is always an instance of OuterState
- self.outer_state = old_state.outer_state
- self.old_state = old_state
- self.brace_level = 0
- def parseToken(self, token):
- # This is an anonymous class if and only if the next
- # non-whitespace token is a bracket. Everything between
- # braces should be parsed as normal java code.
- if token[:2] == '//':
- return IgnoreState('\n', self)
- elif token == '/*':
- return IgnoreState('*/', self)
- elif token == '\n':
- return self
- elif token[0] == '<' and token[-1] == '>':
- return self
- elif token == '(':
- self.brace_level = self.brace_level + 1
- return self
- if self.brace_level > 0:
- if token == 'new':
- # look further for anonymous inner class
- return SkipState(1, AnonClassState(self))
- elif token in [ '"', "'" ]:
- return IgnoreState(token, self)
- elif token == ')':
- self.brace_level = self.brace_level - 1
- return self
- if token == '{':
- self.outer_state.addAnonClass()
- return self.old_state.parseToken(token)
-
- class SkipState(object):
- """A state that will skip a specified number of tokens before
- reverting to the previous state."""
- def __init__(self, tokens_to_skip, old_state):
- self.tokens_to_skip = tokens_to_skip
- self.old_state = old_state
- def parseToken(self, token):
- self.tokens_to_skip = self.tokens_to_skip - 1
- if self.tokens_to_skip < 1:
- return self.old_state
- return self
-
- class ClassState(object):
- """A state we go into when we hit a class or interface keyword."""
- def __init__(self, outer_state):
- # outer_state is always an instance of OuterState
- self.outer_state = outer_state
- def parseToken(self, token):
- # the next non-whitespace token should be the name of the class
- if token == '\n':
- return self
- # If that's an inner class which is declared in a method, it
- # requires an index prepended to the class-name, e.g.
- # 'Foo$1Inner' (Tigris Issue 2087)
- if self.outer_state.localClasses and \
- self.outer_state.stackBrackets[-1] > \
- self.outer_state.stackBrackets[-2]+1:
- locals = self.outer_state.localClasses[-1]
- try:
- idx = locals[token]
- locals[token] = locals[token]+1
- except KeyError:
- locals[token] = 1
- token = str(locals[token]) + token
- self.outer_state.localClasses.append({})
- self.outer_state.listClasses.append(token)
- self.outer_state.anonStacksStack.append([0])
- return self.outer_state
-
- class IgnoreState(object):
- """A state that will ignore all tokens until it gets to a
- specified token."""
- def __init__(self, ignore_until, old_state):
- self.ignore_until = ignore_until
- self.old_state = old_state
- def parseToken(self, token):
- if self.ignore_until == token:
- return self.old_state
- return self
-
- class PackageState(object):
- """The state we enter when we encounter the package keyword.
- We assume the next token will be the package name."""
- def __init__(self, outer_state):
- # outer_state is always an instance of OuterState
- self.outer_state = outer_state
- def parseToken(self, token):
- self.outer_state.setPackage(token)
- return self.outer_state
-
- def parse_java_file(fn, version=default_java_version):
- return parse_java(open(fn, 'r').read(), version)
-
- def parse_java(contents, version=default_java_version, trace=None):
- """Parse a .java file and return a double of package directory,
- plus a list of .class files that compiling that .java file will
- produce"""
- package = None
- initial = OuterState(version)
- currstate = initial
- for token in _reToken.findall(contents):
- # The regex produces a bunch of groups, but only one will
- # have anything in it.
- currstate = currstate.parseToken(token)
- if trace: trace(token, currstate)
- if initial.package:
- package = initial.package.replace('.', os.sep)
- return (package, initial.listOutputs)
-
-else:
- # Don't actually parse Java files for class names.
- #
- # We might make this a configurable option in the future if
- # Java-file parsing takes too long (although it shouldn't relative
- # to how long the Java compiler itself seems to take...).
-
- def parse_java_file(fn):
- """ "Parse" a .java file.
-
- This actually just splits the file name, so the assumption here
- is that the file name matches the public class name, and that
- the path to the file is the same as the package name.
- """
- return os.path.split(file)
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/MSCommon/__init__.py b/Externals/scons-local/scons-local-2.0.1/SCons/Tool/MSCommon/__init__.py
deleted file mode 100644
index 780a97cc03..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/MSCommon/__init__.py
+++ /dev/null
@@ -1,56 +0,0 @@
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Tool/MSCommon/__init__.py 5134 2010/08/16 23:02:40 bdeegan"
-
-__doc__ = """
-Common functions for Microsoft Visual Studio and Visual C/C++.
-"""
-
-import copy
-import os
-import re
-import subprocess
-
-import SCons.Errors
-import SCons.Platform.win32
-import SCons.Util
-
-from SCons.Tool.MSCommon.sdk import mssdk_exists, \
- mssdk_setup_env
-
-from SCons.Tool.MSCommon.vc import msvc_exists, \
- msvc_setup_env, \
- msvc_setup_env_once
-
-from SCons.Tool.MSCommon.vs import get_default_version, \
- get_vs_by_version, \
- merge_default_version, \
- msvs_exists, \
- query_versions
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/MSCommon/arch.py b/Externals/scons-local/scons-local-2.0.1/SCons/Tool/MSCommon/arch.py
deleted file mode 100644
index 28ef0f17a4..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/MSCommon/arch.py
+++ /dev/null
@@ -1,61 +0,0 @@
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Tool/MSCommon/arch.py 5134 2010/08/16 23:02:40 bdeegan"
-
-__doc__ = """Module to define supported Windows chip architectures.
-"""
-
-import os
-
-class ArchDefinition(object):
- """
- A class for defining architecture-specific settings and logic.
- """
- def __init__(self, arch, synonyms=[]):
- self.arch = arch
- self.synonyms = synonyms
-
-SupportedArchitectureList = [
- ArchitectureDefinition(
- 'x86',
- ['i386', 'i486', 'i586', 'i686'],
- ),
-
- ArchitectureDefinition(
- 'x86_64',
- ['AMD64', 'amd64', 'em64t', 'EM64T', 'x86_64'],
- ),
-
- ArchitectureDefinition(
- 'ia64',
- ['IA64'],
- ),
-]
-
-SupportedArchitectureMap = {}
-for a in SupportedArchitectureList:
- SupportedArchitectureMap[a.arch] = a
- for s in a.synonyms:
- SupportedArchitectureMap[s] = a
-
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/MSCommon/common.py b/Externals/scons-local/scons-local-2.0.1/SCons/Tool/MSCommon/common.py
deleted file mode 100644
index 9f3df2d888..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/MSCommon/common.py
+++ /dev/null
@@ -1,240 +0,0 @@
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Tool/MSCommon/common.py 5134 2010/08/16 23:02:40 bdeegan"
-
-__doc__ = """
-Common helper functions for working with the Microsoft tool chain.
-"""
-
-import copy
-import os
-import subprocess
-import re
-
-import SCons.Util
-
-
-logfile = os.environ.get('SCONS_MSCOMMON_DEBUG')
-if logfile == '-':
- def debug(x):
- print x
-elif logfile:
- try:
- import logging
- except ImportError:
- debug = lambda x: open(logfile, 'a').write(x + '\n')
- else:
- logging.basicConfig(filename=logfile, level=logging.DEBUG)
- debug = logging.debug
-else:
- debug = lambda x: None
-
-
-_is_win64 = None
-
-def is_win64():
- """Return true if running on windows 64 bits.
-
- Works whether python itself runs in 64 bits or 32 bits."""
- # Unfortunately, python does not provide a useful way to determine
- # if the underlying Windows OS is 32-bit or 64-bit. Worse, whether
- # the Python itself is 32-bit or 64-bit affects what it returns,
- # so nothing in sys.* or os.* help.
-
- # Apparently the best solution is to use env vars that Windows
- # sets. If PROCESSOR_ARCHITECTURE is not x86, then the python
- # process is running in 64 bit mode (on a 64-bit OS, 64-bit
- # hardware, obviously).
- # If this python is 32-bit but the OS is 64, Windows will set
- # ProgramW6432 and PROCESSOR_ARCHITEW6432 to non-null.
- # (Checking for HKLM\Software\Wow6432Node in the registry doesn't
- # work, because some 32-bit installers create it.)
- global _is_win64
- if _is_win64 is None:
- # I structured these tests to make it easy to add new ones or
- # add exceptions in the future, because this is a bit fragile.
- _is_win64 = False
- if os.environ.get('PROCESSOR_ARCHITECTURE','x86') != 'x86':
- _is_win64 = True
- if os.environ.get('PROCESSOR_ARCHITEW6432'):
- _is_win64 = True
- if os.environ.get('ProgramW6432'):
- _is_win64 = True
- return _is_win64
-
-
-def read_reg(value):
- return SCons.Util.RegGetValue(SCons.Util.HKEY_LOCAL_MACHINE, value)[0]
-
-def has_reg(value):
- """Return True if the given key exists in HKEY_LOCAL_MACHINE, False
- otherwise."""
- try:
- SCons.Util.RegOpenKeyEx(SCons.Util.HKEY_LOCAL_MACHINE, value)
- ret = True
- except WindowsError:
- ret = False
- return ret
-
-# Functions for fetching environment variable settings from batch files.
-
-def normalize_env(env, keys, force=False):
- """Given a dictionary representing a shell environment, add the variables
- from os.environ needed for the processing of .bat files; the keys are
- controlled by the keys argument.
-
- It also makes sure the environment values are correctly encoded.
-
- If force=True, then all of the key values that exist are copied
- into the returned dictionary. If force=false, values are only
- copied if the key does not already exist in the copied dictionary.
-
- Note: the environment is copied."""
- normenv = {}
- if env:
- for k in env.keys():
- normenv[k] = copy.deepcopy(env[k]).encode('mbcs')
-
- for k in keys:
- if k in os.environ and (force or not k in normenv):
- normenv[k] = os.environ[k].encode('mbcs')
-
- return normenv
-
-def get_output(vcbat, args = None, env = None):
- """Parse the output of given bat file, with given args."""
-
- if env is None:
- # Create a blank environment, for use in launching the tools
- env = SCons.Environment.Environment(tools=[])
-
- # TODO: This is a hard-coded list of the variables that (may) need
- # to be imported from os.environ[] for v[sc]*vars*.bat file
- # execution to work. This list should really be either directly
- # controlled by vc.py, or else derived from the common_tools_var
- # settings in vs.py.
- vars = [
- 'COMSPEC',
- 'VS90COMNTOOLS',
- 'VS80COMNTOOLS',
- 'VS71COMNTOOLS',
- 'VS70COMNTOOLS',
- 'VS60COMNTOOLS',
- ]
- env['ENV'] = normalize_env(env['ENV'], vars, force=False)
-
- if args:
- debug("Calling '%s %s'" % (vcbat, args))
- popen = SCons.Action._subproc(env,
- '"%s" %s & set' % (vcbat, args),
- stdin = 'devnull',
- stdout=subprocess.PIPE,
- stderr=subprocess.PIPE)
- else:
- debug("Calling '%s'" % vcbat)
- popen = SCons.Action._subproc(env,
- '"%s" & set' % vcbat,
- stdin = 'devnull',
- stdout=subprocess.PIPE,
- stderr=subprocess.PIPE)
-
- # Use the .stdout and .stderr attributes directly because the
- # .communicate() method uses the threading module on Windows
- # and won't work under Pythons not built with threading.
- stdout = popen.stdout.read()
- stderr = popen.stderr.read()
- if stderr:
- # TODO: find something better to do with stderr;
- # this at least prevents errors from getting swallowed.
- import sys
- sys.stderr.write(stderr)
- if popen.wait() != 0:
- raise IOError(stderr.decode("mbcs"))
-
- output = stdout.decode("mbcs")
- return output
-
-def parse_output(output, keep = ("INCLUDE", "LIB", "LIBPATH", "PATH")):
- # dkeep is a dict associating key: path_list, where key is one item from
- # keep, and pat_list the associated list of paths
-
- dkeep = dict([(i, []) for i in keep])
-
- # rdk will keep the regex to match the .bat file output line starts
- rdk = {}
- for i in keep:
- rdk[i] = re.compile('%s=(.*)' % i, re.I)
-
- def add_env(rmatch, key, dkeep=dkeep):
- plist = rmatch.group(1).split(os.pathsep)
- for p in plist:
- # Do not add empty paths (when a var ends with ;)
- if p:
- p = p.encode('mbcs')
- # XXX: For some reason, VC98 .bat file adds "" around the PATH
- # values, and it screws up the environment later, so we strip
- # it.
- p = p.strip('"')
- dkeep[key].append(p)
-
- for line in output.splitlines():
- for k,v in rdk.items():
- m = v.match(line)
- if m:
- add_env(m, k)
-
- return dkeep
-
-# TODO(sgk): unused
-def output_to_dict(output):
- """Given an output string, parse it to find env variables.
-
- Return a dict where keys are variables names, and values their content"""
- envlinem = re.compile(r'^([a-zA-z0-9]+)=([\S\s]*)$')
- parsedenv = {}
- for line in output.splitlines():
- m = envlinem.match(line)
- if m:
- parsedenv[m.group(1)] = m.group(2)
- return parsedenv
-
-# TODO(sgk): unused
-def get_new(l1, l2):
- """Given two list l1 and l2, return the items in l2 which are not in l1.
- Order is maintained."""
-
- # We don't try to be smart: lists are small, and this is not the bottleneck
- # is any case
- new = []
- for i in l2:
- if i not in l1:
- new.append(i)
-
- return new
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/MSCommon/netframework.py b/Externals/scons-local/scons-local-2.0.1/SCons/Tool/MSCommon/netframework.py
deleted file mode 100644
index 66c5586cbf..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/MSCommon/netframework.py
+++ /dev/null
@@ -1,82 +0,0 @@
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-__revision__ = "src/engine/SCons/Tool/MSCommon/netframework.py 5134 2010/08/16 23:02:40 bdeegan"
-
-__doc__ = """
-"""
-
-import os
-import re
-
-from common import read_reg, debug
-
-# Original value recorded by dcournapeau
-_FRAMEWORKDIR_HKEY_ROOT = r'Software\Microsoft\.NETFramework\InstallRoot'
-# On SGK's system
-_FRAMEWORKDIR_HKEY_ROOT = r'Software\Microsoft\Microsoft SDKs\.NETFramework\v2.0\InstallationFolder'
-
-def find_framework_root():
- # XXX: find it from environment (FrameworkDir)
- try:
- froot = read_reg(_FRAMEWORKDIR_HKEY_ROOT)
- debug("Found framework install root in registry: %s" % froot)
- except WindowsError, e:
- debug("Could not read reg key %s" % _FRAMEWORKDIR_HKEY_ROOT)
- return None
-
- if not os.path.exists(froot):
- debug("%s not found on fs" % froot)
- return None
-
- return froot
-
-def query_versions():
- froot = find_framework_root()
- if froot:
- contents = os.listdir(froot)
-
- l = re.compile('v[0-9]+.*')
- versions = [e for e in contents if l.match(e)]
-
- def versrt(a,b):
- # since version numbers aren't really floats...
- aa = a[1:]
- bb = b[1:]
- aal = aa.split('.')
- bbl = bb.split('.')
- # sequence comparison in python is lexicographical
- # which is exactly what we want.
- # Note we sort backwards so the highest version is first.
- return cmp(bbl,aal)
-
- versions.sort(versrt)
- else:
- versions = []
-
- return versions
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/MSCommon/sdk.py b/Externals/scons-local/scons-local-2.0.1/SCons/Tool/MSCommon/sdk.py
deleted file mode 100644
index 6355998329..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/MSCommon/sdk.py
+++ /dev/null
@@ -1,391 +0,0 @@
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Tool/MSCommon/sdk.py 5134 2010/08/16 23:02:40 bdeegan"
-
-__doc__ = """Module to detect the Platform/Windows SDK
-
-PSDK 2003 R1 is the earliest version detected.
-"""
-
-import os
-
-import SCons.Errors
-import SCons.Util
-
-import common
-
-debug = common.debug
-
-# SDK Checks. This is of course a mess as everything else on MS platforms. Here
-# is what we do to detect the SDK:
-#
-# For Windows SDK >= 6.0: just look into the registry entries:
-# HKLM\Software\Microsoft\Microsoft SDKs\Windows
-# All the keys in there are the available versions.
-#
-# For Platform SDK before 6.0 (2003 server R1 and R2, etc...), there does not
-# seem to be any sane registry key, so the precise location is hardcoded.
-#
-# For versions below 2003R1, it seems the PSDK is included with Visual Studio?
-#
-# Also, per the following:
-# http://benjamin.smedbergs.us/blog/tag/atl/
-# VC++ Professional comes with the SDK, VC++ Express does not.
-
-# Location of the SDK (checked for 6.1 only)
-_CURINSTALLED_SDK_HKEY_ROOT = \
- r"Software\Microsoft\Microsoft SDKs\Windows\CurrentInstallFolder"
-
-
-class SDKDefinition(object):
- """
- An abstract base class for trying to find installed SDK directories.
- """
- def __init__(self, version, **kw):
- self.version = version
- self.__dict__.update(kw)
-
- def find_sdk_dir(self):
- """Try to find the MS SDK from the registry.
-
- Return None if failed or the directory does not exist.
- """
- if not SCons.Util.can_read_reg:
- debug('find_sdk_dir(): can not read registry')
- return None
-
- hkey = self.HKEY_FMT % self.hkey_data
- debug('find_sdk_dir(): checking registry:%s'%hkey)
-
- try:
- sdk_dir = common.read_reg(hkey)
- except WindowsError, e:
- debug('find_sdk_dir(): no SDK registry key %s' % repr(hkey))
- return None
-
- debug('find_sdk_dir(): Trying SDK Dir: %s'%sdk_dir)
-
- if not os.path.exists(sdk_dir):
- debug('find_sdk_dir(): %s not on file system' % sdk_dir)
- return None
-
- ftc = os.path.join(sdk_dir, self.sanity_check_file)
- if not os.path.exists(ftc):
- debug("find_sdk_dir(): sanity check %s not found" % ftc)
- return None
-
- return sdk_dir
-
- def get_sdk_dir(self):
- """Return the MSSSDK given the version string."""
- try:
- return self._sdk_dir
- except AttributeError:
- sdk_dir = self.find_sdk_dir()
- self._sdk_dir = sdk_dir
- return sdk_dir
-
- def get_sdk_vc_script(self,host_arch, target_arch):
- """ Return the script to initialize the VC compiler installed by SDK
- """
-
- if (host_arch == 'amd64' and target_arch == 'x86'):
- # No cross tools needed compiling 32 bits on 64 bit machine
- host_arch=target_arch
-
- arch_string=target_arch
- if (host_arch != target_arch):
- arch_string='%s_%s'%(host_arch,target_arch)
-
- debug("sdk.py: get_sdk_vc_script():arch_string:%s host_arch:%s target_arch:%s"%(arch_string,
- host_arch,
- target_arch))
- file=self.vc_setup_scripts.get(arch_string,None)
- debug("sdk.py: get_sdk_vc_script():file:%s"%file)
- return file
-
-class WindowsSDK(SDKDefinition):
- """
- A subclass for trying to find installed Windows SDK directories.
- """
- HKEY_FMT = r'Software\Microsoft\Microsoft SDKs\Windows\v%s\InstallationFolder'
- def __init__(self, *args, **kw):
- SDKDefinition.__init__(self, *args, **kw)
- self.hkey_data = self.version
-
-class PlatformSDK(SDKDefinition):
- """
- A subclass for trying to find installed Platform SDK directories.
- """
- HKEY_FMT = r'Software\Microsoft\MicrosoftSDK\InstalledSDKS\%s\Install Dir'
- def __init__(self, *args, **kw):
- SDKDefinition.__init__(self, *args, **kw)
- self.hkey_data = self.uuid
-
-#
-# The list of VC initialization scripts installed by the SDK
-# These should be tried if the vcvarsall.bat TARGET_ARCH fails
-preSDK61VCSetupScripts = { 'x86' : r'bin\vcvars32.bat',
- 'amd64' : r'bin\vcvarsamd64.bat',
- 'x86_amd64': r'bin\vcvarsx86_amd64.bat',
- 'x86_ia64' : r'bin\vcvarsx86_ia64.bat',
- 'ia64' : r'bin\vcvarsia64.bat'}
-
-SDK61VCSetupScripts = {'x86' : r'bin\vcvars32.bat',
- 'amd64' : r'bin\amd64\vcvarsamd64.bat',
- 'x86_amd64': r'bin\x86_amd64\vcvarsx86_amd64.bat',
- 'x86_ia64' : r'bin\x86_ia64\vcvarsx86_ia64.bat',
- 'ia64' : r'bin\ia64\vcvarsia64.bat'}
-
-SDK70VCSetupScripts = { 'x86' : r'bin\vcvars32.bat',
- 'amd64' : r'bin\vcvars64.bat',
- 'x86_amd64': r'bin\vcvarsx86_amd64.bat',
- 'x86_ia64' : r'bin\vcvarsx86_ia64.bat',
- 'ia64' : r'bin\vcvarsia64.bat'}
-
-# The list of support SDKs which we know how to detect.
-#
-# The first SDK found in the list is the one used by default if there
-# are multiple SDKs installed. Barring good reasons to the contrary,
-# this means we should list SDKs with from most recent to oldest.
-#
-# If you update this list, update the documentation in Tool/mssdk.xml.
-SupportedSDKList = [
- WindowsSDK('7.0',
- sanity_check_file=r'bin\SetEnv.Cmd',
- include_subdir='include',
- lib_subdir={
- 'x86' : ['lib'],
- 'x86_64' : [r'lib\x64'],
- 'ia64' : [r'lib\ia64'],
- },
- vc_setup_scripts = SDK70VCSetupScripts,
- ),
- WindowsSDK('6.1',
- sanity_check_file=r'bin\SetEnv.Cmd',
- include_subdir='include',
- lib_subdir={
- 'x86' : ['lib'],
- 'x86_64' : [r'lib\x64'],
- 'ia64' : [r'lib\ia64'],
- },
- vc_setup_scripts = SDK61VCSetupScripts,
- ),
-
- WindowsSDK('6.0A',
- sanity_check_file=r'include\windows.h',
- include_subdir='include',
- lib_subdir={
- 'x86' : ['lib'],
- 'x86_64' : [r'lib\x64'],
- 'ia64' : [r'lib\ia64'],
- },
- vc_setup_scripts = preSDK61VCSetupScripts,
- ),
-
- WindowsSDK('6.0',
- sanity_check_file=r'bin\gacutil.exe',
- include_subdir='include',
- lib_subdir='lib',
- vc_setup_scripts = preSDK61VCSetupScripts,
- ),
-
- PlatformSDK('2003R2',
- sanity_check_file=r'SetEnv.Cmd',
- uuid="D2FF9F89-8AA2-4373-8A31-C838BF4DBBE1",
- vc_setup_scripts = preSDK61VCSetupScripts,
- ),
-
- PlatformSDK('2003R1',
- sanity_check_file=r'SetEnv.Cmd',
- uuid="8F9E5EF3-A9A5-491B-A889-C58EFFECE8B3",
- vc_setup_scripts = preSDK61VCSetupScripts,
- ),
-]
-
-SupportedSDKMap = {}
-for sdk in SupportedSDKList:
- SupportedSDKMap[sdk.version] = sdk
-
-
-# Finding installed SDKs isn't cheap, because it goes not only to the
-# registry but also to the disk to sanity-check that there is, in fact,
-# an SDK installed there and that the registry entry isn't just stale.
-# Find this information once, when requested, and cache it.
-
-InstalledSDKList = None
-InstalledSDKMap = None
-
-def get_installed_sdks():
- global InstalledSDKList
- global InstalledSDKMap
- debug('sdk.py:get_installed_sdks()')
- if InstalledSDKList is None:
- InstalledSDKList = []
- InstalledSDKMap = {}
- for sdk in SupportedSDKList:
- debug('MSCommon/sdk.py: trying to find SDK %s' % sdk.version)
- if sdk.get_sdk_dir():
- debug('MSCommon/sdk.py:found SDK %s' % sdk.version)
- InstalledSDKList.append(sdk)
- InstalledSDKMap[sdk.version] = sdk
- return InstalledSDKList
-
-
-# We may be asked to update multiple construction environments with
-# SDK information. When doing this, we check on-disk for whether
-# the SDK has 'mfc' and 'atl' subdirectories. Since going to disk
-# is expensive, cache results by directory.
-
-SDKEnvironmentUpdates = {}
-
-def set_sdk_by_directory(env, sdk_dir):
- global SDKEnvironmentUpdates
- debug('set_sdk_by_directory: Using dir:%s'%sdk_dir)
- try:
- env_tuple_list = SDKEnvironmentUpdates[sdk_dir]
- except KeyError:
- env_tuple_list = []
- SDKEnvironmentUpdates[sdk_dir] = env_tuple_list
-
- include_path = os.path.join(sdk_dir, 'include')
- mfc_path = os.path.join(include_path, 'mfc')
- atl_path = os.path.join(include_path, 'atl')
-
- if os.path.exists(mfc_path):
- env_tuple_list.append(('INCLUDE', mfc_path))
- if os.path.exists(atl_path):
- env_tuple_list.append(('INCLUDE', atl_path))
- env_tuple_list.append(('INCLUDE', include_path))
-
- env_tuple_list.append(('LIB', os.path.join(sdk_dir, 'lib')))
- env_tuple_list.append(('LIBPATH', os.path.join(sdk_dir, 'lib')))
- env_tuple_list.append(('PATH', os.path.join(sdk_dir, 'bin')))
-
- for variable, directory in env_tuple_list:
- env.PrependENVPath(variable, directory)
-
-
-# TODO(sgk): currently unused; remove?
-def get_cur_sdk_dir_from_reg():
- """Try to find the platform sdk directory from the registry.
-
- Return None if failed or the directory does not exist"""
- if not SCons.Util.can_read_reg:
- debug('SCons cannot read registry')
- return None
-
- try:
- val = common.read_reg(_CURINSTALLED_SDK_HKEY_ROOT)
- debug("Found current sdk dir in registry: %s" % val)
- except WindowsError, e:
- debug("Did not find current sdk in registry")
- return None
-
- if not os.path.exists(val):
- debug("Current sdk dir %s not on fs" % val)
- return None
-
- return val
-
-def get_sdk_by_version(mssdk):
- if mssdk not in SupportedSDKMap:
- msg = "SDK version %s is not supported" % repr(mssdk)
- raise SCons.Errors.UserError(msg)
- get_installed_sdks()
- return InstalledSDKMap.get(mssdk)
-
-def get_default_sdk():
- """Set up the default Platform/Windows SDK."""
- get_installed_sdks()
- if not InstalledSDKList:
- return None
- return InstalledSDKList[0]
-
-
-
-
-def mssdk_setup_env(env):
- debug('sdk.py:mssdk_setup_env()')
- if 'MSSDK_DIR' in env:
- sdk_dir = env['MSSDK_DIR']
- if sdk_dir is None:
- return
- sdk_dir = env.subst(sdk_dir)
- debug('sdk.py:mssdk_setup_env: Using MSSDK_DIR:%s'%sdk_dir)
- elif 'MSSDK_VERSION' in env:
- sdk_version = env['MSSDK_VERSION']
- if sdk_version is None:
- msg = "SDK version %s is not installed" % repr(mssdk)
- raise SCons.Errors.UserError(msg)
- sdk_version = env.subst(sdk_version)
- mssdk = get_sdk_by_version(sdk_version)
- sdk_dir = mssdk.get_sdk_dir()
- debug('sdk.py:mssdk_setup_env: Using MSSDK_VERSION:%s'%sdk_dir)
- elif 'MSVS_VERSION' in env:
- msvs_version = env['MSVS_VERSION']
- debug('sdk.py:mssdk_setup_env:Getting MSVS_VERSION from env:%s'%msvs_version)
- if msvs_version is None:
- debug('sdk.py:mssdk_setup_env thinks msvs_version is None')
- return
- msvs_version = env.subst(msvs_version)
- import vs
- msvs = vs.get_vs_by_version(msvs_version)
- debug('sdk.py:mssdk_setup_env:msvs is :%s'%msvs)
- if not msvs:
- debug('sdk.py:mssdk_setup_env: no VS version detected, bailingout:%s'%msvs)
- return
- sdk_version = msvs.sdk_version
- debug('sdk.py:msvs.sdk_version is %s'%sdk_version)
- if not sdk_version:
- return
- mssdk = get_sdk_by_version(sdk_version)
- if not mssdk:
- mssdk = get_default_sdk()
- if not mssdk:
- return
- sdk_dir = mssdk.get_sdk_dir()
- debug('sdk.py:mssdk_setup_env: Using MSVS_VERSION:%s'%sdk_dir)
- else:
- mssdk = get_default_sdk()
- if not mssdk:
- return
- sdk_dir = mssdk.get_sdk_dir()
- debug('sdk.py:mssdk_setup_env: not using any env values. sdk_dir:%s'%sdk_dir)
-
- set_sdk_by_directory(env, sdk_dir)
-
- #print "No MSVS_VERSION: this is likely to be a bug"
-
-def mssdk_exists(version=None):
- sdks = get_installed_sdks()
- if version is None:
- return len(sdks) > 0
- return version in sdks
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/MSCommon/vc.py b/Externals/scons-local/scons-local-2.0.1/SCons/Tool/MSCommon/vc.py
deleted file mode 100644
index 0aeb3e785a..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/MSCommon/vc.py
+++ /dev/null
@@ -1,456 +0,0 @@
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-# TODO:
-# * supported arch for versions: for old versions of batch file without
-# argument, giving bogus argument cannot be detected, so we have to hardcode
-# this here
-# * print warning when msvc version specified but not found
-# * find out why warning do not print
-# * test on 64 bits XP + VS 2005 (and VS 6 if possible)
-# * SDK
-# * Assembly
-__revision__ = "src/engine/SCons/Tool/MSCommon/vc.py 5134 2010/08/16 23:02:40 bdeegan"
-
-__doc__ = """Module for Visual C/C++ detection and configuration.
-"""
-import SCons.compat
-
-import os
-import platform
-from string import digits as string_digits
-
-import SCons.Warnings
-
-import common
-
-debug = common.debug
-
-import sdk
-
-get_installed_sdks = sdk.get_installed_sdks
-
-
-class VisualCException(Exception):
- pass
-
-class UnsupportedVersion(VisualCException):
- pass
-
-class UnsupportedArch(VisualCException):
- pass
-
-class MissingConfiguration(VisualCException):
- pass
-
-class NoVersionFound(VisualCException):
- pass
-
-class BatchFileExecutionError(VisualCException):
- pass
-
-# Dict to 'canonalize' the arch
-_ARCH_TO_CANONICAL = {
- "amd64" : "amd64",
- "emt64" : "amd64",
- "i386" : "x86",
- "i486" : "x86",
- "i586" : "x86",
- "i686" : "x86",
- "ia64" : "ia64",
- "itanium" : "ia64",
- "x86" : "x86",
- "x86_64" : "amd64",
-}
-
-# Given a (host, target) tuple, return the argument for the bat file. Both host
-# and targets should be canonalized.
-_HOST_TARGET_ARCH_TO_BAT_ARCH = {
- ("x86", "x86"): "x86",
- ("x86", "amd64"): "x86_amd64",
- ("amd64", "amd64"): "amd64",
- ("amd64", "x86"): "x86",
- ("x86", "ia64"): "x86_ia64"
-}
-
-def get_host_target(env):
- debug('vc.py:get_host_target()')
-
- host_platform = env.get('HOST_ARCH')
- if not host_platform:
- host_platform = platform.machine()
- # TODO(2.5): the native Python platform.machine() function returns
- # '' on all Python versions before 2.6, after which it also uses
- # PROCESSOR_ARCHITECTURE.
- if not host_platform:
- host_platform = os.environ.get('PROCESSOR_ARCHITECTURE', '')
-
- # Retain user requested TARGET_ARCH
- req_target_platform = env.get('TARGET_ARCH')
- debug('vc.py:get_host_target() req_target_platform:%s'%req_target_platform)
-
- if req_target_platform:
- # If user requested a specific platform then only try that one.
- target_platform = req_target_platform
- else:
- target_platform = host_platform
-
- try:
- host = _ARCH_TO_CANONICAL[host_platform.lower()]
- except KeyError, e:
- msg = "Unrecognized host architecture %s"
- raise ValueError(msg % repr(host_platform))
-
- try:
- target = _ARCH_TO_CANONICAL[target_platform.lower()]
- except KeyError, e:
- raise ValueError("Unrecognized target architecture %s" % target_platform)
-
- return (host, target,req_target_platform)
-
-_VCVER = ["10.0", "9.0", "9.0Exp","8.0", "8.0Exp","7.1", "7.0", "6.0"]
-
-_VCVER_TO_PRODUCT_DIR = {
- '10.0': [
- r'Microsoft\VisualStudio\10.0\Setup\VC\ProductDir'],
- '9.0': [
- r'Microsoft\VisualStudio\9.0\Setup\VC\ProductDir'],
- '9.0Exp' : [
- r'Microsoft\VCExpress\9.0\Setup\VC\ProductDir'],
- '8.0': [
- r'Microsoft\VisualStudio\8.0\Setup\VC\ProductDir'],
- '8.0Exp': [
- r'Microsoft\VCExpress\8.0\Setup\VC\ProductDir'],
- '7.1': [
- r'Microsoft\VisualStudio\7.1\Setup\VC\ProductDir'],
- '7.0': [
- r'Microsoft\VisualStudio\7.0\Setup\VC\ProductDir'],
- '6.0': [
- r'Microsoft\VisualStudio\6.0\Setup\Microsoft Visual C++\ProductDir']
-}
-
-def msvc_version_to_maj_min(msvc_version):
- msvc_version_numeric = ''.join([x for x in msvc_version if x in string_digits + '.'])
-
- t = msvc_version_numeric.split(".")
- if not len(t) == 2:
- raise ValueError("Unrecognized version %s (%s)" % (msvc_version,msvc_version_numeric))
- try:
- maj = int(t[0])
- min = int(t[1])
- return maj, min
- except ValueError, e:
- raise ValueError("Unrecognized version %s (%s)" % (msvc_version,msvc_version_numeric))
-
-def is_host_target_supported(host_target, msvc_version):
- """Return True if the given (host, target) tuple is supported given the
- msvc version.
-
- Parameters
- ----------
- host_target: tuple
- tuple of (canonalized) host-target, e.g. ("x86", "amd64") for cross
- compilation from 32 bits windows to 64 bits.
- msvc_version: str
- msvc version (major.minor, e.g. 10.0)
-
- Note
- ----
- This only check whether a given version *may* support the given (host,
- target), not that the toolchain is actually present on the machine.
- """
- # We assume that any Visual Studio version supports x86 as a target
- if host_target[1] != "x86":
- maj, min = msvc_version_to_maj_min(msvc_version)
- if maj < 8:
- return False
-
- return True
-
-def find_vc_pdir(msvc_version):
- """Try to find the product directory for the given
- version.
-
- Note
- ----
- If for some reason the requested version could not be found, an
- exception which inherits from VisualCException will be raised."""
- root = 'Software\\'
- if common.is_win64():
- root = root + 'Wow6432Node\\'
- try:
- hkeys = _VCVER_TO_PRODUCT_DIR[msvc_version]
- except KeyError:
- debug("Unknown version of MSVC: %s" % msvc_version)
- raise UnsupportedVersion("Unknown version %s" % msvc_version)
-
- for key in hkeys:
- key = root + key
- try:
- comps = common.read_reg(key)
- except WindowsError, e:
- debug('find_vc_dir(): no VC registry key %s' % repr(key))
- else:
- debug('find_vc_dir(): found VC in registry: %s' % comps)
- if os.path.exists(comps):
- return comps
- else:
- debug('find_vc_dir(): reg says dir is %s, but it does not exist. (ignoring)'\
- % comps)
- raise MissingConfiguration("registry dir %s not found on the filesystem" % comps)
- return None
-
-def find_batch_file(env,msvc_version,host_arch,target_arch):
- """
- Find the location of the batch script which should set up the compiler
- for any TARGET_ARCH whose compilers were installed by Visual Studio/VCExpress
- """
- pdir = find_vc_pdir(msvc_version)
- if pdir is None:
- raise NoVersionFound("No version of Visual Studio found")
-
- debug('vc.py: find_batch_file() pdir:%s'%pdir)
-
- # filter out e.g. "Exp" from the version name
- msvc_ver_numeric = ''.join([x for x in msvc_version if x in string_digits + "."])
- vernum = float(msvc_ver_numeric)
- if 7 <= vernum < 8:
- pdir = os.path.join(pdir, os.pardir, "Common7", "Tools")
- batfilename = os.path.join(pdir, "vsvars32.bat")
- elif vernum < 7:
- pdir = os.path.join(pdir, "Bin")
- batfilename = os.path.join(pdir, "vcvars32.bat")
- else: # >= 8
- batfilename = os.path.join(pdir, "vcvarsall.bat")
-
- if not os.path.exists(batfilename):
- debug("Not found: %s" % batfilename)
- batfilename = None
-
- installed_sdks=get_installed_sdks()
- for _sdk in installed_sdks:
- sdk_bat_file=_sdk.get_sdk_vc_script(host_arch,target_arch)
- sdk_bat_file_path=os.path.join(pdir,sdk_bat_file)
- debug('vc.py:find_batch_file() sdk_bat_file_path:%s'%sdk_bat_file_path)
- if os.path.exists(sdk_bat_file_path):
- return (batfilename,sdk_bat_file_path)
- else:
- debug("vc.py:find_batch_file() not found:%s"%sdk_bat_file_path)
- else:
- return (batfilename,None)
-
-__INSTALLED_VCS_RUN = None
-
-def cached_get_installed_vcs():
- global __INSTALLED_VCS_RUN
-
- if __INSTALLED_VCS_RUN is None:
- ret = get_installed_vcs()
- __INSTALLED_VCS_RUN = ret
-
- return __INSTALLED_VCS_RUN
-
-def get_installed_vcs():
- installed_versions = []
- for ver in _VCVER:
- debug('trying to find VC %s' % ver)
- try:
- if find_vc_pdir(ver):
- debug('found VC %s' % ver)
- installed_versions.append(ver)
- else:
- debug('find_vc_pdir return None for ver %s' % ver)
- except VisualCException, e:
- debug('did not find VC %s: caught exception %s' % (ver, str(e)))
- return installed_versions
-
-def reset_installed_vcs():
- """Make it try again to find VC. This is just for the tests."""
- __INSTALLED_VCS_RUN = None
-
-def script_env(script, args=None):
- stdout = common.get_output(script, args)
- # Stupid batch files do not set return code: we take a look at the
- # beginning of the output for an error message instead
- olines = stdout.splitlines()
- if olines[0].startswith("The specified configuration type is missing"):
- raise BatchFileExecutionError("\n".join(olines[:2]))
-
- return common.parse_output(stdout)
-
-def get_default_version(env):
- debug('get_default_version()')
-
- msvc_version = env.get('MSVC_VERSION')
- msvs_version = env.get('MSVS_VERSION')
-
- debug('get_default_version(): msvc_version:%s msvs_version:%s'%(msvc_version,msvs_version))
-
- if msvs_version and not msvc_version:
- SCons.Warnings.warn(
- SCons.Warnings.DeprecatedWarning,
- "MSVS_VERSION is deprecated: please use MSVC_VERSION instead ")
- return msvs_version
- elif msvc_version and msvs_version:
- if not msvc_version == msvs_version:
- SCons.Warnings.warn(
- SCons.Warnings.VisualVersionMismatch,
- "Requested msvc version (%s) and msvs version (%s) do " \
- "not match: please use MSVC_VERSION only to request a " \
- "visual studio version, MSVS_VERSION is deprecated" \
- % (msvc_version, msvs_version))
- return msvs_version
- if not msvc_version:
- installed_vcs = cached_get_installed_vcs()
- debug('installed_vcs:%s' % installed_vcs)
- if not installed_vcs:
- msg = 'No installed VCs'
- debug('msv %s\n' % repr(msg))
- SCons.Warnings.warn(SCons.Warnings.VisualCMissingWarning, msg)
- return None
- msvc_version = installed_vcs[0]
- debug('msvc_setup_env: using default installed MSVC version %s\n' % repr(msvc_version))
-
- return msvc_version
-
-def msvc_setup_env_once(env):
- try:
- has_run = env["MSVC_SETUP_RUN"]
- except KeyError:
- has_run = False
-
- if not has_run:
- msvc_setup_env(env)
- env["MSVC_SETUP_RUN"] = True
-
-def msvc_find_valid_batch_script(env,version):
- debug('vc.py:msvc_find_valid_batch_script()')
- # Find the host platform, target platform, and if present the requested
- # target platform
- (host_platform, target_platform,req_target_platform) = get_host_target(env)
-
- # If the user hasn't specifically requested a TARGET_ARCH, and
- # The TARGET_ARCH is amd64 then also try 32 bits if there are no viable
- # 64 bit tools installed
- try_target_archs = [target_platform]
- if not req_target_platform and target_platform=='amd64':
- try_target_archs.append('x86')
-
- d = None
- for tp in try_target_archs:
- # Set to current arch.
- env['TARGET_ARCH']=tp
-
- debug("vc.py:msvc_find_valid_batch_script() trying target_platform:%s"%tp)
- host_target = (host_platform, tp)
- if not is_host_target_supported(host_target, version):
- warn_msg = "host, target = %s not supported for MSVC version %s" % \
- (host_target, version)
- SCons.Warnings.warn(SCons.Warnings.VisualCMissingWarning, warn_msg)
- arg = _HOST_TARGET_ARCH_TO_BAT_ARCH[host_target]
-
- # Try to locate a batch file for this host/target platform combo
- try:
- (vc_script,sdk_script) = find_batch_file(env,version,host_platform,tp)
- debug('vc.py:msvc_find_valid_batch_script() vc_script:%s sdk_script:%s'%(vc_script,sdk_script))
- except VisualCException, e:
- msg = str(e)
- debug('Caught exception while looking for batch file (%s)' % msg)
- warn_msg = "VC version %s not installed. " + \
- "C/C++ compilers are most likely not set correctly.\n" + \
- " Installed versions are: %s"
- warn_msg = warn_msg % (version, cached_get_installed_vcs())
- SCons.Warnings.warn(SCons.Warnings.VisualCMissingWarning, warn_msg)
- continue
-
- # Try to use the located batch file for this host/target platform combo
- debug('vc.py:msvc_find_valid_batch_script() use_script 2 %s, args:%s\n' % (repr(vc_script), arg))
- if vc_script:
- try:
- d = script_env(vc_script, args=arg)
- except BatchFileExecutionError, e:
- debug('vc.py:msvc_find_valid_batch_script() use_script 3: failed running VC script %s: %s: Error:%s'%(repr(vc_script),arg,e))
- vc_script=None
- if not vc_script and sdk_script:
- debug('vc.py:msvc_find_valid_batch_script() use_script 4: trying sdk script: %s'%(sdk_script))
- try:
- d = script_env(sdk_script,args=[])
- except BatchFileExecutionError,e:
- debug('vc.py:msvc_find_valid_batch_script() use_script 5: failed running SDK script %s: Error:%s'%(repr(sdk_script),e))
- continue
- elif not vc_script and not sdk_script:
- debug('vc.py:msvc_find_valid_batch_script() use_script 6: Neither VC script nor SDK script found')
- continue
-
- # If we cannot find a viable installed compiler, reset the TARGET_ARCH
- # To it's initial value
- if not d:
- env['TARGET_ARCH']=req_target_platform
-
- return d
-
-
-def msvc_setup_env(env):
- debug('msvc_setup_env()')
-
- version = get_default_version(env)
- if version is None:
- warn_msg = "No version of Visual Studio compiler found - C/C++ " \
- "compilers most likely not set correctly"
- SCons.Warnings.warn(SCons.Warnings.VisualCMissingWarning, warn_msg)
- return None
- debug('msvc_setup_env: using specified MSVC version %s\n' % repr(version))
-
- # XXX: we set-up both MSVS version for backward
- # compatibility with the msvs tool
- env['MSVC_VERSION'] = version
- env['MSVS_VERSION'] = version
- env['MSVS'] = {}
-
-
- use_script = env.get('MSVC_USE_SCRIPT', True)
- if SCons.Util.is_String(use_script):
- debug('vc.py:msvc_setup_env() use_script 1 %s\n' % repr(use_script))
- d = script_env(use_script)
- elif use_script:
- d = msvc_find_valid_batch_script(env,version)
- debug('vc.py:msvc_setup_env() use_script 2 %s\n' % d)
- if not d:
- return d
- else:
- debug('MSVC_USE_SCRIPT set to False')
- warn_msg = "MSVC_USE_SCRIPT set to False, assuming environment " \
- "set correctly."
- SCons.Warnings.warn(SCons.Warnings.VisualCMissingWarning, warn_msg)
- return None
-
- for k, v in d.items():
- debug('vc.py:msvc_setup_env() env:%s -> %s'%(k,v))
- env.PrependENVPath(k, v, delete_existing=True)
-
-def msvc_exists(version=None):
- vcs = cached_get_installed_vcs()
- if version is None:
- return len(vcs) > 0
- return version in vcs
-
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/MSCommon/vs.py b/Externals/scons-local/scons-local-2.0.1/SCons/Tool/MSCommon/vs.py
deleted file mode 100644
index 529d443a6d..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/MSCommon/vs.py
+++ /dev/null
@@ -1,499 +0,0 @@
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Tool/MSCommon/vs.py 5134 2010/08/16 23:02:40 bdeegan"
-
-__doc__ = """Module to detect Visual Studio and/or Visual C/C++
-"""
-
-import os
-
-import SCons.Errors
-import SCons.Util
-
-from common import debug, \
- get_output, \
- is_win64, \
- normalize_env, \
- parse_output, \
- read_reg
-
-import SCons.Tool.MSCommon.vc
-
-class VisualStudio(object):
- """
- An abstract base class for trying to find installed versions of
- Visual Studio.
- """
- def __init__(self, version, **kw):
- self.version = version
- kw['vc_version'] = kw.get('vc_version', version)
- kw['sdk_version'] = kw.get('sdk_version', version)
- self.__dict__.update(kw)
- self._cache = {}
-
- #
-
- def find_batch_file(self):
- vs_dir = self.get_vs_dir()
- if not vs_dir:
- debug('find_executable(): no vs_dir')
- return None
- batch_file = os.path.join(vs_dir, self.batch_file_path)
- batch_file = os.path.normpath(batch_file)
- if not os.path.isfile(batch_file):
- debug('find_batch_file(): %s not on file system' % batch_file)
- return None
- return batch_file
-
- def find_vs_dir_by_vc(self):
- SCons.Tool.MSCommon.vc.get_installed_vcs()
- dir = SCons.Tool.MSCommon.vc.find_vc_pdir(self.vc_version)
- if not dir:
- debug('find_vs_dir(): no installed VC %s' % self.vc_version)
- return None
- return dir
-
- def find_vs_dir_by_reg(self):
- root = 'Software\\'
-
- if is_win64():
- root = root + 'Wow6432Node\\'
- for key in self.hkeys:
- if key=='use_dir':
- return self.find_vs_dir_by_vc()
- key = root + key
- try:
- comps = read_reg(key)
- except WindowsError, e:
- debug('find_vs_dir_by_reg(): no VS registry key %s' % repr(key))
- else:
- debug('find_vs_dir_by_reg(): found VS in registry: %s' % comps)
- return comps
- return None
-
- def find_vs_dir(self):
- """ Can use registry or location of VC to find vs dir
- First try to find by registry, and if that fails find via VC dir
- """
-
-
- if True:
- vs_dir=self.find_vs_dir_by_reg()
- return vs_dir
- else:
- return self.find_vs_dir_by_vc()
-
- def find_executable(self):
- vs_dir = self.get_vs_dir()
- if not vs_dir:
- debug('find_executable(): no vs_dir (%s)'%vs_dir)
- return None
- executable = os.path.join(vs_dir, self.executable_path)
- executable = os.path.normpath(executable)
- if not os.path.isfile(executable):
- debug('find_executable(): %s not on file system' % executable)
- return None
- return executable
-
- #
-
- def get_batch_file(self):
- try:
- return self._cache['batch_file']
- except KeyError:
- batch_file = self.find_batch_file()
- self._cache['batch_file'] = batch_file
- return batch_file
-
- def get_executable(self):
- try:
- debug('get_executable using cache:%s'%self._cache['executable'])
- return self._cache['executable']
- except KeyError:
- executable = self.find_executable()
- self._cache['executable'] = executable
- debug('get_executable not in cache:%s'%executable)
- return executable
-
- def get_vs_dir(self):
- try:
- return self._cache['vs_dir']
- except KeyError:
- vs_dir = self.find_vs_dir()
- self._cache['vs_dir'] = vs_dir
- return vs_dir
-
- def get_supported_arch(self):
- try:
- return self._cache['supported_arch']
- except KeyError:
- # RDEVE: for the time being use hardcoded lists
- # supported_arch = self.find_supported_arch()
- self._cache['supported_arch'] = self.supported_arch
- return self.supported_arch
-
- def reset(self):
- self._cache = {}
-
-# The list of supported Visual Studio versions we know how to detect.
-#
-# How to look for .bat file ?
-# - VS 2008 Express (x86):
-# * from registry key productdir, gives the full path to vsvarsall.bat. In
-# HKEY_LOCAL_MACHINE):
-# Software\Microsoft\VCEpress\9.0\Setup\VC\productdir
-# * from environmnent variable VS90COMNTOOLS: the path is then ..\..\VC
-# relatively to the path given by the variable.
-#
-# - VS 2008 Express (WoW6432: 32 bits on windows x64):
-# Software\Wow6432Node\Microsoft\VCEpress\9.0\Setup\VC\productdir
-#
-# - VS 2005 Express (x86):
-# * from registry key productdir, gives the full path to vsvarsall.bat. In
-# HKEY_LOCAL_MACHINE):
-# Software\Microsoft\VCEpress\8.0\Setup\VC\productdir
-# * from environmnent variable VS80COMNTOOLS: the path is then ..\..\VC
-# relatively to the path given by the variable.
-#
-# - VS 2005 Express (WoW6432: 32 bits on windows x64): does not seem to have a
-# productdir ?
-#
-# - VS 2003 .Net (pro edition ? x86):
-# * from registry key productdir. The path is then ..\Common7\Tools\
-# relatively to the key. The key is in HKEY_LOCAL_MACHINE):
-# Software\Microsoft\VisualStudio\7.1\Setup\VC\productdir
-# * from environmnent variable VS71COMNTOOLS: the path is the full path to
-# vsvars32.bat
-#
-# - VS 98 (VS 6):
-# * from registry key productdir. The path is then Bin
-# relatively to the key. The key is in HKEY_LOCAL_MACHINE):
-# Software\Microsoft\VisualStudio\6.0\Setup\VC98\productdir
-#
-# The first version found in the list is the one used by default if
-# there are multiple versions installed. Barring good reasons to
-# the contrary, this means we should list versions from most recent
-# to oldest. Pro versions get listed before Express versions on the
-# assumption that, by default, you'd rather use the version you paid
-# good money for in preference to whatever Microsoft makes available
-# for free.
-#
-# If you update this list, update the documentation in Tool/msvs.xml.
-
-SupportedVSList = [
- # Visual Studio 2010
- # TODO: find the settings, perhaps from someone with a CTP copy?
- #VisualStudio('TBD',
- # hkey_root=r'TBD',
- # common_tools_var='TBD',
- # executable_path=r'TBD',
- # default_dirname='TBD',
- #),
-
- # Visual Studio 2008
- # The batch file we look for is in the VC directory,
- # so the devenv.com executable is up in ..\..\Common7\IDE.
- VisualStudio('9.0',
- sdk_version='6.1',
- hkeys=[r'Microsoft\VisualStudio\9.0\Setup\VS\ProductDir'],
- common_tools_var='VS90COMNTOOLS',
- executable_path=r'Common7\IDE\devenv.com',
- batch_file_path=r'Common7\Tools\vsvars32.bat',
- default_dirname='Microsoft Visual Studio 9',
- supported_arch=['x86', 'amd64'],
- ),
-
- # Visual C++ 2008 Express Edition
- # The batch file we look for is in the VC directory,
- # so the VCExpress.exe executable is up in ..\..\Common7\IDE.
- VisualStudio('9.0Exp',
- vc_version='9.0',
- sdk_version='6.1',
- hkeys=[r'Microsoft\VCExpress\9.0\Setup\VS\ProductDir'],
- common_tools_var='VS90COMNTOOLS',
- executable_path=r'Common7\IDE\VCExpress.exe',
- batch_file_path=r'Common7\Tools\vsvars32.bat',
- default_dirname='Microsoft Visual Studio 9',
- supported_arch=['x86'],
- ),
-
- # Visual Studio 2005
- # The batch file we look for is in the VC directory,
- # so the devenv.com executable is up in ..\..\Common7\IDE.
- VisualStudio('8.0',
- sdk_version='6.0A',
- hkeys=[r'Microsoft\VisualStudio\8.0\Setup\VS\ProductDir'],
- common_tools_var='VS80COMNTOOLS',
- executable_path=r'Common7\IDE\devenv.com',
- batch_file_path=r'Common7\Tools\vsvars32.bat',
- default_dirname='Microsoft Visual Studio 8',
- supported_arch=['x86', 'amd64'],
- ),
-
- # Visual C++ 2005 Express Edition
- # The batch file we look for is in the VC directory,
- # so the VCExpress.exe executable is up in ..\..\Common7\IDE.
- VisualStudio('8.0Exp',
- vc_version='8.0Exp',
- sdk_version='6.0A',
- hkeys=[r'Microsoft\VCExpress\8.0\Setup\VS\ProductDir'],
- common_tools_var='VS80COMNTOOLS',
- executable_path=r'Common7\IDE\VCExpress.exe',
- batch_file_path=r'Common7\Tools\vsvars32.bat',
- default_dirname='Microsoft Visual Studio 8',
- supported_arch=['x86'],
- ),
-
- # Visual Studio .NET 2003
- # The batch file we look for is in the Common7\Tools directory,
- # so the devenv.com executable is next door in ..\IDE.
- VisualStudio('7.1',
- sdk_version='6.0',
- hkeys=[r'Microsoft\VisualStudio\7.1\Setup\VS\ProductDir'],
- common_tools_var='VS71COMNTOOLS',
- executable_path=r'Common7\IDE\devenv.com',
- batch_file_path=r'Common7\Tools\vsvars32.bat',
- default_dirname='Microsoft Visual Studio .NET 2003',
- supported_arch=['x86'],
- ),
-
- # Visual Studio .NET
- # The batch file we look for is in the Common7\Tools directory,
- # so the devenv.com executable is next door in ..\IDE.
- VisualStudio('7.0',
- sdk_version='2003R2',
- hkeys=[r'Microsoft\VisualStudio\7.0\Setup\VS\ProductDir'],
- common_tools_var='VS70COMNTOOLS',
- executable_path=r'IDE\devenv.com',
- batch_file_path=r'Common7\Tools\vsvars32.bat',
- default_dirname='Microsoft Visual Studio .NET',
- supported_arch=['x86'],
- ),
-
- # Visual Studio 6.0
- VisualStudio('6.0',
- sdk_version='2003R1',
- hkeys=[r'Microsoft\VisualStudio\6.0\Setup\Microsoft Visual Studio\ProductDir',
- 'use_dir'],
- common_tools_var='VS60COMNTOOLS',
- executable_path=r'Common\MSDev98\Bin\MSDEV.COM',
- batch_file_path=r'Common7\Tools\vsvars32.bat',
- default_dirname='Microsoft Visual Studio',
- supported_arch=['x86'],
- ),
-]
-
-SupportedVSMap = {}
-for vs in SupportedVSList:
- SupportedVSMap[vs.version] = vs
-
-
-# Finding installed versions of Visual Studio isn't cheap, because it
-# goes not only to the registry but also to the disk to sanity-check
-# that there is, in fact, a Visual Studio directory there and that the
-# registry entry isn't just stale. Find this information once, when
-# requested, and cache it.
-
-InstalledVSList = None
-InstalledVSMap = None
-
-def get_installed_visual_studios():
- global InstalledVSList
- global InstalledVSMap
- if InstalledVSList is None:
- InstalledVSList = []
- InstalledVSMap = {}
- for vs in SupportedVSList:
- debug('trying to find VS %s' % vs.version)
- if vs.get_executable():
- debug('found VS %s' % vs.version)
- InstalledVSList.append(vs)
- InstalledVSMap[vs.version] = vs
- return InstalledVSList
-
-def reset_installed_visual_studios():
- global InstalledVSList
- global InstalledVSMap
- InstalledVSList = None
- InstalledVSMap = None
- for vs in SupportedVSList:
- vs.reset()
-
- # Need to clear installed VC's as well as they are used in finding
- # installed VS's
- SCons.Tool.MSCommon.vc.reset_installed_vcs()
-
-
-# We may be asked to update multiple construction environments with
-# SDK information. When doing this, we check on-disk for whether
-# the SDK has 'mfc' and 'atl' subdirectories. Since going to disk
-# is expensive, cache results by directory.
-
-#SDKEnvironmentUpdates = {}
-#
-#def set_sdk_by_directory(env, sdk_dir):
-# global SDKEnvironmentUpdates
-# try:
-# env_tuple_list = SDKEnvironmentUpdates[sdk_dir]
-# except KeyError:
-# env_tuple_list = []
-# SDKEnvironmentUpdates[sdk_dir] = env_tuple_list
-#
-# include_path = os.path.join(sdk_dir, 'include')
-# mfc_path = os.path.join(include_path, 'mfc')
-# atl_path = os.path.join(include_path, 'atl')
-#
-# if os.path.exists(mfc_path):
-# env_tuple_list.append(('INCLUDE', mfc_path))
-# if os.path.exists(atl_path):
-# env_tuple_list.append(('INCLUDE', atl_path))
-# env_tuple_list.append(('INCLUDE', include_path))
-#
-# env_tuple_list.append(('LIB', os.path.join(sdk_dir, 'lib')))
-# env_tuple_list.append(('LIBPATH', os.path.join(sdk_dir, 'lib')))
-# env_tuple_list.append(('PATH', os.path.join(sdk_dir, 'bin')))
-#
-# for variable, directory in env_tuple_list:
-# env.PrependENVPath(variable, directory)
-
-def msvs_exists():
- return (len(get_installed_visual_studios()) > 0)
-
-def get_vs_by_version(msvs):
- global InstalledVSMap
- global SupportedVSMap
-
- debug('vs.py:get_vs_by_version()')
- if msvs not in SupportedVSMap:
- msg = "Visual Studio version %s is not supported" % repr(msvs)
- raise SCons.Errors.UserError(msg)
- get_installed_visual_studios()
- vs = InstalledVSMap.get(msvs)
- debug('InstalledVSMap:%s'%InstalledVSMap)
- debug('vs.py:get_vs_by_version: found vs:%s'%vs)
- # Some check like this would let us provide a useful error message
- # if they try to set a Visual Studio version that's not installed.
- # However, we also want to be able to run tests (like the unit
- # tests) on systems that don't, or won't ever, have it installed.
- # It might be worth resurrecting this, with some configurable
- # setting that the tests can use to bypass the check.
- #if not vs:
- # msg = "Visual Studio version %s is not installed" % repr(msvs)
- # raise SCons.Errors.UserError, msg
- return vs
-
-def get_default_version(env):
- """Returns the default version string to use for MSVS.
-
- If no version was requested by the user through the MSVS environment
- variable, query all the available the visual studios through
- query_versions, and take the highest one.
-
- Return
- ------
- version: str
- the default version.
- """
- if 'MSVS' not in env or not SCons.Util.is_Dict(env['MSVS']):
- versions = [vs.version for vs in get_installed_visual_studios()]
- env['MSVS'] = {'VERSIONS' : versions}
- else:
- versions = env['MSVS'].get('VERSIONS', [])
-
- if 'MSVS_VERSION' not in env:
- if versions:
- env['MSVS_VERSION'] = versions[0] #use highest version by default
- else:
- env['MSVS_VERSION'] = SupportedVSList[0].version
-
- env['MSVS']['VERSION'] = env['MSVS_VERSION']
-
- return env['MSVS_VERSION']
-
-def get_default_arch(env):
- """Return the default arch to use for MSVS
-
- if no version was requested by the user through the MSVS_ARCH environment
- variable, select x86
-
- Return
- ------
- arch: str
- """
- arch = env.get('MSVS_ARCH', 'x86')
-
- msvs = InstalledVSMap.get(env['MSVS_VERSION'])
-
- if not msvs:
- arch = 'x86'
- elif not arch in msvs.get_supported_arch():
- fmt = "Visual Studio version %s does not support architecture %s"
- raise SCons.Errors.UserError(fmt % (env['MSVS_VERSION'], arch))
-
- return arch
-
-def merge_default_version(env):
- version = get_default_version(env)
- arch = get_default_arch(env)
-
-def msvs_setup_env(env):
- batfilename = msvs.get_batch_file()
- msvs = get_vs_by_version(version)
- if msvs is None:
- return
-
- # XXX: I think this is broken. This will silently set a bogus tool instead
- # of failing, but there is no other way with the current scons tool
- # framework
- if batfilename is not None:
-
- vars = ('LIB', 'LIBPATH', 'PATH', 'INCLUDE')
-
- msvs_list = get_installed_visual_studios()
- vscommonvarnames = [vs.common_tools_var for vs in msvs_list]
- save_ENV = env['ENV']
- nenv = normalize_env(env['ENV'],
- ['COMSPEC'] + vscommonvarnames,
- force=True)
- try:
- output = get_output(batfilename, arch, env=nenv)
- finally:
- env['ENV'] = save_ENV
- vars = parse_output(output, vars)
-
- for k, v in vars.items():
- env.PrependENVPath(k, v, delete_existing=1)
-
-def query_versions():
- """Query the system to get available versions of VS. A version is
- considered when a batfile is found."""
- msvs_list = get_installed_visual_studios()
- versions = [msvs.version for msvs in msvs_list]
- return versions
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/Perforce.py b/Externals/scons-local/scons-local-2.0.1/SCons/Tool/Perforce.py
deleted file mode 100644
index 9ae64b87a7..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/Perforce.py
+++ /dev/null
@@ -1,103 +0,0 @@
-"""SCons.Tool.Perforce.py
-
-Tool-specific initialization for Perforce Source Code Management system.
-
-There normally shouldn't be any need to import this module directly.
-It will usually be imported through the generic SCons.Tool.Tool()
-selection method.
-
-"""
-
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-__revision__ = "src/engine/SCons/Tool/Perforce.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import os
-
-import SCons.Action
-import SCons.Builder
-import SCons.Node.FS
-import SCons.Util
-
-# This function should maybe be moved to SCons.Util?
-from SCons.Tool.PharLapCommon import addPathIfNotExists
-
-
-# Variables that we want to import from the base OS environment.
-_import_env = [ 'P4PORT', 'P4CLIENT', 'P4USER', 'USER', 'USERNAME', 'P4PASSWD',
- 'P4CHARSET', 'P4LANGUAGE', 'SystemRoot' ]
-
-PerforceAction = SCons.Action.Action('$P4COM', '$P4COMSTR')
-
-def generate(env):
- """Add a Builder factory function and construction variables for
- Perforce to an Environment."""
-
- def PerforceFactory(env=env):
- """ """
- import SCons.Warnings as W
- W.warn(W.DeprecatedSourceCodeWarning, """The Perforce() factory is deprecated and there is no replacement.""")
- return SCons.Builder.Builder(action = PerforceAction, env = env)
-
- #setattr(env, 'Perforce', PerforceFactory)
- env.Perforce = PerforceFactory
-
- env['P4'] = 'p4'
- env['P4FLAGS'] = SCons.Util.CLVar('')
- env['P4COM'] = '$P4 $P4FLAGS sync $TARGET'
- try:
- environ = env['ENV']
- except KeyError:
- environ = {}
- env['ENV'] = environ
-
- # Perforce seems to use the PWD environment variable rather than
- # calling getcwd() for itself, which is odd. If no PWD variable
- # is present, p4 WILL call getcwd, but this seems to cause problems
- # with good ol' Windows's tilde-mangling for long file names.
- environ['PWD'] = env.Dir('#').get_abspath()
-
- for var in _import_env:
- v = os.environ.get(var)
- if v:
- environ[var] = v
-
- if SCons.Util.can_read_reg:
- # If we can read the registry, add the path to Perforce to our environment.
- try:
- k=SCons.Util.RegOpenKeyEx(SCons.Util.hkey_mod.HKEY_LOCAL_MACHINE,
- 'Software\\Perforce\\environment')
- val, tok = SCons.Util.RegQueryValueEx(k, 'P4INSTROOT')
- addPathIfNotExists(environ, 'PATH', val)
- except SCons.Util.RegError:
- # Can't detect where Perforce is, hope the user has it set in the
- # PATH.
- pass
-
-def exists(env):
- return env.Detect('p4')
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/PharLapCommon.py b/Externals/scons-local/scons-local-2.0.1/SCons/Tool/PharLapCommon.py
deleted file mode 100644
index 7d7a0225b7..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/PharLapCommon.py
+++ /dev/null
@@ -1,137 +0,0 @@
-"""SCons.Tool.PharLapCommon
-
-This module contains common code used by all Tools for the
-Phar Lap ETS tool chain. Right now, this is linkloc and
-386asm.
-
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Tool/PharLapCommon.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import os
-import os.path
-import SCons.Errors
-import SCons.Util
-import re
-
-def getPharLapPath():
- """Reads the registry to find the installed path of the Phar Lap ETS
- development kit.
-
- Raises UserError if no installed version of Phar Lap can
- be found."""
-
- if not SCons.Util.can_read_reg:
- raise SCons.Errors.InternalError("No Windows registry module was found")
- try:
- k=SCons.Util.RegOpenKeyEx(SCons.Util.HKEY_LOCAL_MACHINE,
- 'SOFTWARE\\Pharlap\\ETS')
- val, type = SCons.Util.RegQueryValueEx(k, 'BaseDir')
-
- # The following is a hack...there is (not surprisingly)
- # an odd issue in the Phar Lap plug in that inserts
- # a bunch of junk data after the phar lap path in the
- # registry. We must trim it.
- idx=val.find('\0')
- if idx >= 0:
- val = val[:idx]
-
- return os.path.normpath(val)
- except SCons.Util.RegError:
- raise SCons.Errors.UserError("Cannot find Phar Lap ETS path in the registry. Is it installed properly?")
-
-REGEX_ETS_VER = re.compile(r'#define\s+ETS_VER\s+([0-9]+)')
-
-def getPharLapVersion():
- """Returns the version of the installed ETS Tool Suite as a
- decimal number. This version comes from the ETS_VER #define in
- the embkern.h header. For example, '#define ETS_VER 1010' (which
- is what Phar Lap 10.1 defines) would cause this method to return
- 1010. Phar Lap 9.1 does not have such a #define, but this method
- will return 910 as a default.
-
- Raises UserError if no installed version of Phar Lap can
- be found."""
-
- include_path = os.path.join(getPharLapPath(), os.path.normpath("include/embkern.h"))
- if not os.path.exists(include_path):
- raise SCons.Errors.UserError("Cannot find embkern.h in ETS include directory.\nIs Phar Lap ETS installed properly?")
- mo = REGEX_ETS_VER.search(open(include_path, 'r').read())
- if mo:
- return int(mo.group(1))
- # Default return for Phar Lap 9.1
- return 910
-
-def addPathIfNotExists(env_dict, key, path, sep=os.pathsep):
- """This function will take 'key' out of the dictionary
- 'env_dict', then add the path 'path' to that key if it is not
- already there. This treats the value of env_dict[key] as if it
- has a similar format to the PATH variable...a list of paths
- separated by tokens. The 'path' will get added to the list if it
- is not already there."""
- try:
- is_list = 1
- paths = env_dict[key]
- if not SCons.Util.is_List(env_dict[key]):
- paths = paths.split(sep)
- is_list = 0
- if os.path.normcase(path) not in list(map(os.path.normcase, paths)):
- paths = [ path ] + paths
- if is_list:
- env_dict[key] = paths
- else:
- env_dict[key] = sep.join(paths)
- except KeyError:
- env_dict[key] = path
-
-def addPharLapPaths(env):
- """This function adds the path to the Phar Lap binaries, includes,
- and libraries, if they are not already there."""
- ph_path = getPharLapPath()
-
- try:
- env_dict = env['ENV']
- except KeyError:
- env_dict = {}
- env['ENV'] = env_dict
- addPathIfNotExists(env_dict, 'PATH',
- os.path.join(ph_path, 'bin'))
- addPathIfNotExists(env_dict, 'INCLUDE',
- os.path.join(ph_path, 'include'))
- addPathIfNotExists(env_dict, 'LIB',
- os.path.join(ph_path, 'lib'))
- addPathIfNotExists(env_dict, 'LIB',
- os.path.join(ph_path, os.path.normpath('lib/vclib')))
-
- env['PHARLAP_PATH'] = getPharLapPath()
- env['PHARLAP_VERSION'] = str(getPharLapVersion())
-
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/RCS.py b/Externals/scons-local/scons-local-2.0.1/SCons/Tool/RCS.py
deleted file mode 100644
index 10e3e715ad..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/RCS.py
+++ /dev/null
@@ -1,64 +0,0 @@
-"""SCons.Tool.RCS.py
-
-Tool-specific initialization for RCS.
-
-There normally shouldn't be any need to import this module directly.
-It will usually be imported through the generic SCons.Tool.Tool()
-selection method.
-
-"""
-
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-__revision__ = "src/engine/SCons/Tool/RCS.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import SCons.Action
-import SCons.Builder
-import SCons.Util
-
-def generate(env):
- """Add a Builder factory function and construction variables for
- RCS to an Environment."""
-
- def RCSFactory(env=env):
- """ """
- import SCons.Warnings as W
- W.warn(W.DeprecatedSourceCodeWarning, """The RCS() factory is deprecated and there is no replacement.""")
- act = SCons.Action.Action('$RCS_COCOM', '$RCS_COCOMSTR')
- return SCons.Builder.Builder(action = act, env = env)
-
- #setattr(env, 'RCS', RCSFactory)
- env.RCS = RCSFactory
-
- env['RCS'] = 'rcs'
- env['RCS_CO'] = 'co'
- env['RCS_COFLAGS'] = SCons.Util.CLVar('')
- env['RCS_COCOM'] = '$RCS_CO $RCS_COFLAGS $TARGET'
-
-def exists(env):
- return env.Detect('rcs')
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/SCCS.py b/Externals/scons-local/scons-local-2.0.1/SCons/Tool/SCCS.py
deleted file mode 100644
index 1cedb0ada9..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/SCCS.py
+++ /dev/null
@@ -1,64 +0,0 @@
-"""SCons.Tool.SCCS.py
-
-Tool-specific initialization for SCCS.
-
-There normally shouldn't be any need to import this module directly.
-It will usually be imported through the generic SCons.Tool.Tool()
-selection method.
-
-"""
-
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-__revision__ = "src/engine/SCons/Tool/SCCS.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import SCons.Action
-import SCons.Builder
-import SCons.Util
-
-def generate(env):
- """Add a Builder factory function and construction variables for
- SCCS to an Environment."""
-
- def SCCSFactory(env=env):
- """ """
- import SCons.Warnings as W
- W.warn(W.DeprecatedSourceCodeWarning, """The SCCS() factory is deprecated and there is no replacement.""")
- act = SCons.Action.Action('$SCCSCOM', '$SCCSCOMSTR')
- return SCons.Builder.Builder(action = act, env = env)
-
- #setattr(env, 'SCCS', SCCSFactory)
- env.SCCS = SCCSFactory
-
- env['SCCS'] = 'sccs'
- env['SCCSFLAGS'] = SCons.Util.CLVar('')
- env['SCCSGETFLAGS'] = SCons.Util.CLVar('')
- env['SCCSCOM'] = '$SCCS $SCCSFLAGS get $SCCSGETFLAGS $TARGET'
-
-def exists(env):
- return env.Detect('sccs')
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/Subversion.py b/Externals/scons-local/scons-local-2.0.1/SCons/Tool/Subversion.py
deleted file mode 100644
index 570818462c..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/Subversion.py
+++ /dev/null
@@ -1,71 +0,0 @@
-"""SCons.Tool.Subversion.py
-
-Tool-specific initialization for Subversion.
-
-There normally shouldn't be any need to import this module directly.
-It will usually be imported through the generic SCons.Tool.Tool()
-selection method.
-
-"""
-
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-__revision__ = "src/engine/SCons/Tool/Subversion.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import os.path
-
-import SCons.Action
-import SCons.Builder
-import SCons.Util
-
-def generate(env):
- """Add a Builder factory function and construction variables for
- Subversion to an Environment."""
-
- def SubversionFactory(repos, module='', env=env):
- """ """
- # fail if repos is not an absolute path name?
- import SCons.Warnings as W
- W.warn(W.DeprecatedSourceCodeWarning, """The Subversion() factory is deprecated and there is no replacement.""")
- if module != '':
- module = os.path.join(module, '')
- act = SCons.Action.Action('$SVNCOM', '$SVNCOMSTR')
- return SCons.Builder.Builder(action = act,
- env = env,
- SVNREPOSITORY = repos,
- SVNMODULE = module)
-
- #setattr(env, 'Subversion', SubversionFactory)
- env.Subversion = SubversionFactory
-
- env['SVN'] = 'svn'
- env['SVNFLAGS'] = SCons.Util.CLVar('')
- env['SVNCOM'] = '$SVN $SVNFLAGS cat $SVNREPOSITORY/$SVNMODULE$TARGET > $TARGET'
-
-def exists(env):
- return env.Detect('svn')
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/__init__.py b/Externals/scons-local/scons-local-2.0.1/SCons/Tool/__init__.py
deleted file mode 100644
index 416d8de2ba..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/__init__.py
+++ /dev/null
@@ -1,681 +0,0 @@
-"""SCons.Tool
-
-SCons tool selection.
-
-This looks for modules that define a callable object that can modify
-a construction environment as appropriate for a given tool (or tool
-chain).
-
-Note that because this subsystem just *selects* a callable that can
-modify a construction environment, it's possible for people to define
-their own "tool specification" in an arbitrary callable function. No
-one needs to use or tie in to this subsystem in order to roll their own
-tool definition.
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-__revision__ = "src/engine/SCons/Tool/__init__.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import imp
-import sys
-
-import SCons.Builder
-import SCons.Errors
-import SCons.Node.FS
-import SCons.Scanner
-import SCons.Scanner.C
-import SCons.Scanner.D
-import SCons.Scanner.LaTeX
-import SCons.Scanner.Prog
-
-DefaultToolpath=[]
-
-CScanner = SCons.Scanner.C.CScanner()
-DScanner = SCons.Scanner.D.DScanner()
-LaTeXScanner = SCons.Scanner.LaTeX.LaTeXScanner()
-PDFLaTeXScanner = SCons.Scanner.LaTeX.PDFLaTeXScanner()
-ProgramScanner = SCons.Scanner.Prog.ProgramScanner()
-SourceFileScanner = SCons.Scanner.Base({}, name='SourceFileScanner')
-
-CSuffixes = [".c", ".C", ".cxx", ".cpp", ".c++", ".cc",
- ".h", ".H", ".hxx", ".hpp", ".hh",
- ".F", ".fpp", ".FPP",
- ".m", ".mm",
- ".S", ".spp", ".SPP"]
-
-DSuffixes = ['.d']
-
-IDLSuffixes = [".idl", ".IDL"]
-
-LaTeXSuffixes = [".tex", ".ltx", ".latex"]
-
-for suffix in CSuffixes:
- SourceFileScanner.add_scanner(suffix, CScanner)
-
-for suffix in DSuffixes:
- SourceFileScanner.add_scanner(suffix, DScanner)
-
-# FIXME: what should be done here? Two scanners scan the same extensions,
-# but look for different files, e.g., "picture.eps" vs. "picture.pdf".
-# The builders for DVI and PDF explicitly reference their scanners
-# I think that means this is not needed???
-for suffix in LaTeXSuffixes:
- SourceFileScanner.add_scanner(suffix, LaTeXScanner)
- SourceFileScanner.add_scanner(suffix, PDFLaTeXScanner)
-
-class Tool(object):
- def __init__(self, name, toolpath=[], **kw):
- self.name = name
- self.toolpath = toolpath + DefaultToolpath
- # remember these so we can merge them into the call
- self.init_kw = kw
-
- module = self._tool_module()
- self.generate = module.generate
- self.exists = module.exists
- if hasattr(module, 'options'):
- self.options = module.options
-
- def _tool_module(self):
- # TODO: Interchange zipimport with normal initilization for better error reporting
- oldpythonpath = sys.path
- sys.path = self.toolpath + sys.path
-
- try:
- try:
- file, path, desc = imp.find_module(self.name, self.toolpath)
- try:
- return imp.load_module(self.name, file, path, desc)
- finally:
- if file:
- file.close()
- except ImportError, e:
- if str(e)!="No module named %s"%self.name:
- raise SCons.Errors.EnvironmentError(e)
- try:
- import zipimport
- except ImportError:
- pass
- else:
- for aPath in self.toolpath:
- try:
- importer = zipimport.zipimporter(aPath)
- return importer.load_module(self.name)
- except ImportError, e:
- pass
- finally:
- sys.path = oldpythonpath
-
- full_name = 'SCons.Tool.' + self.name
- try:
- return sys.modules[full_name]
- except KeyError:
- try:
- smpath = sys.modules['SCons.Tool'].__path__
- try:
- file, path, desc = imp.find_module(self.name, smpath)
- module = imp.load_module(full_name, file, path, desc)
- setattr(SCons.Tool, self.name, module)
- if file:
- file.close()
- return module
- except ImportError, e:
- if str(e)!="No module named %s"%self.name:
- raise SCons.Errors.EnvironmentError(e)
- try:
- import zipimport
- importer = zipimport.zipimporter( sys.modules['SCons.Tool'].__path__[0] )
- module = importer.load_module(full_name)
- setattr(SCons.Tool, self.name, module)
- return module
- except ImportError, e:
- m = "No tool named '%s': %s" % (self.name, e)
- raise SCons.Errors.EnvironmentError(m)
- except ImportError, e:
- m = "No tool named '%s': %s" % (self.name, e)
- raise SCons.Errors.EnvironmentError(m)
-
- def __call__(self, env, *args, **kw):
- if self.init_kw is not None:
- # Merge call kws into init kws;
- # but don't bash self.init_kw.
- if kw is not None:
- call_kw = kw
- kw = self.init_kw.copy()
- kw.update(call_kw)
- else:
- kw = self.init_kw
- env.Append(TOOLS = [ self.name ])
- if hasattr(self, 'options'):
- import SCons.Variables
- if 'options' not in env:
- from SCons.Script import ARGUMENTS
- env['options']=SCons.Variables.Variables(args=ARGUMENTS)
- opts=env['options']
-
- self.options(opts)
- opts.Update(env)
-
- self.generate(env, *args, **kw)
-
- def __str__(self):
- return self.name
-
-##########################################################################
-# Create common executable program / library / object builders
-
-def createProgBuilder(env):
- """This is a utility function that creates the Program
- Builder in an Environment if it is not there already.
-
- If it is already there, we return the existing one.
- """
-
- try:
- program = env['BUILDERS']['Program']
- except KeyError:
- import SCons.Defaults
- program = SCons.Builder.Builder(action = SCons.Defaults.LinkAction,
- emitter = '$PROGEMITTER',
- prefix = '$PROGPREFIX',
- suffix = '$PROGSUFFIX',
- src_suffix = '$OBJSUFFIX',
- src_builder = 'Object',
- target_scanner = ProgramScanner)
- env['BUILDERS']['Program'] = program
-
- return program
-
-def createStaticLibBuilder(env):
- """This is a utility function that creates the StaticLibrary
- Builder in an Environment if it is not there already.
-
- If it is already there, we return the existing one.
- """
-
- try:
- static_lib = env['BUILDERS']['StaticLibrary']
- except KeyError:
- action_list = [ SCons.Action.Action("$ARCOM", "$ARCOMSTR") ]
- if env.Detect('ranlib'):
- ranlib_action = SCons.Action.Action("$RANLIBCOM", "$RANLIBCOMSTR")
- action_list.append(ranlib_action)
-
- static_lib = SCons.Builder.Builder(action = action_list,
- emitter = '$LIBEMITTER',
- prefix = '$LIBPREFIX',
- suffix = '$LIBSUFFIX',
- src_suffix = '$OBJSUFFIX',
- src_builder = 'StaticObject')
- env['BUILDERS']['StaticLibrary'] = static_lib
- env['BUILDERS']['Library'] = static_lib
-
- return static_lib
-
-def createSharedLibBuilder(env):
- """This is a utility function that creates the SharedLibrary
- Builder in an Environment if it is not there already.
-
- If it is already there, we return the existing one.
- """
-
- try:
- shared_lib = env['BUILDERS']['SharedLibrary']
- except KeyError:
- import SCons.Defaults
- action_list = [ SCons.Defaults.SharedCheck,
- SCons.Defaults.ShLinkAction ]
- shared_lib = SCons.Builder.Builder(action = action_list,
- emitter = "$SHLIBEMITTER",
- prefix = '$SHLIBPREFIX',
- suffix = '$SHLIBSUFFIX',
- target_scanner = ProgramScanner,
- src_suffix = '$SHOBJSUFFIX',
- src_builder = 'SharedObject')
- env['BUILDERS']['SharedLibrary'] = shared_lib
-
- return shared_lib
-
-def createLoadableModuleBuilder(env):
- """This is a utility function that creates the LoadableModule
- Builder in an Environment if it is not there already.
-
- If it is already there, we return the existing one.
- """
-
- try:
- ld_module = env['BUILDERS']['LoadableModule']
- except KeyError:
- import SCons.Defaults
- action_list = [ SCons.Defaults.SharedCheck,
- SCons.Defaults.LdModuleLinkAction ]
- ld_module = SCons.Builder.Builder(action = action_list,
- emitter = "$LDMODULEEMITTER",
- prefix = '$LDMODULEPREFIX',
- suffix = '$LDMODULESUFFIX',
- target_scanner = ProgramScanner,
- src_suffix = '$SHOBJSUFFIX',
- src_builder = 'SharedObject')
- env['BUILDERS']['LoadableModule'] = ld_module
-
- return ld_module
-
-def createObjBuilders(env):
- """This is a utility function that creates the StaticObject
- and SharedObject Builders in an Environment if they
- are not there already.
-
- If they are there already, we return the existing ones.
-
- This is a separate function because soooo many Tools
- use this functionality.
-
- The return is a 2-tuple of (StaticObject, SharedObject)
- """
-
-
- try:
- static_obj = env['BUILDERS']['StaticObject']
- except KeyError:
- static_obj = SCons.Builder.Builder(action = {},
- emitter = {},
- prefix = '$OBJPREFIX',
- suffix = '$OBJSUFFIX',
- src_builder = ['CFile', 'CXXFile'],
- source_scanner = SourceFileScanner,
- single_source = 1)
- env['BUILDERS']['StaticObject'] = static_obj
- env['BUILDERS']['Object'] = static_obj
-
- try:
- shared_obj = env['BUILDERS']['SharedObject']
- except KeyError:
- shared_obj = SCons.Builder.Builder(action = {},
- emitter = {},
- prefix = '$SHOBJPREFIX',
- suffix = '$SHOBJSUFFIX',
- src_builder = ['CFile', 'CXXFile'],
- source_scanner = SourceFileScanner,
- single_source = 1)
- env['BUILDERS']['SharedObject'] = shared_obj
-
- return (static_obj, shared_obj)
-
-def createCFileBuilders(env):
- """This is a utility function that creates the CFile/CXXFile
- Builders in an Environment if they
- are not there already.
-
- If they are there already, we return the existing ones.
-
- This is a separate function because soooo many Tools
- use this functionality.
-
- The return is a 2-tuple of (CFile, CXXFile)
- """
-
- try:
- c_file = env['BUILDERS']['CFile']
- except KeyError:
- c_file = SCons.Builder.Builder(action = {},
- emitter = {},
- suffix = {None:'$CFILESUFFIX'})
- env['BUILDERS']['CFile'] = c_file
-
- env.SetDefault(CFILESUFFIX = '.c')
-
- try:
- cxx_file = env['BUILDERS']['CXXFile']
- except KeyError:
- cxx_file = SCons.Builder.Builder(action = {},
- emitter = {},
- suffix = {None:'$CXXFILESUFFIX'})
- env['BUILDERS']['CXXFile'] = cxx_file
- env.SetDefault(CXXFILESUFFIX = '.cc')
-
- return (c_file, cxx_file)
-
-##########################################################################
-# Create common Java builders
-
-def CreateJarBuilder(env):
- try:
- java_jar = env['BUILDERS']['Jar']
- except KeyError:
- fs = SCons.Node.FS.get_default_fs()
- jar_com = SCons.Action.Action('$JARCOM', '$JARCOMSTR')
- java_jar = SCons.Builder.Builder(action = jar_com,
- suffix = '$JARSUFFIX',
- src_suffix = '$JAVACLASSSUFIX',
- src_builder = 'JavaClassFile',
- source_factory = fs.Entry)
- env['BUILDERS']['Jar'] = java_jar
- return java_jar
-
-def CreateJavaHBuilder(env):
- try:
- java_javah = env['BUILDERS']['JavaH']
- except KeyError:
- fs = SCons.Node.FS.get_default_fs()
- java_javah_com = SCons.Action.Action('$JAVAHCOM', '$JAVAHCOMSTR')
- java_javah = SCons.Builder.Builder(action = java_javah_com,
- src_suffix = '$JAVACLASSSUFFIX',
- target_factory = fs.Entry,
- source_factory = fs.File,
- src_builder = 'JavaClassFile')
- env['BUILDERS']['JavaH'] = java_javah
- return java_javah
-
-def CreateJavaClassFileBuilder(env):
- try:
- java_class_file = env['BUILDERS']['JavaClassFile']
- except KeyError:
- fs = SCons.Node.FS.get_default_fs()
- javac_com = SCons.Action.Action('$JAVACCOM', '$JAVACCOMSTR')
- java_class_file = SCons.Builder.Builder(action = javac_com,
- emitter = {},
- #suffix = '$JAVACLASSSUFFIX',
- src_suffix = '$JAVASUFFIX',
- src_builder = ['JavaFile'],
- target_factory = fs.Entry,
- source_factory = fs.File)
- env['BUILDERS']['JavaClassFile'] = java_class_file
- return java_class_file
-
-def CreateJavaClassDirBuilder(env):
- try:
- java_class_dir = env['BUILDERS']['JavaClassDir']
- except KeyError:
- fs = SCons.Node.FS.get_default_fs()
- javac_com = SCons.Action.Action('$JAVACCOM', '$JAVACCOMSTR')
- java_class_dir = SCons.Builder.Builder(action = javac_com,
- emitter = {},
- target_factory = fs.Dir,
- source_factory = fs.Dir)
- env['BUILDERS']['JavaClassDir'] = java_class_dir
- return java_class_dir
-
-def CreateJavaFileBuilder(env):
- try:
- java_file = env['BUILDERS']['JavaFile']
- except KeyError:
- java_file = SCons.Builder.Builder(action = {},
- emitter = {},
- suffix = {None:'$JAVASUFFIX'})
- env['BUILDERS']['JavaFile'] = java_file
- env['JAVASUFFIX'] = '.java'
- return java_file
-
-class ToolInitializerMethod(object):
- """
- This is added to a construction environment in place of a
- method(s) normally called for a Builder (env.Object, env.StaticObject,
- etc.). When called, it has its associated ToolInitializer
- object search the specified list of tools and apply the first
- one that exists to the construction environment. It then calls
- whatever builder was (presumably) added to the construction
- environment in place of this particular instance.
- """
- def __init__(self, name, initializer):
- """
- Note: we store the tool name as __name__ so it can be used by
- the class that attaches this to a construction environment.
- """
- self.__name__ = name
- self.initializer = initializer
-
- def get_builder(self, env):
- """
- Returns the appropriate real Builder for this method name
- after having the associated ToolInitializer object apply
- the appropriate Tool module.
- """
- builder = getattr(env, self.__name__)
-
- self.initializer.apply_tools(env)
-
- builder = getattr(env, self.__name__)
- if builder is self:
- # There was no Builder added, which means no valid Tool
- # for this name was found (or possibly there's a mismatch
- # between the name we were called by and the Builder name
- # added by the Tool module).
- return None
-
- self.initializer.remove_methods(env)
-
- return builder
-
- def __call__(self, env, *args, **kw):
- """
- """
- builder = self.get_builder(env)
- if builder is None:
- return [], []
- return builder(*args, **kw)
-
-class ToolInitializer(object):
- """
- A class for delayed initialization of Tools modules.
-
- Instances of this class associate a list of Tool modules with
- a list of Builder method names that will be added by those Tool
- modules. As part of instantiating this object for a particular
- construction environment, we also add the appropriate
- ToolInitializerMethod objects for the various Builder methods
- that we want to use to delay Tool searches until necessary.
- """
- def __init__(self, env, tools, names):
- if not SCons.Util.is_List(tools):
- tools = [tools]
- if not SCons.Util.is_List(names):
- names = [names]
- self.env = env
- self.tools = tools
- self.names = names
- self.methods = {}
- for name in names:
- method = ToolInitializerMethod(name, self)
- self.methods[name] = method
- env.AddMethod(method)
-
- def remove_methods(self, env):
- """
- Removes the methods that were added by the tool initialization
- so we no longer copy and re-bind them when the construction
- environment gets cloned.
- """
- for method in self.methods.values():
- env.RemoveMethod(method)
-
- def apply_tools(self, env):
- """
- Searches the list of associated Tool modules for one that
- exists, and applies that to the construction environment.
- """
- for t in self.tools:
- tool = SCons.Tool.Tool(t)
- if tool.exists(env):
- env.Tool(tool)
- return
-
- # If we fall through here, there was no tool module found.
- # This is where we can put an informative error message
- # about the inability to find the tool. We'll start doing
- # this as we cut over more pre-defined Builder+Tools to use
- # the ToolInitializer class.
-
-def Initializers(env):
- ToolInitializer(env, ['install'], ['_InternalInstall', '_InternalInstallAs'])
- def Install(self, *args, **kw):
- return self._InternalInstall(*args, **kw)
- def InstallAs(self, *args, **kw):
- return self._InternalInstallAs(*args, **kw)
- env.AddMethod(Install)
- env.AddMethod(InstallAs)
-
-def FindTool(tools, env):
- for tool in tools:
- t = Tool(tool)
- if t.exists(env):
- return tool
- return None
-
-def FindAllTools(tools, env):
- def ToolExists(tool, env=env):
- return Tool(tool).exists(env)
- return list(filter (ToolExists, tools))
-
-def tool_list(platform, env):
-
- other_plat_tools=[]
- # XXX this logic about what tool to prefer on which platform
- # should be moved into either the platform files or
- # the tool files themselves.
- # The search orders here are described in the man page. If you
- # change these search orders, update the man page as well.
- if str(platform) == 'win32':
- "prefer Microsoft tools on Windows"
- linkers = ['mslink', 'gnulink', 'ilink', 'linkloc', 'ilink32' ]
- c_compilers = ['msvc', 'mingw', 'gcc', 'intelc', 'icl', 'icc', 'cc', 'bcc32' ]
- cxx_compilers = ['msvc', 'intelc', 'icc', 'g++', 'c++', 'bcc32' ]
- assemblers = ['masm', 'nasm', 'gas', '386asm' ]
- fortran_compilers = ['gfortran', 'g77', 'ifl', 'cvf', 'f95', 'f90', 'fortran']
- ars = ['mslib', 'ar', 'tlib']
- other_plat_tools=['msvs','midl']
- elif str(platform) == 'os2':
- "prefer IBM tools on OS/2"
- linkers = ['ilink', 'gnulink', ]#'mslink']
- c_compilers = ['icc', 'gcc',]# 'msvc', 'cc']
- cxx_compilers = ['icc', 'g++',]# 'msvc', 'c++']
- assemblers = ['nasm',]# 'masm', 'gas']
- fortran_compilers = ['ifl', 'g77']
- ars = ['ar',]# 'mslib']
- elif str(platform) == 'irix':
- "prefer MIPSPro on IRIX"
- linkers = ['sgilink', 'gnulink']
- c_compilers = ['sgicc', 'gcc', 'cc']
- cxx_compilers = ['sgic++', 'g++', 'c++']
- assemblers = ['as', 'gas']
- fortran_compilers = ['f95', 'f90', 'f77', 'g77', 'fortran']
- ars = ['sgiar']
- elif str(platform) == 'sunos':
- "prefer Forte tools on SunOS"
- linkers = ['sunlink', 'gnulink']
- c_compilers = ['suncc', 'gcc', 'cc']
- cxx_compilers = ['sunc++', 'g++', 'c++']
- assemblers = ['as', 'gas']
- fortran_compilers = ['sunf95', 'sunf90', 'sunf77', 'f95', 'f90', 'f77',
- 'gfortran', 'g77', 'fortran']
- ars = ['sunar']
- elif str(platform) == 'hpux':
- "prefer aCC tools on HP-UX"
- linkers = ['hplink', 'gnulink']
- c_compilers = ['hpcc', 'gcc', 'cc']
- cxx_compilers = ['hpc++', 'g++', 'c++']
- assemblers = ['as', 'gas']
- fortran_compilers = ['f95', 'f90', 'f77', 'g77', 'fortran']
- ars = ['ar']
- elif str(platform) == 'aix':
- "prefer AIX Visual Age tools on AIX"
- linkers = ['aixlink', 'gnulink']
- c_compilers = ['aixcc', 'gcc', 'cc']
- cxx_compilers = ['aixc++', 'g++', 'c++']
- assemblers = ['as', 'gas']
- fortran_compilers = ['f95', 'f90', 'aixf77', 'g77', 'fortran']
- ars = ['ar']
- elif str(platform) == 'darwin':
- "prefer GNU tools on Mac OS X, except for some linkers and IBM tools"
- linkers = ['applelink', 'gnulink']
- c_compilers = ['gcc', 'cc']
- cxx_compilers = ['g++', 'c++']
- assemblers = ['as']
- fortran_compilers = ['gfortran', 'f95', 'f90', 'g77']
- ars = ['ar']
- else:
- "prefer GNU tools on all other platforms"
- linkers = ['gnulink', 'mslink', 'ilink']
- c_compilers = ['gcc', 'msvc', 'intelc', 'icc', 'cc']
- cxx_compilers = ['g++', 'msvc', 'intelc', 'icc', 'c++']
- assemblers = ['gas', 'nasm', 'masm']
- fortran_compilers = ['gfortran', 'g77', 'ifort', 'ifl', 'f95', 'f90', 'f77']
- ars = ['ar', 'mslib']
-
- c_compiler = FindTool(c_compilers, env) or c_compilers[0]
-
- # XXX this logic about what tool provides what should somehow be
- # moved into the tool files themselves.
- if c_compiler and c_compiler == 'mingw':
- # MinGW contains a linker, C compiler, C++ compiler,
- # Fortran compiler, archiver and assembler:
- cxx_compiler = None
- linker = None
- assembler = None
- fortran_compiler = None
- ar = None
- else:
- # Don't use g++ if the C compiler has built-in C++ support:
- if c_compiler in ('msvc', 'intelc', 'icc'):
- cxx_compiler = None
- else:
- cxx_compiler = FindTool(cxx_compilers, env) or cxx_compilers[0]
- linker = FindTool(linkers, env) or linkers[0]
- assembler = FindTool(assemblers, env) or assemblers[0]
- fortran_compiler = FindTool(fortran_compilers, env) or fortran_compilers[0]
- ar = FindTool(ars, env) or ars[0]
-
- other_tools = FindAllTools(other_plat_tools + [
- 'dmd',
- #TODO: merge 'install' into 'filesystem' and
- # make 'filesystem' the default
- 'filesystem',
- 'm4',
- 'wix', #'midl', 'msvs',
- # Parser generators
- 'lex', 'yacc',
- # Foreign function interface
- 'rpcgen', 'swig',
- # Java
- 'jar', 'javac', 'javah', 'rmic',
- # TeX
- 'dvipdf', 'dvips', 'gs',
- 'tex', 'latex', 'pdflatex', 'pdftex',
- # Archivers
- 'tar', 'zip', 'rpm',
- # SourceCode factories
- 'BitKeeper', 'CVS', 'Perforce',
- 'RCS', 'SCCS', # 'Subversion',
- ], env)
-
- tools = ([linker, c_compiler, cxx_compiler,
- fortran_compiler, assembler, ar]
- + other_tools)
-
- return [x for x in tools if x]
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/aixc++.py b/Externals/scons-local/scons-local-2.0.1/SCons/Tool/aixc++.py
deleted file mode 100644
index bc2d0e8bbf..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/aixc++.py
+++ /dev/null
@@ -1,82 +0,0 @@
-"""SCons.Tool.aixc++
-
-Tool-specific initialization for IBM xlC / Visual Age C++ compiler.
-
-There normally shouldn't be any need to import this module directly.
-It will usually be imported through the generic SCons.Tool.Tool()
-selection method.
-
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Tool/aixc++.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import os.path
-
-import SCons.Platform.aix
-
-cplusplus = __import__('c++', globals(), locals(), [])
-
-packages = ['vacpp.cmp.core', 'vacpp.cmp.batch', 'vacpp.cmp.C', 'ibmcxx.cmp']
-
-def get_xlc(env):
- xlc = env.get('CXX', 'xlC')
- xlc_r = env.get('SHCXX', 'xlC_r')
- return SCons.Platform.aix.get_xlc(env, xlc, xlc_r, packages)
-
-def smart_cxxflags(source, target, env, for_signature):
- build_dir = env.GetBuildPath()
- if build_dir:
- return '-qtempinc=' + os.path.join(build_dir, 'tempinc')
- return ''
-
-def generate(env):
- """Add Builders and construction variables for xlC / Visual Age
- suite to an Environment."""
- path, _cxx, _shcxx, version = get_xlc(env)
- if path:
- _cxx = os.path.join(path, _cxx)
- _shcxx = os.path.join(path, _shcxx)
-
- cplusplus.generate(env)
-
- env['CXX'] = _cxx
- env['SHCXX'] = _shcxx
- env['CXXVERSION'] = version
- env['SHOBJSUFFIX'] = '.pic.o'
-
-def exists(env):
- path, _cxx, _shcxx, version = get_xlc(env)
- if path and _cxx:
- xlc = os.path.join(path, _cxx)
- if os.path.exists(xlc):
- return xlc
- return None
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/aixcc.py b/Externals/scons-local/scons-local-2.0.1/SCons/Tool/aixcc.py
deleted file mode 100644
index c1dcb168a4..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/aixcc.py
+++ /dev/null
@@ -1,74 +0,0 @@
-"""SCons.Tool.aixcc
-
-Tool-specific initialization for IBM xlc / Visual Age C compiler.
-
-There normally shouldn't be any need to import this module directly.
-It will usually be imported through the generic SCons.Tool.Tool()
-selection method.
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Tool/aixcc.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import os.path
-
-import SCons.Platform.aix
-
-import cc
-
-packages = ['vac.C', 'ibmcxx.cmp']
-
-def get_xlc(env):
- xlc = env.get('CC', 'xlc')
- xlc_r = env.get('SHCC', 'xlc_r')
- return SCons.Platform.aix.get_xlc(env, xlc, xlc_r, packages)
-
-def generate(env):
- """Add Builders and construction variables for xlc / Visual Age
- suite to an Environment."""
- path, _cc, _shcc, version = get_xlc(env)
- if path:
- _cc = os.path.join(path, _cc)
- _shcc = os.path.join(path, _shcc)
-
- cc.generate(env)
-
- env['CC'] = _cc
- env['SHCC'] = _shcc
- env['CCVERSION'] = version
-
-def exists(env):
- path, _cc, _shcc, version = get_xlc(env)
- if path and _cc:
- xlc = os.path.join(path, _cc)
- if os.path.exists(xlc):
- return xlc
- return None
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/aixf77.py b/Externals/scons-local/scons-local-2.0.1/SCons/Tool/aixf77.py
deleted file mode 100644
index 477ec302e1..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/aixf77.py
+++ /dev/null
@@ -1,80 +0,0 @@
-"""engine.SCons.Tool.aixf77
-
-Tool-specific initialization for IBM Visual Age f77 Fortran compiler.
-
-There normally shouldn't be any need to import this module directly.
-It will usually be imported through the generic SCons.Tool.Tool()
-selection method.
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Tool/aixf77.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import os.path
-
-#import SCons.Platform.aix
-
-import f77
-
-# It would be good to look for the AIX F77 package the same way we're now
-# looking for the C and C++ packages. This should be as easy as supplying
-# the correct package names in the following list and uncommenting the
-# SCons.Platform.aix_get_xlc() call the in the function below.
-packages = []
-
-def get_xlf77(env):
- xlf77 = env.get('F77', 'xlf77')
- xlf77_r = env.get('SHF77', 'xlf77_r')
- #return SCons.Platform.aix.get_xlc(env, xlf77, xlf77_r, packages)
- return (None, xlf77, xlf77_r, None)
-
-def generate(env):
- """
- Add Builders and construction variables for the Visual Age FORTRAN
- compiler to an Environment.
- """
- path, _f77, _shf77, version = get_xlf77(env)
- if path:
- _f77 = os.path.join(path, _f77)
- _shf77 = os.path.join(path, _shf77)
-
- f77.generate(env)
-
- env['F77'] = _f77
- env['SHF77'] = _shf77
-
-def exists(env):
- path, _f77, _shf77, version = get_xlf77(env)
- if path and _f77:
- xlf77 = os.path.join(path, _f77)
- if os.path.exists(xlf77):
- return xlf77
- return None
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/aixlink.py b/Externals/scons-local/scons-local-2.0.1/SCons/Tool/aixlink.py
deleted file mode 100644
index eba4916ae5..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/aixlink.py
+++ /dev/null
@@ -1,76 +0,0 @@
-"""SCons.Tool.aixlink
-
-Tool-specific initialization for the IBM Visual Age linker.
-
-There normally shouldn't be any need to import this module directly.
-It will usually be imported through the generic SCons.Tool.Tool()
-selection method.
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Tool/aixlink.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import os
-import os.path
-
-import SCons.Util
-
-import aixcc
-import link
-
-cplusplus = __import__('c++', globals(), locals(), [])
-
-def smart_linkflags(source, target, env, for_signature):
- if cplusplus.iscplusplus(source):
- build_dir = env.subst('$BUILDDIR', target=target, source=source)
- if build_dir:
- return '-qtempinc=' + os.path.join(build_dir, 'tempinc')
- return ''
-
-def generate(env):
- """
- Add Builders and construction variables for Visual Age linker to
- an Environment.
- """
- link.generate(env)
-
- env['SMARTLINKFLAGS'] = smart_linkflags
- env['LINKFLAGS'] = SCons.Util.CLVar('$SMARTLINKFLAGS')
- env['SHLINKFLAGS'] = SCons.Util.CLVar('$LINKFLAGS -qmkshrobj -qsuppress=1501-218')
- env['SHLIBSUFFIX'] = '.a'
-
-def exists(env):
- path, _cc, _shcc, version = aixcc.get_xlc(env)
- if path and _cc:
- xlc = os.path.join(path, _cc)
- if os.path.exists(xlc):
- return xlc
- return None
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/applelink.py b/Externals/scons-local/scons-local-2.0.1/SCons/Tool/applelink.py
deleted file mode 100644
index a23a437800..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/applelink.py
+++ /dev/null
@@ -1,71 +0,0 @@
-"""SCons.Tool.applelink
-
-Tool-specific initialization for the Apple gnu-like linker.
-
-There normally shouldn't be any need to import this module directly.
-It will usually be imported through the generic SCons.Tool.Tool()
-selection method.
-
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Tool/applelink.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import SCons.Util
-
-# Even though the Mac is based on the GNU toolchain, it doesn't understand
-# the -rpath option, so we use the "link" tool instead of "gnulink".
-import link
-
-def generate(env):
- """Add Builders and construction variables for applelink to an
- Environment."""
- link.generate(env)
-
- env['FRAMEWORKPATHPREFIX'] = '-F'
- env['_FRAMEWORKPATH'] = '${_concat(FRAMEWORKPATHPREFIX, FRAMEWORKPATH, "", __env__)}'
- env['_FRAMEWORKS'] = '${_concat("-framework ", FRAMEWORKS, "", __env__)}'
- env['LINKCOM'] = env['LINKCOM'] + ' $_FRAMEWORKPATH $_FRAMEWORKS $FRAMEWORKSFLAGS'
- env['SHLINKFLAGS'] = SCons.Util.CLVar('$LINKFLAGS -dynamiclib')
- env['SHLINKCOM'] = env['SHLINKCOM'] + ' $_FRAMEWORKPATH $_FRAMEWORKS $FRAMEWORKSFLAGS'
-
- # override the default for loadable modules, which are different
- # on OS X than dynamic shared libs. echoing what XCode does for
- # pre/suffixes:
- env['LDMODULEPREFIX'] = ''
- env['LDMODULESUFFIX'] = ''
- env['LDMODULEFLAGS'] = SCons.Util.CLVar('$LINKFLAGS -bundle')
- env['LDMODULECOM'] = '$LDMODULE -o ${TARGET} $LDMODULEFLAGS $SOURCES $_LIBDIRFLAGS $_LIBFLAGS $_FRAMEWORKPATH $_FRAMEWORKS $FRAMEWORKSFLAGS'
-
-
-
-def exists(env):
- return env['PLATFORM'] == 'darwin'
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/ar.py b/Externals/scons-local/scons-local-2.0.1/SCons/Tool/ar.py
deleted file mode 100644
index dab95868b8..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/ar.py
+++ /dev/null
@@ -1,63 +0,0 @@
-"""SCons.Tool.ar
-
-Tool-specific initialization for ar (library archive).
-
-There normally shouldn't be any need to import this module directly.
-It will usually be imported through the generic SCons.Tool.Tool()
-selection method.
-
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Tool/ar.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import SCons.Defaults
-import SCons.Tool
-import SCons.Util
-
-
-def generate(env):
- """Add Builders and construction variables for ar to an Environment."""
- SCons.Tool.createStaticLibBuilder(env)
-
- env['AR'] = 'ar'
- env['ARFLAGS'] = SCons.Util.CLVar('rc')
- env['ARCOM'] = '$AR $ARFLAGS $TARGET $SOURCES'
- env['LIBPREFIX'] = 'lib'
- env['LIBSUFFIX'] = '.a'
-
- if env.Detect('ranlib'):
- env['RANLIB'] = 'ranlib'
- env['RANLIBFLAGS'] = SCons.Util.CLVar('')
- env['RANLIBCOM'] = '$RANLIB $RANLIBFLAGS $TARGET'
-
-def exists(env):
- return env.Detect('ar')
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/as.py b/Externals/scons-local/scons-local-2.0.1/SCons/Tool/as.py
deleted file mode 100644
index 7d5f8722c6..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/as.py
+++ /dev/null
@@ -1,78 +0,0 @@
-"""SCons.Tool.as
-
-Tool-specific initialization for as, the generic Posix assembler.
-
-There normally shouldn't be any need to import this module directly.
-It will usually be imported through the generic SCons.Tool.Tool()
-selection method.
-
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Tool/as.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import SCons.Defaults
-import SCons.Tool
-import SCons.Util
-
-assemblers = ['as']
-
-ASSuffixes = ['.s', '.asm', '.ASM']
-ASPPSuffixes = ['.spp', '.SPP', '.sx']
-if SCons.Util.case_sensitive_suffixes('.s', '.S'):
- ASPPSuffixes.extend(['.S'])
-else:
- ASSuffixes.extend(['.S'])
-
-def generate(env):
- """Add Builders and construction variables for as to an Environment."""
- static_obj, shared_obj = SCons.Tool.createObjBuilders(env)
-
- for suffix in ASSuffixes:
- static_obj.add_action(suffix, SCons.Defaults.ASAction)
- shared_obj.add_action(suffix, SCons.Defaults.ASAction)
- static_obj.add_emitter(suffix, SCons.Defaults.StaticObjectEmitter)
- shared_obj.add_emitter(suffix, SCons.Defaults.SharedObjectEmitter)
-
- for suffix in ASPPSuffixes:
- static_obj.add_action(suffix, SCons.Defaults.ASPPAction)
- shared_obj.add_action(suffix, SCons.Defaults.ASPPAction)
- static_obj.add_emitter(suffix, SCons.Defaults.StaticObjectEmitter)
- shared_obj.add_emitter(suffix, SCons.Defaults.SharedObjectEmitter)
-
- env['AS'] = env.Detect(assemblers) or 'as'
- env['ASFLAGS'] = SCons.Util.CLVar('')
- env['ASCOM'] = '$AS $ASFLAGS -o $TARGET $SOURCES'
- env['ASPPFLAGS'] = '$ASFLAGS'
- env['ASPPCOM'] = '$CC $ASPPFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS -c -o $TARGET $SOURCES'
-
-def exists(env):
- return env.Detect(assemblers)
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/bcc32.py b/Externals/scons-local/scons-local-2.0.1/SCons/Tool/bcc32.py
deleted file mode 100644
index 664c3de043..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/bcc32.py
+++ /dev/null
@@ -1,81 +0,0 @@
-"""SCons.Tool.bcc32
-
-XXX
-
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Tool/bcc32.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import os
-import os.path
-
-import SCons.Defaults
-import SCons.Tool
-import SCons.Util
-
-def findIt(program, env):
- # First search in the SCons path and then the OS path:
- borwin = env.WhereIs(program) or SCons.Util.WhereIs(program)
- if borwin:
- dir = os.path.dirname(borwin)
- env.PrependENVPath('PATH', dir)
- return borwin
-
-def generate(env):
- findIt('bcc32', env)
- """Add Builders and construction variables for bcc to an
- Environment."""
- static_obj, shared_obj = SCons.Tool.createObjBuilders(env)
- for suffix in ['.c', '.cpp']:
- static_obj.add_action(suffix, SCons.Defaults.CAction)
- shared_obj.add_action(suffix, SCons.Defaults.ShCAction)
- static_obj.add_emitter(suffix, SCons.Defaults.StaticObjectEmitter)
- shared_obj.add_emitter(suffix, SCons.Defaults.SharedObjectEmitter)
-
- env['CC'] = 'bcc32'
- env['CCFLAGS'] = SCons.Util.CLVar('')
- env['CFLAGS'] = SCons.Util.CLVar('')
- env['CCCOM'] = '$CC -q $CFLAGS $CCFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS -c -o$TARGET $SOURCES'
- env['SHCC'] = '$CC'
- env['SHCCFLAGS'] = SCons.Util.CLVar('$CCFLAGS')
- env['SHCFLAGS'] = SCons.Util.CLVar('$CFLAGS')
- env['SHCCCOM'] = '$SHCC -WD $SHCFLAGS $SHCCFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS -c -o$TARGET $SOURCES'
- env['CPPDEFPREFIX'] = '-D'
- env['CPPDEFSUFFIX'] = ''
- env['INCPREFIX'] = '-I'
- env['INCSUFFIX'] = ''
- env['SHOBJSUFFIX'] = '.dll'
- env['STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME'] = 0
- env['CFILESUFFIX'] = '.cpp'
-
-def exists(env):
- return findIt('bcc32', env)
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/c++.py b/Externals/scons-local/scons-local-2.0.1/SCons/Tool/c++.py
deleted file mode 100644
index e19523bebe..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/c++.py
+++ /dev/null
@@ -1,99 +0,0 @@
-"""SCons.Tool.c++
-
-Tool-specific initialization for generic Posix C++ compilers.
-
-There normally shouldn't be any need to import this module directly.
-It will usually be imported through the generic SCons.Tool.Tool()
-selection method.
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Tool/c++.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import os.path
-
-import SCons.Tool
-import SCons.Defaults
-import SCons.Util
-
-compilers = ['CC', 'c++']
-
-CXXSuffixes = ['.cpp', '.cc', '.cxx', '.c++', '.C++', '.mm']
-if SCons.Util.case_sensitive_suffixes('.c', '.C'):
- CXXSuffixes.append('.C')
-
-def iscplusplus(source):
- if not source:
- # Source might be None for unusual cases like SConf.
- return 0
- for s in source:
- if s.sources:
- ext = os.path.splitext(str(s.sources[0]))[1]
- if ext in CXXSuffixes:
- return 1
- return 0
-
-def generate(env):
- """
- Add Builders and construction variables for Visual Age C++ compilers
- to an Environment.
- """
- import SCons.Tool
- import SCons.Tool.cc
- static_obj, shared_obj = SCons.Tool.createObjBuilders(env)
-
- for suffix in CXXSuffixes:
- static_obj.add_action(suffix, SCons.Defaults.CXXAction)
- shared_obj.add_action(suffix, SCons.Defaults.ShCXXAction)
- static_obj.add_emitter(suffix, SCons.Defaults.StaticObjectEmitter)
- shared_obj.add_emitter(suffix, SCons.Defaults.SharedObjectEmitter)
-
- SCons.Tool.cc.add_common_cc_variables(env)
-
- env['CXX'] = 'c++'
- env['CXXFLAGS'] = SCons.Util.CLVar('')
- env['CXXCOM'] = '$CXX -o $TARGET -c $CXXFLAGS $CCFLAGS $_CCCOMCOM $SOURCES'
- env['SHCXX'] = '$CXX'
- env['SHCXXFLAGS'] = SCons.Util.CLVar('$CXXFLAGS')
- env['SHCXXCOM'] = '$SHCXX -o $TARGET -c $SHCXXFLAGS $SHCCFLAGS $_CCCOMCOM $SOURCES'
-
- env['CPPDEFPREFIX'] = '-D'
- env['CPPDEFSUFFIX'] = ''
- env['INCPREFIX'] = '-I'
- env['INCSUFFIX'] = ''
- env['SHOBJSUFFIX'] = '.os'
- env['OBJSUFFIX'] = '.o'
- env['STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME'] = 0
-
- env['CXXFILESUFFIX'] = '.cc'
-
-def exists(env):
- return env.Detect(compilers)
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/cc.py b/Externals/scons-local/scons-local-2.0.1/SCons/Tool/cc.py
deleted file mode 100644
index 291673f4a0..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/cc.py
+++ /dev/null
@@ -1,102 +0,0 @@
-"""SCons.Tool.cc
-
-Tool-specific initialization for generic Posix C compilers.
-
-There normally shouldn't be any need to import this module directly.
-It will usually be imported through the generic SCons.Tool.Tool()
-selection method.
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Tool/cc.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import SCons.Tool
-import SCons.Defaults
-import SCons.Util
-
-CSuffixes = ['.c', '.m']
-if not SCons.Util.case_sensitive_suffixes('.c', '.C'):
- CSuffixes.append('.C')
-
-def add_common_cc_variables(env):
- """
- Add underlying common "C compiler" variables that
- are used by multiple tools (specifically, c++).
- """
- if '_CCCOMCOM' not in env:
- env['_CCCOMCOM'] = '$CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS'
- # It's a hack to test for darwin here, but the alternative
- # of creating an applecc.py to contain this seems overkill.
- # Maybe someday the Apple platform will require more setup and
- # this logic will be moved.
- env['FRAMEWORKS'] = SCons.Util.CLVar('')
- env['FRAMEWORKPATH'] = SCons.Util.CLVar('')
- if env['PLATFORM'] == 'darwin':
- env['_CCCOMCOM'] = env['_CCCOMCOM'] + ' $_FRAMEWORKPATH'
-
- if 'CCFLAGS' not in env:
- env['CCFLAGS'] = SCons.Util.CLVar('')
-
- if 'SHCCFLAGS' not in env:
- env['SHCCFLAGS'] = SCons.Util.CLVar('$CCFLAGS')
-
-def generate(env):
- """
- Add Builders and construction variables for C compilers to an Environment.
- """
- static_obj, shared_obj = SCons.Tool.createObjBuilders(env)
-
- for suffix in CSuffixes:
- static_obj.add_action(suffix, SCons.Defaults.CAction)
- shared_obj.add_action(suffix, SCons.Defaults.ShCAction)
- static_obj.add_emitter(suffix, SCons.Defaults.StaticObjectEmitter)
- shared_obj.add_emitter(suffix, SCons.Defaults.SharedObjectEmitter)
-
- add_common_cc_variables(env)
-
- env['CC'] = 'cc'
- env['CFLAGS'] = SCons.Util.CLVar('')
- env['CCCOM'] = '$CC -o $TARGET -c $CFLAGS $CCFLAGS $_CCCOMCOM $SOURCES'
- env['SHCC'] = '$CC'
- env['SHCFLAGS'] = SCons.Util.CLVar('$CFLAGS')
- env['SHCCCOM'] = '$SHCC -o $TARGET -c $SHCFLAGS $SHCCFLAGS $_CCCOMCOM $SOURCES'
-
- env['CPPDEFPREFIX'] = '-D'
- env['CPPDEFSUFFIX'] = ''
- env['INCPREFIX'] = '-I'
- env['INCSUFFIX'] = ''
- env['SHOBJSUFFIX'] = '.os'
- env['STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME'] = 0
-
- env['CFILESUFFIX'] = '.c'
-
-def exists(env):
- return env.Detect('cc')
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/cvf.py b/Externals/scons-local/scons-local-2.0.1/SCons/Tool/cvf.py
deleted file mode 100644
index 7c2114dff8..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/cvf.py
+++ /dev/null
@@ -1,58 +0,0 @@
-"""engine.SCons.Tool.cvf
-
-Tool-specific initialization for the Compaq Visual Fortran compiler.
-
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Tool/cvf.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import fortran
-
-compilers = ['f90']
-
-def generate(env):
- """Add Builders and construction variables for compaq visual fortran to an Environment."""
-
- fortran.generate(env)
-
- env['FORTRAN'] = 'f90'
- env['FORTRANCOM'] = '$FORTRAN $FORTRANFLAGS $_FORTRANMODFLAG $_FORTRANINCFLAGS /compile_only ${SOURCES.windows} /object:${TARGET.windows}'
- env['FORTRANPPCOM'] = '$FORTRAN $FORTRANFLAGS $CPPFLAGS $_CPPDEFFLAGS $_FORTRANMODFLAG $_FORTRANINCFLAGS /compile_only ${SOURCES.windows} /object:${TARGET.windows}'
- env['SHFORTRANCOM'] = '$SHFORTRAN $SHFORTRANFLAGS $_FORTRANMODFLAG $_FORTRANINCFLAGS /compile_only ${SOURCES.windows} /object:${TARGET.windows}'
- env['SHFORTRANPPCOM'] = '$SHFORTRAN $SHFORTRANFLAGS $CPPFLAGS $_CPPDEFFLAGS $_FORTRANMODFLAG $_FORTRANINCFLAGS /compile_only ${SOURCES.windows} /object:${TARGET.windows}'
- env['OBJSUFFIX'] = '.obj'
- env['FORTRANMODDIR'] = '${TARGET.dir}'
- env['FORTRANMODDIRPREFIX'] = '/module:'
- env['FORTRANMODDIRSUFFIX'] = ''
-
-def exists(env):
- return env.Detect(compilers)
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/default.py b/Externals/scons-local/scons-local-2.0.1/SCons/Tool/default.py
deleted file mode 100644
index ddd5c34721..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/default.py
+++ /dev/null
@@ -1,50 +0,0 @@
-"""SCons.Tool.default
-
-Initialization with a default tool list.
-
-There normally shouldn't be any need to import this module directly.
-It will usually be imported through the generic SCons.Tool.Tool()
-selection method.
-
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Tool/default.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import SCons.Tool
-
-def generate(env):
- """Add default tools."""
- for t in SCons.Tool.tool_list(env['PLATFORM'], env):
- SCons.Tool.Tool(t)(env)
-
-def exists(env):
- return 1
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/dmd.py b/Externals/scons-local/scons-local-2.0.1/SCons/Tool/dmd.py
deleted file mode 100644
index 2a48b95f8a..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/dmd.py
+++ /dev/null
@@ -1,223 +0,0 @@
-"""SCons.Tool.dmd
-
-Tool-specific initialization for the Digital Mars D compiler.
-(http://digitalmars.com/d)
-
-Coded by Andy Friesen (andy@ikagames.com)
-15 November 2003
-
-There are a number of problems with this script at this point in time.
-The one that irritates me the most is the Windows linker setup. The D
-linker doesn't have a way to add lib paths on the commandline, as far
-as I can see. You have to specify paths relative to the SConscript or
-use absolute paths. To hack around it, add '#/blah'. This will link
-blah.lib from the directory where SConstruct resides.
-
-Compiler variables:
- DC - The name of the D compiler to use. Defaults to dmd or gdmd,
- whichever is found.
- DPATH - List of paths to search for import modules.
- DVERSIONS - List of version tags to enable when compiling.
- DDEBUG - List of debug tags to enable when compiling.
-
-Linker related variables:
- LIBS - List of library files to link in.
- DLINK - Name of the linker to use. Defaults to dmd or gdmd.
- DLINKFLAGS - List of linker flags.
-
-Lib tool variables:
- DLIB - Name of the lib tool to use. Defaults to lib.
- DLIBFLAGS - List of flags to pass to the lib tool.
- LIBS - Same as for the linker. (libraries to pull into the .lib)
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Tool/dmd.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import os
-
-import SCons.Action
-import SCons.Builder
-import SCons.Defaults
-import SCons.Scanner.D
-import SCons.Tool
-
-# Adapted from c++.py
-def isD(source):
- if not source:
- return 0
-
- for s in source:
- if s.sources:
- ext = os.path.splitext(str(s.sources[0]))[1]
- if ext == '.d':
- return 1
- return 0
-
-smart_link = {}
-
-smart_lib = {}
-
-def generate(env):
- global smart_link
- global smart_lib
-
- static_obj, shared_obj = SCons.Tool.createObjBuilders(env)
-
- DAction = SCons.Action.Action('$DCOM', '$DCOMSTR')
-
- static_obj.add_action('.d', DAction)
- shared_obj.add_action('.d', DAction)
- static_obj.add_emitter('.d', SCons.Defaults.StaticObjectEmitter)
- shared_obj.add_emitter('.d', SCons.Defaults.SharedObjectEmitter)
-
- dc = env.Detect(['dmd', 'gdmd'])
- env['DC'] = dc
- env['DCOM'] = '$DC $_DINCFLAGS $_DVERFLAGS $_DDEBUGFLAGS $_DFLAGS -c -of$TARGET $SOURCES'
- env['_DINCFLAGS'] = '$( ${_concat(DINCPREFIX, DPATH, DINCSUFFIX, __env__, RDirs, TARGET, SOURCE)} $)'
- env['_DVERFLAGS'] = '$( ${_concat(DVERPREFIX, DVERSIONS, DVERSUFFIX, __env__)} $)'
- env['_DDEBUGFLAGS'] = '$( ${_concat(DDEBUGPREFIX, DDEBUG, DDEBUGSUFFIX, __env__)} $)'
- env['_DFLAGS'] = '$( ${_concat(DFLAGPREFIX, DFLAGS, DFLAGSUFFIX, __env__)} $)'
-
- env['DPATH'] = ['#/']
- env['DFLAGS'] = []
- env['DVERSIONS'] = []
- env['DDEBUG'] = []
-
- if dc:
- # Add the path to the standard library.
- # This is merely for the convenience of the dependency scanner.
- dmd_path = env.WhereIs(dc)
- if dmd_path:
- x = dmd_path.rindex(dc)
- phobosDir = dmd_path[:x] + '/../src/phobos'
- if os.path.isdir(phobosDir):
- env.Append(DPATH = [phobosDir])
-
- env['DINCPREFIX'] = '-I'
- env['DINCSUFFIX'] = ''
- env['DVERPREFIX'] = '-version='
- env['DVERSUFFIX'] = ''
- env['DDEBUGPREFIX'] = '-debug='
- env['DDEBUGSUFFIX'] = ''
- env['DFLAGPREFIX'] = '-'
- env['DFLAGSUFFIX'] = ''
- env['DFILESUFFIX'] = '.d'
-
- # Need to use the Digital Mars linker/lib on windows.
- # *nix can just use GNU link.
- if env['PLATFORM'] == 'win32':
- env['DLINK'] = '$DC'
- env['DLINKCOM'] = '$DLINK -of$TARGET $SOURCES $DFLAGS $DLINKFLAGS $_DLINKLIBFLAGS'
- env['DLIB'] = 'lib'
- env['DLIBCOM'] = '$DLIB $_DLIBFLAGS -c $TARGET $SOURCES $_DLINKLIBFLAGS'
-
- env['_DLINKLIBFLAGS'] = '$( ${_concat(DLIBLINKPREFIX, LIBS, DLIBLINKSUFFIX, __env__, RDirs, TARGET, SOURCE)} $)'
- env['_DLIBFLAGS'] = '$( ${_concat(DLIBFLAGPREFIX, DLIBFLAGS, DLIBFLAGSUFFIX, __env__)} $)'
- env['DLINKFLAGS'] = []
- env['DLIBLINKPREFIX'] = ''
- env['DLIBLINKSUFFIX'] = '.lib'
- env['DLIBFLAGPREFIX'] = '-'
- env['DLIBFLAGSUFFIX'] = ''
- env['DLINKFLAGPREFIX'] = '-'
- env['DLINKFLAGSUFFIX'] = ''
-
- SCons.Tool.createStaticLibBuilder(env)
-
- # Basically, we hijack the link and ar builders with our own.
- # these builders check for the presence of D source, and swap out
- # the system's defaults for the Digital Mars tools. If there's no D
- # source, then we silently return the previous settings.
- linkcom = env.get('LINKCOM')
- try:
- env['SMART_LINKCOM'] = smart_link[linkcom]
- except KeyError:
- def _smartLink(source, target, env, for_signature,
- defaultLinker=linkcom):
- if isD(source):
- # XXX I'm not sure how to add a $DLINKCOMSTR variable
- # so that it works with this _smartLink() logic,
- # and I don't have a D compiler/linker to try it out,
- # so we'll leave it alone for now.
- return '$DLINKCOM'
- else:
- return defaultLinker
- env['SMART_LINKCOM'] = smart_link[linkcom] = _smartLink
-
- arcom = env.get('ARCOM')
- try:
- env['SMART_ARCOM'] = smart_lib[arcom]
- except KeyError:
- def _smartLib(source, target, env, for_signature,
- defaultLib=arcom):
- if isD(source):
- # XXX I'm not sure how to add a $DLIBCOMSTR variable
- # so that it works with this _smartLib() logic, and
- # I don't have a D compiler/archiver to try it out,
- # so we'll leave it alone for now.
- return '$DLIBCOM'
- else:
- return defaultLib
- env['SMART_ARCOM'] = smart_lib[arcom] = _smartLib
-
- # It is worth noting that the final space in these strings is
- # absolutely pivotal. SCons sees these as actions and not generators
- # if it is not there. (very bad)
- env['ARCOM'] = '$SMART_ARCOM '
- env['LINKCOM'] = '$SMART_LINKCOM '
- else: # assuming linux
- linkcom = env.get('LINKCOM')
- try:
- env['SMART_LINKCOM'] = smart_link[linkcom]
- except KeyError:
- def _smartLink(source, target, env, for_signature,
- defaultLinker=linkcom, dc=dc):
- if isD(source):
- try:
- libs = env['LIBS']
- except KeyError:
- libs = []
- if 'phobos' not in libs and 'gphobos' not in libs:
- if dc is 'dmd':
- env.Append(LIBS = ['phobos'])
- elif dc is 'gdmd':
- env.Append(LIBS = ['gphobos'])
- if 'pthread' not in libs:
- env.Append(LIBS = ['pthread'])
- if 'm' not in libs:
- env.Append(LIBS = ['m'])
- return defaultLinker
- env['SMART_LINKCOM'] = smart_link[linkcom] = _smartLink
-
- env['LINKCOM'] = '$SMART_LINKCOM '
-
-def exists(env):
- return env.Detect(['dmd', 'gdmd'])
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/dvi.py b/Externals/scons-local/scons-local-2.0.1/SCons/Tool/dvi.py
deleted file mode 100644
index 6fcb96dda9..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/dvi.py
+++ /dev/null
@@ -1,64 +0,0 @@
-"""SCons.Tool.dvi
-
-Common DVI Builder definition for various other Tool modules that use it.
-
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Tool/dvi.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import SCons.Builder
-import SCons.Tool
-
-DVIBuilder = None
-
-def generate(env):
- try:
- env['BUILDERS']['DVI']
- except KeyError:
- global DVIBuilder
-
- if DVIBuilder is None:
- # The suffix is hard-coded to '.dvi', not configurable via a
- # construction variable like $DVISUFFIX, because the output
- # file name is hard-coded within TeX.
- DVIBuilder = SCons.Builder.Builder(action = {},
- source_scanner = SCons.Tool.LaTeXScanner,
- suffix = '.dvi',
- emitter = {},
- source_ext_match = None)
-
- env['BUILDERS']['DVI'] = DVIBuilder
-
-def exists(env):
- # This only puts a skeleton Builder in place, so if someone
- # references this Tool directly, it's always "available."
- return 1
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/dvipdf.py b/Externals/scons-local/scons-local-2.0.1/SCons/Tool/dvipdf.py
deleted file mode 100644
index fb5627e345..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/dvipdf.py
+++ /dev/null
@@ -1,124 +0,0 @@
-"""SCons.Tool.dvipdf
-
-Tool-specific initialization for dvipdf.
-
-There normally shouldn't be any need to import this module directly.
-It will usually be imported through the generic SCons.Tool.Tool()
-selection method.
-
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-__revision__ = "src/engine/SCons/Tool/dvipdf.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import SCons.Action
-import SCons.Defaults
-import SCons.Tool.pdf
-import SCons.Tool.tex
-import SCons.Util
-
-_null = SCons.Scanner.LaTeX._null
-
-def DviPdfPsFunction(XXXDviAction, target = None, source= None, env=None):
- """A builder for DVI files that sets the TEXPICTS environment
- variable before running dvi2ps or dvipdf."""
-
- try:
- abspath = source[0].attributes.path
- except AttributeError :
- abspath = ''
-
- saved_env = SCons.Scanner.LaTeX.modify_env_var(env, 'TEXPICTS', abspath)
-
- result = XXXDviAction(target, source, env)
-
- if saved_env is _null:
- try:
- del env['ENV']['TEXPICTS']
- except KeyError:
- pass # was never set
- else:
- env['ENV']['TEXPICTS'] = saved_env
-
- return result
-
-def DviPdfFunction(target = None, source= None, env=None):
- result = DviPdfPsFunction(PDFAction,target,source,env)
- return result
-
-def DviPdfStrFunction(target = None, source= None, env=None):
- """A strfunction for dvipdf that returns the appropriate
- command string for the no_exec options."""
- if env.GetOption("no_exec"):
- result = env.subst('$DVIPDFCOM',0,target,source)
- else:
- result = ''
- return result
-
-PDFAction = None
-DVIPDFAction = None
-
-def PDFEmitter(target, source, env):
- """Strips any .aux or .log files from the input source list.
- These are created by the TeX Builder that in all likelihood was
- used to generate the .dvi file we're using as input, and we only
- care about the .dvi file.
- """
- def strip_suffixes(n):
- return not SCons.Util.splitext(str(n))[1] in ['.aux', '.log']
- source = list(filter(strip_suffixes, source))
- return (target, source)
-
-def generate(env):
- """Add Builders and construction variables for dvipdf to an Environment."""
- global PDFAction
- if PDFAction is None:
- PDFAction = SCons.Action.Action('$DVIPDFCOM', '$DVIPDFCOMSTR')
-
- global DVIPDFAction
- if DVIPDFAction is None:
- DVIPDFAction = SCons.Action.Action(DviPdfFunction, strfunction = DviPdfStrFunction)
-
- import pdf
- pdf.generate(env)
-
- bld = env['BUILDERS']['PDF']
- bld.add_action('.dvi', DVIPDFAction)
- bld.add_emitter('.dvi', PDFEmitter)
-
- env['DVIPDF'] = 'dvipdf'
- env['DVIPDFFLAGS'] = SCons.Util.CLVar('')
- env['DVIPDFCOM'] = 'cd ${TARGET.dir} && $DVIPDF $DVIPDFFLAGS ${SOURCE.file} ${TARGET.file}'
-
- # Deprecated synonym.
- env['PDFCOM'] = ['$DVIPDFCOM']
-
-def exists(env):
- return env.Detect('dvipdf')
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/dvips.py b/Externals/scons-local/scons-local-2.0.1/SCons/Tool/dvips.py
deleted file mode 100644
index de840533ab..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/dvips.py
+++ /dev/null
@@ -1,94 +0,0 @@
-"""SCons.Tool.dvips
-
-Tool-specific initialization for dvips.
-
-There normally shouldn't be any need to import this module directly.
-It will usually be imported through the generic SCons.Tool.Tool()
-selection method.
-
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Tool/dvips.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import SCons.Action
-import SCons.Builder
-import SCons.Tool.dvipdf
-import SCons.Util
-
-def DviPsFunction(target = None, source= None, env=None):
- result = SCons.Tool.dvipdf.DviPdfPsFunction(PSAction,target,source,env)
- return result
-
-def DviPsStrFunction(target = None, source= None, env=None):
- """A strfunction for dvipdf that returns the appropriate
- command string for the no_exec options."""
- if env.GetOption("no_exec"):
- result = env.subst('$PSCOM',0,target,source)
- else:
- result = ''
- return result
-
-PSAction = None
-DVIPSAction = None
-PSBuilder = None
-
-def generate(env):
- """Add Builders and construction variables for dvips to an Environment."""
- global PSAction
- if PSAction is None:
- PSAction = SCons.Action.Action('$PSCOM', '$PSCOMSTR')
-
- global DVIPSAction
- if DVIPSAction is None:
- DVIPSAction = SCons.Action.Action(DviPsFunction, strfunction = DviPsStrFunction)
-
- global PSBuilder
- if PSBuilder is None:
- PSBuilder = SCons.Builder.Builder(action = PSAction,
- prefix = '$PSPREFIX',
- suffix = '$PSSUFFIX',
- src_suffix = '.dvi',
- src_builder = 'DVI',
- single_source=True)
-
- env['BUILDERS']['PostScript'] = PSBuilder
-
- env['DVIPS'] = 'dvips'
- env['DVIPSFLAGS'] = SCons.Util.CLVar('')
- # I'm not quite sure I got the directories and filenames right for variant_dir
- # We need to be in the correct directory for the sake of latex \includegraphics eps included files.
- env['PSCOM'] = 'cd ${TARGET.dir} && $DVIPS $DVIPSFLAGS -o ${TARGET.file} ${SOURCE.file}'
- env['PSPREFIX'] = ''
- env['PSSUFFIX'] = '.ps'
-
-def exists(env):
- return env.Detect('dvips')
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/f77.py b/Externals/scons-local/scons-local-2.0.1/SCons/Tool/f77.py
deleted file mode 100644
index cc2c852298..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/f77.py
+++ /dev/null
@@ -1,62 +0,0 @@
-"""engine.SCons.Tool.f77
-
-Tool-specific initialization for the generic Posix f77 Fortran compiler.
-
-There normally shouldn't be any need to import this module directly.
-It will usually be imported through the generic SCons.Tool.Tool()
-selection method.
-
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Tool/f77.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import SCons.Defaults
-import SCons.Scanner.Fortran
-import SCons.Tool
-import SCons.Util
-from SCons.Tool.FortranCommon import add_all_to_env, add_f77_to_env
-
-compilers = ['f77']
-
-def generate(env):
- add_all_to_env(env)
- add_f77_to_env(env)
-
- fcomp = env.Detect(compilers) or 'f77'
- env['F77'] = fcomp
- env['SHF77'] = fcomp
-
- env['FORTRAN'] = fcomp
- env['SHFORTRAN'] = fcomp
-
-def exists(env):
- return env.Detect(compilers)
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/f90.py b/Externals/scons-local/scons-local-2.0.1/SCons/Tool/f90.py
deleted file mode 100644
index a2c6147201..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/f90.py
+++ /dev/null
@@ -1,62 +0,0 @@
-"""engine.SCons.Tool.f90
-
-Tool-specific initialization for the generic Posix f90 Fortran compiler.
-
-There normally shouldn't be any need to import this module directly.
-It will usually be imported through the generic SCons.Tool.Tool()
-selection method.
-
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Tool/f90.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import SCons.Defaults
-import SCons.Scanner.Fortran
-import SCons.Tool
-import SCons.Util
-from SCons.Tool.FortranCommon import add_all_to_env, add_f90_to_env
-
-compilers = ['f90']
-
-def generate(env):
- add_all_to_env(env)
- add_f90_to_env(env)
-
- fc = env.Detect(compilers) or 'f90'
- env['F90'] = fc
- env['SHF90'] = fc
-
- env['FORTRAN'] = fc
- env['SHFORTRAN'] = fc
-
-def exists(env):
- return env.Detect(compilers)
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/f95.py b/Externals/scons-local/scons-local-2.0.1/SCons/Tool/f95.py
deleted file mode 100644
index cadf23ee93..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/f95.py
+++ /dev/null
@@ -1,63 +0,0 @@
-"""engine.SCons.Tool.f95
-
-Tool-specific initialization for the generic Posix f95 Fortran compiler.
-
-There normally shouldn't be any need to import this module directly.
-It will usually be imported through the generic SCons.Tool.Tool()
-selection method.
-
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Tool/f95.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import SCons.Defaults
-import SCons.Tool
-import SCons.Util
-import fortran
-from SCons.Tool.FortranCommon import add_all_to_env, add_f95_to_env
-
-compilers = ['f95']
-
-def generate(env):
- add_all_to_env(env)
- add_f95_to_env(env)
-
- fcomp = env.Detect(compilers) or 'f95'
- env['F95'] = fcomp
- env['SHF95'] = fcomp
-
- env['FORTRAN'] = fcomp
- env['SHFORTRAN'] = fcomp
-
-
-def exists(env):
- return env.Detect(compilers)
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/filesystem.py b/Externals/scons-local/scons-local-2.0.1/SCons/Tool/filesystem.py
deleted file mode 100644
index 290d8d5db3..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/filesystem.py
+++ /dev/null
@@ -1,98 +0,0 @@
-"""SCons.Tool.filesystem
-
-Tool-specific initialization for the filesystem tools.
-
-There normally shouldn't be any need to import this module directly.
-It will usually be imported through the generic SCons.Tool.Tool()
-selection method.
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Tool/filesystem.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import SCons
-from SCons.Tool.install import copyFunc
-
-copyToBuilder, copyAsBuilder = None, None
-
-def copyto_emitter(target, source, env):
- """ changes the path of the source to be under the target (which
- are assumed to be directories.
- """
- n_target = []
-
- for t in target:
- n_target = n_target + [t.File( str( s ) ) for s in source]
-
- return (n_target, source)
-
-def copy_action_func(target, source, env):
- assert( len(target) == len(source) ), "\ntarget: %s\nsource: %s" %(list(map(str, target)),list(map(str, source)))
-
- for t, s in zip(target, source):
- if copyFunc(t.get_path(), s.get_path(), env):
- return 1
-
- return 0
-
-def copy_action_str(target, source, env):
- return env.subst_target_source(env['COPYSTR'], 0, target, source)
-
-copy_action = SCons.Action.Action( copy_action_func, copy_action_str )
-
-def generate(env):
- try:
- env['BUILDERS']['CopyTo']
- env['BUILDERS']['CopyAs']
- except KeyError, e:
- global copyToBuilder
- if copyToBuilder is None:
- copyToBuilder = SCons.Builder.Builder(
- action = copy_action,
- target_factory = env.fs.Dir,
- source_factory = env.fs.Entry,
- multi = 1,
- emitter = [ copyto_emitter, ] )
-
- global copyAsBuilder
- if copyAsBuilder is None:
- copyAsBuilder = SCons.Builder.Builder(
- action = copy_action,
- target_factory = env.fs.Entry,
- source_factory = env.fs.Entry )
-
- env['BUILDERS']['CopyTo'] = copyToBuilder
- env['BUILDERS']['CopyAs'] = copyAsBuilder
-
- env['COPYSTR'] = 'Copy file(s): "$SOURCES" to "$TARGETS"'
-
-def exists(env):
- return 1
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/fortran.py b/Externals/scons-local/scons-local-2.0.1/SCons/Tool/fortran.py
deleted file mode 100644
index ae0960adfb..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/fortran.py
+++ /dev/null
@@ -1,62 +0,0 @@
-"""SCons.Tool.fortran
-
-Tool-specific initialization for a generic Posix f77/f90 Fortran compiler.
-
-There normally shouldn't be any need to import this module directly.
-It will usually be imported through the generic SCons.Tool.Tool()
-selection method.
-
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Tool/fortran.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import re
-
-import SCons.Action
-import SCons.Defaults
-import SCons.Scanner.Fortran
-import SCons.Tool
-import SCons.Util
-from SCons.Tool.FortranCommon import add_all_to_env, add_fortran_to_env
-
-compilers = ['f95', 'f90', 'f77']
-
-def generate(env):
- add_all_to_env(env)
- add_fortran_to_env(env)
-
- fc = env.Detect(compilers) or 'f77'
- env['SHFORTRAN'] = fc
- env['FORTRAN'] = fc
-
-def exists(env):
- return env.Detect(compilers)
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/g++.py b/Externals/scons-local/scons-local-2.0.1/SCons/Tool/g++.py
deleted file mode 100644
index dcd24064b6..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/g++.py
+++ /dev/null
@@ -1,90 +0,0 @@
-"""SCons.Tool.g++
-
-Tool-specific initialization for g++.
-
-There normally shouldn't be any need to import this module directly.
-It will usually be imported through the generic SCons.Tool.Tool()
-selection method.
-
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Tool/g++.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import os.path
-import re
-import subprocess
-
-import SCons.Tool
-import SCons.Util
-
-cplusplus = __import__('c++', globals(), locals(), [])
-
-compilers = ['g++']
-
-def generate(env):
- """Add Builders and construction variables for g++ to an Environment."""
- static_obj, shared_obj = SCons.Tool.createObjBuilders(env)
-
- cplusplus.generate(env)
-
- env['CXX'] = env.Detect(compilers)
-
- # platform specific settings
- if env['PLATFORM'] == 'aix':
- env['SHCXXFLAGS'] = SCons.Util.CLVar('$CXXFLAGS -mminimal-toc')
- env['STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME'] = 1
- env['SHOBJSUFFIX'] = '$OBJSUFFIX'
- elif env['PLATFORM'] == 'hpux':
- env['SHOBJSUFFIX'] = '.pic.o'
- elif env['PLATFORM'] == 'sunos':
- env['SHOBJSUFFIX'] = '.pic.o'
- # determine compiler version
- if env['CXX']:
- #pipe = SCons.Action._subproc(env, [env['CXX'], '-dumpversion'],
- pipe = SCons.Action._subproc(env, [env['CXX'], '--version'],
- stdin = 'devnull',
- stderr = 'devnull',
- stdout = subprocess.PIPE)
- if pipe.wait() != 0: return
- # -dumpversion was added in GCC 3.0. As long as we're supporting
- # GCC versions older than that, we should use --version and a
- # regular expression.
- #line = pipe.stdout.read().strip()
- #if line:
- # env['CXXVERSION'] = line
- line = pipe.stdout.readline()
- match = re.search(r'[0-9]+(\.[0-9]+)+', line)
- if match:
- env['CXXVERSION'] = match.group(0)
-
-def exists(env):
- return env.Detect(compilers)
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/g77.py b/Externals/scons-local/scons-local-2.0.1/SCons/Tool/g77.py
deleted file mode 100644
index f5bea8bf61..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/g77.py
+++ /dev/null
@@ -1,73 +0,0 @@
-"""engine.SCons.Tool.g77
-
-Tool-specific initialization for g77.
-
-There normally shouldn't be any need to import this module directly.
-It will usually be imported through the generic SCons.Tool.Tool()
-selection method.
-
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Tool/g77.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import SCons.Util
-from SCons.Tool.FortranCommon import add_all_to_env, add_f77_to_env
-
-compilers = ['g77', 'f77']
-
-def generate(env):
- """Add Builders and construction variables for g77 to an Environment."""
- add_all_to_env(env)
- add_f77_to_env(env)
-
- fcomp = env.Detect(compilers) or 'g77'
- if env['PLATFORM'] in ['cygwin', 'win32']:
- env['SHFORTRANFLAGS'] = SCons.Util.CLVar('$FORTRANFLAGS')
- env['SHF77FLAGS'] = SCons.Util.CLVar('$F77FLAGS')
- else:
- env['SHFORTRANFLAGS'] = SCons.Util.CLVar('$FORTRANFLAGS -fPIC')
- env['SHF77FLAGS'] = SCons.Util.CLVar('$F77FLAGS -fPIC')
-
- env['FORTRAN'] = fcomp
- env['SHFORTRAN'] = '$FORTRAN'
-
- env['F77'] = fcomp
- env['SHF77'] = '$F77'
-
- env['INCFORTRANPREFIX'] = "-I"
- env['INCFORTRANSUFFIX'] = ""
-
- env['INCF77PREFIX'] = "-I"
- env['INCF77SUFFIX'] = ""
-
-def exists(env):
- return env.Detect(compilers)
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/gas.py b/Externals/scons-local/scons-local-2.0.1/SCons/Tool/gas.py
deleted file mode 100644
index 637a111cc9..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/gas.py
+++ /dev/null
@@ -1,53 +0,0 @@
-"""SCons.Tool.gas
-
-Tool-specific initialization for as, the Gnu assembler.
-
-There normally shouldn't be any need to import this module directly.
-It will usually be imported through the generic SCons.Tool.Tool()
-selection method.
-
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Tool/gas.py 5134 2010/08/16 23:02:40 bdeegan"
-
-as_module = __import__('as', globals(), locals(), [])
-
-assemblers = ['as', 'gas']
-
-def generate(env):
- """Add Builders and construction variables for as to an Environment."""
- as_module.generate(env)
-
- env['AS'] = env.Detect(assemblers) or 'as'
-
-def exists(env):
- return env.Detect(assemblers)
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/gcc.py b/Externals/scons-local/scons-local-2.0.1/SCons/Tool/gcc.py
deleted file mode 100644
index c93c05f31d..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/gcc.py
+++ /dev/null
@@ -1,80 +0,0 @@
-"""SCons.Tool.gcc
-
-Tool-specific initialization for gcc.
-
-There normally shouldn't be any need to import this module directly.
-It will usually be imported through the generic SCons.Tool.Tool()
-selection method.
-
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Tool/gcc.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import cc
-import os
-import re
-import subprocess
-
-import SCons.Util
-
-compilers = ['gcc', 'cc']
-
-def generate(env):
- """Add Builders and construction variables for gcc to an Environment."""
- cc.generate(env)
-
- env['CC'] = env.Detect(compilers) or 'gcc'
- if env['PLATFORM'] in ['cygwin', 'win32']:
- env['SHCCFLAGS'] = SCons.Util.CLVar('$CCFLAGS')
- else:
- env['SHCCFLAGS'] = SCons.Util.CLVar('$CCFLAGS -fPIC')
- # determine compiler version
- if env['CC']:
- #pipe = SCons.Action._subproc(env, [env['CC'], '-dumpversion'],
- pipe = SCons.Action._subproc(env, [env['CC'], '--version'],
- stdin = 'devnull',
- stderr = 'devnull',
- stdout = subprocess.PIPE)
- if pipe.wait() != 0: return
- # -dumpversion was added in GCC 3.0. As long as we're supporting
- # GCC versions older than that, we should use --version and a
- # regular expression.
- #line = pipe.stdout.read().strip()
- #if line:
- # env['CCVERSION'] = line
- line = pipe.stdout.readline()
- match = re.search(r'[0-9]+(\.[0-9]+)+', line)
- if match:
- env['CCVERSION'] = match.group(0)
-
-def exists(env):
- return env.Detect(compilers)
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/gfortran.py b/Externals/scons-local/scons-local-2.0.1/SCons/Tool/gfortran.py
deleted file mode 100644
index ed522f4205..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/gfortran.py
+++ /dev/null
@@ -1,64 +0,0 @@
-"""SCons.Tool.gfortran
-
-Tool-specific initialization for gfortran, the GNU Fortran 95/Fortran
-2003 compiler.
-
-There normally shouldn't be any need to import this module directly.
-It will usually be imported through the generic SCons.Tool.Tool()
-selection method.
-
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Tool/gfortran.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import SCons.Util
-
-import fortran
-
-def generate(env):
- """Add Builders and construction variables for gfortran to an
- Environment."""
- fortran.generate(env)
-
- for dialect in ['F77', 'F90', 'FORTRAN', 'F95']:
- env['%s' % dialect] = 'gfortran'
- env['SH%s' % dialect] = '$%s' % dialect
- if env['PLATFORM'] in ['cygwin', 'win32']:
- env['SH%sFLAGS' % dialect] = SCons.Util.CLVar('$%sFLAGS' % dialect)
- else:
- env['SH%sFLAGS' % dialect] = SCons.Util.CLVar('$%sFLAGS -fPIC' % dialect)
-
- env['INC%sPREFIX' % dialect] = "-I"
- env['INC%sSUFFIX' % dialect] = ""
-
-def exists(env):
- return env.Detect('gfortran')
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/gnulink.py b/Externals/scons-local/scons-local-2.0.1/SCons/Tool/gnulink.py
deleted file mode 100644
index 1204535223..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/gnulink.py
+++ /dev/null
@@ -1,63 +0,0 @@
-"""SCons.Tool.gnulink
-
-Tool-specific initialization for the gnu linker.
-
-There normally shouldn't be any need to import this module directly.
-It will usually be imported through the generic SCons.Tool.Tool()
-selection method.
-
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Tool/gnulink.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import SCons.Util
-
-import link
-
-linkers = ['g++', 'gcc']
-
-def generate(env):
- """Add Builders and construction variables for gnulink to an Environment."""
- link.generate(env)
-
- if env['PLATFORM'] == 'hpux':
- env['SHLINKFLAGS'] = SCons.Util.CLVar('$LINKFLAGS -shared -fPIC')
-
- # __RPATH is set to $_RPATH in the platform specification if that
- # platform supports it.
- env.Append(LINKFLAGS=['$__RPATH'])
- env['RPATHPREFIX'] = '-Wl,-rpath='
- env['RPATHSUFFIX'] = ''
- env['_RPATH'] = '${_concat(RPATHPREFIX, RPATH, RPATHSUFFIX, __env__)}'
-
-def exists(env):
- return env.Detect(linkers)
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/gs.py b/Externals/scons-local/scons-local-2.0.1/SCons/Tool/gs.py
deleted file mode 100644
index ac0247f1ac..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/gs.py
+++ /dev/null
@@ -1,81 +0,0 @@
-"""SCons.Tool.gs
-
-Tool-specific initialization for Ghostscript.
-
-There normally shouldn't be any need to import this module directly.
-It will usually be imported through the generic SCons.Tool.Tool()
-selection method.
-
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Tool/gs.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import SCons.Action
-import SCons.Platform
-import SCons.Util
-
-# Ghostscript goes by different names on different platforms...
-platform = SCons.Platform.platform_default()
-
-if platform == 'os2':
- gs = 'gsos2'
-elif platform == 'win32':
- gs = 'gswin32c'
-else:
- gs = 'gs'
-
-GhostscriptAction = None
-
-def generate(env):
- """Add Builders and construction variables for Ghostscript to an
- Environment."""
-
- global GhostscriptAction
- if GhostscriptAction is None:
- GhostscriptAction = SCons.Action.Action('$GSCOM', '$GSCOMSTR')
-
- import pdf
- pdf.generate(env)
-
- bld = env['BUILDERS']['PDF']
- bld.add_action('.ps', GhostscriptAction)
-
- env['GS'] = gs
- env['GSFLAGS'] = SCons.Util.CLVar('-dNOPAUSE -dBATCH -sDEVICE=pdfwrite')
- env['GSCOM'] = '$GS $GSFLAGS -sOutputFile=$TARGET $SOURCES'
-
-
-def exists(env):
- if 'PS2PDF' in env:
- return env.Detect(env['PS2PDF'])
- else:
- return env.Detect(gs) or SCons.Util.WhereIs(gs)
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/hpc++.py b/Externals/scons-local/scons-local-2.0.1/SCons/Tool/hpc++.py
deleted file mode 100644
index d34f6008fe..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/hpc++.py
+++ /dev/null
@@ -1,84 +0,0 @@
-"""SCons.Tool.hpc++
-
-Tool-specific initialization for c++ on HP/UX.
-
-There normally shouldn't be any need to import this module directly.
-It will usually be imported through the generic SCons.Tool.Tool()
-selection method.
-
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Tool/hpc++.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import os.path
-
-import SCons.Util
-
-cplusplus = __import__('c++', globals(), locals(), [])
-
-acc = None
-
-# search for the acc compiler and linker front end
-
-try:
- dirs = os.listdir('/opt')
-except (IOError, OSError):
- # Not being able to read the directory because it doesn't exist
- # (IOError) or isn't readable (OSError) is okay.
- dirs = []
-
-for dir in dirs:
- cc = '/opt/' + dir + '/bin/aCC'
- if os.path.exists(cc):
- acc = cc
- break
-
-
-def generate(env):
- """Add Builders and construction variables for g++ to an Environment."""
- cplusplus.generate(env)
-
- if acc:
- env['CXX'] = acc or 'aCC'
- env['SHCXXFLAGS'] = SCons.Util.CLVar('$CXXFLAGS +Z')
- # determine version of aCC
- line = os.popen(acc + ' -V 2>&1').readline().rstrip()
- if line.find('aCC: HP ANSI C++') == 0:
- env['CXXVERSION'] = line.split()[-1]
-
- if env['PLATFORM'] == 'cygwin':
- env['SHCXXFLAGS'] = SCons.Util.CLVar('$CXXFLAGS')
- else:
- env['SHCXXFLAGS'] = SCons.Util.CLVar('$CXXFLAGS +Z')
-
-def exists(env):
- return acc
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/hpcc.py b/Externals/scons-local/scons-local-2.0.1/SCons/Tool/hpcc.py
deleted file mode 100644
index 1503c5722f..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/hpcc.py
+++ /dev/null
@@ -1,53 +0,0 @@
-"""SCons.Tool.hpcc
-
-Tool-specific initialization for HP aCC and cc.
-
-There normally shouldn't be any need to import this module directly.
-It will usually be imported through the generic SCons.Tool.Tool()
-selection method.
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Tool/hpcc.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import SCons.Util
-
-import cc
-
-def generate(env):
- """Add Builders and construction variables for aCC & cc to an Environment."""
- cc.generate(env)
-
- env['CXX'] = 'aCC'
- env['SHCCFLAGS'] = SCons.Util.CLVar('$CCFLAGS +Z')
-
-def exists(env):
- return env.Detect('aCC')
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/hplink.py b/Externals/scons-local/scons-local-2.0.1/SCons/Tool/hplink.py
deleted file mode 100644
index db5ff00707..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/hplink.py
+++ /dev/null
@@ -1,77 +0,0 @@
-"""SCons.Tool.hplink
-
-Tool-specific initialization for the HP linker.
-
-There normally shouldn't be any need to import this module directly.
-It will usually be imported through the generic SCons.Tool.Tool()
-selection method.
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Tool/hplink.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import os
-import os.path
-
-import SCons.Util
-
-import link
-
-ccLinker = None
-
-# search for the acc compiler and linker front end
-
-try:
- dirs = os.listdir('/opt')
-except (IOError, OSError):
- # Not being able to read the directory because it doesn't exist
- # (IOError) or isn't readable (OSError) is okay.
- dirs = []
-
-for dir in dirs:
- linker = '/opt/' + dir + '/bin/aCC'
- if os.path.exists(linker):
- ccLinker = linker
- break
-
-def generate(env):
- """
- Add Builders and construction variables for Visual Age linker to
- an Environment.
- """
- link.generate(env)
-
- env['LINKFLAGS'] = SCons.Util.CLVar('-Wl,+s -Wl,+vnocompatwarnings')
- env['SHLINKFLAGS'] = SCons.Util.CLVar('$LINKFLAGS -b')
- env['SHLIBSUFFIX'] = '.sl'
-
-def exists(env):
- return ccLinker
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/icc.py b/Externals/scons-local/scons-local-2.0.1/SCons/Tool/icc.py
deleted file mode 100644
index 0accbf6f1e..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/icc.py
+++ /dev/null
@@ -1,59 +0,0 @@
-"""engine.SCons.Tool.icc
-
-Tool-specific initialization for the OS/2 icc compiler.
-
-There normally shouldn't be any need to import this module directly.
-It will usually be imported through the generic SCons.Tool.Tool()
-selection method.
-
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Tool/icc.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import cc
-
-def generate(env):
- """Add Builders and construction variables for the OS/2 to an Environment."""
- cc.generate(env)
-
- env['CC'] = 'icc'
- env['CCCOM'] = '$CC $CFLAGS $CCFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS /c $SOURCES /Fo$TARGET'
- env['CXXCOM'] = '$CXX $CXXFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS /c $SOURCES /Fo$TARGET'
- env['CPPDEFPREFIX'] = '/D'
- env['CPPDEFSUFFIX'] = ''
- env['INCPREFIX'] = '/I'
- env['INCSUFFIX'] = ''
- env['CFILESUFFIX'] = '.c'
- env['CXXFILESUFFIX'] = '.cc'
-
-def exists(env):
- return env.Detect('icc')
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/icl.py b/Externals/scons-local/scons-local-2.0.1/SCons/Tool/icl.py
deleted file mode 100644
index ded400d0d2..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/icl.py
+++ /dev/null
@@ -1,52 +0,0 @@
-"""engine.SCons.Tool.icl
-
-Tool-specific initialization for the Intel C/C++ compiler.
-
-There normally shouldn't be any need to import this module directly.
-It will usually be imported through the generic SCons.Tool.Tool()
-selection method.
-
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Tool/icl.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import SCons.Tool.intelc
-
-# This has been completely superceded by intelc.py, which can
-# handle both Windows and Linux versions.
-
-def generate(*args, **kw):
- """Add Builders and construction variables for icl to an Environment."""
- return SCons.Tool.intelc.generate(*args, **kw)
-
-def exists(*args, **kw):
- return SCons.Tool.intelc.exists(*args, **kw)
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/ifl.py b/Externals/scons-local/scons-local-2.0.1/SCons/Tool/ifl.py
deleted file mode 100644
index fabf8644c9..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/ifl.py
+++ /dev/null
@@ -1,72 +0,0 @@
-"""SCons.Tool.ifl
-
-Tool-specific initialization for the Intel Fortran compiler.
-
-There normally shouldn't be any need to import this module directly.
-It will usually be imported through the generic SCons.Tool.Tool()
-selection method.
-
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Tool/ifl.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import SCons.Defaults
-from SCons.Scanner.Fortran import FortranScan
-from FortranCommon import add_all_to_env
-
-def generate(env):
- """Add Builders and construction variables for ifl to an Environment."""
- fscan = FortranScan("FORTRANPATH")
- SCons.Tool.SourceFileScanner.add_scanner('.i', fscan)
- SCons.Tool.SourceFileScanner.add_scanner('.i90', fscan)
-
- if 'FORTRANFILESUFFIXES' not in env:
- env['FORTRANFILESUFFIXES'] = ['.i']
- else:
- env['FORTRANFILESUFFIXES'].append('.i')
-
- if 'F90FILESUFFIXES' not in env:
- env['F90FILESUFFIXES'] = ['.i90']
- else:
- env['F90FILESUFFIXES'].append('.i90')
-
- add_all_to_env(env)
-
- env['FORTRAN'] = 'ifl'
- env['SHFORTRAN'] = '$FORTRAN'
- env['FORTRANCOM'] = '$FORTRAN $FORTRANFLAGS $_FORTRANINCFLAGS /c $SOURCES /Fo$TARGET'
- env['FORTRANPPCOM'] = '$FORTRAN $FORTRANFLAGS $CPPFLAGS $_CPPDEFFLAGS $_FORTRANINCFLAGS /c $SOURCES /Fo$TARGET'
- env['SHFORTRANCOM'] = '$SHFORTRAN $SHFORTRANFLAGS $_FORTRANINCFLAGS /c $SOURCES /Fo$TARGET'
- env['SHFORTRANPPCOM'] = '$SHFORTRAN $SHFORTRANFLAGS $CPPFLAGS $_CPPDEFFLAGS $_FORTRANINCFLAGS /c $SOURCES /Fo$TARGET'
-
-def exists(env):
- return env.Detect('ifl')
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/ifort.py b/Externals/scons-local/scons-local-2.0.1/SCons/Tool/ifort.py
deleted file mode 100644
index 7d50c5aa03..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/ifort.py
+++ /dev/null
@@ -1,88 +0,0 @@
-"""SCons.Tool.ifort
-
-Tool-specific initialization for newer versions of the Intel Fortran Compiler
-for Linux/Windows (and possibly Mac OS X).
-
-There normally shouldn't be any need to import this module directly.
-It will usually be imported through the generic SCons.Tool.Tool()
-selection method.
-
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Tool/ifort.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import SCons.Defaults
-from SCons.Scanner.Fortran import FortranScan
-from FortranCommon import add_all_to_env
-
-def generate(env):
- """Add Builders and construction variables for ifort to an Environment."""
- # ifort supports Fortran 90 and Fortran 95
- # Additionally, ifort recognizes more file extensions.
- fscan = FortranScan("FORTRANPATH")
- SCons.Tool.SourceFileScanner.add_scanner('.i', fscan)
- SCons.Tool.SourceFileScanner.add_scanner('.i90', fscan)
-
- if 'FORTRANFILESUFFIXES' not in env:
- env['FORTRANFILESUFFIXES'] = ['.i']
- else:
- env['FORTRANFILESUFFIXES'].append('.i')
-
- if 'F90FILESUFFIXES' not in env:
- env['F90FILESUFFIXES'] = ['.i90']
- else:
- env['F90FILESUFFIXES'].append('.i90')
-
- add_all_to_env(env)
-
- fc = 'ifort'
-
- for dialect in ['F77', 'F90', 'FORTRAN', 'F95']:
- env['%s' % dialect] = fc
- env['SH%s' % dialect] = '$%s' % dialect
- if env['PLATFORM'] == 'posix':
- env['SH%sFLAGS' % dialect] = SCons.Util.CLVar('$%sFLAGS -fPIC' % dialect)
-
- if env['PLATFORM'] == 'win32':
- # On Windows, the ifort compiler specifies the object on the
- # command line with -object:, not -o. Massage the necessary
- # command-line construction variables.
- for dialect in ['F77', 'F90', 'FORTRAN', 'F95']:
- for var in ['%sCOM' % dialect, '%sPPCOM' % dialect,
- 'SH%sCOM' % dialect, 'SH%sPPCOM' % dialect]:
- env[var] = env[var].replace('-o $TARGET', '-object:$TARGET')
- env['FORTRANMODDIRPREFIX'] = "/module:"
- else:
- env['FORTRANMODDIRPREFIX'] = "-module "
-
-def exists(env):
- return env.Detect('ifort')
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/ilink.py b/Externals/scons-local/scons-local-2.0.1/SCons/Tool/ilink.py
deleted file mode 100644
index 7a255a73f8..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/ilink.py
+++ /dev/null
@@ -1,59 +0,0 @@
-"""SCons.Tool.ilink
-
-Tool-specific initialization for the OS/2 ilink linker.
-
-There normally shouldn't be any need to import this module directly.
-It will usually be imported through the generic SCons.Tool.Tool()
-selection method.
-
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Tool/ilink.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import SCons.Defaults
-import SCons.Tool
-import SCons.Util
-
-def generate(env):
- """Add Builders and construction variables for ilink to an Environment."""
- SCons.Tool.createProgBuilder(env)
-
- env['LINK'] = 'ilink'
- env['LINKFLAGS'] = SCons.Util.CLVar('')
- env['LINKCOM'] = '$LINK $LINKFLAGS /O:$TARGET $SOURCES $_LIBDIRFLAGS $_LIBFLAGS'
- env['LIBDIRPREFIX']='/LIBPATH:'
- env['LIBDIRSUFFIX']=''
- env['LIBLINKPREFIX']=''
- env['LIBLINKSUFFIX']='$LIBSUFFIX'
-
-def exists(env):
- return env.Detect('ilink')
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/ilink32.py b/Externals/scons-local/scons-local-2.0.1/SCons/Tool/ilink32.py
deleted file mode 100644
index 1af9af1070..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/ilink32.py
+++ /dev/null
@@ -1,60 +0,0 @@
-"""SCons.Tool.ilink32
-
-XXX
-
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Tool/ilink32.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import SCons.Tool
-import SCons.Tool.bcc32
-import SCons.Util
-
-def generate(env):
- """Add Builders and construction variables for Borland ilink to an
- Environment."""
- SCons.Tool.createSharedLibBuilder(env)
- SCons.Tool.createProgBuilder(env)
-
- env['LINK'] = '$CC'
- env['LINKFLAGS'] = SCons.Util.CLVar('')
- env['LINKCOM'] = '$LINK -q $LINKFLAGS -e$TARGET $SOURCES $LIBS'
- env['LIBDIRPREFIX']=''
- env['LIBDIRSUFFIX']=''
- env['LIBLINKPREFIX']=''
- env['LIBLINKSUFFIX']='$LIBSUFFIX'
-
-
-def exists(env):
- # Uses bcc32 to do linking as it generally knows where the standard
- # LIBS are and set up the linking correctly
- return SCons.Tool.bcc32.findIt('bcc32', env)
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/install.py b/Externals/scons-local/scons-local-2.0.1/SCons/Tool/install.py
deleted file mode 100644
index 9c04710092..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/install.py
+++ /dev/null
@@ -1,229 +0,0 @@
-"""SCons.Tool.install
-
-Tool-specific initialization for the install tool.
-
-There normally shouldn't be any need to import this module directly.
-It will usually be imported through the generic SCons.Tool.Tool()
-selection method.
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Tool/install.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import os
-import shutil
-import stat
-
-import SCons.Action
-from SCons.Util import make_path_relative
-
-#
-# We keep track of *all* installed files.
-_INSTALLED_FILES = []
-_UNIQUE_INSTALLED_FILES = None
-
-#
-# Functions doing the actual work of the Install Builder.
-#
-def copyFunc(dest, source, env):
- """Install a source file or directory into a destination by copying,
- (including copying permission/mode bits)."""
-
- if os.path.isdir(source):
- if os.path.exists(dest):
- if not os.path.isdir(dest):
- raise SCons.Errors.UserError("cannot overwrite non-directory `%s' with a directory `%s'" % (str(dest), str(source)))
- else:
- parent = os.path.split(dest)[0]
- if not os.path.exists(parent):
- os.makedirs(parent)
- shutil.copytree(source, dest)
- else:
- shutil.copy2(source, dest)
- st = os.stat(source)
- os.chmod(dest, stat.S_IMODE(st[stat.ST_MODE]) | stat.S_IWRITE)
-
- return 0
-
-def installFunc(target, source, env):
- """Install a source file into a target using the function specified
- as the INSTALL construction variable."""
- try:
- install = env['INSTALL']
- except KeyError:
- raise SCons.Errors.UserError('Missing INSTALL construction variable.')
-
- assert len(target)==len(source), \
- "Installing source %s into target %s: target and source lists must have same length."%(list(map(str, source)), list(map(str, target)))
- for t,s in zip(target,source):
- if install(t.get_path(),s.get_path(),env):
- return 1
-
- return 0
-
-def stringFunc(target, source, env):
- installstr = env.get('INSTALLSTR')
- if installstr:
- return env.subst_target_source(installstr, 0, target, source)
- target = str(target[0])
- source = str(source[0])
- if os.path.isdir(source):
- type = 'directory'
- else:
- type = 'file'
- return 'Install %s: "%s" as "%s"' % (type, source, target)
-
-#
-# Emitter functions
-#
-def add_targets_to_INSTALLED_FILES(target, source, env):
- """ an emitter that adds all target files to the list stored in the
- _INSTALLED_FILES global variable. This way all installed files of one
- scons call will be collected.
- """
- global _INSTALLED_FILES, _UNIQUE_INSTALLED_FILES
- _INSTALLED_FILES.extend(target)
- _UNIQUE_INSTALLED_FILES = None
- return (target, source)
-
-class DESTDIR_factory(object):
- """ a node factory, where all files will be relative to the dir supplied
- in the constructor.
- """
- def __init__(self, env, dir):
- self.env = env
- self.dir = env.arg2nodes( dir, env.fs.Dir )[0]
-
- def Entry(self, name):
- name = make_path_relative(name)
- return self.dir.Entry(name)
-
- def Dir(self, name):
- name = make_path_relative(name)
- return self.dir.Dir(name)
-
-#
-# The Builder Definition
-#
-install_action = SCons.Action.Action(installFunc, stringFunc)
-installas_action = SCons.Action.Action(installFunc, stringFunc)
-
-BaseInstallBuilder = None
-
-def InstallBuilderWrapper(env, target=None, source=None, dir=None, **kw):
- if target and dir:
- import SCons.Errors
- raise SCons.Errors.UserError("Both target and dir defined for Install(), only one may be defined.")
- if not dir:
- dir=target
-
- import SCons.Script
- install_sandbox = SCons.Script.GetOption('install_sandbox')
- if install_sandbox:
- target_factory = DESTDIR_factory(env, install_sandbox)
- else:
- target_factory = env.fs
-
- try:
- dnodes = env.arg2nodes(dir, target_factory.Dir)
- except TypeError:
- raise SCons.Errors.UserError("Target `%s' of Install() is a file, but should be a directory. Perhaps you have the Install() arguments backwards?" % str(dir))
- sources = env.arg2nodes(source, env.fs.Entry)
- tgt = []
- for dnode in dnodes:
- for src in sources:
- # Prepend './' so the lookup doesn't interpret an initial
- # '#' on the file name portion as meaning the Node should
- # be relative to the top-level SConstruct directory.
- target = env.fs.Entry('.'+os.sep+src.name, dnode)
- #tgt.extend(BaseInstallBuilder(env, target, src, **kw))
- tgt.extend(BaseInstallBuilder(env, target, src, **kw))
- return tgt
-
-def InstallAsBuilderWrapper(env, target=None, source=None, **kw):
- result = []
- for src, tgt in map(lambda x, y: (x, y), source, target):
- #result.extend(BaseInstallBuilder(env, tgt, src, **kw))
- result.extend(BaseInstallBuilder(env, tgt, src, **kw))
- return result
-
-added = None
-
-def generate(env):
-
- from SCons.Script import AddOption, GetOption
- global added
- if not added:
- added = 1
- AddOption('--install-sandbox',
- dest='install_sandbox',
- type="string",
- action="store",
- help='A directory under which all installed files will be placed.')
-
- global BaseInstallBuilder
- if BaseInstallBuilder is None:
- install_sandbox = GetOption('install_sandbox')
- if install_sandbox:
- target_factory = DESTDIR_factory(env, install_sandbox)
- else:
- target_factory = env.fs
-
- BaseInstallBuilder = SCons.Builder.Builder(
- action = install_action,
- target_factory = target_factory.Entry,
- source_factory = env.fs.Entry,
- multi = 1,
- emitter = [ add_targets_to_INSTALLED_FILES, ],
- name = 'InstallBuilder')
-
- env['BUILDERS']['_InternalInstall'] = InstallBuilderWrapper
- env['BUILDERS']['_InternalInstallAs'] = InstallAsBuilderWrapper
-
- # We'd like to initialize this doing something like the following,
- # but there isn't yet support for a ${SOURCE.type} expansion that
- # will print "file" or "directory" depending on what's being
- # installed. For now we punt by not initializing it, and letting
- # the stringFunc() that we put in the action fall back to the
- # hand-crafted default string if it's not set.
- #
- #try:
- # env['INSTALLSTR']
- #except KeyError:
- # env['INSTALLSTR'] = 'Install ${SOURCE.type}: "$SOURCES" as "$TARGETS"'
-
- try:
- env['INSTALL']
- except KeyError:
- env['INSTALL'] = copyFunc
-
-def exists(env):
- return 1
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/intelc.py b/Externals/scons-local/scons-local-2.0.1/SCons/Tool/intelc.py
deleted file mode 100644
index 08f97c076c..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/intelc.py
+++ /dev/null
@@ -1,482 +0,0 @@
-"""SCons.Tool.icl
-
-Tool-specific initialization for the Intel C/C++ compiler.
-Supports Linux and Windows compilers, v7 and up.
-
-There normally shouldn't be any need to import this module directly.
-It will usually be imported through the generic SCons.Tool.Tool()
-selection method.
-
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-from __future__ import division
-
-__revision__ = "src/engine/SCons/Tool/intelc.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import math, sys, os.path, glob, string, re
-
-is_windows = sys.platform == 'win32'
-is_win64 = is_windows and (os.environ['PROCESSOR_ARCHITECTURE'] == 'AMD64' or
- ('PROCESSOR_ARCHITEW6432' in os.environ and
- os.environ['PROCESSOR_ARCHITEW6432'] == 'AMD64'))
-is_linux = sys.platform == 'linux2'
-is_mac = sys.platform == 'darwin'
-
-if is_windows:
- import SCons.Tool.msvc
-elif is_linux:
- import SCons.Tool.gcc
-elif is_mac:
- import SCons.Tool.gcc
-import SCons.Util
-import SCons.Warnings
-
-# Exceptions for this tool
-class IntelCError(SCons.Errors.InternalError):
- pass
-class MissingRegistryError(IntelCError): # missing registry entry
- pass
-class MissingDirError(IntelCError): # dir not found
- pass
-class NoRegistryModuleError(IntelCError): # can't read registry at all
- pass
-
-def uniquify(s):
- """Return a sequence containing only one copy of each unique element from input sequence s.
- Does not preserve order.
- Input sequence must be hashable (i.e. must be usable as a dictionary key)."""
- u = {}
- for x in s:
- u[x] = 1
- return list(u.keys())
-
-def linux_ver_normalize(vstr):
- """Normalize a Linux compiler version number.
- Intel changed from "80" to "9.0" in 2005, so we assume if the number
- is greater than 60 it's an old-style number and otherwise new-style.
- Always returns an old-style float like 80 or 90 for compatibility with Windows.
- Shades of Y2K!"""
- # Check for version number like 9.1.026: return 91.026
- m = re.match(r'([0-9]+)\.([0-9]+)\.([0-9]+)', vstr)
- if m:
- vmaj,vmin,build = m.groups()
- return float(vmaj) * 10. + float(vmin) + float(build) / 1000.;
- else:
- f = float(vstr)
- if is_windows:
- return f
- else:
- if f < 60: return f * 10.0
- else: return f
-
-def check_abi(abi):
- """Check for valid ABI (application binary interface) name,
- and map into canonical one"""
- if not abi:
- return None
- abi = abi.lower()
- # valid_abis maps input name to canonical name
- if is_windows:
- valid_abis = {'ia32' : 'ia32',
- 'x86' : 'ia32',
- 'ia64' : 'ia64',
- 'em64t' : 'em64t',
- 'amd64' : 'em64t'}
- if is_linux:
- valid_abis = {'ia32' : 'ia32',
- 'x86' : 'ia32',
- 'x86_64' : 'x86_64',
- 'em64t' : 'x86_64',
- 'amd64' : 'x86_64'}
- if is_mac:
- valid_abis = {'ia32' : 'ia32',
- 'x86' : 'ia32',
- 'x86_64' : 'x86_64',
- 'em64t' : 'x86_64'}
- try:
- abi = valid_abis[abi]
- except KeyError:
- raise SCons.Errors.UserError("Intel compiler: Invalid ABI %s, valid values are %s"% \
- (abi, list(valid_abis.keys())))
- return abi
-
-def vercmp(a, b):
- """Compare strings as floats,
- but Intel changed Linux naming convention at 9.0"""
- return cmp(linux_ver_normalize(b), linux_ver_normalize(a))
-
-def get_version_from_list(v, vlist):
- """See if we can match v (string) in vlist (list of strings)
- Linux has to match in a fuzzy way."""
- if is_windows:
- # Simple case, just find it in the list
- if v in vlist: return v
- else: return None
- else:
- # Fuzzy match: normalize version number first, but still return
- # original non-normalized form.
- fuzz = 0.001
- for vi in vlist:
- if math.fabs(linux_ver_normalize(vi) - linux_ver_normalize(v)) < fuzz:
- return vi
- # Not found
- return None
-
-def get_intel_registry_value(valuename, version=None, abi=None):
- """
- Return a value from the Intel compiler registry tree. (Windows only)
- """
- # Open the key:
- if is_win64:
- K = 'Software\\Wow6432Node\\Intel\\Compilers\\C++\\' + version + '\\'+abi.upper()
- else:
- K = 'Software\\Intel\\Compilers\\C++\\' + version + '\\'+abi.upper()
- try:
- k = SCons.Util.RegOpenKeyEx(SCons.Util.HKEY_LOCAL_MACHINE, K)
- except SCons.Util.RegError:
- raise MissingRegistryError("%s was not found in the registry, for Intel compiler version %s, abi='%s'"%(K, version,abi))
-
- # Get the value:
- try:
- v = SCons.Util.RegQueryValueEx(k, valuename)[0]
- return v # or v.encode('iso-8859-1', 'replace') to remove unicode?
- except SCons.Util.RegError:
- raise MissingRegistryError("%s\\%s was not found in the registry."%(K, valuename))
-
-
-def get_all_compiler_versions():
- """Returns a sorted list of strings, like "70" or "80" or "9.0"
- with most recent compiler version first.
- """
- versions=[]
- if is_windows:
- if is_win64:
- keyname = 'Software\\WoW6432Node\\Intel\\Compilers\\C++'
- else:
- keyname = 'Software\\Intel\\Compilers\\C++'
- try:
- k = SCons.Util.RegOpenKeyEx(SCons.Util.HKEY_LOCAL_MACHINE,
- keyname)
- except WindowsError:
- return []
- i = 0
- versions = []
- try:
- while i < 100:
- subkey = SCons.Util.RegEnumKey(k, i) # raises EnvironmentError
- # Check that this refers to an existing dir.
- # This is not 100% perfect but should catch common
- # installation issues like when the compiler was installed
- # and then the install directory deleted or moved (rather
- # than uninstalling properly), so the registry values
- # are still there.
- ok = False
- for try_abi in ('IA32', 'IA32e', 'IA64', 'EM64T'):
- try:
- d = get_intel_registry_value('ProductDir', subkey, try_abi)
- except MissingRegistryError:
- continue # not found in reg, keep going
- if os.path.exists(d): ok = True
- if ok:
- versions.append(subkey)
- else:
- try:
- # Registry points to nonexistent dir. Ignore this
- # version.
- value = get_intel_registry_value('ProductDir', subkey, 'IA32')
- except MissingRegistryError, e:
-
- # Registry key is left dangling (potentially
- # after uninstalling).
-
- print \
- "scons: *** Ignoring the registry key for the Intel compiler version %s.\n" \
- "scons: *** It seems that the compiler was uninstalled and that the registry\n" \
- "scons: *** was not cleaned up properly.\n" % subkey
- else:
- print "scons: *** Ignoring "+str(value)
-
- i = i + 1
- except EnvironmentError:
- # no more subkeys
- pass
- elif is_linux:
- for d in glob.glob('/opt/intel_cc_*'):
- # Typical dir here is /opt/intel_cc_80.
- m = re.search(r'cc_(.*)$', d)
- if m:
- versions.append(m.group(1))
- for d in glob.glob('/opt/intel/cc*/*'):
- # Typical dir here is /opt/intel/cc/9.0 for IA32,
- # /opt/intel/cce/9.0 for EMT64 (AMD64)
- m = re.search(r'([0-9.]+)$', d)
- if m:
- versions.append(m.group(1))
- elif is_mac:
- for d in glob.glob('/opt/intel/cc*/*'):
- # Typical dir here is /opt/intel/cc/9.0 for IA32,
- # /opt/intel/cce/9.0 for EMT64 (AMD64)
- m = re.search(r'([0-9.]+)$', d)
- if m:
- versions.append(m.group(1))
- return sorted(uniquify(versions)) # remove dups
-
-def get_intel_compiler_top(version, abi):
- """
- Return the main path to the top-level dir of the Intel compiler,
- using the given version.
- The compiler will be in /bin/icl.exe (icc on linux),
- the include dir is /include, etc.
- """
-
- if is_windows:
- if not SCons.Util.can_read_reg:
- raise NoRegistryModuleError("No Windows registry module was found")
- top = get_intel_registry_value('ProductDir', version, abi)
- # pre-11, icl was in Bin. 11 and later, it's in Bin/ apparently.
- if not os.path.exists(os.path.join(top, "Bin", "icl.exe")) \
- and not os.path.exists(os.path.join(top, "Bin", abi, "icl.exe")):
- raise MissingDirError("Can't find Intel compiler in %s"%(top))
- elif is_mac or is_linux:
- # first dir is new (>=9.0) style, second is old (8.0) style.
- dirs=('/opt/intel/cc/%s', '/opt/intel_cc_%s')
- if abi == 'x86_64':
- dirs=('/opt/intel/cce/%s',) # 'e' stands for 'em64t', aka x86_64 aka amd64
- top=None
- for d in dirs:
- if os.path.exists(os.path.join(d%version, "bin", "icc")):
- top = d%version
- break
- if not top:
- raise MissingDirError("Can't find version %s Intel compiler in %s (abi='%s')"%(version,top, abi))
- return top
-
-
-def generate(env, version=None, abi=None, topdir=None, verbose=0):
- """Add Builders and construction variables for Intel C/C++ compiler
- to an Environment.
- args:
- version: (string) compiler version to use, like "80"
- abi: (string) 'win32' or whatever Itanium version wants
- topdir: (string) compiler top dir, like
- "c:\Program Files\Intel\Compiler70"
- If topdir is used, version and abi are ignored.
- verbose: (int) if >0, prints compiler version used.
- """
- if not (is_mac or is_linux or is_windows):
- # can't handle this platform
- return
-
- if is_windows:
- SCons.Tool.msvc.generate(env)
- elif is_linux:
- SCons.Tool.gcc.generate(env)
- elif is_mac:
- SCons.Tool.gcc.generate(env)
-
- # if version is unspecified, use latest
- vlist = get_all_compiler_versions()
- if not version:
- if vlist:
- version = vlist[0]
- else:
- # User may have specified '90' but we need to get actual dirname '9.0'.
- # get_version_from_list does that mapping.
- v = get_version_from_list(version, vlist)
- if not v:
- raise SCons.Errors.UserError("Invalid Intel compiler version %s: "%version + \
- "installed versions are %s"%(', '.join(vlist)))
- version = v
-
- # if abi is unspecified, use ia32
- # alternatives are ia64 for Itanium, or amd64 or em64t or x86_64 (all synonyms here)
- abi = check_abi(abi)
- if abi is None:
- if is_mac or is_linux:
- # Check if we are on 64-bit linux, default to 64 then.
- uname_m = os.uname()[4]
- if uname_m == 'x86_64':
- abi = 'x86_64'
- else:
- abi = 'ia32'
- else:
- if is_win64:
- abi = 'em64t'
- else:
- abi = 'ia32'
-
- if version and not topdir:
- try:
- topdir = get_intel_compiler_top(version, abi)
- except (SCons.Util.RegError, IntelCError):
- topdir = None
-
- if not topdir:
- # Normally this is an error, but it might not be if the compiler is
- # on $PATH and the user is importing their env.
- class ICLTopDirWarning(SCons.Warnings.Warning):
- pass
- if (is_mac or is_linux) and not env.Detect('icc') or \
- is_windows and not env.Detect('icl'):
-
- SCons.Warnings.enableWarningClass(ICLTopDirWarning)
- SCons.Warnings.warn(ICLTopDirWarning,
- "Failed to find Intel compiler for version='%s', abi='%s'"%
- (str(version), str(abi)))
- else:
- # should be cleaned up to say what this other version is
- # since in this case we have some other Intel compiler installed
- SCons.Warnings.enableWarningClass(ICLTopDirWarning)
- SCons.Warnings.warn(ICLTopDirWarning,
- "Can't find Intel compiler top dir for version='%s', abi='%s'"%
- (str(version), str(abi)))
-
- if topdir:
- if verbose:
- print "Intel C compiler: using version %s (%g), abi %s, in '%s'"%\
- (repr(version), linux_ver_normalize(version),abi,topdir)
- if is_linux:
- # Show the actual compiler version by running the compiler.
- os.system('%s/bin/icc --version'%topdir)
- if is_mac:
- # Show the actual compiler version by running the compiler.
- os.system('%s/bin/icc --version'%topdir)
-
- env['INTEL_C_COMPILER_TOP'] = topdir
- if is_linux:
- paths={'INCLUDE' : 'include',
- 'LIB' : 'lib',
- 'PATH' : 'bin',
- 'LD_LIBRARY_PATH' : 'lib'}
- for p in paths.keys():
- env.PrependENVPath(p, os.path.join(topdir, paths[p]))
- if is_mac:
- paths={'INCLUDE' : 'include',
- 'LIB' : 'lib',
- 'PATH' : 'bin',
- 'LD_LIBRARY_PATH' : 'lib'}
- for p in paths.keys():
- env.PrependENVPath(p, os.path.join(topdir, paths[p]))
- if is_windows:
- # env key reg valname default subdir of top
- paths=(('INCLUDE', 'IncludeDir', 'Include'),
- ('LIB' , 'LibDir', 'Lib'),
- ('PATH' , 'BinDir', 'Bin'))
- # We are supposed to ignore version if topdir is set, so set
- # it to the emptry string if it's not already set.
- if version is None:
- version = ''
- # Each path has a registry entry, use that or default to subdir
- for p in paths:
- try:
- path=get_intel_registry_value(p[1], version, abi)
- # These paths may have $(ICInstallDir)
- # which needs to be substituted with the topdir.
- path=path.replace('$(ICInstallDir)', topdir + os.sep)
- except IntelCError:
- # Couldn't get it from registry: use default subdir of topdir
- env.PrependENVPath(p[0], os.path.join(topdir, p[2]))
- else:
- env.PrependENVPath(p[0], path.split(os.pathsep))
- # print "ICL %s: %s, final=%s"%(p[0], path, str(env['ENV'][p[0]]))
-
- if is_windows:
- env['CC'] = 'icl'
- env['CXX'] = 'icl'
- env['LINK'] = 'xilink'
- else:
- env['CC'] = 'icc'
- env['CXX'] = 'icpc'
- # Don't reset LINK here;
- # use smart_link which should already be here from link.py.
- #env['LINK'] = '$CC'
- env['AR'] = 'xiar'
- env['LD'] = 'xild' # not used by default
-
- # This is not the exact (detailed) compiler version,
- # just the major version as determined above or specified
- # by the user. It is a float like 80 or 90, in normalized form for Linux
- # (i.e. even for Linux 9.0 compiler, still returns 90 rather than 9.0)
- if version:
- env['INTEL_C_COMPILER_VERSION']=linux_ver_normalize(version)
-
- if is_windows:
- # Look for license file dir
- # in system environment, registry, and default location.
- envlicdir = os.environ.get("INTEL_LICENSE_FILE", '')
- K = ('SOFTWARE\Intel\Licenses')
- try:
- k = SCons.Util.RegOpenKeyEx(SCons.Util.HKEY_LOCAL_MACHINE, K)
- reglicdir = SCons.Util.RegQueryValueEx(k, "w_cpp")[0]
- except (AttributeError, SCons.Util.RegError):
- reglicdir = ""
- defaultlicdir = r'C:\Program Files\Common Files\Intel\Licenses'
-
- licdir = None
- for ld in [envlicdir, reglicdir]:
- # If the string contains an '@', then assume it's a network
- # license (port@system) and good by definition.
- if ld and (ld.find('@') != -1 or os.path.exists(ld)):
- licdir = ld
- break
- if not licdir:
- licdir = defaultlicdir
- if not os.path.exists(licdir):
- class ICLLicenseDirWarning(SCons.Warnings.Warning):
- pass
- SCons.Warnings.enableWarningClass(ICLLicenseDirWarning)
- SCons.Warnings.warn(ICLLicenseDirWarning,
- "Intel license dir was not found."
- " Tried using the INTEL_LICENSE_FILE environment variable (%s), the registry (%s) and the default path (%s)."
- " Using the default path as a last resort."
- % (envlicdir, reglicdir, defaultlicdir))
- env['ENV']['INTEL_LICENSE_FILE'] = licdir
-
-def exists(env):
- if not (is_mac or is_linux or is_windows):
- # can't handle this platform
- return 0
-
- try:
- versions = get_all_compiler_versions()
- except (SCons.Util.RegError, IntelCError):
- versions = None
- detected = versions is not None and len(versions) > 0
- if not detected:
- # try env.Detect, maybe that will work
- if is_windows:
- return env.Detect('icl')
- elif is_linux:
- return env.Detect('icc')
- elif is_mac:
- return env.Detect('icc')
- return detected
-
-# end of file
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/ipkg.py b/Externals/scons-local/scons-local-2.0.1/SCons/Tool/ipkg.py
deleted file mode 100644
index 7558bd26e8..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/ipkg.py
+++ /dev/null
@@ -1,67 +0,0 @@
-"""SCons.Tool.ipkg
-
-Tool-specific initialization for ipkg.
-
-There normally shouldn't be any need to import this module directly.
-It will usually be imported through the generic SCons.Tool.Tool()
-selection method.
-
-The ipkg tool calls the ipkg-build. Its only argument should be the
-packages fake_root.
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Tool/ipkg.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import os
-
-import SCons.Builder
-
-def generate(env):
- """Add Builders and construction variables for ipkg to an Environment."""
- try:
- bld = env['BUILDERS']['Ipkg']
- except KeyError:
- bld = SCons.Builder.Builder( action = '$IPKGCOM',
- suffix = '$IPKGSUFFIX',
- source_scanner = None,
- target_scanner = None)
- env['BUILDERS']['Ipkg'] = bld
-
- env['IPKG'] = 'ipkg-build'
- env['IPKGCOM'] = '$IPKG $IPKGFLAGS ${SOURCE}'
- env['IPKGUSER'] = os.popen('id -un').read().strip()
- env['IPKGGROUP'] = os.popen('id -gn').read().strip()
- env['IPKGFLAGS'] = SCons.Util.CLVar('-o $IPKGUSER -g $IPKGGROUP')
- env['IPKGSUFFIX'] = '.ipk'
-
-def exists(env):
- return env.Detect('ipkg-build')
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/jar.py b/Externals/scons-local/scons-local-2.0.1/SCons/Tool/jar.py
deleted file mode 100644
index 21c5ce4156..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/jar.py
+++ /dev/null
@@ -1,110 +0,0 @@
-"""SCons.Tool.jar
-
-Tool-specific initialization for jar.
-
-There normally shouldn't be any need to import this module directly.
-It will usually be imported through the generic SCons.Tool.Tool()
-selection method.
-
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Tool/jar.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import SCons.Subst
-import SCons.Util
-
-def jarSources(target, source, env, for_signature):
- """Only include sources that are not a manifest file."""
- try:
- env['JARCHDIR']
- except KeyError:
- jarchdir_set = False
- else:
- jarchdir_set = True
- jarchdir = env.subst('$JARCHDIR', target=target, source=source)
- if jarchdir:
- jarchdir = env.fs.Dir(jarchdir)
- result = []
- for src in source:
- contents = src.get_text_contents()
- if contents[:16] != "Manifest-Version":
- if jarchdir_set:
- _chdir = jarchdir
- else:
- try:
- _chdir = src.attributes.java_classdir
- except AttributeError:
- _chdir = None
- if _chdir:
- # If we are changing the dir with -C, then sources should
- # be relative to that directory.
- src = SCons.Subst.Literal(src.get_path(_chdir))
- result.append('-C')
- result.append(_chdir)
- result.append(src)
- return result
-
-def jarManifest(target, source, env, for_signature):
- """Look in sources for a manifest file, if any."""
- for src in source:
- contents = src.get_text_contents()
- if contents[:16] == "Manifest-Version":
- return src
- return ''
-
-def jarFlags(target, source, env, for_signature):
- """If we have a manifest, make sure that the 'm'
- flag is specified."""
- jarflags = env.subst('$JARFLAGS', target=target, source=source)
- for src in source:
- contents = src.get_text_contents()
- if contents[:16] == "Manifest-Version":
- if not 'm' in jarflags:
- return jarflags + 'm'
- break
- return jarflags
-
-def generate(env):
- """Add Builders and construction variables for jar to an Environment."""
- SCons.Tool.CreateJarBuilder(env)
-
- env['JAR'] = 'jar'
- env['JARFLAGS'] = SCons.Util.CLVar('cf')
- env['_JARFLAGS'] = jarFlags
- env['_JARMANIFEST'] = jarManifest
- env['_JARSOURCES'] = jarSources
- env['_JARCOM'] = '$JAR $_JARFLAGS $TARGET $_JARMANIFEST $_JARSOURCES'
- env['JARCOM'] = "${TEMPFILE('$_JARCOM')}"
- env['JARSUFFIX'] = '.jar'
-
-def exists(env):
- return env.Detect('jar')
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/javac.py b/Externals/scons-local/scons-local-2.0.1/SCons/Tool/javac.py
deleted file mode 100644
index df3c0306ce..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/javac.py
+++ /dev/null
@@ -1,230 +0,0 @@
-"""SCons.Tool.javac
-
-Tool-specific initialization for javac.
-
-There normally shouldn't be any need to import this module directly.
-It will usually be imported through the generic SCons.Tool.Tool()
-selection method.
-
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-__revision__ = "src/engine/SCons/Tool/javac.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import os
-import os.path
-
-import SCons.Action
-import SCons.Builder
-from SCons.Node.FS import _my_normcase
-from SCons.Tool.JavaCommon import parse_java_file
-import SCons.Util
-
-def classname(path):
- """Turn a string (path name) into a Java class name."""
- return os.path.normpath(path).replace(os.sep, '.')
-
-def emit_java_classes(target, source, env):
- """Create and return lists of source java files
- and their corresponding target class files.
- """
- java_suffix = env.get('JAVASUFFIX', '.java')
- class_suffix = env.get('JAVACLASSSUFFIX', '.class')
-
- target[0].must_be_same(SCons.Node.FS.Dir)
- classdir = target[0]
-
- s = source[0].rentry().disambiguate()
- if isinstance(s, SCons.Node.FS.File):
- sourcedir = s.dir.rdir()
- elif isinstance(s, SCons.Node.FS.Dir):
- sourcedir = s.rdir()
- else:
- raise SCons.Errors.UserError("Java source must be File or Dir, not '%s'" % s.__class__)
-
- slist = []
- js = _my_normcase(java_suffix)
- for entry in source:
- entry = entry.rentry().disambiguate()
- if isinstance(entry, SCons.Node.FS.File):
- slist.append(entry)
- elif isinstance(entry, SCons.Node.FS.Dir):
- result = SCons.Util.OrderedDict()
- dirnode = entry.rdir()
- def find_java_files(arg, dirpath, filenames):
- java_files = sorted([n for n in filenames
- if _my_normcase(n).endswith(js)])
- mydir = dirnode.Dir(dirpath)
- java_paths = [mydir.File(f) for f in java_files]
- for jp in java_paths:
- arg[jp] = True
- for dirpath, dirnames, filenames in os.walk(dirnode.get_abspath()):
- find_java_files(result, dirpath, filenames)
- entry.walk(find_java_files, result)
-
- slist.extend(list(result.keys()))
- else:
- raise SCons.Errors.UserError("Java source must be File or Dir, not '%s'" % entry.__class__)
-
- version = env.get('JAVAVERSION', '1.4')
- full_tlist = []
- for f in slist:
- tlist = []
- source_file_based = True
- pkg_dir = None
- if not f.is_derived():
- pkg_dir, classes = parse_java_file(f.rfile().get_abspath(), version)
- if classes:
- source_file_based = False
- if pkg_dir:
- d = target[0].Dir(pkg_dir)
- p = pkg_dir + os.sep
- else:
- d = target[0]
- p = ''
- for c in classes:
- t = d.File(c + class_suffix)
- t.attributes.java_classdir = classdir
- t.attributes.java_sourcedir = sourcedir
- t.attributes.java_classname = classname(p + c)
- tlist.append(t)
-
- if source_file_based:
- base = f.name[:-len(java_suffix)]
- if pkg_dir:
- t = target[0].Dir(pkg_dir).File(base + class_suffix)
- else:
- t = target[0].File(base + class_suffix)
- t.attributes.java_classdir = classdir
- t.attributes.java_sourcedir = f.dir
- t.attributes.java_classname = classname(base)
- tlist.append(t)
-
- for t in tlist:
- t.set_specific_source([f])
-
- full_tlist.extend(tlist)
-
- return full_tlist, slist
-
-JavaAction = SCons.Action.Action('$JAVACCOM', '$JAVACCOMSTR')
-
-JavaBuilder = SCons.Builder.Builder(action = JavaAction,
- emitter = emit_java_classes,
- target_factory = SCons.Node.FS.Entry,
- source_factory = SCons.Node.FS.Entry)
-
-class pathopt(object):
- """
- Callable object for generating javac-style path options from
- a construction variable (e.g. -classpath, -sourcepath).
- """
- def __init__(self, opt, var, default=None):
- self.opt = opt
- self.var = var
- self.default = default
-
- def __call__(self, target, source, env, for_signature):
- path = env[self.var]
- if path and not SCons.Util.is_List(path):
- path = [path]
- if self.default:
- path = path + [ env[self.default] ]
- if path:
- return [self.opt, os.pathsep.join(path)]
- #return self.opt + " " + os.pathsep.join(path)
- else:
- return []
- #return ""
-
-def Java(env, target, source, *args, **kw):
- """
- A pseudo-Builder wrapper around the separate JavaClass{File,Dir}
- Builders.
- """
- if not SCons.Util.is_List(target):
- target = [target]
- if not SCons.Util.is_List(source):
- source = [source]
-
- # Pad the target list with repetitions of the last element in the
- # list so we have a target for every source element.
- target = target + ([target[-1]] * (len(source) - len(target)))
-
- java_suffix = env.subst('$JAVASUFFIX')
- result = []
-
- for t, s in zip(target, source):
- if isinstance(s, SCons.Node.FS.Base):
- if isinstance(s, SCons.Node.FS.File):
- b = env.JavaClassFile
- else:
- b = env.JavaClassDir
- else:
- if os.path.isfile(s):
- b = env.JavaClassFile
- elif os.path.isdir(s):
- b = env.JavaClassDir
- elif s[-len(java_suffix):] == java_suffix:
- b = env.JavaClassFile
- else:
- b = env.JavaClassDir
- result.extend(b(t, s, *args, **kw))
-
- return result
-
-def generate(env):
- """Add Builders and construction variables for javac to an Environment."""
- java_file = SCons.Tool.CreateJavaFileBuilder(env)
- java_class = SCons.Tool.CreateJavaClassFileBuilder(env)
- java_class_dir = SCons.Tool.CreateJavaClassDirBuilder(env)
- java_class.add_emitter(None, emit_java_classes)
- java_class.add_emitter(env.subst('$JAVASUFFIX'), emit_java_classes)
- java_class_dir.emitter = emit_java_classes
-
- env.AddMethod(Java)
-
- env['JAVAC'] = 'javac'
- env['JAVACFLAGS'] = SCons.Util.CLVar('')
- env['JAVABOOTCLASSPATH'] = []
- env['JAVACLASSPATH'] = []
- env['JAVASOURCEPATH'] = []
- env['_javapathopt'] = pathopt
- env['_JAVABOOTCLASSPATH'] = '${_javapathopt("-bootclasspath", "JAVABOOTCLASSPATH")} '
- env['_JAVACLASSPATH'] = '${_javapathopt("-classpath", "JAVACLASSPATH")} '
- env['_JAVASOURCEPATH'] = '${_javapathopt("-sourcepath", "JAVASOURCEPATH", "_JAVASOURCEPATHDEFAULT")} '
- env['_JAVASOURCEPATHDEFAULT'] = '${TARGET.attributes.java_sourcedir}'
- env['_JAVACCOM'] = '$JAVAC $JAVACFLAGS $_JAVABOOTCLASSPATH $_JAVACLASSPATH -d ${TARGET.attributes.java_classdir} $_JAVASOURCEPATH $SOURCES'
- env['JAVACCOM'] = "${TEMPFILE('$_JAVACCOM')}"
- env['JAVACLASSSUFFIX'] = '.class'
- env['JAVASUFFIX'] = '.java'
-
-def exists(env):
- return 1
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/javah.py b/Externals/scons-local/scons-local-2.0.1/SCons/Tool/javah.py
deleted file mode 100644
index a022884070..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/javah.py
+++ /dev/null
@@ -1,137 +0,0 @@
-"""SCons.Tool.javah
-
-Tool-specific initialization for javah.
-
-There normally shouldn't be any need to import this module directly.
-It will usually be imported through the generic SCons.Tool.Tool()
-selection method.
-
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Tool/javah.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import os.path
-
-import SCons.Action
-import SCons.Builder
-import SCons.Node.FS
-import SCons.Tool.javac
-import SCons.Util
-
-def emit_java_headers(target, source, env):
- """Create and return lists of Java stub header files that will
- be created from a set of class files.
- """
- class_suffix = env.get('JAVACLASSSUFFIX', '.class')
- classdir = env.get('JAVACLASSDIR')
-
- if not classdir:
- try:
- s = source[0]
- except IndexError:
- classdir = '.'
- else:
- try:
- classdir = s.attributes.java_classdir
- except AttributeError:
- classdir = '.'
- classdir = env.Dir(classdir).rdir()
-
- if str(classdir) == '.':
- c_ = None
- else:
- c_ = str(classdir) + os.sep
-
- slist = []
- for src in source:
- try:
- classname = src.attributes.java_classname
- except AttributeError:
- classname = str(src)
- if c_ and classname[:len(c_)] == c_:
- classname = classname[len(c_):]
- if class_suffix and classname[-len(class_suffix):] == class_suffix:
- classname = classname[:-len(class_suffix)]
- classname = SCons.Tool.javac.classname(classname)
- s = src.rfile()
- s.attributes.java_classname = classname
- slist.append(s)
-
- s = source[0].rfile()
- if not hasattr(s.attributes, 'java_classdir'):
- s.attributes.java_classdir = classdir
-
- if target[0].__class__ is SCons.Node.FS.File:
- tlist = target
- else:
- if not isinstance(target[0], SCons.Node.FS.Dir):
- target[0].__class__ = SCons.Node.FS.Dir
- target[0]._morph()
- tlist = []
- for s in source:
- fname = s.attributes.java_classname.replace('.', '_') + '.h'
- t = target[0].File(fname)
- t.attributes.java_lookupdir = target[0]
- tlist.append(t)
-
- return tlist, source
-
-def JavaHOutFlagGenerator(target, source, env, for_signature):
- try:
- t = target[0]
- except (AttributeError, IndexError, TypeError):
- t = target
- try:
- return '-d ' + str(t.attributes.java_lookupdir)
- except AttributeError:
- return '-o ' + str(t)
-
-def getJavaHClassPath(env,target, source, for_signature):
- path = "${SOURCE.attributes.java_classdir}"
- if 'JAVACLASSPATH' in env and env['JAVACLASSPATH']:
- path = SCons.Util.AppendPath(path, env['JAVACLASSPATH'])
- return "-classpath %s" % (path)
-
-def generate(env):
- """Add Builders and construction variables for javah to an Environment."""
- java_javah = SCons.Tool.CreateJavaHBuilder(env)
- java_javah.emitter = emit_java_headers
-
- env['_JAVAHOUTFLAG'] = JavaHOutFlagGenerator
- env['JAVAH'] = 'javah'
- env['JAVAHFLAGS'] = SCons.Util.CLVar('')
- env['_JAVAHCLASSPATH'] = getJavaHClassPath
- env['JAVAHCOM'] = '$JAVAH $JAVAHFLAGS $_JAVAHOUTFLAG $_JAVAHCLASSPATH ${SOURCES.attributes.java_classname}'
- env['JAVACLASSSUFFIX'] = '.class'
-
-def exists(env):
- return env.Detect('javah')
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/latex.py b/Externals/scons-local/scons-local-2.0.1/SCons/Tool/latex.py
deleted file mode 100644
index 65ff78af86..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/latex.py
+++ /dev/null
@@ -1,79 +0,0 @@
-"""SCons.Tool.latex
-
-Tool-specific initialization for LaTeX.
-Generates .dvi files from .latex or .ltx files
-
-There normally shouldn't be any need to import this module directly.
-It will usually be imported through the generic SCons.Tool.Tool()
-selection method.
-
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Tool/latex.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import SCons.Action
-import SCons.Defaults
-import SCons.Scanner.LaTeX
-import SCons.Util
-import SCons.Tool
-import SCons.Tool.tex
-
-def LaTeXAuxFunction(target = None, source= None, env=None):
- result = SCons.Tool.tex.InternalLaTeXAuxAction( SCons.Tool.tex.LaTeXAction, target, source, env )
- if result != 0:
- SCons.Tool.tex.check_file_error_message(env['LATEX'])
- return result
-
-LaTeXAuxAction = SCons.Action.Action(LaTeXAuxFunction,
- strfunction=SCons.Tool.tex.TeXLaTeXStrFunction)
-
-def generate(env):
- """Add Builders and construction variables for LaTeX to an Environment."""
-
- env.AppendUnique(LATEXSUFFIXES=SCons.Tool.LaTeXSuffixes)
-
- import dvi
- dvi.generate(env)
-
- import pdf
- pdf.generate(env)
-
- bld = env['BUILDERS']['DVI']
- bld.add_action('.ltx', LaTeXAuxAction)
- bld.add_action('.latex', LaTeXAuxAction)
- bld.add_emitter('.ltx', SCons.Tool.tex.tex_eps_emitter)
- bld.add_emitter('.latex', SCons.Tool.tex.tex_eps_emitter)
-
- SCons.Tool.tex.generate_common(env)
-
-def exists(env):
- return env.Detect('latex')
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/lex.py b/Externals/scons-local/scons-local-2.0.1/SCons/Tool/lex.py
deleted file mode 100644
index 9344173e52..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/lex.py
+++ /dev/null
@@ -1,97 +0,0 @@
-"""SCons.Tool.lex
-
-Tool-specific initialization for lex.
-
-There normally shouldn't be any need to import this module directly.
-It will usually be imported through the generic SCons.Tool.Tool()
-selection method.
-
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Tool/lex.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import os.path
-
-import SCons.Action
-import SCons.Tool
-import SCons.Util
-
-LexAction = SCons.Action.Action("$LEXCOM", "$LEXCOMSTR")
-
-def lexEmitter(target, source, env):
- sourceBase, sourceExt = os.path.splitext(SCons.Util.to_String(source[0]))
-
- if sourceExt == ".lm": # If using Objective-C
- target = [sourceBase + ".m"] # the extension is ".m".
-
- # This emitter essentially tries to add to the target all extra
- # files generated by flex.
-
- # Different options that are used to trigger the creation of extra files.
- fileGenOptions = ["--header-file=", "--tables-file="]
-
- lexflags = env.subst("$LEXFLAGS", target=target, source=source)
- for option in SCons.Util.CLVar(lexflags):
- for fileGenOption in fileGenOptions:
- l = len(fileGenOption)
- if option[:l] == fileGenOption:
- # A file generating option is present, so add the
- # file name to the target list.
- fileName = option[l:].strip()
- target.append(fileName)
- return (target, source)
-
-def generate(env):
- """Add Builders and construction variables for lex to an Environment."""
- c_file, cxx_file = SCons.Tool.createCFileBuilders(env)
-
- # C
- c_file.add_action(".l", LexAction)
- c_file.add_emitter(".l", lexEmitter)
-
- c_file.add_action(".lex", LexAction)
- c_file.add_emitter(".lex", lexEmitter)
-
- # Objective-C
- cxx_file.add_action(".lm", LexAction)
- cxx_file.add_emitter(".lm", lexEmitter)
-
- # C++
- cxx_file.add_action(".ll", LexAction)
- cxx_file.add_emitter(".ll", lexEmitter)
-
- env["LEX"] = env.Detect("flex") or "lex"
- env["LEXFLAGS"] = SCons.Util.CLVar("")
- env["LEXCOM"] = "$LEX $LEXFLAGS -t $SOURCES > $TARGET"
-
-def exists(env):
- return env.Detect(["flex", "lex"])
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/link.py b/Externals/scons-local/scons-local-2.0.1/SCons/Tool/link.py
deleted file mode 100644
index 0210d7e11c..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/link.py
+++ /dev/null
@@ -1,121 +0,0 @@
-"""SCons.Tool.link
-
-Tool-specific initialization for the generic Posix linker.
-
-There normally shouldn't be any need to import this module directly.
-It will usually be imported through the generic SCons.Tool.Tool()
-selection method.
-
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Tool/link.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import SCons.Defaults
-import SCons.Tool
-import SCons.Util
-import SCons.Warnings
-
-from SCons.Tool.FortranCommon import isfortran
-
-cplusplus = __import__('c++', globals(), locals(), [])
-
-issued_mixed_link_warning = False
-
-def smart_link(source, target, env, for_signature):
- has_cplusplus = cplusplus.iscplusplus(source)
- has_fortran = isfortran(env, source)
- if has_cplusplus and has_fortran:
- global issued_mixed_link_warning
- if not issued_mixed_link_warning:
- msg = "Using $CXX to link Fortran and C++ code together.\n\t" + \
- "This may generate a buggy executable if the '%s'\n\t" + \
- "compiler does not know how to deal with Fortran runtimes."
- SCons.Warnings.warn(SCons.Warnings.FortranCxxMixWarning,
- msg % env.subst('$CXX'))
- issued_mixed_link_warning = True
- return '$CXX'
- elif has_fortran:
- return '$FORTRAN'
- elif has_cplusplus:
- return '$CXX'
- return '$CC'
-
-def shlib_emitter(target, source, env):
- for tgt in target:
- tgt.attributes.shared = 1
- return (target, source)
-
-def generate(env):
- """Add Builders and construction variables for gnulink to an Environment."""
- SCons.Tool.createSharedLibBuilder(env)
- SCons.Tool.createProgBuilder(env)
-
- env['SHLINK'] = '$LINK'
- env['SHLINKFLAGS'] = SCons.Util.CLVar('$LINKFLAGS -shared')
- env['SHLINKCOM'] = '$SHLINK -o $TARGET $SHLINKFLAGS $SOURCES $_LIBDIRFLAGS $_LIBFLAGS'
- # don't set up the emitter, cause AppendUnique will generate a list
- # starting with None :-(
- env.Append(SHLIBEMITTER = [shlib_emitter])
- env['SMARTLINK'] = smart_link
- env['LINK'] = "$SMARTLINK"
- env['LINKFLAGS'] = SCons.Util.CLVar('')
- env['LINKCOM'] = '$LINK -o $TARGET $LINKFLAGS $SOURCES $_LIBDIRFLAGS $_LIBFLAGS'
- env['LIBDIRPREFIX']='-L'
- env['LIBDIRSUFFIX']=''
- env['_LIBFLAGS']='${_stripixes(LIBLINKPREFIX, LIBS, LIBLINKSUFFIX, LIBPREFIXES, LIBSUFFIXES, __env__)}'
- env['LIBLINKPREFIX']='-l'
- env['LIBLINKSUFFIX']=''
-
- if env['PLATFORM'] == 'hpux':
- env['SHLIBSUFFIX'] = '.sl'
- elif env['PLATFORM'] == 'aix':
- env['SHLIBSUFFIX'] = '.a'
-
- # For most platforms, a loadable module is the same as a shared
- # library. Platforms which are different can override these, but
- # setting them the same means that LoadableModule works everywhere.
- SCons.Tool.createLoadableModuleBuilder(env)
- env['LDMODULE'] = '$SHLINK'
- # don't set up the emitter, cause AppendUnique will generate a list
- # starting with None :-(
- env.Append(LDMODULEEMITTER='$SHLIBEMITTER')
- env['LDMODULEPREFIX'] = '$SHLIBPREFIX'
- env['LDMODULESUFFIX'] = '$SHLIBSUFFIX'
- env['LDMODULEFLAGS'] = '$SHLINKFLAGS'
- env['LDMODULECOM'] = '$LDMODULE -o $TARGET $LDMODULEFLAGS $SOURCES $_LIBDIRFLAGS $_LIBFLAGS'
-
-
-
-def exists(env):
- # This module isn't really a Tool on its own, it's common logic for
- # other linkers.
- return None
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/linkloc.py b/Externals/scons-local/scons-local-2.0.1/SCons/Tool/linkloc.py
deleted file mode 100644
index 283eacb699..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/linkloc.py
+++ /dev/null
@@ -1,112 +0,0 @@
-"""SCons.Tool.linkloc
-
-Tool specification for the LinkLoc linker for the Phar Lap ETS embedded
-operating system.
-
-There normally shouldn't be any need to import this module directly.
-It will usually be imported through the generic SCons.Tool.Tool()
-selection method.
-
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Tool/linkloc.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import os.path
-import re
-
-import SCons.Action
-import SCons.Defaults
-import SCons.Errors
-import SCons.Tool
-import SCons.Util
-
-from SCons.Tool.MSCommon import msvs_exists, merge_default_version
-from SCons.Tool.PharLapCommon import addPharLapPaths
-
-_re_linker_command = re.compile(r'(\s)@\s*([^\s]+)')
-
-def repl_linker_command(m):
- # Replaces any linker command file directives (e.g. "@foo.lnk") with
- # the actual contents of the file.
- try:
- f=open(m.group(2), "r")
- return m.group(1) + f.read()
- except IOError:
- # the linker should return an error if it can't
- # find the linker command file so we will remain quiet.
- # However, we will replace the @ with a # so we will not continue
- # to find it with recursive substitution
- return m.group(1) + '#' + m.group(2)
-
-class LinklocGenerator(object):
- def __init__(self, cmdline):
- self.cmdline = cmdline
-
- def __call__(self, env, target, source, for_signature):
- if for_signature:
- # Expand the contents of any linker command files recursively
- subs = 1
- strsub = env.subst(self.cmdline, target=target, source=source)
- while subs:
- strsub, subs = _re_linker_command.subn(repl_linker_command, strsub)
- return strsub
- else:
- return "${TEMPFILE('" + self.cmdline + "')}"
-
-def generate(env):
- """Add Builders and construction variables for ar to an Environment."""
- SCons.Tool.createSharedLibBuilder(env)
- SCons.Tool.createProgBuilder(env)
-
- env['SUBST_CMD_FILE'] = LinklocGenerator
- env['SHLINK'] = '$LINK'
- env['SHLINKFLAGS'] = SCons.Util.CLVar('$LINKFLAGS')
- env['SHLINKCOM'] = '${SUBST_CMD_FILE("$SHLINK $SHLINKFLAGS $_LIBDIRFLAGS $_LIBFLAGS -dll $TARGET $SOURCES")}'
- env['SHLIBEMITTER']= None
- env['LINK'] = "linkloc"
- env['LINKFLAGS'] = SCons.Util.CLVar('')
- env['LINKCOM'] = '${SUBST_CMD_FILE("$LINK $LINKFLAGS $_LIBDIRFLAGS $_LIBFLAGS -exe $TARGET $SOURCES")}'
- env['LIBDIRPREFIX']='-libpath '
- env['LIBDIRSUFFIX']=''
- env['LIBLINKPREFIX']='-lib '
- env['LIBLINKSUFFIX']='$LIBSUFFIX'
-
- # Set-up ms tools paths for default version
- merge_default_version(env)
-
- addPharLapPaths(env)
-
-def exists(env):
- if msvs_exists():
- return env.Detect('linkloc')
- else:
- return 0
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/m4.py b/Externals/scons-local/scons-local-2.0.1/SCons/Tool/m4.py
deleted file mode 100644
index ac59e4811e..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/m4.py
+++ /dev/null
@@ -1,63 +0,0 @@
-"""SCons.Tool.m4
-
-Tool-specific initialization for m4.
-
-There normally shouldn't be any need to import this module directly.
-It will usually be imported through the generic SCons.Tool.Tool()
-selection method.
-
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Tool/m4.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import SCons.Action
-import SCons.Builder
-import SCons.Util
-
-def generate(env):
- """Add Builders and construction variables for m4 to an Environment."""
- M4Action = SCons.Action.Action('$M4COM', '$M4COMSTR')
- bld = SCons.Builder.Builder(action = M4Action, src_suffix = '.m4')
-
- env['BUILDERS']['M4'] = bld
-
- # .m4 files might include other files, and it would be pretty hard
- # to write a scanner for it, so let's just cd to the dir of the m4
- # file and run from there.
- # The src_suffix setup is like so: file.c.m4 -> file.c,
- # file.cpp.m4 -> file.cpp etc.
- env['M4'] = 'm4'
- env['M4FLAGS'] = SCons.Util.CLVar('-E')
- env['M4COM'] = 'cd ${SOURCE.rsrcdir} && $M4 $M4FLAGS < ${SOURCE.file} > ${TARGET.abspath}'
-
-def exists(env):
- return env.Detect('m4')
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/masm.py b/Externals/scons-local/scons-local-2.0.1/SCons/Tool/masm.py
deleted file mode 100644
index 2d02440d35..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/masm.py
+++ /dev/null
@@ -1,77 +0,0 @@
-"""SCons.Tool.masm
-
-Tool-specific initialization for the Microsoft Assembler.
-
-There normally shouldn't be any need to import this module directly.
-It will usually be imported through the generic SCons.Tool.Tool()
-selection method.
-
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Tool/masm.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import SCons.Defaults
-import SCons.Tool
-import SCons.Util
-
-ASSuffixes = ['.s', '.asm', '.ASM']
-ASPPSuffixes = ['.spp', '.SPP', '.sx']
-if SCons.Util.case_sensitive_suffixes('.s', '.S'):
- ASPPSuffixes.extend(['.S'])
-else:
- ASSuffixes.extend(['.S'])
-
-def generate(env):
- """Add Builders and construction variables for masm to an Environment."""
- static_obj, shared_obj = SCons.Tool.createObjBuilders(env)
-
- for suffix in ASSuffixes:
- static_obj.add_action(suffix, SCons.Defaults.ASAction)
- shared_obj.add_action(suffix, SCons.Defaults.ASAction)
- static_obj.add_emitter(suffix, SCons.Defaults.StaticObjectEmitter)
- shared_obj.add_emitter(suffix, SCons.Defaults.SharedObjectEmitter)
-
- for suffix in ASPPSuffixes:
- static_obj.add_action(suffix, SCons.Defaults.ASPPAction)
- shared_obj.add_action(suffix, SCons.Defaults.ASPPAction)
- static_obj.add_emitter(suffix, SCons.Defaults.StaticObjectEmitter)
- shared_obj.add_emitter(suffix, SCons.Defaults.SharedObjectEmitter)
-
- env['AS'] = 'ml'
- env['ASFLAGS'] = SCons.Util.CLVar('/nologo')
- env['ASPPFLAGS'] = '$ASFLAGS'
- env['ASCOM'] = '$AS $ASFLAGS /c /Fo$TARGET $SOURCES'
- env['ASPPCOM'] = '$CC $ASPPFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS /c /Fo$TARGET $SOURCES'
- env['STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME'] = 1
-
-def exists(env):
- return env.Detect('ml')
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/midl.py b/Externals/scons-local/scons-local-2.0.1/SCons/Tool/midl.py
deleted file mode 100644
index 65a4f12a9c..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/midl.py
+++ /dev/null
@@ -1,88 +0,0 @@
-"""SCons.Tool.midl
-
-Tool-specific initialization for midl (Microsoft IDL compiler).
-
-There normally shouldn't be any need to import this module directly.
-It will usually be imported through the generic SCons.Tool.Tool()
-selection method.
-
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Tool/midl.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import SCons.Action
-import SCons.Builder
-import SCons.Defaults
-import SCons.Scanner.IDL
-import SCons.Util
-
-from MSCommon import msvc_exists
-
-def midl_emitter(target, source, env):
- """Produces a list of outputs from the MIDL compiler"""
- base, ext = SCons.Util.splitext(str(target[0]))
- tlb = target[0]
- incl = base + '.h'
- interface = base + '_i.c'
- t = [tlb, incl, interface]
-
- midlcom = env['MIDLCOM']
-
- if midlcom.find('/proxy') != -1:
- proxy = base + '_p.c'
- t.append(proxy)
- if midlcom.find('/dlldata') != -1:
- dlldata = base + '_data.c'
- t.append(dlldata)
-
- return (t,source)
-
-idl_scanner = SCons.Scanner.IDL.IDLScan()
-
-midl_action = SCons.Action.Action('$MIDLCOM', '$MIDLCOMSTR')
-
-midl_builder = SCons.Builder.Builder(action = midl_action,
- src_suffix = '.idl',
- suffix='.tlb',
- emitter = midl_emitter,
- source_scanner = idl_scanner)
-
-def generate(env):
- """Add Builders and construction variables for midl to an Environment."""
-
- env['MIDL'] = 'MIDL.EXE'
- env['MIDLFLAGS'] = SCons.Util.CLVar('/nologo')
- env['MIDLCOM'] = '$MIDL $MIDLFLAGS /tlb ${TARGETS[0]} /h ${TARGETS[1]} /iid ${TARGETS[2]} /proxy ${TARGETS[3]} /dlldata ${TARGETS[4]} $SOURCE 2> NUL'
- env['BUILDERS']['TypeLibrary'] = midl_builder
-
-def exists(env):
- return msvc_exists()
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/mingw.py b/Externals/scons-local/scons-local-2.0.1/SCons/Tool/mingw.py
deleted file mode 100644
index 4344bc125c..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/mingw.py
+++ /dev/null
@@ -1,158 +0,0 @@
-"""SCons.Tool.gcc
-
-Tool-specific initialization for MinGW (http://www.mingw.org/)
-
-There normally shouldn't be any need to import this module directly.
-It will usually be imported through the generic SCons.Tool.Tool()
-selection method.
-
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Tool/mingw.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import os
-import os.path
-
-import SCons.Action
-import SCons.Builder
-import SCons.Defaults
-import SCons.Tool
-import SCons.Util
-
-# This is what we search for to find mingw:
-key_program = 'mingw32-gcc'
-
-def find(env):
- # First search in the SCons path and then the OS path:
- return env.WhereIs(key_program) or SCons.Util.WhereIs(key_program)
-
-def shlib_generator(target, source, env, for_signature):
- cmd = SCons.Util.CLVar(['$SHLINK', '$SHLINKFLAGS'])
-
- dll = env.FindIxes(target, 'SHLIBPREFIX', 'SHLIBSUFFIX')
- if dll: cmd.extend(['-o', dll])
-
- cmd.extend(['$SOURCES', '$_LIBDIRFLAGS', '$_LIBFLAGS'])
-
- implib = env.FindIxes(target, 'LIBPREFIX', 'LIBSUFFIX')
- if implib: cmd.append('-Wl,--out-implib,'+implib.get_string(for_signature))
-
- def_target = env.FindIxes(target, 'WINDOWSDEFPREFIX', 'WINDOWSDEFSUFFIX')
- insert_def = env.subst("$WINDOWS_INSERT_DEF")
- if not insert_def in ['', '0', 0] and def_target: \
- cmd.append('-Wl,--output-def,'+def_target.get_string(for_signature))
-
- return [cmd]
-
-def shlib_emitter(target, source, env):
- dll = env.FindIxes(target, 'SHLIBPREFIX', 'SHLIBSUFFIX')
- no_import_lib = env.get('no_import_lib', 0)
-
- if not dll:
- raise SCons.Errors.UserError("A shared library should have exactly one target with the suffix: %s" % env.subst("$SHLIBSUFFIX"))
-
- if not no_import_lib and \
- not env.FindIxes(target, 'LIBPREFIX', 'LIBSUFFIX'):
-
- # Append an import library to the list of targets.
- target.append(env.ReplaceIxes(dll,
- 'SHLIBPREFIX', 'SHLIBSUFFIX',
- 'LIBPREFIX', 'LIBSUFFIX'))
-
- # Append a def file target if there isn't already a def file target
- # or a def file source. There is no option to disable def file
- # target emitting, because I can't figure out why someone would ever
- # want to turn it off.
- def_source = env.FindIxes(source, 'WINDOWSDEFPREFIX', 'WINDOWSDEFSUFFIX')
- def_target = env.FindIxes(target, 'WINDOWSDEFPREFIX', 'WINDOWSDEFSUFFIX')
- if not def_source and not def_target:
- target.append(env.ReplaceIxes(dll,
- 'SHLIBPREFIX', 'SHLIBSUFFIX',
- 'WINDOWSDEFPREFIX', 'WINDOWSDEFSUFFIX'))
-
- return (target, source)
-
-
-shlib_action = SCons.Action.Action(shlib_generator, generator=1)
-
-res_action = SCons.Action.Action('$RCCOM', '$RCCOMSTR')
-
-res_builder = SCons.Builder.Builder(action=res_action, suffix='.o',
- source_scanner=SCons.Tool.SourceFileScanner)
-SCons.Tool.SourceFileScanner.add_scanner('.rc', SCons.Defaults.CScan)
-
-def generate(env):
- mingw = find(env)
- if mingw:
- dir = os.path.dirname(mingw)
- env.PrependENVPath('PATH', dir )
-
-
- # Most of mingw is the same as gcc and friends...
- gnu_tools = ['gcc', 'g++', 'gnulink', 'ar', 'gas', 'm4']
- for tool in gnu_tools:
- SCons.Tool.Tool(tool)(env)
-
- #... but a few things differ:
- env['CC'] = 'gcc'
- env['SHCCFLAGS'] = SCons.Util.CLVar('$CCFLAGS')
- env['CXX'] = 'g++'
- env['SHCXXFLAGS'] = SCons.Util.CLVar('$CXXFLAGS')
- env['SHLINKFLAGS'] = SCons.Util.CLVar('$LINKFLAGS -shared')
- env['SHLINKCOM'] = shlib_action
- env['LDMODULECOM'] = shlib_action
- env.Append(SHLIBEMITTER = [shlib_emitter])
- env['AS'] = 'as'
-
- env['WIN32DEFPREFIX'] = ''
- env['WIN32DEFSUFFIX'] = '.def'
- env['WINDOWSDEFPREFIX'] = '${WIN32DEFPREFIX}'
- env['WINDOWSDEFSUFFIX'] = '${WIN32DEFSUFFIX}'
-
- env['SHOBJSUFFIX'] = '.o'
- env['STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME'] = 1
-
- env['RC'] = 'windres'
- env['RCFLAGS'] = SCons.Util.CLVar('')
- env['RCINCFLAGS'] = '$( ${_concat(RCINCPREFIX, CPPPATH, RCINCSUFFIX, __env__, RDirs, TARGET, SOURCE)} $)'
- env['RCINCPREFIX'] = '--include-dir '
- env['RCINCSUFFIX'] = ''
- env['RCCOM'] = '$RC $_CPPDEFFLAGS $RCINCFLAGS ${RCINCPREFIX} ${SOURCE.dir} $RCFLAGS -i $SOURCE -o $TARGET'
- env['BUILDERS']['RES'] = res_builder
-
- # Some setting from the platform also have to be overridden:
- env['OBJSUFFIX'] = '.o'
- env['LIBPREFIX'] = 'lib'
- env['LIBSUFFIX'] = '.a'
-
-def exists(env):
- return find(env)
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/mslib.py b/Externals/scons-local/scons-local-2.0.1/SCons/Tool/mslib.py
deleted file mode 100644
index d3ed3dcf64..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/mslib.py
+++ /dev/null
@@ -1,64 +0,0 @@
-"""SCons.Tool.mslib
-
-Tool-specific initialization for lib (MicroSoft library archiver).
-
-There normally shouldn't be any need to import this module directly.
-It will usually be imported through the generic SCons.Tool.Tool()
-selection method.
-
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Tool/mslib.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import SCons.Defaults
-import SCons.Tool
-import SCons.Tool.msvs
-import SCons.Tool.msvc
-import SCons.Util
-
-from MSCommon import msvc_exists, msvc_setup_env_once
-
-def generate(env):
- """Add Builders and construction variables for lib to an Environment."""
- SCons.Tool.createStaticLibBuilder(env)
-
- # Set-up ms tools paths
- msvc_setup_env_once(env)
-
- env['AR'] = 'lib'
- env['ARFLAGS'] = SCons.Util.CLVar('/nologo')
- env['ARCOM'] = "${TEMPFILE('$AR $ARFLAGS /OUT:$TARGET $SOURCES')}"
- env['LIBPREFIX'] = ''
- env['LIBSUFFIX'] = '.lib'
-
-def exists(env):
- return msvc_exists()
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/mslink.py b/Externals/scons-local/scons-local-2.0.1/SCons/Tool/mslink.py
deleted file mode 100644
index 1d1bc08971..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/mslink.py
+++ /dev/null
@@ -1,266 +0,0 @@
-"""SCons.Tool.mslink
-
-Tool-specific initialization for the Microsoft linker.
-
-There normally shouldn't be any need to import this module directly.
-It will usually be imported through the generic SCons.Tool.Tool()
-selection method.
-
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Tool/mslink.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import os.path
-
-import SCons.Action
-import SCons.Defaults
-import SCons.Errors
-import SCons.Platform.win32
-import SCons.Tool
-import SCons.Tool.msvc
-import SCons.Tool.msvs
-import SCons.Util
-
-from MSCommon import msvc_setup_env_once, msvc_exists
-
-def pdbGenerator(env, target, source, for_signature):
- try:
- return ['/PDB:%s' % target[0].attributes.pdb, '/DEBUG']
- except (AttributeError, IndexError):
- return None
-
-def _dllTargets(target, source, env, for_signature, paramtp):
- listCmd = []
- dll = env.FindIxes(target, '%sPREFIX' % paramtp, '%sSUFFIX' % paramtp)
- if dll: listCmd.append("/out:%s"%dll.get_string(for_signature))
-
- implib = env.FindIxes(target, 'LIBPREFIX', 'LIBSUFFIX')
- if implib: listCmd.append("/implib:%s"%implib.get_string(for_signature))
-
- return listCmd
-
-def _dllSources(target, source, env, for_signature, paramtp):
- listCmd = []
-
- deffile = env.FindIxes(source, "WINDOWSDEFPREFIX", "WINDOWSDEFSUFFIX")
- for src in source:
- # Check explicitly for a non-None deffile so that the __cmp__
- # method of the base SCons.Util.Proxy class used for some Node
- # proxies doesn't try to use a non-existent __dict__ attribute.
- if deffile and src == deffile:
- # Treat this source as a .def file.
- listCmd.append("/def:%s" % src.get_string(for_signature))
- else:
- # Just treat it as a generic source file.
- listCmd.append(src)
- return listCmd
-
-def windowsShlinkTargets(target, source, env, for_signature):
- return _dllTargets(target, source, env, for_signature, 'SHLIB')
-
-def windowsShlinkSources(target, source, env, for_signature):
- return _dllSources(target, source, env, for_signature, 'SHLIB')
-
-def _windowsLdmodTargets(target, source, env, for_signature):
- """Get targets for loadable modules."""
- return _dllTargets(target, source, env, for_signature, 'LDMODULE')
-
-def _windowsLdmodSources(target, source, env, for_signature):
- """Get sources for loadable modules."""
- return _dllSources(target, source, env, for_signature, 'LDMODULE')
-
-def _dllEmitter(target, source, env, paramtp):
- """Common implementation of dll emitter."""
- SCons.Tool.msvc.validate_vars(env)
-
- extratargets = []
- extrasources = []
-
- dll = env.FindIxes(target, '%sPREFIX' % paramtp, '%sSUFFIX' % paramtp)
- no_import_lib = env.get('no_import_lib', 0)
-
- if not dll:
- raise SCons.Errors.UserError('A shared library should have exactly one target with the suffix: %s' % env.subst('$%sSUFFIX' % paramtp))
-
- insert_def = env.subst("$WINDOWS_INSERT_DEF")
- if not insert_def in ['', '0', 0] and \
- not env.FindIxes(source, "WINDOWSDEFPREFIX", "WINDOWSDEFSUFFIX"):
-
- # append a def file to the list of sources
- extrasources.append(
- env.ReplaceIxes(dll,
- '%sPREFIX' % paramtp, '%sSUFFIX' % paramtp,
- "WINDOWSDEFPREFIX", "WINDOWSDEFSUFFIX"))
-
- version_num, suite = SCons.Tool.msvs.msvs_parse_version(env.get('MSVS_VERSION', '6.0'))
- if version_num >= 8.0 and env.get('WINDOWS_INSERT_MANIFEST', 0):
- # MSVC 8 automatically generates .manifest files that must be installed
- extratargets.append(
- env.ReplaceIxes(dll,
- '%sPREFIX' % paramtp, '%sSUFFIX' % paramtp,
- "WINDOWSSHLIBMANIFESTPREFIX", "WINDOWSSHLIBMANIFESTSUFFIX"))
-
- if 'PDB' in env and env['PDB']:
- pdb = env.arg2nodes('$PDB', target=target, source=source)[0]
- extratargets.append(pdb)
- target[0].attributes.pdb = pdb
-
- if not no_import_lib and \
- not env.FindIxes(target, "LIBPREFIX", "LIBSUFFIX"):
- # Append an import library to the list of targets.
- extratargets.append(
- env.ReplaceIxes(dll,
- '%sPREFIX' % paramtp, '%sSUFFIX' % paramtp,
- "LIBPREFIX", "LIBSUFFIX"))
- # and .exp file is created if there are exports from a DLL
- extratargets.append(
- env.ReplaceIxes(dll,
- '%sPREFIX' % paramtp, '%sSUFFIX' % paramtp,
- "WINDOWSEXPPREFIX", "WINDOWSEXPSUFFIX"))
-
- return (target+extratargets, source+extrasources)
-
-def windowsLibEmitter(target, source, env):
- return _dllEmitter(target, source, env, 'SHLIB')
-
-def ldmodEmitter(target, source, env):
- """Emitter for loadable modules.
-
- Loadable modules are identical to shared libraries on Windows, but building
- them is subject to different parameters (LDMODULE*).
- """
- return _dllEmitter(target, source, env, 'LDMODULE')
-
-def prog_emitter(target, source, env):
- SCons.Tool.msvc.validate_vars(env)
-
- extratargets = []
-
- exe = env.FindIxes(target, "PROGPREFIX", "PROGSUFFIX")
- if not exe:
- raise SCons.Errors.UserError("An executable should have exactly one target with the suffix: %s" % env.subst("$PROGSUFFIX"))
-
- version_num, suite = SCons.Tool.msvs.msvs_parse_version(env.get('MSVS_VERSION', '6.0'))
- if version_num >= 8.0 and env.get('WINDOWS_INSERT_MANIFEST', 0):
- # MSVC 8 automatically generates .manifest files that have to be installed
- extratargets.append(
- env.ReplaceIxes(exe,
- "PROGPREFIX", "PROGSUFFIX",
- "WINDOWSPROGMANIFESTPREFIX", "WINDOWSPROGMANIFESTSUFFIX"))
-
- if 'PDB' in env and env['PDB']:
- pdb = env.arg2nodes('$PDB', target=target, source=source)[0]
- extratargets.append(pdb)
- target[0].attributes.pdb = pdb
-
- return (target+extratargets,source)
-
-def RegServerFunc(target, source, env):
- if 'register' in env and env['register']:
- ret = regServerAction([target[0]], [source[0]], env)
- if ret:
- raise SCons.Errors.UserError("Unable to register %s" % target[0])
- else:
- print "Registered %s sucessfully" % target[0]
- return ret
- return 0
-
-regServerAction = SCons.Action.Action("$REGSVRCOM", "$REGSVRCOMSTR")
-regServerCheck = SCons.Action.Action(RegServerFunc, None)
-shlibLinkAction = SCons.Action.Action('${TEMPFILE("$SHLINK $SHLINKFLAGS $_SHLINK_TARGETS $_LIBDIRFLAGS $_LIBFLAGS $_PDB $_SHLINK_SOURCES")}')
-compositeShLinkAction = shlibLinkAction + regServerCheck
-ldmodLinkAction = SCons.Action.Action('${TEMPFILE("$LDMODULE $LDMODULEFLAGS $_LDMODULE_TARGETS $_LIBDIRFLAGS $_LIBFLAGS $_PDB $_LDMODULE_SOURCES")}')
-compositeLdmodAction = ldmodLinkAction + regServerCheck
-
-def generate(env):
- """Add Builders and construction variables for ar to an Environment."""
- SCons.Tool.createSharedLibBuilder(env)
- SCons.Tool.createProgBuilder(env)
-
- env['SHLINK'] = '$LINK'
- env['SHLINKFLAGS'] = SCons.Util.CLVar('$LINKFLAGS /dll')
- env['_SHLINK_TARGETS'] = windowsShlinkTargets
- env['_SHLINK_SOURCES'] = windowsShlinkSources
- env['SHLINKCOM'] = compositeShLinkAction
- env.Append(SHLIBEMITTER = [windowsLibEmitter])
- env['LINK'] = 'link'
- env['LINKFLAGS'] = SCons.Util.CLVar('/nologo')
- env['_PDB'] = pdbGenerator
- env['LINKCOM'] = '${TEMPFILE("$LINK $LINKFLAGS /OUT:$TARGET.windows $_LIBDIRFLAGS $_LIBFLAGS $_PDB $SOURCES.windows")}'
- env.Append(PROGEMITTER = [prog_emitter])
- env['LIBDIRPREFIX']='/LIBPATH:'
- env['LIBDIRSUFFIX']=''
- env['LIBLINKPREFIX']=''
- env['LIBLINKSUFFIX']='$LIBSUFFIX'
-
- env['WIN32DEFPREFIX'] = ''
- env['WIN32DEFSUFFIX'] = '.def'
- env['WIN32_INSERT_DEF'] = 0
- env['WINDOWSDEFPREFIX'] = '${WIN32DEFPREFIX}'
- env['WINDOWSDEFSUFFIX'] = '${WIN32DEFSUFFIX}'
- env['WINDOWS_INSERT_DEF'] = '${WIN32_INSERT_DEF}'
-
- env['WIN32EXPPREFIX'] = ''
- env['WIN32EXPSUFFIX'] = '.exp'
- env['WINDOWSEXPPREFIX'] = '${WIN32EXPPREFIX}'
- env['WINDOWSEXPSUFFIX'] = '${WIN32EXPSUFFIX}'
-
- env['WINDOWSSHLIBMANIFESTPREFIX'] = ''
- env['WINDOWSSHLIBMANIFESTSUFFIX'] = '${SHLIBSUFFIX}.manifest'
- env['WINDOWSPROGMANIFESTPREFIX'] = ''
- env['WINDOWSPROGMANIFESTSUFFIX'] = '${PROGSUFFIX}.manifest'
-
- env['REGSVRACTION'] = regServerCheck
- env['REGSVR'] = os.path.join(SCons.Platform.win32.get_system_root(),'System32','regsvr32')
- env['REGSVRFLAGS'] = '/s '
- env['REGSVRCOM'] = '$REGSVR $REGSVRFLAGS ${TARGET.windows}'
-
- # Set-up ms tools paths
- msvc_setup_env_once(env)
-
-
- # Loadable modules are on Windows the same as shared libraries, but they
- # are subject to different build parameters (LDMODULE* variables).
- # Therefore LDMODULE* variables correspond as much as possible to
- # SHLINK*/SHLIB* ones.
- SCons.Tool.createLoadableModuleBuilder(env)
- env['LDMODULE'] = '$SHLINK'
- env['LDMODULEPREFIX'] = '$SHLIBPREFIX'
- env['LDMODULESUFFIX'] = '$SHLIBSUFFIX'
- env['LDMODULEFLAGS'] = '$SHLINKFLAGS'
- env['_LDMODULE_TARGETS'] = _windowsLdmodTargets
- env['_LDMODULE_SOURCES'] = _windowsLdmodSources
- env['LDMODULEEMITTER'] = [ldmodEmitter]
- env['LDMODULECOM'] = compositeLdmodAction
-
-def exists(env):
- return msvc_exists()
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/mssdk.py b/Externals/scons-local/scons-local-2.0.1/SCons/Tool/mssdk.py
deleted file mode 100644
index 6b89873bea..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/mssdk.py
+++ /dev/null
@@ -1,50 +0,0 @@
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Tool/mssdk.py 5134 2010/08/16 23:02:40 bdeegan"
-
-"""engine.SCons.Tool.mssdk
-
-Tool-specific initialization for Microsoft SDKs, both Platform
-SDKs and Windows SDKs.
-
-There normally shouldn't be any need to import this module directly.
-It will usually be imported through the generic SCons.Tool.Tool()
-selection method.
-"""
-
-from MSCommon import mssdk_exists, \
- mssdk_setup_env
-
-def generate(env):
- """Add construction variables for an MS SDK to an Environment."""
- mssdk_setup_env(env)
-
-def exists(env):
- return mssdk_exists()
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/msvc.py b/Externals/scons-local/scons-local-2.0.1/SCons/Tool/msvc.py
deleted file mode 100644
index 66c3e10894..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/msvc.py
+++ /dev/null
@@ -1,268 +0,0 @@
-"""engine.SCons.Tool.msvc
-
-Tool-specific initialization for Microsoft Visual C/C++.
-
-There normally shouldn't be any need to import this module directly.
-It will usually be imported through the generic SCons.Tool.Tool()
-selection method.
-
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/Tool/msvc.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import os.path
-import re
-import sys
-
-import SCons.Action
-import SCons.Builder
-import SCons.Errors
-import SCons.Platform.win32
-import SCons.Tool
-import SCons.Tool.msvs
-import SCons.Util
-import SCons.Warnings
-import SCons.Scanner.RC
-
-from MSCommon import msvc_exists, msvc_setup_env_once
-
-CSuffixes = ['.c', '.C']
-CXXSuffixes = ['.cc', '.cpp', '.cxx', '.c++', '.C++']
-
-def validate_vars(env):
- """Validate the PCH and PCHSTOP construction variables."""
- if 'PCH' in env and env['PCH']:
- if 'PCHSTOP' not in env:
- raise SCons.Errors.UserError("The PCHSTOP construction must be defined if PCH is defined.")
- if not SCons.Util.is_String(env['PCHSTOP']):
- raise SCons.Errors.UserError("The PCHSTOP construction variable must be a string: %r"%env['PCHSTOP'])
-
-def pch_emitter(target, source, env):
- """Adds the object file target."""
-
- validate_vars(env)
-
- pch = None
- obj = None
-
- for t in target:
- if SCons.Util.splitext(str(t))[1] == '.pch':
- pch = t
- if SCons.Util.splitext(str(t))[1] == '.obj':
- obj = t
-
- if not obj:
- obj = SCons.Util.splitext(str(pch))[0]+'.obj'
-
- target = [pch, obj] # pch must be first, and obj second for the PCHCOM to work
-
- return (target, source)
-
-def object_emitter(target, source, env, parent_emitter):
- """Sets up the PCH dependencies for an object file."""
-
- validate_vars(env)
-
- parent_emitter(target, source, env)
-
- # Add a dependency, but only if the target (e.g. 'Source1.obj')
- # doesn't correspond to the pre-compiled header ('Source1.pch').
- # If the basenames match, then this was most likely caused by
- # someone adding the source file to both the env.PCH() and the
- # env.Program() calls, and adding the explicit dependency would
- # cause a cycle on the .pch file itself.
- #
- # See issue #2505 for a discussion of what to do if it turns
- # out this assumption causes trouble in the wild:
- # http://scons.tigris.org/issues/show_bug.cgi?id=2505
- if 'PCH' in env:
- pch = env['PCH']
- if str(target[0]) != SCons.Util.splitext(str(pch))[0] + '.obj':
- env.Depends(target, pch)
-
- return (target, source)
-
-def static_object_emitter(target, source, env):
- return object_emitter(target, source, env,
- SCons.Defaults.StaticObjectEmitter)
-
-def shared_object_emitter(target, source, env):
- return object_emitter(target, source, env,
- SCons.Defaults.SharedObjectEmitter)
-
-pch_action = SCons.Action.Action('$PCHCOM', '$PCHCOMSTR')
-pch_builder = SCons.Builder.Builder(action=pch_action, suffix='.pch',
- emitter=pch_emitter,
- source_scanner=SCons.Tool.SourceFileScanner)
-
-
-# Logic to build .rc files into .res files (resource files)
-res_scanner = SCons.Scanner.RC.RCScan()
-res_action = SCons.Action.Action('$RCCOM', '$RCCOMSTR')
-res_builder = SCons.Builder.Builder(action=res_action,
- src_suffix='.rc',
- suffix='.res',
- src_builder=[],
- source_scanner=res_scanner)
-
-def msvc_batch_key(action, env, target, source):
- """
- Returns a key to identify unique batches of sources for compilation.
-
- If batching is enabled (via the $MSVC_BATCH setting), then all
- target+source pairs that use the same action, defined by the same
- environment, and have the same target and source directories, will
- be batched.
-
- Returning None specifies that the specified target+source should not
- be batched with other compilations.
- """
- b = env.subst('$MSVC_BATCH')
- if b in (None, '', '0'):
- # We're not using batching; return no key.
- return None
- t = target[0]
- s = source[0]
- if os.path.splitext(t.name)[0] != os.path.splitext(s.name)[0]:
- # The base names are different, so this *must* be compiled
- # separately; return no key.
- return None
- return (id(action), id(env), t.dir, s.dir)
-
-def msvc_output_flag(target, source, env, for_signature):
- """
- Returns the correct /Fo flag for batching.
-
- If batching is disabled or there's only one source file, then we
- return an /Fo string that specifies the target explicitly. Otherwise,
- we return an /Fo string that just specifies the first target's
- directory (where the Visual C/C++ compiler will put the .obj files).
- """
- b = env.subst('$MSVC_BATCH')
- if b in (None, '', '0') or len(source) == 1:
- return '/Fo$TARGET'
- else:
- # The Visual C/C++ compiler requires a \ at the end of the /Fo
- # option to indicate an output directory. We use os.sep here so
- # that the test(s) for this can be run on non-Windows systems
- # without having a hard-coded backslash mess up command-line
- # argument parsing.
- return '/Fo${TARGET.dir}' + os.sep
-
-CAction = SCons.Action.Action("$CCCOM", "$CCCOMSTR",
- batch_key=msvc_batch_key,
- targets='$CHANGED_TARGETS')
-ShCAction = SCons.Action.Action("$SHCCCOM", "$SHCCCOMSTR",
- batch_key=msvc_batch_key,
- targets='$CHANGED_TARGETS')
-CXXAction = SCons.Action.Action("$CXXCOM", "$CXXCOMSTR",
- batch_key=msvc_batch_key,
- targets='$CHANGED_TARGETS')
-ShCXXAction = SCons.Action.Action("$SHCXXCOM", "$SHCXXCOMSTR",
- batch_key=msvc_batch_key,
- targets='$CHANGED_TARGETS')
-
-def generate(env):
- """Add Builders and construction variables for MSVC++ to an Environment."""
- static_obj, shared_obj = SCons.Tool.createObjBuilders(env)
-
- # TODO(batch): shouldn't reach in to cmdgen this way; necessary
- # for now to bypass the checks in Builder.DictCmdGenerator.__call__()
- # and allow .cc and .cpp to be compiled in the same command line.
- static_obj.cmdgen.source_ext_match = False
- shared_obj.cmdgen.source_ext_match = False
-
- for suffix in CSuffixes:
- static_obj.add_action(suffix, CAction)
- shared_obj.add_action(suffix, ShCAction)
- static_obj.add_emitter(suffix, static_object_emitter)
- shared_obj.add_emitter(suffix, shared_object_emitter)
-
- for suffix in CXXSuffixes:
- static_obj.add_action(suffix, CXXAction)
- shared_obj.add_action(suffix, ShCXXAction)
- static_obj.add_emitter(suffix, static_object_emitter)
- shared_obj.add_emitter(suffix, shared_object_emitter)
-
- env['CCPDBFLAGS'] = SCons.Util.CLVar(['${(PDB and "/Z7") or ""}'])
- env['CCPCHFLAGS'] = SCons.Util.CLVar(['${(PCH and "/Yu%s /Fp%s"%(PCHSTOP or "",File(PCH))) or ""}'])
- env['_MSVC_OUTPUT_FLAG'] = msvc_output_flag
- env['_CCCOMCOM'] = '$CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS $CCPCHFLAGS $CCPDBFLAGS'
- env['CC'] = 'cl'
- env['CCFLAGS'] = SCons.Util.CLVar('/nologo')
- env['CFLAGS'] = SCons.Util.CLVar('')
- env['CCCOM'] = '$CC $_MSVC_OUTPUT_FLAG /c $CHANGED_SOURCES $CFLAGS $CCFLAGS $_CCCOMCOM'
- env['SHCC'] = '$CC'
- env['SHCCFLAGS'] = SCons.Util.CLVar('$CCFLAGS')
- env['SHCFLAGS'] = SCons.Util.CLVar('$CFLAGS')
- env['SHCCCOM'] = '$SHCC $_MSVC_OUTPUT_FLAG /c $CHANGED_SOURCES $SHCFLAGS $SHCCFLAGS $_CCCOMCOM'
- env['CXX'] = '$CC'
- env['CXXFLAGS'] = SCons.Util.CLVar('$( /TP $)')
- env['CXXCOM'] = '$CXX $_MSVC_OUTPUT_FLAG /c $CHANGED_SOURCES $CXXFLAGS $CCFLAGS $_CCCOMCOM'
- env['SHCXX'] = '$CXX'
- env['SHCXXFLAGS'] = SCons.Util.CLVar('$CXXFLAGS')
- env['SHCXXCOM'] = '$SHCXX $_MSVC_OUTPUT_FLAG /c $CHANGED_SOURCES $SHCXXFLAGS $SHCCFLAGS $_CCCOMCOM'
- env['CPPDEFPREFIX'] = '/D'
- env['CPPDEFSUFFIX'] = ''
- env['INCPREFIX'] = '/I'
- env['INCSUFFIX'] = ''
-# env.Append(OBJEMITTER = [static_object_emitter])
-# env.Append(SHOBJEMITTER = [shared_object_emitter])
- env['STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME'] = 1
-
- env['RC'] = 'rc'
- env['RCFLAGS'] = SCons.Util.CLVar('')
- env['RCSUFFIXES']=['.rc','.rc2']
- env['RCCOM'] = '$RC $_CPPDEFFLAGS $_CPPINCFLAGS $RCFLAGS /fo$TARGET $SOURCES'
- env['BUILDERS']['RES'] = res_builder
- env['OBJPREFIX'] = ''
- env['OBJSUFFIX'] = '.obj'
- env['SHOBJPREFIX'] = '$OBJPREFIX'
- env['SHOBJSUFFIX'] = '$OBJSUFFIX'
-
- # Set-up ms tools paths
- msvc_setup_env_once(env)
-
- env['CFILESUFFIX'] = '.c'
- env['CXXFILESUFFIX'] = '.cc'
-
- env['PCHPDBFLAGS'] = SCons.Util.CLVar(['${(PDB and "/Yd") or ""}'])
- env['PCHCOM'] = '$CXX /Fo${TARGETS[1]} $CXXFLAGS $CCFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS /c $SOURCES /Yc$PCHSTOP /Fp${TARGETS[0]} $CCPDBFLAGS $PCHPDBFLAGS'
- env['BUILDERS']['PCH'] = pch_builder
-
- if 'ENV' not in env:
- env['ENV'] = {}
- if 'SystemRoot' not in env['ENV']: # required for dlls in the winsxs folders
- env['ENV']['SystemRoot'] = SCons.Platform.win32.get_system_root()
-
-def exists(env):
- return msvc_exists()
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/msvs.py b/Externals/scons-local/scons-local-2.0.1/SCons/Tool/msvs.py
deleted file mode 100644
index e6f07e5d7e..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/Tool/msvs.py
+++ /dev/null
@@ -1,1388 +0,0 @@
-"""SCons.Tool.msvs
-
-Tool-specific initialization for Microsoft Visual Studio project files.
-
-There normally shouldn't be any need to import this module directly.
-It will usually be imported through the generic SCons.Tool.Tool()
-selection method.
-
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-__revision__ = "src/engine/SCons/Tool/msvs.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import SCons.compat
-
-import base64
-import hashlib
-import ntpath
-import os
-# compat layer imports "cPickle" for us if it's available.
-import pickle
-import re
-import sys
-
-import SCons.Builder
-import SCons.Node.FS
-import SCons.Platform.win32
-import SCons.Script.SConscript
-import SCons.Util
-import SCons.Warnings
-
-from MSCommon import msvc_exists, msvc_setup_env_once
-from SCons.Defaults import processDefines
-
-##############################################################################
-# Below here are the classes and functions for generation of
-# DSP/DSW/SLN/VCPROJ files.
-##############################################################################
-
-def xmlify(s):
- s = s.replace("&", "&") # do this first
- s = s.replace("'", "'")
- s = s.replace('"', """)
- return s
-
-external_makefile_guid = '{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}'
-
-def _generateGUID(slnfile, name):
- """This generates a dummy GUID for the sln file to use. It is
- based on the MD5 signatures of the sln filename plus the name of
- the project. It basically just needs to be unique, and not
- change with each invocation."""
- m = hashlib.md5()
- # Normalize the slnfile path to a Windows path (\ separators) so
- # the generated file has a consistent GUID even if we generate
- # it on a non-Windows platform.
- m.update(ntpath.normpath(str(slnfile)) + str(name))
- solution = m.hexdigest().upper()
- # convert most of the signature to GUID form (discard the rest)
- solution = "{" + solution[:8] + "-" + solution[8:12] + "-" + solution[12:16] + "-" + solution[16:20] + "-" + solution[20:32] + "}"
- return solution
-
-version_re = re.compile(r'(\d+\.\d+)(.*)')
-
-def msvs_parse_version(s):
- """
- Split a Visual Studio version, which may in fact be something like
- '7.0Exp', into is version number (returned as a float) and trailing
- "suite" portion.
- """
- num, suite = version_re.match(s).groups()
- return float(num), suite
-
-# This is how we re-invoke SCons from inside MSVS Project files.
-# The problem is that we might have been invoked as either scons.bat
-# or scons.py. If we were invoked directly as scons.py, then we could
-# use sys.argv[0] to find the SCons "executable," but that doesn't work
-# if we were invoked as scons.bat, which uses "python -c" to execute
-# things and ends up with "-c" as sys.argv[0]. Consequently, we have
-# the MSVS Project file invoke SCons the same way that scons.bat does,
-# which works regardless of how we were invoked.
-def getExecScriptMain(env, xml=None):
- scons_home = env.get('SCONS_HOME')
- if not scons_home and 'SCONS_LIB_DIR' in os.environ:
- scons_home = os.environ['SCONS_LIB_DIR']
- if scons_home:
- exec_script_main = "from os.path import join; import sys; sys.path = [ r'%s' ] + sys.path; import SCons.Script; SCons.Script.main()" % scons_home
- else:
- version = SCons.__version__
- exec_script_main = "from os.path import join; import sys; sys.path = [ join(sys.prefix, 'Lib', 'site-packages', 'scons-%(version)s'), join(sys.prefix, 'scons-%(version)s'), join(sys.prefix, 'Lib', 'site-packages', 'scons'), join(sys.prefix, 'scons') ] + sys.path; import SCons.Script; SCons.Script.main()" % locals()
- if xml:
- exec_script_main = xmlify(exec_script_main)
- return exec_script_main
-
-# The string for the Python executable we tell the Project file to use
-# is either sys.executable or, if an external PYTHON_ROOT environment
-# variable exists, $(PYTHON)ROOT\\python.exe (generalized a little to
-# pluck the actual executable name from sys.executable).
-try:
- python_root = os.environ['PYTHON_ROOT']
-except KeyError:
- python_executable = sys.executable
-else:
- python_executable = os.path.join('$$(PYTHON_ROOT)',
- os.path.split(sys.executable)[1])
-
-class Config(object):
- pass
-
-def splitFully(path):
- dir, base = os.path.split(path)
- if dir and dir != '' and dir != path:
- return splitFully(dir)+[base]
- if base == '':
- return []
- return [base]
-
-def makeHierarchy(sources):
- '''Break a list of files into a hierarchy; for each value, if it is a string,
- then it is a file. If it is a dictionary, it is a folder. The string is
- the original path of the file.'''
-
- hierarchy = {}
- for file in sources:
- path = splitFully(file)
- if len(path):
- dict = hierarchy
- for part in path[:-1]:
- if part not in dict:
- dict[part] = {}
- dict = dict[part]
- dict[path[-1]] = file
- #else:
- # print 'Warning: failed to decompose path for '+str(file)
- return hierarchy
-
-class _DSPGenerator(object):
- """ Base class for DSP generators """
-
- srcargs = [
- 'srcs',
- 'incs',
- 'localincs',
- 'resources',
- 'misc']
-
- def __init__(self, dspfile, source, env):
- self.dspfile = str(dspfile)
- try:
- get_abspath = dspfile.get_abspath
- except AttributeError:
- self.dspabs = os.path.abspath(dspfile)
- else:
- self.dspabs = get_abspath()
-
- if 'variant' not in env:
- raise SCons.Errors.InternalError("You must specify a 'variant' argument (i.e. 'Debug' or " +\
- "'Release') to create an MSVSProject.")
- elif SCons.Util.is_String(env['variant']):
- variants = [env['variant']]
- elif SCons.Util.is_List(env['variant']):
- variants = env['variant']
-
- if 'buildtarget' not in env or env['buildtarget'] == None:
- buildtarget = ['']
- elif SCons.Util.is_String(env['buildtarget']):
- buildtarget = [env['buildtarget']]
- elif SCons.Util.is_List(env['buildtarget']):
- if len(env['buildtarget']) != len(variants):
- raise SCons.Errors.InternalError("Sizes of 'buildtarget' and 'variant' lists must be the same.")
- buildtarget = []
- for bt in env['buildtarget']:
- if SCons.Util.is_String(bt):
- buildtarget.append(bt)
- else:
- buildtarget.append(bt.get_abspath())
- else:
- buildtarget = [env['buildtarget'].get_abspath()]
- if len(buildtarget) == 1:
- bt = buildtarget[0]
- buildtarget = []
- for _ in variants:
- buildtarget.append(bt)
-
- if 'outdir' not in env or env['outdir'] == None:
- outdir = ['']
- elif SCons.Util.is_String(env['outdir']):
- outdir = [env['outdir']]
- elif SCons.Util.is_List(env['outdir']):
- if len(env['outdir']) != len(variants):
- raise SCons.Errors.InternalError("Sizes of 'outdir' and 'variant' lists must be the same.")
- outdir = []
- for s in env['outdir']:
- if SCons.Util.is_String(s):
- outdir.append(s)
- else:
- outdir.append(s.get_abspath())
- else:
- outdir = [env['outdir'].get_abspath()]
- if len(outdir) == 1:
- s = outdir[0]
- outdir = []
- for v in variants:
- outdir.append(s)
-
- if 'runfile' not in env or env['runfile'] == None:
- runfile = buildtarget[-1:]
- elif SCons.Util.is_String(env['runfile']):
- runfile = [env['runfile']]
- elif SCons.Util.is_List(env['runfile']):
- if len(env['runfile']) != len(variants):
- raise SCons.Errors.InternalError("Sizes of 'runfile' and 'variant' lists must be the same.")
- runfile = []
- for s in env['runfile']:
- if SCons.Util.is_String(s):
- runfile.append(s)
- else:
- runfile.append(s.get_abspath())
- else:
- runfile = [env['runfile'].get_abspath()]
- if len(runfile) == 1:
- s = runfile[0]
- runfile = []
- for v in variants:
- runfile.append(s)
-
- self.sconscript = env['MSVSSCONSCRIPT']
-
- cmdargs = env.get('cmdargs', '')
-
- self.env = env
-
- if 'name' in self.env:
- self.name = self.env['name']
- else:
- self.name = os.path.basename(SCons.Util.splitext(self.dspfile)[0])
- self.name = self.env.subst(self.name)
-
- sourcenames = [
- 'Source Files',
- 'Header Files',
- 'Local Headers',
- 'Resource Files',
- 'Other Files']
-
- self.sources = {}
- for n in sourcenames:
- self.sources[n] = []
-
- self.configs = {}
-
- self.nokeep = 0
- if 'nokeep' in env and env['variant'] != 0:
- self.nokeep = 1
-
- if self.nokeep == 0 and os.path.exists(self.dspabs):
- self.Parse()
-
- for t in zip(sourcenames,self.srcargs):
- if t[1] in self.env:
- if SCons.Util.is_List(self.env[t[1]]):
- for i in self.env[t[1]]:
- if not i in self.sources[t[0]]:
- self.sources[t[0]].append(i)
- else:
- if not self.env[t[1]] in self.sources[t[0]]:
- self.sources[t[0]].append(self.env[t[1]])
-
- for n in sourcenames:
- #TODO 2.4: compat layer supports sorted(key=) but not sort(key=)
- #TODO 2.4: self.sources[n].sort(key=lambda a: a.lower())
- self.sources[n] = sorted(self.sources[n], key=lambda a: a.lower())
-
- def AddConfig(self, variant, buildtarget, outdir, runfile, cmdargs, dspfile=dspfile):
- config = Config()
- config.buildtarget = buildtarget
- config.outdir = outdir
- config.cmdargs = cmdargs
- config.runfile = runfile
-
- match = re.match('(.*)\|(.*)', variant)
- if match:
- config.variant = match.group(1)
- config.platform = match.group(2)
- else:
- config.variant = variant
- config.platform = 'Win32'
-
- self.configs[variant] = config
- print "Adding '" + self.name + ' - ' + config.variant + '|' + config.platform + "' to '" + str(dspfile) + "'"
-
- for i in range(len(variants)):
- AddConfig(self, variants[i], buildtarget[i], outdir[i], runfile[i], cmdargs)
-
- self.platforms = []
- for key in self.configs.keys():
- platform = self.configs[key].platform
- if not platform in self.platforms:
- self.platforms.append(platform)
-
- def Build(self):
- pass
-
-V6DSPHeader = """\
-# Microsoft Developer Studio Project File - Name="%(name)s" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) External Target" 0x0106
-
-CFG=%(name)s - Win32 %(confkey)s
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "%(name)s.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "%(name)s.mak" CFG="%(name)s - Win32 %(confkey)s"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-"""
-
-class _GenerateV6DSP(_DSPGenerator):
- """Generates a Project file for MSVS 6.0"""
-
- def PrintHeader(self):
- # pick a default config
- confkeys = sorted(self.configs.keys())
-
- name = self.name
- confkey = confkeys[0]
-
- self.file.write(V6DSPHeader % locals())
-
- for kind in confkeys:
- self.file.write('!MESSAGE "%s - Win32 %s" (based on "Win32 (x86) External Target")\n' % (name, kind))
-
- self.file.write('!MESSAGE \n\n')
-
- def PrintProject(self):
- name = self.name
- self.file.write('# Begin Project\n'
- '# PROP AllowPerConfigDependencies 0\n'
- '# PROP Scc_ProjName ""\n'
- '# PROP Scc_LocalPath ""\n\n')
-
- first = 1
- confkeys = sorted(self.configs.keys())
- for kind in confkeys:
- outdir = self.configs[kind].outdir
- buildtarget = self.configs[kind].buildtarget
- if first == 1:
- self.file.write('!IF "$(CFG)" == "%s - Win32 %s"\n\n' % (name, kind))
- first = 0
- else:
- self.file.write('\n!ELSEIF "$(CFG)" == "%s - Win32 %s"\n\n' % (name, kind))
-
- env_has_buildtarget = 'MSVSBUILDTARGET' in self.env
- if not env_has_buildtarget:
- self.env['MSVSBUILDTARGET'] = buildtarget
-
- # have to write this twice, once with the BASE settings, and once without
- for base in ("BASE ",""):
- self.file.write('# PROP %sUse_MFC 0\n'
- '# PROP %sUse_Debug_Libraries ' % (base, base))
- if kind.lower().find('debug') < 0:
- self.file.write('0\n')
- else:
- self.file.write('1\n')
- self.file.write('# PROP %sOutput_Dir "%s"\n'
- '# PROP %sIntermediate_Dir "%s"\n' % (base,outdir,base,outdir))
- cmd = 'echo Starting SCons && ' + self.env.subst('$MSVSBUILDCOM', 1)
- self.file.write('# PROP %sCmd_Line "%s"\n'
- '# PROP %sRebuild_Opt "-c && %s"\n'
- '# PROP %sTarget_File "%s"\n'
- '# PROP %sBsc_Name ""\n'
- '# PROP %sTarget_Dir ""\n'\
- %(base,cmd,base,cmd,base,buildtarget,base,base))
-
- if not env_has_buildtarget:
- del self.env['MSVSBUILDTARGET']
-
- self.file.write('\n!ENDIF\n\n'
- '# Begin Target\n\n')
- for kind in confkeys:
- self.file.write('# Name "%s - Win32 %s"\n' % (name,kind))
- self.file.write('\n')
- first = 0
- for kind in confkeys:
- if first == 0:
- self.file.write('!IF "$(CFG)" == "%s - Win32 %s"\n\n' % (name,kind))
- first = 1
- else:
- self.file.write('!ELSEIF "$(CFG)" == "%s - Win32 %s"\n\n' % (name,kind))
- self.file.write('!ENDIF \n\n')
- self.PrintSourceFiles()
- self.file.write('# End Target\n'
- '# End Project\n')
-
- if self.nokeep == 0:
- # now we pickle some data and add it to the file -- MSDEV will ignore it.
- pdata = pickle.dumps(self.configs,1)
- pdata = base64.encodestring(pdata)
- self.file.write(pdata + '\n')
- pdata = pickle.dumps(self.sources,1)
- pdata = base64.encodestring(pdata)
- self.file.write(pdata + '\n')
-
- def PrintSourceFiles(self):
- categories = {'Source Files': 'cpp|c|cxx|l|y|def|odl|idl|hpj|bat',
- 'Header Files': 'h|hpp|hxx|hm|inl',
- 'Local Headers': 'h|hpp|hxx|hm|inl',
- 'Resource Files': 'r|rc|ico|cur|bmp|dlg|rc2|rct|bin|cnt|rtf|gif|jpg|jpeg|jpe',
- 'Other Files': ''}
-
- for kind in sorted(categories.keys(), key=lambda a: a.lower()):
- if not self.sources[kind]:
- continue # skip empty groups
-
- self.file.write('# Begin Group "' + kind + '"\n\n')
- typelist = categories[kind].replace('|', ';')
- self.file.write('# PROP Default_Filter "' + typelist + '"\n')
-
- for file in self.sources[kind]:
- file = os.path.normpath(file)
- self.file.write('# Begin Source File\n\n'
- 'SOURCE="' + file + '"\n'
- '# End Source File\n')
- self.file.write('# End Group\n')
-
- # add the SConscript file outside of the groups
- self.file.write('# Begin Source File\n\n'
- 'SOURCE="' + str(self.sconscript) + '"\n'
- '# End Source File\n')
-
- def Parse(self):
- try:
- dspfile = open(self.dspabs,'r')
- except IOError:
- return # doesn't exist yet, so can't add anything to configs.
-
- line = dspfile.readline()
- while line:
- if line.find("# End Project") > -1:
- break
- line = dspfile.readline()
-
- line = dspfile.readline()
- datas = line
- while line and line != '\n':
- line = dspfile.readline()
- datas = datas + line
-
- # OK, we've found our little pickled cache of data.
- try:
- datas = base64.decodestring(datas)
- data = pickle.loads(datas)
- except KeyboardInterrupt:
- raise
- except:
- return # unable to unpickle any data for some reason
-
- self.configs.update(data)
-
- data = None
- line = dspfile.readline()
- datas = line
- while line and line != '\n':
- line = dspfile.readline()
- datas = datas + line
-
- # OK, we've found our little pickled cache of data.
- # it has a "# " in front of it, so we strip that.
- try:
- datas = base64.decodestring(datas)
- data = pickle.loads(datas)
- except KeyboardInterrupt:
- raise
- except:
- return # unable to unpickle any data for some reason
-
- self.sources.update(data)
-
- def Build(self):
- try:
- self.file = open(self.dspabs,'w')
- except IOError, detail:
- raise SCons.Errors.InternalError('Unable to open "' + self.dspabs + '" for writing:' + str(detail))
- else:
- self.PrintHeader()
- self.PrintProject()
- self.file.close()
-
-V7DSPHeader = """\
-
-
-"""
-
-V7DSPConfiguration = """\
-\t\t
-\t\t\t
-\t\t
-"""
-
-V8DSPHeader = """\
-
-
-"""
-
-V8DSPConfiguration = """\
-\t\t
-\t\t\t
-\t\t
-"""
-class _GenerateV7DSP(_DSPGenerator):
- """Generates a Project file for MSVS .NET"""
-
- def __init__(self, dspfile, source, env):
- _DSPGenerator.__init__(self, dspfile, source, env)
- self.version = env['MSVS_VERSION']
- self.version_num, self.suite = msvs_parse_version(self.version)
- if self.version_num >= 8.0:
- self.versionstr = '8.00'
- self.dspheader = V8DSPHeader
- self.dspconfiguration = V8DSPConfiguration
- else:
- if self.version_num >= 7.1:
- self.versionstr = '7.10'
- else:
- self.versionstr = '7.00'
- self.dspheader = V7DSPHeader
- self.dspconfiguration = V7DSPConfiguration
- self.file = None
-
- def PrintHeader(self):
- env = self.env
- versionstr = self.versionstr
- name = self.name
- encoding = self.env.subst('$MSVSENCODING')
- scc_provider = env.get('MSVS_SCC_PROVIDER', '')
- scc_project_name = env.get('MSVS_SCC_PROJECT_NAME', '')
- scc_aux_path = env.get('MSVS_SCC_AUX_PATH', '')
- scc_local_path = env.get('MSVS_SCC_LOCAL_PATH', '')
- project_guid = env.get('MSVS_PROJECT_GUID', '')
- if self.version_num >= 8.0 and not project_guid:
- project_guid = _generateGUID(self.dspfile, '')
- if scc_provider != '':
- scc_attrs = ('\tProjectGUID="%s"\n'
- '\tSccProjectName="%s"\n'
- '\tSccAuxPath="%s"\n'
- '\tSccLocalPath="%s"\n'
- '\tSccProvider="%s"' % (project_guid, scc_project_name, scc_aux_path, scc_local_path, scc_provider))
- else:
- scc_attrs = ('\tProjectGUID="%s"\n'
- '\tSccProjectName="%s"\n'
- '\tSccLocalPath="%s"' % (project_guid, scc_project_name, scc_local_path))
-
- self.file.write(self.dspheader % locals())
-
- self.file.write('\t\n')
- for platform in self.platforms:
- self.file.write(
- '\t\t\n' % platform)
- self.file.write('\t\n')
-
- if self.version_num >= 8.0:
- self.file.write('\t\n'
- '\t\n')
-
- def PrintProject(self):
- self.file.write('\t\n')
-
- confkeys = sorted(self.configs.keys())
- for kind in confkeys:
- variant = self.configs[kind].variant
- platform = self.configs[kind].platform
- outdir = self.configs[kind].outdir
- buildtarget = self.configs[kind].buildtarget
- runfile = self.configs[kind].runfile
- cmdargs = self.configs[kind].cmdargs
-
- env_has_buildtarget = 'MSVSBUILDTARGET' in self.env
- if not env_has_buildtarget:
- self.env['MSVSBUILDTARGET'] = buildtarget
-
- starting = 'echo Starting SCons && '
- if cmdargs:
- cmdargs = ' ' + cmdargs
- else:
- cmdargs = ''
- buildcmd = xmlify(starting + self.env.subst('$MSVSBUILDCOM', 1) + cmdargs)
- rebuildcmd = xmlify(starting + self.env.subst('$MSVSREBUILDCOM', 1) + cmdargs)
- cleancmd = xmlify(starting + self.env.subst('$MSVSCLEANCOM', 1) + cmdargs)
-
- preprocdefs = xmlify(';'.join(processDefines(self.env.get('CPPDEFINES', []))))
- includepath = xmlify(';'.join(self.env.get('CPPPATH', [])))
-
- if not env_has_buildtarget:
- del self.env['MSVSBUILDTARGET']
-
- self.file.write(self.dspconfiguration % locals())
-
- self.file.write('\t\n')
-
- if self.version_num >= 7.1:
- self.file.write('\t\n'
- '\t\n')
-
- self.PrintSourceFiles()
-
- self.file.write('\n')
-
- if self.nokeep == 0:
- # now we pickle some data and add it to the file -- MSDEV will ignore it.
- pdata = pickle.dumps(self.configs,1)
- pdata = base64.encodestring(pdata)
- self.file.write('\n')
-
- def printSources(self, hierarchy, commonprefix):
- sorteditems = sorted(hierarchy.items(), key=lambda a: a[0].lower())
-
- # First folders, then files
- for key, value in sorteditems:
- if SCons.Util.is_Dict(value):
- self.file.write('\t\t\t\n' % (key))
- self.printSources(value, commonprefix)
- self.file.write('\t\t\t\n')
-
- for key, value in sorteditems:
- if SCons.Util.is_String(value):
- file = value
- if commonprefix:
- file = os.path.join(commonprefix, value)
- file = os.path.normpath(file)
- self.file.write('\t\t\t\n'
- '\t\t\t\n' % (file))
-
- def PrintSourceFiles(self):
- categories = {'Source Files': 'cpp;c;cxx;l;y;def;odl;idl;hpj;bat',
- 'Header Files': 'h;hpp;hxx;hm;inl',
- 'Local Headers': 'h;hpp;hxx;hm;inl',
- 'Resource Files': 'r;rc;ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe',
- 'Other Files': ''}
-
- self.file.write('\t\n')
-
- cats = sorted([k for k in categories.keys() if self.sources[k]],
- key=lambda a: a.lower())
- for kind in cats:
- if len(cats) > 1:
- self.file.write('\t\t\n' % (kind, categories[kind]))
-
- sources = self.sources[kind]
-
- # First remove any common prefix
- commonprefix = None
- if len(sources) > 1:
- s = list(map(os.path.normpath, sources))
- # take the dirname because the prefix may include parts
- # of the filenames (e.g. if you have 'dir\abcd' and
- # 'dir\acde' then the cp will be 'dir\a' )
- cp = os.path.dirname( os.path.commonprefix(s) )
- if cp and s[0][len(cp)] == os.sep:
- # +1 because the filename starts after the separator
- sources = [s[len(cp)+1:] for s in sources]
- commonprefix = cp
- elif len(sources) == 1:
- commonprefix = os.path.dirname( sources[0] )
- sources[0] = os.path.basename( sources[0] )
-
- hierarchy = makeHierarchy(sources)
- self.printSources(hierarchy, commonprefix=commonprefix)
-
- if len(cats)>1:
- self.file.write('\t\t\n')
-
- # add the SConscript file outside of the groups
- self.file.write('\t\t\n'
- '\t\t\n' % str(self.sconscript))
-
- self.file.write('\t\n'
- '\t\n'
- '\t\n')
-
- def Parse(self):
- try:
- dspfile = open(self.dspabs,'r')
- except IOError:
- return # doesn't exist yet, so can't add anything to configs.
-
- line = dspfile.readline()
- while line:
- if line.find(' p2cread
- # c2pread <--stdout--- c2pwrite
- # errread <--stderr--- errwrite
- #
- # On POSIX, the child objects are file descriptors. On
- # Windows, these are Windows file handles. The parent objects
- # are file descriptors on both platforms. The parent objects
- # are None when not using PIPEs. The child objects are None
- # when not redirecting.
-
- (p2cread, p2cwrite,
- c2pread, c2pwrite,
- errread, errwrite) = self._get_handles(stdin, stdout, stderr)
-
- self._execute_child(args, executable, preexec_fn, close_fds,
- cwd, env, universal_newlines,
- startupinfo, creationflags, shell,
- p2cread, p2cwrite,
- c2pread, c2pwrite,
- errread, errwrite)
-
- if p2cwrite:
- self.stdin = os.fdopen(p2cwrite, 'wb', bufsize)
- if c2pread:
- if universal_newlines:
- self.stdout = os.fdopen(c2pread, 'rU', bufsize)
- else:
- self.stdout = os.fdopen(c2pread, 'rb', bufsize)
- if errread:
- if universal_newlines:
- self.stderr = os.fdopen(errread, 'rU', bufsize)
- else:
- self.stderr = os.fdopen(errread, 'rb', bufsize)
-
-
- def _translate_newlines(self, data):
- data = data.replace("\r\n", "\n")
- data = data.replace("\r", "\n")
- return data
-
-
- def __del__(self):
- if not self._child_created:
- # We didn't get to successfully create a child process.
- return
- # In case the child hasn't been waited on, check if it's done.
- self.poll(_deadstate=sys.maxsize)
- if self.returncode is None and _active is not None:
- # Child is still running, keep us alive until we can wait on it.
- _active.append(self)
-
-
- def communicate(self, input=None):
- """Interact with process: Send data to stdin. Read data from
- stdout and stderr, until end-of-file is reached. Wait for
- process to terminate. The optional input argument should be a
- string to be sent to the child process, or None, if no data
- should be sent to the child.
-
- communicate() returns a tuple (stdout, stderr)."""
-
- # Optimization: If we are only using one pipe, or no pipe at
- # all, using select() or threads is unnecessary.
- if [self.stdin, self.stdout, self.stderr].count(None) >= 2:
- stdout = None
- stderr = None
- if self.stdin:
- if input:
- self.stdin.write(input)
- self.stdin.close()
- elif self.stdout:
- stdout = self.stdout.read()
- elif self.stderr:
- stderr = self.stderr.read()
- self.wait()
- return (stdout, stderr)
-
- return self._communicate(input)
-
-
- if mswindows:
- #
- # Windows methods
- #
- def _get_handles(self, stdin, stdout, stderr):
- """Construct and return tupel with IO objects:
- p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite
- """
- if stdin is None and stdout is None and stderr is None:
- return (None, None, None, None, None, None)
-
- p2cread, p2cwrite = None, None
- c2pread, c2pwrite = None, None
- errread, errwrite = None, None
-
- if stdin is None:
- p2cread = GetStdHandle(STD_INPUT_HANDLE)
- elif stdin == PIPE:
- p2cread, p2cwrite = CreatePipe(None, 0)
- # Detach and turn into fd
- p2cwrite = p2cwrite.Detach()
- p2cwrite = msvcrt.open_osfhandle(p2cwrite, 0)
- elif is_int(stdin):
- p2cread = msvcrt.get_osfhandle(stdin)
- else:
- # Assuming file-like object
- p2cread = msvcrt.get_osfhandle(stdin.fileno())
- p2cread = self._make_inheritable(p2cread)
-
- if stdout is None:
- c2pwrite = GetStdHandle(STD_OUTPUT_HANDLE)
- elif stdout == PIPE:
- c2pread, c2pwrite = CreatePipe(None, 0)
- # Detach and turn into fd
- c2pread = c2pread.Detach()
- c2pread = msvcrt.open_osfhandle(c2pread, 0)
- elif is_int(stdout):
- c2pwrite = msvcrt.get_osfhandle(stdout)
- else:
- # Assuming file-like object
- c2pwrite = msvcrt.get_osfhandle(stdout.fileno())
- c2pwrite = self._make_inheritable(c2pwrite)
-
- if stderr is None:
- errwrite = GetStdHandle(STD_ERROR_HANDLE)
- elif stderr == PIPE:
- errread, errwrite = CreatePipe(None, 0)
- # Detach and turn into fd
- errread = errread.Detach()
- errread = msvcrt.open_osfhandle(errread, 0)
- elif stderr == STDOUT:
- errwrite = c2pwrite
- elif is_int(stderr):
- errwrite = msvcrt.get_osfhandle(stderr)
- else:
- # Assuming file-like object
- errwrite = msvcrt.get_osfhandle(stderr.fileno())
- errwrite = self._make_inheritable(errwrite)
-
- return (p2cread, p2cwrite,
- c2pread, c2pwrite,
- errread, errwrite)
-
-
- def _make_inheritable(self, handle):
- """Return a duplicate of handle, which is inheritable"""
- return DuplicateHandle(GetCurrentProcess(), handle,
- GetCurrentProcess(), 0, 1,
- DUPLICATE_SAME_ACCESS)
-
-
- def _find_w9xpopen(self):
- """Find and return absolut path to w9xpopen.exe"""
- w9xpopen = os.path.join(os.path.dirname(GetModuleFileName(0)),
- "w9xpopen.exe")
- if not os.path.exists(w9xpopen):
- # Eeek - file-not-found - possibly an embedding
- # situation - see if we can locate it in sys.exec_prefix
- w9xpopen = os.path.join(os.path.dirname(sys.exec_prefix),
- "w9xpopen.exe")
- if not os.path.exists(w9xpopen):
- raise RuntimeError("Cannot locate w9xpopen.exe, which is "
- "needed for Popen to work with your "
- "shell or platform.")
- return w9xpopen
-
-
- def _execute_child(self, args, executable, preexec_fn, close_fds,
- cwd, env, universal_newlines,
- startupinfo, creationflags, shell,
- p2cread, p2cwrite,
- c2pread, c2pwrite,
- errread, errwrite):
- """Execute program (MS Windows version)"""
-
- if not isinstance(args, types.StringTypes):
- args = list2cmdline(args)
-
- # Process startup details
- if startupinfo is None:
- startupinfo = STARTUPINFO()
- if None not in (p2cread, c2pwrite, errwrite):
- startupinfo.dwFlags = startupinfo.dwFlags | STARTF_USESTDHANDLES
- startupinfo.hStdInput = p2cread
- startupinfo.hStdOutput = c2pwrite
- startupinfo.hStdError = errwrite
-
- if shell:
- startupinfo.dwFlags = startupinfo.dwFlags | STARTF_USESHOWWINDOW
- startupinfo.wShowWindow = SW_HIDE
- comspec = os.environ.get("COMSPEC", "cmd.exe")
- args = comspec + " /c " + args
- if (GetVersion() >= 0x80000000L or
- os.path.basename(comspec).lower() == "command.com"):
- # Win9x, or using command.com on NT. We need to
- # use the w9xpopen intermediate program. For more
- # information, see KB Q150956
- # (http://web.archive.org/web/20011105084002/http://support.microsoft.com/support/kb/articles/Q150/9/56.asp)
- w9xpopen = self._find_w9xpopen()
- args = '"%s" %s' % (w9xpopen, args)
- # Not passing CREATE_NEW_CONSOLE has been known to
- # cause random failures on win9x. Specifically a
- # dialog: "Your program accessed mem currently in
- # use at xxx" and a hopeful warning about the
- # stability of your system. Cost is Ctrl+C wont
- # kill children.
- creationflags = creationflags | CREATE_NEW_CONSOLE
-
- # Start the process
- try:
- hp, ht, pid, tid = CreateProcess(executable, args,
- # no special security
- None, None,
- # must inherit handles to pass std
- # handles
- 1,
- creationflags,
- env,
- cwd,
- startupinfo)
- except pywintypes.error, e:
- # Translate pywintypes.error to WindowsError, which is
- # a subclass of OSError. FIXME: We should really
- # translate errno using _sys_errlist (or simliar), but
- # how can this be done from Python?
- raise WindowsError(*e.args)
-
- # Retain the process handle, but close the thread handle
- self._child_created = True
- self._handle = hp
- self.pid = pid
- ht.Close()
-
- # Child is launched. Close the parent's copy of those pipe
- # handles that only the child should have open. You need
- # to make sure that no handles to the write end of the
- # output pipe are maintained in this process or else the
- # pipe will not close when the child process exits and the
- # ReadFile will hang.
- if p2cread is not None:
- p2cread.Close()
- if c2pwrite is not None:
- c2pwrite.Close()
- if errwrite is not None:
- errwrite.Close()
-
-
- def poll(self, _deadstate=None):
- """Check if child process has terminated. Returns returncode
- attribute."""
- if self.returncode is None:
- if WaitForSingleObject(self._handle, 0) == WAIT_OBJECT_0:
- self.returncode = GetExitCodeProcess(self._handle)
- return self.returncode
-
-
- def wait(self):
- """Wait for child process to terminate. Returns returncode
- attribute."""
- if self.returncode is None:
- obj = WaitForSingleObject(self._handle, INFINITE)
- self.returncode = GetExitCodeProcess(self._handle)
- return self.returncode
-
-
- def _readerthread(self, fh, buffer):
- buffer.append(fh.read())
-
-
- def _communicate(self, input):
- stdout = None # Return
- stderr = None # Return
-
- if self.stdout:
- stdout = []
- stdout_thread = threading.Thread(target=self._readerthread,
- args=(self.stdout, stdout))
- stdout_thread.setDaemon(True)
- stdout_thread.start()
- if self.stderr:
- stderr = []
- stderr_thread = threading.Thread(target=self._readerthread,
- args=(self.stderr, stderr))
- stderr_thread.setDaemon(True)
- stderr_thread.start()
-
- if self.stdin:
- if input is not None:
- self.stdin.write(input)
- self.stdin.close()
-
- if self.stdout:
- stdout_thread.join()
- if self.stderr:
- stderr_thread.join()
-
- # All data exchanged. Translate lists into strings.
- if stdout is not None:
- stdout = stdout[0]
- if stderr is not None:
- stderr = stderr[0]
-
- # Translate newlines, if requested. We cannot let the file
- # object do the translation: It is based on stdio, which is
- # impossible to combine with select (unless forcing no
- # buffering).
- if self.universal_newlines and hasattr(file, 'newlines'):
- if stdout:
- stdout = self._translate_newlines(stdout)
- if stderr:
- stderr = self._translate_newlines(stderr)
-
- self.wait()
- return (stdout, stderr)
-
- else:
- #
- # POSIX methods
- #
- def _get_handles(self, stdin, stdout, stderr):
- """Construct and return tupel with IO objects:
- p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite
- """
- p2cread, p2cwrite = None, None
- c2pread, c2pwrite = None, None
- errread, errwrite = None, None
-
- if stdin is None:
- pass
- elif stdin == PIPE:
- p2cread, p2cwrite = os.pipe()
- elif is_int(stdin):
- p2cread = stdin
- else:
- # Assuming file-like object
- p2cread = stdin.fileno()
-
- if stdout is None:
- pass
- elif stdout == PIPE:
- c2pread, c2pwrite = os.pipe()
- elif is_int(stdout):
- c2pwrite = stdout
- else:
- # Assuming file-like object
- c2pwrite = stdout.fileno()
-
- if stderr is None:
- pass
- elif stderr == PIPE:
- errread, errwrite = os.pipe()
- elif stderr == STDOUT:
- errwrite = c2pwrite
- elif is_int(stderr):
- errwrite = stderr
- else:
- # Assuming file-like object
- errwrite = stderr.fileno()
-
- return (p2cread, p2cwrite,
- c2pread, c2pwrite,
- errread, errwrite)
-
-
- def _set_cloexec_flag(self, fd):
- try:
- cloexec_flag = fcntl.FD_CLOEXEC
- except AttributeError:
- cloexec_flag = 1
-
- old = fcntl.fcntl(fd, fcntl.F_GETFD)
- fcntl.fcntl(fd, fcntl.F_SETFD, old | cloexec_flag)
-
-
- def _close_fds(self, but):
- for i in range(3, MAXFD):
- if i == but:
- continue
- try:
- os.close(i)
- except KeyboardInterrupt:
- raise # SCons: don't swallow keyboard interrupts
- except:
- pass
-
-
- def _execute_child(self, args, executable, preexec_fn, close_fds,
- cwd, env, universal_newlines,
- startupinfo, creationflags, shell,
- p2cread, p2cwrite,
- c2pread, c2pwrite,
- errread, errwrite):
- """Execute program (POSIX version)"""
-
- if is_string(args):
- args = [args]
-
- if shell:
- args = ["/bin/sh", "-c"] + args
-
- if executable is None:
- executable = args[0]
-
- # For transferring possible exec failure from child to parent
- # The first char specifies the exception type: 0 means
- # OSError, 1 means some other error.
- errpipe_read, errpipe_write = os.pipe()
- self._set_cloexec_flag(errpipe_write)
-
- self.pid = os.fork()
- self._child_created = True
- if self.pid == 0:
- # Child
- try:
- # Close parent's pipe ends
- if p2cwrite:
- os.close(p2cwrite)
- if c2pread:
- os.close(c2pread)
- if errread:
- os.close(errread)
- os.close(errpipe_read)
-
- # Dup fds for child
- if p2cread:
- os.dup2(p2cread, 0)
- if c2pwrite:
- os.dup2(c2pwrite, 1)
- if errwrite:
- os.dup2(errwrite, 2)
-
- # Close pipe fds. Make sure we don't close the same
- # fd more than once, or standard fds.
- try:
- set
- except NameError:
- # Fall-back for earlier Python versions, so epydoc
- # can use this module directly to execute things.
- if p2cread:
- os.close(p2cread)
- if c2pwrite and c2pwrite not in (p2cread,):
- os.close(c2pwrite)
- if errwrite and errwrite not in (p2cread, c2pwrite):
- os.close(errwrite)
- else:
- for fd in set((p2cread, c2pwrite, errwrite))-set((0,1,2)):
- if fd: os.close(fd)
-
- # Close all other fds, if asked for
- if close_fds:
- self._close_fds(but=errpipe_write)
-
- if cwd is not None:
- os.chdir(cwd)
-
- if preexec_fn:
- apply(preexec_fn)
-
- if env is None:
- os.execvp(executable, args)
- else:
- os.execvpe(executable, args, env)
-
- except KeyboardInterrupt:
- raise # SCons: don't swallow keyboard interrupts
-
- except:
- exc_type, exc_value, tb = sys.exc_info()
- # Save the traceback and attach it to the exception object
- exc_lines = traceback.format_exception(exc_type,
- exc_value,
- tb)
- exc_value.child_traceback = ''.join(exc_lines)
- os.write(errpipe_write, pickle.dumps(exc_value))
-
- # This exitcode won't be reported to applications, so it
- # really doesn't matter what we return.
- os._exit(255)
-
- # Parent
- os.close(errpipe_write)
- if p2cread and p2cwrite:
- os.close(p2cread)
- if c2pwrite and c2pread:
- os.close(c2pwrite)
- if errwrite and errread:
- os.close(errwrite)
-
- # Wait for exec to fail or succeed; possibly raising exception
- data = os.read(errpipe_read, 1048576) # Exceptions limited to 1 MB
- os.close(errpipe_read)
- if data != "":
- os.waitpid(self.pid, 0)
- child_exception = pickle.loads(data)
- raise child_exception
-
-
- def _handle_exitstatus(self, sts):
- if os.WIFSIGNALED(sts):
- self.returncode = -os.WTERMSIG(sts)
- elif os.WIFEXITED(sts):
- self.returncode = os.WEXITSTATUS(sts)
- else:
- # Should never happen
- raise RuntimeError("Unknown child exit status!")
-
-
- def poll(self, _deadstate=None):
- """Check if child process has terminated. Returns returncode
- attribute."""
- if self.returncode is None:
- try:
- pid, sts = os.waitpid(self.pid, os.WNOHANG)
- if pid == self.pid:
- self._handle_exitstatus(sts)
- except os.error:
- if _deadstate is not None:
- self.returncode = _deadstate
- return self.returncode
-
-
- def wait(self):
- """Wait for child process to terminate. Returns returncode
- attribute."""
- if self.returncode is None:
- pid, sts = os.waitpid(self.pid, 0)
- self._handle_exitstatus(sts)
- return self.returncode
-
-
- def _communicate(self, input):
- read_set = []
- write_set = []
- stdout = None # Return
- stderr = None # Return
-
- if self.stdin:
- # Flush stdio buffer. This might block, if the user has
- # been writing to .stdin in an uncontrolled fashion.
- self.stdin.flush()
- if input:
- write_set.append(self.stdin)
- else:
- self.stdin.close()
- if self.stdout:
- read_set.append(self.stdout)
- stdout = []
- if self.stderr:
- read_set.append(self.stderr)
- stderr = []
-
- input_offset = 0
- while read_set or write_set:
- rlist, wlist, xlist = select.select(read_set, write_set, [])
-
- if self.stdin in wlist:
- # When select has indicated that the file is writable,
- # we can write up to PIPE_BUF bytes without risk
- # blocking. POSIX defines PIPE_BUF >= 512
- m = memoryview(input)[input_offset:input_offset+512]
- bytes_written = os.write(self.stdin.fileno(), m)
- input_offset = input_offset + bytes_written
- if input_offset >= len(input):
- self.stdin.close()
- write_set.remove(self.stdin)
-
- if self.stdout in rlist:
- data = os.read(self.stdout.fileno(), 1024)
- if data == "":
- self.stdout.close()
- read_set.remove(self.stdout)
- stdout.append(data)
-
- if self.stderr in rlist:
- data = os.read(self.stderr.fileno(), 1024)
- if data == "":
- self.stderr.close()
- read_set.remove(self.stderr)
- stderr.append(data)
-
- # All data exchanged. Translate lists into strings.
- if stdout is not None:
- stdout = ''.join(stdout)
- if stderr is not None:
- stderr = ''.join(stderr)
-
- # Translate newlines, if requested. We cannot let the file
- # object do the translation: It is based on stdio, which is
- # impossible to combine with select (unless forcing no
- # buffering).
- if self.universal_newlines and hasattr(file, 'newlines'):
- if stdout:
- stdout = self._translate_newlines(stdout)
- if stderr:
- stderr = self._translate_newlines(stderr)
-
- self.wait()
- return (stdout, stderr)
-
-
-def _demo_posix():
- #
- # Example 1: Simple redirection: Get process list
- #
- plist = Popen(["ps"], stdout=PIPE).communicate()[0]
- print "Process list:"
- print plist
-
- #
- # Example 2: Change uid before executing child
- #
- if os.getuid() == 0:
- p = Popen(["id"], preexec_fn=lambda: os.setuid(100))
- p.wait()
-
- #
- # Example 3: Connecting several subprocesses
- #
- print "Looking for 'hda'..."
- p1 = Popen(["dmesg"], stdout=PIPE)
- p2 = Popen(["grep", "hda"], stdin=p1.stdout, stdout=PIPE)
- print repr(p2.communicate()[0])
-
- #
- # Example 4: Catch execution error
- #
- print
- print "Trying a weird file..."
- try:
- print Popen(["/this/path/does/not/exist"]).communicate()
- except OSError, e:
- if e.errno == errno.ENOENT:
- print "The file didn't exist. I thought so..."
- print "Child traceback:"
- print e.child_traceback
- else:
- print "Error", e.errno
- else:
- sys.stderr.write( "Gosh. No error.\n" )
-
-
-def _demo_windows():
- #
- # Example 1: Connecting several subprocesses
- #
- print "Looking for 'PROMPT' in set output..."
- p1 = Popen("set", stdout=PIPE, shell=True)
- p2 = Popen('find "PROMPT"', stdin=p1.stdout, stdout=PIPE)
- print repr(p2.communicate()[0])
-
- #
- # Example 2: Simple execution of program
- #
- print "Executing calc..."
- p = Popen("calc")
- p.wait()
-
-
-if __name__ == "__main__":
- if mswindows:
- _demo_windows()
- else:
- _demo_posix()
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/cpp.py b/Externals/scons-local/scons-local-2.0.1/SCons/cpp.py
deleted file mode 100644
index 496d3f48ac..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/cpp.py
+++ /dev/null
@@ -1,589 +0,0 @@
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/cpp.py 5134 2010/08/16 23:02:40 bdeegan"
-
-__doc__ = """
-SCons C Pre-Processor module
-"""
-#TODO 2.3 and before has no sorted()
-import SCons.compat
-
-import os
-import re
-
-#
-# First "subsystem" of regular expressions that we set up:
-#
-# Stuff to turn the C preprocessor directives in a file's contents into
-# a list of tuples that we can process easily.
-#
-
-# A table of regular expressions that fetch the arguments from the rest of
-# a C preprocessor line. Different directives have different arguments
-# that we want to fetch, using the regular expressions to which the lists
-# of preprocessor directives map.
-cpp_lines_dict = {
- # Fetch the rest of a #if/#elif/#ifdef/#ifndef as one argument,
- # separated from the keyword by white space.
- ('if', 'elif', 'ifdef', 'ifndef',)
- : '\s+(.+)',
-
- # Fetch the rest of a #import/#include/#include_next line as one
- # argument, with white space optional.
- ('import', 'include', 'include_next',)
- : '\s*(.+)',
-
- # We don't care what comes after a #else or #endif line.
- ('else', 'endif',) : '',
-
- # Fetch three arguments from a #define line:
- # 1) The #defined keyword.
- # 2) The optional parentheses and arguments (if it's a function-like
- # macro, '' if it's not).
- # 3) The expansion value.
- ('define',) : '\s+([_A-Za-z][_A-Za-z0-9_]*)(\([^)]*\))?\s*(.*)',
-
- # Fetch the #undefed keyword from a #undef line.
- ('undef',) : '\s+([_A-Za-z][A-Za-z0-9_]*)',
-}
-
-# Create a table that maps each individual C preprocessor directive to
-# the corresponding compiled regular expression that fetches the arguments
-# we care about.
-Table = {}
-for op_list, expr in cpp_lines_dict.items():
- e = re.compile(expr)
- for op in op_list:
- Table[op] = e
-del e
-del op
-del op_list
-
-# Create a list of the expressions we'll use to match all of the
-# preprocessor directives. These are the same as the directives
-# themselves *except* that we must use a negative lookahead assertion
-# when matching "if" so it doesn't match the "if" in "ifdef."
-override = {
- 'if' : 'if(?!def)',
-}
-l = [override.get(x, x) for x in Table.keys()]
-
-
-# Turn the list of expressions into one big honkin' regular expression
-# that will match all the preprocessor lines at once. This will return
-# a list of tuples, one for each preprocessor line. The preprocessor
-# directive will be the first element in each tuple, and the rest of
-# the line will be the second element.
-e = '^\s*#\s*(' + '|'.join(l) + ')(.*)$'
-
-# And last but not least, compile the expression.
-CPP_Expression = re.compile(e, re.M)
-
-
-
-
-#
-# Second "subsystem" of regular expressions that we set up:
-#
-# Stuff to translate a C preprocessor expression (as found on a #if or
-# #elif line) into an equivalent Python expression that we can eval().
-#
-
-# A dictionary that maps the C representation of Boolean operators
-# to their Python equivalents.
-CPP_to_Python_Ops_Dict = {
- '!' : ' not ',
- '!=' : ' != ',
- '&&' : ' and ',
- '||' : ' or ',
- '?' : ' and ',
- ':' : ' or ',
- '\r' : '',
-}
-
-CPP_to_Python_Ops_Sub = lambda m: CPP_to_Python_Ops_Dict[m.group(0)]
-
-# We have to sort the keys by length so that longer expressions
-# come *before* shorter expressions--in particular, "!=" must
-# come before "!" in the alternation. Without this, the Python
-# re module, as late as version 2.2.2, empirically matches the
-# "!" in "!=" first, instead of finding the longest match.
-# What's up with that?
-l = sorted(CPP_to_Python_Ops_Dict.keys(), key=lambda a: len(a), reverse=True)
-
-# Turn the list of keys into one regular expression that will allow us
-# to substitute all of the operators at once.
-expr = '|'.join(map(re.escape, l))
-
-# ...and compile the expression.
-CPP_to_Python_Ops_Expression = re.compile(expr)
-
-# A separate list of expressions to be evaluated and substituted
-# sequentially, not all at once.
-CPP_to_Python_Eval_List = [
- ['defined\s+(\w+)', '"\\1" in __dict__'],
- ['defined\s*\((\w+)\)', '"\\1" in __dict__'],
- ['/\*.*\*/', ''],
- ['/\*.*', ''],
- ['//.*', ''],
- ['(0x[0-9A-Fa-f]*)[UL]+', '\\1'],
-]
-
-# Replace the string representations of the regular expressions in the
-# list with compiled versions.
-for l in CPP_to_Python_Eval_List:
- l[0] = re.compile(l[0])
-
-# Wrap up all of the above into a handy function.
-def CPP_to_Python(s):
- """
- Converts a C pre-processor expression into an equivalent
- Python expression that can be evaluated.
- """
- s = CPP_to_Python_Ops_Expression.sub(CPP_to_Python_Ops_Sub, s)
- for expr, repl in CPP_to_Python_Eval_List:
- s = expr.sub(repl, s)
- return s
-
-
-
-del expr
-del l
-del override
-
-
-
-class FunctionEvaluator(object):
- """
- Handles delayed evaluation of a #define function call.
- """
- def __init__(self, name, args, expansion):
- """
- Squirrels away the arguments and expansion value of a #define
- macro function for later evaluation when we must actually expand
- a value that uses it.
- """
- self.name = name
- self.args = function_arg_separator.split(args)
- try:
- expansion = expansion.split('##')
- except AttributeError:
- pass
- self.expansion = expansion
- def __call__(self, *values):
- """
- Evaluates the expansion of a #define macro function called
- with the specified values.
- """
- if len(self.args) != len(values):
- raise ValueError("Incorrect number of arguments to `%s'" % self.name)
- # Create a dictionary that maps the macro arguments to the
- # corresponding values in this "call." We'll use this when we
- # eval() the expansion so that arguments will get expanded to
- # the right values.
- locals = {}
- for k, v in zip(self.args, values):
- locals[k] = v
-
- parts = []
- for s in self.expansion:
- if not s in self.args:
- s = repr(s)
- parts.append(s)
- statement = ' + '.join(parts)
-
- return eval(statement, globals(), locals)
-
-
-
-# Find line continuations.
-line_continuations = re.compile('\\\\\r?\n')
-
-# Search for a "function call" macro on an expansion. Returns the
-# two-tuple of the "function" name itself, and a string containing the
-# arguments within the call parentheses.
-function_name = re.compile('(\S+)\(([^)]*)\)')
-
-# Split a string containing comma-separated function call arguments into
-# the separate arguments.
-function_arg_separator = re.compile(',\s*')
-
-
-
-class PreProcessor(object):
- """
- The main workhorse class for handling C pre-processing.
- """
- def __init__(self, current=os.curdir, cpppath=(), dict={}, all=0):
- global Table
-
- cpppath = tuple(cpppath)
-
- self.searchpath = {
- '"' : (current,) + cpppath,
- '<' : cpppath + (current,),
- }
-
- # Initialize our C preprocessor namespace for tracking the
- # values of #defined keywords. We use this namespace to look
- # for keywords on #ifdef/#ifndef lines, and to eval() the
- # expressions on #if/#elif lines (after massaging them from C to
- # Python).
- self.cpp_namespace = dict.copy()
- self.cpp_namespace['__dict__'] = self.cpp_namespace
-
- if all:
- self.do_include = self.all_include
-
- # For efficiency, a dispatch table maps each C preprocessor
- # directive (#if, #define, etc.) to the method that should be
- # called when we see it. We accomodate state changes (#if,
- # #ifdef, #ifndef) by pushing the current dispatch table on a
- # stack and changing what method gets called for each relevant
- # directive we might see next at this level (#else, #elif).
- # #endif will simply pop the stack.
- d = {
- 'scons_current_file' : self.scons_current_file
- }
- for op in Table.keys():
- d[op] = getattr(self, 'do_' + op)
- self.default_table = d
-
- # Controlling methods.
-
- def tupleize(self, contents):
- """
- Turns the contents of a file into a list of easily-processed
- tuples describing the CPP lines in the file.
-
- The first element of each tuple is the line's preprocessor
- directive (#if, #include, #define, etc., minus the initial '#').
- The remaining elements are specific to the type of directive, as
- pulled apart by the regular expression.
- """
- global CPP_Expression, Table
- contents = line_continuations.sub('', contents)
- cpp_tuples = CPP_Expression.findall(contents)
- return [(m[0],) + Table[m[0]].match(m[1]).groups() for m in cpp_tuples]
-
- def __call__(self, file):
- """
- Pre-processes a file.
-
- This is the main public entry point.
- """
- self.current_file = file
- return self.process_contents(self.read_file(file), file)
-
- def process_contents(self, contents, fname=None):
- """
- Pre-processes a file contents.
-
- This is the main internal entry point.
- """
- self.stack = []
- self.dispatch_table = self.default_table.copy()
- self.current_file = fname
- self.tuples = self.tupleize(contents)
-
- self.initialize_result(fname)
- while self.tuples:
- t = self.tuples.pop(0)
- # Uncomment to see the list of tuples being processed (e.g.,
- # to validate the CPP lines are being translated correctly).
- #print t
- self.dispatch_table[t[0]](t)
- return self.finalize_result(fname)
-
- # Dispatch table stack manipulation methods.
-
- def save(self):
- """
- Pushes the current dispatch table on the stack and re-initializes
- the current dispatch table to the default.
- """
- self.stack.append(self.dispatch_table)
- self.dispatch_table = self.default_table.copy()
-
- def restore(self):
- """
- Pops the previous dispatch table off the stack and makes it the
- current one.
- """
- try: self.dispatch_table = self.stack.pop()
- except IndexError: pass
-
- # Utility methods.
-
- def do_nothing(self, t):
- """
- Null method for when we explicitly want the action for a
- specific preprocessor directive to do nothing.
- """
- pass
-
- def scons_current_file(self, t):
- self.current_file = t[1]
-
- def eval_expression(self, t):
- """
- Evaluates a C preprocessor expression.
-
- This is done by converting it to a Python equivalent and
- eval()ing it in the C preprocessor namespace we use to
- track #define values.
- """
- t = CPP_to_Python(' '.join(t[1:]))
- try: return eval(t, self.cpp_namespace)
- except (NameError, TypeError): return 0
-
- def initialize_result(self, fname):
- self.result = [fname]
-
- def finalize_result(self, fname):
- return self.result[1:]
-
- def find_include_file(self, t):
- """
- Finds the #include file for a given preprocessor tuple.
- """
- fname = t[2]
- for d in self.searchpath[t[1]]:
- if d == os.curdir:
- f = fname
- else:
- f = os.path.join(d, fname)
- if os.path.isfile(f):
- return f
- return None
-
- def read_file(self, file):
- return open(file).read()
-
- # Start and stop processing include lines.
-
- def start_handling_includes(self, t=None):
- """
- Causes the PreProcessor object to start processing #import,
- #include and #include_next lines.
-
- This method will be called when a #if, #ifdef, #ifndef or #elif
- evaluates True, or when we reach the #else in a #if, #ifdef,
- #ifndef or #elif block where a condition already evaluated
- False.
-
- """
- d = self.dispatch_table
- d['import'] = self.do_import
- d['include'] = self.do_include
- d['include_next'] = self.do_include
-
- def stop_handling_includes(self, t=None):
- """
- Causes the PreProcessor object to stop processing #import,
- #include and #include_next lines.
-
- This method will be called when a #if, #ifdef, #ifndef or #elif
- evaluates False, or when we reach the #else in a #if, #ifdef,
- #ifndef or #elif block where a condition already evaluated True.
- """
- d = self.dispatch_table
- d['import'] = self.do_nothing
- d['include'] = self.do_nothing
- d['include_next'] = self.do_nothing
-
- # Default methods for handling all of the preprocessor directives.
- # (Note that what actually gets called for a given directive at any
- # point in time is really controlled by the dispatch_table.)
-
- def _do_if_else_condition(self, condition):
- """
- Common logic for evaluating the conditions on #if, #ifdef and
- #ifndef lines.
- """
- self.save()
- d = self.dispatch_table
- if condition:
- self.start_handling_includes()
- d['elif'] = self.stop_handling_includes
- d['else'] = self.stop_handling_includes
- else:
- self.stop_handling_includes()
- d['elif'] = self.do_elif
- d['else'] = self.start_handling_includes
-
- def do_ifdef(self, t):
- """
- Default handling of a #ifdef line.
- """
- self._do_if_else_condition(t[1] in self.cpp_namespace)
-
- def do_ifndef(self, t):
- """
- Default handling of a #ifndef line.
- """
- self._do_if_else_condition(t[1] not in self.cpp_namespace)
-
- def do_if(self, t):
- """
- Default handling of a #if line.
- """
- self._do_if_else_condition(self.eval_expression(t))
-
- def do_elif(self, t):
- """
- Default handling of a #elif line.
- """
- d = self.dispatch_table
- if self.eval_expression(t):
- self.start_handling_includes()
- d['elif'] = self.stop_handling_includes
- d['else'] = self.stop_handling_includes
-
- def do_else(self, t):
- """
- Default handling of a #else line.
- """
- pass
-
- def do_endif(self, t):
- """
- Default handling of a #endif line.
- """
- self.restore()
-
- def do_define(self, t):
- """
- Default handling of a #define line.
- """
- _, name, args, expansion = t
- try:
- expansion = int(expansion)
- except (TypeError, ValueError):
- pass
- if args:
- evaluator = FunctionEvaluator(name, args[1:-1], expansion)
- self.cpp_namespace[name] = evaluator
- else:
- self.cpp_namespace[name] = expansion
-
- def do_undef(self, t):
- """
- Default handling of a #undef line.
- """
- try: del self.cpp_namespace[t[1]]
- except KeyError: pass
-
- def do_import(self, t):
- """
- Default handling of a #import line.
- """
- # XXX finish this -- maybe borrow/share logic from do_include()...?
- pass
-
- def do_include(self, t):
- """
- Default handling of a #include line.
- """
- t = self.resolve_include(t)
- include_file = self.find_include_file(t)
- if include_file:
- #print "include_file =", include_file
- self.result.append(include_file)
- contents = self.read_file(include_file)
- new_tuples = [('scons_current_file', include_file)] + \
- self.tupleize(contents) + \
- [('scons_current_file', self.current_file)]
- self.tuples[:] = new_tuples + self.tuples
-
- # Date: Tue, 22 Nov 2005 20:26:09 -0500
- # From: Stefan Seefeld
- #
- # By the way, #include_next is not the same as #include. The difference
- # being that #include_next starts its search in the path following the
- # path that let to the including file. In other words, if your system
- # include paths are ['/foo', '/bar'], and you are looking at a header
- # '/foo/baz.h', it might issue an '#include_next ' which would
- # correctly resolve to '/bar/baz.h' (if that exists), but *not* see
- # '/foo/baz.h' again. See http://www.delorie.com/gnu/docs/gcc/cpp_11.html
- # for more reasoning.
- #
- # I have no idea in what context 'import' might be used.
-
- # XXX is #include_next really the same as #include ?
- do_include_next = do_include
-
- # Utility methods for handling resolution of include files.
-
- def resolve_include(self, t):
- """Resolve a tuple-ized #include line.
-
- This handles recursive expansion of values without "" or <>
- surrounding the name until an initial " or < is found, to handle
- #include FILE
- where FILE is a #define somewhere else.
- """
- s = t[1]
- while not s[0] in '<"':
- #print "s =", s
- try:
- s = self.cpp_namespace[s]
- except KeyError:
- m = function_name.search(s)
- s = self.cpp_namespace[m.group(1)]
- if callable(s):
- args = function_arg_separator.split(m.group(2))
- s = s(*args)
- if not s:
- return None
- return (t[0], s[0], s[1:-1])
-
- def all_include(self, t):
- """
- """
- self.result.append(self.resolve_include(t))
-
-class DumbPreProcessor(PreProcessor):
- """A preprocessor that ignores all #if/#elif/#else/#endif directives
- and just reports back *all* of the #include files (like the classic
- SCons scanner did).
-
- This is functionally equivalent to using a regular expression to
- find all of the #include lines, only slower. It exists mainly as
- an example of how the main PreProcessor class can be sub-classed
- to tailor its behavior.
- """
- def __init__(self, *args, **kw):
- PreProcessor.__init__(self, *args, **kw)
- d = self.default_table
- for func in ['if', 'elif', 'else', 'endif', 'ifdef', 'ifndef']:
- d[func] = d[func] = self.do_nothing
-
-del __revision__
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/dblite.py b/Externals/scons-local/scons-local-2.0.1/SCons/dblite.py
deleted file mode 100644
index ea24e6a3f1..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/dblite.py
+++ /dev/null
@@ -1,251 +0,0 @@
-# dblite.py module contributed by Ralf W. Grosse-Kunstleve.
-# Extended for Unicode by Steven Knight.
-
-import SCons.compat
-
-import builtins
-import os
-# compat layer imports "cPickle" for us if it's available.
-import pickle
-import shutil
-import time
-
-keep_all_files = 00000
-ignore_corrupt_dbfiles = 0
-
-def corruption_warning(filename):
- print "Warning: Discarding corrupt database:", filename
-
-try: unicode
-except NameError:
- def is_string(s):
- return isinstance(s, str)
-else:
- def is_string(s):
- return type(s) in (str, unicode)
-
-try:
- unicode('a')
-except NameError:
- def unicode(s): return s
-
-dblite_suffix = '.dblite'
-tmp_suffix = '.tmp'
-
-class dblite(object):
-
- # Squirrel away references to the functions in various modules
- # that we'll use when our __del__() method calls our sync() method
- # during shutdown. We might get destroyed when Python is in the midst
- # of tearing down the different modules we import in an essentially
- # arbitrary order, and some of the various modules's global attributes
- # may already be wiped out from under us.
- #
- # See the discussion at:
- # http://mail.python.org/pipermail/python-bugs-list/2003-March/016877.html
-
- _open = builtins.open
- _pickle_dump = staticmethod(pickle.dump)
- _os_chmod = os.chmod
- try:
- _os_chown = os.chown
- except AttributeError:
- _os_chown = None
- _os_rename = os.rename
- _os_unlink = os.unlink
- _shutil_copyfile = shutil.copyfile
- _time_time = time.time
-
- def __init__(self, file_base_name, flag, mode):
- assert flag in (None, "r", "w", "c", "n")
- if (flag is None): flag = "r"
- base, ext = os.path.splitext(file_base_name)
- if ext == dblite_suffix:
- # There's already a suffix on the file name, don't add one.
- self._file_name = file_base_name
- self._tmp_name = base + tmp_suffix
- else:
- self._file_name = file_base_name + dblite_suffix
- self._tmp_name = file_base_name + tmp_suffix
- self._flag = flag
- self._mode = mode
- self._dict = {}
- self._needs_sync = 00000
- if self._os_chown is not None and (os.geteuid()==0 or os.getuid()==0):
- # running as root; chown back to current owner/group when done
- try:
- statinfo = os.stat(self._file_name)
- self._chown_to = statinfo.st_uid
- self._chgrp_to = statinfo.st_gid
- except OSError, e:
- # db file doesn't exist yet.
- # Check os.environ for SUDO_UID, use if set
- self._chown_to = int(os.environ.get('SUDO_UID', -1))
- self._chgrp_to = int(os.environ.get('SUDO_GID', -1))
- else:
- self._chown_to = -1 # don't chown
- self._chgrp_to = -1 # don't chgrp
- if (self._flag == "n"):
- self._open(self._file_name, "wb", self._mode)
- else:
- try:
- f = self._open(self._file_name, "rb")
- except IOError, e:
- if (self._flag != "c"):
- raise e
- self._open(self._file_name, "wb", self._mode)
- else:
- p = f.read()
- if (len(p) > 0):
- try:
- self._dict = pickle.loads(p)
- except (pickle.UnpicklingError, EOFError):
- if (ignore_corrupt_dbfiles == 0): raise
- if (ignore_corrupt_dbfiles == 1):
- corruption_warning(self._file_name)
-
- def __del__(self):
- if (self._needs_sync):
- self.sync()
-
- def sync(self):
- self._check_writable()
- f = self._open(self._tmp_name, "wb", self._mode)
- self._pickle_dump(self._dict, f, 1)
- f.close()
- # Windows doesn't allow renaming if the file exists, so unlink
- # it first, chmod'ing it to make sure we can do so. On UNIX, we
- # may not be able to chmod the file if it's owned by someone else
- # (e.g. from a previous run as root). We should still be able to
- # unlink() the file if the directory's writable, though, so ignore
- # any OSError exception thrown by the chmod() call.
- try: self._os_chmod(self._file_name, 0777)
- except OSError: pass
- self._os_unlink(self._file_name)
- self._os_rename(self._tmp_name, self._file_name)
- if self._os_chown is not None and self._chown_to > 0: # don't chown to root or -1
- try:
- self._os_chown(self._file_name, self._chown_to, self._chgrp_to)
- except OSError:
- pass
- self._needs_sync = 00000
- if (keep_all_files):
- self._shutil_copyfile(
- self._file_name,
- self._file_name + "_" + str(int(self._time_time())))
-
- def _check_writable(self):
- if (self._flag == "r"):
- raise IOError("Read-only database: %s" % self._file_name)
-
- def __getitem__(self, key):
- return self._dict[key]
-
- def __setitem__(self, key, value):
- self._check_writable()
- if (not is_string(key)):
- raise TypeError("key `%s' must be a string but is %s" % (key, type(key)))
- if (not is_string(value)):
- raise TypeError("value `%s' must be a string but is %s" % (value, type(value)))
- self._dict[key] = value
- self._needs_sync = 0001
-
- def keys(self):
- return list(self._dict.keys())
-
- def has_key(self, key):
- return key in self._dict
-
- def __contains__(self, key):
- return key in self._dict
-
- def iterkeys(self):
- # Wrapping name in () prevents fixer from "fixing" this
- return (self._dict.iterkeys)()
-
- __iter__ = iterkeys
-
- def __len__(self):
- return len(self._dict)
-
-def open(file, flag=None, mode=0666):
- return dblite(file, flag, mode)
-
-def _exercise():
- db = open("tmp", "n")
- assert len(db) == 0
- db["foo"] = "bar"
- assert db["foo"] == "bar"
- db[unicode("ufoo")] = unicode("ubar")
- assert db[unicode("ufoo")] == unicode("ubar")
- db.sync()
- db = open("tmp", "c")
- assert len(db) == 2, len(db)
- assert db["foo"] == "bar"
- db["bar"] = "foo"
- assert db["bar"] == "foo"
- db[unicode("ubar")] = unicode("ufoo")
- assert db[unicode("ubar")] == unicode("ufoo")
- db.sync()
- db = open("tmp", "r")
- assert len(db) == 4, len(db)
- assert db["foo"] == "bar"
- assert db["bar"] == "foo"
- assert db[unicode("ufoo")] == unicode("ubar")
- assert db[unicode("ubar")] == unicode("ufoo")
- try:
- db.sync()
- except IOError, e:
- assert str(e) == "Read-only database: tmp.dblite"
- else:
- raise RuntimeError("IOError expected.")
- db = open("tmp", "w")
- assert len(db) == 4
- db["ping"] = "pong"
- db.sync()
- try:
- db[(1,2)] = "tuple"
- except TypeError, e:
- assert str(e) == "key `(1, 2)' must be a string but is ", str(e)
- else:
- raise RuntimeError("TypeError exception expected")
- try:
- db["list"] = [1,2]
- except TypeError, e:
- assert str(e) == "value `[1, 2]' must be a string but is ", str(e)
- else:
- raise RuntimeError("TypeError exception expected")
- db = open("tmp", "r")
- assert len(db) == 5
- db = open("tmp", "n")
- assert len(db) == 0
- dblite._open("tmp.dblite", "w")
- db = open("tmp", "r")
- dblite._open("tmp.dblite", "w").write("x")
- try:
- db = open("tmp", "r")
- except pickle.UnpicklingError:
- pass
- else:
- raise RuntimeError("pickle exception expected.")
- global ignore_corrupt_dbfiles
- ignore_corrupt_dbfiles = 2
- db = open("tmp", "r")
- assert len(db) == 0
- os.unlink("tmp.dblite")
- try:
- db = open("tmp", "w")
- except IOError, e:
- assert str(e) == "[Errno 2] No such file or directory: 'tmp.dblite'", str(e)
- else:
- raise RuntimeError("IOError expected.")
- print "OK"
-
-if (__name__ == "__main__"):
- _exercise()
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/SCons/exitfuncs.py b/Externals/scons-local/scons-local-2.0.1/SCons/exitfuncs.py
deleted file mode 100644
index a72fe03d51..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/SCons/exitfuncs.py
+++ /dev/null
@@ -1,77 +0,0 @@
-"""SCons.exitfuncs
-
-Register functions which are executed when SCons exits for any reason.
-
-"""
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/engine/SCons/exitfuncs.py 5134 2010/08/16 23:02:40 bdeegan"
-
-
-
-_exithandlers = []
-def _run_exitfuncs():
- """run any registered exit functions
-
- _exithandlers is traversed in reverse order so functions are executed
- last in, first out.
- """
-
- while _exithandlers:
- func, targs, kargs = _exithandlers.pop()
- func(*targs, **kargs)
-
-def register(func, *targs, **kargs):
- """register a function to be executed upon normal program termination
-
- func - function to be called at exit
- targs - optional arguments to pass to func
- kargs - optional keyword arguments to pass to func
- """
- _exithandlers.append((func, targs, kargs))
-
-import sys
-
-try:
- x = sys.exitfunc
-
- # if x isn't our own exit func executive, assume it's another
- # registered exit function - append it to our list...
- if x != _run_exitfuncs:
- register(x)
-
-except AttributeError:
- pass
-
-# make our exit function get run by python when it exits:
-sys.exitfunc = _run_exitfuncs
-
-del sys
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons-local-2.0.1/scons-2.0.1.egg-info b/Externals/scons-local/scons-local-2.0.1/scons-2.0.1.egg-info
deleted file mode 100644
index e5e2216e88..0000000000
--- a/Externals/scons-local/scons-local-2.0.1/scons-2.0.1.egg-info
+++ /dev/null
@@ -1,13 +0,0 @@
-Metadata-Version: 1.0
-Name: scons
-Version: 2.0.1
-Summary: Open Source next-generation build tool.
-Home-page: http://www.scons.org/
-Author: Steven Knight
-Author-email: knight@baldmt.com
-License: UNKNOWN
-Description: Open Source next-generation build tool.
- Improved, cross-platform substitute for the classic Make
- utility. In short, SCons is an easier, more reliable
- and faster way to build software.
-Platform: UNKNOWN
diff --git a/Externals/scons-local/scons-time.py b/Externals/scons-local/scons-time.py
deleted file mode 100755
index 36bdeb588b..0000000000
--- a/Externals/scons-local/scons-time.py
+++ /dev/null
@@ -1,1544 +0,0 @@
-#!/usr/bin/env python
-#
-# scons-time - run SCons timings and collect statistics
-#
-# A script for running a configuration through SCons with a standard
-# set of invocations to collect timing and memory statistics and to
-# capture the results in a consistent set of output files for display
-# and analysis.
-#
-
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-from __future__ import division
-from __future__ import nested_scopes
-
-__revision__ = "src/script/scons-time.py 5134 2010/08/16 23:02:40 bdeegan"
-
-import getopt
-import glob
-import os
-import re
-import shutil
-import sys
-import tempfile
-import time
-
-try:
- sorted
-except NameError:
- # Pre-2.4 Python has no sorted() function.
- #
- # The pre-2.4 Python list.sort() method does not support
- # list.sort(key=) nor list.sort(reverse=) keyword arguments, so
- # we must implement the functionality of those keyword arguments
- # by hand instead of passing them to list.sort().
- def sorted(iterable, cmp=None, key=None, reverse=False):
- if key is not None:
- result = [(key(x), x) for x in iterable]
- else:
- result = iterable[:]
- if cmp is None:
- # Pre-2.3 Python does not support list.sort(None).
- result.sort()
- else:
- result.sort(cmp)
- if key is not None:
- result = [t1 for t0,t1 in result]
- if reverse:
- result.reverse()
- return result
-
-if os.environ.get('SCONS_HORRIBLE_REGRESSION_TEST_HACK') is not None:
- # We can't apply the 'callable' fixer until the floor is 2.6, but the
- # '-3' option to Python 2.6 and 2.7 generates almost ten thousand
- # warnings. This hack allows us to run regression tests with the '-3'
- # option by replacing the callable() built-in function with a hack
- # that performs the same function but doesn't generate the warning.
- # Note that this hack is ONLY intended to be used for regression
- # testing, and should NEVER be used for real runs.
- from types import ClassType
- def callable(obj):
- if hasattr(obj, '__call__'): return True
- if isinstance(obj, (ClassType, type)): return True
- return False
-
-def make_temp_file(**kw):
- try:
- result = tempfile.mktemp(**kw)
- try:
- result = os.path.realpath(result)
- except AttributeError:
- # Python 2.1 has no os.path.realpath() method.
- pass
- except TypeError:
- try:
- save_template = tempfile.template
- prefix = kw['prefix']
- del kw['prefix']
- tempfile.template = prefix
- result = tempfile.mktemp(**kw)
- finally:
- tempfile.template = save_template
- return result
-
-def HACK_for_exec(cmd, *args):
- '''
- For some reason, Python won't allow an exec() within a function
- that also declares an internal function (including lambda functions).
- This function is a hack that calls exec() in a function with no
- internal functions.
- '''
- if not args: exec(cmd)
- elif len(args) == 1: exec cmd in args[0]
- else: exec cmd in args[0], args[1]
-
-class Plotter(object):
- def increment_size(self, largest):
- """
- Return the size of each horizontal increment line for a specified
- maximum value. This returns a value that will provide somewhere
- between 5 and 9 horizontal lines on the graph, on some set of
- boundaries that are multiples of 10/100/1000/etc.
- """
- i = largest // 5
- if not i:
- return largest
- multiplier = 1
- while i >= 10:
- i = i // 10
- multiplier = multiplier * 10
- return i * multiplier
-
- def max_graph_value(self, largest):
- # Round up to next integer.
- largest = int(largest) + 1
- increment = self.increment_size(largest)
- return ((largest + increment - 1) // increment) * increment
-
-class Line(object):
- def __init__(self, points, type, title, label, comment, fmt="%s %s"):
- self.points = points
- self.type = type
- self.title = title
- self.label = label
- self.comment = comment
- self.fmt = fmt
-
- def print_label(self, inx, x, y):
- if self.label:
- print 'set label %s "%s" at %s,%s right' % (inx, self.label, x, y)
-
- def plot_string(self):
- if self.title:
- title_string = 'title "%s"' % self.title
- else:
- title_string = 'notitle'
- return "'-' %s with lines lt %s" % (title_string, self.type)
-
- def print_points(self, fmt=None):
- if fmt is None:
- fmt = self.fmt
- if self.comment:
- print '# %s' % self.comment
- for x, y in self.points:
- # If y is None, it usually represents some kind of break
- # in the line's index number. We might want to represent
- # this some way rather than just drawing the line straight
- # between the two points on either side.
- if not y is None:
- print fmt % (x, y)
- print 'e'
-
- def get_x_values(self):
- return [ p[0] for p in self.points ]
-
- def get_y_values(self):
- return [ p[1] for p in self.points ]
-
-class Gnuplotter(Plotter):
-
- def __init__(self, title, key_location):
- self.lines = []
- self.title = title
- self.key_location = key_location
-
- def line(self, points, type, title=None, label=None, comment=None, fmt='%s %s'):
- if points:
- line = Line(points, type, title, label, comment, fmt)
- self.lines.append(line)
-
- def plot_string(self, line):
- return line.plot_string()
-
- def vertical_bar(self, x, type, label, comment):
- if self.get_min_x() <= x and x <= self.get_max_x():
- points = [(x, 0), (x, self.max_graph_value(self.get_max_y()))]
- self.line(points, type, label, comment)
-
- def get_all_x_values(self):
- result = []
- for line in self.lines:
- result.extend(line.get_x_values())
- return [r for r in result if not r is None]
-
- def get_all_y_values(self):
- result = []
- for line in self.lines:
- result.extend(line.get_y_values())
- return [r for r in result if not r is None]
-
- def get_min_x(self):
- try:
- return self.min_x
- except AttributeError:
- try:
- self.min_x = min(self.get_all_x_values())
- except ValueError:
- self.min_x = 0
- return self.min_x
-
- def get_max_x(self):
- try:
- return self.max_x
- except AttributeError:
- try:
- self.max_x = max(self.get_all_x_values())
- except ValueError:
- self.max_x = 0
- return self.max_x
-
- def get_min_y(self):
- try:
- return self.min_y
- except AttributeError:
- try:
- self.min_y = min(self.get_all_y_values())
- except ValueError:
- self.min_y = 0
- return self.min_y
-
- def get_max_y(self):
- try:
- return self.max_y
- except AttributeError:
- try:
- self.max_y = max(self.get_all_y_values())
- except ValueError:
- self.max_y = 0
- return self.max_y
-
- def draw(self):
-
- if not self.lines:
- return
-
- if self.title:
- print 'set title "%s"' % self.title
- print 'set key %s' % self.key_location
-
- min_y = self.get_min_y()
- max_y = self.max_graph_value(self.get_max_y())
- incr = (max_y - min_y) / 10.0
- start = min_y + (max_y / 2.0) + (2.0 * incr)
- position = [ start - (i * incr) for i in range(5) ]
-
- inx = 1
- for line in self.lines:
- line.print_label(inx, line.points[0][0]-1,
- position[(inx-1) % len(position)])
- inx += 1
-
- plot_strings = [ self.plot_string(l) for l in self.lines ]
- print 'plot ' + ', \\\n '.join(plot_strings)
-
- for line in self.lines:
- line.print_points()
-
-
-
-def untar(fname):
- import tarfile
- tar = tarfile.open(name=fname, mode='r')
- for tarinfo in tar:
- tar.extract(tarinfo)
- tar.close()
-
-def unzip(fname):
- import zipfile
- zf = zipfile.ZipFile(fname, 'r')
- for name in zf.namelist():
- dir = os.path.dirname(name)
- try:
- os.makedirs(dir)
- except:
- pass
- open(name, 'w').write(zf.read(name))
-
-def read_tree(dir):
- for dirpath, dirnames, filenames in os.walk(dir):
- for fn in filenames:
- fn = os.path.join(dirpath, fn)
- if os.path.isfile(fn):
- open(fn, 'rb').read()
-
-def redirect_to_file(command, log):
- return '%s > %s 2>&1' % (command, log)
-
-def tee_to_file(command, log):
- return '%s 2>&1 | tee %s' % (command, log)
-
-
-
-class SConsTimer(object):
- """
- Usage: scons-time SUBCOMMAND [ARGUMENTS]
- Type "scons-time help SUBCOMMAND" for help on a specific subcommand.
-
- Available subcommands:
- func Extract test-run data for a function
- help Provides help
- mem Extract --debug=memory data from test runs
- obj Extract --debug=count data from test runs
- time Extract --debug=time data from test runs
- run Runs a test configuration
- """
-
- name = 'scons-time'
- name_spaces = ' '*len(name)
-
- def makedict(**kw):
- return kw
-
- default_settings = makedict(
- aegis = 'aegis',
- aegis_project = None,
- chdir = None,
- config_file = None,
- initial_commands = [],
- key_location = 'bottom left',
- orig_cwd = os.getcwd(),
- outdir = None,
- prefix = '',
- python = '"%s"' % sys.executable,
- redirect = redirect_to_file,
- scons = None,
- scons_flags = '--debug=count --debug=memory --debug=time --debug=memoizer',
- scons_lib_dir = None,
- scons_wrapper = None,
- startup_targets = '--help',
- subdir = None,
- subversion_url = None,
- svn = 'svn',
- svn_co_flag = '-q',
- tar = 'tar',
- targets = '',
- targets0 = None,
- targets1 = None,
- targets2 = None,
- title = None,
- unzip = 'unzip',
- verbose = False,
- vertical_bars = [],
-
- unpack_map = {
- '.tar.gz' : (untar, '%(tar)s xzf %%s'),
- '.tgz' : (untar, '%(tar)s xzf %%s'),
- '.tar' : (untar, '%(tar)s xf %%s'),
- '.zip' : (unzip, '%(unzip)s %%s'),
- },
- )
-
- run_titles = [
- 'Startup',
- 'Full build',
- 'Up-to-date build',
- ]
-
- run_commands = [
- '%(python)s %(scons_wrapper)s %(scons_flags)s --profile=%(prof0)s %(targets0)s',
- '%(python)s %(scons_wrapper)s %(scons_flags)s --profile=%(prof1)s %(targets1)s',
- '%(python)s %(scons_wrapper)s %(scons_flags)s --profile=%(prof2)s %(targets2)s',
- ]
-
- stages = [
- 'pre-read',
- 'post-read',
- 'pre-build',
- 'post-build',
- ]
-
- stage_strings = {
- 'pre-read' : 'Memory before reading SConscript files:',
- 'post-read' : 'Memory after reading SConscript files:',
- 'pre-build' : 'Memory before building targets:',
- 'post-build' : 'Memory after building targets:',
- }
-
- memory_string_all = 'Memory '
-
- default_stage = stages[-1]
-
- time_strings = {
- 'total' : 'Total build time',
- 'SConscripts' : 'Total SConscript file execution time',
- 'SCons' : 'Total SCons execution time',
- 'commands' : 'Total command execution time',
- }
-
- time_string_all = 'Total .* time'
-
- #
-
- def __init__(self):
- self.__dict__.update(self.default_settings)
-
- # Functions for displaying and executing commands.
-
- def subst(self, x, dictionary):
- try:
- return x % dictionary
- except TypeError:
- # x isn't a string (it's probably a Python function),
- # so just return it.
- return x
-
- def subst_variables(self, command, dictionary):
- """
- Substitutes (via the format operator) the values in the specified
- dictionary into the specified command.
-
- The command can be an (action, string) tuple. In all cases, we
- perform substitution on strings and don't worry if something isn't
- a string. (It's probably a Python function to be executed.)
- """
- try:
- command + ''
- except TypeError:
- action = command[0]
- string = command[1]
- args = command[2:]
- else:
- action = command
- string = action
- args = (())
- action = self.subst(action, dictionary)
- string = self.subst(string, dictionary)
- return (action, string, args)
-
- def _do_not_display(self, msg, *args):
- pass
-
- def display(self, msg, *args):
- """
- Displays the specified message.
-
- Each message is prepended with a standard prefix of our name
- plus the time.
- """
- if callable(msg):
- msg = msg(*args)
- else:
- msg = msg % args
- if msg is None:
- return
- fmt = '%s[%s]: %s\n'
- sys.stdout.write(fmt % (self.name, time.strftime('%H:%M:%S'), msg))
-
- def _do_not_execute(self, action, *args):
- pass
-
- def execute(self, action, *args):
- """
- Executes the specified action.
-
- The action is called if it's a callable Python function, and
- otherwise passed to os.system().
- """
- if callable(action):
- action(*args)
- else:
- os.system(action % args)
-
- def run_command_list(self, commands, dict):
- """
- Executes a list of commands, substituting values from the
- specified dictionary.
- """
- commands = [ self.subst_variables(c, dict) for c in commands ]
- for action, string, args in commands:
- self.display(string, *args)
- sys.stdout.flush()
- status = self.execute(action, *args)
- if status:
- sys.exit(status)
-
- def log_display(self, command, log):
- command = self.subst(command, self.__dict__)
- if log:
- command = self.redirect(command, log)
- return command
-
- def log_execute(self, command, log):
- command = self.subst(command, self.__dict__)
- output = os.popen(command).read()
- if self.verbose:
- sys.stdout.write(output)
- open(log, 'wb').write(output)
-
- #
-
- def archive_splitext(self, path):
- """
- Splits an archive name into a filename base and extension.
-
- This is like os.path.splitext() (which it calls) except that it
- also looks for '.tar.gz' and treats it as an atomic extensions.
- """
- if path.endswith('.tar.gz'):
- return path[:-7], path[-7:]
- else:
- return os.path.splitext(path)
-
- def args_to_files(self, args, tail=None):
- """
- Takes a list of arguments, expands any glob patterns, and
- returns the last "tail" files from the list.
- """
- files = []
- for a in args:
- files.extend(sorted(glob.glob(a)))
-
- if tail:
- files = files[-tail:]
-
- return files
-
- def ascii_table(self, files, columns,
- line_function, file_function=lambda x: x,
- *args, **kw):
-
- header_fmt = ' '.join(['%12s'] * len(columns))
- line_fmt = header_fmt + ' %s'
-
- print header_fmt % columns
-
- for file in files:
- t = line_function(file, *args, **kw)
- if t is None:
- t = []
- diff = len(columns) - len(t)
- if diff > 0:
- t += [''] * diff
- t.append(file_function(file))
- print line_fmt % tuple(t)
-
- def collect_results(self, files, function, *args, **kw):
- results = {}
-
- for file in files:
- base = os.path.splitext(file)[0]
- run, index = base.split('-')[-2:]
-
- run = int(run)
- index = int(index)
-
- value = function(file, *args, **kw)
-
- try:
- r = results[index]
- except KeyError:
- r = []
- results[index] = r
- r.append((run, value))
-
- return results
-
- def doc_to_help(self, obj):
- """
- Translates an object's __doc__ string into help text.
-
- This strips a consistent number of spaces from each line in the
- help text, essentially "outdenting" the text to the left-most
- column.
- """
- doc = obj.__doc__
- if doc is None:
- return ''
- return self.outdent(doc)
-
- def find_next_run_number(self, dir, prefix):
- """
- Returns the next run number in a directory for the specified prefix.
-
- Examines the contents the specified directory for files with the
- specified prefix, extracts the run numbers from each file name,
- and returns the next run number after the largest it finds.
- """
- x = re.compile(re.escape(prefix) + '-([0-9]+).*')
- matches = [x.match(e) for e in os.listdir(dir)]
- matches = [_f for _f in matches if _f]
- if not matches:
- return 0
- run_numbers = [int(m.group(1)) for m in matches]
- return int(max(run_numbers)) + 1
-
- def gnuplot_results(self, results, fmt='%s %.3f'):
- """
- Prints out a set of results in Gnuplot format.
- """
- gp = Gnuplotter(self.title, self.key_location)
-
- for i in sorted(results.keys()):
- try:
- t = self.run_titles[i]
- except IndexError:
- t = '??? %s ???' % i
- results[i].sort()
- gp.line(results[i], i+1, t, None, t, fmt=fmt)
-
- for bar_tuple in self.vertical_bars:
- try:
- x, type, label, comment = bar_tuple
- except ValueError:
- x, type, label = bar_tuple
- comment = label
- gp.vertical_bar(x, type, label, comment)
-
- gp.draw()
-
- def logfile_name(self, invocation):
- """
- Returns the absolute path of a log file for the specificed
- invocation number.
- """
- name = self.prefix_run + '-%d.log' % invocation
- return os.path.join(self.outdir, name)
-
- def outdent(self, s):
- """
- Strip as many spaces from each line as are found at the beginning
- of the first line in the list.
- """
- lines = s.split('\n')
- if lines[0] == '':
- lines = lines[1:]
- spaces = re.match(' *', lines[0]).group(0)
- def strip_initial_spaces(l, s=spaces):
- if l.startswith(spaces):
- l = l[len(spaces):]
- return l
- return '\n'.join([ strip_initial_spaces(l) for l in lines ]) + '\n'
-
- def profile_name(self, invocation):
- """
- Returns the absolute path of a profile file for the specified
- invocation number.
- """
- name = self.prefix_run + '-%d.prof' % invocation
- return os.path.join(self.outdir, name)
-
- def set_env(self, key, value):
- os.environ[key] = value
-
- #
-
- def get_debug_times(self, file, time_string=None):
- """
- Fetch times from the --debug=time strings in the specified file.
- """
- if time_string is None:
- search_string = self.time_string_all
- else:
- search_string = time_string
- contents = open(file).read()
- if not contents:
- sys.stderr.write('file %s has no contents!\n' % repr(file))
- return None
- result = re.findall(r'%s: ([\d\.]*)' % search_string, contents)[-4:]
- result = [ float(r) for r in result ]
- if not time_string is None:
- try:
- result = result[0]
- except IndexError:
- sys.stderr.write('file %s has no results!\n' % repr(file))
- return None
- return result
-
- def get_function_profile(self, file, function):
- """
- Returns the file, line number, function name, and cumulative time.
- """
- try:
- import pstats
- except ImportError, e:
- sys.stderr.write('%s: func: %s\n' % (self.name, e))
- sys.stderr.write('%s This version of Python is missing the profiler.\n' % self.name_spaces)
- sys.stderr.write('%s Cannot use the "func" subcommand.\n' % self.name_spaces)
- sys.exit(1)
- statistics = pstats.Stats(file).stats
- matches = [ e for e in statistics.items() if e[0][2] == function ]
- r = matches[0]
- return r[0][0], r[0][1], r[0][2], r[1][3]
-
- def get_function_time(self, file, function):
- """
- Returns just the cumulative time for the specified function.
- """
- return self.get_function_profile(file, function)[3]
-
- def get_memory(self, file, memory_string=None):
- """
- Returns a list of integers of the amount of memory used. The
- default behavior is to return all the stages.
- """
- if memory_string is None:
- search_string = self.memory_string_all
- else:
- search_string = memory_string
- lines = open(file).readlines()
- lines = [ l for l in lines if l.startswith(search_string) ][-4:]
- result = [ int(l.split()[-1]) for l in lines[-4:] ]
- if len(result) == 1:
- result = result[0]
- return result
-
- def get_object_counts(self, file, object_name, index=None):
- """
- Returns the counts of the specified object_name.
- """
- object_string = ' ' + object_name + '\n'
- lines = open(file).readlines()
- line = [ l for l in lines if l.endswith(object_string) ][0]
- result = [ int(field) for field in line.split()[:4] ]
- if index is not None:
- result = result[index]
- return result
-
- #
-
- command_alias = {}
-
- def execute_subcommand(self, argv):
- """
- Executes the do_*() function for the specified subcommand (argv[0]).
- """
- if not argv:
- return
- cmdName = self.command_alias.get(argv[0], argv[0])
- try:
- func = getattr(self, 'do_' + cmdName)
- except AttributeError:
- return self.default(argv)
- try:
- return func(argv)
- except TypeError, e:
- sys.stderr.write("%s %s: %s\n" % (self.name, cmdName, e))
- import traceback
- traceback.print_exc(file=sys.stderr)
- sys.stderr.write("Try '%s help %s'\n" % (self.name, cmdName))
-
- def default(self, argv):
- """
- The default behavior for an unknown subcommand. Prints an
- error message and exits.
- """
- sys.stderr.write('%s: Unknown subcommand "%s".\n' % (self.name, argv[0]))
- sys.stderr.write('Type "%s help" for usage.\n' % self.name)
- sys.exit(1)
-
- #
-
- def do_help(self, argv):
- """
- """
- if argv[1:]:
- for arg in argv[1:]:
- try:
- func = getattr(self, 'do_' + arg)
- except AttributeError:
- sys.stderr.write('%s: No help for "%s"\n' % (self.name, arg))
- else:
- try:
- help = getattr(self, 'help_' + arg)
- except AttributeError:
- sys.stdout.write(self.doc_to_help(func))
- sys.stdout.flush()
- else:
- help()
- else:
- doc = self.doc_to_help(self.__class__)
- if doc:
- sys.stdout.write(doc)
- sys.stdout.flush()
- return None
-
- #
-
- def help_func(self):
- help = """\
- Usage: scons-time func [OPTIONS] FILE [...]
-
- -C DIR, --chdir=DIR Change to DIR before looking for files
- -f FILE, --file=FILE Read configuration from specified FILE
- --fmt=FORMAT, --format=FORMAT Print data in specified FORMAT
- --func=NAME, --function=NAME Report time for function NAME
- -h, --help Print this help and exit
- -p STRING, --prefix=STRING Use STRING as log file/profile prefix
- -t NUMBER, --tail=NUMBER Only report the last NUMBER files
- --title=TITLE Specify the output plot TITLE
- """
- sys.stdout.write(self.outdent(help))
- sys.stdout.flush()
-
- def do_func(self, argv):
- """
- """
- format = 'ascii'
- function_name = '_main'
- tail = None
-
- short_opts = '?C:f:hp:t:'
-
- long_opts = [
- 'chdir=',
- 'file=',
- 'fmt=',
- 'format=',
- 'func=',
- 'function=',
- 'help',
- 'prefix=',
- 'tail=',
- 'title=',
- ]
-
- opts, args = getopt.getopt(argv[1:], short_opts, long_opts)
-
- for o, a in opts:
- if o in ('-C', '--chdir'):
- self.chdir = a
- elif o in ('-f', '--file'):
- self.config_file = a
- elif o in ('--fmt', '--format'):
- format = a
- elif o in ('--func', '--function'):
- function_name = a
- elif o in ('-?', '-h', '--help'):
- self.do_help(['help', 'func'])
- sys.exit(0)
- elif o in ('--max',):
- max_time = int(a)
- elif o in ('-p', '--prefix'):
- self.prefix = a
- elif o in ('-t', '--tail'):
- tail = int(a)
- elif o in ('--title',):
- self.title = a
-
- if self.config_file:
- exec open(self.config_file, 'rU').read() in self.__dict__
-
- if self.chdir:
- os.chdir(self.chdir)
-
- if not args:
-
- pattern = '%s*.prof' % self.prefix
- args = self.args_to_files([pattern], tail)
-
- if not args:
- if self.chdir:
- directory = self.chdir
- else:
- directory = os.getcwd()
-
- sys.stderr.write('%s: func: No arguments specified.\n' % self.name)
- sys.stderr.write('%s No %s*.prof files found in "%s".\n' % (self.name_spaces, self.prefix, directory))
- sys.stderr.write('%s Type "%s help func" for help.\n' % (self.name_spaces, self.name))
- sys.exit(1)
-
- else:
-
- args = self.args_to_files(args, tail)
-
- cwd_ = os.getcwd() + os.sep
-
- if format == 'ascii':
-
- for file in args:
- try:
- f, line, func, time = \
- self.get_function_profile(file, function_name)
- except ValueError, e:
- sys.stderr.write("%s: func: %s: %s\n" %
- (self.name, file, e))
- else:
- if f.startswith(cwd_):
- f = f[len(cwd_):]
- print "%.3f %s:%d(%s)" % (time, f, line, func)
-
- elif format == 'gnuplot':
-
- results = self.collect_results(args, self.get_function_time,
- function_name)
-
- self.gnuplot_results(results)
-
- else:
-
- sys.stderr.write('%s: func: Unknown format "%s".\n' % (self.name, format))
- sys.exit(1)
-
- #
-
- def help_mem(self):
- help = """\
- Usage: scons-time mem [OPTIONS] FILE [...]
-
- -C DIR, --chdir=DIR Change to DIR before looking for files
- -f FILE, --file=FILE Read configuration from specified FILE
- --fmt=FORMAT, --format=FORMAT Print data in specified FORMAT
- -h, --help Print this help and exit
- -p STRING, --prefix=STRING Use STRING as log file/profile prefix
- --stage=STAGE Plot memory at the specified stage:
- pre-read, post-read, pre-build,
- post-build (default: post-build)
- -t NUMBER, --tail=NUMBER Only report the last NUMBER files
- --title=TITLE Specify the output plot TITLE
- """
- sys.stdout.write(self.outdent(help))
- sys.stdout.flush()
-
- def do_mem(self, argv):
-
- format = 'ascii'
- logfile_path = lambda x: x
- stage = self.default_stage
- tail = None
-
- short_opts = '?C:f:hp:t:'
-
- long_opts = [
- 'chdir=',
- 'file=',
- 'fmt=',
- 'format=',
- 'help',
- 'prefix=',
- 'stage=',
- 'tail=',
- 'title=',
- ]
-
- opts, args = getopt.getopt(argv[1:], short_opts, long_opts)
-
- for o, a in opts:
- if o in ('-C', '--chdir'):
- self.chdir = a
- elif o in ('-f', '--file'):
- self.config_file = a
- elif o in ('--fmt', '--format'):
- format = a
- elif o in ('-?', '-h', '--help'):
- self.do_help(['help', 'mem'])
- sys.exit(0)
- elif o in ('-p', '--prefix'):
- self.prefix = a
- elif o in ('--stage',):
- if not a in self.stages:
- sys.stderr.write('%s: mem: Unrecognized stage "%s".\n' % (self.name, a))
- sys.exit(1)
- stage = a
- elif o in ('-t', '--tail'):
- tail = int(a)
- elif o in ('--title',):
- self.title = a
-
- if self.config_file:
- HACK_for_exec(open(self.config_file, 'rU').read(), self.__dict__)
-
- if self.chdir:
- os.chdir(self.chdir)
- logfile_path = lambda x: os.path.join(self.chdir, x)
-
- if not args:
-
- pattern = '%s*.log' % self.prefix
- args = self.args_to_files([pattern], tail)
-
- if not args:
- if self.chdir:
- directory = self.chdir
- else:
- directory = os.getcwd()
-
- sys.stderr.write('%s: mem: No arguments specified.\n' % self.name)
- sys.stderr.write('%s No %s*.log files found in "%s".\n' % (self.name_spaces, self.prefix, directory))
- sys.stderr.write('%s Type "%s help mem" for help.\n' % (self.name_spaces, self.name))
- sys.exit(1)
-
- else:
-
- args = self.args_to_files(args, tail)
-
- cwd_ = os.getcwd() + os.sep
-
- if format == 'ascii':
-
- self.ascii_table(args, tuple(self.stages), self.get_memory, logfile_path)
-
- elif format == 'gnuplot':
-
- results = self.collect_results(args, self.get_memory,
- self.stage_strings[stage])
-
- self.gnuplot_results(results)
-
- else:
-
- sys.stderr.write('%s: mem: Unknown format "%s".\n' % (self.name, format))
- sys.exit(1)
-
- return 0
-
- #
-
- def help_obj(self):
- help = """\
- Usage: scons-time obj [OPTIONS] OBJECT FILE [...]
-
- -C DIR, --chdir=DIR Change to DIR before looking for files
- -f FILE, --file=FILE Read configuration from specified FILE
- --fmt=FORMAT, --format=FORMAT Print data in specified FORMAT
- -h, --help Print this help and exit
- -p STRING, --prefix=STRING Use STRING as log file/profile prefix
- --stage=STAGE Plot memory at the specified stage:
- pre-read, post-read, pre-build,
- post-build (default: post-build)
- -t NUMBER, --tail=NUMBER Only report the last NUMBER files
- --title=TITLE Specify the output plot TITLE
- """
- sys.stdout.write(self.outdent(help))
- sys.stdout.flush()
-
- def do_obj(self, argv):
-
- format = 'ascii'
- logfile_path = lambda x: x
- stage = self.default_stage
- tail = None
-
- short_opts = '?C:f:hp:t:'
-
- long_opts = [
- 'chdir=',
- 'file=',
- 'fmt=',
- 'format=',
- 'help',
- 'prefix=',
- 'stage=',
- 'tail=',
- 'title=',
- ]
-
- opts, args = getopt.getopt(argv[1:], short_opts, long_opts)
-
- for o, a in opts:
- if o in ('-C', '--chdir'):
- self.chdir = a
- elif o in ('-f', '--file'):
- self.config_file = a
- elif o in ('--fmt', '--format'):
- format = a
- elif o in ('-?', '-h', '--help'):
- self.do_help(['help', 'obj'])
- sys.exit(0)
- elif o in ('-p', '--prefix'):
- self.prefix = a
- elif o in ('--stage',):
- if not a in self.stages:
- sys.stderr.write('%s: obj: Unrecognized stage "%s".\n' % (self.name, a))
- sys.stderr.write('%s Type "%s help obj" for help.\n' % (self.name_spaces, self.name))
- sys.exit(1)
- stage = a
- elif o in ('-t', '--tail'):
- tail = int(a)
- elif o in ('--title',):
- self.title = a
-
- if not args:
- sys.stderr.write('%s: obj: Must specify an object name.\n' % self.name)
- sys.stderr.write('%s Type "%s help obj" for help.\n' % (self.name_spaces, self.name))
- sys.exit(1)
-
- object_name = args.pop(0)
-
- if self.config_file:
- HACK_for_exec(open(self.config_file, 'rU').read(), self.__dict__)
-
- if self.chdir:
- os.chdir(self.chdir)
- logfile_path = lambda x: os.path.join(self.chdir, x)
-
- if not args:
-
- pattern = '%s*.log' % self.prefix
- args = self.args_to_files([pattern], tail)
-
- if not args:
- if self.chdir:
- directory = self.chdir
- else:
- directory = os.getcwd()
-
- sys.stderr.write('%s: obj: No arguments specified.\n' % self.name)
- sys.stderr.write('%s No %s*.log files found in "%s".\n' % (self.name_spaces, self.prefix, directory))
- sys.stderr.write('%s Type "%s help obj" for help.\n' % (self.name_spaces, self.name))
- sys.exit(1)
-
- else:
-
- args = self.args_to_files(args, tail)
-
- cwd_ = os.getcwd() + os.sep
-
- if format == 'ascii':
-
- self.ascii_table(args, tuple(self.stages), self.get_object_counts, logfile_path, object_name)
-
- elif format == 'gnuplot':
-
- stage_index = 0
- for s in self.stages:
- if stage == s:
- break
- stage_index = stage_index + 1
-
- results = self.collect_results(args, self.get_object_counts,
- object_name, stage_index)
-
- self.gnuplot_results(results)
-
- else:
-
- sys.stderr.write('%s: obj: Unknown format "%s".\n' % (self.name, format))
- sys.exit(1)
-
- return 0
-
- #
-
- def help_run(self):
- help = """\
- Usage: scons-time run [OPTIONS] [FILE ...]
-
- --aegis=PROJECT Use SCons from the Aegis PROJECT
- --chdir=DIR Name of unpacked directory for chdir
- -f FILE, --file=FILE Read configuration from specified FILE
- -h, --help Print this help and exit
- -n, --no-exec No execute, just print command lines
- --number=NUMBER Put output in files for run NUMBER
- --outdir=OUTDIR Put output files in OUTDIR
- -p STRING, --prefix=STRING Use STRING as log file/profile prefix
- --python=PYTHON Time using the specified PYTHON
- -q, --quiet Don't print command lines
- --scons=SCONS Time using the specified SCONS
- --svn=URL, --subversion=URL Use SCons from Subversion URL
- -v, --verbose Display output of commands
- """
- sys.stdout.write(self.outdent(help))
- sys.stdout.flush()
-
- def do_run(self, argv):
- """
- """
- run_number_list = [None]
-
- short_opts = '?f:hnp:qs:v'
-
- long_opts = [
- 'aegis=',
- 'file=',
- 'help',
- 'no-exec',
- 'number=',
- 'outdir=',
- 'prefix=',
- 'python=',
- 'quiet',
- 'scons=',
- 'svn=',
- 'subdir=',
- 'subversion=',
- 'verbose',
- ]
-
- opts, args = getopt.getopt(argv[1:], short_opts, long_opts)
-
- for o, a in opts:
- if o in ('--aegis',):
- self.aegis_project = a
- elif o in ('-f', '--file'):
- self.config_file = a
- elif o in ('-?', '-h', '--help'):
- self.do_help(['help', 'run'])
- sys.exit(0)
- elif o in ('-n', '--no-exec'):
- self.execute = self._do_not_execute
- elif o in ('--number',):
- run_number_list = self.split_run_numbers(a)
- elif o in ('--outdir',):
- self.outdir = a
- elif o in ('-p', '--prefix'):
- self.prefix = a
- elif o in ('--python',):
- self.python = a
- elif o in ('-q', '--quiet'):
- self.display = self._do_not_display
- elif o in ('-s', '--subdir'):
- self.subdir = a
- elif o in ('--scons',):
- self.scons = a
- elif o in ('--svn', '--subversion'):
- self.subversion_url = a
- elif o in ('-v', '--verbose'):
- self.redirect = tee_to_file
- self.verbose = True
- self.svn_co_flag = ''
-
- if not args and not self.config_file:
- sys.stderr.write('%s: run: No arguments or -f config file specified.\n' % self.name)
- sys.stderr.write('%s Type "%s help run" for help.\n' % (self.name_spaces, self.name))
- sys.exit(1)
-
- if self.config_file:
- exec open(self.config_file, 'rU').read() in self.__dict__
-
- if args:
- self.archive_list = args
-
- archive_file_name = os.path.split(self.archive_list[0])[1]
-
- if not self.subdir:
- self.subdir = self.archive_splitext(archive_file_name)[0]
-
- if not self.prefix:
- self.prefix = self.archive_splitext(archive_file_name)[0]
-
- prepare = None
- if self.subversion_url:
- prepare = self.prep_subversion_run
- elif self.aegis_project:
- prepare = self.prep_aegis_run
-
- for run_number in run_number_list:
- self.individual_run(run_number, self.archive_list, prepare)
-
- def split_run_numbers(self, s):
- result = []
- for n in s.split(','):
- try:
- x, y = n.split('-')
- except ValueError:
- result.append(int(n))
- else:
- result.extend(list(range(int(x), int(y)+1)))
- return result
-
- def scons_path(self, dir):
- return os.path.join(dir, 'src', 'script', 'scons.py')
-
- def scons_lib_dir_path(self, dir):
- return os.path.join(dir, 'src', 'engine')
-
- def prep_aegis_run(self, commands, removals):
- self.aegis_tmpdir = make_temp_file(prefix = self.name + '-aegis-')
- removals.append((shutil.rmtree, 'rm -rf %%s', self.aegis_tmpdir))
-
- self.aegis_parent_project = os.path.splitext(self.aegis_project)[0]
- self.scons = self.scons_path(self.aegis_tmpdir)
- self.scons_lib_dir = self.scons_lib_dir_path(self.aegis_tmpdir)
-
- commands.extend([
- 'mkdir %(aegis_tmpdir)s',
- (lambda: os.chdir(self.aegis_tmpdir), 'cd %(aegis_tmpdir)s'),
- '%(aegis)s -cp -ind -p %(aegis_parent_project)s .',
- '%(aegis)s -cp -ind -p %(aegis_project)s -delta %(run_number)s .',
- ])
-
- def prep_subversion_run(self, commands, removals):
- self.svn_tmpdir = make_temp_file(prefix = self.name + '-svn-')
- removals.append((shutil.rmtree, 'rm -rf %%s', self.svn_tmpdir))
-
- self.scons = self.scons_path(self.svn_tmpdir)
- self.scons_lib_dir = self.scons_lib_dir_path(self.svn_tmpdir)
-
- commands.extend([
- 'mkdir %(svn_tmpdir)s',
- '%(svn)s co %(svn_co_flag)s -r %(run_number)s %(subversion_url)s %(svn_tmpdir)s',
- ])
-
- def individual_run(self, run_number, archive_list, prepare=None):
- """
- Performs an individual run of the default SCons invocations.
- """
-
- commands = []
- removals = []
-
- if prepare:
- prepare(commands, removals)
-
- save_scons = self.scons
- save_scons_wrapper = self.scons_wrapper
- save_scons_lib_dir = self.scons_lib_dir
-
- if self.outdir is None:
- self.outdir = self.orig_cwd
- elif not os.path.isabs(self.outdir):
- self.outdir = os.path.join(self.orig_cwd, self.outdir)
-
- if self.scons is None:
- self.scons = self.scons_path(self.orig_cwd)
-
- if self.scons_lib_dir is None:
- self.scons_lib_dir = self.scons_lib_dir_path(self.orig_cwd)
-
- if self.scons_wrapper is None:
- self.scons_wrapper = self.scons
-
- if not run_number:
- run_number = self.find_next_run_number(self.outdir, self.prefix)
-
- self.run_number = str(run_number)
-
- self.prefix_run = self.prefix + '-%03d' % run_number
-
- if self.targets0 is None:
- self.targets0 = self.startup_targets
- if self.targets1 is None:
- self.targets1 = self.targets
- if self.targets2 is None:
- self.targets2 = self.targets
-
- self.tmpdir = make_temp_file(prefix = self.name + '-')
-
- commands.extend([
- 'mkdir %(tmpdir)s',
-
- (os.chdir, 'cd %%s', self.tmpdir),
- ])
-
- for archive in archive_list:
- if not os.path.isabs(archive):
- archive = os.path.join(self.orig_cwd, archive)
- if os.path.isdir(archive):
- dest = os.path.split(archive)[1]
- commands.append((shutil.copytree, 'cp -r %%s %%s', archive, dest))
- else:
- suffix = self.archive_splitext(archive)[1]
- unpack_command = self.unpack_map.get(suffix)
- if not unpack_command:
- dest = os.path.split(archive)[1]
- commands.append((shutil.copyfile, 'cp %%s %%s', archive, dest))
- else:
- commands.append(unpack_command + (archive,))
-
- commands.extend([
- (os.chdir, 'cd %%s', self.subdir),
- ])
-
- commands.extend(self.initial_commands)
-
- commands.extend([
- (lambda: read_tree('.'),
- 'find * -type f | xargs cat > /dev/null'),
-
- (self.set_env, 'export %%s=%%s',
- 'SCONS_LIB_DIR', self.scons_lib_dir),
-
- '%(python)s %(scons_wrapper)s --version',
- ])
-
- index = 0
- for run_command in self.run_commands:
- setattr(self, 'prof%d' % index, self.profile_name(index))
- c = (
- self.log_execute,
- self.log_display,
- run_command,
- self.logfile_name(index),
- )
- commands.append(c)
- index = index + 1
-
- commands.extend([
- (os.chdir, 'cd %%s', self.orig_cwd),
- ])
-
- if not os.environ.get('PRESERVE'):
- commands.extend(removals)
-
- commands.append((shutil.rmtree, 'rm -rf %%s', self.tmpdir))
-
- self.run_command_list(commands, self.__dict__)
-
- self.scons = save_scons
- self.scons_lib_dir = save_scons_lib_dir
- self.scons_wrapper = save_scons_wrapper
-
- #
-
- def help_time(self):
- help = """\
- Usage: scons-time time [OPTIONS] FILE [...]
-
- -C DIR, --chdir=DIR Change to DIR before looking for files
- -f FILE, --file=FILE Read configuration from specified FILE
- --fmt=FORMAT, --format=FORMAT Print data in specified FORMAT
- -h, --help Print this help and exit
- -p STRING, --prefix=STRING Use STRING as log file/profile prefix
- -t NUMBER, --tail=NUMBER Only report the last NUMBER files
- --which=TIMER Plot timings for TIMER: total,
- SConscripts, SCons, commands.
- """
- sys.stdout.write(self.outdent(help))
- sys.stdout.flush()
-
- def do_time(self, argv):
-
- format = 'ascii'
- logfile_path = lambda x: x
- tail = None
- which = 'total'
-
- short_opts = '?C:f:hp:t:'
-
- long_opts = [
- 'chdir=',
- 'file=',
- 'fmt=',
- 'format=',
- 'help',
- 'prefix=',
- 'tail=',
- 'title=',
- 'which=',
- ]
-
- opts, args = getopt.getopt(argv[1:], short_opts, long_opts)
-
- for o, a in opts:
- if o in ('-C', '--chdir'):
- self.chdir = a
- elif o in ('-f', '--file'):
- self.config_file = a
- elif o in ('--fmt', '--format'):
- format = a
- elif o in ('-?', '-h', '--help'):
- self.do_help(['help', 'time'])
- sys.exit(0)
- elif o in ('-p', '--prefix'):
- self.prefix = a
- elif o in ('-t', '--tail'):
- tail = int(a)
- elif o in ('--title',):
- self.title = a
- elif o in ('--which',):
- if not a in self.time_strings.keys():
- sys.stderr.write('%s: time: Unrecognized timer "%s".\n' % (self.name, a))
- sys.stderr.write('%s Type "%s help time" for help.\n' % (self.name_spaces, self.name))
- sys.exit(1)
- which = a
-
- if self.config_file:
- HACK_for_exec(open(self.config_file, 'rU').read(), self.__dict__)
-
- if self.chdir:
- os.chdir(self.chdir)
- logfile_path = lambda x: os.path.join(self.chdir, x)
-
- if not args:
-
- pattern = '%s*.log' % self.prefix
- args = self.args_to_files([pattern], tail)
-
- if not args:
- if self.chdir:
- directory = self.chdir
- else:
- directory = os.getcwd()
-
- sys.stderr.write('%s: time: No arguments specified.\n' % self.name)
- sys.stderr.write('%s No %s*.log files found in "%s".\n' % (self.name_spaces, self.prefix, directory))
- sys.stderr.write('%s Type "%s help time" for help.\n' % (self.name_spaces, self.name))
- sys.exit(1)
-
- else:
-
- args = self.args_to_files(args, tail)
-
- cwd_ = os.getcwd() + os.sep
-
- if format == 'ascii':
-
- columns = ("Total", "SConscripts", "SCons", "commands")
- self.ascii_table(args, columns, self.get_debug_times, logfile_path)
-
- elif format == 'gnuplot':
-
- results = self.collect_results(args, self.get_debug_times,
- self.time_strings[which])
-
- self.gnuplot_results(results, fmt='%s %.6f')
-
- else:
-
- sys.stderr.write('%s: time: Unknown format "%s".\n' % (self.name, format))
- sys.exit(1)
-
-if __name__ == '__main__':
- opts, args = getopt.getopt(sys.argv[1:], 'h?V', ['help', 'version'])
-
- ST = SConsTimer()
-
- for o, a in opts:
- if o in ('-?', '-h', '--help'):
- ST.do_help(['help'])
- sys.exit(0)
- elif o in ('-V', '--version'):
- sys.stdout.write('scons-time version\n')
- sys.exit(0)
-
- if not args:
- sys.stderr.write('Type "%s help" for usage.\n' % ST.name)
- sys.exit(1)
-
- ST.execute_subcommand(args)
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/scons.py b/Externals/scons-local/scons.py
deleted file mode 100755
index bf84bf0ed7..0000000000
--- a/Externals/scons-local/scons.py
+++ /dev/null
@@ -1,196 +0,0 @@
-#! /usr/bin/env python
-#
-# SCons - a Software Constructor
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "src/script/scons.py 5134 2010/08/16 23:02:40 bdeegan"
-
-__version__ = "2.0.1"
-
-__build__ = "r5134"
-
-__buildsys__ = "cooldog"
-
-__date__ = "2010/08/16 23:02:40"
-
-__developer__ = "bdeegan"
-
-import os
-import os.path
-import sys
-
-##############################################################################
-# BEGIN STANDARD SCons SCRIPT HEADER
-#
-# This is the cut-and-paste logic so that a self-contained script can
-# interoperate correctly with different SCons versions and installation
-# locations for the engine. If you modify anything in this section, you
-# should also change other scripts that use this same header.
-##############################################################################
-
-# Strip the script directory from sys.path() so on case-insensitive
-# (WIN32) systems Python doesn't think that the "scons" script is the
-# "SCons" package. Replace it with our own library directories
-# (version-specific first, in case they installed by hand there,
-# followed by generic) so we pick up the right version of the build
-# engine modules if they're in either directory.
-
-
-# Check to see if the python version is > 3.0 which is currently unsupported
-# If so exit with error message
-try:
- if sys.version_info >= (3,0,0):
- msg = "scons: *** SCons version %s does not run under Python version %s.\n"
- sys.stderr.write(msg % (__version__, sys.version.split()[0]))
- sys.exit(1)
-except AttributeError:
- # Pre-1.6 Python has no sys.version_info
- # No need to check version as we then know the version is < 3.0.0 and supported
- pass
-
-script_dir = sys.path[0]
-
-if script_dir in sys.path:
- sys.path.remove(script_dir)
-
-libs = []
-
-if "SCONS_LIB_DIR" in os.environ:
- libs.append(os.environ["SCONS_LIB_DIR"])
-
-local_version = 'scons-local-' + __version__
-local = 'scons-local'
-if script_dir:
- local_version = os.path.join(script_dir, local_version)
- local = os.path.join(script_dir, local)
-libs.append(os.path.abspath(local_version))
-libs.append(os.path.abspath(local))
-
-scons_version = 'scons-%s' % __version__
-
-prefs = []
-
-if sys.platform == 'win32':
- # sys.prefix is (likely) C:\Python*;
- # check only C:\Python*.
- prefs.append(sys.prefix)
- prefs.append(os.path.join(sys.prefix, 'Lib', 'site-packages'))
-else:
- # On other (POSIX) platforms, things are more complicated due to
- # the variety of path names and library locations. Try to be smart
- # about it.
- if script_dir == 'bin':
- # script_dir is `pwd`/bin;
- # check `pwd`/lib/scons*.
- prefs.append(os.getcwd())
- else:
- if script_dir == '.' or script_dir == '':
- script_dir = os.getcwd()
- head, tail = os.path.split(script_dir)
- if tail == "bin":
- # script_dir is /foo/bin;
- # check /foo/lib/scons*.
- prefs.append(head)
-
- head, tail = os.path.split(sys.prefix)
- if tail == "usr":
- # sys.prefix is /foo/usr;
- # check /foo/usr/lib/scons* first,
- # then /foo/usr/local/lib/scons*.
- prefs.append(sys.prefix)
- prefs.append(os.path.join(sys.prefix, "local"))
- elif tail == "local":
- h, t = os.path.split(head)
- if t == "usr":
- # sys.prefix is /foo/usr/local;
- # check /foo/usr/local/lib/scons* first,
- # then /foo/usr/lib/scons*.
- prefs.append(sys.prefix)
- prefs.append(head)
- else:
- # sys.prefix is /foo/local;
- # check only /foo/local/lib/scons*.
- prefs.append(sys.prefix)
- else:
- # sys.prefix is /foo (ends in neither /usr or /local);
- # check only /foo/lib/scons*.
- prefs.append(sys.prefix)
-
- temp = [os.path.join(x, 'lib') for x in prefs]
- temp.extend([os.path.join(x,
- 'lib',
- 'python' + sys.version[:3],
- 'site-packages') for x in prefs])
- prefs = temp
-
- # Add the parent directory of the current python's library to the
- # preferences. On SuSE-91/AMD64, for example, this is /usr/lib64,
- # not /usr/lib.
- try:
- libpath = os.__file__
- except AttributeError:
- pass
- else:
- # Split /usr/libfoo/python*/os.py to /usr/libfoo/python*.
- libpath, tail = os.path.split(libpath)
- # Split /usr/libfoo/python* to /usr/libfoo
- libpath, tail = os.path.split(libpath)
- # Check /usr/libfoo/scons*.
- prefs.append(libpath)
-
- try:
- import pkg_resources
- except ImportError:
- pass
- else:
- # when running from an egg add the egg's directory
- try:
- d = pkg_resources.get_distribution('scons')
- except pkg_resources.DistributionNotFound:
- pass
- else:
- prefs.append(d.location)
-
-# Look first for 'scons-__version__' in all of our preference libs,
-# then for 'scons'.
-libs.extend([os.path.join(x, scons_version) for x in prefs])
-libs.extend([os.path.join(x, 'scons') for x in prefs])
-
-sys.path = libs + sys.path
-
-##############################################################################
-# END STANDARD SCons SCRIPT HEADER
-##############################################################################
-
-if __name__ == "__main__":
- import SCons.Script
- # this does all the work, and calls sys.exit
- # with the proper exit status when done.
- SCons.Script.main()
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/scons-local/sconsign.py b/Externals/scons-local/sconsign.py
deleted file mode 100755
index adf3d2832f..0000000000
--- a/Externals/scons-local/sconsign.py
+++ /dev/null
@@ -1,513 +0,0 @@
-#! /usr/bin/env python
-#
-# SCons - a Software Constructor
-#
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-__revision__ = "src/script/sconsign.py 5134 2010/08/16 23:02:40 bdeegan"
-
-__version__ = "2.0.1"
-
-__build__ = "r5134"
-
-__buildsys__ = "cooldog"
-
-__date__ = "2010/08/16 23:02:40"
-
-__developer__ = "bdeegan"
-
-import os
-import sys
-import time
-
-##############################################################################
-# BEGIN STANDARD SCons SCRIPT HEADER
-#
-# This is the cut-and-paste logic so that a self-contained script can
-# interoperate correctly with different SCons versions and installation
-# locations for the engine. If you modify anything in this section, you
-# should also change other scripts that use this same header.
-##############################################################################
-
-# Strip the script directory from sys.path() so on case-insensitive
-# (WIN32) systems Python doesn't think that the "scons" script is the
-# "SCons" package. Replace it with our own library directories
-# (version-specific first, in case they installed by hand there,
-# followed by generic) so we pick up the right version of the build
-# engine modules if they're in either directory.
-
-script_dir = sys.path[0]
-
-if script_dir in sys.path:
- sys.path.remove(script_dir)
-
-libs = []
-
-if "SCONS_LIB_DIR" in os.environ:
- libs.append(os.environ["SCONS_LIB_DIR"])
-
-local_version = 'scons-local-' + __version__
-local = 'scons-local'
-if script_dir:
- local_version = os.path.join(script_dir, local_version)
- local = os.path.join(script_dir, local)
-libs.append(os.path.abspath(local_version))
-libs.append(os.path.abspath(local))
-
-scons_version = 'scons-%s' % __version__
-
-prefs = []
-
-if sys.platform == 'win32':
- # sys.prefix is (likely) C:\Python*;
- # check only C:\Python*.
- prefs.append(sys.prefix)
- prefs.append(os.path.join(sys.prefix, 'Lib', 'site-packages'))
-else:
- # On other (POSIX) platforms, things are more complicated due to
- # the variety of path names and library locations. Try to be smart
- # about it.
- if script_dir == 'bin':
- # script_dir is `pwd`/bin;
- # check `pwd`/lib/scons*.
- prefs.append(os.getcwd())
- else:
- if script_dir == '.' or script_dir == '':
- script_dir = os.getcwd()
- head, tail = os.path.split(script_dir)
- if tail == "bin":
- # script_dir is /foo/bin;
- # check /foo/lib/scons*.
- prefs.append(head)
-
- head, tail = os.path.split(sys.prefix)
- if tail == "usr":
- # sys.prefix is /foo/usr;
- # check /foo/usr/lib/scons* first,
- # then /foo/usr/local/lib/scons*.
- prefs.append(sys.prefix)
- prefs.append(os.path.join(sys.prefix, "local"))
- elif tail == "local":
- h, t = os.path.split(head)
- if t == "usr":
- # sys.prefix is /foo/usr/local;
- # check /foo/usr/local/lib/scons* first,
- # then /foo/usr/lib/scons*.
- prefs.append(sys.prefix)
- prefs.append(head)
- else:
- # sys.prefix is /foo/local;
- # check only /foo/local/lib/scons*.
- prefs.append(sys.prefix)
- else:
- # sys.prefix is /foo (ends in neither /usr or /local);
- # check only /foo/lib/scons*.
- prefs.append(sys.prefix)
-
- temp = [os.path.join(x, 'lib') for x in prefs]
- temp.extend([os.path.join(x,
- 'lib',
- 'python' + sys.version[:3],
- 'site-packages') for x in prefs])
- prefs = temp
-
- # Add the parent directory of the current python's library to the
- # preferences. On SuSE-91/AMD64, for example, this is /usr/lib64,
- # not /usr/lib.
- try:
- libpath = os.__file__
- except AttributeError:
- pass
- else:
- # Split /usr/libfoo/python*/os.py to /usr/libfoo/python*.
- libpath, tail = os.path.split(libpath)
- # Split /usr/libfoo/python* to /usr/libfoo
- libpath, tail = os.path.split(libpath)
- # Check /usr/libfoo/scons*.
- prefs.append(libpath)
-
- try:
- import pkg_resources
- except ImportError:
- pass
- else:
- # when running from an egg add the egg's directory
- try:
- d = pkg_resources.get_distribution('scons')
- except pkg_resources.DistributionNotFound:
- pass
- else:
- prefs.append(d.location)
-
-# Look first for 'scons-__version__' in all of our preference libs,
-# then for 'scons'.
-libs.extend([os.path.join(x, scons_version) for x in prefs])
-libs.extend([os.path.join(x, 'scons') for x in prefs])
-
-sys.path = libs + sys.path
-
-##############################################################################
-# END STANDARD SCons SCRIPT HEADER
-##############################################################################
-
-import SCons.compat # so pickle will import cPickle instead
-
-import whichdb
-import pickle
-import imp
-
-import SCons.SConsign
-
-def my_whichdb(filename):
- if filename[-7:] == ".dblite":
- return "SCons.dblite"
- try:
- f = open(filename + ".dblite", "rb")
- f.close()
- return "SCons.dblite"
- except IOError:
- pass
- return _orig_whichdb(filename)
-
-_orig_whichdb = whichdb.whichdb
-whichdb.whichdb = my_whichdb
-
-def my_import(mname):
- if '.' in mname:
- i = mname.rfind('.')
- parent = my_import(mname[:i])
- fp, pathname, description = imp.find_module(mname[i+1:],
- parent.__path__)
- else:
- fp, pathname, description = imp.find_module(mname)
- return imp.load_module(mname, fp, pathname, description)
-
-class Flagger(object):
- default_value = 1
- def __setitem__(self, item, value):
- self.__dict__[item] = value
- self.default_value = 0
- def __getitem__(self, item):
- return self.__dict__.get(item, self.default_value)
-
-Do_Call = None
-Print_Directories = []
-Print_Entries = []
-Print_Flags = Flagger()
-Verbose = 0
-Readable = 0
-
-def default_mapper(entry, name):
- try:
- val = eval("entry."+name)
- except:
- val = None
- return str(val)
-
-def map_action(entry, name):
- try:
- bact = entry.bact
- bactsig = entry.bactsig
- except AttributeError:
- return None
- return '%s [%s]' % (bactsig, bact)
-
-def map_timestamp(entry, name):
- try:
- timestamp = entry.timestamp
- except AttributeError:
- timestamp = None
- if Readable and timestamp:
- return "'" + time.ctime(timestamp) + "'"
- else:
- return str(timestamp)
-
-def map_bkids(entry, name):
- try:
- bkids = entry.bsources + entry.bdepends + entry.bimplicit
- bkidsigs = entry.bsourcesigs + entry.bdependsigs + entry.bimplicitsigs
- except AttributeError:
- return None
- result = []
- for i in range(len(bkids)):
- result.append(nodeinfo_string(bkids[i], bkidsigs[i], " "))
- if result == []:
- return None
- return "\n ".join(result)
-
-map_field = {
- 'action' : map_action,
- 'timestamp' : map_timestamp,
- 'bkids' : map_bkids,
-}
-
-map_name = {
- 'implicit' : 'bkids',
-}
-
-def field(name, entry, verbose=Verbose):
- if not Print_Flags[name]:
- return None
- fieldname = map_name.get(name, name)
- mapper = map_field.get(fieldname, default_mapper)
- val = mapper(entry, name)
- if verbose:
- val = name + ": " + val
- return val
-
-def nodeinfo_raw(name, ninfo, prefix=""):
- # This just formats the dictionary, which we would normally use str()
- # to do, except that we want the keys sorted for deterministic output.
- d = ninfo.__dict__
- try:
- keys = ninfo.field_list + ['_version_id']
- except AttributeError:
- keys = sorted(d.keys())
- l = []
- for k in keys:
- l.append('%s: %s' % (repr(k), repr(d.get(k))))
- if '\n' in name:
- name = repr(name)
- return name + ': {' + ', '.join(l) + '}'
-
-def nodeinfo_cooked(name, ninfo, prefix=""):
- try:
- field_list = ninfo.field_list
- except AttributeError:
- field_list = []
- if '\n' in name:
- name = repr(name)
- outlist = [name+':'] + [_f for _f in [field(x, ninfo, Verbose) for x in field_list] if _f]
- if Verbose:
- sep = '\n ' + prefix
- else:
- sep = ' '
- return sep.join(outlist)
-
-nodeinfo_string = nodeinfo_cooked
-
-def printfield(name, entry, prefix=""):
- outlist = field("implicit", entry, 0)
- if outlist:
- if Verbose:
- print " implicit:"
- print " " + outlist
- outact = field("action", entry, 0)
- if outact:
- if Verbose:
- print " action: " + outact
- else:
- print " " + outact
-
-def printentries(entries, location):
- if Print_Entries:
- for name in Print_Entries:
- try:
- entry = entries[name]
- except KeyError:
- sys.stderr.write("sconsign: no entry `%s' in `%s'\n" % (name, location))
- else:
- try:
- ninfo = entry.ninfo
- except AttributeError:
- print name + ":"
- else:
- print nodeinfo_string(name, entry.ninfo)
- printfield(name, entry.binfo)
- else:
- for name in sorted(entries.keys()):
- entry = entries[name]
- try:
- ninfo = entry.ninfo
- except AttributeError:
- print name + ":"
- else:
- print nodeinfo_string(name, entry.ninfo)
- printfield(name, entry.binfo)
-
-class Do_SConsignDB(object):
- def __init__(self, dbm_name, dbm):
- self.dbm_name = dbm_name
- self.dbm = dbm
-
- def __call__(self, fname):
- # The *dbm modules stick their own file suffixes on the names
- # that are passed in. This is causes us to jump through some
- # hoops here to be able to allow the user
- try:
- # Try opening the specified file name. Example:
- # SPECIFIED OPENED BY self.dbm.open()
- # --------- -------------------------
- # .sconsign => .sconsign.dblite
- # .sconsign.dblite => .sconsign.dblite.dblite
- db = self.dbm.open(fname, "r")
- except (IOError, OSError), e:
- print_e = e
- try:
- # That didn't work, so try opening the base name,
- # so that if the actually passed in 'sconsign.dblite'
- # (for example), the dbm module will put the suffix back
- # on for us and open it anyway.
- db = self.dbm.open(os.path.splitext(fname)[0], "r")
- except (IOError, OSError):
- # That didn't work either. See if the file name
- # they specified just exists (independent of the dbm
- # suffix-mangling).
- try:
- open(fname, "r")
- except (IOError, OSError), e:
- # Nope, that file doesn't even exist, so report that
- # fact back.
- print_e = e
- sys.stderr.write("sconsign: %s\n" % (print_e))
- return
- except KeyboardInterrupt:
- raise
- except pickle.UnpicklingError:
- sys.stderr.write("sconsign: ignoring invalid `%s' file `%s'\n" % (self.dbm_name, fname))
- return
- except Exception, e:
- sys.stderr.write("sconsign: ignoring invalid `%s' file `%s': %s\n" % (self.dbm_name, fname, e))
- return
-
- if Print_Directories:
- for dir in Print_Directories:
- try:
- val = db[dir]
- except KeyError:
- sys.stderr.write("sconsign: no dir `%s' in `%s'\n" % (dir, args[0]))
- else:
- self.printentries(dir, val)
- else:
- for dir in sorted(db.keys()):
- self.printentries(dir, db[dir])
-
- def printentries(self, dir, val):
- print '=== ' + dir + ':'
- printentries(pickle.loads(val), dir)
-
-def Do_SConsignDir(name):
- try:
- fp = open(name, 'rb')
- except (IOError, OSError), e:
- sys.stderr.write("sconsign: %s\n" % (e))
- return
- try:
- sconsign = SCons.SConsign.Dir(fp)
- except KeyboardInterrupt:
- raise
- except pickle.UnpicklingError:
- sys.stderr.write("sconsign: ignoring invalid .sconsign file `%s'\n" % (name))
- return
- except Exception, e:
- sys.stderr.write("sconsign: ignoring invalid .sconsign file `%s': %s\n" % (name, e))
- return
- printentries(sconsign.entries, args[0])
-
-##############################################################################
-
-import getopt
-
-helpstr = """\
-Usage: sconsign [OPTIONS] FILE [...]
-Options:
- -a, --act, --action Print build action information.
- -c, --csig Print content signature information.
- -d DIR, --dir=DIR Print only info about DIR.
- -e ENTRY, --entry=ENTRY Print only info about ENTRY.
- -f FORMAT, --format=FORMAT FILE is in the specified FORMAT.
- -h, --help Print this message and exit.
- -i, --implicit Print implicit dependency information.
- -r, --readable Print timestamps in human-readable form.
- --raw Print raw Python object representations.
- -s, --size Print file sizes.
- -t, --timestamp Print timestamp information.
- -v, --verbose Verbose, describe each field.
-"""
-
-opts, args = getopt.getopt(sys.argv[1:], "acd:e:f:hirstv",
- ['act', 'action',
- 'csig', 'dir=', 'entry=',
- 'format=', 'help', 'implicit',
- 'raw', 'readable',
- 'size', 'timestamp', 'verbose'])
-
-
-for o, a in opts:
- if o in ('-a', '--act', '--action'):
- Print_Flags['action'] = 1
- elif o in ('-c', '--csig'):
- Print_Flags['csig'] = 1
- elif o in ('-d', '--dir'):
- Print_Directories.append(a)
- elif o in ('-e', '--entry'):
- Print_Entries.append(a)
- elif o in ('-f', '--format'):
- Module_Map = {'dblite' : 'SCons.dblite',
- 'sconsign' : None}
- dbm_name = Module_Map.get(a, a)
- if dbm_name:
- try:
- dbm = my_import(dbm_name)
- except:
- sys.stderr.write("sconsign: illegal file format `%s'\n" % a)
- print helpstr
- sys.exit(2)
- Do_Call = Do_SConsignDB(a, dbm)
- else:
- Do_Call = Do_SConsignDir
- elif o in ('-h', '--help'):
- print helpstr
- sys.exit(0)
- elif o in ('-i', '--implicit'):
- Print_Flags['implicit'] = 1
- elif o in ('--raw',):
- nodeinfo_string = nodeinfo_raw
- elif o in ('-r', '--readable'):
- Readable = 1
- elif o in ('-s', '--size'):
- Print_Flags['size'] = 1
- elif o in ('-t', '--timestamp'):
- Print_Flags['timestamp'] = 1
- elif o in ('-v', '--verbose'):
- Verbose = 1
-
-if Do_Call:
- for a in args:
- Do_Call(a)
-else:
- for a in args:
- dbm_name = whichdb.whichdb(a)
- if dbm_name:
- Map_Module = {'SCons.dblite' : 'dblite'}
- dbm = my_import(dbm_name)
- Do_SConsignDB(Map_Module.get(dbm_name, dbm_name), dbm)(a)
- else:
- Do_SConsignDir(a)
-
-sys.exit(0)
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/Externals/wxWidgets/CMakeLists.txt b/Externals/wxWidgets/CMakeLists.txt
deleted file mode 100644
index c7459cae29..0000000000
--- a/Externals/wxWidgets/CMakeLists.txt
+++ /dev/null
@@ -1,400 +0,0 @@
-# wxAdv28
-set(SRCS src/common/accesscmn.cpp
- src/common/datavcmn.cpp
- src/common/taskbarcmn.cpp
- src/generic/aboutdlgg.cpp
- src/generic/animateg.cpp
- src/generic/bmpcboxg.cpp
- src/generic/calctrl.cpp
- src/generic/datavgen.cpp
- src/generic/datectlg.cpp
- src/generic/grid.cpp
- src/generic/gridctrl.cpp
- src/generic/gridsel.cpp
- src/generic/helpext.cpp
- src/generic/hyperlink.cpp
- src/generic/laywin.cpp
- src/generic/odcombo.cpp
- src/generic/propdlg.cpp
- src/generic/sashwin.cpp
- src/generic/splash.cpp
- src/generic/tipdlg.cpp
- src/generic/wizard.cpp
- src/msw/aboutdlg.cpp
- src/msw/datectrl.cpp
- src/msw/joystick.cpp
- src/msw/sound.cpp
- src/msw/taskbar.cpp)
-enable_precompiled_headers(include/wx/wxprec.h src/common/dummy.cpp SRCS)
-add_library(wxAdv28 STATIC ${SRCS})
-
-
-# wxAui
-set(SRCS src/aui/auibar.cpp
- src/aui/auibook.cpp
- src/aui/dockart.cpp
- src/aui/floatpane.cpp
- src/aui/framemanager.cpp
- src/aui/tabmdi.cpp)
-enable_precompiled_headers(include/wx/wxprec.h src/common/dummy.cpp SRCS)
-add_library(wxAui STATIC ${SRCS})
-
-
-# wxBase28
-set(SRCS src/common/appbase.cpp
- src/common/arcall.cpp
- src/common/arcfind.cpp
- src/common/archive.cpp
- src/common/clntdata.cpp
- src/common/cmdline.cpp
- src/common/config.cpp
- src/common/convauto.cpp
- src/common/datetime.cpp
- src/common/datstrm.cpp
- src/common/dircmn.cpp
- src/common/dynarray.cpp
- src/common/dynlib.cpp
- src/common/dynload.cpp
- src/common/encconv.cpp
- src/common/event.cpp
- src/common/extended.c
- src/common/ffile.cpp
- src/common/file.cpp
- src/common/fileback.cpp
- src/common/fileconf.cpp
- src/common/filefn.cpp
- src/common/filename.cpp
- src/common/filesys.cpp
- src/common/filtall.cpp
- src/common/filtfind.cpp
- src/common/fmapbase.cpp
- src/common/fs_arc.cpp
- src/common/fs_filter.cpp
- src/common/fs_mem.cpp
- src/common/hash.cpp
- src/common/hashmap.cpp
- src/common/init.cpp
- src/common/intl.cpp
- src/common/ipcbase.cpp
- src/common/list.cpp
- src/common/log.cpp
- src/common/longlong.cpp
- src/common/memory.cpp
- src/common/mimecmn.cpp
- src/common/module.cpp
- src/common/msgout.cpp
- src/common/mstream.cpp
- src/common/object.cpp
- src/common/platinfo.cpp
- src/common/powercmn.cpp
- src/common/process.cpp
- src/common/regex.cpp
- src/common/sstream.cpp
- src/common/stdpbase.cpp
- src/common/stopwatch.cpp
- src/common/strconv.cpp
- src/common/stream.cpp
- src/common/string.cpp
- src/common/sysopt.cpp
- src/common/tarstrm.cpp
- src/common/textbuf.cpp
- src/common/textfile.cpp
- src/common/tokenzr.cpp
- src/common/txtstrm.cpp
- src/common/uri.cpp
- src/common/utilscmn.cpp
- src/common/variant.cpp
- src/common/wfstream.cpp
- src/common/wxchar.cpp
- src/common/xti.cpp
- src/common/xtistrm.cpp
- src/common/zipstrm.cpp
- src/common/zstream.cpp
- src/msw/basemsw.cpp
- src/msw/crashrpt.cpp
- src/msw/dde.cpp
- src/msw/debughlp.cpp
- src/msw/dir.cpp
- src/msw/dlmsw.cpp
- src/msw/main.cpp
- src/msw/mimetype.cpp
- src/msw/mslu.cpp
- src/msw/power.cpp
- src/msw/regconf.cpp
- src/msw/registry.cpp
- src/msw/snglinst.cpp
- src/msw/stackwalk.cpp
- src/msw/stdpaths.cpp
- src/msw/thread.cpp
- src/msw/utils.cpp
- src/msw/utilsexc.cpp
- src/msw/volume.cpp)
-enable_precompiled_headers(include/wx/wxprec.h src/common/dummy.cpp SRCS)
-add_library(wxBase28 STATIC ${SRCS})
-
-
-# wxCore28
-set(SRCS src/common/accesscmn.cpp
- src/common/anidecod.cpp
- src/common/appcmn.cpp
- src/common/artprov.cpp
- src/common/artstd.cpp
- src/common/bmpbase.cpp
- src/common/bookctrl.cpp
- src/common/choiccmn.cpp
- src/common/clipcmn.cpp
- src/common/clrpickercmn.cpp
- src/common/cmdproc.cpp
- src/common/cmndata.cpp
- src/common/colourcmn.cpp
- src/common/combocmn.cpp
- src/common/containr.cpp
- src/common/cshelp.cpp
- src/common/ctrlcmn.cpp
- src/common/ctrlsub.cpp
- src/common/datacmn.cpp
- src/common/dcbase.cpp
- src/common/dcbufcmn.cpp
- src/common/dcgraph.cpp
- src/common/dlgcmn.cpp
- src/common/dndcmn.cpp
- src/common/dobjcmn.cpp
- src/common/docmdi.cpp
- src/common/docview.cpp
- src/common/dpycmn.cpp
- src/common/dseldlg.cpp
- src/common/effects.cpp
- src/common/event.cpp
- src/common/evtloopcmn.cpp
- src/common/fddlgcmn.cpp
- src/common/filepickercmn.cpp
- src/common/fldlgcmn.cpp
- src/common/fontcmn.cpp
- src/common/fontenumcmn.cpp
- src/common/fontmap.cpp
- src/common/fontpickercmn.cpp
- src/common/framecmn.cpp
- src/common/fs_mem.cpp
- src/common/gaugecmn.cpp
- src/common/gbsizer.cpp
- src/common/gdicmn.cpp
- src/common/geometry.cpp
- src/common/gifdecod.cpp
- src/common/graphcmn.cpp
- src/common/helpbase.cpp
- src/common/iconbndl.cpp
- src/common/imagall.cpp
- src/common/imagbmp.cpp
- src/common/image.cpp
- src/common/imagfill.cpp
- src/common/imaggif.cpp
- src/common/imagiff.cpp
- src/common/imagjpeg.cpp
- src/common/imagpcx.cpp
- src/common/imagpng.cpp
- src/common/imagpnm.cpp
- src/common/imagtga.cpp
- src/common/imagtiff.cpp
- src/common/imagxpm.cpp
- src/common/layout.cpp
- src/common/lboxcmn.cpp
- src/common/listctrlcmn.cpp
- src/common/matrix.cpp
- src/common/menucmn.cpp
- src/common/msgout.cpp
- src/common/nbkbase.cpp
- src/common/overlaycmn.cpp
- src/common/paper.cpp
- src/common/pickerbase.cpp
- src/common/popupcmn.cpp
- src/common/prntbase.cpp
- src/common/quantize.cpp
- src/common/radiocmn.cpp
- src/common/rendcmn.cpp
- src/common/rgncmn.cpp
- src/common/settcmn.cpp
- src/common/sizer.cpp
- src/common/statbar.cpp
- src/common/stockitem.cpp
- src/common/tbarbase.cpp
- src/common/textcmn.cpp
- src/common/timercmn.cpp
- src/common/toplvcmn.cpp
- src/common/treebase.cpp
- src/common/utilscmn.cpp
- src/common/valgen.cpp
- src/common/validate.cpp
- src/common/valtext.cpp
- src/common/wincmn.cpp
- src/common/xpmdecod.cpp
- src/generic/aboutdlgg.cpp
- src/generic/accel.cpp
- src/generic/busyinfo.cpp
- src/generic/buttonbar.cpp
- src/generic/choicbkg.cpp
- src/generic/choicdgg.cpp
- src/generic/clrpickerg.cpp
- src/generic/collpaneg.cpp
- src/generic/colrdlgg.cpp
- src/generic/combog.cpp
- src/generic/dcpsg.cpp
- src/generic/dcpsg.cpp
- src/generic/dirctrlg.cpp
- src/generic/dirdlgg.cpp
- src/generic/dragimgg.cpp
- src/generic/fdrepdlg.cpp
- src/generic/filedlgg.cpp
- src/generic/filepickerg.cpp
- src/generic/fontdlgg.cpp
- src/generic/fontpickerg.cpp
- src/generic/hyperlink.cpp
- src/generic/hyperlink.cpp
- src/generic/listbkg.cpp
- src/generic/listctrl.cpp
- src/generic/logg.cpp
- src/generic/mdig.cpp
- src/generic/msgdlgg.cpp
- src/generic/numdlgg.cpp
- src/generic/panelg.cpp
- src/generic/printps.cpp
- src/generic/prntdlgg.cpp
- src/generic/progdlgg.cpp
- src/generic/renderg.cpp
- src/generic/scrlwing.cpp
- src/generic/selstore.cpp
- src/generic/spinctlg.cpp
- src/generic/splitter.cpp
- src/generic/srchctlg.cpp
- src/generic/statusbr.cpp
- src/generic/tabg.cpp
- src/generic/textdlgg.cpp
- src/generic/tipwin.cpp
- src/generic/toolbkg.cpp
- src/generic/treebkg.cpp
- src/generic/treectlg.cpp
- src/generic/vlbox.cpp
- src/generic/vscroll.cpp
- src/msw/aboutdlg.cpp
- src/msw/accel.cpp
- src/msw/app.cpp
- src/msw/bitmap.cpp
- src/msw/bmpbuttn.cpp
- src/msw/brush.cpp
- src/msw/button.cpp
- src/msw/caret.cpp
- src/msw/checkbox.cpp
- src/msw/checklst.cpp
- src/msw/choice.cpp
- src/msw/clipbrd.cpp
- src/msw/colordlg.cpp
- src/msw/colour.cpp
- src/msw/combo.cpp
- src/msw/combobox.cpp
- src/msw/control.cpp
- src/msw/cursor.cpp
- src/msw/data.cpp
- src/msw/dc.cpp
- src/msw/dcclient.cpp
- src/msw/dcmemory.cpp
- src/msw/dcprint.cpp
- src/msw/dcscreen.cpp
- src/msw/dialog.cpp
- src/msw/dialup.cpp
- src/msw/dib.cpp
- src/msw/dirdlg.cpp
- src/msw/display.cpp
- src/msw/dragimag.cpp
- src/msw/enhmeta.cpp
- src/msw/evtloop.cpp
- src/msw/fdrepdlg.cpp
- src/msw/filedlg.cpp
- src/msw/font.cpp
- src/msw/fontdlg.cpp
- src/msw/fontenum.cpp
- src/msw/fontutil.cpp
- src/msw/frame.cpp
- src/msw/gauge95.cpp
- src/msw/gdiimage.cpp
- src/msw/gdiobj.cpp
- src/msw/graphics.cpp
- src/msw/gsockmsw.cpp
- src/msw/helpchm.cpp
- src/msw/helpwin.cpp
- src/msw/icon.cpp
- src/msw/imaglist.cpp
- src/msw/iniconf.cpp
- src/msw/listbox.cpp
- src/msw/listctrl.cpp
- src/msw/main.cpp
- src/msw/mdi.cpp
- src/msw/menu.cpp
- src/msw/menuitem.cpp
- src/msw/metafile.cpp
- src/msw/minifram.cpp
- src/msw/msgdlg.cpp
- src/msw/mslu.cpp
- src/msw/nativdlg.cpp
- src/msw/notebook.cpp
- src/msw/ownerdrw.cpp
- src/msw/palette.cpp
- src/msw/pen.cpp
- src/msw/popupwin.cpp
- src/msw/printdlg.cpp
- src/msw/printwin.cpp
- src/msw/radiobox.cpp
- src/msw/radiobut.cpp
- src/msw/region.cpp
- src/msw/renderer.cpp
- src/msw/scrolbar.cpp
- src/msw/settings.cpp
- src/msw/slider95.cpp
- src/msw/spinbutt.cpp
- src/msw/spinctrl.cpp
- src/msw/statbmp.cpp
- src/msw/statbox.cpp
- src/msw/statbr95.cpp
- src/msw/statline.cpp
- src/msw/stattext.cpp
- src/msw/tabctrl.cpp
- src/msw/tbar95.cpp
- src/msw/textctrl.cpp
- src/msw/tglbtn.cpp
- src/msw/timer.cpp
- src/msw/tooltip.cpp
- src/msw/toplevel.cpp
- src/msw/treectrl.cpp
- src/msw/utilsgui.cpp
- src/msw/uxtheme.cpp
- src/msw/volume.cpp
- src/msw/window.cpp
- src/msw/ole/access.cpp
- src/msw/ole/automtn.cpp
- src/msw/ole/dataobj.cpp
- src/msw/ole/dropsrc.cpp
- src/msw/ole/droptgt.cpp
- src/msw/ole/oleutils.cpp
- src/msw/ole/uuid.cpp)
-enable_precompiled_headers(include/wx/wxprec.h src/common/dummy.cpp SRCS)
-
-# These shouldn't link against the precompiled header
-set(SRCS ${SRCS} src/png/png.c
- src/png/pngerror.c
- src/png/pnggccrd.c
- src/png/pngget.c
- src/png/pngmem.c
- src/png/pngpread.c
- src/png/pngread.c
- src/png/pngrio.c
- src/png/pngrtran.c
- src/png/pngrutil.c
- src/png/pngset.c
- src/png/pngtest.c
- src/png/pngtrans.c
- src/png/pngvcrd.c
- src/png/pngwio.c
- src/png/pngwrite.c
- src/png/pngwtran.c
- src/png/pngwutil.c)
-
-
-add_library(wxCore28 STATIC ${SRCS})
diff --git a/Externals/wxWidgets/art/addbookm.xpm b/Externals/wxWidgets/art/addbookm.xpm
deleted file mode 100644
index 7d5f69900e..0000000000
--- a/Externals/wxWidgets/art/addbookm.xpm
+++ /dev/null
@@ -1,24 +0,0 @@
-/* XPM */
-static const char * addbookm_xpm[] = {
-/* columns rows colors chars-per-pixel */
-"16 15 3 1",
-". c Black",
-"X c #00C000",
-" c None",
-/* pixels */
-" ....... ",
-" .XXXXX. ",
-" .. .XXXXX. ",
-" .. .XXXXX. ",
-" ...... .XXXXX. ",
-" ...... .XXXXX. ",
-" .. .XXXXX. ",
-" .. .XXXXX. ",
-" .XXXXX. ",
-" .XXXXX. ",
-" .XXXXX. ",
-" .XXXXX. ",
-" .XX.XX. ",
-" .X. .X. ",
-" .. .. "
-};
diff --git a/Externals/wxWidgets/art/back.xpm b/Externals/wxWidgets/art/back.xpm
deleted file mode 100644
index b48af706cc..0000000000
--- a/Externals/wxWidgets/art/back.xpm
+++ /dev/null
@@ -1,21 +0,0 @@
-/* XPM */
-static const char * back_xpm[] = {
-"16 15 3 1",
-" c None",
-". c Black",
-"X c Gray100",
-" ",
-" ",
-" . ",
-" .. ",
-" .X. ",
-" .XX........ ",
-" .XXXXXXXXXX. ",
-" .XXXXXXXXXXX. ",
-" .XXXXXXXXXXX. ",
-" .XXXXXXXXXX. ",
-" .XX........ ",
-" .X. ",
-" .. ",
-" . ",
-" "};
diff --git a/Externals/wxWidgets/art/cdrom.xpm b/Externals/wxWidgets/art/cdrom.xpm
deleted file mode 100644
index b72d529e1c..0000000000
--- a/Externals/wxWidgets/art/cdrom.xpm
+++ /dev/null
@@ -1,57 +0,0 @@
-/* XPM */
-static const char * cdrom_xpm[] = {
-/* columns rows colors chars-per-pixel */
-"16 15 36 1",
-"= c #9BACC2",
-"y c #547B99",
-"$ c #FFFFFF",
-"@ c #839CB5",
-"o c #547897",
-"4 c #4D7492",
-"% c #F1F4F7",
-"X c #5A809C",
-"< c #8497A5",
-"0 c #7898AD",
-"+ c #CAD2DC",
-"r c #ACAEB2",
-"2 c #BECAD9",
-"* c #65839D",
-"e c #DCE2EA",
-"- c #ADBED2",
-"t c #597B9A",
-" c None",
-"1 c #467291",
-"9 c #D6DFE7",
-"O c #7393AB",
-"u c #49708B",
-"5 c #A0BACB",
-"& c #AABFCD",
-"8 c #B9CBD5",
-"; c #B4C4D3",
-": c #6F90A6",
-"3 c #A8B6CA",
-"# c #ADBACE",
-"w c #E4E9ED",
-". c #8EA9BC",
-"> c #B3BFD1",
-", c #C2CBDB",
-"6 c #C0D1DC",
-"7 c #A2B3C5",
-"q c #5D7C93",
-/* pixels */
-" .XooOo+ ",
-" X@#$$$%o& ",
-" *=-;$$$$$o+ ",
-" +O#;-$$$$$$: ",
-" o=>,-<1<$2-o ",
-" o3>--1$122-* ",
-" o=--$<4<22-X ",
-" o5$$$$$26;7* ",
-" X%$$$$2;-X8 ",
-" 90*9$$$-7Xqo ",
-" wXwe@O44X422222<<*4",
-" ttyyyoo4441uuuo",
-" t>$$$$$$$$$$$>o",
-" XXXtyyyoo44411u"
-};
diff --git a/Externals/wxWidgets/art/copy.xpm b/Externals/wxWidgets/art/copy.xpm
deleted file mode 100644
index aa6094f00f..0000000000
--- a/Externals/wxWidgets/art/copy.xpm
+++ /dev/null
@@ -1,44 +0,0 @@
-/* XPM */
-static const char * copy_xpm[] = {
-/* columns rows colors chars-per-pixel */
-"16 15 23 1",
-"o c #97C4E7",
-"* c #FFFFFF",
-"@ c #60A9DA",
-"= c #D1E5F5",
-"& c #C3DDF1",
-". c #7EA6C0",
-" c None",
-"X c #2F93CD",
-"O c #85BBE2",
-", c #EFF6FC",
-"; c #DEEDF8",
-"+ c #72B2DD",
-"3 c #F7FBFD",
-"4 c #FAFCFE",
-": c #DAEAF7",
-"< c #E9F3FA",
-"1 c #E2EFF8",
-"- c #FDFDFE",
-"% c #B6D5EE",
-"$ c #A5CCEA",
-"> c #E5F0F9",
-"# c #AFD1EC",
-"2 c #F4F9FD",
-/* pixels */
-" .....XX ",
-" .oO+@X#X ",
-" .$oO+X##X ",
-" .%$o........ ",
-" .&%$.*=o.-. ",
-" .=&%.*;=.--. ",
-" .:=&.*>;=&.... ",
-" .>:=.*,>;=o. ",
-" .<1:.*2,>:=. ",
-" .2<1.*32,>:=&. ",
-" .32<.*432,>:=. ",
-" .32<.*-432,>:. ",
-" .....**-432,>. ",
-" .***-432,. ",
-" .......... "
-};
diff --git a/Externals/wxWidgets/art/cross.xpm b/Externals/wxWidgets/art/cross.xpm
deleted file mode 100644
index 5fe844ab75..0000000000
--- a/Externals/wxWidgets/art/cross.xpm
+++ /dev/null
@@ -1,17 +0,0 @@
-/* XPM */
-static const char * cross_xpm[] = {
-/* columns rows colors chars-per-pixel */
-"10 10 2 1",
-" c Gray0",
-"# c None",
-/* pixels */
-" ######## ",
-" #### ",
-"# ## #",
-"## ##",
-"### ###",
-"### ###",
-"## ##",
-"# ## #",
-" #### ",
-" ###### "};
diff --git a/Externals/wxWidgets/art/cut.xpm b/Externals/wxWidgets/art/cut.xpm
deleted file mode 100644
index 83ff3bb955..0000000000
--- a/Externals/wxWidgets/art/cut.xpm
+++ /dev/null
@@ -1,46 +0,0 @@
-/* XPM */
-static const char * cut_xpm[] = {
-/* columns rows colors chars-per-pixel */
-"16 15 25 1",
-"6 c #D8BDC0",
-": c #C3C3C4",
-"- c #FFFFFF",
-". c #6C6D70",
-"2 c #AD3A45",
-"o c #DBDBDB",
-"# c #939495",
-"< c #E42234",
-"& c #C3C5C8",
-"; c #C6CCD3",
-"% c #B7B7B8",
-" c None",
-"* c #DFE0E2",
-"5 c #B69596",
-"3 c #9C2A35",
-"1 c #CFCFD0",
-", c #AB5C64",
-"+ c #D2D3D4",
-"$ c #BCBDBE",
-"@ c #C6C8CA",
-"> c #CDC0C1",
-"O c #826F72",
-"X c #979BA0",
-"4 c #9B8687",
-"= c #9FA0A0",
-/* pixels */
-" .X .o ",
-" O.+ @. ",
-" O. .. ",
-" O#$ %.& ",
-" O.*.. ",
-" #%#.. ",
-" O=-.. ",
-" #%#;. ",
-" OO:=O ",
-" >,,<, ,<,,1 ",
-" ><23<1 1<32<1 ",
-" ,2 4< <5 2, ",
-" <, ,2 2, ,< ",
-" 23,<5 5<,32 ",
-" 6225 522> "
-};
diff --git a/Externals/wxWidgets/art/deffile.xpm b/Externals/wxWidgets/art/deffile.xpm
deleted file mode 100644
index f08974b32c..0000000000
--- a/Externals/wxWidgets/art/deffile.xpm
+++ /dev/null
@@ -1,54 +0,0 @@
-/* XPM */
-static const char * deffile_xpm[] = {
-/* columns rows colors chars-per-pixel */
-"16 16 32 1",
-"= c #97C4E7",
-": c #72A8D2",
-"1 c #FFFFFF",
-"w c #839CB5",
-"X c #6B98B8",
-". c #5A89A6",
-"@ c #3A749C",
-", c #D1E5F5",
-"< c #67A1CF",
-"> c #F1F4F7",
-"e c #85A7BC",
-"% c #C3DDF1",
-"0 c #749BB4",
-"2 c #7EA6C0",
-"; c #5F9BC8",
-" c None",
-"O c #538DB3",
-"- c #85BBE2",
-"$ c #D6DFE7",
-"9 c #EFF6FC",
-"o c #6591AE",
-"4 c #F7FBFD",
-"8 c #FAFCFE",
-"6 c #DAEAF7",
-"7 c #E9F3FA",
-"q c #FDFDFE",
-"3 c #E2EFF8",
-"# c #8EA9BC",
-"& c #B6D5EE",
-"* c #A5CCEA",
-"5 c #F4F9FD",
-"+ c #4581AA",
-/* pixels */
-" ..XooO+@#$ ",
-" .%%&*=-;:;> ",
-" .,,%&*=<1=X> ",
-" #%%%%&*211=X ",
-" #3----- c #5A7BB4",
-"% c #5F7FB5",
-/* pixels */
-" ",
-" .Xo OO ",
-" +@#. $@% ",
-" &@@X .*@*o ",
-" =@= .*@*. ",
-" -@@X*@*. ",
-" .#@@@$. ",
-" ;@@: ",
-" ;@@@+ ",
-" .>@#%@@. ",
-" o*@*oO@@, ",
-" <#@*. .@@= ",
-"&@@$ :@@1 ",
-";#& 2#>. ",
-" "
-};
diff --git a/Externals/wxWidgets/art/dir_up.xpm b/Externals/wxWidgets/art/dir_up.xpm
deleted file mode 100644
index 0c2f71d092..0000000000
--- a/Externals/wxWidgets/art/dir_up.xpm
+++ /dev/null
@@ -1,52 +0,0 @@
-/* XPM */
-static const char * dir_up_xpm[] = {
-/* columns rows colors chars-per-pixel */
-"16 15 31 1",
-"6 c #9BACC2",
-"o c #9AEA53",
-"7 c #94A5BD",
-"8 c #547897",
-"5 c #839CB5",
-"@ c #376485",
-"$ c #5A809C",
-"# c #7F99B4",
-": c #D1D9E5",
-"< c #EAEDF3",
-"& c #446A8C",
-"q c #65839D",
-"> c #DCE2EA",
-", c #E1E6EE",
-"2 c #F5F6F7",
-"O c #8DA0B9",
-" c None",
-"% c #467291",
-". c #305F81",
-"X c #7393AB",
-"+ c #6A89A2",
-"4 c #A8B6CA",
-"1 c #EEF1F3",
-"3 c #F8F9FA",
-"0 c #215579",
-"9 c #7F97B0",
-"* c #B3BFD1",
-"w c #7A90AC",
-"- c #C2CBDB",
-"; c #CAD6E1",
-"= c #BBC4D6",
-/* pixels */
-" .. ",
-" X.o. ",
-".... X.ooo. ",
-".OO+....ooooo. ",
-".OOOOOO@@ooo.. ",
-".OOOO#OO@ooo.$ ",
-".OOOOOOO@ooo.$ ",
-".O%............&",
-".O&*=-;:>,<1231.",
-".+.4*=-;:>,<12$.",
-"..564*=-;:>,<1. ",
-".@O764*=-;:>,<. ",
-".89O764*=-;:>$$ ",
-"0qw9O764*=-;:. ",
-"0............. "
-};
diff --git a/Externals/wxWidgets/art/down.xpm b/Externals/wxWidgets/art/down.xpm
deleted file mode 100644
index 1f9cf29373..0000000000
--- a/Externals/wxWidgets/art/down.xpm
+++ /dev/null
@@ -1,21 +0,0 @@
-/* XPM */
-static const char * down_xpm[] = {
-"16 15 3 1",
-" c None",
-". c Black",
-"X c Gray100",
-" ",
-" ...... ",
-" .XXXX. ",
-" .XXXX. ",
-" .XXXX. ",
-" .XXXX. ",
-" .XXXX. ",
-" .XXXX. ",
-" ....XXXX.... ",
-" .XXXXXXXX. ",
-" .XXXXXX. ",
-" .XXXX. ",
-" .XX. ",
-" .. ",
-" "};
diff --git a/Externals/wxWidgets/art/exefile.xpm b/Externals/wxWidgets/art/exefile.xpm
deleted file mode 100644
index 7ecdec3e7b..0000000000
--- a/Externals/wxWidgets/art/exefile.xpm
+++ /dev/null
@@ -1,73 +0,0 @@
-/* XPM */
-static const char * exefile_xpm[] = {
-/* columns rows colors chars-per-pixel */
-"16 16 51 1",
-"% c #E8E8EC",
-"= c #E8E8ED",
-"z c #CACAD4",
-"8 c #D9D9E1",
-"p c #D2D2DA",
-"u c #E1E1E7",
-"a c #D2D2DB",
-"< c #E9E9ED",
-"q c #DADAE1",
-"+ c #F1F1F4",
-"g c #D3D3DB",
-"1 c #E2E2E8",
-"x c #D3D3DC",
-"5 c #00A5FF",
-"$ c #EAEAEE",
-"4 c #DBDBE2",
-"h c #CCCCD6",
-"y c #D4D4DC",
-"r c #E3E3E9",
-"d c #D4D4DD",
-"7 c #DCDCE2",
-": c #EBEBEF",
-"0 c #DCDCE3",
-" c None",
-"O c #F3F3F5",
-"> c #E4E4E9",
-"& c #F3F3F6",
-"j c #D5D5DD",
-"6 c #E4E4EA",
-". c #C6C6D5",
-"# c #ECECF0",
-"f c #CECED7",
-"l c #CECED8",
-"e c #D6D6DE",
-"; c #EDEDF0",
-"3 c #DEDEE4",
-", c #EDEDF1",
-"c c #CFCFD8",
-"o c #F5F5F7",
-"- c #E6E6EB",
-"w c #D7D7DF",
-"v c #C8C8D3",
-"i c #DFDFE5",
-"@ c #EEEEF2",
-"s c #D0D0D9",
-"X c #9494AD",
-"9 c #D8D8DF",
-"t c #D8D8E0",
-"* c #EFEFF2",
-"2 c #E0E0E6",
-"k c #D1D1DA",
-/* pixels */
-" ........X ",
-" .oO+@#$%XX ",
-" .&+*#$=-XXX ",
-" .+*;:=->XXXX ",
-" .*,:<->1234X ",
-" .,5:5612378X ",
-" 5,5559530qwX ",
-" 55555550q9eX ",
-" 5555r5555teyX ",
-" 55rui559eypX ",
-" 5555i5555yasX ",
-" 5555555dasfX ",
-" 5355595gsfhX ",
-" .3595jgklhzX ",
-" .0qwjxkchzvX ",
-" XXXXXXXXXXXX "
-};
diff --git a/Externals/wxWidgets/art/fileopen.xpm b/Externals/wxWidgets/art/fileopen.xpm
deleted file mode 100644
index 9cf25ccc5b..0000000000
--- a/Externals/wxWidgets/art/fileopen.xpm
+++ /dev/null
@@ -1,57 +0,0 @@
-/* XPM */
-static const char * fileopen_xpm[] = {
-/* columns rows colors chars-per-pixel */
-"16 15 36 1",
-"6 c #9BACC2",
-"< c #9AEA53",
-"9 c #94A5BD",
-"5 c #839CB5",
-"; c #4D7492",
-". c #376485",
-"$ c #7F99B4",
-"r c #D1D9E5",
-"7 c #EAEDF3",
-"@ c #CAD2DC",
-"% c #718BA7",
-"t c #BECAD9",
-"& c #65839D",
-"0 c #DCE2EA",
-"4 c #F5F6F7",
-"w c #597B9A",
-"O c #8DA0B9",
-" c None",
-"+ c #467291",
-"u c #305F81",
-"= c #B4C4D3",
-"# c #CAE2AA",
-"1 c #FAFCFE",
-"3 c #A8B6CA",
-"q c #E4E9ED",
-"8 c #EEF1F3",
-"X c #215579",
-"2 c #7F97B0",
-": c #B3BFD1",
-"y c #7A90AC",
-", c #C2CBDB",
-"- c #ADD668",
-"* c #B6D791",
-"e c #CAD6E1",
-"o c #DFF0D0",
-"> c #BBC4D6",
-/* pixels */
-" ",
-" .... ",
-"XXXXX .oo. ",
-"XOOOO+@.#o. ",
-"XOOOO$%&.*oXXX ",
-"XOOOOOOO.*oX=X ",
-"XOXXXX...-oXXXX;",
-"XOX:>,.<<<<,.<<>.>.X0q7; ",
-"Xw2O963:>>er0t; ",
-"X&y2O963:>,er; ",
-"uXXXXXXXXXXXX; ",
-" "
-};
diff --git a/Externals/wxWidgets/art/filesave.xpm b/Externals/wxWidgets/art/filesave.xpm
deleted file mode 100644
index 04b7539e28..0000000000
--- a/Externals/wxWidgets/art/filesave.xpm
+++ /dev/null
@@ -1,42 +0,0 @@
-/* XPM */
-static const char * filesave_xpm[] = {
-/* columns rows colors chars-per-pixel */
-"16 15 21 1",
-"O c #FFFFFF",
-"> c #D5D6D8",
-"; c #446A8C",
-"1 c #CAD2DC",
-": c #C0C7D1",
-" c #5F666D",
-"% c #A5B0BA",
-"o c #65839D",
-", c #DCE2EA",
-"< c #C3C5C8",
-"- c #E1E6EE",
-"* c #C6CCD3",
-". c None",
-"$ c #305F81",
-"2 c #D6DFE7",
-"= c #D2D9E0",
-"& c #B7BFC7",
-"X c #1B4467",
-"# c #BCBDBE",
-"@ c #7A90AC",
-"+ c #5D7C93",
-/* pixels */
-" .",
-" XoOOOOOOOOO+X .",
-" @oO#######O+@ .",
-" @oOOOOOOOOO+@ .",
-" @oO#######O+@ .",
-" @oOOOOOOOOO+@ .",
-" @@+++++++++@@ .",
-" @@@@@@@@@@@@@ .",
-" @@@$$$$$$$$@@ .",
-" @@$%%%&*=-O$@ .",
-" @@$%X;;*=-O$@ .",
-" @@$%X;;:>,O$@ .",
-" @@$%X;;<12O$@ .",
-" @@$<<2OOOOO$@ .",
-". .."
-};
diff --git a/Externals/wxWidgets/art/filesaveas.xpm b/Externals/wxWidgets/art/filesaveas.xpm
deleted file mode 100644
index 3c45bc808d..0000000000
--- a/Externals/wxWidgets/art/filesaveas.xpm
+++ /dev/null
@@ -1,44 +0,0 @@
-/* XPM */
-static const char * filesaveas_xpm[] = {
-/* columns rows colors chars-per-pixel */
-"16 15 23 1",
-"X c Black",
-"+ c #FFFFFF",
-"< c #D5D6D8",
-"> c #446A8C",
-"3 c #CAD2DC",
-", c #C0C7D1",
-" c #5F666D",
-"* c #A5B0BA",
-"O c #65839D",
-"1 c #DCE2EA",
-"2 c #C3C5C8",
-": c #E1E6EE",
-". c #FFFF00",
-"- c #C6CCD3",
-"@ c None",
-"& c #305F81",
-"4 c #D6DFE7",
-"; c #D2D9E0",
-"= c #B7BFC7",
-"o c #1B4467",
-"$ c #BCBDBE",
-"# c #7A90AC",
-"% c #5D7C93",
-/* pixels */
-" .X .XX.",
-" oO+++++++.X.X.@",
-" #O+$$$$$XX...XX",
-" #O++++++.......",
-" #O+$$$$$XX...XX",
-" #O+++++++.X.X.@",
-" ##%%%%%%.X%.X .",
-" ############# @",
-" ###&&&&&&&# @",
-" ##&***=-;:+ @",
-" ##&*o>>-;:+ @",
-" ##&*o>>,<1+ @",
-" ##&*o>>234+ @",
-" ##&224+++++ @",
-"@ @@"
-};
diff --git a/Externals/wxWidgets/art/find.xpm b/Externals/wxWidgets/art/find.xpm
deleted file mode 100644
index 51544e98b8..0000000000
--- a/Externals/wxWidgets/art/find.xpm
+++ /dev/null
@@ -1,62 +0,0 @@
-/* XPM */
-static const char * find_xpm[] = {
-/* columns rows colors chars-per-pixel */
-"16 15 41 1",
-"y c #A06959",
-"9 c #A7DAF2",
-"$ c #B5CAD7",
-"> c #35B4E1",
-"t c #6B98B8",
-"w c #B6E0F4",
-"q c #AEC9D7",
-"1 c #5A89A6",
-"+ c #98B3C6",
-"4 c #EAF6FC",
-"3 c #DEF1FA",
-"= c #4CBCE3",
-"d c #DB916B",
-"X c #85A7BC",
-"s c #D8BCA4",
-"o c #749BB4",
-"e c #BCD9EF",
-"* c #62B4DD",
-"< c #91D2EF",
-"a c #E6DED2",
-"0 c #E9F4FB",
-" c None",
-"@ c #A0BACB",
-"O c #AABFCD",
-"i c #6591AE",
-": c #B9CBD5",
-"- c #71C5E7",
-"5 c #D3ECF8",
-"% c #81A3B9",
-"6 c #8AD0EE",
-"8 c #FDFDFE",
-"p c #8EA9BC",
-"r c #B6D5EE",
-", c #81CCEB",
-". c #ACC4D3",
-"; c #AFD1DE",
-"7 c #EFF8FC",
-"u c #C2CBDB",
-"# c #C0D1DC",
-"2 c #CAD6E1",
-"& c #8FB0C3",
-/* pixels */
-" .XooXO ",
-" +@###$+% ",
-" .*==-;@@ ",
-" o:*>,<--:X ",
-" 12>-345-#% ",
-" 12>678392% ",
-" %$*,3059q& ",
-" @Oq,wwer@@ ",
-" t@q22q&+ ",
-" yyui+%o%p ",
-" yasy ",
-" yasdy ",
-" yasdy ",
-" ysdy ",
-" yy "
-};
diff --git a/Externals/wxWidgets/art/findrepl.xpm b/Externals/wxWidgets/art/findrepl.xpm
deleted file mode 100644
index 33b083b5fd..0000000000
--- a/Externals/wxWidgets/art/findrepl.xpm
+++ /dev/null
@@ -1,63 +0,0 @@
-/* XPM */
-static const char * findrepl_xpm[] = {
-/* columns rows colors chars-per-pixel */
-"16 15 42 1",
-"y c #A06959",
-"9 c #A7DAF2",
-"$ c #B5CAD7",
-"> c #35B4E1",
-"t c #6B98B8",
-"w c #B6E0F4",
-"q c #AEC9D7",
-"1 c #5A89A6",
-"+ c #98B3C6",
-"4 c #EAF6FC",
-"d c #008000",
-"3 c #DEF1FA",
-"= c #4CBCE3",
-"f c #DB916B",
-"X c #85A7BC",
-"s c #D8BCA4",
-"o c #749BB4",
-"e c #BCD9EF",
-"* c #62B4DD",
-"< c #91D2EF",
-"a c #E6DED2",
-"0 c #E9F4FB",
-" c None",
-"@ c #A0BACB",
-"O c #AABFCD",
-"i c #6591AE",
-": c #B9CBD5",
-"- c #71C5E7",
-"5 c #D3ECF8",
-"% c #81A3B9",
-"6 c #8AD0EE",
-"8 c #FDFDFE",
-"p c #8EA9BC",
-"r c #B6D5EE",
-", c #81CCEB",
-". c #ACC4D3",
-"; c #AFD1DE",
-"7 c #EFF8FC",
-"u c #C2CBDB",
-"# c #C0D1DC",
-"2 c #CAD6E1",
-"& c #8FB0C3",
-/* pixels */
-" .XooXO ",
-" +@###$+% ",
-" .*==-;@@ ",
-" o:*>,<--:X ",
-" 12>-345-#% ",
-" 12>678392% ",
-" %$*,3059q& ",
-" @Oq,wwer@@ ",
-" t@q22q&+ ",
-" yyui+%o%p ",
-" yasy d d ",
-" yasfy dd dd ",
-"yasfy ddddddddd",
-"ysfy dd dd ",
-" yy d d "
-};
diff --git a/Externals/wxWidgets/art/floppy.xpm b/Externals/wxWidgets/art/floppy.xpm
deleted file mode 100644
index 4d6b7d8fe3..0000000000
--- a/Externals/wxWidgets/art/floppy.xpm
+++ /dev/null
@@ -1,39 +0,0 @@
-/* XPM */
-static const char * floppy_xpm[] = {
-/* columns rows colors chars-per-pixel */
-"16 15 18 1",
-"& c #E3E4E6",
-"+ c #FFFFFF",
-". c #446A8C",
-"o c #697787",
-"> c #5F666D",
-"* c #B2B3B3",
-" c None",
-", c #4B4C4D",
-"= c #DCDBDA",
-"$ c #1B4467",
-": c #E4E9ED",
-"@ c #979BA0",
-"X c #203646",
-"O c #215579",
-"- c #545B63",
-"; c #636465",
-"# c #CAD6E1",
-"% c #7F8286",
-/* pixels */
-" .XoooooooXO ",
-" .o+++++++.O ",
-" .o+OOOOO+.O ",
-" .o+++++++.O ",
-" .o@@@@@@@.O ",
-" ..........O ",
-" ..#+++++#.O ",
-" ..+$O+++#.O ",
-" ..+$O+++#.O ",
-" %&.........*% ",
-"%=+++++++++++&% ",
-"--------------; ",
-"-:::::::::::::- ",
-"-:X:XXXXXXXXX:> ",
-"-*************, "
-};
diff --git a/Externals/wxWidgets/art/folder.xpm b/Externals/wxWidgets/art/folder.xpm
deleted file mode 100644
index 60a4207884..0000000000
--- a/Externals/wxWidgets/art/folder.xpm
+++ /dev/null
@@ -1,43 +0,0 @@
-/* XPM */
-static const char * folder_xpm[] = {
-/* columns rows colors chars-per-pixel */
-"16 15 22 1",
-"> c #9BACC2",
-". c #547897",
-"1 c #7F99B4",
-"X c #D1D9E5",
-"< c #EAEDF3",
-"+ c #CAD2DC",
-"3 c #718BA7",
-"O c #BECAD9",
-"$ c #E1E6EE",
-"* c #F5F6F7",
-", c #8DA0B9",
-" c None",
-"# c #D6DFE7",
-"@ c #D2D9E0",
-"- c #FAFCFE",
-"; c #ADBACE",
-"& c #EEF1F3",
-"= c #F8F9FA",
-"o c #B3BFD1",
-"2 c #7A90AC",
-": c #A2B3C5",
-"% c #E5EAF1",
-/* pixels */
-" ",
-" ..... ",
-" .XXXX. ",
-" ............. ",
-" .oO+@#$%&*=-. ",
-" .oO+@#$%&*=-. ",
-" .;oO+X#$%&*=. ",
-" .:;oO+X#$%&*. ",
-" .>:;oO+X#$%&. ",
-" .,>:;oO+X#$<. ",
-" .1,>:;oO+X#$. ",
-" .21,>:;oO+X#. ",
-" .321,>:;oO+X. ",
-" ............. ",
-" "
-};
diff --git a/Externals/wxWidgets/art/folder_open.xpm b/Externals/wxWidgets/art/folder_open.xpm
deleted file mode 100644
index 60b1e65add..0000000000
--- a/Externals/wxWidgets/art/folder_open.xpm
+++ /dev/null
@@ -1,52 +0,0 @@
-/* XPM */
-static const char * folder_open_xpm[] = {
-/* columns rows colors chars-per-pixel */
-"16 15 31 1",
-"6 c #9BACC2",
-"w c #547B99",
-"5 c #94A5BD",
-". c #376485",
-"; c #F1F4F7",
-"o c #7F99B4",
-"2 c #D1D9E5",
-"- c #EAEDF3",
-"O c #718BA7",
-"0 c #65839D",
-"* c #DCE2EA",
-": c #F5F6F7",
-"7 c #597B9A",
-"X c #8DA0B9",
-" c None",
-"+ c #467291",
-"q c #305F81",
-"& c #D6DFE7",
-"3 c #6A89A2",
-"1 c #A8B6CA",
-"= c #E4E9ED",
-"> c #F8F9FA",
-", c #FDFDFE",
-"9 c #215579",
-"8 c #7F97B0",
-"@ c #B3BFD1",
-"< c #7A90AC",
-"$ c #C2CBDB",
-"4 c #A2B3C5",
-"% c #CAD6E1",
-"# c #BBC4D6",
-/* pixels */
-" ",
-"..... ",
-".XXXo. ",
-".XXXXO........ ",
-".XXXXXXXXXXXX. ",
-".XXXXXXXXXXXX. ",
-".X++++++++++++++",
-".X+@#$%&*=-;:>,+",
-".<.1@#$%2*=-;:23",
-"..X41@#$%2*=-;3 ",
-"..X561@#$%2*=-3 ",
-".78X561@#$%2*%3 ",
-"90<8X561@#$%23 ",
-"q++++++++++++w ",
-" "
-};
diff --git a/Externals/wxWidgets/art/forward.xpm b/Externals/wxWidgets/art/forward.xpm
deleted file mode 100644
index 56df17bccf..0000000000
--- a/Externals/wxWidgets/art/forward.xpm
+++ /dev/null
@@ -1,21 +0,0 @@
-/* XPM */
-static const char * forward_xpm[] = {
-"16 15 3 1",
-" c None",
-". c Black",
-"X c Gray100",
-" ",
-" ",
-" . ",
-" .. ",
-" .X. ",
-" ........XX. ",
-" .XXXXXXXXXX. ",
-" .XXXXXXXXXXX. ",
-" .XXXXXXXXXXX. ",
-" .XXXXXXXXXX. ",
-" ........XX. ",
-" .X. ",
-" .. ",
-" . ",
-" "};
diff --git a/Externals/wxWidgets/art/gtk/error.xpm b/Externals/wxWidgets/art/gtk/error.xpm
deleted file mode 100644
index 956e3549e9..0000000000
--- a/Externals/wxWidgets/art/gtk/error.xpm
+++ /dev/null
@@ -1,58 +0,0 @@
-/* XPM */
-static const char * error_xpm[] = {
-/* columns rows colors chars-per-pixel */
-"48 48 4 1",
-" c None",
-"X c #242424",
-"o c #DCDF00",
-". c #C00000",
-/* pixels */
-" ",
-" ",
-" ",
-" ",
-" ",
-" ..... ",
-" ............. ",
-" ................. ",
-" ................... ",
-" ....................... ",
-" ......................... ",
-" ........................... ",
-" ...........................X ",
-" .............................X ",
-" ............................... ",
-" ...............................X ",
-" .................................X ",
-" .................................X ",
-" .................................XX ",
-" ...ooooooooooooooooooooooooooo...XX ",
-" ....ooooooooooooooooooooooooooo....X ",
-" ....ooooooooooooooooooooooooooo....X ",
-" ....ooooooooooooooooooooooooooo....XX ",
-" ....ooooooooooooooooooooooooooo....XX ",
-" ....ooooooooooooooooooooooooooo....XX ",
-" ...ooooooooooooooooooooooooooo...XXX ",
-" ...ooooooooooooooooooooooooooo...XXX ",
-" .................................XX ",
-" .................................XX ",
-" ...............................XXX ",
-" ...............................XXX ",
-" .............................XXX ",
-" ...........................XXXX ",
-" ...........................XXX ",
-" .........................XXX ",
-" .......................XXXX ",
-" X...................XXXXX ",
-" X.................XXXXX ",
-" X.............XXXXX ",
-" XXXX.....XXXXXXXX ",
-" XXXXXXXXXXXXX ",
-" XXXXX ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" "
-};
diff --git a/Externals/wxWidgets/art/gtk/info.xpm b/Externals/wxWidgets/art/gtk/info.xpm
deleted file mode 100644
index 930b639cc3..0000000000
--- a/Externals/wxWidgets/art/gtk/info.xpm
+++ /dev/null
@@ -1,63 +0,0 @@
-/* XPM */
-static const char * info_xpm[] = {
-/* columns rows colors chars-per-pixel */
-"48 48 9 1",
-"$ c Black",
-"O c #FFFFFF",
-"@ c #808080",
-"+ c #000080",
-"o c #E8EB01",
-" c None",
-"X c #FFFF40",
-"# c #C0C0C0",
-". c #ABAD01",
-/* pixels */
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ..... ",
-" ..XXXXX.. ",
-" ..XXXXXXXXo.. ",
-" .XXXOXXXXXXXoo. ",
-" .XOOXXX+XXXXXo. ",
-" .XOOOXX+++XXXXoo. ",
-" .XOOXXX+++XXXXXo. ",
-" .XOOOXXX+++XXXXXXo. ",
-" .XOOXXXX+++XXXXXXo. ",
-" .XXXXXXX+++XXXXXXX. ",
-" .XXXXXXX+++XXXXXXo. ",
-" .XXXXXXX+++XXXXXoo. ",
-" .XXXXXX+++XXXXXo. ",
-" .XXXXXXX+XXXXXXo. ",
-" .XXXXXXXXXXXXo. ",
-" .XXXXX+++XXXoo. ",
-" .XXXX+++XXoo. ",
-" .XXXXXXXXo. ",
-" ..XXXXXXo.. ",
-" .XXXXXo.. ",
-" @#######@ ",
-" @@@@@@@@@ ",
-" @#######@ ",
-" @@@@@@@@@ ",
-" @#######@ ",
-" @@@@@@@ ",
-" ### ",
-" $$$ ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" "
-};
diff --git a/Externals/wxWidgets/art/gtk/question.xpm b/Externals/wxWidgets/art/gtk/question.xpm
deleted file mode 100644
index 3ea9434c2f..0000000000
--- a/Externals/wxWidgets/art/gtk/question.xpm
+++ /dev/null
@@ -1,75 +0,0 @@
-/* XPM */
-static const char * question_xpm[] = {
-/* columns rows colors chars-per-pixel */
-"48 48 21 1",
-". c Black",
-"> c #696969",
-"O c #1F1F00",
-"+ c #181818",
-"o c #F6F900",
-"; c #3F3F00",
-"$ c #111111",
-" c None",
-"& c #202020",
-"X c #AAAA00",
-"@ c #949400",
-": c #303030",
-"1 c #383838",
-"% c #2A2A00",
-", c #404040",
-"= c #B4B400",
-"- c #484848",
-"# c #151500",
-"< c #9F9F00",
-"2 c #6A6A00",
-"* c #353500",
-/* pixels */
-" ",
-" ",
-" ",
-" ",
-" ......... ",
-" ...XXXXXXX.. ",
-" ..XXXXoooooXXXO+ ",
-" ..XXooooooooooooX@.. ",
-" ..XoooooooooooooooXX#. ",
-" $%XoooooooooooooooooXX#. ",
-" &.XoooooooXXXXXXooooooXX.. ",
-" .XooooooXX.$...$XXoooooX*. ",
-" $.XoooooX%.$ .*oooooo=.. ",
-" .XooooooX.. -.XoooooX.. ",
-" .XoooooX..+ .XoooooX;. ",
-" ...XXXX..: .XoooooX;. ",
-" ........ >.XoooooX;. ",
-" +.XoooooX.. ",
-" ,.Xoooooo<.. ",
-" 1#XooooooXO.. ",
-" ooooooX2.. ",
-" $%XooooooXX.. ",
-" $%XooooooXX.. ",
-" $%XooooooXX.. ",
-" &.XooooooXX.. ",
-" .XooooooXX.. ",
-" &.XoooooXX.. ",
-" ..XooooXX.. ",
-" ..XooooX... ",
-" ..XXooXX..& ",
-" ...XXXXX.. ",
-" ........ ",
-" ",
-" ",
-" ....... ",
-" ..XXXXX.. ",
-" ..XXoooXX.. ",
-" ..XoooooX.. ",
-" ..XoooooX.. ",
-" ..XXoooXX.. ",
-" ..XXXXX.. ",
-" ....... ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" "
-};
diff --git a/Externals/wxWidgets/art/gtk/warning.xpm b/Externals/wxWidgets/art/gtk/warning.xpm
deleted file mode 100644
index 18135c81cb..0000000000
--- a/Externals/wxWidgets/art/gtk/warning.xpm
+++ /dev/null
@@ -1,63 +0,0 @@
-/* XPM */
-static const char * warning_xpm[] = {
-/* columns rows colors chars-per-pixel */
-"48 48 9 1",
-"@ c Black",
-"o c #A6A800",
-"+ c #8A8C00",
-"$ c #B8BA00",
-" c None",
-"O c #6E7000",
-"X c #DCDF00",
-". c #C00000",
-"# c #373800",
-/* pixels */
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" . ",
-" ... ",
-" ... ",
-" ..... ",
-" ...X.. ",
-" ..XXX.. ",
-" ...XXX... ",
-" ..XXXXX.. ",
-" ..XXXXXX... ",
-" ...XXoO+XX.. ",
-" ..XXXO@#XXX.. ",
-" ..XXXXO@#XXX... ",
-" ...XXXXO@#XXXX.. ",
-" ..XXXXXO@#XXXX... ",
-" ...XXXXXo@OXXXXX.. ",
-" ...XXXXXXo@OXXXXXX.. ",
-" ..XXXXXXX$@OXXXXXX... ",
-" ...XXXXXXXX@XXXXXXXX.. ",
-" ...XXXXXXXXXXXXXXXXXX... ",
-" ..XXXXXXXXXXOXXXXXXXXX.. ",
-" ...XXXXXXXXXO@#XXXXXXXXX.. ",
-" ..XXXXXXXXXXX#XXXXXXXXXX... ",
-" ...XXXXXXXXXXXXXXXXXXXXXXX.. ",
-" ...XXXXXXXXXXXXXXXXXXXXXXXX... ",
-" .............................. ",
-" .............................. ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" "
-};
diff --git a/Externals/wxWidgets/art/harddisk.xpm b/Externals/wxWidgets/art/harddisk.xpm
deleted file mode 100644
index bdff0763a1..0000000000
--- a/Externals/wxWidgets/art/harddisk.xpm
+++ /dev/null
@@ -1,60 +0,0 @@
-/* XPM */
-static const char * harddisk_xpm[] = {
-/* columns rows colors chars-per-pixel */
-"16 15 39 1",
-"7 c #E3E4E6",
-"4 c #FFFFFF",
-"5 c #839CB5",
-". c #547897",
-"1 c #4D7492",
-"@ c #376485",
-"o c #7A92A3",
-"u c #D1D9E5",
-"y c #446A8C",
-"i c #51B03D",
-"> c #CAD2DC",
-"O c #718BA7",
-"2 c #65839D",
-"6 c #DCE2EA",
-"0 c #C3C5C8",
-"9 c #F5F6F7",
-": c #EBEBEC",
-"< c #597B9A",
-"t c #C6CCD3",
-" c None",
-"* c #DFE0E2",
-"e c #467291",
-"a c #526E8B",
-", c #7393AB",
-"p c #130A0B",
-"# c #AABFCD",
-"r c #B4C4D3",
-"; c #CFCFD0",
-"X c #6F90A6",
-"+ c #6A89A2",
-"- c #D2D3D4",
-"= c #DCDBDA",
-"w c #E4E9ED",
-"q c #C6C8CA",
-"% c #215579",
-"$ c #E7E7E7",
-"3 c #7F97B0",
-"8 c #C0D1DC",
-"& c #5D7C93",
-/* pixels */
-" ",
-" .XoooXO+@ ",
-" #$$%%%%$$$X ",
-" &$*==-;$$$& ",
-" &:>+,<1234o5 ",
-" ###+67;;78242 ",
-" &4,49*0q*9we4. ",
-" &4+49*,,*9wo4. ",
-"&4%r,67;;782t%4.",
-"&44468rrrr84444,",
-"y11111111111111e",
-"1uu1:::::::::::1",
-"1uu1::::::::ip:1",
-"auu&:::::::::::1",
-"1111111111111111"
-};
diff --git a/Externals/wxWidgets/art/helpicon.xpm b/Externals/wxWidgets/art/helpicon.xpm
deleted file mode 100644
index 6abce2c0dd..0000000000
--- a/Externals/wxWidgets/art/helpicon.xpm
+++ /dev/null
@@ -1,44 +0,0 @@
-/* XPM */
-static const char * helpicon_xpm[] = {
-/* columns rows colors chars-per-pixel */
-"32 32 6 1",
-" c Gray0",
-". c Blue",
-"X c #808080808080",
-"o c #c0c0c0c0c0c0",
-"O c Gray100",
-"+ c None",
-/* pixels */
-"+++++++++++XXXXXXXX+++++++++++++",
-"++++++++XXXoOOOOOOoXXX++++++++++",
-"++++++XXoOOOOOOOOOOOOoXX++++++++",
-"+++++XoOOOOOOOOOOOOOOOOoX+++++++",
-"++++XOOOOOOOOOOOOOOOOOOOO ++++++",
-"+++XOOOOOOOo......oOOOOOOO +++++",
-"++XOOOOOOOo.oOO....oOOOOOOO ++++",
-"+XoOOOOOOO..OOOO....OOOOOOOo +++",
-"+XOOOOOOOO....OO....OOOOOOOO X++",
-"XoOOOOOOOO....Oo....OOOOOOOOo X+",
-"XOOOOOOOOOo..oO....OOOOOOOOOO X+",
-"XOOOOOOOOOOOOOo...OOOOOOOOOOO XX",
-"XOOOOOOOOOOOOO...OOOOOOOOOOOO XX",
-"XOOOOOOOOOOOOO..oOOOOOOOOOOOO XX",
-"XOOOOOOOOOOOOO..OOOOOOOOOOOOO XX",
-"XoOOOOOOOOOOOOOOOOOOOOOOOOOOo XX",
-"+XOOOOOOOOOOOo..oOOOOOOOOOOO XXX",
-"+XoOOOOOOOOOO....OOOOOOOOOOo XXX",
-"++XOOOOOOOOOO....OOOOOOOOOO XXX+",
-"+++ OOOOOOOOOo..oOOOOOOOOO XXXX+",
-"++++ OOOOOOOOOOOOOOOOOOOO XXXX++",
-"+++++ oOOOOOOOOOOOOOOOOo XXXX+++",
-"++++++ oOOOOOOOOOOOOo XXXX++++",
-"+++++++X oOOOOOOo XXXXX+++++",
-"++++++++XXX oOOO XXXXXXX++++++",
-"++++++++++XXXX OOO XXXXX++++++++",
-"+++++++++++++X OOO XX+++++++++++",
-"+++++++++++++++ OO XX+++++++++++",
-"++++++++++++++++ O XX+++++++++++",
-"+++++++++++++++++ XX+++++++++++",
-"++++++++++++++++++XXX+++++++++++",
-"+++++++++++++++++++XX+++++++++++"
-};
diff --git a/Externals/wxWidgets/art/home.xpm b/Externals/wxWidgets/art/home.xpm
deleted file mode 100644
index 078e7d6c65..0000000000
--- a/Externals/wxWidgets/art/home.xpm
+++ /dev/null
@@ -1,24 +0,0 @@
-/* XPM */
-static const char * home_xpm[] = {
-/* columns rows colors chars-per-pixel */
-"16 15 3 1",
-". c Black",
-"X c #FFFFFF",
-" c None",
-/* pixels */
-" .... ",
-" .XXXX. ",
-" .XXXXXX. ",
-" .XXXXXXXX. ",
-" .XXXXXXXXXX. ",
-" .............. ",
-" .XXXXXXXXXXXX. ",
-" .XXXXXXXXXXXX. ",
-" .XXXXXXXXXXXX. ",
-" .X.....X....X. ",
-" .X. .X. .X. ",
-" .X. .X. .X. ",
-" .X.....X. .X. ",
-" .XXXXXXX. .X. ",
-" ......... ... "
-};
diff --git a/Externals/wxWidgets/art/htmbook.xpm b/Externals/wxWidgets/art/htmbook.xpm
deleted file mode 100644
index eb343cbe3b..0000000000
--- a/Externals/wxWidgets/art/htmbook.xpm
+++ /dev/null
@@ -1,25 +0,0 @@
-/* XPM */
-static const char * htmbook_xpm[] = {
-"16 16 6 1",
-" c None",
-". c Black",
-"X c #000080",
-"o c #c0c0c0",
-"O c #808080",
-"+ c Gray100",
-" ",
-" .. ",
-" ..XX. ",
-" ..XXXXX. ",
-" ..XXXXXXXX. ",
-".oXXXXXXXXXX. ",
-".XoXXXXXXXXXX. ",
-".XXoXXXXXXXXXX. ",
-".XXXoXXXXXXXXX..",
-".XXXXoXXXXXX..O ",
-" .XXXXoXXX..O+O ",
-" .XXXXo..O++o..",
-" .XXX.O+++o.. ",
-" .XX.o+o.. ",
-" .X.o.. ",
-" ... "};
diff --git a/Externals/wxWidgets/art/htmfoldr.xpm b/Externals/wxWidgets/art/htmfoldr.xpm
deleted file mode 100644
index fc14e60cc7..0000000000
--- a/Externals/wxWidgets/art/htmfoldr.xpm
+++ /dev/null
@@ -1,25 +0,0 @@
-/* XPM */
-static const char * htmfoldr_xpm[] = {
-"16 16 6 1",
-" c None",
-". c Black",
-"X c #000080",
-"o c #c0c0c0",
-"O c #808080",
-"+ c Gray100",
-" ",
-" .. ",
-" ..XX. ",
-" ..XXXXX. ",
-" ..XXXXXXXX. ",
-".oXXXXXXXXXX. ",
-".XoXXXXXXXXXX. ",
-".XXoXXXXXXXXXX. ",
-".XXXoXXXXXXXXX..",
-".XXXXoXXXXXX..O ",
-" .XXXXoXXX..O+O ",
-" .XXXXo..O++o..",
-" .XXX.O+++o.. ",
-" .XX.o+o.. ",
-" .X.o.. ",
-" ... "};
diff --git a/Externals/wxWidgets/art/htmoptns.xpm b/Externals/wxWidgets/art/htmoptns.xpm
deleted file mode 100644
index 8649f79398..0000000000
--- a/Externals/wxWidgets/art/htmoptns.xpm
+++ /dev/null
@@ -1,20 +0,0 @@
-/* XPM */
-static const char * htmoptns_xpm[] = {
-"16 15 2 1",
-" c None",
-". c #000000",
-" ",
-" .. ",
-" ... ",
-" .... ",
-" . ... ",
-" .. ... ",
-" . .. ",
-" .. ... ",
-" . .. ",
-" ......... ",
-" .. ... ",
-" . ... ",
-" .. ... ",
-" .... ....... ",
-" "};
diff --git a/Externals/wxWidgets/art/htmpage.xpm b/Externals/wxWidgets/art/htmpage.xpm
deleted file mode 100644
index bf934b981b..0000000000
--- a/Externals/wxWidgets/art/htmpage.xpm
+++ /dev/null
@@ -1,23 +0,0 @@
-/* XPM */
-static const char * htmpage_xpm[] = {
-"16 16 4 1",
-" c None",
-". c #808080",
-"X c Gray100",
-"o c Black",
-" ",
-" .......... ",
-" .XXXXXXXX.. ",
-" .XXXXXXXXooo ",
-" .X......XXXo ",
-" .XXXXXXXXXXo ",
-" .X........Xo ",
-" .XXXXXXXXXXo ",
-" .X........Xo ",
-" .XXXXXXXXXXo ",
-" .X........Xo ",
-" .XXXXXXXXXXo ",
-" .X........Xo ",
-" .XXXXXXXXXXo ",
-" .XXXXXXXXXXo ",
-" oooooooooooo "};
diff --git a/Externals/wxWidgets/art/htmsidep.xpm b/Externals/wxWidgets/art/htmsidep.xpm
deleted file mode 100644
index 514d7de0bb..0000000000
--- a/Externals/wxWidgets/art/htmsidep.xpm
+++ /dev/null
@@ -1,27 +0,0 @@
-/* XPM */
-static const char * htmsidep_xpm[] = {
-/* columns rows colors chars-per-pixel */
-"16 15 6 1",
-". c Black",
-"X c #FFFFFF",
-"+ c #808080",
-" c None",
-"O c #0000C0",
-"o c #C0C0C0",
-/* pixels */
-" ",
-" .............. ",
-" .XXXX.ooooooo. ",
-" .XOXX.oo...oo. ",
-" .XXOX.ooooooo. ",
-" .OOOO.o...+.o. ",
-" .XXOX.ooooooo. ",
-" .XOXX.ooooooo. ",
-" .XXXX.o..+ooo. ",
-" .XXOX.ooooooo. ",
-" .XOXX.o...+.o. ",
-" .OOOO.ooooooo. ",
-" .XOXX.o.+...o. ",
-" .XXOX.ooooooo. ",
-" .............. "
-};
diff --git a/Externals/wxWidgets/art/listview.xpm b/Externals/wxWidgets/art/listview.xpm
deleted file mode 100644
index e17781e2f0..0000000000
--- a/Externals/wxWidgets/art/listview.xpm
+++ /dev/null
@@ -1,25 +0,0 @@
-/* XPM */
-static const char * listview_xpm[] = {
-/* columns rows colors chars-per-pixel */
-"16 15 4 1",
-" c Black",
-". c #FFFFFF",
-"X c #000084",
-"o c #848484",
-/* pixels */
-" ",
-" .............. ",
-" .XXX.......... ",
-" .XXX. o o . ",
-" .XXX.......... ",
-" .............. ",
-" .XXX.......... ",
-" .XXX. o . ",
-" .XXX.......... ",
-" .............. ",
-" .XXX.......... ",
-" .XXX. o o . ",
-" .XXX.......... ",
-" .............. ",
-" "
-};
diff --git a/Externals/wxWidgets/art/missimg.xpm b/Externals/wxWidgets/art/missimg.xpm
deleted file mode 100644
index ca96c3a2ef..0000000000
--- a/Externals/wxWidgets/art/missimg.xpm
+++ /dev/null
@@ -1,43 +0,0 @@
-/* XPM */
-static const char * missimg_xpm[] = {
-/* columns rows colors chars-per-pixel */
-"32 32 5 1",
-"X c Black",
-"o c #FFFFFF",
-" c None",
-". c #C0C0C0",
-"O c #E0E0E0",
-/* pixels */
-" .............................X ",
-" .ooooooooooooooooooooooooooooX ",
-" .ooooooooooooooooooooooooooooX ",
-" .ooOOOOOOOOOOOOOOOOOOOOOOOOooX ",
-" .ooOOOOOOOOOOOOOOOOOOOOOOOOooX ",
-" .ooOOOOOOOOOOOOOOOOOOOOOOOOooX ",
-" .ooOOOOOOOOOOOOOOOOOOOOOOOOooX ",
-" .ooOOOOOOOOOOOOOOOOOOOOOOOOooX ",
-" .ooOOOOOOOOOOOOOOOOOOOOOOOOooX ",
-" .ooOOOOOOOXOOOOOOOOOOOOOOOOooX ",
-" XXXOOOOOXX XOOOOOOOOOOOOOOOooX ",
-" XXXXX XOOOOOOOOOOOOOOooX ",
-" XOOOXXXOOOOOOOooX ",
-" XXX XXOOOOOooX ",
-" XOOOOooX ",
-" . XOOOooX ",
-" .. XXOooX ",
-" .o.. XooX ",
-" .ooO... XXX ",
-" .ooOOOO.......... ",
-" .ooOOOOOOOOOOOOOO.. ",
-" .ooOOOOOOOOOOOOOOOO.. ",
-" .ooOOOOOOOOOOOOOOOOOO......... ",
-" .ooOOOOOOOOOOOOOOOOOOOOOOOOooX ",
-" .ooOOOOOOOOOOOOOOOOOOOOOOOOooX ",
-" .ooOOOOOOOOOOOOOOOOOOOOOOOOooX ",
-" .ooOOOOOOOOOOOOOOOOOOOOOOOOooX ",
-" .ooOOOOOOOOOOOOOOOOOOOOOOOOooX ",
-" .ooOOOOOOOOOOOOOOOOOOOOOOOOooX ",
-" .ooooooooooooooooooooooooooooX ",
-" .ooooooooooooooooooooooooooooX ",
-" XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX "
-};
diff --git a/Externals/wxWidgets/art/motif/error.xpm b/Externals/wxWidgets/art/motif/error.xpm
deleted file mode 100644
index 956e3549e9..0000000000
--- a/Externals/wxWidgets/art/motif/error.xpm
+++ /dev/null
@@ -1,58 +0,0 @@
-/* XPM */
-static const char * error_xpm[] = {
-/* columns rows colors chars-per-pixel */
-"48 48 4 1",
-" c None",
-"X c #242424",
-"o c #DCDF00",
-". c #C00000",
-/* pixels */
-" ",
-" ",
-" ",
-" ",
-" ",
-" ..... ",
-" ............. ",
-" ................. ",
-" ................... ",
-" ....................... ",
-" ......................... ",
-" ........................... ",
-" ...........................X ",
-" .............................X ",
-" ............................... ",
-" ...............................X ",
-" .................................X ",
-" .................................X ",
-" .................................XX ",
-" ...ooooooooooooooooooooooooooo...XX ",
-" ....ooooooooooooooooooooooooooo....X ",
-" ....ooooooooooooooooooooooooooo....X ",
-" ....ooooooooooooooooooooooooooo....XX ",
-" ....ooooooooooooooooooooooooooo....XX ",
-" ....ooooooooooooooooooooooooooo....XX ",
-" ...ooooooooooooooooooooooooooo...XXX ",
-" ...ooooooooooooooooooooooooooo...XXX ",
-" .................................XX ",
-" .................................XX ",
-" ...............................XXX ",
-" ...............................XXX ",
-" .............................XXX ",
-" ...........................XXXX ",
-" ...........................XXX ",
-" .........................XXX ",
-" .......................XXXX ",
-" X...................XXXXX ",
-" X.................XXXXX ",
-" X.............XXXXX ",
-" XXXX.....XXXXXXXX ",
-" XXXXXXXXXXXXX ",
-" XXXXX ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" "
-};
diff --git a/Externals/wxWidgets/art/motif/info.xpm b/Externals/wxWidgets/art/motif/info.xpm
deleted file mode 100644
index 930b639cc3..0000000000
--- a/Externals/wxWidgets/art/motif/info.xpm
+++ /dev/null
@@ -1,63 +0,0 @@
-/* XPM */
-static const char * info_xpm[] = {
-/* columns rows colors chars-per-pixel */
-"48 48 9 1",
-"$ c Black",
-"O c #FFFFFF",
-"@ c #808080",
-"+ c #000080",
-"o c #E8EB01",
-" c None",
-"X c #FFFF40",
-"# c #C0C0C0",
-". c #ABAD01",
-/* pixels */
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ..... ",
-" ..XXXXX.. ",
-" ..XXXXXXXXo.. ",
-" .XXXOXXXXXXXoo. ",
-" .XOOXXX+XXXXXo. ",
-" .XOOOXX+++XXXXoo. ",
-" .XOOXXX+++XXXXXo. ",
-" .XOOOXXX+++XXXXXXo. ",
-" .XOOXXXX+++XXXXXXo. ",
-" .XXXXXXX+++XXXXXXX. ",
-" .XXXXXXX+++XXXXXXo. ",
-" .XXXXXXX+++XXXXXoo. ",
-" .XXXXXX+++XXXXXo. ",
-" .XXXXXXX+XXXXXXo. ",
-" .XXXXXXXXXXXXo. ",
-" .XXXXX+++XXXoo. ",
-" .XXXX+++XXoo. ",
-" .XXXXXXXXo. ",
-" ..XXXXXXo.. ",
-" .XXXXXo.. ",
-" @#######@ ",
-" @@@@@@@@@ ",
-" @#######@ ",
-" @@@@@@@@@ ",
-" @#######@ ",
-" @@@@@@@ ",
-" ### ",
-" $$$ ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" "
-};
diff --git a/Externals/wxWidgets/art/motif/question.xpm b/Externals/wxWidgets/art/motif/question.xpm
deleted file mode 100644
index 3ea9434c2f..0000000000
--- a/Externals/wxWidgets/art/motif/question.xpm
+++ /dev/null
@@ -1,75 +0,0 @@
-/* XPM */
-static const char * question_xpm[] = {
-/* columns rows colors chars-per-pixel */
-"48 48 21 1",
-". c Black",
-"> c #696969",
-"O c #1F1F00",
-"+ c #181818",
-"o c #F6F900",
-"; c #3F3F00",
-"$ c #111111",
-" c None",
-"& c #202020",
-"X c #AAAA00",
-"@ c #949400",
-": c #303030",
-"1 c #383838",
-"% c #2A2A00",
-", c #404040",
-"= c #B4B400",
-"- c #484848",
-"# c #151500",
-"< c #9F9F00",
-"2 c #6A6A00",
-"* c #353500",
-/* pixels */
-" ",
-" ",
-" ",
-" ",
-" ......... ",
-" ...XXXXXXX.. ",
-" ..XXXXoooooXXXO+ ",
-" ..XXooooooooooooX@.. ",
-" ..XoooooooooooooooXX#. ",
-" $%XoooooooooooooooooXX#. ",
-" &.XoooooooXXXXXXooooooXX.. ",
-" .XooooooXX.$...$XXoooooX*. ",
-" $.XoooooX%.$ .*oooooo=.. ",
-" .XooooooX.. -.XoooooX.. ",
-" .XoooooX..+ .XoooooX;. ",
-" ...XXXX..: .XoooooX;. ",
-" ........ >.XoooooX;. ",
-" +.XoooooX.. ",
-" ,.Xoooooo<.. ",
-" 1#XooooooXO.. ",
-" ooooooX2.. ",
-" $%XooooooXX.. ",
-" $%XooooooXX.. ",
-" $%XooooooXX.. ",
-" &.XooooooXX.. ",
-" .XooooooXX.. ",
-" &.XoooooXX.. ",
-" ..XooooXX.. ",
-" ..XooooX... ",
-" ..XXooXX..& ",
-" ...XXXXX.. ",
-" ........ ",
-" ",
-" ",
-" ....... ",
-" ..XXXXX.. ",
-" ..XXoooXX.. ",
-" ..XoooooX.. ",
-" ..XoooooX.. ",
-" ..XXoooXX.. ",
-" ..XXXXX.. ",
-" ....... ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" "
-};
diff --git a/Externals/wxWidgets/art/motif/warning.xpm b/Externals/wxWidgets/art/motif/warning.xpm
deleted file mode 100644
index 18135c81cb..0000000000
--- a/Externals/wxWidgets/art/motif/warning.xpm
+++ /dev/null
@@ -1,63 +0,0 @@
-/* XPM */
-static const char * warning_xpm[] = {
-/* columns rows colors chars-per-pixel */
-"48 48 9 1",
-"@ c Black",
-"o c #A6A800",
-"+ c #8A8C00",
-"$ c #B8BA00",
-" c None",
-"O c #6E7000",
-"X c #DCDF00",
-". c #C00000",
-"# c #373800",
-/* pixels */
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" . ",
-" ... ",
-" ... ",
-" ..... ",
-" ...X.. ",
-" ..XXX.. ",
-" ...XXX... ",
-" ..XXXXX.. ",
-" ..XXXXXX... ",
-" ...XXoO+XX.. ",
-" ..XXXO@#XXX.. ",
-" ..XXXXO@#XXX... ",
-" ...XXXXO@#XXXX.. ",
-" ..XXXXXO@#XXXX... ",
-" ...XXXXXo@OXXXXX.. ",
-" ...XXXXXXo@OXXXXXX.. ",
-" ..XXXXXXX$@OXXXXXX... ",
-" ...XXXXXXXX@XXXXXXXX.. ",
-" ...XXXXXXXXXXXXXXXXXX... ",
-" ..XXXXXXXXXXOXXXXXXXXX.. ",
-" ...XXXXXXXXXO@#XXXXXXXXX.. ",
-" ..XXXXXXXXXXX#XXXXXXXXXX... ",
-" ...XXXXXXXXXXXXXXXXXXXXXXX.. ",
-" ...XXXXXXXXXXXXXXXXXXXXXXXX... ",
-" .............................. ",
-" .............................. ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" "
-};
diff --git a/Externals/wxWidgets/art/new.xpm b/Externals/wxWidgets/art/new.xpm
deleted file mode 100644
index 7b6143098e..0000000000
--- a/Externals/wxWidgets/art/new.xpm
+++ /dev/null
@@ -1,50 +0,0 @@
-/* XPM */
-static const char * new_xpm[] = {
-/* columns rows colors chars-per-pixel */
-"16 15 29 1",
-"* c #97C4E7",
-"- c #72A8D2",
-": c #FFFFFF",
-"9 c #839CB5",
-"o c #6B98B8",
-"X c #5A89A6",
-"# c #3A749C",
-", c #D1E5F5",
-"0 c #85A7BC",
-"$ c #C3DDF1",
-"8 c #749BB4",
-"; c #5F9BC8",
-" c None",
-"+ c #538DB3",
-"= c #85BBE2",
-"3 c #EFF6FC",
-"O c #6591AE",
-"5 c #F7FBFD",
-"7 c #FAFCFE",
-"< c #DAEAF7",
-"4 c #E9F3FA",
-"6 c #FDFDFE",
-"1 c #E2EFF8",
-". c #8EA9BC",
-"% c #B6D5EE",
-"& c #A5CCEA",
-"> c #ACE95B",
-"2 c #F4F9FD",
-"@ c #4581AA",
-/* pixels */
-" .XoOO+@#. ",
-" .$$%&*=O-; ",
-" @@@@$%&*O:*o ",
-" @>>@$$%&O::*o ",
-"@@@>>@@@$%OOoO+ ",
-"@>>>>>>@,$%&*=+ ",
-"@>>>>>>@<,$%&*+ ",
-"@@@>>@@@1<,$%&O ",
-" @>>@2341<,$%O ",
-" @@@@52341<,$o ",
-" .:6752341<,8 ",
-" .::6752341<8 ",
-" .:::67523419 ",
-" .::::6752340 ",
-" ............ "
-};
diff --git a/Externals/wxWidgets/art/new_dir.xpm b/Externals/wxWidgets/art/new_dir.xpm
deleted file mode 100644
index 9eebabfa05..0000000000
--- a/Externals/wxWidgets/art/new_dir.xpm
+++ /dev/null
@@ -1,43 +0,0 @@
-/* XPM */
-static const char * new_dir_xpm[] = {
-/* columns rows colors chars-per-pixel */
-"16 15 22 1",
-"X c Black",
-"> c #9BACC2",
-"o c #547897",
-"1 c #7F99B4",
-"O c #D1D9E5",
-"< c #EAEDF3",
-"# c #CAD2DC",
-"3 c #718BA7",
-"@ c #BECAD9",
-"& c #E1E6EE",
-"; c #F5F6F7",
-". c #FFFF00",
-", c #8DA0B9",
-" c None",
-"% c #D6DFE7",
-"$ c #D2D9E0",
-"- c #ADBACE",
-"= c #EEF1F3",
-"+ c #B3BFD1",
-"2 c #7A90AC",
-": c #A2B3C5",
-"* c #E5EAF1",
-/* pixels */
-" .X .XX.",
-" ooooo .X.X. ",
-" oOOOOo XX...XX",
-" oooooooo.......",
-" o+@#$%&*XX...XX",
-" o+@#$%&*=.X.X. ",
-" o-+@#O%&.X;.X .",
-" o:-+@#O%&*=;o ",
-" o>:-+@#O%&*=o ",
-" o,>:-+@#O%&:-+@#O%&o ",
-" o21,>:-+@#O%o ",
-" o321,>:-+@#Oo ",
-" ooooooooooooo ",
-" "
-};
diff --git a/Externals/wxWidgets/art/paste.xpm b/Externals/wxWidgets/art/paste.xpm
deleted file mode 100644
index 028fa485b7..0000000000
--- a/Externals/wxWidgets/art/paste.xpm
+++ /dev/null
@@ -1,46 +0,0 @@
-/* XPM */
-static const char * paste_xpm[] = {
-/* columns rows colors chars-per-pixel */
-"16 15 25 1",
-"< c #FEECE4",
-"> c #FEE3D7",
-"O c #FFFFFF",
-"o c #7B767D",
-"% c #F79586",
-"& c #CAE1F3",
-"@ c #F08B62",
-"# c #FCCBB8",
-"- c #FDD8C9",
-"4 c #FFF8F4",
-"5 c #FFF5F0",
-" c None",
-"$ c #F8AA8F",
-", c #EFF6FC",
-"1 c #F7FBFD",
-"2 c #FAFCFE",
-"; c #DAEAF7",
-": c #E9F3FA",
-"6 c #FFFAF8",
-". c #3C78A6",
-"3 c #FFF1ED",
-"X c #9B8687",
-"+ c #FBBCA4",
-"* c #B6D5EE",
-"= c #F4F9FD",
-/* pixels */
-" ...... ",
-" .XoOOOOoo. ",
-".+XOOOOOOX@. ",
-".+XXXXXXXX@. ",
-".#++$$%@..... ",
-".##++$$%.&*.=. ",
-".-##++$$.;&.==. ",
-".--##++$.:;.... ",
-".>--##++.,:;&*. ",
-".<>--##+.1,:;&. ",
-".<<>--##.21,:;. ",
-".3<<>--#.O21=:. ",
-".45<<>--....... ",
-".6453<>----. ",
-"............ "
-};
diff --git a/Externals/wxWidgets/art/print.xpm b/Externals/wxWidgets/art/print.xpm
deleted file mode 100644
index e91d170a20..0000000000
--- a/Externals/wxWidgets/art/print.xpm
+++ /dev/null
@@ -1,60 +0,0 @@
-/* XPM */
-static const char * print_xpm[] = {
-/* columns rows colors chars-per-pixel */
-"16 15 39 1",
-"< c #E3E4E6",
-"+ c #C3C3C4",
-"i c #FFFFFF",
-": c #74879B",
-"# c #5A89A6",
-"a c #F1F4F7",
-"r c #5A809C",
-"@ c #BDCCD9",
-"e c #7A92A4",
-"% c #3F6F93",
-"t c #9FA2A6",
-"3 c #939495",
-"w c #5F666D",
-"9 c #65839E",
-"5 c #4A7291",
-"$ c #4B7F9E",
-" c None",
-"O c #DFE0E2",
-"o c #F3F3F3",
-"; c #84A5BB",
-"& c #467291",
-". c #7897AD",
-"* c #407598",
-"4 c #CFCFD0",
-"7 c #6F90A6",
-"y c #6A89A2",
-"0 c #AAADB2",
-"1 c #D2D3D4",
-"u c #4F7592",
-", c #BCBDBE",
-"p c #57778E",
-"q c #979BA0",
-"2 c #ABABAC",
-"- c #E7E7E7",
-"= c #D6DEE6",
-"> c #9FA0A0",
-"8 c #829EB5",
-"X c #8FB0C3",
-"6 c #5D7C93",
-/* pixels */
-" .XXXXXXXX ",
-" .oooooooX ",
-" .OOOOOOOX ",
-" .+++++++X ",
-"@##$%&&&&&%*##@ ",
-"$=-;:>,<123$-=$ ",
-".44.5678.96$44. ",
-"7,,,,,,,,,,,,,7 ",
-"900qwwwwwwwe009 ",
-"rtt9ryyyyyyuttr ",
-"6qq6iiiiiii%qq6 ",
-"633paiiiiii%336 ",
-"XXX*iiiiiii%XXX ",
-" 6iiiiiii% ",
-" $XXXXXXX# "
-};
diff --git a/Externals/wxWidgets/art/quit.xpm b/Externals/wxWidgets/art/quit.xpm
deleted file mode 100644
index 659093233f..0000000000
--- a/Externals/wxWidgets/art/quit.xpm
+++ /dev/null
@@ -1,90 +0,0 @@
-/* XPM */
-static const char * quit_xpm[] = {
-/* columns rows colors chars-per-pixel */
-"16 15 69 1",
-"@ c Black",
-"i c #9AEA53",
-"D c #7E9BB1",
-"H c #839FB4",
-", c #B7C7D3",
-"8 c #BCCBD6",
-"7 c #C1CFDA",
-"v c #92ABBD",
-"- c #D0DBE2",
-"O c #547897",
-"+ c #376485",
-"L c #7090A8",
-"t c #AEC0CE",
-"g c #B3C4D1",
-"S c #84A0B4",
-"G c #89A4B8",
-"> c #BDCCD7",
-"F c #5A809C",
-"2 c #C2D0DA",
-"k c #93ACBE",
-"= c #D6E0E6",
-"* c #446A8C",
-"z c #A5B9C8",
-"# c #DEE5EB",
-"0 c #AFC1CE",
-"r c #B4C5D2",
-"p c #B9C9D5",
-"A c #8AA5B8",
-"M c #92AABD",
-"j c #A6BAC9",
-"K c #7796AC",
-"l c #ABBECC",
-"o c #E4EAEF",
-"9 c #B5C6D2",
-" c None",
-"; c #C9D6DF",
-"X c #305F81",
-"m c #98AFC0",
-"V c #9DB3C3",
-"% c #D1DBE3",
-"u c #A2B7C6",
-"y c #A7BBCA",
-"h c #ACBFCD",
-"4 c #B6C7D3",
-"w c #C0CFD9",
-"d c #982106",
-"B c #85A0B5",
-"6 c #C8D4DE",
-"c c #99B0C1",
-"x c #9EB4C4",
-"$ c #D7E0E7",
-"q c #A8BCCA",
-"s c #ADC0CD",
-"3 c #BCCCD7",
-"N c #8BA5B9",
-": c #C4D1DB",
-"1 c #C9D5DE",
-"f c #9AB1C2",
-"n c #A4B9C8",
-"a c #B3C5D1",
-". c #215579",
-"J c #7D9AB0",
-"& c #829EB5",
-"e c #BBCAD6",
-"b c #8CA6B9",
-"Z c #91AABC",
-"C c #96AEC0",
-"< c #CFDAE2",
-"5 c #AFC2CF",
-/* pixels */
-" ..XXXXXXXXXX ",
-" XoO+X@@@@@@X ",
-" X#$%&X*@@@@X ",
-" X=-;:>,X@@@X ",
-" X<12345X@@@X ",
-" X67890qX@XXX ",
-" XwertyuX@XiX ",
-" XpasddfX++iiX ",
-" XghjddkXiiiiiX ",
-" XlzxcvbXiiiiiiX",
-" XnxmMNBXiiiiiX ",
-" XVCZASDXXXiiX ",
-" XXFGHJKX XiX ",
-" FXXFLX XX ",
-" XX* "
-};
diff --git a/Externals/wxWidgets/art/redo.xpm b/Externals/wxWidgets/art/redo.xpm
deleted file mode 100644
index 844403e791..0000000000
--- a/Externals/wxWidgets/art/redo.xpm
+++ /dev/null
@@ -1,58 +0,0 @@
-/* XPM */
-static const char * redo_xpm[] = {
-/* columns rows colors chars-per-pixel */
-"16 15 37 1",
-"4 c #9BACC2",
-"; c #4C7398",
-"3 c #547B99",
-"* c #547897",
-"# c #5A89A6",
-"8 c #3A749C",
-"5 c #5A809C",
-", c #7F99B4",
-"& c #3F6F93",
-"9 c #85A7BC",
-"+ c #749BB4",
-"> c #718BA7",
-"e c #A5B3C8",
-"w c #BECAD9",
-": c #65839D",
-"u c #E1E6EE",
-"o c #236289",
-"r c #ADBED2",
-"= c #597B9A",
-"2 c #8DA0B9",
-" c None",
-"% c #467291",
-"1 c #7393AB",
-"i c #4C809F",
-"- c #A0BACB",
-"O c #6591AE",
-"X c #407598",
-"6 c #6F90A6",
-"t c #D2D9E0",
-"7 c #ADBACE",
-"@ c #326A8F",
-"0 c #467A9C",
-". c #ACC4D3",
-"< c #7F97B0",
-"y c #B3BFD1",
-"q c #A2B3C5",
-"$ c #8FB0C3",
-/* pixels */
-" .XoooO ",
-" +o@@@@@o# +",
-" $@%%&@&%%&@ +o",
-" X*=@+-+@*=;@#&@",
-" @:=+ @=:=*:@",
-" &>:$ @:>>>@",
-" &,,,,&",
-" +123 @<2222&",
-" X44X #@56<44X",
-" O1748 .9#&o",
-" 0qwe8 ",
-" 8rty8 ",
-" 8wu+ ",
-" i## ",
-" "
-};
diff --git a/Externals/wxWidgets/art/removable.xpm b/Externals/wxWidgets/art/removable.xpm
deleted file mode 100644
index fcc52ff810..0000000000
--- a/Externals/wxWidgets/art/removable.xpm
+++ /dev/null
@@ -1,44 +0,0 @@
-/* XPM */
-static const char * removable_xpm[] = {
-/* columns rows colors chars-per-pixel */
-"16 15 23 1",
-"@ c #C3C3C4",
-"4 c #FFFFFF",
-"o c #D5D6D8",
-"> c #7A92A3",
-". c #8497A5",
-"% c #ACAEB2",
-"2 c #4A7898",
-": c #DCE2EA",
-", c #F5F6F7",
-"= c #EBEBEC",
-"$ c #B7B7B8",
-" c None",
-"X c #DFE0E2",
-"* c #A6A8AD",
-"1 c #4C809F",
-"3 c #407598",
-"O c #CFCFD0",
-"; c #9EA2A8",
-"# c #BCBDBE",
-"+ c #C6C8CA",
-"- c #979BA0",
-"& c #E7E7E7",
-"< c #8FB0C3",
-/* pixels */
-" ......... ",
-" .XoO+@#$%. ",
-" .XoO+@#$%. ",
-" .&XoO+@#$%*. ",
-" .&XoO+@#$%*. ",
-" .=&XoO+@#$%*-. ",
-" .=&XoO+@#$%*;. ",
-".:=&XoO+@#$%*;>.",
-".,=&XoO+@#$%*;-.",
-"<..............<",
-"<,=&XoO+@#$%%%%.",
-" c #718BA7",
-"0 c #A5B3C8",
-"q c #BECAD9",
-": c #65839D",
-"u c #E1E6EE",
-"X c #236289",
-"y c #ADBED2",
-"= c #597B9A",
-"1 c #8DA0B9",
-" c None",
-"% c #467291",
-"3 c #7393AB",
-"i c #4C809F",
-"; c #A0BACB",
-". c #6591AE",
-"o c #407598",
-"5 c #6F90A6",
-"t c #D2D9E0",
-"9 c #ADBACE",
-"# c #326A8F",
-"e c #467A9C",
-"O c #ACC4D3",
-"< c #7F97B0",
-"r c #B3BFD1",
-"w c #A2B3C5",
-"& c #8FB0C3",
-/* pixels */
-" .XXXoO ",
-"+ @X#####X+ ",
-"X+ #$%%$#$%%#& ",
-"#$@#*=-#+;+#=-o ",
-"#:-=:=# +=:# ",
-"#>>>:# &:>$ ",
-"$,,,>o o<,$ ",
-"$1111<# 213+ ",
-"o44<56#@ o44o ",
-"X$@7O 8493. ",
-" 80qwe ",
-" 8rty8 ",
-" +uq8 ",
-" @@i ",
-" "
-};
diff --git a/Externals/wxWidgets/art/up.xpm b/Externals/wxWidgets/art/up.xpm
deleted file mode 100644
index 922eb6483a..0000000000
--- a/Externals/wxWidgets/art/up.xpm
+++ /dev/null
@@ -1,21 +0,0 @@
-/* XPM */
-static const char * up_xpm[] = {
-"16 15 3 1",
-" c None",
-". c Black",
-"X c Gray100",
-" ",
-" .. ",
-" .XX. ",
-" .XXXX. ",
-" .XXXXXX. ",
-" .XXXXXXXX. ",
-" ....XXXX.... ",
-" .XXXX. ",
-" .XXXX. ",
-" .XXXX. ",
-" .XXXX. ",
-" .XXXX. ",
-" .XXXX. ",
-" ...... ",
-" "};
diff --git a/Externals/wxWidgets/art/wxwin.ico b/Externals/wxWidgets/art/wxwin.ico
deleted file mode 100644
index 8d2dc18c6b..0000000000
Binary files a/Externals/wxWidgets/art/wxwin.ico and /dev/null differ
diff --git a/Externals/wxWidgets/art/wxwin16x16.png b/Externals/wxWidgets/art/wxwin16x16.png
deleted file mode 100644
index e07faeb73f..0000000000
Binary files a/Externals/wxWidgets/art/wxwin16x16.png and /dev/null differ
diff --git a/Externals/wxWidgets/art/wxwin16x16.xpm b/Externals/wxWidgets/art/wxwin16x16.xpm
deleted file mode 100644
index 81b85169d2..0000000000
--- a/Externals/wxWidgets/art/wxwin16x16.xpm
+++ /dev/null
@@ -1,25 +0,0 @@
-/* XPM */
-static const char * wxwin16x16_xpm[] = {
-"16 16 6 1",
-" c None",
-". c #000000",
-"X c #000084",
-"o c #FFFFFF",
-"O c #FFFF00",
-"+ c #FF0000",
-" ",
-" ",
-" ....... ",
-" .XXXXX. ",
-" .oXXXX. ",
-" .oXXX.......",
-".....oXXX.OOOOO.",
-".+++.XXXX.oOOOO.",
-".o++......oOOOO.",
-".o++++. .oOOOO.",
-".o++++. .OOOOO.",
-".+++++. .......",
-"....... ",
-" ",
-" ",
-" "};
diff --git a/Externals/wxWidgets/art/wxwin32x32.png b/Externals/wxWidgets/art/wxwin32x32.png
deleted file mode 100644
index 20eda44161..0000000000
Binary files a/Externals/wxWidgets/art/wxwin32x32.png and /dev/null differ
diff --git a/Externals/wxWidgets/art/wxwin32x32.xpm b/Externals/wxWidgets/art/wxwin32x32.xpm
deleted file mode 100644
index 92829ffd12..0000000000
--- a/Externals/wxWidgets/art/wxwin32x32.xpm
+++ /dev/null
@@ -1,41 +0,0 @@
-/* XPM */
-static const char * wxwin32x32_xpm[] = {
-"32 32 6 1",
-" c None",
-". c #000000",
-"X c #000084",
-"o c #FFFFFF",
-"O c #FFFF00",
-"+ c #FF0000",
-" ",
-" ",
-" ",
-" ",
-" ",
-" .............. ",
-" .XXXXXXXXXXXX. ",
-" .XXXXXXXXXXXX. ",
-" .XooXXXXXXXXX. ",
-" .XooXXXXXXXXX. ",
-" .XooXXXXXXXXX. ",
-" .XooXXXXXX..............",
-" .XooXXXXXX.OOOOOOOOOOOO.",
-".........XooXXXXXX.OOOOOOOOOOOO.",
-".+++++++.XooXXXXXX.OooOOOOOOOOO.",
-".+++++++.XooXXXXXX.OooOOOOOOOOO.",
-".+oo++++.XXXXXXXXX.OooOOOOOOOOO.",
-".+oo++++.XXXXXXXXX.OooOOOOOOOOO.",
-".+oo++++...........OooOOOOOOOOO.",
-".+oo+++++++++. .OooOOOOOOOOO.",
-".+oo+++++++++. .OooOOOOOOOOO.",
-".+oo+++++++++. .OooOOOOOOOOO.",
-".+oo+++++++++. .OOOOOOOOOOOO.",
-".+oo+++++++++. .OOOOOOOOOOOO.",
-".++++++++++++. ..............",
-".++++++++++++. ",
-".............. ",
-" ",
-" ",
-" ",
-" ",
-" "};
diff --git a/Externals/wxWidgets/build/msw/wx_adv.vcxproj b/Externals/wxWidgets/build/msw/wx_adv.vcxproj
deleted file mode 100644
index 81d688800e..0000000000
--- a/Externals/wxWidgets/build/msw/wx_adv.vcxproj
+++ /dev/null
@@ -1,269 +0,0 @@
-
-
-
-
- Debug
- Win32
-
-
- Debug
- x64
-
-
- Release
- Win32
-
-
- Release
- x64
-
-
- DebugFast
- Win32
-
-
- DebugFast
- x64
-
-
-
- wxAdv28
- {0E231FB1-F3C9-4724-ACCB-DE8BCB3C089E}
- wxAdv28
-
-
-
- StaticLibrary
- Unicode
- false
-
-
- StaticLibrary
- Unicode
-
-
- StaticLibrary
- Unicode
-
-
- StaticLibrary
- Unicode
-
-
- StaticLibrary
- Unicode
-
-
- StaticLibrary
- Unicode
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <_ProjectFileVersion>10.0.30319.1
-
-
-
- __WXDEBUG__;%(PreprocessorDefinitions)
-
-
-
-
-
-
-
-
-
- X64
-
-
- __WXDEBUG__;%(PreprocessorDefinitions)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- X64
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- X64
-
-
-
-
-
-
-
-
-
-
-
- Create
- Create
- Create
- Create
- Create
- Create
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- true
- true
- true
- true
- true
- true
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Externals/wxWidgets/build/msw/wx_adv.vcxproj.filters b/Externals/wxWidgets/build/msw/wx_adv.vcxproj.filters
deleted file mode 100644
index 23ecbb11b7..0000000000
--- a/Externals/wxWidgets/build/msw/wx_adv.vcxproj.filters
+++ /dev/null
@@ -1,242 +0,0 @@
-
-
-
-
- {720bff6e-1a30-4028-acac-6308dd6315dc}
-
-
- {194354ed-3b01-41c6-b02b-f0477a8a4031}
-
-
- {281a11e8-9c50-4c22-98c8-b2f4feea91c6}
-
-
- {51780fde-bb79-455c-bfea-e2b4b5d35642}
-
-
- {76dcad14-225a-41c5-9a2e-4e3f52a97523}
-
-
- {bfc6a3cd-3366-42e3-9eb3-3fbec552123d}
-
-
- {50653da8-8267-4fdc-b329-e2f63fcc2125}
-
-
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- Generic Sources
-
-
- Generic Sources
-
-
- Generic Sources
-
-
- Generic Sources
-
-
- Generic Sources
-
-
- Generic Sources
-
-
- Generic Sources
-
-
- Generic Sources
-
-
- Generic Sources
-
-
- Generic Sources
-
-
- Generic Sources
-
-
- Generic Sources
-
-
- Generic Sources
-
-
- Generic Sources
-
-
- Generic Sources
-
-
- Generic Sources
-
-
- Generic Sources
-
-
- Generic Sources
-
-
-
-
- MSW Sources
-
-
-
-
- Setup Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- Generic Headers
-
-
- Generic Headers
-
-
- Generic Headers
-
-
- Generic Headers
-
-
- Generic Headers
-
-
- Generic Headers
-
-
- Generic Headers
-
-
- Generic Headers
-
-
- Generic Headers
-
-
- Generic Headers
-
-
- Generic Headers
-
-
- Generic Headers
-
-
- Generic Headers
-
-
- Generic Headers
-
-
- Generic Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
-
\ No newline at end of file
diff --git a/Externals/wxWidgets/build/msw/wx_aui.vcxproj b/Externals/wxWidgets/build/msw/wx_aui.vcxproj
deleted file mode 100644
index d0e87bc93b..0000000000
--- a/Externals/wxWidgets/build/msw/wx_aui.vcxproj
+++ /dev/null
@@ -1,215 +0,0 @@
-
-
-
-
- Debug
- Win32
-
-
- Debug
- x64
-
-
- Release
- Win32
-
-
- Release
- x64
-
-
- DebugFast
- Win32
-
-
- DebugFast
- x64
-
-
-
- wxAui
- {05C75041-D67D-4903-A362-8395A7B35C75}
- wxAui
-
-
-
- StaticLibrary
- Unicode
- false
-
-
- StaticLibrary
- Unicode
-
-
- StaticLibrary
- Unicode
-
-
- StaticLibrary
- Unicode
-
-
- StaticLibrary
- Unicode
-
-
- StaticLibrary
- Unicode
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <_ProjectFileVersion>10.0.30319.1
-
-
-
- __WXDEBUG__;%(PreprocessorDefinitions)
-
-
-
-
-
-
-
-
-
- X64
-
-
- __WXDEBUG__;%(PreprocessorDefinitions)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- X64
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- X64
-
-
-
-
-
-
-
-
-
- Create
- Create
- Create
- Create
- Create
- Create
-
-
-
-
-
-
-
-
-
-
- true
- true
- true
- true
- true
- true
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Externals/wxWidgets/build/msw/wx_aui.vcxproj.filters b/Externals/wxWidgets/build/msw/wx_aui.vcxproj.filters
deleted file mode 100644
index afcfbd31cc..0000000000
--- a/Externals/wxWidgets/build/msw/wx_aui.vcxproj.filters
+++ /dev/null
@@ -1,77 +0,0 @@
-
-
-
-
- {3803bf22-4c48-45a9-ade6-adf5dc1c2fc2}
-
-
- {9e11d851-b6c6-4b08-ab05-c98afc9dd758}
-
-
- {4c3b9cfa-edfa-4590-9f7b-741d378f472e}
-
-
- {7a8ec81a-3e8c-4e84-b743-27c09fc5dca6}
-
-
- {611d20bc-96ad-4930-b629-d01a8b03f835}
-
-
- {7812b5b7-ec5d-4f0f-a7ad-8d8079318f7c}
-
-
-
-
- Common Sources
-
-
- Source Files
-
-
- Source Files
-
-
- Source Files
-
-
- Source Files
-
-
- Source Files
-
-
- Source Files
-
-
-
-
- MSW Sources
-
-
-
-
- Setup Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
-
\ No newline at end of file
diff --git a/Externals/wxWidgets/build/msw/wx_base.vcxproj b/Externals/wxWidgets/build/msw/wx_base.vcxproj
deleted file mode 100644
index 03319b8737..0000000000
--- a/Externals/wxWidgets/build/msw/wx_base.vcxproj
+++ /dev/null
@@ -1,424 +0,0 @@
-
-
-
-
- Debug
- Win32
-
-
- Debug
- x64
-
-
- Release
- Win32
-
-
- Release
- x64
-
-
- DebugFast
- Win32
-
-
- DebugFast
- x64
-
-
-
- wxBase28
- {1C8436C9-DBAF-42BE-83BC-CF3EC9175ABE}
- wxBase28
-
-
-
- StaticLibrary
- Unicode
-
-
- StaticLibrary
- Unicode
- false
-
-
- StaticLibrary
- Unicode
-
-
- StaticLibrary
- Unicode
-
-
- StaticLibrary
- Unicode
-
-
- StaticLibrary
- Unicode
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <_ProjectFileVersion>10.0.30319.1
-
-
-
- wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions)
-
-
-
-
-
-
-
-
-
- X64
-
-
- wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions)
-
-
-
-
-
-
-
- wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions)
-
-
-
-
-
-
-
-
-
- X64
-
-
- wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions)
-
-
-
-
-
-
-
- __WXDEBUG__;wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions)
-
-
-
-
-
-
-
-
-
- X64
-
-
- __WXDEBUG__;wxUSE_GUI=0;wxUSE_BASE=1;%(PreprocessorDefinitions)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Create
- Create
- Create
- Create
- Create
- Create
-
-
-
-
-
-
-
- NotUsing
- NotUsing
- NotUsing
- NotUsing
- NotUsing
- NotUsing
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- true
- true
- true
- true
- true
- true
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Externals/wxWidgets/build/msw/wx_base.vcxproj.filters b/Externals/wxWidgets/build/msw/wx_base.vcxproj.filters
deleted file mode 100644
index 66e73444fa..0000000000
--- a/Externals/wxWidgets/build/msw/wx_base.vcxproj.filters
+++ /dev/null
@@ -1,689 +0,0 @@
-
-
-
-
- {f1bb2d6e-10de-4c4c-84cd-ff3aa3c43417}
-
-
- {c14bf3b2-6380-4dd7-8713-5f1bec0133f5}
-
-
- {ea19c29f-6825-47dc-b54d-ee464810b353}
-
-
- {8be8fed3-d92b-4b34-874d-cad7a619542d}
-
-
- {3644959b-4450-479f-b874-0393d7b38430}
-
-
- {edf9b98f-16db-4c3d-aabe-06e435efeba9}
-
-
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
-
-
- MSW Sources
-
-
-
-
- Setup Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- wxHTML Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
-
\ No newline at end of file
diff --git a/Externals/wxWidgets/build/msw/wx_core.vcxproj.filters b/Externals/wxWidgets/build/msw/wx_core.vcxproj.filters
deleted file mode 100644
index 5866eb1452..0000000000
--- a/Externals/wxWidgets/build/msw/wx_core.vcxproj.filters
+++ /dev/null
@@ -1,2342 +0,0 @@
-
-
-
-
- {9621e6aa-fce5-4830-a5ec-d72160634a24}
-
-
- {f173edaa-4670-4525-9807-30a4c852ca68}
-
-
- {4abe35a0-5a9c-47f7-82c5-9710d2ee95e2}
-
-
- {3e332deb-d660-439c-b5e0-bed59d9efa03}
-
-
- {b83ca385-4f4d-40c3-b91b-26d5bd400c62}
-
-
- {9960e6f5-95d9-4f40-b514-27058af58aa6}
-
-
- {8cbad93f-390f-43c6-918d-02d97b13bb2e}
-
-
- {800e8c68-30da-419e-afcf-24fe72dd6c61}
-
-
- {972e09c6-bd4b-4567-92d6-f96c91838be3}
-
-
- {9a3e7b27-2283-4fdc-b340-3f030c85288f}
-
-
- {551fbcac-b9b0-4afc-89cc-f64c357cf8fa}
-
-
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- Common Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- Generic Sources
-
-
- Generic Sources
-
-
- Generic Sources
-
-
- Generic Sources
-
-
- Generic Sources
-
-
- Generic Sources
-
-
- Generic Sources
-
-
- Generic Sources
-
-
- Generic Sources
-
-
- Generic Sources
-
-
- Generic Sources
-
-
- Generic Sources
-
-
- Generic Sources
-
-
- Generic Sources
-
-
- Generic Sources
-
-
- Generic Sources
-
-
- Generic Sources
-
-
- Generic Sources
-
-
- Generic Sources
-
-
- Generic Sources
-
-
- Generic Sources
-
-
- Generic Sources
-
-
- Generic Sources
-
-
- Generic Sources
-
-
- Generic Sources
-
-
- Generic Sources
-
-
- Generic Sources
-
-
- Generic Sources
-
-
- Generic Sources
-
-
- Generic Sources
-
-
- Generic Sources
-
-
- Generic Sources
-
-
- Generic Sources
-
-
- Generic Sources
-
-
- Generic Sources
-
-
- Generic Sources
-
-
- Generic Sources
-
-
- Generic Sources
-
-
- Generic Sources
-
-
- Generic Sources
-
-
- Generic Sources
-
-
- Generic Sources
-
-
- Generic Sources
-
-
- Generic Sources
-
-
- Generic Sources
-
-
- wxUniv Sources
-
-
- wxUniv Sources
-
-
- wxUniv Sources
-
-
- wxUniv Sources
-
-
- wxUniv Sources
-
-
- wxUniv Sources
-
-
- wxUniv Sources
-
-
- wxUniv Sources
-
-
- wxUniv Sources
-
-
- wxUniv Sources
-
-
- wxUniv Sources
-
-
- wxUniv Sources
-
-
- wxUniv Sources
-
-
- wxUniv Sources
-
-
- wxUniv Sources
-
-
- wxUniv Sources
-
-
- wxUniv Sources
-
-
- wxUniv Sources
-
-
- wxUniv Sources
-
-
- wxUniv Sources
-
-
- wxUniv Sources
-
-
- wxUniv Sources
-
-
- wxUniv Sources
-
-
- wxUniv Sources
-
-
- wxUniv Sources
-
-
- wxUniv Sources
-
-
- wxUniv Sources
-
-
- wxUniv Sources
-
-
- wxUniv Sources
-
-
- wxUniv Sources
-
-
- wxUniv Sources
-
-
- wxUniv Sources
-
-
- wxUniv Sources
-
-
- wxUniv Sources
-
-
- wxUniv Sources
-
-
- wxUniv Sources
-
-
- wxUniv Sources
-
-
- wxUniv Sources
-
-
- wxUniv Sources
-
-
- wxUniv Sources
-
-
- png
-
-
- png
-
-
- png
-
-
- png
-
-
- png
-
-
- png
-
-
- png
-
-
- png
-
-
- png
-
-
- png
-
-
- png
-
-
- png
-
-
- png
-
-
- png
-
-
- png
-
-
- png
-
-
- png
-
-
- png
-
-
-
-
- MSW Sources
-
-
-
-
- Setup Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- MSW Headers
-
-
- Generic Headers
-
-
- Generic Headers
-
-
- Generic Headers
-
-
- Generic Headers
-
-
- Generic Headers
-
-
- Generic Headers
-
-
- Generic Headers
-
-
- Generic Headers
-
-
- Generic Headers
-
-
- Generic Headers
-
-
- Generic Headers
-
-
- Generic Headers
-
-
- Generic Headers
-
-
- Generic Headers
-
-
- Generic Headers
-
-
- Generic Headers
-
-
- Generic Headers
-
-
- Generic Headers
-
-
- Generic Headers
-
-
- Generic Headers
-
-
- Generic Headers
-
-
- Generic Headers
-
-
- Generic Headers
-
-
- Generic Headers
-
-
- Generic Headers
-
-
- Generic Headers
-
-
- Generic Headers
-
-
- Generic Headers
-
-
- Generic Headers
-
-
- Generic Headers
-
-
- Generic Headers
-
-
- Generic Headers
-
-
- Generic Headers
-
-
- Generic Headers
-
-
- Generic Headers
-
-
- Generic Headers
-
-
- Generic Headers
-
-
- Generic Headers
-
-
- Generic Headers
-
-
- Generic Headers
-
-
- Generic Headers
-
-
- Generic Headers
-
-
- Generic Headers
-
-
- Generic Headers
-
-
- Generic Headers
-
-
- Generic Headers
-
-
- Generic Headers
-
-
- Generic Headers
-
-
- Generic Headers
-
-
- Generic Headers
-
-
- Generic Headers
-
-
- wxUniv Headers
-
-
- wxUniv Headers
-
-
- wxUniv Headers
-
-
- wxUniv Headers
-
-
- wxUniv Headers
-
-
- wxUniv Headers
-
-
- wxUniv Headers
-
-
- wxUniv Headers
-
-
- wxUniv Headers
-
-
- wxUniv Headers
-
-
- wxUniv Headers
-
-
- wxUniv Headers
-
-
- wxUniv Headers
-
-
- wxUniv Headers
-
-
- wxUniv Headers
-
-
- wxUniv Headers
-
-
- wxUniv Headers
-
-
- wxUniv Headers
-
-
- wxUniv Headers
-
-
- wxUniv Headers
-
-
- wxUniv Headers
-
-
- wxUniv Headers
-
-
- wxUniv Headers
-
-
- wxUniv Headers
-
-
- wxUniv Headers
-
-
- wxUniv Headers
-
-
- wxUniv Headers
-
-
- wxUniv Headers
-
-
- wxUniv Headers
-
-
- wxUniv Headers
-
-
- wxUniv Headers
-
-
- wxUniv Headers
-
-
- wxUniv Headers
-
-
- wxUniv Headers
-
-
- wxUniv Headers
-
-
- wxUniv Headers
-
-
- wxUniv Headers
-
-
- wxUniv Headers
-
-
- wxUniv Headers
-
-
- wxUniv Headers
-
-
- wxHTML Headers
-
-
- wxHTML Headers
-
-
- wxHTML Headers
-
-
- wxHTML Headers
-
-
- wxHTML Headers
-
-
- wxHTML Headers
-
-
- wxHTML Headers
-
-
- wxHTML Headers
-
-
- wxHTML Headers
-
-
- wxHTML Headers
-
-
- wxHTML Headers
-
-
- wxHTML Headers
-
-
- wxHTML Headers
-
-
- wxHTML Headers
-
-
- wxHTML Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- png
-
-
- png
-
-
- png
-
-
-
\ No newline at end of file
diff --git a/Externals/wxWidgets/include/msvc/wx/setup.h b/Externals/wxWidgets/include/msvc/wx/setup.h
deleted file mode 100644
index 22a4d2c39f..0000000000
--- a/Externals/wxWidgets/include/msvc/wx/setup.h
+++ /dev/null
@@ -1,250 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-// Name: msvc/wx/msw/setup.h
-// Purpose: wrapper around the real wx/setup.h for Visual C++
-// Author: Vadim Zeitlin
-// Modified by:
-// Created: 2004-12-12
-// RCS-ID: $Id: setup.h 43687 2006-11-27 15:03:59Z VZ $
-// Copyright: (c) 2004 Vadim Zeitlin
-// Licence: wxWindows licence
-/////////////////////////////////////////////////////////////////////////////
-
-
-// VC++ IDE predefines _DEBUG and _UNICODE for the new projects itself, but
-// the other symbols (WXUSINGDLL, __WXUNIVERSAL__, ...) should be defined
-// explicitly!
-
-#ifdef _MSC_VER
- #ifdef _UNICODE
- #ifdef WXUSINGDLL
- #ifdef _DEBUG
- #include "../../../lib/vc_dll/mswud/wx/setup.h"
- #else
- #include "../../../lib/vc_dll/mswu/wx/setup.h"
- #endif
- #else
- #ifdef _DEBUG
- #include "../../../lib/vc_lib/mswud/wx/setup.h"
- #else
- #include "../../../lib/vc_lib/mswu/wx/setup.h"
- #endif
- #endif
-
- #ifdef _DEBUG
- #pragma comment(lib,"wxbase28ud")
- #pragma comment(lib,"wxbase28ud_net")
- #pragma comment(lib,"wxbase28ud_xml")
- #if wxUSE_REGEX
- #pragma comment(lib,"wxregexud")
- #endif
-
- #if wxUSE_GUI
- #if wxUSE_XML
- #pragma comment(lib,"wxexpatd")
- #endif
- #if wxUSE_LIBJPEG
- #pragma comment(lib,"wxjpegd")
- #endif
- #if wxUSE_LIBPNG
- #pragma comment(lib,"wxpngd")
- #endif
- #if wxUSE_LIBTIFF
- #pragma comment(lib,"wxtiffd")
- #endif
- #if wxUSE_ZLIB
- #pragma comment(lib,"wxzlibd")
- #endif
- #pragma comment(lib,"wxmsw28ud_adv")
- #pragma comment(lib,"wxmsw28ud_core")
- #pragma comment(lib,"wxmsw28ud_html")
- #if wxUSE_GLCANVAS
- #pragma comment(lib,"wxmsw28ud_gl")
- #endif
- #if wxUSE_DEBUGREPORT
- #pragma comment(lib,"wxmsw28ud_qa")
- #endif
- #if wxUSE_XRC
- #pragma comment(lib,"wxmsw28ud_xrc")
- #endif
- #if wxUSE_AUI
- #pragma comment(lib,"wxmsw28ud_aui")
- #endif
- #if wxUSE_RICHTEXT
- #pragma comment(lib,"wxmsw28ud_richtext")
- #endif
- #if wxUSE_MEDIACTRL
- #pragma comment(lib,"wxmsw28ud_media")
- #endif
- #if wxUSE_ODBC
- #pragma comment(lib,"wxbase28ud_odbc")
- #endif
- #endif // wxUSE_GUI
- #else // release
- #pragma comment(lib,"wxbase28u")
- #pragma comment(lib,"wxbase28u_net")
- #pragma comment(lib,"wxbase28u_xml")
- #if wxUSE_REGEX
- #pragma comment(lib,"wxregexu")
- #endif
-
- #if wxUSE_GUI
- #if wxUSE_XML
- #pragma comment(lib,"wxexpat")
- #endif
- #if wxUSE_LIBJPEG
- #pragma comment(lib,"wxjpeg")
- #endif
- #if wxUSE_LIBPNG
- #pragma comment(lib,"wxpng")
- #endif
- #if wxUSE_LIBTIFF
- #pragma comment(lib,"wxtiff")
- #endif
- #if wxUSE_ZLIB
- #pragma comment(lib,"wxzlib")
- #endif
- #pragma comment(lib,"wxmsw28u_adv")
- #pragma comment(lib,"wxmsw28u_core")
- #pragma comment(lib,"wxmsw28u_html")
- #if wxUSE_GLCANVAS
- #pragma comment(lib,"wxmsw28u_gl")
- #endif
- #if wxUSE_DEBUGREPORT
- #pragma comment(lib,"wxmsw28u_qa")
- #endif
- #if wxUSE_XRC
- #pragma comment(lib,"wxmsw28u_xrc")
- #endif
- #if wxUSE_AUI
- #pragma comment(lib,"wxmsw28u_aui")
- #endif
- #if wxUSE_RICHTEXT
- #pragma comment(lib,"wxmsw28u_richtext")
- #endif
- #if wxUSE_MEDIACTRL
- #pragma comment(lib,"wxmsw28u_media")
- #endif
- #if wxUSE_ODBC
- #pragma comment(lib,"wxbase28u_odbc")
- #endif
- #endif // wxUSE_GUI
- #endif // debug/release
- #else // !_UNICODE
- #ifdef WXUSINGDLL
- #ifdef _DEBUG
- #include "../../../lib/vc_dll/mswd/wx/setup.h"
- #else
- #include "../../../lib/vc_dll/msw/wx/setup.h"
- #endif
- #else // static lib
- #ifdef _DEBUG
- #include "../../../lib/vc_lib/mswd/wx/setup.h"
- #else
- #include "../../../lib/vc_lib/msw/wx/setup.h"
- #endif
- #endif // shared/static
-
- #ifdef _DEBUG
- #pragma comment(lib,"wxbase28d")
- #pragma comment(lib,"wxbase28d_net")
- #pragma comment(lib,"wxbase28d_xml")
- #if wxUSE_REGEX
- #pragma comment(lib,"wxregexd")
- #endif
-
- #if wxUSE_GUI
- #if wxUSE_XML
- #pragma comment(lib,"wxexpatd")
- #endif
- #if wxUSE_LIBJPEG
- #pragma comment(lib,"wxjpegd")
- #endif
- #if wxUSE_LIBPNG
- #pragma comment(lib,"wxpngd")
- #endif
- #if wxUSE_LIBTIFF
- #pragma comment(lib,"wxtiffd")
- #endif
- #if wxUSE_ZLIB
- #pragma comment(lib,"wxzlibd")
- #endif
- #pragma comment(lib,"wxmsw28d_adv")
- #pragma comment(lib,"wxmsw28d_core")
- #pragma comment(lib,"wxmsw28d_html")
- #if wxUSE_GLCANVAS
- #pragma comment(lib,"wxmsw28d_gl")
- #endif
- #if wxUSE_DEBUGREPORT
- #pragma comment(lib,"wxmsw28d_qa")
- #endif
- #if wxUSE_XRC
- #pragma comment(lib,"wxmsw28d_xrc")
- #endif
- #if wxUSE_AUI
- #pragma comment(lib,"wxmsw28d_aui")
- #endif
- #if wxUSE_RICHTEXT
- #pragma comment(lib,"wxmsw28d_richtext")
- #endif
- #if wxUSE_MEDIACTRL
- #pragma comment(lib,"wxmsw28d_media")
- #endif
- #if wxUSE_ODBC
- #pragma comment(lib,"wxbase28d_odbc")
- #endif
- #endif // wxUSE_GUI
- #else // release
- #pragma comment(lib,"wxbase28")
- #pragma comment(lib,"wxbase28_net")
- #pragma comment(lib,"wxbase28_xml")
- #if wxUSE_REGEX
- #pragma comment(lib,"wxregex")
- #endif
-
- #if wxUSE_GUI
- #if wxUSE_XML
- #pragma comment(lib,"wxexpat")
- #endif
- #if wxUSE_LIBJPEG
- #pragma comment(lib,"wxjpeg")
- #endif
- #if wxUSE_LIBPNG
- #pragma comment(lib,"wxpng")
- #endif
- #if wxUSE_LIBTIFF
- #pragma comment(lib,"wxtiff")
- #endif
- #if wxUSE_ZLIB
- #pragma comment(lib,"wxzlib")
- #endif
- #pragma comment(lib,"wxmsw28_adv")
- #pragma comment(lib,"wxmsw28_core")
- #pragma comment(lib,"wxmsw28_html")
- #if wxUSE_GLCANVAS
- #pragma comment(lib,"wxmsw28_gl")
- #endif
- #if wxUSE_DEBUGREPORT
- #pragma comment(lib,"wxmsw28_qa")
- #endif
- #if wxUSE_XRC
- #pragma comment(lib,"wxmsw28_xrc")
- #endif
- #if wxUSE_AUI
- #pragma comment(lib,"wxmsw28_aui")
- #endif
- #if wxUSE_RICHTEXT
- #pragma comment(lib,"wxmsw28_richtext")
- #endif
- #if wxUSE_MEDIACTRL
- #pragma comment(lib,"wxmsw28_media")
- #endif
- #if wxUSE_ODBC
- #pragma comment(lib,"wxbase28_odbc")
- #endif
- #endif // wxUSE_GUI
- #endif // debug/release
- #endif // _UNICODE/!_UNICODE
-#else
- #error "This file should only be included when using Microsoft Visual C++"
-#endif
-
diff --git a/Externals/wxWidgets/include/wx/aboutdlg.h b/Externals/wxWidgets/include/wx/aboutdlg.h
deleted file mode 100644
index 19a6fb949c..0000000000
--- a/Externals/wxWidgets/include/wx/aboutdlg.h
+++ /dev/null
@@ -1,161 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Name: wx/aboutdlg.h
-// Purpose: declaration of wxAboutDialog class
-// Author: Vadim Zeitlin
-// Created: 2006-10-07
-// RCS-ID: $Id: aboutdlg.h 58748 2009-02-08 09:46:03Z VZ $
-// Copyright: (c) 2006 Vadim Zeitlin
-// Licence: wxWindows licence
-///////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_ABOUTDLG_H_
-#define _WX_ABOUTDLG_H_
-
-#include "wx/defs.h"
-
-#if wxUSE_ABOUTDLG
-
-#include "wx/app.h"
-#include "wx/icon.h"
-
-// ----------------------------------------------------------------------------
-// wxAboutDialogInfo: information shown by the standard "About" dialog
-// ----------------------------------------------------------------------------
-
-class WXDLLIMPEXP_ADV wxAboutDialogInfo
-{
-public:
- // all fields are initially uninitialized
- wxAboutDialogInfo() { }
-
- // accessors for various simply fields
- // -----------------------------------
-
- // name of the program, if not used defaults wxApp::GetAppName()
- void SetName(const wxString& name) { m_name = name; }
- wxString GetName() const
- { return m_name.empty() ? wxTheApp->GetAppName() : m_name; }
-
- // version of the program, in free format (but without "version" word)
- void SetVersion(const wxString& version) { m_version = version; }
- bool HasVersion() const { return !m_version.empty(); }
- wxString GetVersion() const { return m_version; }
-
- // brief, but possibly multiline, description of the program
- void SetDescription(const wxString& desc) { m_description = desc; }
- bool HasDescription() const { return !m_description.empty(); }
- wxString GetDescription() const { return m_description; }
-
- // short string containing the program copyright information
- void SetCopyright(const wxString& copyright) { m_copyright = copyright; }
- bool HasCopyright() const { return !m_copyright.empty(); }
- wxString GetCopyright() const { return m_copyright; }
-
- // long, multiline string containing the text of the program licence
- void SetLicence(const wxString& licence) { m_licence = licence; }
- void SetLicense(const wxString& licence) { m_licence = licence; }
- bool HasLicence() const { return !m_licence.empty(); }
- wxString GetLicence() const { return m_licence; }
-
- // icon to be shown in the dialog, defaults to the main frame icon
- void SetIcon(const wxIcon& icon) { m_icon = icon; }
- bool HasIcon() const { return m_icon.Ok(); }
- wxIcon GetIcon() const;
-
- // web site for the program and its description (defaults to URL itself if
- // empty)
- void SetWebSite(const wxString& url, const wxString& desc = wxEmptyString)
- {
- m_url = url;
- m_urlDesc = desc.empty() ? url : desc;
- }
-
- bool HasWebSite() const { return !m_url.empty(); }
-
- wxString GetWebSiteURL() const { return m_url; }
- wxString GetWebSiteDescription() const { return m_urlDesc; }
-
- // accessors for the arrays
- // ------------------------
-
- // the list of developers of the program
- void SetDevelopers(const wxArrayString& developers)
- { m_developers = developers; }
- void AddDeveloper(const wxString& developer)
- { m_developers.push_back(developer); }
-
- bool HasDevelopers() const { return !m_developers.empty(); }
- const wxArrayString& GetDevelopers() const { return m_developers; }
-
- // the list of documentation writers
- void SetDocWriters(const wxArrayString& docwriters)
- { m_docwriters = docwriters; }
- void AddDocWriter(const wxString& docwriter)
- { m_docwriters.push_back(docwriter); }
-
- bool HasDocWriters() const { return !m_docwriters.empty(); }
- const wxArrayString& GetDocWriters() const { return m_docwriters; }
-
- // the list of artists for the program art
- void SetArtists(const wxArrayString& artists)
- { m_artists = artists; }
- void AddArtist(const wxString& artist)
- { m_artists.push_back(artist); }
-
- bool HasArtists() const { return !m_artists.empty(); }
- const wxArrayString& GetArtists() const { return m_artists; }
-
- // the list of translators
- void SetTranslators(const wxArrayString& translators)
- { m_translators = translators; }
- void AddTranslator(const wxString& translator)
- { m_translators.push_back(translator); }
-
- bool HasTranslators() const { return !m_translators.empty(); }
- const wxArrayString& GetTranslators() const { return m_translators; }
-
-
- // implementation only
- // -------------------
-
- // "simple" about dialog shows only textual information (with possibly
- // default icon but without hyperlink nor any long texts such as the
- // licence text)
- bool IsSimple() const
- { return !HasWebSite() && !HasIcon() && !HasLicence(); }
-
- // get the description and credits (i.e. all of developers, doc writers,
- // artists and translators) as a one long multiline string
- wxString GetDescriptionAndCredits() const;
-
-#if wxABI_VERSION >= 20810
- // returns the copyright with the (C) string substituted by the Unicode
- // character U+00A9
- wxString GetCopyrightToDisplay() const;
-#endif // wx 2.8.10+
-
-private:
- wxString m_name,
- m_version,
- m_description,
- m_copyright,
- m_licence;
-
- wxIcon m_icon;
-
- wxString m_url,
- m_urlDesc;
-
- wxArrayString m_developers,
- m_docwriters,
- m_artists,
- m_translators;
-};
-
-// functions to show the about dialog box
-WXDLLIMPEXP_ADV void wxAboutBox(const wxAboutDialogInfo& info);
-
-#endif // wxUSE_ABOUTDLG
-
-#endif // _WX_ABOUTDLG_H_
-
diff --git a/Externals/wxWidgets/include/wx/accel.h b/Externals/wxWidgets/include/wx/accel.h
deleted file mode 100644
index 78c038f34a..0000000000
--- a/Externals/wxWidgets/include/wx/accel.h
+++ /dev/null
@@ -1,171 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Name: wx/accel.h
-// Purpose: wxAcceleratorEntry and wxAcceleratorTable classes
-// Author: Julian Smart, Robert Roebling, Vadim Zeitlin
-// Modified by:
-// Created: 31.05.01 (extracted from other files)
-// RCS-ID: $Id: accel.h 53135 2008-04-12 02:31:04Z VZ $
-// Copyright: (c) wxWidgets team
-// Licence: wxWindows licence
-///////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_ACCEL_H_BASE_
-#define _WX_ACCEL_H_BASE_
-
-#include "wx/defs.h"
-
-#if wxUSE_ACCEL
-
-#include "wx/object.h"
-
-class WXDLLIMPEXP_FWD_CORE wxAcceleratorTable;
-class WXDLLIMPEXP_FWD_CORE wxMenuItem;
-class WXDLLIMPEXP_FWD_CORE wxKeyEvent;
-
-// ----------------------------------------------------------------------------
-// constants
-// ----------------------------------------------------------------------------
-
-// wxAcceleratorEntry flags
-enum
-{
- wxACCEL_NORMAL = 0x0000, // no modifiers
- wxACCEL_ALT = 0x0001, // hold Alt key down
- wxACCEL_CTRL = 0x0002, // hold Ctrl key down
- wxACCEL_SHIFT = 0x0004, // hold Shift key down
-#if defined(__WXMAC__) || defined(__WXCOCOA__)
- wxACCEL_CMD = 0x0008 // Command key on OS X
-#else
- wxACCEL_CMD = wxACCEL_CTRL
-#endif
-};
-
-// ----------------------------------------------------------------------------
-// an entry in wxAcceleratorTable corresponds to one accelerator
-// ----------------------------------------------------------------------------
-
-class WXDLLEXPORT wxAcceleratorEntry
-{
-public:
- wxAcceleratorEntry(int flags = 0, int keyCode = 0, int cmd = 0,
- wxMenuItem *item = NULL)
- : m_flags(flags)
- , m_keyCode(keyCode)
- , m_command(cmd)
- , m_item(item)
- { }
-
- wxAcceleratorEntry(const wxAcceleratorEntry& entry)
- : m_flags(entry.m_flags)
- , m_keyCode(entry.m_keyCode)
- , m_command(entry.m_command)
- , m_item(entry.m_item)
- { }
-
- // create accelerator corresponding to the specified string, return NULL if
- // string couldn't be parsed or a pointer to be deleted by the caller
- static wxAcceleratorEntry *Create(const wxString& str);
-
- wxAcceleratorEntry& operator=(const wxAcceleratorEntry& entry)
- {
- Set(entry.m_flags, entry.m_keyCode, entry.m_command, entry.m_item);
- return *this;
- }
-
- void Set(int flags, int keyCode, int cmd, wxMenuItem *item = NULL)
- {
- m_flags = flags;
- m_keyCode = keyCode;
- m_command = cmd;
- m_item = item;
- }
-
- void SetMenuItem(wxMenuItem *item) { m_item = item; }
-
- int GetFlags() const { return m_flags; }
- int GetKeyCode() const { return m_keyCode; }
- int GetCommand() const { return m_command; }
-
- wxMenuItem *GetMenuItem() const { return m_item; }
-
- bool operator==(const wxAcceleratorEntry& entry) const
- {
- return m_flags == entry.m_flags &&
- m_keyCode == entry.m_keyCode &&
- m_command == entry.m_command &&
- m_item == entry.m_item;
- }
-
- bool operator!=(const wxAcceleratorEntry& entry) const
- { return !(*this == entry); }
-
-#if defined(__WXMOTIF__)
- // Implementation use only
- bool MatchesEvent(const wxKeyEvent& event) const;
-#endif
-
- bool IsOk() const
- {
- return m_flags != 0 &&
- m_keyCode != 0;
- }
-
-
- // string <-> wxAcceleratorEntry conversion
- // ----------------------------------------
-
- // returns a wxString for the this accelerator.
- // this function formats it using the - format
- // where maybe a hyphen-separed list of "shift|alt|ctrl"
- wxString ToString() const;
-
- // returns true if the given string correctly initialized this object
- // (i.e. if IsOk() returns true after this call)
- bool FromString(const wxString& str);
-
-
-private:
- // common part of Create() and FromString()
- static bool ParseAccel(const wxString& str, int *flags, int *keycode);
-
-
- int m_flags; // combination of wxACCEL_XXX constants
- int m_keyCode; // ASCII or virtual keycode
- int m_command; // Command id to generate
-
- // the menu item this entry corresponds to, may be NULL
- wxMenuItem *m_item;
-
- // for compatibility with old code, use accessors now!
- friend class WXDLLIMPEXP_FWD_CORE wxMenu;
-};
-
-// ----------------------------------------------------------------------------
-// include wxAcceleratorTable class declaration, it is only used by the library
-// and so doesn't have any published user visible interface
-// ----------------------------------------------------------------------------
-
-#if defined(__WXUNIVERSAL__)
- #include "wx/generic/accel.h"
-#elif defined(__WXMSW__)
- #include "wx/msw/accel.h"
-#elif defined(__WXMOTIF__)
- #include "wx/motif/accel.h"
-#elif defined(__WXGTK20__)
- #include "wx/gtk/accel.h"
-#elif defined(__WXGTK__)
- #include "wx/gtk1/accel.h"
-#elif defined(__WXMAC__)
- #include "wx/mac/accel.h"
-#elif defined(__WXCOCOA__)
- #include "wx/generic/accel.h"
-#elif defined(__WXPM__)
- #include "wx/os2/accel.h"
-#endif
-
-extern WXDLLEXPORT_DATA(wxAcceleratorTable) wxNullAcceleratorTable;
-
-#endif // wxUSE_ACCEL
-
-#endif
- // _WX_ACCEL_H_BASE_
diff --git a/Externals/wxWidgets/include/wx/access.h b/Externals/wxWidgets/include/wx/access.h
deleted file mode 100644
index 0a83346ab2..0000000000
--- a/Externals/wxWidgets/include/wx/access.h
+++ /dev/null
@@ -1,377 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-// Name: wx/access.h
-// Purpose: Accessibility classes
-// Author: Julian Smart
-// Modified by:
-// Created: 2003-02-12
-// RCS-ID: $Id: access.h 51246 2008-01-16 12:56:37Z VZ $
-// Copyright: (c) Julian Smart
-// Licence: wxWindows licence
-/////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_ACCESSBASE_H_
-#define _WX_ACCESSBASE_H_
-
-// ----------------------------------------------------------------------------
-// headers we have to include here
-// ----------------------------------------------------------------------------
-
-#include "wx/defs.h"
-
-#if wxUSE_ACCESSIBILITY
-
-#include "wx/variant.h"
-
-typedef enum
-{
- wxACC_FAIL,
- wxACC_FALSE,
- wxACC_OK,
- wxACC_NOT_IMPLEMENTED,
- wxACC_NOT_SUPPORTED
-} wxAccStatus;
-
-// Child ids are integer identifiers from 1 up.
-// So zero represents 'this' object.
-#define wxACC_SELF 0
-
-// Navigation constants
-
-typedef enum
-{
- wxNAVDIR_DOWN,
- wxNAVDIR_FIRSTCHILD,
- wxNAVDIR_LASTCHILD,
- wxNAVDIR_LEFT,
- wxNAVDIR_NEXT,
- wxNAVDIR_PREVIOUS,
- wxNAVDIR_RIGHT,
- wxNAVDIR_UP
-} wxNavDir;
-
-// Role constants
-
-typedef enum {
- wxROLE_NONE,
- wxROLE_SYSTEM_ALERT,
- wxROLE_SYSTEM_ANIMATION,
- wxROLE_SYSTEM_APPLICATION,
- wxROLE_SYSTEM_BORDER,
- wxROLE_SYSTEM_BUTTONDROPDOWN,
- wxROLE_SYSTEM_BUTTONDROPDOWNGRID,
- wxROLE_SYSTEM_BUTTONMENU,
- wxROLE_SYSTEM_CARET,
- wxROLE_SYSTEM_CELL,
- wxROLE_SYSTEM_CHARACTER,
- wxROLE_SYSTEM_CHART,
- wxROLE_SYSTEM_CHECKBUTTON,
- wxROLE_SYSTEM_CLIENT,
- wxROLE_SYSTEM_CLOCK,
- wxROLE_SYSTEM_COLUMN,
- wxROLE_SYSTEM_COLUMNHEADER,
- wxROLE_SYSTEM_COMBOBOX,
- wxROLE_SYSTEM_CURSOR,
- wxROLE_SYSTEM_DIAGRAM,
- wxROLE_SYSTEM_DIAL,
- wxROLE_SYSTEM_DIALOG,
- wxROLE_SYSTEM_DOCUMENT,
- wxROLE_SYSTEM_DROPLIST,
- wxROLE_SYSTEM_EQUATION,
- wxROLE_SYSTEM_GRAPHIC,
- wxROLE_SYSTEM_GRIP,
- wxROLE_SYSTEM_GROUPING,
- wxROLE_SYSTEM_HELPBALLOON,
- wxROLE_SYSTEM_HOTKEYFIELD,
- wxROLE_SYSTEM_INDICATOR,
- wxROLE_SYSTEM_LINK,
- wxROLE_SYSTEM_LIST,
- wxROLE_SYSTEM_LISTITEM,
- wxROLE_SYSTEM_MENUBAR,
- wxROLE_SYSTEM_MENUITEM,
- wxROLE_SYSTEM_MENUPOPUP,
- wxROLE_SYSTEM_OUTLINE,
- wxROLE_SYSTEM_OUTLINEITEM,
- wxROLE_SYSTEM_PAGETAB,
- wxROLE_SYSTEM_PAGETABLIST,
- wxROLE_SYSTEM_PANE,
- wxROLE_SYSTEM_PROGRESSBAR,
- wxROLE_SYSTEM_PROPERTYPAGE,
- wxROLE_SYSTEM_PUSHBUTTON,
- wxROLE_SYSTEM_RADIOBUTTON,
- wxROLE_SYSTEM_ROW,
- wxROLE_SYSTEM_ROWHEADER,
- wxROLE_SYSTEM_SCROLLBAR,
- wxROLE_SYSTEM_SEPARATOR,
- wxROLE_SYSTEM_SLIDER,
- wxROLE_SYSTEM_SOUND,
- wxROLE_SYSTEM_SPINBUTTON,
- wxROLE_SYSTEM_STATICTEXT,
- wxROLE_SYSTEM_STATUSBAR,
- wxROLE_SYSTEM_TABLE,
- wxROLE_SYSTEM_TEXT,
- wxROLE_SYSTEM_TITLEBAR,
- wxROLE_SYSTEM_TOOLBAR,
- wxROLE_SYSTEM_TOOLTIP,
- wxROLE_SYSTEM_WHITESPACE,
- wxROLE_SYSTEM_WINDOW
-} wxAccRole;
-
-// Object types
-
-typedef enum {
- wxOBJID_WINDOW = 0x00000000,
- wxOBJID_SYSMENU = 0xFFFFFFFF,
- wxOBJID_TITLEBAR = 0xFFFFFFFE,
- wxOBJID_MENU = 0xFFFFFFFD,
- wxOBJID_CLIENT = 0xFFFFFFFC,
- wxOBJID_VSCROLL = 0xFFFFFFFB,
- wxOBJID_HSCROLL = 0xFFFFFFFA,
- wxOBJID_SIZEGRIP = 0xFFFFFFF9,
- wxOBJID_CARET = 0xFFFFFFF8,
- wxOBJID_CURSOR = 0xFFFFFFF7,
- wxOBJID_ALERT = 0xFFFFFFF6,
- wxOBJID_SOUND = 0xFFFFFFF5
-} wxAccObject;
-
-// Accessible states
-
-#define wxACC_STATE_SYSTEM_ALERT_HIGH 0x00000001
-#define wxACC_STATE_SYSTEM_ALERT_MEDIUM 0x00000002
-#define wxACC_STATE_SYSTEM_ALERT_LOW 0x00000004
-#define wxACC_STATE_SYSTEM_ANIMATED 0x00000008
-#define wxACC_STATE_SYSTEM_BUSY 0x00000010
-#define wxACC_STATE_SYSTEM_CHECKED 0x00000020
-#define wxACC_STATE_SYSTEM_COLLAPSED 0x00000040
-#define wxACC_STATE_SYSTEM_DEFAULT 0x00000080
-#define wxACC_STATE_SYSTEM_EXPANDED 0x00000100
-#define wxACC_STATE_SYSTEM_EXTSELECTABLE 0x00000200
-#define wxACC_STATE_SYSTEM_FLOATING 0x00000400
-#define wxACC_STATE_SYSTEM_FOCUSABLE 0x00000800
-#define wxACC_STATE_SYSTEM_FOCUSED 0x00001000
-#define wxACC_STATE_SYSTEM_HOTTRACKED 0x00002000
-#define wxACC_STATE_SYSTEM_INVISIBLE 0x00004000
-#define wxACC_STATE_SYSTEM_MARQUEED 0x00008000
-#define wxACC_STATE_SYSTEM_MIXED 0x00010000
-#define wxACC_STATE_SYSTEM_MULTISELECTABLE 0x00020000
-#define wxACC_STATE_SYSTEM_OFFSCREEN 0x00040000
-#define wxACC_STATE_SYSTEM_PRESSED 0x00080000
-#define wxACC_STATE_SYSTEM_PROTECTED 0x00100000
-#define wxACC_STATE_SYSTEM_READONLY 0x00200000
-#define wxACC_STATE_SYSTEM_SELECTABLE 0x00400000
-#define wxACC_STATE_SYSTEM_SELECTED 0x00800000
-#define wxACC_STATE_SYSTEM_SELFVOICING 0x01000000
-#define wxACC_STATE_SYSTEM_UNAVAILABLE 0x02000000
-
-// Selection flag
-
-typedef enum
-{
- wxACC_SEL_NONE = 0,
- wxACC_SEL_TAKEFOCUS = 1,
- wxACC_SEL_TAKESELECTION = 2,
- wxACC_SEL_EXTENDSELECTION = 4,
- wxACC_SEL_ADDSELECTION = 8,
- wxACC_SEL_REMOVESELECTION = 16
-} wxAccSelectionFlags;
-
-// Accessibility event identifiers
-
-#define wxACC_EVENT_SYSTEM_SOUND 0x0001
-#define wxACC_EVENT_SYSTEM_ALERT 0x0002
-#define wxACC_EVENT_SYSTEM_FOREGROUND 0x0003
-#define wxACC_EVENT_SYSTEM_MENUSTART 0x0004
-#define wxACC_EVENT_SYSTEM_MENUEND 0x0005
-#define wxACC_EVENT_SYSTEM_MENUPOPUPSTART 0x0006
-#define wxACC_EVENT_SYSTEM_MENUPOPUPEND 0x0007
-#define wxACC_EVENT_SYSTEM_CAPTURESTART 0x0008
-#define wxACC_EVENT_SYSTEM_CAPTUREEND 0x0009
-#define wxACC_EVENT_SYSTEM_MOVESIZESTART 0x000A
-#define wxACC_EVENT_SYSTEM_MOVESIZEEND 0x000B
-#define wxACC_EVENT_SYSTEM_CONTEXTHELPSTART 0x000C
-#define wxACC_EVENT_SYSTEM_CONTEXTHELPEND 0x000D
-#define wxACC_EVENT_SYSTEM_DRAGDROPSTART 0x000E
-#define wxACC_EVENT_SYSTEM_DRAGDROPEND 0x000F
-#define wxACC_EVENT_SYSTEM_DIALOGSTART 0x0010
-#define wxACC_EVENT_SYSTEM_DIALOGEND 0x0011
-#define wxACC_EVENT_SYSTEM_SCROLLINGSTART 0x0012
-#define wxACC_EVENT_SYSTEM_SCROLLINGEND 0x0013
-#define wxACC_EVENT_SYSTEM_SWITCHSTART 0x0014
-#define wxACC_EVENT_SYSTEM_SWITCHEND 0x0015
-#define wxACC_EVENT_SYSTEM_MINIMIZESTART 0x0016
-#define wxACC_EVENT_SYSTEM_MINIMIZEEND 0x0017
-#define wxACC_EVENT_OBJECT_CREATE 0x8000
-#define wxACC_EVENT_OBJECT_DESTROY 0x8001
-#define wxACC_EVENT_OBJECT_SHOW 0x8002
-#define wxACC_EVENT_OBJECT_HIDE 0x8003
-#define wxACC_EVENT_OBJECT_REORDER 0x8004
-#define wxACC_EVENT_OBJECT_FOCUS 0x8005
-#define wxACC_EVENT_OBJECT_SELECTION 0x8006
-#define wxACC_EVENT_OBJECT_SELECTIONADD 0x8007
-#define wxACC_EVENT_OBJECT_SELECTIONREMOVE 0x8008
-#define wxACC_EVENT_OBJECT_SELECTIONWITHIN 0x8009
-#define wxACC_EVENT_OBJECT_STATECHANGE 0x800A
-#define wxACC_EVENT_OBJECT_LOCATIONCHANGE 0x800B
-#define wxACC_EVENT_OBJECT_NAMECHANGE 0x800C
-#define wxACC_EVENT_OBJECT_DESCRIPTIONCHANGE 0x800D
-#define wxACC_EVENT_OBJECT_VALUECHANGE 0x800E
-#define wxACC_EVENT_OBJECT_PARENTCHANGE 0x800F
-#define wxACC_EVENT_OBJECT_HELPCHANGE 0x8010
-#define wxACC_EVENT_OBJECT_DEFACTIONCHANGE 0x8011
-#define wxACC_EVENT_OBJECT_ACCELERATORCHANGE 0x8012
-
-// ----------------------------------------------------------------------------
-// wxAccessible
-// All functions return an indication of success, failure, or not implemented.
-// ----------------------------------------------------------------------------
-
-class WXDLLIMPEXP_FWD_CORE wxAccessible;
-class WXDLLIMPEXP_FWD_CORE wxWindow;
-class WXDLLIMPEXP_FWD_CORE wxPoint;
-class WXDLLIMPEXP_FWD_CORE wxRect;
-class WXDLLEXPORT wxAccessibleBase : public wxObject
-{
- DECLARE_NO_COPY_CLASS(wxAccessibleBase)
-
-public:
- wxAccessibleBase(wxWindow* win): m_window(win) {}
- virtual ~wxAccessibleBase() {}
-
-// Overridables
-
- // Can return either a child object, or an integer
- // representing the child element, starting from 1.
- // pt is in screen coordinates.
- virtual wxAccStatus HitTest(const wxPoint& WXUNUSED(pt), int* WXUNUSED(childId), wxAccessible** WXUNUSED(childObject))
- { return wxACC_NOT_IMPLEMENTED; }
-
- // Returns the rectangle for this object (id = 0) or a child element (id > 0).
- // rect is in screen coordinates.
- virtual wxAccStatus GetLocation(wxRect& WXUNUSED(rect), int WXUNUSED(elementId))
- { return wxACC_NOT_IMPLEMENTED; }
-
- // Navigates from fromId to toId/toObject.
- virtual wxAccStatus Navigate(wxNavDir WXUNUSED(navDir), int WXUNUSED(fromId),
- int* WXUNUSED(toId), wxAccessible** WXUNUSED(toObject))
- { return wxACC_NOT_IMPLEMENTED; }
-
- // Gets the name of the specified object.
- virtual wxAccStatus GetName(int WXUNUSED(childId), wxString* WXUNUSED(name))
- { return wxACC_NOT_IMPLEMENTED; }
-
- // Gets the number of children.
- virtual wxAccStatus GetChildCount(int* WXUNUSED(childCount))
- { return wxACC_NOT_IMPLEMENTED; }
-
- // Gets the specified child (starting from 1).
- // If *child is NULL and return value is wxACC_OK,
- // this means that the child is a simple element and
- // not an accessible object.
- virtual wxAccStatus GetChild(int WXUNUSED(childId), wxAccessible** WXUNUSED(child))
- { return wxACC_NOT_IMPLEMENTED; }
-
- // Gets the parent, or NULL.
- virtual wxAccStatus GetParent(wxAccessible** WXUNUSED(parent))
- { return wxACC_NOT_IMPLEMENTED; }
-
- // Performs the default action. childId is 0 (the action for this object)
- // or > 0 (the action for a child).
- // Return wxACC_NOT_SUPPORTED if there is no default action for this
- // window (e.g. an edit control).
- virtual wxAccStatus DoDefaultAction(int WXUNUSED(childId))
- { return wxACC_NOT_IMPLEMENTED; }
-
- // Gets the default action for this object (0) or > 0 (the action for a child).
- // Return wxACC_OK even if there is no action. actionName is the action, or the empty
- // string if there is no action.
- // The retrieved string describes the action that is performed on an object,
- // not what the object does as a result. For example, a toolbar button that prints
- // a document has a default action of "Press" rather than "Prints the current document."
- virtual wxAccStatus GetDefaultAction(int WXUNUSED(childId), wxString* WXUNUSED(actionName))
- { return wxACC_NOT_IMPLEMENTED; }
-
- // Returns the description for this object or a child.
- virtual wxAccStatus GetDescription(int WXUNUSED(childId), wxString* WXUNUSED(description))
- { return wxACC_NOT_IMPLEMENTED; }
-
- // Returns help text for this object or a child, similar to tooltip text.
- virtual wxAccStatus GetHelpText(int WXUNUSED(childId), wxString* WXUNUSED(helpText))
- { return wxACC_NOT_IMPLEMENTED; }
-
- // Returns the keyboard shortcut for this object or child.
- // Return e.g. ALT+K
- virtual wxAccStatus GetKeyboardShortcut(int WXUNUSED(childId), wxString* WXUNUSED(shortcut))
- { return wxACC_NOT_IMPLEMENTED; }
-
- // Returns a role constant.
- virtual wxAccStatus GetRole(int WXUNUSED(childId), wxAccRole* WXUNUSED(role))
- { return wxACC_NOT_IMPLEMENTED; }
-
- // Returns a state constant.
- virtual wxAccStatus GetState(int WXUNUSED(childId), long* WXUNUSED(state))
- { return wxACC_NOT_IMPLEMENTED; }
-
- // Returns a localized string representing the value for the object
- // or child.
- virtual wxAccStatus GetValue(int WXUNUSED(childId), wxString* WXUNUSED(strValue))
- { return wxACC_NOT_IMPLEMENTED; }
-
- // Selects the object or child.
- virtual wxAccStatus Select(int WXUNUSED(childId), wxAccSelectionFlags WXUNUSED(selectFlags))
- { return wxACC_NOT_IMPLEMENTED; }
-
- // Gets the window with the keyboard focus.
- // If childId is 0 and child is NULL, no object in
- // this subhierarchy has the focus.
- // If this object has the focus, child should be 'this'.
- virtual wxAccStatus GetFocus(int* WXUNUSED(childId), wxAccessible** WXUNUSED(child))
- { return wxACC_NOT_IMPLEMENTED; }
-
-#if wxUSE_VARIANT
- // Gets a variant representing the selected children
- // of this object.
- // Acceptable values:
- // - a null variant (IsNull() returns TRUE)
- // - a list variant (GetType() == wxT("list"))
- // - an integer representing the selected child element,
- // or 0 if this object is selected (GetType() == wxT("long"))
- // - a "void*" pointer to a wxAccessible child object
- virtual wxAccStatus GetSelections(wxVariant* WXUNUSED(selections))
- { return wxACC_NOT_IMPLEMENTED; }
-#endif // wxUSE_VARIANT
-
-// Accessors
-
- // Returns the window associated with this object.
-
- wxWindow* GetWindow() { return m_window; }
-
- // Sets the window associated with this object.
-
- void SetWindow(wxWindow* window) { m_window = window; }
-
-// Operations
-
- // Each platform's implementation must define this
- // static void NotifyEvent(int eventType, wxWindow* window, wxAccObject objectType,
- // int objectId);
-
-private:
-
-// Data members
-
- wxWindow* m_window;
-};
-
-
-// ----------------------------------------------------------------------------
-// now include the declaration of the real class
-// ----------------------------------------------------------------------------
-
-#if defined(__WXMSW__)
- #include "wx/msw/ole/access.h"
-#endif
-
-#endif // wxUSE_ACCESSIBILITY
-
-#endif // _WX_ACCESSBASE_H_
-
diff --git a/Externals/wxWidgets/include/wx/afterstd.h b/Externals/wxWidgets/include/wx/afterstd.h
deleted file mode 100644
index 4c1d4a5a25..0000000000
--- a/Externals/wxWidgets/include/wx/afterstd.h
+++ /dev/null
@@ -1,48 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Name: include/wx/afterstd.h
-// Purpose: #include after STL headers
-// Author: Vadim Zeitlin
-// Modified by:
-// Created: 07/07/03
-// RCS-ID: $Id: afterstd.h 42906 2006-11-01 14:16:42Z VZ $
-// Copyright: (c) 2003 Vadim Zeitlin
-// Licence: wxWindows licence
-///////////////////////////////////////////////////////////////////////////////
-
-/**
- See the comments in beforestd.h.
- */
-
-#if defined(__WXMSW__)
- #include "wx/msw/winundef.h"
-#endif
-
-// undo what we did in wx/beforestd.h
-#if defined(__VISUALC__) && __VISUALC__ <= 1201
- // MSVC 5 does not have this
- #if _MSC_VER > 1100
- // don't restore this one for VC6, it gives it in each try/catch which is a
- // bit annoying to say the least
- #if _MSC_VER >= 0x1300
- // unreachable code
- #pragma warning(default:4702)
- #endif // VC++ >= 7
-
- #pragma warning(pop)
- #else
- // 'expression' : signed/unsigned mismatch
- #pragma warning(default:4018)
-
- // 'identifier' : unreferenced formal parameter
- #pragma warning(default:4100)
-
- // 'conversion' : conversion from 'type1' to 'type2',
- // possible loss of data
- #pragma warning(default:4244)
-
- // C++ language change: to explicitly specialize class template
- // 'identifier' use the following syntax
- #pragma warning(default:4663)
- #endif
-#endif
-
diff --git a/Externals/wxWidgets/include/wx/anidecod.h b/Externals/wxWidgets/include/wx/anidecod.h
deleted file mode 100644
index 0b664d86b8..0000000000
--- a/Externals/wxWidgets/include/wx/anidecod.h
+++ /dev/null
@@ -1,77 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-// Name: wx/anidecod.h
-// Purpose: wxANIDecoder, ANI reader for wxImage and wxAnimation
-// Author: Francesco Montorsi
-// CVS-ID: $Id: anidecod.h 45563 2007-04-21 18:17:50Z VZ $
-// Copyright: (c) 2006 Francesco Montorsi
-// Licence: wxWindows licence
-/////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_ANIDECOD_H
-#define _WX_ANIDECOD_H
-
-#include "wx/defs.h"
-
-#if wxUSE_STREAMS && wxUSE_ICO_CUR
-
-#include "wx/stream.h"
-#include "wx/image.h"
-#include "wx/animdecod.h"
-#include "wx/dynarray.h"
-
-
-class /*WXDLLEXPORT*/ wxANIFrameInfo;
-
-WX_DECLARE_EXPORTED_OBJARRAY(wxANIFrameInfo, wxANIFrameInfoArray);
-WX_DECLARE_EXPORTED_OBJARRAY(wxImage, wxImageArray);
-
-// --------------------------------------------------------------------------
-// wxANIDecoder class
-// --------------------------------------------------------------------------
-
-class WXDLLEXPORT wxANIDecoder : public wxAnimationDecoder
-{
-public:
- // constructor, destructor, etc.
- wxANIDecoder();
- ~wxANIDecoder();
-
-
- virtual wxSize GetFrameSize(unsigned int frame) const;
- virtual wxPoint GetFramePosition(unsigned int frame) const;
- virtual wxAnimationDisposal GetDisposalMethod(unsigned int frame) const;
- virtual long GetDelay(unsigned int frame) const;
- virtual wxColour GetTransparentColour(unsigned int frame) const;
-
- // implementation of wxAnimationDecoder's pure virtuals
- virtual bool CanRead( wxInputStream& stream ) const;
- virtual bool Load( wxInputStream& stream );
-
- bool ConvertToImage(unsigned int frame, wxImage *image) const;
-
- wxAnimationDecoder *Clone() const
- { return new wxANIDecoder; }
- wxAnimationType GetType() const
- { return wxANIMATION_TYPE_ANI; }
-
-private:
- // frames stored as wxImage(s): ANI files are meant to be used mostly for animated
- // cursors and thus they do not use any optimization to encode differences between
- // two frames: they are just a list of images to display sequentially.
- wxImageArray m_images;
-
- // the info about each image stored in m_images.
- // NB: m_info.GetCount() may differ from m_images.GetCount()!
- wxANIFrameInfoArray m_info;
-
- // this is the wxCURHandler used to load the ICON chunk of the ANI files
- static wxCURHandler sm_handler;
-
-
- DECLARE_NO_COPY_CLASS(wxANIDecoder)
-};
-
-
-#endif // wxUSE_STREAM && wxUSE_ICO_CUR
-
-#endif // _WX_ANIDECOD_H
diff --git a/Externals/wxWidgets/include/wx/animate.h b/Externals/wxWidgets/include/wx/animate.h
deleted file mode 100644
index 451cce52fc..0000000000
--- a/Externals/wxWidgets/include/wx/animate.h
+++ /dev/null
@@ -1,124 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-// Name: wx/animate.h
-// Purpose: wxAnimation and wxAnimationCtrl
-// Author: Julian Smart and Guillermo Rodriguez Garcia
-// Modified by: Francesco Montorsi
-// Created: 13/8/99
-// RCS-ID: $Id: animate.h 53135 2008-04-12 02:31:04Z VZ $
-// Copyright: (c) Julian Smart and Guillermo Rodriguez Garcia
-// Licence: wxWindows licence
-/////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_ANIMATE_H_
-#define _WX_ANIMATE_H_
-
-#include "wx/defs.h"
-
-#if wxUSE_ANIMATIONCTRL
-
-#include "wx/animdecod.h"
-#include "wx/control.h"
-#include "wx/timer.h"
-#include "wx/bitmap.h"
-
-class WXDLLIMPEXP_FWD_ADV wxAnimation;
-
-extern WXDLLIMPEXP_DATA_ADV(wxAnimation) wxNullAnimation;
-extern WXDLLIMPEXP_DATA_ADV(const wxChar) wxAnimationCtrlNameStr[];
-
-
-// ----------------------------------------------------------------------------
-// wxAnimationBase
-// ----------------------------------------------------------------------------
-
-class WXDLLIMPEXP_ADV wxAnimationBase : public wxGDIObject
-{
-public:
- wxAnimationBase() {}
-
- virtual bool IsOk() const = 0;
-
- // can be -1
- virtual int GetDelay(unsigned int frame) const = 0;
-
- virtual unsigned int GetFrameCount() const = 0;
- virtual wxImage GetFrame(unsigned int frame) const = 0;
- virtual wxSize GetSize() const = 0;
-
- virtual bool LoadFile(const wxString& name,
- wxAnimationType type = wxANIMATION_TYPE_ANY) = 0;
- virtual bool Load(wxInputStream& stream,
- wxAnimationType type = wxANIMATION_TYPE_ANY) = 0;
-
-protected:
- DECLARE_ABSTRACT_CLASS(wxAnimationBase)
-};
-
-
-
-// ----------------------------------------------------------------------------
-// wxAnimationCtrlBase
-// ----------------------------------------------------------------------------
-
-// do not autoresize to the animation's size when SetAnimation() is called
-#define wxAC_NO_AUTORESIZE (0x0010)
-
-// default style does not include wxAC_NO_AUTORESIZE, that is, the control
-// auto-resizes by default to fit the new animation when SetAnimation() is called
-#define wxAC_DEFAULT_STYLE (wxNO_BORDER)
-
-class WXDLLIMPEXP_ADV wxAnimationCtrlBase : public wxControl
-{
-public:
- wxAnimationCtrlBase() { }
-
- // public API
- virtual bool LoadFile(const wxString& filename,
- wxAnimationType type = wxANIMATION_TYPE_ANY) = 0;
-
- virtual void SetAnimation(const wxAnimation &anim) = 0;
- virtual wxAnimation GetAnimation() const = 0;
-
- virtual bool Play() = 0;
- virtual void Stop() = 0;
-
- virtual bool IsPlaying() const = 0;
-
- virtual void SetInactiveBitmap(const wxBitmap &bmp);
-
- // always return the original bitmap set in this control
- wxBitmap GetInactiveBitmap() const
- { return m_bmpStatic; }
-
-protected:
- // the inactive bitmap as it was set by the user
- wxBitmap m_bmpStatic;
-
- // the inactive bitmap currently shown in the control
- // (may differ in the size from m_bmpStatic)
- wxBitmap m_bmpStaticReal;
-
- // updates m_bmpStaticReal from m_bmpStatic if needed
- virtual void UpdateStaticImage();
-
- // called by SetInactiveBitmap
- virtual void DisplayStaticImage() = 0;
-
-private:
- DECLARE_ABSTRACT_CLASS(wxAnimationCtrlBase)
-};
-
-
-// ----------------------------------------------------------------------------
-// include the platform-specific version of the wxAnimationCtrl class
-// ----------------------------------------------------------------------------
-
-#if defined(__WXGTK20__) && !defined(__WXUNIVERSAL__)
- #include "wx/gtk/animate.h"
-#else
- #include "wx/generic/animate.h"
-#endif
-
-#endif // wxUSE_ANIMATIONCTRL
-
-#endif // _WX_ANIMATE_H_
diff --git a/Externals/wxWidgets/include/wx/animdecod.h b/Externals/wxWidgets/include/wx/animdecod.h
deleted file mode 100644
index d6dc9a48df..0000000000
--- a/Externals/wxWidgets/include/wx/animdecod.h
+++ /dev/null
@@ -1,146 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-// Name: wx/animdecod.h
-// Purpose: wxAnimationDecoder
-// Author: Francesco Montorsi
-// CVS-ID: $Id: animdecod.h 49563 2007-10-31 20:46:21Z VZ $
-// Copyright: (c) 2006 Francesco Montorsi
-// Licence: wxWindows licence
-/////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_ANIMDECOD_H
-#define _WX_ANIMDECOD_H
-
-#include "wx/defs.h"
-
-#if wxUSE_STREAMS
-
-#include "wx/colour.h"
-#include "wx/gdicmn.h"
-
-class WXDLLIMPEXP_FWD_BASE wxInputStream;
-class WXDLLIMPEXP_FWD_CORE wxImage;
-
-/*
-
- Differences between a wxAnimationDecoder and a wxImageHandler:
-
- 1) wxImageHandlers always load an input stream directly into a given wxImage
- object converting from the format-specific data representation to the
- wxImage native format (RGB24).
- wxAnimationDecoders always load an input stream using some optimized format
- to store it which is format-depedent. This allows to store a (possibly big)
- animation using a format which is a good compromise between required memory
- and time required to blit in on the screen.
-
- 2) wxAnimationDecoders contain the animation data in some internal var.
- That's why they derive from wxObjectRefData: they are data which can be shared.
-
- 3) wxAnimationDecoders can be used by a wxImageHandler to retrieve a frame
- in wxImage format; the viceversa cannot be done.
-
- 4) wxAnimationDecoders are decoders only, thus do not support save features.
-
- 5) wxAnimationDecoders are directly used by wxAnimation (generic implementation)
- as wxObjectRefData while they need to be 'wrapped' by a wxImageHandler for
- wxImage uses.
-
-*/
-
-
-// --------------------------------------------------------------------------
-// Constants
-// --------------------------------------------------------------------------
-
-// NB: the values of these enum items are not casual but coincide with the
-// GIF disposal codes. Do not change them !!
-enum wxAnimationDisposal
-{
- // No disposal specified. The decoder is not required to take any action.
- wxANIM_UNSPECIFIED = -1,
-
- // Do not dispose. The graphic is to be left in place.
- wxANIM_DONOTREMOVE = 0,
-
- // Restore to background color. The area used by the graphic must be
- // restored to the background color.
- wxANIM_TOBACKGROUND = 1,
-
- // Restore to previous. The decoder is required to restore the area
- // overwritten by the graphic with what was there prior to rendering the graphic.
- wxANIM_TOPREVIOUS = 2
-};
-
-enum wxAnimationType
-{
- wxANIMATION_TYPE_INVALID,
- wxANIMATION_TYPE_GIF,
- wxANIMATION_TYPE_ANI,
-
- wxANIMATION_TYPE_ANY
-};
-
-
-// --------------------------------------------------------------------------
-// wxAnimationDecoder class
-// --------------------------------------------------------------------------
-
-class WXDLLEXPORT wxAnimationDecoder : public wxObjectRefData
-{
-public:
- wxAnimationDecoder()
- {
- m_background = wxNullColour;
- m_nFrames = 0;
- }
- virtual ~wxAnimationDecoder() { }
-
-
- virtual bool Load( wxInputStream& stream ) = 0;
- virtual bool CanRead( wxInputStream& stream ) const = 0;
-
- virtual wxAnimationDecoder *Clone() const = 0;
- virtual wxAnimationType GetType() const = 0;
-
- // convert given frame to wxImage
- virtual bool ConvertToImage(unsigned int frame, wxImage *image) const = 0;
-
-
- // frame specific data getters
-
- // not all frames may be of the same size; e.g. GIF allows to
- // specify that between two frames only a smaller portion of the
- // entire animation has changed.
- virtual wxSize GetFrameSize(unsigned int frame) const = 0;
-
- // the position of this frame in case it's not as big as m_szAnimation
- // or wxPoint(0,0) otherwise.
- virtual wxPoint GetFramePosition(unsigned int frame) const = 0;
-
- // what should be done after displaying this frame.
- virtual wxAnimationDisposal GetDisposalMethod(unsigned int frame) const = 0;
-
- // the number of milliseconds this frame should be displayed.
- // if returns -1 then the frame must be displayed forever.
- virtual long GetDelay(unsigned int frame) const = 0;
-
- // the transparent colour for this frame if any or wxNullColour.
- virtual wxColour GetTransparentColour(unsigned int frame) const = 0;
-
- // get global data
- wxSize GetAnimationSize() const { return m_szAnimation; }
- wxColour GetBackgroundColour() const { return m_background; }
- unsigned int GetFrameCount() const { return m_nFrames; }
-
-protected:
- wxSize m_szAnimation;
- unsigned int m_nFrames;
-
- // this is the colour to use for the wxANIM_TOBACKGROUND disposal.
- // if not specified by the animation, it's set to wxNullColour
- wxColour m_background;
-};
-
-
-#endif // wxUSE_STREAM
-#endif // _WX_ANIMDECOD_H
-
diff --git a/Externals/wxWidgets/include/wx/app.h b/Externals/wxWidgets/include/wx/app.h
deleted file mode 100644
index 1846d563e2..0000000000
--- a/Externals/wxWidgets/include/wx/app.h
+++ /dev/null
@@ -1,708 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-// Name: wx/app.h
-// Purpose: wxAppBase class and macros used for declaration of wxApp
-// derived class in the user code
-// Author: Julian Smart
-// Modified by:
-// Created: 01/02/97
-// RCS-ID: $Id: app.h 51592 2008-02-08 08:17:41Z VZ $
-// Copyright: (c) Julian Smart
-// Licence: wxWindows licence
-/////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_APP_H_BASE_
-#define _WX_APP_H_BASE_
-
-// ----------------------------------------------------------------------------
-// headers we have to include here
-// ----------------------------------------------------------------------------
-
-#include "wx/event.h" // for the base class
-#include "wx/build.h"
-#include "wx/init.h" // we must declare wxEntry()
-#include "wx/intl.h" // for wxLayoutDirection
-
-class WXDLLIMPEXP_FWD_BASE wxAppConsole;
-class WXDLLIMPEXP_FWD_BASE wxAppTraits;
-class WXDLLIMPEXP_FWD_BASE wxCmdLineParser;
-class WXDLLIMPEXP_FWD_BASE wxLog;
-class WXDLLIMPEXP_FWD_BASE wxMessageOutput;
-
-#if wxUSE_GUI
- class WXDLLIMPEXP_FWD_BASE wxEventLoop;
- struct WXDLLIMPEXP_FWD_CORE wxVideoMode;
-#endif
-
-// ----------------------------------------------------------------------------
-// typedefs
-// ----------------------------------------------------------------------------
-
-// the type of the function used to create a wxApp object on program start up
-typedef wxAppConsole* (*wxAppInitializerFunction)();
-
-// ----------------------------------------------------------------------------
-// constants
-// ----------------------------------------------------------------------------
-
-enum
-{
- wxPRINT_WINDOWS = 1,
- wxPRINT_POSTSCRIPT = 2
-};
-
-// ----------------------------------------------------------------------------
-// wxAppConsole: wxApp for non-GUI applications
-// ----------------------------------------------------------------------------
-
-class WXDLLIMPEXP_BASE wxAppConsole : public wxEvtHandler
-{
-public:
- // ctor and dtor
- wxAppConsole();
- virtual ~wxAppConsole();
-
-
- // the virtual functions which may/must be overridden in the derived class
- // -----------------------------------------------------------------------
-
- // This is the very first function called for a newly created wxApp object,
- // it is used by the library to do the global initialization. If, for some
- // reason, you must override it (instead of just overriding OnInit(), as
- // usual, for app-specific initializations), do not forget to call the base
- // class version!
- virtual bool Initialize(int& argc, wxChar **argv);
-
- // This gives wxCocoa a chance to call OnInit() with a memory pool in place
- virtual bool CallOnInit() { return OnInit(); }
-
- // Called before OnRun(), this is a good place to do initialization -- if
- // anything fails, return false from here to prevent the program from
- // continuing. The command line is normally parsed here, call the base
- // class OnInit() to do it.
- virtual bool OnInit();
-
- // this is here only temporary hopefully (FIXME)
- virtual bool OnInitGui() { return true; }
-
- // This is the replacement for the normal main(): all program work should
- // be done here. When OnRun() returns, the programs starts shutting down.
- virtual int OnRun() = 0;
-
- // This is only called if OnInit() returned true so it's a good place to do
- // any cleanup matching the initializations done there.
- virtual int OnExit();
-
- // This is the very last function called on wxApp object before it is
- // destroyed. If you override it (instead of overriding OnExit() as usual)
- // do not forget to call the base class version!
- virtual void CleanUp();
-
- // Called when a fatal exception occurs, this function should take care not
- // to do anything which might provoke a nested exception! It may be
- // overridden if you wish to react somehow in non-default way (core dump
- // under Unix, application crash under Windows) to fatal program errors,
- // however extreme care should be taken if you don't want this function to
- // crash.
- virtual void OnFatalException() { }
-
- // Called from wxExit() function, should terminate the application a.s.a.p.
- virtual void Exit();
-
-
- // application info: name, description, vendor
- // -------------------------------------------
-
- // NB: all these should be set by the application itself, there are no
- // reasonable default except for the application name which is taken to
- // be argv[0]
-
- // set/get the application name
- wxString GetAppName() const
- {
- return m_appName.empty() ? m_className : m_appName;
- }
- void SetAppName(const wxString& name) { m_appName = name; }
-
- // set/get the app class name
- wxString GetClassName() const { return m_className; }
- void SetClassName(const wxString& name) { m_className = name; }
-
- // set/get the vendor name
- const wxString& GetVendorName() const { return m_vendorName; }
- void SetVendorName(const wxString& name) { m_vendorName = name; }
-
-
- // cmd line parsing stuff
- // ----------------------
-
- // all of these methods may be overridden in the derived class to
- // customize the command line parsing (by default only a few standard
- // options are handled)
- //
- // you also need to call wxApp::OnInit() from YourApp::OnInit() for all
- // this to work
-
-#if wxUSE_CMDLINE_PARSER
- // this one is called from OnInit() to add all supported options
- // to the given parser (don't forget to call the base class version if you
- // override it!)
- virtual void OnInitCmdLine(wxCmdLineParser& parser);
-
- // called after successfully parsing the command line, return true
- // to continue and false to exit (don't forget to call the base class
- // version if you override it!)
- virtual bool OnCmdLineParsed(wxCmdLineParser& parser);
-
- // called if "--help" option was specified, return true to continue
- // and false to exit
- virtual bool OnCmdLineHelp(wxCmdLineParser& parser);
-
- // called if incorrect command line options were given, return
- // false to abort and true to continue
- virtual bool OnCmdLineError(wxCmdLineParser& parser);
-#endif // wxUSE_CMDLINE_PARSER
-
-
- // miscellaneous customization functions
- // -------------------------------------
-
- // create the app traits object to which we delegate for everything which
- // either should be configurable by the user (then he can change the
- // default behaviour simply by overriding CreateTraits() and returning his
- // own traits object) or which is GUI/console dependent as then wxAppTraits
- // allows us to abstract the differences behind the common faade
- wxAppTraits *GetTraits();
-
- // the functions below shouldn't be used now that we have wxAppTraits
-#if WXWIN_COMPATIBILITY_2_4
-
-#if wxUSE_LOG
- // override this function to create default log target of arbitrary
- // user-defined class (default implementation creates a wxLogGui
- // object) -- this log object is used by default by all wxLogXXX()
- // functions.
- wxDEPRECATED( virtual wxLog *CreateLogTarget() );
-#endif // wxUSE_LOG
-
- // similar to CreateLogTarget() but for the global wxMessageOutput
- // object
- wxDEPRECATED( virtual wxMessageOutput *CreateMessageOutput() );
-
-#endif // WXWIN_COMPATIBILITY_2_4
-
-
- // event processing functions
- // --------------------------
-
- // this method allows to filter all the events processed by the program, so
- // you should try to return quickly from it to avoid slowing down the
- // program to the crawl
- //
- // return value should be -1 to continue with the normal event processing,
- // or TRUE or FALSE to stop further processing and pretend that the event
- // had been already processed or won't be processed at all, respectively
- virtual int FilterEvent(wxEvent& event);
-
-#if wxUSE_EXCEPTIONS
- // call the specified handler on the given object with the given event
- //
- // this method only exists to allow catching the exceptions thrown by any
- // event handler, it would lead to an extra (useless) virtual function call
- // if the exceptions were not used, so it doesn't even exist in that case
- virtual void HandleEvent(wxEvtHandler *handler,
- wxEventFunction func,
- wxEvent& event) const;
-
- // Called when an unhandled C++ exception occurs inside OnRun(): note that
- // the exception type is lost by now, so if you really want to handle the
- // exception you should override OnRun() and put a try/catch around
- // MainLoop() call there or use OnExceptionInMainLoop()
- virtual void OnUnhandledException() { }
-#endif // wxUSE_EXCEPTIONS
-
- // process all events in the wxPendingEvents list -- it is necessary to
- // call this function to process posted events. This happens during each
- // event loop iteration in GUI mode but if there is no main loop, it may be
- // also called directly.
- virtual void ProcessPendingEvents();
-
- // doesn't do anything in this class, just a hook for GUI wxApp
- virtual bool Yield(bool WXUNUSED(onlyIfNeeded) = false) { return true; }
-
- // make sure that idle events are sent again
- virtual void WakeUpIdle() { }
-
- // this is just a convenience: by providing its implementation here we
- // avoid #ifdefs in the code using it
- static bool IsMainLoopRunning() { return false; }
-
-
- // debugging support
- // -----------------
-
-#ifdef __WXDEBUG__
- // this function is called when an assert failure occurs, the base class
- // version does the normal processing (i.e. shows the usual assert failure
- // dialog box)
- //
- // the arguments are the location of the failed assert (func may be empty
- // if the compiler doesn't support C99 __FUNCTION__), the text of the
- // assert itself and the user-specified message
- virtual void OnAssertFailure(const wxChar *file,
- int line,
- const wxChar *func,
- const wxChar *cond,
- const wxChar *msg);
-
- // old version of the function without func parameter, for compatibility
- // only, override OnAssertFailure() in the new code
- virtual void OnAssert(const wxChar *file,
- int line,
- const wxChar *cond,
- const wxChar *msg);
-#endif // __WXDEBUG__
-
- // check that the wxBuildOptions object (constructed in the application
- // itself, usually the one from IMPLEMENT_APP() macro) matches the build
- // options of the library and abort if it doesn't
- static bool CheckBuildOptions(const char *optionsSignature,
- const char *componentName);
-#if WXWIN_COMPATIBILITY_2_4
- wxDEPRECATED( static bool CheckBuildOptions(const wxBuildOptions& buildOptions) );
-#endif
-
- // implementation only from now on
- // -------------------------------
-
- // helpers for dynamic wxApp construction
- static void SetInitializerFunction(wxAppInitializerFunction fn)
- { ms_appInitFn = fn; }
- static wxAppInitializerFunction GetInitializerFunction()
- { return ms_appInitFn; }
-
- // accessors for ms_appInstance field (external code might wish to modify
- // it, this is why we provide a setter here as well, but you should really
- // know what you're doing if you call it), wxTheApp is usually used instead
- // of GetInstance()
- static wxAppConsole *GetInstance() { return ms_appInstance; }
- static void SetInstance(wxAppConsole *app) { ms_appInstance = app; }
-
-
- // command line arguments (public for backwards compatibility)
- int argc;
- wxChar **argv;
-
-protected:
- // the function which creates the traits object when GetTraits() needs it
- // for the first time
- virtual wxAppTraits *CreateTraits();
-
-
- // function used for dynamic wxApp creation
- static wxAppInitializerFunction ms_appInitFn;
-
- // the one and only global application object
- static wxAppConsole *ms_appInstance;
-
-
- // application info (must be set from the user code)
- wxString m_vendorName, // vendor name (ACME Inc)
- m_appName, // app name
- m_className; // class name
-
- // the class defining the application behaviour, NULL initially and created
- // by GetTraits() when first needed
- wxAppTraits *m_traits;
-
-
- // the application object is a singleton anyhow, there is no sense in
- // copying it
- DECLARE_NO_COPY_CLASS(wxAppConsole)
-};
-
-// ----------------------------------------------------------------------------
-// wxAppBase: the common part of wxApp implementations for all platforms
-// ----------------------------------------------------------------------------
-
-#if wxUSE_GUI
-
-class WXDLLIMPEXP_CORE wxAppBase : public wxAppConsole
-{
-public:
- wxAppBase();
- virtual ~wxAppBase();
-
- // the virtual functions which may/must be overridden in the derived class
- // -----------------------------------------------------------------------
-
- // very first initialization function
- //
- // Override: very rarely
- virtual bool Initialize(int& argc, wxChar **argv);
-
- // a platform-dependent version of OnInit(): the code here is likely to
- // depend on the toolkit. default version does nothing.
- //
- // Override: rarely.
- virtual bool OnInitGui();
-
- // called to start program execution - the default version just enters
- // the main GUI loop in which events are received and processed until
- // the last window is not deleted (if GetExitOnFrameDelete) or
- // ExitMainLoop() is called. In console mode programs, the execution
- // of the program really starts here
- //
- // Override: rarely in GUI applications, always in console ones.
- virtual int OnRun();
-
- // a matching function for OnInit()
- virtual int OnExit();
-
- // very last clean up function
- //
- // Override: very rarely
- virtual void CleanUp();
-
-
- // the worker functions - usually not used directly by the user code
- // -----------------------------------------------------------------
-
- // return true if we're running main loop, i.e. if the events can
- // (already) be dispatched
- static bool IsMainLoopRunning()
- {
- wxAppBase *app = wx_static_cast(wxAppBase *, GetInstance());
- return app && app->m_mainLoop != NULL;
- }
-
- // execute the main GUI loop, the function returns when the loop ends
- virtual int MainLoop();
-
- // exit the main loop thus terminating the application
- virtual void Exit();
-
- // exit the main GUI loop during the next iteration (i.e. it does not
- // stop the program immediately!)
- virtual void ExitMainLoop();
-
- // returns true if there are unprocessed events in the event queue
- virtual bool Pending();
-
- // process the first event in the event queue (blocks until an event
- // appears if there are none currently, use Pending() if this is not
- // wanted), returns false if the event loop should stop and true
- // otherwise
- virtual bool Dispatch();
-
- // process all currently pending events right now
- //
- // it is an error to call Yield() recursively unless the value of
- // onlyIfNeeded is true
- //
- // WARNING: this function is dangerous as it can lead to unexpected
- // reentrancies (i.e. when called from an event handler it
- // may result in calling the same event handler again), use
- // with _extreme_ care or, better, don't use at all!
- virtual bool Yield(bool onlyIfNeeded = false) = 0;
-
- // this virtual function is called in the GUI mode when the application
- // becomes idle and normally just sends wxIdleEvent to all interested
- // parties
- //
- // it should return true if more idle events are needed, false if not
- virtual bool ProcessIdle();
-
- // Send idle event to window and all subwindows
- // Returns true if more idle time is requested.
- virtual bool SendIdleEvents(wxWindow* win, wxIdleEvent& event);
-
-
-#if wxUSE_EXCEPTIONS
- // Function called if an uncaught exception is caught inside the main
- // event loop: it may return true to continue running the event loop or
- // false to stop it (in the latter case it may rethrow the exception as
- // well)
- virtual bool OnExceptionInMainLoop();
-#endif // wxUSE_EXCEPTIONS
-
-
- // top level window functions
- // --------------------------
-
- // return true if our app has focus
- virtual bool IsActive() const { return m_isActive; }
-
- // set the "main" top level window
- void SetTopWindow(wxWindow *win) { m_topWindow = win; }
-
- // return the "main" top level window (if it hadn't been set previously
- // with SetTopWindow(), will return just some top level window and, if
- // there are none, will return NULL)
- virtual wxWindow *GetTopWindow() const;
-
- // control the exit behaviour: by default, the program will exit the
- // main loop (and so, usually, terminate) when the last top-level
- // program window is deleted. Beware that if you disable this behaviour
- // (with SetExitOnFrameDelete(false)), you'll have to call
- // ExitMainLoop() explicitly from somewhere.
- void SetExitOnFrameDelete(bool flag)
- { m_exitOnFrameDelete = flag ? Yes : No; }
- bool GetExitOnFrameDelete() const
- { return m_exitOnFrameDelete == Yes; }
-
-
- // display mode, visual, printing mode, ...
- // ------------------------------------------------------------------------
-
- // Get display mode that is used use. This is only used in framebuffer
- // wxWin ports (such as wxMGL or wxDFB).
- virtual wxVideoMode GetDisplayMode() const;
- // Set display mode to use. This is only used in framebuffer wxWin
- // ports (such as wxMGL or wxDFB). This method should be called from
- // wxApp::OnInitGui
- virtual bool SetDisplayMode(const wxVideoMode& WXUNUSED(info)) { return true; }
-
- // set use of best visual flag (see below)
- void SetUseBestVisual( bool flag, bool forceTrueColour = false )
- { m_useBestVisual = flag; m_forceTrueColour = forceTrueColour; }
- bool GetUseBestVisual() const { return m_useBestVisual; }
-
- // set/get printing mode: see wxPRINT_XXX constants.
- //
- // default behaviour is the normal one for Unix: always use PostScript
- // printing.
- virtual void SetPrintMode(int WXUNUSED(mode)) { }
- int GetPrintMode() const { return wxPRINT_POSTSCRIPT; }
-
- // Return the layout direction for the current locale or wxLayout_Default
- // if it's unknown
- virtual wxLayoutDirection GetLayoutDirection() const;
-
-
- // command line parsing (GUI-specific)
- // ------------------------------------------------------------------------
-
-#if wxUSE_CMDLINE_PARSER
- virtual bool OnCmdLineParsed(wxCmdLineParser& parser);
- virtual void OnInitCmdLine(wxCmdLineParser& parser);
-#endif
-
- // miscellaneous other stuff
- // ------------------------------------------------------------------------
-
- // called by toolkit-specific code to set the app status: active (we have
- // focus) or not and also the last window which had focus before we were
- // deactivated
- virtual void SetActive(bool isActive, wxWindow *lastFocus);
-
-#if WXWIN_COMPATIBILITY_2_6
- // OBSOLETE: don't use, always returns true
- //
- // returns true if the program is successfully initialized
- wxDEPRECATED( bool Initialized() );
-#endif // WXWIN_COMPATIBILITY_2_6
-
- // perform standard OnIdle behaviour, ensure that this is always called
- void OnIdle(wxIdleEvent& event);
-
-
-protected:
- // delete all objects in wxPendingDelete list
- void DeletePendingObjects();
-
- // override base class method to use GUI traits
- virtual wxAppTraits *CreateTraits();
-
-
- // the main event loop of the application (may be NULL if the loop hasn't
- // been started yet or has already terminated)
- wxEventLoop *m_mainLoop;
-
- // the main top level window (may be NULL)
- wxWindow *m_topWindow;
-
- // if Yes, exit the main loop when the last top level window is deleted, if
- // No don't do it and if Later -- only do it once we reach our OnRun()
- //
- // the explanation for using this strange scheme is given in appcmn.cpp
- enum
- {
- Later = -1,
- No,
- Yes
- } m_exitOnFrameDelete;
-
- // true if the app wants to use the best visual on systems where
- // more than one are available (Sun, SGI, XFree86 4.0 ?)
- bool m_useBestVisual;
- // force TrueColour just in case "best" isn't TrueColour
- bool m_forceTrueColour;
-
- // does any of our windows have focus?
- bool m_isActive;
-
-
- DECLARE_NO_COPY_CLASS(wxAppBase)
-};
-
-#if WXWIN_COMPATIBILITY_2_6
- inline bool wxAppBase::Initialized() { return true; }
-#endif // WXWIN_COMPATIBILITY_2_6
-
-#endif // wxUSE_GUI
-
-// ----------------------------------------------------------------------------
-// now include the declaration of the real class
-// ----------------------------------------------------------------------------
-
-#if wxUSE_GUI
- #if defined(__WXPALMOS__)
- #include "wx/palmos/app.h"
- #elif defined(__WXMSW__)
- #include "wx/msw/app.h"
- #elif defined(__WXMOTIF__)
- #include "wx/motif/app.h"
- #elif defined(__WXMGL__)
- #include "wx/mgl/app.h"
- #elif defined(__WXDFB__)
- #include "wx/dfb/app.h"
- #elif defined(__WXGTK20__)
- #include "wx/gtk/app.h"
- #elif defined(__WXGTK__)
- #include "wx/gtk1/app.h"
- #elif defined(__WXX11__)
- #include "wx/x11/app.h"
- #elif defined(__WXMAC__)
- #include "wx/mac/app.h"
- #elif defined(__WXCOCOA__)
- #include "wx/cocoa/app.h"
- #elif defined(__WXPM__)
- #include "wx/os2/app.h"
- #endif
-#else // !GUI
- // allow using just wxApp (instead of wxAppConsole) in console programs
- typedef wxAppConsole wxApp;
-#endif // GUI/!GUI
-
-// ----------------------------------------------------------------------------
-// the global data
-// ----------------------------------------------------------------------------
-
-// for compatibility, we define this macro to access the global application
-// object of type wxApp
-//
-// note that instead of using of wxTheApp in application code you should
-// consider using DECLARE_APP() after which you may call wxGetApp() which will
-// return the object of the correct type (i.e. MyApp and not wxApp)
-//
-// the cast is safe as in GUI build we only use wxApp, not wxAppConsole, and in
-// console mode it does nothing at all
-#define wxTheApp wx_static_cast(wxApp*, wxApp::GetInstance())
-
-// ----------------------------------------------------------------------------
-// global functions
-// ----------------------------------------------------------------------------
-
-// event loop related functions only work in GUI programs
-// ------------------------------------------------------
-
-// Force an exit from main loop
-extern void WXDLLIMPEXP_BASE wxExit();
-
-// avoid redeclaring this function here if it had been already declated by
-// wx/utils.h, this results in warnings from g++ with -Wredundant-decls
-#ifndef wx_YIELD_DECLARED
-#define wx_YIELD_DECLARED
-
-// Yield to other apps/messages
-extern bool WXDLLIMPEXP_BASE wxYield();
-
-#endif // wx_YIELD_DECLARED
-
-// Yield to other apps/messages
-extern void WXDLLIMPEXP_BASE wxWakeUpIdle();
-
-// ----------------------------------------------------------------------------
-// macros for dynamic creation of the application object
-// ----------------------------------------------------------------------------
-
-// Having a global instance of this class allows wxApp to be aware of the app
-// creator function. wxApp can then call this function to create a new app
-// object. Convoluted, but necessary.
-
-class WXDLLIMPEXP_BASE wxAppInitializer
-{
-public:
- wxAppInitializer(wxAppInitializerFunction fn)
- { wxApp::SetInitializerFunction(fn); }
-};
-
-// the code below defines a IMPLEMENT_WXWIN_MAIN macro which you can use if
-// your compiler really, really wants main() to be in your main program (e.g.
-// hello.cpp). Now IMPLEMENT_APP should add this code if required.
-
-#define IMPLEMENT_WXWIN_MAIN_CONSOLE \
- int main(int argc, char **argv) { return wxEntry(argc, argv); }
-
-// port-specific header could have defined it already in some special way
-#ifndef IMPLEMENT_WXWIN_MAIN
- #define IMPLEMENT_WXWIN_MAIN IMPLEMENT_WXWIN_MAIN_CONSOLE
-#endif // defined(IMPLEMENT_WXWIN_MAIN)
-
-#ifdef __WXUNIVERSAL__
- #include "wx/univ/theme.h"
-
- #ifdef wxUNIV_DEFAULT_THEME
- #define IMPLEMENT_WX_THEME_SUPPORT \
- WX_USE_THEME(wxUNIV_DEFAULT_THEME);
- #else
- #define IMPLEMENT_WX_THEME_SUPPORT
- #endif
-#else
- #define IMPLEMENT_WX_THEME_SUPPORT
-#endif
-
-// Use this macro if you want to define your own main() or WinMain() function
-// and call wxEntry() from there.
-#define IMPLEMENT_APP_NO_MAIN(appname) \
- wxAppConsole *wxCreateApp() \
- { \
- wxAppConsole::CheckBuildOptions(WX_BUILD_OPTIONS_SIGNATURE, \
- "your program"); \
- return new appname; \
- } \
- wxAppInitializer \
- wxTheAppInitializer((wxAppInitializerFunction) wxCreateApp); \
- DECLARE_APP(appname) \
- appname& wxGetApp() { return *wx_static_cast(appname*, wxApp::GetInstance()); }
-
-// Same as IMPLEMENT_APP() normally but doesn't include themes support in
-// wxUniversal builds
-#define IMPLEMENT_APP_NO_THEMES(appname) \
- IMPLEMENT_APP_NO_MAIN(appname) \
- IMPLEMENT_WXWIN_MAIN
-
-// Use this macro exactly once, the argument is the name of the wxApp-derived
-// class which is the class of your application.
-#define IMPLEMENT_APP(appname) \
- IMPLEMENT_APP_NO_THEMES(appname) \
- IMPLEMENT_WX_THEME_SUPPORT
-
-// Same as IMPLEMENT_APP(), but for console applications.
-#define IMPLEMENT_APP_CONSOLE(appname) \
- IMPLEMENT_APP_NO_MAIN(appname) \
- IMPLEMENT_WXWIN_MAIN_CONSOLE
-
-// this macro can be used multiple times and just allows you to use wxGetApp()
-// function
-#define DECLARE_APP(appname) extern appname& wxGetApp();
-
-
-// declare the stuff defined by IMPLEMENT_APP() macro, it's not really needed
-// anywhere else but at the very least it suppresses icc warnings about
-// defining extern symbols without prior declaration, and it shouldn't do any
-// harm
-extern wxAppConsole *wxCreateApp();
-extern wxAppInitializer wxTheAppInitializer;
-
-#endif // _WX_APP_H_BASE_
diff --git a/Externals/wxWidgets/include/wx/apptrait.h b/Externals/wxWidgets/include/wx/apptrait.h
deleted file mode 100644
index 3bb91f520a..0000000000
--- a/Externals/wxWidgets/include/wx/apptrait.h
+++ /dev/null
@@ -1,272 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Name: wx/apptrait.h
-// Purpose: declaration of wxAppTraits and derived classes
-// Author: Vadim Zeitlin
-// Modified by:
-// Created: 19.06.2003
-// RCS-ID: $Id: apptrait.h 49804 2007-11-10 01:09:42Z VZ $
-// Copyright: (c) 2003 Vadim Zeitlin
-// Licence: wxWindows licence
-///////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_APPTRAIT_H_
-#define _WX_APPTRAIT_H_
-
-#include "wx/string.h"
-#include "wx/platinfo.h"
-
-class WXDLLIMPEXP_FWD_BASE wxObject;
-class WXDLLIMPEXP_FWD_BASE wxAppTraits;
-#if wxUSE_FONTMAP
- class WXDLLIMPEXP_FWD_CORE wxFontMapper;
-#endif // wxUSE_FONTMAP
-class WXDLLIMPEXP_FWD_BASE wxLog;
-class WXDLLIMPEXP_FWD_BASE wxMessageOutput;
-class WXDLLIMPEXP_FWD_CORE wxRendererNative;
-class WXDLLIMPEXP_FWD_BASE wxString;
-
-class GSocketGUIFunctionsTable;
-
-
-// ----------------------------------------------------------------------------
-// wxAppTraits: this class defines various configurable aspects of wxApp
-// ----------------------------------------------------------------------------
-
-class WXDLLIMPEXP_FWD_BASE wxStandardPathsBase;
-
-class WXDLLIMPEXP_BASE wxAppTraitsBase
-{
-public:
- // needed since this class declares virtual members
- virtual ~wxAppTraitsBase() { }
-
- // hooks for creating the global objects, may be overridden by the user
- // ------------------------------------------------------------------------
-
-#if wxUSE_LOG
- // create the default log target
- virtual wxLog *CreateLogTarget() = 0;
-#endif // wxUSE_LOG
-
- // create the global object used for printing out messages
- virtual wxMessageOutput *CreateMessageOutput() = 0;
-
-#if wxUSE_FONTMAP
- // create the global font mapper object used for encodings/charset mapping
- virtual wxFontMapper *CreateFontMapper() = 0;
-#endif // wxUSE_FONTMAP
-
- // get the renderer to use for drawing the generic controls (return value
- // may be NULL in which case the default renderer for the current platform
- // is used); this is used in GUI only and always returns NULL in console
- //
- // NB: returned pointer will be deleted by the caller
- virtual wxRendererNative *CreateRenderer() = 0;
-
-#if wxUSE_STDPATHS
- // wxStandardPaths object is normally the same for wxBase and wxGUI
- // except in the case of wxMac and wxCocoa
- virtual wxStandardPathsBase& GetStandardPaths();
-#endif // wxUSE_STDPATHS
-
- // functions abstracting differences between GUI and console modes
- // ------------------------------------------------------------------------
-
-#ifdef __WXDEBUG__
- // show the assert dialog with the specified message in GUI or just print
- // the string to stderr in console mode
- //
- // base class version has an implementation (in spite of being pure
- // virtual) in base/appbase.cpp which can be called as last resort.
- //
- // return true to suppress subsequent asserts, false to continue as before
- virtual bool ShowAssertDialog(const wxString& msg) = 0;
-#endif // __WXDEBUG__
-
- // return true if fprintf(stderr) goes somewhere, false otherwise
- virtual bool HasStderr() = 0;
-
- // managing "pending delete" list: in GUI mode we can't immediately delete
- // some objects because there may be unprocessed events for them and so we
- // only do it during the next idle loop iteration while this is, of course,
- // unnecessary in wxBase, so we have a few functions to abstract these
- // operations
-
- // add the object to the pending delete list in GUI, delete it immediately
- // in wxBase
- virtual void ScheduleForDestroy(wxObject *object) = 0;
-
- // remove this object from the pending delete list in GUI, do nothing in
- // wxBase
- virtual void RemoveFromPendingDelete(wxObject *object) = 0;
-
-#if wxUSE_SOCKETS
- // return table of GUI callbacks for GSocket code or NULL in wxBase. This
- // is needed because networking classes are in their own library and so
- // they can't directly call GUI functions (the same net library can be
- // used in both GUI and base apps). To complicate it further, GUI library
- // ("wxCore") doesn't depend on networking library and so only a functions
- // table can be passed around
- virtual GSocketGUIFunctionsTable* GetSocketGUIFunctionsTable() = 0;
-#endif
-
- // return information about the (native) toolkit currently used and its
- // runtime (not compile-time) version.
- // returns wxPORT_BASE for console applications and one of the remaining
- // wxPORT_* values for GUI applications.
- virtual wxPortId GetToolkitVersion(int *majVer, int *minVer) const = 0;
-
- // return true if the port is using wxUniversal for the GUI, false if not
- virtual bool IsUsingUniversalWidgets() const = 0;
-
- // return the name of the Desktop Environment such as
- // "KDE" or "GNOME". May return an empty string.
- virtual wxString GetDesktopEnvironment() const { return wxEmptyString; }
-
-protected:
-#if wxUSE_STACKWALKER && defined( __WXDEBUG__ )
- // utility function: returns the stack frame as a plain wxString
- virtual wxString GetAssertStackTrace();
-#endif
-};
-
-// ----------------------------------------------------------------------------
-// include the platform-specific version of the class
-// ----------------------------------------------------------------------------
-
-// NB: test for __UNIX__ before __WXMAC__ as under Darwin we want to use the
-// Unix code (and otherwise __UNIX__ wouldn't be defined)
-// ABX: check __WIN32__ instead of __WXMSW__ for the same MSWBase in any Win32 port
-#if defined(__WXPALMOS__)
- #include "wx/palmos/apptbase.h"
-#elif defined(__WIN32__)
- #include "wx/msw/apptbase.h"
-#elif defined(__UNIX__) && !defined(__EMX__)
- #include "wx/unix/apptbase.h"
-#elif defined(__WXMAC__)
- #include "wx/mac/apptbase.h"
-#elif defined(__OS2__)
- #include "wx/os2/apptbase.h"
-#else // no platform-specific methods to add to wxAppTraits
- // wxAppTraits must be a class because it was forward declared as class
- class WXDLLIMPEXP_BASE wxAppTraits : public wxAppTraitsBase
- {
- };
-#endif // platform
-
-// ============================================================================
-// standard traits for console and GUI applications
-// ============================================================================
-
-// ----------------------------------------------------------------------------
-// wxConsoleAppTraitsBase: wxAppTraits implementation for the console apps
-// ----------------------------------------------------------------------------
-
-class WXDLLIMPEXP_BASE wxConsoleAppTraitsBase : public wxAppTraits
-{
-public:
-#if wxUSE_LOG
- virtual wxLog *CreateLogTarget();
-#endif // wxUSE_LOG
- virtual wxMessageOutput *CreateMessageOutput();
-#if wxUSE_FONTMAP
- virtual wxFontMapper *CreateFontMapper();
-#endif // wxUSE_FONTMAP
- virtual wxRendererNative *CreateRenderer();
-#if wxUSE_SOCKETS
- virtual GSocketGUIFunctionsTable* GetSocketGUIFunctionsTable();
-#endif
-
-#ifdef __WXDEBUG__
- virtual bool ShowAssertDialog(const wxString& msg);
-#endif // __WXDEBUG__
- virtual bool HasStderr();
-
- virtual void ScheduleForDestroy(wxObject *object);
- virtual void RemoveFromPendingDelete(wxObject *object);
-
- // the GetToolkitVersion for console application is always the same
- virtual wxPortId GetToolkitVersion(int *verMaj, int *verMin) const
- {
- // no toolkits (wxBase is for console applications without GUI support)
- // NB: zero means "no toolkit", -1 means "not initialized yet"
- // so we must use zero here!
- if (verMaj) *verMaj = 0;
- if (verMin) *verMin = 0;
- return wxPORT_BASE;
- }
-
- virtual bool IsUsingUniversalWidgets() const { return false; }
-};
-
-// ----------------------------------------------------------------------------
-// wxGUIAppTraitsBase: wxAppTraits implementation for the GUI apps
-// ----------------------------------------------------------------------------
-
-#if wxUSE_GUI
-
-class WXDLLEXPORT wxGUIAppTraitsBase : public wxAppTraits
-{
-public:
-#if wxUSE_LOG
- virtual wxLog *CreateLogTarget();
-#endif // wxUSE_LOG
- virtual wxMessageOutput *CreateMessageOutput();
-#if wxUSE_FONTMAP
- virtual wxFontMapper *CreateFontMapper();
-#endif // wxUSE_FONTMAP
- virtual wxRendererNative *CreateRenderer();
-#if wxUSE_SOCKETS
- virtual GSocketGUIFunctionsTable* GetSocketGUIFunctionsTable();
-#endif
-
-#ifdef __WXDEBUG__
- virtual bool ShowAssertDialog(const wxString& msg);
-#endif // __WXDEBUG__
- virtual bool HasStderr();
-
- virtual void ScheduleForDestroy(wxObject *object);
- virtual void RemoveFromPendingDelete(wxObject *object);
-
- virtual bool IsUsingUniversalWidgets() const
- {
- #ifdef __WXUNIVERSAL__
- return true;
- #else
- return false;
- #endif
- }
-};
-
-#endif // wxUSE_GUI
-
-// ----------------------------------------------------------------------------
-// include the platform-specific version of the classes above
-// ----------------------------------------------------------------------------
-
-// ABX: check __WIN32__ instead of __WXMSW__ for the same MSWBase in any Win32 port
-#if defined(__WXPALMOS__)
- #include "wx/palmos/apptrait.h"
-#elif defined(__WIN32__)
- #include "wx/msw/apptrait.h"
-#elif defined(__OS2__)
- #include "wx/os2/apptrait.h"
-#elif defined(__UNIX__)
- #include "wx/unix/apptrait.h"
-#elif defined(__WXMAC__)
- #include "wx/mac/apptrait.h"
-#elif defined(__DOS__)
- #include "wx/msdos/apptrait.h"
-#else
- #if wxUSE_GUI
- class wxGUIAppTraits : public wxGUIAppTraitsBase
- {
- };
- #endif // wxUSE_GUI
- class wxConsoleAppTraits: public wxConsoleAppTraitsBase
- {
- };
-#endif // platform
-
-#endif // _WX_APPTRAIT_H_
-
diff --git a/Externals/wxWidgets/include/wx/archive.h b/Externals/wxWidgets/include/wx/archive.h
deleted file mode 100644
index 43b9ec0256..0000000000
--- a/Externals/wxWidgets/include/wx/archive.h
+++ /dev/null
@@ -1,381 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-// Name: wx/archive.h
-// Purpose: Streams for archive formats
-// Author: Mike Wetherell
-// RCS-ID: $Id: archive.h 43445 2006-11-16 14:30:20Z MW $
-// Copyright: (c) 2004 Mike Wetherell
-// Licence: wxWindows licence
-/////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_ARCHIVE_H__
-#define _WX_ARCHIVE_H__
-
-#include "wx/defs.h"
-
-#if wxUSE_STREAMS && wxUSE_ARCHIVE_STREAMS
-
-#include "wx/stream.h"
-#include "wx/filename.h"
-
-
-/////////////////////////////////////////////////////////////////////////////
-// wxArchiveNotifier
-
-class WXDLLIMPEXP_BASE wxArchiveNotifier
-{
-public:
- virtual ~wxArchiveNotifier() { }
-
- virtual void OnEntryUpdated(class wxArchiveEntry& entry) = 0;
-};
-
-
-/////////////////////////////////////////////////////////////////////////////
-// wxArchiveEntry
-//
-// Holds an entry's meta data, such as filename and timestamp.
-
-class WXDLLIMPEXP_BASE wxArchiveEntry : public wxObject
-{
-public:
- virtual ~wxArchiveEntry() { }
-
- virtual wxDateTime GetDateTime() const = 0;
- virtual wxFileOffset GetSize() const = 0;
- virtual wxFileOffset GetOffset() const = 0;
- virtual bool IsDir() const = 0;
- virtual bool IsReadOnly() const = 0;
- virtual wxString GetInternalName() const = 0;
- virtual wxPathFormat GetInternalFormat() const = 0;
- virtual wxString GetName(wxPathFormat format = wxPATH_NATIVE) const = 0;
-
- virtual void SetDateTime(const wxDateTime& dt) = 0;
- virtual void SetSize(wxFileOffset size) = 0;
- virtual void SetIsDir(bool isDir = true) = 0;
- virtual void SetIsReadOnly(bool isReadOnly = true) = 0;
- virtual void SetName(const wxString& name,
- wxPathFormat format = wxPATH_NATIVE) = 0;
-
- wxArchiveEntry *Clone() const { return DoClone(); }
-
- void SetNotifier(wxArchiveNotifier& notifier);
- virtual void UnsetNotifier() { m_notifier = NULL; }
-
-protected:
- wxArchiveEntry() : m_notifier(NULL) { }
- wxArchiveEntry(const wxArchiveEntry& e) : wxObject(e), m_notifier(NULL) { }
-
- virtual void SetOffset(wxFileOffset offset) = 0;
- virtual wxArchiveEntry* DoClone() const = 0;
-
- wxArchiveNotifier *GetNotifier() const { return m_notifier; }
- wxArchiveEntry& operator=(const wxArchiveEntry& entry);
-
-private:
- wxArchiveNotifier *m_notifier;
-
- DECLARE_ABSTRACT_CLASS(wxArchiveEntry)
-};
-
-
-/////////////////////////////////////////////////////////////////////////////
-// wxArchiveInputStream
-//
-// GetNextEntry() returns an wxArchiveEntry object containing the meta-data
-// for the next entry in the archive (and gives away ownership). Reading from
-// the wxArchiveInputStream then returns the entry's data. Eof() becomes true
-// after an attempt has been made to read past the end of the entry's data.
-//
-// When there are no more entries, GetNextEntry() returns NULL and sets Eof().
-
-class WXDLLIMPEXP_BASE wxArchiveInputStream : public wxFilterInputStream
-{
-public:
- typedef wxArchiveEntry entry_type;
-
- virtual ~wxArchiveInputStream() { }
-
- virtual bool OpenEntry(wxArchiveEntry& entry) = 0;
- virtual bool CloseEntry() = 0;
-
- wxArchiveEntry *GetNextEntry() { return DoGetNextEntry(); }
-
- virtual char Peek() { return wxInputStream::Peek(); }
-
-protected:
- wxArchiveInputStream(wxInputStream& stream, wxMBConv& conv);
- wxArchiveInputStream(wxInputStream *stream, wxMBConv& conv);
-
- virtual wxArchiveEntry *DoGetNextEntry() = 0;
-
- wxMBConv& GetConv() const { return m_conv; }
-
-private:
- wxMBConv& m_conv;
-};
-
-
-/////////////////////////////////////////////////////////////////////////////
-// wxArchiveOutputStream
-//
-// PutNextEntry is used to create a new entry in the output archive, then
-// the entry's data is written to the wxArchiveOutputStream.
-//
-// Only one entry can be open for output at a time; another call to
-// PutNextEntry closes the current entry and begins the next.
-//
-// The overload 'bool PutNextEntry(wxArchiveEntry *entry)' takes ownership
-// of the entry object.
-
-class WXDLLIMPEXP_BASE wxArchiveOutputStream : public wxFilterOutputStream
-{
-public:
- virtual ~wxArchiveOutputStream() { }
-
- virtual bool PutNextEntry(wxArchiveEntry *entry) = 0;
-
- virtual bool PutNextEntry(const wxString& name,
- const wxDateTime& dt = wxDateTime::Now(),
- wxFileOffset size = wxInvalidOffset) = 0;
-
- virtual bool PutNextDirEntry(const wxString& name,
- const wxDateTime& dt = wxDateTime::Now()) = 0;
-
- virtual bool CopyEntry(wxArchiveEntry *entry,
- wxArchiveInputStream& stream) = 0;
-
- virtual bool CopyArchiveMetaData(wxArchiveInputStream& stream) = 0;
-
- virtual bool CloseEntry() = 0;
-
-protected:
- wxArchiveOutputStream(wxOutputStream& stream, wxMBConv& conv);
- wxArchiveOutputStream(wxOutputStream *stream, wxMBConv& conv);
-
- wxMBConv& GetConv() const { return m_conv; }
-
-private:
- wxMBConv& m_conv;
-};
-
-
-/////////////////////////////////////////////////////////////////////////////
-// wxArchiveIterator
-//
-// An input iterator that can be used to transfer an archive's catalog to
-// a container.
-
-#if wxUSE_STL || defined WX_TEST_ARCHIVE_ITERATOR
-#include
-#include
-
-template inline
-void _wxSetArchiveIteratorValue(
- X& val, Y entry, void *WXUNUSED(d))
-{
- val = X(entry);
-}
-template inline
-void _wxSetArchiveIteratorValue(
- std::pair& val, Z entry, Z WXUNUSED(d))
-{
- val = std::make_pair(X(entry->GetInternalName()), Y(entry));
-}
-
-#if defined _MSC_VER && _MSC_VER < 1300
-template
-#else
-template
-#endif
-class wxArchiveIterator
-{
-public:
- typedef std::input_iterator_tag iterator_category;
- typedef T value_type;
- typedef ptrdiff_t difference_type;
- typedef T* pointer;
- typedef T& reference;
-
- wxArchiveIterator() : m_rep(NULL) { }
-
- wxArchiveIterator(Arc& arc) {
- typename Arc::entry_type* entry = arc.GetNextEntry();
- m_rep = entry ? new Rep(arc, entry) : NULL;
- }
-
- wxArchiveIterator(const wxArchiveIterator& it) : m_rep(it.m_rep) {
- if (m_rep)
- m_rep->AddRef();
- }
-
- ~wxArchiveIterator() {
- if (m_rep)
- m_rep->UnRef();
- }
-
- const T& operator *() const {
- return m_rep->GetValue();
- }
-
- const T* operator ->() const {
- return &**this;
- }
-
- wxArchiveIterator& operator =(const wxArchiveIterator& it) {
- if (it.m_rep)
- it.m_rep.AddRef();
- if (m_rep)
- m_rep.UnRef();
- m_rep = it.m_rep;
- return *this;
- }
-
- wxArchiveIterator& operator ++() {
- m_rep = m_rep->Next();
- return *this;
- }
-
- wxArchiveIterator operator ++(int) {
- wxArchiveIterator it(*this);
- ++(*this);
- return it;
- }
-
- bool operator ==(const wxArchiveIterator& j) const {
- return m_rep == j.m_rep;
- }
-
- bool operator !=(const wxArchiveIterator& j) const {
- return !(*this == j);
- }
-
-private:
- class Rep {
- Arc& m_arc;
- typename Arc::entry_type* m_entry;
- T m_value;
- int m_ref;
-
- public:
- Rep(Arc& arc, typename Arc::entry_type* entry)
- : m_arc(arc), m_entry(entry), m_value(), m_ref(1) { }
- ~Rep()
- { delete m_entry; }
-
- void AddRef() {
- m_ref++;
- }
-
- void UnRef() {
- if (--m_ref == 0)
- delete this;
- }
-
- Rep *Next() {
- typename Arc::entry_type* entry = m_arc.GetNextEntry();
- if (!entry) {
- UnRef();
- return NULL;
- }
- if (m_ref > 1) {
- m_ref--;
- return new Rep(m_arc, entry);
- }
- delete m_entry;
- m_entry = entry;
- m_value = T();
- return this;
- }
-
- const T& GetValue() {
- if (m_entry) {
- _wxSetArchiveIteratorValue(m_value, m_entry, m_entry);
- m_entry = NULL;
- }
- return m_value;
- }
- } *m_rep;
-};
-
-typedef wxArchiveIterator wxArchiveIter;
-typedef wxArchiveIterator > wxArchivePairIter;
-
-#endif // wxUSE_STL || defined WX_TEST_ARCHIVE_ITERATOR
-
-
-/////////////////////////////////////////////////////////////////////////////
-// wxArchiveClassFactory
-//
-// A wxArchiveClassFactory instance for a particular archive type allows
-// the creation of the other classes that may be needed.
-
-void WXDLLIMPEXP_BASE wxUseArchiveClasses();
-
-class WXDLLIMPEXP_BASE wxArchiveClassFactory : public wxFilterClassFactoryBase
-{
-public:
- typedef wxArchiveEntry entry_type;
- typedef wxArchiveInputStream instream_type;
- typedef wxArchiveOutputStream outstream_type;
- typedef wxArchiveNotifier notifier_type;
-#if wxUSE_STL || defined WX_TEST_ARCHIVE_ITERATOR
- typedef wxArchiveIter iter_type;
- typedef wxArchivePairIter pairiter_type;
-#endif
-
- virtual ~wxArchiveClassFactory() { }
-
- wxArchiveEntry *NewEntry() const
- { return DoNewEntry(); }
- wxArchiveInputStream *NewStream(wxInputStream& stream) const
- { return DoNewStream(stream); }
- wxArchiveOutputStream *NewStream(wxOutputStream& stream) const
- { return DoNewStream(stream); }
- wxArchiveInputStream *NewStream(wxInputStream *stream) const
- { return DoNewStream(stream); }
- wxArchiveOutputStream *NewStream(wxOutputStream *stream) const
- { return DoNewStream(stream); }
-
- virtual wxString GetInternalName(
- const wxString& name,
- wxPathFormat format = wxPATH_NATIVE) const = 0;
-
- void SetConv(wxMBConv& conv) { m_pConv = &conv; }
- wxMBConv& GetConv() const
- { if (m_pConv) return *m_pConv; else return wxConvLocal; }
-
- static const wxArchiveClassFactory *Find(const wxChar *protocol,
- wxStreamProtocolType type
- = wxSTREAM_PROTOCOL);
-
- static const wxArchiveClassFactory *GetFirst();
- const wxArchiveClassFactory *GetNext() const { return m_next; }
-
- void PushFront() { Remove(); m_next = sm_first; sm_first = this; }
- void Remove();
-
-protected:
- // old compilers don't support covarient returns, so 'Do' methods are
- // used to simulate them
- virtual wxArchiveEntry *DoNewEntry() const = 0;
- virtual wxArchiveInputStream *DoNewStream(wxInputStream& stream) const = 0;
- virtual wxArchiveOutputStream *DoNewStream(wxOutputStream& stream) const = 0;
- virtual wxArchiveInputStream *DoNewStream(wxInputStream *stream) const = 0;
- virtual wxArchiveOutputStream *DoNewStream(wxOutputStream *stream) const = 0;
-
- wxArchiveClassFactory() : m_pConv(NULL), m_next(this) { }
- wxArchiveClassFactory& operator=(const wxArchiveClassFactory& WXUNUSED(f))
- { return *this; }
-
-private:
- wxMBConv *m_pConv;
- static wxArchiveClassFactory *sm_first;
- wxArchiveClassFactory *m_next;
-
- DECLARE_ABSTRACT_CLASS(wxArchiveClassFactory)
-};
-
-#endif // wxUSE_STREAMS && wxUSE_ARCHIVE_STREAMS
-
-#endif // _WX_ARCHIVE_H__
diff --git a/Externals/wxWidgets/include/wx/arrimpl.cpp b/Externals/wxWidgets/include/wx/arrimpl.cpp
deleted file mode 100644
index 33e25091b9..0000000000
--- a/Externals/wxWidgets/include/wx/arrimpl.cpp
+++ /dev/null
@@ -1,120 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Name: wx/arrimpl.cpp
-// Purpose: helper file for implementation of dynamic lists
-// Author: Vadim Zeitlin
-// Modified by:
-// Created: 16.10.97
-// RCS-ID: $Id: arrimpl.cpp 34241 2005-05-22 12:10:55Z JS $
-// Copyright: (c) 1997 Vadim Zeitlin
-// Licence: wxWindows license
-///////////////////////////////////////////////////////////////////////////////
-
-/*****************************************************************************
- * Purpose: implements methods of "template" class declared in *
- * DECLARE_OBJARRAY macro and which couldn't be implemented inline *
- * (because they need the full definition of type T in scope) *
- * *
- * Usage: 1) #include dynarray.h *
- * 2) WX_DECLARE_OBJARRAY *
- * 3) #include arrimpl.cpp *
- * 4) WX_DEFINE_OBJARRAY *
- *****************************************************************************/
-
-// needed to resolve the conflict between global T and macro parameter T
-
-#define _WX_ERROR_REMOVE2(x) wxT("bad index in ") wxT(#x) wxT("::RemoveAt()")
-
-// macro implements remaining (not inline) methods of template list
-// (it's private to this file)
-#undef _DEFINE_OBJARRAY
-#define _DEFINE_OBJARRAY(T, name) \
-name::~name() \
-{ \
- Empty(); \
-} \
- \
-void name::DoCopy(const name& src) \
-{ \
- for ( size_t ui = 0; ui < src.size(); ui++ ) \
- Add(src[ui]); \
-} \
- \
-name& name::operator=(const name& src) \
-{ \
- Empty(); \
- DoCopy(src); \
- \
- return *this; \
-} \
- \
-name::name(const name& src) : wxArrayPtrVoid() \
-{ \
- DoCopy(src); \
-} \
- \
-void name::DoEmpty() \
-{ \
- for ( size_t ui = 0; ui < size(); ui++ ) \
- delete (T*)base_array::operator[](ui); \
-} \
- \
-void name::RemoveAt(size_t uiIndex, size_t nRemove) \
-{ \
- wxCHECK_RET( uiIndex < size(), _WX_ERROR_REMOVE2(name) ); \
- \
- for (size_t i = 0; i < nRemove; i++ ) \
- delete (T*)base_array::operator[](uiIndex + i); \
- \
- base_array::erase(begin() + uiIndex, begin() + uiIndex + nRemove); \
-} \
- \
-void name::Add(const T& item, size_t nInsert) \
-{ \
- if (nInsert == 0) \
- return; \
- T* pItem = new T(item); \
- size_t nOldSize = size(); \
- if ( pItem != NULL ) \
- base_array::insert(end(), nInsert, pItem); \
- for (size_t i = 1; i < nInsert; i++) \
- base_array::operator[](nOldSize + i) = new T(item); \
-} \
- \
-void name::Insert(const T& item, size_t uiIndex, size_t nInsert) \
-{ \
- if (nInsert == 0) \
- return; \
- T* pItem = new T(item); \
- if ( pItem != NULL ) \
- base_array::insert(begin() + uiIndex, nInsert, pItem); \
- for (size_t i = 1; i < nInsert; i++) \
- base_array::operator[](uiIndex + i) = new T(item); \
-} \
- \
-int name::Index(const T& Item, bool bFromEnd) const \
-{ \
- if ( bFromEnd ) { \
- if ( size() > 0 ) { \
- size_t ui = size() - 1; \
- do { \
- if ( (T*)base_array::operator[](ui) == &Item ) \
- return wx_static_cast(int, ui); \
- ui--; \
- } \
- while ( ui != 0 ); \
- } \
- } \
- else { \
- for( size_t ui = 0; ui < size(); ui++ ) { \
- if( (T*)base_array::operator[](ui) == &Item ) \
- return wx_static_cast(int, ui); \
- } \
- } \
- \
- return wxNOT_FOUND; \
-}
-
-// redefine the macro so that now it will generate the class implementation
-// old value would provoke a compile-time error if this file is not included
-#undef WX_DEFINE_OBJARRAY
-#define WX_DEFINE_OBJARRAY(name) _DEFINE_OBJARRAY(_wxObjArray##name, name)
diff --git a/Externals/wxWidgets/include/wx/arrstr.h b/Externals/wxWidgets/include/wx/arrstr.h
deleted file mode 100644
index 0f1b908878..0000000000
--- a/Externals/wxWidgets/include/wx/arrstr.h
+++ /dev/null
@@ -1,377 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Name: include/wx/arrstr.h
-// Purpose: wxArrayString class
-// Author: Mattia Barbon and Vadim Zeitlin
-// Modified by:
-// Created: 07/07/03
-// RCS-ID: $Id: arrstr.h 56758 2008-11-13 22:32:21Z VS $
-// Copyright: (c) 2003 Vadim Zeitlin
-// Licence: wxWindows licence
-///////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_ARRSTR_H
-#define _WX_ARRSTR_H
-
-#include "wx/defs.h"
-#include "wx/string.h"
-
-WXDLLIMPEXP_BASE int wxCMPFUNC_CONV wxStringSortAscending(wxString*, wxString*);
-WXDLLIMPEXP_BASE int wxCMPFUNC_CONV wxStringSortDescending(wxString*, wxString*);
-
-#if wxUSE_STL
-
-#include "wx/dynarray.h"
-
-typedef int (wxCMPFUNC_CONV *CMPFUNCwxString)(wxString*, wxString*);
-typedef wxString _wxArraywxBaseArrayStringBase;
-_WX_DECLARE_BASEARRAY_2(_wxArraywxBaseArrayStringBase, wxBaseArrayStringBase,
- wxArray_SortFunction,
- class WXDLLIMPEXP_BASE);
-WX_DEFINE_USER_EXPORTED_TYPEARRAY(wxString, wxArrayStringBase,
- wxBaseArrayStringBase, WXDLLIMPEXP_BASE);
-_WX_DEFINE_SORTED_TYPEARRAY_2(wxString, wxSortedArrayStringBase,
- wxBaseArrayStringBase, = wxStringSortAscending,
- class WXDLLIMPEXP_BASE, CMPFUNCwxString);
-
-class WXDLLIMPEXP_BASE wxArrayString : public wxArrayStringBase
-{
-public:
- // type of function used by wxArrayString::Sort()
- typedef int (wxCMPFUNC_CONV *CompareFunction)(const wxString& first,
- const wxString& second);
-
- wxArrayString() { }
- wxArrayString(const wxArrayString& a) : wxArrayStringBase(a) { }
- wxArrayString(size_t sz, const wxChar** a);
- wxArrayString(size_t sz, const wxString* a);
-
- int Index(const wxChar* sz, bool bCase = true, bool bFromEnd = false) const;
-
- void Sort(bool reverseOrder = false);
- void Sort(CompareFunction function);
- void Sort(CMPFUNCwxString function) { wxArrayStringBase::Sort(function); }
-
- size_t Add(const wxString& string, size_t copies = 1)
- {
- wxArrayStringBase::Add(string, copies);
- return size() - copies;
- }
-};
-
-class WXDLLIMPEXP_BASE wxSortedArrayString : public wxSortedArrayStringBase
-{
-public:
- wxSortedArrayString() : wxSortedArrayStringBase(wxStringSortAscending)
- { }
- wxSortedArrayString(const wxSortedArrayString& array)
- : wxSortedArrayStringBase(array)
- { }
- wxSortedArrayString(const wxArrayString& src)
- : wxSortedArrayStringBase(wxStringSortAscending)
- {
- reserve(src.size());
-
- for ( size_t n = 0; n < src.size(); n++ )
- Add(src[n]);
- }
-
- int Index(const wxChar* sz, bool bCase = true, bool bFromEnd = false) const;
-};
-
-#else // if !wxUSE_STL
-
-// ----------------------------------------------------------------------------
-// The string array uses it's knowledge of internal structure of the wxString
-// class to optimize string storage. Normally, we would store pointers to
-// string, but as wxString is, in fact, itself a pointer (sizeof(wxString) is
-// sizeof(char *)) we store these pointers instead. The cast to "wxString *" is
-// really all we need to turn such pointer into a string!
-//
-// Of course, it can be called a dirty hack, but we use twice less memory and
-// this approach is also more speed efficient, so it's probably worth it.
-//
-// Usage notes: when a string is added/inserted, a new copy of it is created,
-// so the original string may be safely deleted. When a string is retrieved
-// from the array (operator[] or Item() method), a reference is returned.
-// ----------------------------------------------------------------------------
-
-class WXDLLIMPEXP_BASE wxArrayString
-{
-public:
- // type of function used by wxArrayString::Sort()
- typedef int (wxCMPFUNC_CONV *CompareFunction)(const wxString& first,
- const wxString& second);
- // type of function used by wxArrayString::Sort(), for compatibility with
- // wxArray
- typedef int (wxCMPFUNC_CONV *CompareFunction2)(wxString* first,
- wxString* second);
-
- // constructors and destructor
- // default ctor
- wxArrayString() { Init(false); }
- // if autoSort is true, the array is always sorted (in alphabetical order)
- //
- // NB: the reason for using int and not bool is that like this we can avoid
- // using this ctor for implicit conversions from "const char *" (which
- // we'd like to be implicitly converted to wxString instead!)
- //
- // of course, using explicit would be even better - if all compilers
- // supported it...
- wxArrayString(int autoSort) { Init(autoSort != 0); }
- // C string array ctor
- wxArrayString(size_t sz, const wxChar** a);
- // wxString string array ctor
- wxArrayString(size_t sz, const wxString* a);
- // copy ctor
- wxArrayString(const wxArrayString& array);
- // assignment operator
- wxArrayString& operator=(const wxArrayString& src);
- // not virtual, this class should not be derived from
- ~wxArrayString();
-
- // memory management
- // empties the list, but doesn't release memory
- void Empty();
- // empties the list and releases memory
- void Clear();
- // preallocates memory for given number of items
- void Alloc(size_t nCount);
- // minimzes the memory usage (by freeing all extra memory)
- void Shrink();
-
- // simple accessors
- // number of elements in the array
- size_t GetCount() const { return m_nCount; }
- // is it empty?
- bool IsEmpty() const { return m_nCount == 0; }
- // number of elements in the array (GetCount is preferred API)
- size_t Count() const { return m_nCount; }
-
- // items access (range checking is done in debug version)
- // get item at position uiIndex
- wxString& Item(size_t nIndex) const
- {
- wxASSERT_MSG( nIndex < m_nCount,
- _T("wxArrayString: index out of bounds") );
-
- return *(wxString *)&(m_pItems[nIndex]);
- }
-
- // same as Item()
- wxString& operator[](size_t nIndex) const { return Item(nIndex); }
- // get last item
- wxString& Last() const
- {
- wxASSERT_MSG( !IsEmpty(),
- _T("wxArrayString: index out of bounds") );
- return Item(Count() - 1);
- }
-
- // return a wxString[], useful for the controls which
- // take one in their ctor. You must delete[] it yourself
- // once you are done with it. Will return NULL if the
- // ArrayString was empty.
-#if WXWIN_COMPATIBILITY_2_4
- wxDEPRECATED( wxString* GetStringArray() const );
-#endif
-
- // item management
- // Search the element in the array, starting from the beginning if
- // bFromEnd is false or from end otherwise. If bCase, comparison is case
- // sensitive (default). Returns index of the first item matched or
- // wxNOT_FOUND
- int Index (const wxChar *sz, bool bCase = true, bool bFromEnd = false) const;
- // add new element at the end (if the array is not sorted), return its
- // index
- size_t Add(const wxString& str, size_t nInsert = 1);
- // add new element at given position
- void Insert(const wxString& str, size_t uiIndex, size_t nInsert = 1);
- // expand the array to have count elements
- void SetCount(size_t count);
- // remove first item matching this value
- void Remove(const wxChar *sz);
- // remove item by index
-#if WXWIN_COMPATIBILITY_2_4
- wxDEPRECATED( void Remove(size_t nIndex, size_t nRemove = 1) );
-#endif
- void RemoveAt(size_t nIndex, size_t nRemove = 1);
-
- // sorting
- // sort array elements in alphabetical order (or reversed alphabetical
- // order if reverseOrder parameter is true)
- void Sort(bool reverseOrder = false);
- // sort array elements using specified comparaison function
- void Sort(CompareFunction compareFunction);
- void Sort(CompareFunction2 compareFunction);
-
- // comparison
- // compare two arrays case sensitively
- bool operator==(const wxArrayString& a) const;
- // compare two arrays case sensitively
- bool operator!=(const wxArrayString& a) const { return !(*this == a); }
-
- // STL-like interface
- typedef wxString value_type;
- typedef value_type* pointer;
- typedef const value_type* const_pointer;
- typedef value_type* iterator;
- typedef const value_type* const_iterator;
- typedef value_type& reference;
- typedef const value_type& const_reference;
- typedef int difference_type;
- typedef size_t size_type;
-
- // TODO: this code duplicates the one in dynarray.h
- class reverse_iterator
- {
- typedef wxString value_type;
- typedef value_type* pointer;
- typedef value_type& reference;
- typedef reverse_iterator itor;
- friend itor operator+(int o, const itor& it);
- friend itor operator+(const itor& it, int o);
- friend itor operator-(const itor& it, int o);
- friend difference_type operator -(const itor& i1, const itor& i2);
- public:
- pointer m_ptr;
- reverse_iterator() : m_ptr(NULL) { }
- reverse_iterator(pointer ptr) : m_ptr(ptr) { }
- reverse_iterator(const itor& it) : m_ptr(it.m_ptr) { }
- reference operator*() const { return *m_ptr; }
- pointer operator->() const { return m_ptr; }
- itor& operator++() { --m_ptr; return *this; }
- const itor operator++(int)
- { reverse_iterator tmp = *this; --m_ptr; return tmp; }
- itor& operator--() { ++m_ptr; return *this; }
- const itor operator--(int) { itor tmp = *this; ++m_ptr; return tmp; }
- bool operator ==(const itor& it) const { return m_ptr == it.m_ptr; }
- bool operator !=(const itor& it) const { return m_ptr != it.m_ptr; }
- };
-
- class const_reverse_iterator
- {
- typedef wxString value_type;
- typedef const value_type* pointer;
- typedef const value_type& reference;
- typedef const_reverse_iterator itor;
- friend itor operator+(int o, const itor& it);
- friend itor operator+(const itor& it, int o);
- friend itor operator-(const itor& it, int o);
- friend difference_type operator -(const itor& i1, const itor& i2);
- public:
- pointer m_ptr;
- const_reverse_iterator() : m_ptr(NULL) { }
- const_reverse_iterator(pointer ptr) : m_ptr(ptr) { }
- const_reverse_iterator(const itor& it) : m_ptr(it.m_ptr) { }
- const_reverse_iterator(const reverse_iterator& it) : m_ptr(it.m_ptr) { }
- reference operator*() const { return *m_ptr; }
- pointer operator->() const { return m_ptr; }
- itor& operator++() { --m_ptr; return *this; }
- const itor operator++(int)
- { itor tmp = *this; --m_ptr; return tmp; }
- itor& operator--() { ++m_ptr; return *this; }
- const itor operator--(int) { itor tmp = *this; ++m_ptr; return tmp; }
- bool operator ==(const itor& it) const { return m_ptr == it.m_ptr; }
- bool operator !=(const itor& it) const { return m_ptr != it.m_ptr; }
- };
-
- wxArrayString(const_iterator first, const_iterator last)
- { Init(false); assign(first, last); }
- wxArrayString(size_type n, const_reference v) { Init(false); assign(n, v); }
- void assign(const_iterator first, const_iterator last);
- void assign(size_type n, const_reference v)
- { clear(); Add(v, n); }
- reference back() { return *(end() - 1); }
- const_reference back() const { return *(end() - 1); }
- iterator begin() { return (wxString *)&(m_pItems[0]); }
- const_iterator begin() const { return (wxString *)&(m_pItems[0]); }
- size_type capacity() const { return m_nSize; }
- void clear() { Clear(); }
- bool empty() const { return IsEmpty(); }
- iterator end() { return begin() + GetCount(); }
- const_iterator end() const { return begin() + GetCount(); }
- iterator erase(iterator first, iterator last)
- {
- size_t idx = first - begin();
- RemoveAt(idx, last - first);
- return begin() + idx;
- }
- iterator erase(iterator it) { return erase(it, it + 1); }
- reference front() { return *begin(); }
- const_reference front() const { return *begin(); }
- void insert(iterator it, size_type n, const_reference v)
- { Insert(v, it - begin(), n); }
- iterator insert(iterator it, const_reference v = value_type())
- { size_t idx = it - begin(); Insert(v, idx); return begin() + idx; }
- void insert(iterator it, const_iterator first, const_iterator last);
- size_type max_size() const { return INT_MAX; }
- void pop_back() { RemoveAt(GetCount() - 1); }
- void push_back(const_reference v) { Add(v); }
- reverse_iterator rbegin() { return reverse_iterator(end() - 1); }
- const_reverse_iterator rbegin() const;
- reverse_iterator rend() { return reverse_iterator(begin() - 1); }
- const_reverse_iterator rend() const;
- void reserve(size_type n) /* base::reserve*/;
- void resize(size_type n, value_type v = value_type());
- size_type size() const { return GetCount(); }
-
-protected:
- void Init(bool autoSort); // common part of all ctors
- void Copy(const wxArrayString& src); // copies the contents of another array
-
-private:
- void Grow(size_t nIncrement = 0); // makes array bigger if needed
- void Free(); // free all the strings stored
-
- void DoSort(); // common part of all Sort() variants
-
- size_t m_nSize, // current size of the array
- m_nCount; // current number of elements
-
- wxChar **m_pItems; // pointer to data
-
- bool m_autoSort; // if true, keep the array always sorted
-};
-
-class WXDLLIMPEXP_BASE wxSortedArrayString : public wxArrayString
-{
-public:
- wxSortedArrayString() : wxArrayString(true)
- { }
- wxSortedArrayString(const wxArrayString& array) : wxArrayString(true)
- { Copy(array); }
-};
-
-#endif // !wxUSE_STL
-
-// this class provides a temporary wxString* from a
-// wxArrayString
-class WXDLLIMPEXP_BASE wxCArrayString
-{
-public:
- wxCArrayString( const wxArrayString& array )
- : m_array( array ), m_strings( NULL )
- { }
- ~wxCArrayString() { delete[] m_strings; }
-
- size_t GetCount() const { return m_array.GetCount(); }
- wxString* GetStrings()
- {
- if( m_strings ) return m_strings;
- size_t count = m_array.GetCount();
- m_strings = new wxString[count];
- for( size_t i = 0; i < count; ++i )
- m_strings[i] = m_array[i];
- return m_strings;
- }
-
-#if wxABI_VERSION >= 20810
- wxString* Release();
-#endif // wxABI_VERSION >= 20810
-
-private:
- const wxArrayString& m_array;
- wxString* m_strings;
-};
-
-#endif
diff --git a/Externals/wxWidgets/include/wx/artprov.h b/Externals/wxWidgets/include/wx/artprov.h
deleted file mode 100644
index 1d026a74db..0000000000
--- a/Externals/wxWidgets/include/wx/artprov.h
+++ /dev/null
@@ -1,204 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-// Name: wx/artprov.h
-// Purpose: wxArtProvider class
-// Author: Vaclav Slavik
-// Modified by:
-// Created: 18/03/2002
-// RCS-ID: $Id: artprov.h 57701 2008-12-31 23:40:06Z VS $
-// Copyright: (c) Vaclav Slavik
-// Licence: wxWindows licence
-/////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_ARTPROV_H_
-#define _WX_ARTPROV_H_
-
-#include "wx/string.h"
-#include "wx/bitmap.h"
-#include "wx/icon.h"
-
-class WXDLLIMPEXP_FWD_CORE wxArtProvidersList;
-class WXDLLIMPEXP_FWD_CORE wxArtProviderCache;
-class wxArtProviderModule;
-
-// ----------------------------------------------------------------------------
-// Types
-// ----------------------------------------------------------------------------
-
-typedef wxString wxArtClient;
-typedef wxString wxArtID;
-
-#define wxART_MAKE_CLIENT_ID_FROM_STR(id) (id + _T("_C"))
-#define wxART_MAKE_CLIENT_ID(id) _T(#id) _T("_C")
-#define wxART_MAKE_ART_ID_FROM_STR(id) (id)
-#define wxART_MAKE_ART_ID(id) _T(#id)
-
-// ----------------------------------------------------------------------------
-// Art clients
-// ----------------------------------------------------------------------------
-
-#define wxART_TOOLBAR wxART_MAKE_CLIENT_ID(wxART_TOOLBAR)
-#define wxART_MENU wxART_MAKE_CLIENT_ID(wxART_MENU)
-#define wxART_FRAME_ICON wxART_MAKE_CLIENT_ID(wxART_FRAME_ICON)
-
-#define wxART_CMN_DIALOG wxART_MAKE_CLIENT_ID(wxART_CMN_DIALOG)
-#define wxART_HELP_BROWSER wxART_MAKE_CLIENT_ID(wxART_HELP_BROWSER)
-#define wxART_MESSAGE_BOX wxART_MAKE_CLIENT_ID(wxART_MESSAGE_BOX)
-#define wxART_BUTTON wxART_MAKE_CLIENT_ID(wxART_BUTTON)
-
-#define wxART_OTHER wxART_MAKE_CLIENT_ID(wxART_OTHER)
-
-// ----------------------------------------------------------------------------
-// Art IDs
-// ----------------------------------------------------------------------------
-
-#define wxART_ADD_BOOKMARK wxART_MAKE_ART_ID(wxART_ADD_BOOKMARK)
-#define wxART_DEL_BOOKMARK wxART_MAKE_ART_ID(wxART_DEL_BOOKMARK)
-#define wxART_HELP_SIDE_PANEL wxART_MAKE_ART_ID(wxART_HELP_SIDE_PANEL)
-#define wxART_HELP_SETTINGS wxART_MAKE_ART_ID(wxART_HELP_SETTINGS)
-#define wxART_HELP_BOOK wxART_MAKE_ART_ID(wxART_HELP_BOOK)
-#define wxART_HELP_FOLDER wxART_MAKE_ART_ID(wxART_HELP_FOLDER)
-#define wxART_HELP_PAGE wxART_MAKE_ART_ID(wxART_HELP_PAGE)
-#define wxART_GO_BACK wxART_MAKE_ART_ID(wxART_GO_BACK)
-#define wxART_GO_FORWARD wxART_MAKE_ART_ID(wxART_GO_FORWARD)
-#define wxART_GO_UP wxART_MAKE_ART_ID(wxART_GO_UP)
-#define wxART_GO_DOWN wxART_MAKE_ART_ID(wxART_GO_DOWN)
-#define wxART_GO_TO_PARENT wxART_MAKE_ART_ID(wxART_GO_TO_PARENT)
-#define wxART_GO_HOME wxART_MAKE_ART_ID(wxART_GO_HOME)
-#define wxART_FILE_OPEN wxART_MAKE_ART_ID(wxART_FILE_OPEN)
-#define wxART_FILE_SAVE wxART_MAKE_ART_ID(wxART_FILE_SAVE)
-#define wxART_FILE_SAVE_AS wxART_MAKE_ART_ID(wxART_FILE_SAVE_AS)
-#define wxART_PRINT wxART_MAKE_ART_ID(wxART_PRINT)
-#define wxART_HELP wxART_MAKE_ART_ID(wxART_HELP)
-#define wxART_TIP wxART_MAKE_ART_ID(wxART_TIP)
-#define wxART_REPORT_VIEW wxART_MAKE_ART_ID(wxART_REPORT_VIEW)
-#define wxART_LIST_VIEW wxART_MAKE_ART_ID(wxART_LIST_VIEW)
-#define wxART_NEW_DIR wxART_MAKE_ART_ID(wxART_NEW_DIR)
-#define wxART_HARDDISK wxART_MAKE_ART_ID(wxART_HARDDISK)
-#define wxART_FLOPPY wxART_MAKE_ART_ID(wxART_FLOPPY)
-#define wxART_CDROM wxART_MAKE_ART_ID(wxART_CDROM)
-#define wxART_REMOVABLE wxART_MAKE_ART_ID(wxART_REMOVABLE)
-#define wxART_FOLDER wxART_MAKE_ART_ID(wxART_FOLDER)
-#define wxART_FOLDER_OPEN wxART_MAKE_ART_ID(wxART_FOLDER_OPEN)
-#define wxART_GO_DIR_UP wxART_MAKE_ART_ID(wxART_GO_DIR_UP)
-#define wxART_EXECUTABLE_FILE wxART_MAKE_ART_ID(wxART_EXECUTABLE_FILE)
-#define wxART_NORMAL_FILE wxART_MAKE_ART_ID(wxART_NORMAL_FILE)
-#define wxART_TICK_MARK wxART_MAKE_ART_ID(wxART_TICK_MARK)
-#define wxART_CROSS_MARK wxART_MAKE_ART_ID(wxART_CROSS_MARK)
-#define wxART_ERROR wxART_MAKE_ART_ID(wxART_ERROR)
-#define wxART_QUESTION wxART_MAKE_ART_ID(wxART_QUESTION)
-#define wxART_WARNING wxART_MAKE_ART_ID(wxART_WARNING)
-#define wxART_INFORMATION wxART_MAKE_ART_ID(wxART_INFORMATION)
-#define wxART_MISSING_IMAGE wxART_MAKE_ART_ID(wxART_MISSING_IMAGE)
-
-#define wxART_COPY wxART_MAKE_ART_ID(wxART_COPY)
-#define wxART_CUT wxART_MAKE_ART_ID(wxART_CUT)
-#define wxART_PASTE wxART_MAKE_ART_ID(wxART_PASTE)
-#define wxART_DELETE wxART_MAKE_ART_ID(wxART_DELETE)
-#define wxART_NEW wxART_MAKE_ART_ID(wxART_NEW)
-
-#define wxART_UNDO wxART_MAKE_ART_ID(wxART_UNDO)
-#define wxART_REDO wxART_MAKE_ART_ID(wxART_REDO)
-
-#define wxART_QUIT wxART_MAKE_ART_ID(wxART_QUIT)
-
-#define wxART_FIND wxART_MAKE_ART_ID(wxART_FIND)
-#define wxART_FIND_AND_REPLACE wxART_MAKE_ART_ID(wxART_FIND_AND_REPLACE)
-
-
-// ----------------------------------------------------------------------------
-// wxArtProvider class
-// ----------------------------------------------------------------------------
-
-class WXDLLEXPORT wxArtProvider : public wxObject
-{
-public:
- // Dtor removes the provider from providers stack if it's still on it
- virtual ~wxArtProvider();
-
-
- // Add new provider to the top of providers stack (i.e. the provider will
- // be queried first of all).
- static void Push(wxArtProvider *provider);
-
- // Add new provider to the bottom of providers stack (i.e. the provider
- // will be queried as the last one).
-#if wxABI_VERSION >= 20810
- static void PushBack(wxArtProvider *provider);
-#endif
- // same as PushBack()
- static void Insert(wxArtProvider *provider);
-
- // Remove latest added provider and delete it.
- static bool Pop();
-
- // Remove provider from providers stack but don't delete it.
- static bool Remove(wxArtProvider *provider);
-
- // Delete the given provider and remove it from the providers stack.
- static bool Delete(wxArtProvider *provider);
-
-
- // Query the providers for bitmap with given ID and return it. Return
- // wxNullBitmap if no provider provides it.
- static wxBitmap GetBitmap(const wxArtID& id,
- const wxArtClient& client = wxART_OTHER,
- const wxSize& size = wxDefaultSize);
-
- // Query the providers for icon with given ID and return it. Return
- // wxNullIcon if no provider provides it.
- static wxIcon GetIcon(const wxArtID& id,
- const wxArtClient& client = wxART_OTHER,
- const wxSize& size = wxDefaultSize);
-
- // Get the size hint of an icon from a specific wxArtClient, queries
- // the topmost provider if platform_dependent = false
- static wxSize GetSizeHint(const wxArtClient& client, bool platform_dependent = false);
-
-#if WXWIN_COMPATIBILITY_2_6
- // use the corresponding methods without redundant "Provider" suffix
- wxDEPRECATED( static void PushProvider(wxArtProvider *provider) );
- wxDEPRECATED( static void InsertProvider(wxArtProvider *provider) );
- wxDEPRECATED( static bool PopProvider() );
-
- // use Delete() if this is what you really need, or just delete the
- // provider pointer, do not use Remove() as it does not delete the pointer
- // unlike RemoveProvider() which does
- wxDEPRECATED( static bool RemoveProvider(wxArtProvider *provider) );
-#endif // WXWIN_COMPATIBILITY_2_6
-
-protected:
- friend class wxArtProviderModule;
- // Initializes default provider
- static void InitStdProvider();
- // Initializes platform's native provider, if available (e.g. GTK2)
- static void InitNativeProvider();
- // Destroy caches & all providers
- static void CleanUpProviders();
-
- // Get the default size of an icon for a specific client
- virtual wxSize DoGetSizeHint(const wxArtClient& client)
- {
- return GetSizeHint(client, true);
- }
-
- // Derived classes must override this method to create requested
- // art resource. This method is called only once per instance's
- // lifetime for each requested wxArtID.
- virtual wxBitmap CreateBitmap(const wxArtID& WXUNUSED(id),
- const wxArtClient& WXUNUSED(client),
- const wxSize& WXUNUSED(size)) = 0;
-
-private:
- static void CommonAddingProvider();
-
-private:
- // list of providers:
- static wxArtProvidersList *sm_providers;
- // art resources cache (so that CreateXXX is not called that often):
- static wxArtProviderCache *sm_cache;
-
- DECLARE_ABSTRACT_CLASS(wxArtProvider)
-};
-
-
-#endif // _WX_ARTPROV_H_
diff --git a/Externals/wxWidgets/include/wx/aui/aui.h b/Externals/wxWidgets/include/wx/aui/aui.h
deleted file mode 100644
index 72273dd488..0000000000
--- a/Externals/wxWidgets/include/wx/aui/aui.h
+++ /dev/null
@@ -1,23 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Name: wx/aui/aui.h
-// Purpose: wxaui: wx advanced user interface - docking window manager
-// Author: Benjamin I. Williams
-// Modified by:
-// Created: 2005-05-17
-// RCS-ID: $Id: aui.h 55195 2008-08-23 06:31:01Z BIW $
-// Copyright: (C) Copyright 2005, Kirix Corporation, All Rights Reserved.
-// Licence: wxWindows Library Licence, Version 3.1
-///////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_AUI_H_
-#define _WX_AUI_H_
-
-#include "wx/aui/framemanager.h"
-#include "wx/aui/dockart.h"
-#include "wx/aui/floatpane.h"
-#include "wx/aui/auibar.h"
-#include "wx/aui/auibook.h"
-#include "wx/aui/tabmdi.h"
-
-#endif // _WX_AUI_H_
-
diff --git a/Externals/wxWidgets/include/wx/aui/auibar.h b/Externals/wxWidgets/include/wx/aui/auibar.h
deleted file mode 100644
index 5ca0e23803..0000000000
--- a/Externals/wxWidgets/include/wx/aui/auibar.h
+++ /dev/null
@@ -1,684 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Name: wx/aui/toolbar.h
-// Purpose: wxaui: wx advanced user interface - docking window manager
-// Author: Benjamin I. Williams
-// Modified by:
-// Created: 2008-08-04
-// RCS-ID: $Id: auibar.h 55522 2008-09-08 09:54:28Z BIW $
-// Copyright: (C) Copyright 2005, Kirix Corporation, All Rights Reserved.
-// Licence: wxWindows Library Licence, Version 3.1
-///////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_AUIBAR_H_
-#define _WX_AUIBAR_H_
-
-#include "wx/defs.h"
-
-#if wxUSE_AUI
-
-#if wxABI_VERSION >= 20809
-
-#include "wx/control.h"
-
-enum wxAuiToolBarStyle
-{
- wxAUI_TB_TEXT = 1 << 0,
- wxAUI_TB_NO_TOOLTIPS = 1 << 1,
- wxAUI_TB_NO_AUTORESIZE = 1 << 2,
- wxAUI_TB_GRIPPER = 1 << 3,
- wxAUI_TB_OVERFLOW = 1 << 4,
- wxAUI_TB_VERTICAL = 1 << 5,
- wxAUI_TB_HORZ_LAYOUT = 1 << 6,
- wxAUI_TB_HORZ_TEXT = (wxAUI_TB_HORZ_LAYOUT | wxAUI_TB_TEXT),
- wxAUI_TB_DEFAULT_STYLE = 0
-};
-
-enum wxAuiToolBarArtSetting
-{
- wxAUI_TBART_SEPARATOR_SIZE = 0,
- wxAUI_TBART_GRIPPER_SIZE = 1,
- wxAUI_TBART_OVERFLOW_SIZE = 2
-};
-
-enum wxAuiToolBarToolTextOrientation
-{
- wxAUI_TBTOOL_TEXT_LEFT = 0, // unused/unimplemented
- wxAUI_TBTOOL_TEXT_RIGHT = 1,
- wxAUI_TBTOOL_TEXT_TOP = 2, // unused/unimplemented
- wxAUI_TBTOOL_TEXT_BOTTOM = 3
-};
-
-
-// aui toolbar event class
-
-class WXDLLIMPEXP_AUI wxAuiToolBarEvent : public wxNotifyEvent
-{
-public:
- wxAuiToolBarEvent(wxEventType command_type = wxEVT_NULL,
- int win_id = 0)
- : wxNotifyEvent(command_type, win_id)
- {
- is_dropdown_clicked = false;
- click_pt = wxPoint(-1, -1);
- rect = wxRect(-1,-1, 0, 0);
- tool_id = -1;
- }
-#ifndef SWIG
- wxAuiToolBarEvent(const wxAuiToolBarEvent& c) : wxNotifyEvent(c)
- {
- is_dropdown_clicked = c.is_dropdown_clicked;
- click_pt = c.click_pt;
- rect = c.rect;
- tool_id = c.tool_id;
- }
-#endif
- wxEvent *Clone() const { return new wxAuiToolBarEvent(*this); }
-
- bool IsDropDownClicked() const { return is_dropdown_clicked; }
- void SetDropDownClicked(bool c) { is_dropdown_clicked = c; }
-
- wxPoint GetClickPoint() const { return click_pt; }
- void SetClickPoint(const wxPoint& p) { click_pt = p; }
-
- wxRect GetItemRect() const { return rect; }
- void SetItemRect(const wxRect& r) { rect = r; }
-
- int GetToolId() const { return tool_id; }
- void SetToolId(int id) { tool_id = id; }
-
-private:
-
- bool is_dropdown_clicked;
- wxPoint click_pt;
- wxRect rect;
- int tool_id;
-
-#ifndef SWIG
-private:
- DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxAuiToolBarEvent)
-#endif
-};
-
-
-class WXDLLIMPEXP_AUI wxAuiToolBarItem
-{
- friend class wxAuiToolBar;
-
-public:
-
- wxAuiToolBarItem()
- {
- window = NULL;
- sizer_item = NULL;
- spacer_pixels = 0;
- id = 0;
- kind = wxITEM_NORMAL;
- state = 0; // normal, enabled
- proportion = 0;
- active = true;
- dropdown = true;
- sticky = true;
- user_data = 0;
- }
-
- wxAuiToolBarItem(const wxAuiToolBarItem& c)
- {
- Assign(c);
- }
-
- wxAuiToolBarItem& operator=(const wxAuiToolBarItem& c)
- {
- Assign(c);
- return *this;
- }
-
- void Assign(const wxAuiToolBarItem& c)
- {
- window = c.window;
- label = c.label;
- bitmap = c.bitmap;
- disabled_bitmap = c.disabled_bitmap;
- hover_bitmap = c.hover_bitmap;
- short_help = c.short_help;
- long_help = c.long_help;
- sizer_item = c.sizer_item;
- min_size = c.min_size;
- spacer_pixels = c.spacer_pixels;
- id = c.id;
- kind = c.kind;
- state = c.state;
- proportion = c.proportion;
- active = c.active;
- dropdown = c.dropdown;
- sticky = c.sticky;
- user_data = c.user_data;
- }
-
-
- void SetWindow(wxWindow* w) { window = w; }
- wxWindow* GetWindow() { return window; }
-
- void SetId(int new_id) { id = new_id; }
- int GetId() const { return id; }
-
- void SetKind(int new_kind) { kind = new_kind; }
- int GetKind() const { return kind; }
-
- void SetState(int new_state) { state = new_state; }
- int GetState() const { return state; }
-
- void SetSizerItem(wxSizerItem* s) { sizer_item = s; }
- wxSizerItem* GetSizerItem() const { return sizer_item; }
-
- void SetLabel(const wxString& s) { label = s; }
- const wxString& GetLabel() const { return label; }
-
- void SetBitmap(const wxBitmap& bmp) { bitmap = bmp; }
- const wxBitmap& GetBitmap() const { return bitmap; }
-
- void SetDisabledBitmap(const wxBitmap& bmp) { disabled_bitmap = bmp; }
- const wxBitmap& GetDisabledBitmap() const { return disabled_bitmap; }
-
- void SetHoverBitmap(const wxBitmap& bmp) { hover_bitmap = bmp; }
- const wxBitmap& GetHoverBitmap() const { return hover_bitmap; }
-
- void SetShortHelp(const wxString& s) { short_help = s; }
- const wxString& GetShortHelp() const { return short_help; }
-
- void SetLongHelp(const wxString& s) { long_help = s; }
- const wxString& GetLongHelp() const { return long_help; }
-
- void SetMinSize(const wxSize& s) { min_size = s; }
- const wxSize& GetMinSize() const { return min_size; }
-
- void SetSpacerPixels(int s) { spacer_pixels = s; }
- int GetSpacerPixels() const { return spacer_pixels; }
-
- void SetProportion(int p) { proportion = p; }
- int GetProportion() const { return proportion; }
-
- void SetActive(bool b) { active = b; }
- bool IsActive() const { return active; }
-
- void SetHasDropDown(bool b) { dropdown = b; }
- bool HasDropDown() const { return dropdown; }
-
- void SetSticky(bool b) { sticky = b; }
- bool IsSticky() const { return sticky; }
-
- void SetUserData(long l) { user_data = l; }
- long GetUserData() const { return user_data; }
-
-private:
-
- wxWindow* window; // item's associated window
- wxString label; // label displayed on the item
- wxBitmap bitmap; // item's bitmap
- wxBitmap disabled_bitmap; // item's disabled bitmap
- wxBitmap hover_bitmap; // item's hover bitmap
- wxString short_help; // short help (for tooltip)
- wxString long_help; // long help (for status bar)
- wxSizerItem* sizer_item; // sizer item
- wxSize min_size; // item's minimum size
- int spacer_pixels; // size of a spacer
- int id; // item's id
- int kind; // item's kind
- int state; // state
- int proportion; // proportion
- bool active; // true if the item is currently active
- bool dropdown; // true if the item has a dropdown button
- bool sticky; // overrides button states if true (always active)
- long user_data; // user-specified data
-};
-
-#ifndef SWIG
-WX_DECLARE_USER_EXPORTED_OBJARRAY(wxAuiToolBarItem, wxAuiToolBarItemArray, WXDLLIMPEXP_AUI);
-#endif
-
-
-
-
-// tab art class
-
-class WXDLLIMPEXP_AUI wxAuiToolBarArt
-{
-public:
-
- wxAuiToolBarArt() { }
- virtual ~wxAuiToolBarArt() { }
-
- virtual wxAuiToolBarArt* Clone() = 0;
- virtual void SetFlags(unsigned int flags) = 0;
- virtual void SetFont(const wxFont& font) = 0;
- virtual void SetTextOrientation(int orientation) = 0;
-
- virtual void DrawBackground(
- wxDC& dc,
- wxWindow* wnd,
- const wxRect& rect) = 0;
-
- virtual void DrawLabel(
- wxDC& dc,
- wxWindow* wnd,
- const wxAuiToolBarItem& item,
- const wxRect& rect) = 0;
-
- virtual void DrawButton(
- wxDC& dc,
- wxWindow* wnd,
- const wxAuiToolBarItem& item,
- const wxRect& rect) = 0;
-
- virtual void DrawDropDownButton(
- wxDC& dc,
- wxWindow* wnd,
- const wxAuiToolBarItem& item,
- const wxRect& rect) = 0;
-
- virtual void DrawControlLabel(
- wxDC& dc,
- wxWindow* wnd,
- const wxAuiToolBarItem& item,
- const wxRect& rect) = 0;
-
- virtual void DrawSeparator(
- wxDC& dc,
- wxWindow* wnd,
- const wxRect& rect) = 0;
-
- virtual void DrawGripper(
- wxDC& dc,
- wxWindow* wnd,
- const wxRect& rect) = 0;
-
- virtual void DrawOverflowButton(
- wxDC& dc,
- wxWindow* wnd,
- const wxRect& rect,
- int state) = 0;
-
- virtual wxSize GetLabelSize(
- wxDC& dc,
- wxWindow* wnd,
- const wxAuiToolBarItem& item) = 0;
-
- virtual wxSize GetToolSize(
- wxDC& dc,
- wxWindow* wnd,
- const wxAuiToolBarItem& item) = 0;
-
- virtual int GetElementSize(int element_id) = 0;
- virtual void SetElementSize(int element_id, int size) = 0;
-
- virtual int ShowDropDown(
- wxWindow* wnd,
- const wxAuiToolBarItemArray& items) = 0;
-};
-
-
-
-class WXDLLIMPEXP_AUI wxAuiDefaultToolBarArt : public wxAuiToolBarArt
-{
-
-public:
-
- wxAuiDefaultToolBarArt();
- virtual ~wxAuiDefaultToolBarArt();
-
- virtual wxAuiToolBarArt* Clone();
- virtual void SetFlags(unsigned int flags);
- virtual void SetFont(const wxFont& font);
- virtual void SetTextOrientation(int orientation);
-
- virtual void DrawBackground(
- wxDC& dc,
- wxWindow* wnd,
- const wxRect& rect);
-
- virtual void DrawLabel(
- wxDC& dc,
- wxWindow* wnd,
- const wxAuiToolBarItem& item,
- const wxRect& rect);
-
- virtual void DrawButton(
- wxDC& dc,
- wxWindow* wnd,
- const wxAuiToolBarItem& item,
- const wxRect& rect);
-
- virtual void DrawDropDownButton(
- wxDC& dc,
- wxWindow* wnd,
- const wxAuiToolBarItem& item,
- const wxRect& rect);
-
- virtual void DrawControlLabel(
- wxDC& dc,
- wxWindow* wnd,
- const wxAuiToolBarItem& item,
- const wxRect& rect);
-
- virtual void DrawSeparator(
- wxDC& dc,
- wxWindow* wnd,
- const wxRect& rect);
-
- virtual void DrawGripper(
- wxDC& dc,
- wxWindow* wnd,
- const wxRect& rect);
-
- virtual void DrawOverflowButton(
- wxDC& dc,
- wxWindow* wnd,
- const wxRect& rect,
- int state);
-
- virtual wxSize GetLabelSize(
- wxDC& dc,
- wxWindow* wnd,
- const wxAuiToolBarItem& item);
-
- virtual wxSize GetToolSize(
- wxDC& dc,
- wxWindow* wnd,
- const wxAuiToolBarItem& item);
-
- virtual int GetElementSize(int element);
- virtual void SetElementSize(int element_id, int size);
-
- virtual int ShowDropDown(wxWindow* wnd,
- const wxAuiToolBarItemArray& items);
-
-protected:
-
- wxBitmap m_button_dropdown_bmp;
- wxBitmap m_disabled_button_dropdown_bmp;
- wxBitmap m_overflow_bmp;
- wxBitmap m_disabled_overflow_bmp;
- wxColour m_base_colour;
- wxColour m_highlight_colour;
- wxFont m_font;
- unsigned int m_flags;
- int m_text_orientation;
-
- wxPen m_gripper_pen1;
- wxPen m_gripper_pen2;
- wxPen m_gripper_pen3;
-
- int m_separator_size;
- int m_gripper_size;
- int m_overflow_size;
-};
-
-
-
-
-class WXDLLIMPEXP_AUI wxAuiToolBar : public wxControl
-{
-public:
-
- wxAuiToolBar(wxWindow* parent,
- wxWindowID id = -1,
- const wxPoint& position = wxDefaultPosition,
- const wxSize& size = wxDefaultSize,
- long style = wxAUI_TB_DEFAULT_STYLE);
- ~wxAuiToolBar();
-
- void SetWindowStyleFlag(long style);
-
- void SetArtProvider(wxAuiToolBarArt* art);
- wxAuiToolBarArt* GetArtProvider() const;
-
- bool SetFont(const wxFont& font);
-
-
- void AddTool(int tool_id,
- const wxString& label,
- const wxBitmap& bitmap,
- const wxString& short_help_string = wxEmptyString,
- wxItemKind kind = wxITEM_NORMAL);
-
- void AddTool(int tool_id,
- const wxString& label,
- const wxBitmap& bitmap,
- const wxBitmap& disabled_bitmap,
- wxItemKind kind,
- const wxString& short_help_string,
- const wxString& long_help_string,
- wxObject* client_data);
-
- void AddTool(int tool_id,
- const wxBitmap& bitmap,
- const wxBitmap& disabled_bitmap,
- bool toggle = false,
- wxObject* client_data = NULL,
- const wxString& short_help_string = wxEmptyString,
- const wxString& long_help_string = wxEmptyString)
- {
- AddTool(tool_id,
- wxEmptyString,
- bitmap,
- disabled_bitmap,
- toggle ? wxITEM_CHECK : wxITEM_NORMAL,
- short_help_string,
- long_help_string,
- client_data);
- }
-
- void AddLabel(int tool_id,
- const wxString& label = wxEmptyString,
- const int width = -1);
- void AddControl(wxControl* control,
- const wxString& label = wxEmptyString);
- void AddSeparator();
- void AddSpacer(int pixels);
- void AddStretchSpacer(int proportion = 1);
-
- bool Realize();
-
- wxControl* FindControl(int window_id);
- wxAuiToolBarItem* FindToolByPosition(wxCoord x, wxCoord y) const;
- wxAuiToolBarItem* FindToolByIndex(int idx) const;
- wxAuiToolBarItem* FindTool(int tool_id) const;
-
- void ClearTools() { Clear() ; }
- void Clear();
- bool DeleteTool(int tool_id);
- bool DeleteByIndex(int tool_id);
-
- size_t GetToolCount() const;
- int GetToolPos(int tool_id) const { return GetToolIndex(tool_id); }
- int GetToolIndex(int tool_id) const;
- bool GetToolFits(int tool_id) const;
- wxRect GetToolRect(int tool_id) const;
- bool GetToolFitsByIndex(int tool_id) const;
- bool GetToolBarFits() const;
-
- void SetMargins(const wxSize& size) { SetMargins(size.x, size.x, size.y, size.y); }
- void SetMargins(int x, int y) { SetMargins(x, x, y, y); }
- void SetMargins(int left, int right, int top, int bottom);
-
- void SetToolBitmapSize(const wxSize& size);
- wxSize GetToolBitmapSize() const;
-
- bool GetOverflowVisible() const;
- void SetOverflowVisible(bool visible);
-
- bool GetGripperVisible() const;
- void SetGripperVisible(bool visible);
-
- void ToggleTool(int tool_id, bool state);
- bool GetToolToggled(int tool_id) const;
-
- void EnableTool(int tool_id, bool state);
- bool GetToolEnabled(int tool_id) const;
-
- void SetToolDropDown(int tool_id, bool dropdown);
- bool GetToolDropDown(int tool_id) const;
-
- void SetToolBorderPadding(int padding);
- int GetToolBorderPadding() const;
-
- void SetToolTextOrientation(int orientation);
- int GetToolTextOrientation() const;
-
- void SetToolPacking(int packing);
- int GetToolPacking() const;
-
- void SetToolProportion(int tool_id, int proportion);
- int GetToolProportion(int tool_id) const;
-
- void SetToolSeparation(int separation);
- int GetToolSeparation() const;
-
- void SetToolSticky(int tool_id, bool sticky);
- bool GetToolSticky(int tool_id) const;
-
- wxString GetToolLabel(int tool_id) const;
- void SetToolLabel(int tool_id, const wxString& label);
-
- wxBitmap GetToolBitmap(int tool_id) const;
- void SetToolBitmap(int tool_id, const wxBitmap& bitmap);
-
- wxString GetToolShortHelp(int tool_id) const;
- void SetToolShortHelp(int tool_id, const wxString& help_string);
-
- wxString GetToolLongHelp(int tool_id) const;
- void SetToolLongHelp(int tool_id, const wxString& help_string);
-
- void SetCustomOverflowItems(const wxAuiToolBarItemArray& prepend,
- const wxAuiToolBarItemArray& append);
-
-protected:
-
- virtual void OnCustomRender(wxDC& WXUNUSED(dc),
- const wxAuiToolBarItem& WXUNUSED(item),
- const wxRect& WXUNUSED(rect)) { }
-
-protected:
-
- void DoIdleUpdate();
- void SetOrientation(int orientation);
- void SetHoverItem(wxAuiToolBarItem* item);
- void SetPressedItem(wxAuiToolBarItem* item);
- void RefreshOverflowState();
-
- int GetOverflowState() const;
- wxRect GetOverflowRect() const;
- wxSize GetLabelSize(const wxString& label);
- wxAuiToolBarItem* FindToolByPositionWithPacking(wxCoord x, wxCoord y) const;
-
- void DoSetSize(int x,
- int y,
- int width,
- int height,
- int sizeFlags = wxSIZE_AUTO);
-
-protected: // handlers
-
- void OnSize(wxSizeEvent& evt);
- void OnIdle(wxIdleEvent& evt);
- void OnPaint(wxPaintEvent& evt);
- void OnEraseBackground(wxEraseEvent& evt);
- void OnLeftDown(wxMouseEvent& evt);
- void OnLeftUp(wxMouseEvent& evt);
- void OnRightDown(wxMouseEvent& evt);
- void OnRightUp(wxMouseEvent& evt);
- void OnMiddleDown(wxMouseEvent& evt);
- void OnMiddleUp(wxMouseEvent& evt);
- void OnMotion(wxMouseEvent& evt);
- void OnLeaveWindow(wxMouseEvent& evt);
- void OnSetCursor(wxSetCursorEvent& evt);
-
-protected:
-
- wxAuiToolBarItemArray m_items; // array of toolbar items
- wxAuiToolBarArt* m_art; // art provider
- wxBoxSizer* m_sizer; // main sizer for toolbar
- wxAuiToolBarItem* m_action_item; // item that's being acted upon (pressed)
- wxAuiToolBarItem* m_tip_item; // item that has its tooltip shown
- wxBitmap m_bitmap; // double-buffer bitmap
- wxSizerItem* m_gripper_sizer_item;
- wxSizerItem* m_overflow_sizer_item;
- wxSize m_absolute_min_size;
- wxPoint m_action_pos; // position of left-mouse down
- wxAuiToolBarItemArray m_custom_overflow_prepend;
- wxAuiToolBarItemArray m_custom_overflow_append;
-
- int m_button_width;
- int m_button_height;
- int m_sizer_element_count;
- int m_left_padding;
- int m_right_padding;
- int m_top_padding;
- int m_bottom_padding;
- int m_tool_packing;
- int m_tool_border_padding;
- int m_tool_text_orientation;
- int m_overflow_state;
- bool m_dragging;
- bool m_gripper_visible;
- bool m_overflow_visible;
- long m_style;
-
- DECLARE_EVENT_TABLE()
- DECLARE_CLASS(wxAuiToolBar)
-};
-
-
-
-
-// wx event machinery
-
-#ifndef SWIG
-
-BEGIN_DECLARE_EVENT_TYPES()
- DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_AUI, wxEVT_COMMAND_AUITOOLBAR_TOOL_DROPDOWN, 0)
- DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_AUI, wxEVT_COMMAND_AUITOOLBAR_OVERFLOW_CLICK, 0)
- DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_AUI, wxEVT_COMMAND_AUITOOLBAR_RIGHT_CLICK, 0)
- DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_AUI, wxEVT_COMMAND_AUITOOLBAR_MIDDLE_CLICK, 0)
- DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_AUI, wxEVT_COMMAND_AUITOOLBAR_BEGIN_DRAG, 0)
-END_DECLARE_EVENT_TYPES()
-
-typedef void (wxEvtHandler::*wxAuiToolBarEventFunction)(wxAuiToolBarEvent&);
-
-#define wxAuiToolBarEventHandler(func) \
- (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxAuiToolBarEventFunction, &func)
-
-#define EVT_AUITOOLBAR_TOOL_DROPDOWN(winid, fn) \
- wx__DECLARE_EVT1(wxEVT_COMMAND_AUITOOLBAR_TOOL_DROPDOWN, winid, wxAuiToolBarEventHandler(fn))
-#define EVT_AUITOOLBAR_OVERFLOW_CLICK(winid, fn) \
- wx__DECLARE_EVT1(wxEVT_COMMAND_AUITOOLBAR_OVERFLOW_CLICK, winid, wxAuiToolBarEventHandler(fn))
-#define EVT_AUITOOLBAR_RIGHT_CLICK(winid, fn) \
- wx__DECLARE_EVT1(wxEVT_COMMAND_AUITOOLBAR_RIGHT_CLICK, winid, wxAuiToolBarEventHandler(fn))
-#define EVT_AUITOOLBAR_MIDDLE_CLICK(winid, fn) \
- wx__DECLARE_EVT1(wxEVT_COMMAND_AUITOOLBAR_MIDDLE_CLICK, winid, wxAuiToolBarEventHandler(fn))
-#define EVT_AUITOOLBAR_BEGIN_DRAG(winid, fn) \
- wx__DECLARE_EVT1(wxEVT_COMMAND_AUITOOLBAR_BEGIN_DRAG, winid, wxAuiToolBarEventHandler(fn))
-
-#else
-
-// wxpython/swig event work
-%constant wxEventType wxEVT_COMMAND_AUITOOLBAR_TOOL_DROPDOWN;
-%constant wxEventType wxEVT_COMMAND_AUITOOLBAR_OVERFLOW_CLICK;
-%constant wxEventType wxEVT_COMMAND_AUITOOLBAR_RIGHT_CLICK;
-%constant wxEventType wxEVT_COMMAND_AUITOOLBAR_MIDDLE_CLICK;
-%constant wxEventType wxEVT_COMMAND_AUITOOLBAR_BEGIN_DRAG;
-
-%pythoncode {
- EVT_AUITOOLBAR_TOOL_DROPDOWN = wx.PyEventBinder( wxEVT_COMMAND_AUITOOLBAR_TOOL_DROPDOWN, 1 )
- EVT_AUITOOLBAR_OVERFLOW_CLICK = wx.PyEventBinder( wxEVT_COMMAND_AUITOOLBAR_OVERFLOW_CLICK, 1 )
- EVT_AUITOOLBAR_RIGHT_CLICK = wx.PyEventBinder( wxEVT_COMMAND_AUITOOLBAR_RIGHT_CLICK, 1 )
- EVT_AUITOOLBAR_MIDDLE_CLICK = wx.PyEventBinder( wxEVT_COMMAND_AUITOOLBAR_MIDDLE_CLICK, 1 )
- EVT_AUITOOLBAR_BEGIN_DRAG = wx.PyEventBinder( wxEVT_COMMAND_AUITOOLBAR_BEGIN_DRAG, 1 )
-}
-#endif // SWIG
-
-#endif // wxABI_VERSION >= 20809
-
-#endif // wxUSE_AUI
-
-#endif // _WX_AUIBAR_H_
-
diff --git a/Externals/wxWidgets/include/wx/aui/auibook.h b/Externals/wxWidgets/include/wx/aui/auibook.h
deleted file mode 100644
index 0fc290a3c5..0000000000
--- a/Externals/wxWidgets/include/wx/aui/auibook.h
+++ /dev/null
@@ -1,753 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Name: wx/aui/auibook.h
-// Purpose: wxaui: wx advanced user interface - notebook
-// Author: Benjamin I. Williams
-// Modified by:
-// Created: 2006-06-28
-// Copyright: (C) Copyright 2006, Kirix Corporation, All Rights Reserved.
-// Licence: wxWindows Library Licence, Version 3.1
-///////////////////////////////////////////////////////////////////////////////
-
-
-
-#ifndef _WX_AUINOTEBOOK_H_
-#define _WX_AUINOTEBOOK_H_
-
-// ----------------------------------------------------------------------------
-// headers
-// ----------------------------------------------------------------------------
-
-#include "wx/defs.h"
-
-#if wxUSE_AUI
-
-#include "wx/aui/framemanager.h"
-#include "wx/aui/dockart.h"
-#include "wx/aui/floatpane.h"
-#include "wx/control.h"
-
-
-class wxAuiNotebook;
-
-
-enum wxAuiNotebookOption
-{
- wxAUI_NB_TOP = 1 << 0,
- wxAUI_NB_LEFT = 1 << 1, // not implemented yet
- wxAUI_NB_RIGHT = 1 << 2, // not implemented yet
- wxAUI_NB_BOTTOM = 1 << 3,
- wxAUI_NB_TAB_SPLIT = 1 << 4,
- wxAUI_NB_TAB_MOVE = 1 << 5,
- wxAUI_NB_TAB_EXTERNAL_MOVE = 1 << 6,
- wxAUI_NB_TAB_FIXED_WIDTH = 1 << 7,
- wxAUI_NB_SCROLL_BUTTONS = 1 << 8,
- wxAUI_NB_WINDOWLIST_BUTTON = 1 << 9,
- wxAUI_NB_CLOSE_BUTTON = 1 << 10,
- wxAUI_NB_CLOSE_ON_ACTIVE_TAB = 1 << 11,
- wxAUI_NB_CLOSE_ON_ALL_TABS = 1 << 12,
- wxAUI_NB_MIDDLE_CLICK_CLOSE = 1 << 13,
-
- wxAUI_NB_DEFAULT_STYLE = wxAUI_NB_TOP |
- wxAUI_NB_TAB_SPLIT |
- wxAUI_NB_TAB_MOVE |
- wxAUI_NB_SCROLL_BUTTONS |
- wxAUI_NB_CLOSE_ON_ACTIVE_TAB |
- wxAUI_NB_MIDDLE_CLICK_CLOSE
-};
-
-
-
-
-// aui notebook event class
-
-class WXDLLIMPEXP_AUI wxAuiNotebookEvent : public wxNotifyEvent
-{
-public:
- wxAuiNotebookEvent(wxEventType command_type = wxEVT_NULL,
- int win_id = 0)
- : wxNotifyEvent(command_type, win_id)
- {
- old_selection = -1;
- selection = -1;
- drag_source = NULL;
- }
-#ifndef SWIG
- wxAuiNotebookEvent(const wxAuiNotebookEvent& c) : wxNotifyEvent(c)
- {
- old_selection = c.old_selection;
- selection = c.selection;
- drag_source = c.drag_source;
- }
-#endif
- wxEvent *Clone() const { return new wxAuiNotebookEvent(*this); }
-
- void SetSelection(int s) { selection = s; m_commandInt = s; }
- int GetSelection() const { return selection; }
-
- void SetOldSelection(int s) { old_selection = s; }
- int GetOldSelection() const { return old_selection; }
-
- void SetDragSource(wxAuiNotebook* s) { drag_source = s; }
- wxAuiNotebook* GetDragSource() const { return drag_source; }
-
-public:
- int old_selection;
- int selection;
- wxAuiNotebook* drag_source;
-
-#ifndef SWIG
-private:
- DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxAuiNotebookEvent)
-#endif
-};
-
-
-class WXDLLIMPEXP_AUI wxAuiNotebookPage
-{
-public:
- wxWindow* window; // page's associated window
- wxString caption; // caption displayed on the tab
- wxBitmap bitmap; // tab's bitmap
- wxRect rect; // tab's hit rectangle
- bool active; // true if the page is currently active
-};
-
-class WXDLLIMPEXP_AUI wxAuiTabContainerButton
-{
-public:
-
- int id; // button's id
- int cur_state; // current state (normal, hover, pressed, etc.)
- int location; // buttons location (wxLEFT, wxRIGHT, or wxCENTER)
- wxBitmap bitmap; // button's hover bitmap
- wxBitmap dis_bitmap; // button's disabled bitmap
- wxRect rect; // button's hit rectangle
-};
-
-
-#ifndef SWIG
-WX_DECLARE_USER_EXPORTED_OBJARRAY(wxAuiNotebookPage, wxAuiNotebookPageArray, WXDLLIMPEXP_AUI);
-WX_DECLARE_USER_EXPORTED_OBJARRAY(wxAuiTabContainerButton, wxAuiTabContainerButtonArray, WXDLLIMPEXP_AUI);
-#endif
-
-
-// tab art class
-
-class WXDLLIMPEXP_AUI wxAuiTabArt
-{
-public:
-
- wxAuiTabArt() { }
- virtual ~wxAuiTabArt() { }
-
- virtual wxAuiTabArt* Clone() = 0;
- virtual void SetFlags(unsigned int flags) = 0;
-
- virtual void SetSizingInfo(const wxSize& tab_ctrl_size,
- size_t tab_count) = 0;
-
- virtual void SetNormalFont(const wxFont& font) = 0;
- virtual void SetSelectedFont(const wxFont& font) = 0;
- virtual void SetMeasuringFont(const wxFont& font) = 0;
-
- virtual void DrawBackground(
- wxDC& dc,
- wxWindow* wnd,
- const wxRect& rect) = 0;
-
- virtual void DrawTab(wxDC& dc,
- wxWindow* wnd,
- const wxAuiNotebookPage& pane,
- const wxRect& in_rect,
- int close_button_state,
- wxRect* out_tab_rect,
- wxRect* out_button_rect,
- int* x_extent) = 0;
-
- virtual void DrawButton(
- wxDC& dc,
- wxWindow* wnd,
- const wxRect& in_rect,
- int bitmap_id,
- int button_state,
- int orientation,
- wxRect* out_rect) = 0;
-
- virtual wxSize GetTabSize(
- wxDC& dc,
- wxWindow* wnd,
- const wxString& caption,
- const wxBitmap& bitmap,
- bool active,
- int close_button_state,
- int* x_extent) = 0;
-
- virtual int ShowDropDown(
- wxWindow* wnd,
- const wxAuiNotebookPageArray& items,
- int active_idx) = 0;
-
- virtual int GetIndentSize() = 0;
-
- virtual int GetBestTabCtrlSize(
- wxWindow* wnd,
- const wxAuiNotebookPageArray& pages,
- const wxSize& required_bmp_size) = 0;
-};
-
-
-class WXDLLIMPEXP_AUI wxAuiDefaultTabArt : public wxAuiTabArt
-{
-
-public:
-
- wxAuiDefaultTabArt();
- virtual ~wxAuiDefaultTabArt();
-
- wxAuiTabArt* Clone();
- void SetFlags(unsigned int flags);
- void SetSizingInfo(const wxSize& tab_ctrl_size,
- size_t tab_count);
-
- void SetNormalFont(const wxFont& font);
- void SetSelectedFont(const wxFont& font);
- void SetMeasuringFont(const wxFont& font);
-
- void DrawBackground(
- wxDC& dc,
- wxWindow* wnd,
- const wxRect& rect);
-
- void DrawTab(wxDC& dc,
- wxWindow* wnd,
- const wxAuiNotebookPage& pane,
- const wxRect& in_rect,
- int close_button_state,
- wxRect* out_tab_rect,
- wxRect* out_button_rect,
- int* x_extent);
-
- void DrawButton(
- wxDC& dc,
- wxWindow* wnd,
- const wxRect& in_rect,
- int bitmap_id,
- int button_state,
- int orientation,
- wxRect* out_rect);
-
- int GetIndentSize();
-
- wxSize GetTabSize(
- wxDC& dc,
- wxWindow* wnd,
- const wxString& caption,
- const wxBitmap& bitmap,
- bool active,
- int close_button_state,
- int* x_extent);
-
- int ShowDropDown(
- wxWindow* wnd,
- const wxAuiNotebookPageArray& items,
- int active_idx);
-
- int GetBestTabCtrlSize(wxWindow* wnd,
- const wxAuiNotebookPageArray& pages,
- const wxSize& required_bmp_size);
-
-protected:
-
- wxFont m_normal_font;
- wxFont m_selected_font;
- wxFont m_measuring_font;
- wxColour m_base_colour;
- wxPen m_base_colour_pen;
- wxPen m_border_pen;
- wxBrush m_base_colour_brush;
- wxBitmap m_active_close_bmp;
- wxBitmap m_disabled_close_bmp;
- wxBitmap m_active_left_bmp;
- wxBitmap m_disabled_left_bmp;
- wxBitmap m_active_right_bmp;
- wxBitmap m_disabled_right_bmp;
- wxBitmap m_active_windowlist_bmp;
- wxBitmap m_disabled_windowlist_bmp;
-
- int m_fixed_tab_width;
- int m_tab_ctrl_height;
- unsigned int m_flags;
-};
-
-
-class WXDLLIMPEXP_AUI wxAuiSimpleTabArt : public wxAuiTabArt
-{
-
-public:
-
- wxAuiSimpleTabArt();
- virtual ~wxAuiSimpleTabArt();
-
- wxAuiTabArt* Clone();
- void SetFlags(unsigned int flags);
-
- void SetSizingInfo(const wxSize& tab_ctrl_size,
- size_t tab_count);
-
- void SetNormalFont(const wxFont& font);
- void SetSelectedFont(const wxFont& font);
- void SetMeasuringFont(const wxFont& font);
-
- void DrawBackground(
- wxDC& dc,
- wxWindow* wnd,
- const wxRect& rect);
-
- void DrawTab(wxDC& dc,
- wxWindow* wnd,
- const wxAuiNotebookPage& pane,
- const wxRect& in_rect,
- int close_button_state,
- wxRect* out_tab_rect,
- wxRect* out_button_rect,
- int* x_extent);
-
- void DrawButton(
- wxDC& dc,
- wxWindow* wnd,
- const wxRect& in_rect,
- int bitmap_id,
- int button_state,
- int orientation,
- wxRect* out_rect);
-
- int GetIndentSize();
-
- wxSize GetTabSize(
- wxDC& dc,
- wxWindow* wnd,
- const wxString& caption,
- const wxBitmap& bitmap,
- bool active,
- int close_button_state,
- int* x_extent);
-
- int ShowDropDown(
- wxWindow* wnd,
- const wxAuiNotebookPageArray& items,
- int active_idx);
-
- int GetBestTabCtrlSize(wxWindow* wnd,
- const wxAuiNotebookPageArray& pages,
- const wxSize& required_bmp_size);
-
-protected:
-
- wxFont m_normal_font;
- wxFont m_selected_font;
- wxFont m_measuring_font;
- wxPen m_normal_bkpen;
- wxPen m_selected_bkpen;
- wxBrush m_normal_bkbrush;
- wxBrush m_selected_bkbrush;
- wxBrush m_bkbrush;
- wxBitmap m_active_close_bmp;
- wxBitmap m_disabled_close_bmp;
- wxBitmap m_active_left_bmp;
- wxBitmap m_disabled_left_bmp;
- wxBitmap m_active_right_bmp;
- wxBitmap m_disabled_right_bmp;
- wxBitmap m_active_windowlist_bmp;
- wxBitmap m_disabled_windowlist_bmp;
-
- int m_fixed_tab_width;
- unsigned int m_flags;
-};
-
-
-
-
-
-
-
-
-
-class WXDLLIMPEXP_AUI wxAuiTabContainer
-{
-public:
-
- wxAuiTabContainer();
- virtual ~wxAuiTabContainer();
-
- void SetArtProvider(wxAuiTabArt* art);
- wxAuiTabArt* GetArtProvider() const;
-
- void SetFlags(unsigned int flags);
- unsigned int GetFlags() const;
-
- bool AddPage(wxWindow* page, const wxAuiNotebookPage& info);
- bool InsertPage(wxWindow* page, const wxAuiNotebookPage& info, size_t idx);
- bool MovePage(wxWindow* page, size_t new_idx);
- bool RemovePage(wxWindow* page);
- bool SetActivePage(wxWindow* page);
- bool SetActivePage(size_t page);
- void SetNoneActive();
- int GetActivePage() const;
- bool TabHitTest(int x, int y, wxWindow** hit) const;
- bool ButtonHitTest(int x, int y, wxAuiTabContainerButton** hit) const;
- wxWindow* GetWindowFromIdx(size_t idx) const;
- int GetIdxFromWindow(wxWindow* page) const;
- size_t GetPageCount() const;
- wxAuiNotebookPage& GetPage(size_t idx);
- const wxAuiNotebookPage& GetPage(size_t idx) const;
- wxAuiNotebookPageArray& GetPages();
- void SetNormalFont(const wxFont& normal_font);
- void SetSelectedFont(const wxFont& selected_font);
- void SetMeasuringFont(const wxFont& measuring_font);
- void DoShowHide();
- void SetRect(const wxRect& rect);
-
- void RemoveButton(int id);
- void AddButton(int id,
- int location,
- const wxBitmap& normal_bitmap = wxNullBitmap,
- const wxBitmap& disabled_bitmap = wxNullBitmap);
-
- size_t GetTabOffset() const;
- void SetTabOffset(size_t offset);
-
- // Is the tab visible?
- bool IsTabVisible(int tabPage, int tabOffset, wxDC* dc, wxWindow* wnd);
-
- // Make the tab visible if it wasn't already
- void MakeTabVisible(int tabPage, wxWindow* win);
-
-protected:
-
- virtual void Render(wxDC* dc, wxWindow* wnd);
-
-protected:
-
- wxAuiTabArt* m_art;
- wxAuiNotebookPageArray m_pages;
- wxAuiTabContainerButtonArray m_buttons;
- wxAuiTabContainerButtonArray m_tab_close_buttons;
- wxRect m_rect;
- size_t m_tab_offset;
- unsigned int m_flags;
-};
-
-
-
-class WXDLLIMPEXP_AUI wxAuiTabCtrl : public wxControl,
- public wxAuiTabContainer
-{
-public:
-
- wxAuiTabCtrl(wxWindow* parent,
- wxWindowID id = wxID_ANY,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize,
- long style = 0);
-
- ~wxAuiTabCtrl();
-
-#if wxABI_VERSION >= 20805
- bool IsDragging() const { return m_is_dragging; }
-#endif
-
-protected:
-
- void OnPaint(wxPaintEvent& evt);
- void OnEraseBackground(wxEraseEvent& evt);
- void OnSize(wxSizeEvent& evt);
- void OnLeftDown(wxMouseEvent& evt);
- void OnLeftUp(wxMouseEvent& evt);
-#if wxABI_VERSION >= 20805
- void OnMiddleDown(wxMouseEvent& evt);
- void OnMiddleUp(wxMouseEvent& evt);
- void OnRightDown(wxMouseEvent& evt);
- void OnRightUp(wxMouseEvent& evt);
- void OnLeftDClick(wxMouseEvent& evt);
- void OnSetFocus(wxFocusEvent& evt);
- void OnKillFocus(wxFocusEvent& evt);
- void OnChar(wxKeyEvent& evt);
-#endif
-#if wxABI_VERSION >= 20809
- void OnCaptureLost(wxMouseCaptureLostEvent& evt);
-#endif
- void OnMotion(wxMouseEvent& evt);
- void OnLeaveWindow(wxMouseEvent& evt);
- void OnButton(wxAuiNotebookEvent& evt);
-
-protected:
-
- wxPoint m_click_pt;
- wxWindow* m_click_tab;
- bool m_is_dragging;
- wxAuiTabContainerButton* m_hover_button;
- wxAuiTabContainerButton* m_pressed_button;
-
-#ifndef SWIG
- DECLARE_CLASS(wxAuiTabCtrl)
- DECLARE_EVENT_TABLE()
-#endif
-};
-
-
-
-
-class WXDLLIMPEXP_AUI wxAuiNotebook : public wxControl
-{
-
-public:
-
- wxAuiNotebook();
-
- wxAuiNotebook(wxWindow* parent,
- wxWindowID id = wxID_ANY,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize,
- long style = wxAUI_NB_DEFAULT_STYLE);
-
- virtual ~wxAuiNotebook();
-
- bool Create(wxWindow* parent,
- wxWindowID id = wxID_ANY,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize,
- long style = 0);
-
- void SetWindowStyleFlag(long style);
- void SetArtProvider(wxAuiTabArt* art);
- wxAuiTabArt* GetArtProvider() const;
-
- virtual void SetUniformBitmapSize(const wxSize& size);
- virtual void SetTabCtrlHeight(int height);
-
- bool AddPage(wxWindow* page,
- const wxString& caption,
- bool select = false,
- const wxBitmap& bitmap = wxNullBitmap);
-
- bool InsertPage(size_t page_idx,
- wxWindow* page,
- const wxString& caption,
- bool select = false,
- const wxBitmap& bitmap = wxNullBitmap);
-
- bool DeletePage(size_t page);
- bool RemovePage(size_t page);
-
- size_t GetPageCount() const;
- wxWindow* GetPage(size_t page_idx) const;
- int GetPageIndex(wxWindow* page_wnd) const;
-
- bool SetPageText(size_t page, const wxString& text);
- wxString GetPageText(size_t page_idx) const;
-
- bool SetPageBitmap(size_t page, const wxBitmap& bitmap);
- wxBitmap GetPageBitmap(size_t page_idx) const;
-
- size_t SetSelection(size_t new_page);
- int GetSelection() const;
-
- virtual void Split(size_t page, int direction);
-
-#if wxABI_VERSION >= 20801
- const wxAuiManager& GetAuiManager() const { return m_mgr; }
-#endif
-
-#if wxABI_VERSION >= 20805
- // Sets the normal font
- void SetNormalFont(const wxFont& font);
-
- // Sets the selected tab font
- void SetSelectedFont(const wxFont& font);
-
- // Sets the measuring font
- void SetMeasuringFont(const wxFont& font);
-
- // Sets the tab font
- virtual bool SetFont(const wxFont& font);
-
- // Gets the tab control height
- int GetTabCtrlHeight() const;
-
- // Gets the height of the notebook for a given page height
- int GetHeightForPageHeight(int pageHeight);
-
- // Advances the selection, generation page selection events
- void AdvanceSelection(bool forward = true);
-
- // Shows the window menu
- bool ShowWindowMenu();
-#endif
-
-protected:
-
- // these can be overridden
- virtual void UpdateTabCtrlHeight();
- virtual int CalculateTabCtrlHeight();
- virtual wxSize CalculateNewSplitSize();
-
-protected:
-
- void DoSizing();
- void InitNotebook(long style);
- wxAuiTabCtrl* GetTabCtrlFromPoint(const wxPoint& pt);
- wxWindow* GetTabFrameFromTabCtrl(wxWindow* tab_ctrl);
- wxAuiTabCtrl* GetActiveTabCtrl();
- bool FindTab(wxWindow* page, wxAuiTabCtrl** ctrl, int* idx);
- void RemoveEmptyTabFrames();
- void UpdateHintWindowSize();
-
-protected:
-
- void OnChildFocus(wxChildFocusEvent& evt);
- void OnRender(wxAuiManagerEvent& evt);
- void OnSize(wxSizeEvent& evt);
- void OnTabClicked(wxCommandEvent& evt);
- void OnTabBeginDrag(wxCommandEvent& evt);
- void OnTabDragMotion(wxCommandEvent& evt);
- void OnTabEndDrag(wxCommandEvent& evt);
- void OnTabButton(wxCommandEvent& evt);
-#if wxABI_VERSION >= 20805
- void OnTabMiddleDown(wxCommandEvent& evt);
- void OnTabMiddleUp(wxCommandEvent& evt);
- void OnTabRightDown(wxCommandEvent& evt);
- void OnTabRightUp(wxCommandEvent& evt);
- void OnNavigationKey(wxNavigationKeyEvent& event);
- void OnTabBgDClick(wxCommandEvent& evt);
-#endif
-
-protected:
-
- wxAuiManager m_mgr;
- wxAuiTabContainer m_tabs;
- int m_curpage;
- int m_tab_id_counter;
- wxWindow* m_dummy_wnd;
-
- wxSize m_requested_bmp_size;
- int m_requested_tabctrl_height;
- wxFont m_selected_font;
- wxFont m_normal_font;
- int m_tab_ctrl_height;
-
- int m_last_drag_x;
- unsigned int m_flags;
-
-#ifndef SWIG
- DECLARE_CLASS(wxAuiNotebook)
- DECLARE_EVENT_TABLE()
-#endif
-};
-
-
-
-
-// wx event machinery
-
-#ifndef SWIG
-
-BEGIN_DECLARE_EVENT_TYPES()
- DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_AUI, wxEVT_COMMAND_AUINOTEBOOK_PAGE_CLOSE, 0)
- DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_AUI, wxEVT_COMMAND_AUINOTEBOOK_PAGE_CHANGED, 0)
- DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_AUI, wxEVT_COMMAND_AUINOTEBOOK_PAGE_CHANGING, 0)
- DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_AUI, wxEVT_COMMAND_AUINOTEBOOK_BUTTON, 0)
- DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_AUI, wxEVT_COMMAND_AUINOTEBOOK_BEGIN_DRAG, 0)
- DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_AUI, wxEVT_COMMAND_AUINOTEBOOK_END_DRAG, 0)
- DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_AUI, wxEVT_COMMAND_AUINOTEBOOK_DRAG_MOTION, 0)
- DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_AUI, wxEVT_COMMAND_AUINOTEBOOK_ALLOW_DND, 0)
-#if wxABI_VERSION >= 20805
- DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_AUI, wxEVT_COMMAND_AUINOTEBOOK_TAB_MIDDLE_DOWN, 0)
- DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_AUI, wxEVT_COMMAND_AUINOTEBOOK_TAB_MIDDLE_UP, 0)
- DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_AUI, wxEVT_COMMAND_AUINOTEBOOK_TAB_RIGHT_DOWN, 0)
- DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_AUI, wxEVT_COMMAND_AUINOTEBOOK_TAB_RIGHT_UP, 0)
- DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_AUI, wxEVT_COMMAND_AUINOTEBOOK_PAGE_CLOSED, 0)
- DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_AUI, wxEVT_COMMAND_AUINOTEBOOK_DRAG_DONE, 0)
- DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_AUI, wxEVT_COMMAND_AUINOTEBOOK_BG_DCLICK, 0)
-#endif
-END_DECLARE_EVENT_TYPES()
-
-typedef void (wxEvtHandler::*wxAuiNotebookEventFunction)(wxAuiNotebookEvent&);
-
-#define wxAuiNotebookEventHandler(func) \
- (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxAuiNotebookEventFunction, &func)
-
-#define EVT_AUINOTEBOOK_PAGE_CLOSE(winid, fn) \
- wx__DECLARE_EVT1(wxEVT_COMMAND_AUINOTEBOOK_PAGE_CLOSE, winid, wxAuiNotebookEventHandler(fn))
-#define EVT_AUINOTEBOOK_PAGE_CLOSED(winid, fn) \
- wx__DECLARE_EVT1(wxEVT_COMMAND_AUINOTEBOOK_PAGE_CLOSED, winid, wxAuiNotebookEventHandler(fn))
-#define EVT_AUINOTEBOOK_PAGE_CHANGED(winid, fn) \
- wx__DECLARE_EVT1(wxEVT_COMMAND_AUINOTEBOOK_PAGE_CHANGED, winid, wxAuiNotebookEventHandler(fn))
-#define EVT_AUINOTEBOOK_PAGE_CHANGING(winid, fn) \
- wx__DECLARE_EVT1(wxEVT_COMMAND_AUINOTEBOOK_PAGE_CHANGING, winid, wxAuiNotebookEventHandler(fn))
-#define EVT_AUINOTEBOOK_BUTTON(winid, fn) \
- wx__DECLARE_EVT1(wxEVT_COMMAND_AUINOTEBOOK_BUTTON, winid, wxAuiNotebookEventHandler(fn))
-#define EVT_AUINOTEBOOK_BEGIN_DRAG(winid, fn) \
- wx__DECLARE_EVT1(wxEVT_COMMAND_AUINOTEBOOK_BEGIN_DRAG, winid, wxAuiNotebookEventHandler(fn))
-#define EVT_AUINOTEBOOK_END_DRAG(winid, fn) \
- wx__DECLARE_EVT1(wxEVT_COMMAND_AUINOTEBOOK_END_DRAG, winid, wxAuiNotebookEventHandler(fn))
-#define EVT_AUINOTEBOOK_DRAG_MOTION(winid, fn) \
- wx__DECLARE_EVT1(wxEVT_COMMAND_AUINOTEBOOK_DRAG_MOTION, winid, wxAuiNotebookEventHandler(fn))
-#define EVT_AUINOTEBOOK_ALLOW_DND(winid, fn) \
- wx__DECLARE_EVT1(wxEVT_COMMAND_AUINOTEBOOK_ALLOW_DND, winid, wxAuiNotebookEventHandler(fn))
-
-#if wxABI_VERSION >= 20805
-#define EVT_AUINOTEBOOK_TAB_MIDDLE_DOWN(winid, fn) \
- wx__DECLARE_EVT1(wxEVT_COMMAND_AUINOTEBOOK_TAB_MIDDLE_DOWN, winid, wxAuiNotebookEventHandler(fn))
-#define EVT_AUINOTEBOOK_TAB_MIDDLE_UP(winid, fn) \
- wx__DECLARE_EVT1(wxEVT_COMMAND_AUINOTEBOOK_TAB_MIDDLE_UP, winid, wxAuiNotebookEventHandler(fn))
-#define EVT_AUINOTEBOOK_TAB_RIGHT_DOWN(winid, fn) \
- wx__DECLARE_EVT1(wxEVT_COMMAND_AUINOTEBOOK_TAB_RIGHT_DOWN, winid, wxAuiNotebookEventHandler(fn))
-#define EVT_AUINOTEBOOK_TAB_RIGHT_UP(winid, fn) \
- wx__DECLARE_EVT1(wxEVT_COMMAND_AUINOTEBOOK_TAB_RIGHT_UP, winid, wxAuiNotebookEventHandler(fn))
-#define EVT_AUINOTEBOOK_DRAG_DONE(winid, fn) \
- wx__DECLARE_EVT1(wxEVT_COMMAND_AUINOTEBOOK_DRAG_DONE, winid, wxAuiNotebookEventHandler(fn))
-#define EVT_AUINOTEBOOK_BG_DCLICK(winid, fn) \
- wx__DECLARE_EVT1(wxEVT_COMMAND_AUINOTEBOOK_BG_DCLICK, winid, wxAuiNotebookEventHandler(fn))
-#endif
-
-#else
-
-// wxpython/swig event work
-%constant wxEventType wxEVT_COMMAND_AUINOTEBOOK_PAGE_CLOSE;
-%constant wxEventType wxEVT_COMMAND_AUINOTEBOOK_PAGE_CLOSED;
-%constant wxEventType wxEVT_COMMAND_AUINOTEBOOK_PAGE_CHANGED;
-%constant wxEventType wxEVT_COMMAND_AUINOTEBOOK_PAGE_CHANGING;
-%constant wxEventType wxEVT_COMMAND_AUINOTEBOOK_BUTTON;
-%constant wxEventType wxEVT_COMMAND_AUINOTEBOOK_BEGIN_DRAG;
-%constant wxEventType wxEVT_COMMAND_AUINOTEBOOK_END_DRAG;
-%constant wxEventType wxEVT_COMMAND_AUINOTEBOOK_DRAG_MOTION;
-%constant wxEventType wxEVT_COMMAND_AUINOTEBOOK_ALLOW_DND;
-%constant wxEventType wxEVT_COMMAND_AUINOTEBOOK_DRAG_DONE;
-%constant wxEventType wxEVT_COMMAND_AUINOTEBOOK_BG_DCLICK;
-%constant wxEventType wxEVT_COMMAND_AUINOTEBOOK_TAB_MIDDLE_DOWN;
-%constant wxEventType wxEVT_COMMAND_AUINOTEBOOK_TAB_MIDDLE_UP;
-%constant wxEventType wxEVT_COMMAND_AUINOTEBOOK_TAB_RIGHT_DOWN;
-%constant wxEventType wxEVT_COMMAND_AUINOTEBOOK_TAB_RIGHT_UP;
-
-%pythoncode {
- EVT_AUINOTEBOOK_PAGE_CLOSE = wx.PyEventBinder( wxEVT_COMMAND_AUINOTEBOOK_PAGE_CLOSE, 1 )
- EVT_AUINOTEBOOK_PAGE_CLOSED = wx.PyEventBinder( wxEVT_COMMAND_AUINOTEBOOK_PAGE_CLOSED, 1 )
- EVT_AUINOTEBOOK_PAGE_CHANGED = wx.PyEventBinder( wxEVT_COMMAND_AUINOTEBOOK_PAGE_CHANGED, 1 )
- EVT_AUINOTEBOOK_PAGE_CHANGING = wx.PyEventBinder( wxEVT_COMMAND_AUINOTEBOOK_PAGE_CHANGING, 1 )
- EVT_AUINOTEBOOK_BUTTON = wx.PyEventBinder( wxEVT_COMMAND_AUINOTEBOOK_BUTTON, 1 )
- EVT_AUINOTEBOOK_BEGIN_DRAG = wx.PyEventBinder( wxEVT_COMMAND_AUINOTEBOOK_BEGIN_DRAG, 1 )
- EVT_AUINOTEBOOK_END_DRAG = wx.PyEventBinder( wxEVT_COMMAND_AUINOTEBOOK_END_DRAG, 1 )
- EVT_AUINOTEBOOK_DRAG_MOTION = wx.PyEventBinder( wxEVT_COMMAND_AUINOTEBOOK_DRAG_MOTION, 1 )
- EVT_AUINOTEBOOK_ALLOW_DND = wx.PyEventBinder( wxEVT_COMMAND_AUINOTEBOOK_ALLOW_DND, 1 )
- EVT_AUINOTEBOOK_DRAG_DONE = wx.PyEventBinder( wxEVT_COMMAND_AUINOTEBOOK_DRAG_DONE, 1 )
- EVT_AUINOTEBOOK_BG_DCLICK = wx.PyEventBinder( wxEVT_COMMAND_AUINOTEBOOK_BG_DCLICK, 1 )
- EVT_AUINOTEBOOK_TAB_MIDDLE_DOWN = wx.PyEventBinder( wxEVT_COMMAND_AUINOTEBOOK_TAB_MIDDLE_DOWN, 1 )
- EVT_AUINOTEBOOK_TAB_MIDDLE_UP = wx.PyEventBinder( wxEVT_COMMAND_AUINOTEBOOK_TAB_MIDDLE_UP , 1 )
- EVT_AUINOTEBOOK_TAB_RIGHT_DOWN = wx.PyEventBinder( wxEVT_COMMAND_AUINOTEBOOK_TAB_RIGHT_DOWN, 1 )
- EVT_AUINOTEBOOK_TAB_RIGHT_UP = wx.PyEventBinder( wxEVT_COMMAND_AUINOTEBOOK_TAB_RIGHT_UP, 1 )
-}
-#endif
-
-
-#endif // wxUSE_AUI
-#endif // _WX_AUINOTEBOOK_H_
diff --git a/Externals/wxWidgets/include/wx/aui/dockart.h b/Externals/wxWidgets/include/wx/aui/dockart.h
deleted file mode 100644
index 0c5bfe2a6a..0000000000
--- a/Externals/wxWidgets/include/wx/aui/dockart.h
+++ /dev/null
@@ -1,173 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Name: wx/aui/dockart.h
-// Purpose: wxaui: wx advanced user interface - docking window manager
-// Author: Benjamin I. Williams
-// Modified by:
-// Created: 2005-05-17
-// RCS-ID: $Id: dockart.h 43154 2006-11-07 10:29:02Z BIW $
-// Copyright: (C) Copyright 2005, Kirix Corporation, All Rights Reserved.
-// Licence: wxWindows Library Licence, Version 3.1
-///////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_DOCKART_H_
-#define _WX_DOCKART_H_
-
-// ----------------------------------------------------------------------------
-// headers
-// ----------------------------------------------------------------------------
-
-#include "wx/defs.h"
-
-#if wxUSE_AUI
-
-#include "wx/pen.h"
-#include "wx/brush.h"
-#include "wx/bitmap.h"
-#include "wx/colour.h"
-
-// dock art provider code - a dock provider provides all drawing
-// functionality to the wxAui dock manager. This allows the dock
-// manager to have plugable look-and-feels
-
-class WXDLLIMPEXP_AUI wxAuiDockArt
-{
-public:
-
- wxAuiDockArt() { }
- virtual ~wxAuiDockArt() { }
-
- virtual int GetMetric(int id) = 0;
- virtual void SetMetric(int id, int new_val) = 0;
- virtual void SetFont(int id, const wxFont& font) = 0;
- virtual wxFont GetFont(int id) = 0;
- virtual wxColour GetColour(int id) = 0;
- virtual void SetColour(int id, const wxColor& colour) = 0;
- wxColour GetColor(int id) { return GetColour(id); }
- void SetColor(int id, const wxColour& color) { SetColour(id, color); }
-
- virtual void DrawSash(wxDC& dc,
- wxWindow* window,
- int orientation,
- const wxRect& rect) = 0;
-
- virtual void DrawBackground(wxDC& dc,
- wxWindow* window,
- int orientation,
- const wxRect& rect) = 0;
-
- virtual void DrawCaption(wxDC& dc,
- wxWindow* window,
- const wxString& text,
- const wxRect& rect,
- wxAuiPaneInfo& pane) = 0;
-
- virtual void DrawGripper(wxDC& dc,
- wxWindow* window,
- const wxRect& rect,
- wxAuiPaneInfo& pane) = 0;
-
- virtual void DrawBorder(wxDC& dc,
- wxWindow* window,
- const wxRect& rect,
- wxAuiPaneInfo& pane) = 0;
-
- virtual void DrawPaneButton(wxDC& dc,
- wxWindow* window,
- int button,
- int button_state,
- const wxRect& rect,
- wxAuiPaneInfo& pane) = 0;
-};
-
-
-// this is the default art provider for wxAuiManager. Dock art
-// can be customized by creating a class derived from this one,
-// or replacing this class entirely
-
-class WXDLLIMPEXP_AUI wxAuiDefaultDockArt : public wxAuiDockArt
-{
-public:
-
- wxAuiDefaultDockArt();
-
- int GetMetric(int metric_id);
- void SetMetric(int metric_id, int new_val);
- wxColour GetColour(int id);
- void SetColour(int id, const wxColor& colour);
- void SetFont(int id, const wxFont& font);
- wxFont GetFont(int id);
-
- void DrawSash(wxDC& dc,
- wxWindow *window,
- int orientation,
- const wxRect& rect);
-
- void DrawBackground(wxDC& dc,
- wxWindow *window,
- int orientation,
- const wxRect& rect);
-
- void DrawCaption(wxDC& dc,
- wxWindow *window,
- const wxString& text,
- const wxRect& rect,
- wxAuiPaneInfo& pane);
-
- void DrawGripper(wxDC& dc,
- wxWindow *window,
- const wxRect& rect,
- wxAuiPaneInfo& pane);
-
- void DrawBorder(wxDC& dc,
- wxWindow *window,
- const wxRect& rect,
- wxAuiPaneInfo& pane);
-
- void DrawPaneButton(wxDC& dc,
- wxWindow *window,
- int button,
- int button_state,
- const wxRect& rect,
- wxAuiPaneInfo& pane);
-
-protected:
-
- void DrawCaptionBackground(wxDC& dc, const wxRect& rect, bool active);
-
-protected:
-
- wxPen m_border_pen;
- wxBrush m_sash_brush;
- wxBrush m_background_brush;
- wxBrush m_gripper_brush;
- wxFont m_caption_font;
- wxBitmap m_inactive_close_bitmap;
- wxBitmap m_inactive_pin_bitmap;
- wxBitmap m_inactive_maximize_bitmap;
- wxBitmap m_inactive_restore_bitmap;
- wxBitmap m_active_close_bitmap;
- wxBitmap m_active_pin_bitmap;
- wxBitmap m_active_maximize_bitmap;
- wxBitmap m_active_restore_bitmap;
- wxPen m_gripper_pen1;
- wxPen m_gripper_pen2;
- wxPen m_gripper_pen3;
- wxColour m_base_colour;
- wxColour m_active_caption_colour;
- wxColour m_active_caption_gradient_colour;
- wxColour m_active_caption_text_colour;
- wxColour m_inactive_caption_colour;
- wxColour m_inactive_caption_gradient_colour;
- wxColour m_inactive_caption_text_colour;
- int m_border_size;
- int m_caption_size;
- int m_sash_size;
- int m_button_size;
- int m_gripper_size;
- int m_gradient_type;
-};
-
-
-
-#endif // wxUSE_AUI
-#endif //_WX_DOCKART_H_
diff --git a/Externals/wxWidgets/include/wx/aui/floatpane.h b/Externals/wxWidgets/include/wx/aui/floatpane.h
deleted file mode 100644
index 7529594771..0000000000
--- a/Externals/wxWidgets/include/wx/aui/floatpane.h
+++ /dev/null
@@ -1,81 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Name: wx/aui/floatpane.h
-// Purpose: wxaui: wx advanced user interface - docking window manager
-// Author: Benjamin I. Williams
-// Modified by:
-// Created: 2005-05-17
-// RCS-ID: $Id: floatpane.h 43467 2006-11-17 13:07:01Z BIW $
-// Copyright: (C) Copyright 2005, Kirix Corporation, All Rights Reserved.
-// Licence: wxWindows Library Licence, Version 3.1
-///////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_FLOATPANE_H_
-#define _WX_FLOATPANE_H_
-
-// ----------------------------------------------------------------------------
-// headers
-// ----------------------------------------------------------------------------
-
-#include "wx/defs.h"
-
-#if wxUSE_AUI
-
-#include "wx/frame.h"
-
-#if defined( __WXMSW__ ) || defined( __WXMAC__ ) || defined( __WXGTK__ )
-#include "wx/minifram.h"
-#define wxAuiFloatingFrameBaseClass wxMiniFrame
-#else
-#define wxAuiFloatingFrameBaseClass wxFrame
-#endif
-
-class WXDLLIMPEXP_AUI wxAuiFloatingFrame : public wxAuiFloatingFrameBaseClass
-{
-public:
- wxAuiFloatingFrame(wxWindow* parent,
- wxAuiManager* owner_mgr,
- const wxAuiPaneInfo& pane,
- wxWindowID id = wxID_ANY,
- long style = wxRESIZE_BORDER | wxSYSTEM_MENU | wxCAPTION |
- wxFRAME_NO_TASKBAR | wxFRAME_FLOAT_ON_PARENT |
- wxCLIP_CHILDREN
- );
- virtual ~wxAuiFloatingFrame();
- void SetPaneWindow(const wxAuiPaneInfo& pane);
- wxAuiManager* GetOwnerManager() const;
-
-protected:
- virtual void OnMoveStart();
- virtual void OnMoving(const wxRect& window_rect, wxDirection dir);
- virtual void OnMoveFinished();
-
-private:
- void OnSize(wxSizeEvent& event);
- void OnClose(wxCloseEvent& event);
- void OnMoveEvent(wxMoveEvent& event);
- void OnIdle(wxIdleEvent& event);
- void OnActivate(wxActivateEvent& event);
- static bool isMouseDown();
-
-private:
- wxWindow* m_pane_window; // pane window being managed
- bool m_solid_drag; // true if system uses solid window drag
- bool m_moving;
- wxRect m_last_rect;
- wxRect m_last2_rect;
- wxRect m_last3_rect;
- wxSize m_last_size;
- wxDirection m_lastDirection;
-
- wxAuiManager* m_owner_mgr;
- wxAuiManager m_mgr;
-
-#ifndef SWIG
- DECLARE_EVENT_TABLE()
- DECLARE_CLASS(wxAuiFloatingFrame)
-#endif // SWIG
-};
-
-#endif // wxUSE_AUI
-#endif //_WX_FLOATPANE_H_
-
diff --git a/Externals/wxWidgets/include/wx/aui/framemanager.h b/Externals/wxWidgets/include/wx/aui/framemanager.h
deleted file mode 100644
index c267ad233b..0000000000
--- a/Externals/wxWidgets/include/wx/aui/framemanager.h
+++ /dev/null
@@ -1,856 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Name: wx/aui/framemanager.h
-// Purpose: wxaui: wx advanced user interface - docking window manager
-// Author: Benjamin I. Williams
-// Modified by:
-// Created: 2005-05-17
-// RCS-ID: $Id: framemanager.h 57885 2009-01-07 14:51:49Z JS $
-// Copyright: (C) Copyright 2005, Kirix Corporation, All Rights Reserved.
-// Licence: wxWindows Library Licence, Version 3.1
-///////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_FRAMEMANAGER_H_
-#define _WX_FRAMEMANAGER_H_
-
-// ----------------------------------------------------------------------------
-// headers
-// ----------------------------------------------------------------------------
-
-#include "wx/defs.h"
-
-#if wxUSE_AUI
-
-#include "wx/dynarray.h"
-#include "wx/gdicmn.h"
-#include "wx/window.h"
-#include "wx/timer.h"
-#include "wx/sizer.h"
-
-enum wxAuiManagerDock
-{
- wxAUI_DOCK_NONE = 0,
- wxAUI_DOCK_TOP = 1,
- wxAUI_DOCK_RIGHT = 2,
- wxAUI_DOCK_BOTTOM = 3,
- wxAUI_DOCK_LEFT = 4,
- wxAUI_DOCK_CENTER = 5,
- wxAUI_DOCK_CENTRE = wxAUI_DOCK_CENTER
-};
-
-enum wxAuiManagerOption
-{
- wxAUI_MGR_ALLOW_FLOATING = 1 << 0,
- wxAUI_MGR_ALLOW_ACTIVE_PANE = 1 << 1,
- wxAUI_MGR_TRANSPARENT_DRAG = 1 << 2,
- wxAUI_MGR_TRANSPARENT_HINT = 1 << 3,
- wxAUI_MGR_VENETIAN_BLINDS_HINT = 1 << 4,
- wxAUI_MGR_RECTANGLE_HINT = 1 << 5,
- wxAUI_MGR_HINT_FADE = 1 << 6,
- wxAUI_MGR_NO_VENETIAN_BLINDS_FADE = 1 << 7,
- wxAUI_MGR_LIVE_RESIZE = 1 << 8,
-
- wxAUI_MGR_DEFAULT = wxAUI_MGR_ALLOW_FLOATING |
- wxAUI_MGR_TRANSPARENT_HINT |
- wxAUI_MGR_HINT_FADE |
- wxAUI_MGR_NO_VENETIAN_BLINDS_FADE
-};
-
-
-enum wxAuiPaneDockArtSetting
-{
- wxAUI_DOCKART_SASH_SIZE = 0,
- wxAUI_DOCKART_CAPTION_SIZE = 1,
- wxAUI_DOCKART_GRIPPER_SIZE = 2,
- wxAUI_DOCKART_PANE_BORDER_SIZE = 3,
- wxAUI_DOCKART_PANE_BUTTON_SIZE = 4,
- wxAUI_DOCKART_BACKGROUND_COLOUR = 5,
- wxAUI_DOCKART_SASH_COLOUR = 6,
- wxAUI_DOCKART_ACTIVE_CAPTION_COLOUR = 7,
- wxAUI_DOCKART_ACTIVE_CAPTION_GRADIENT_COLOUR = 8,
- wxAUI_DOCKART_INACTIVE_CAPTION_COLOUR = 9,
- wxAUI_DOCKART_INACTIVE_CAPTION_GRADIENT_COLOUR = 10,
- wxAUI_DOCKART_ACTIVE_CAPTION_TEXT_COLOUR = 11,
- wxAUI_DOCKART_INACTIVE_CAPTION_TEXT_COLOUR = 12,
- wxAUI_DOCKART_BORDER_COLOUR = 13,
- wxAUI_DOCKART_GRIPPER_COLOUR = 14,
- wxAUI_DOCKART_CAPTION_FONT = 15,
- wxAUI_DOCKART_GRADIENT_TYPE = 16
-};
-
-enum wxAuiPaneDockArtGradients
-{
- wxAUI_GRADIENT_NONE = 0,
- wxAUI_GRADIENT_VERTICAL = 1,
- wxAUI_GRADIENT_HORIZONTAL = 2
-};
-
-enum wxAuiPaneButtonState
-{
- wxAUI_BUTTON_STATE_NORMAL = 0,
- wxAUI_BUTTON_STATE_HOVER = 1 << 1,
- wxAUI_BUTTON_STATE_PRESSED = 1 << 2,
- wxAUI_BUTTON_STATE_DISABLED = 1 << 3,
- wxAUI_BUTTON_STATE_HIDDEN = 1 << 4,
- wxAUI_BUTTON_STATE_CHECKED = 1 << 5
-};
-
-enum wxAuiButtonId
-{
- wxAUI_BUTTON_CLOSE = 101,
- wxAUI_BUTTON_MAXIMIZE_RESTORE = 102,
- wxAUI_BUTTON_MINIMIZE = 103,
- wxAUI_BUTTON_PIN = 104,
- wxAUI_BUTTON_OPTIONS = 105,
- wxAUI_BUTTON_WINDOWLIST = 106,
- wxAUI_BUTTON_LEFT = 107,
- wxAUI_BUTTON_RIGHT = 108,
- wxAUI_BUTTON_UP = 109,
- wxAUI_BUTTON_DOWN = 110,
- wxAUI_BUTTON_CUSTOM1 = 201,
- wxAUI_BUTTON_CUSTOM2 = 202,
- wxAUI_BUTTON_CUSTOM3 = 203
-};
-
-enum wxAuiPaneInsertLevel
-{
- wxAUI_INSERT_PANE = 0,
- wxAUI_INSERT_ROW = 1,
- wxAUI_INSERT_DOCK = 2
-};
-
-
-
-
-// forwards and array declarations
-class wxAuiDockUIPart;
-class wxAuiPaneButton;
-class wxAuiPaneInfo;
-class wxAuiDockInfo;
-class wxAuiDockArt;
-class wxAuiManagerEvent;
-
-#ifndef SWIG
-WX_DECLARE_USER_EXPORTED_OBJARRAY(wxAuiDockInfo, wxAuiDockInfoArray, WXDLLIMPEXP_AUI);
-WX_DECLARE_USER_EXPORTED_OBJARRAY(wxAuiDockUIPart, wxAuiDockUIPartArray, WXDLLIMPEXP_AUI);
-WX_DECLARE_USER_EXPORTED_OBJARRAY(wxAuiPaneButton, wxAuiPaneButtonArray, WXDLLIMPEXP_AUI);
-WX_DECLARE_USER_EXPORTED_OBJARRAY(wxAuiPaneInfo, wxAuiPaneInfoArray, WXDLLIMPEXP_AUI);
-WX_DEFINE_USER_EXPORTED_ARRAY_PTR(wxAuiPaneInfo*, wxAuiPaneInfoPtrArray, class WXDLLIMPEXP_AUI);
-WX_DEFINE_USER_EXPORTED_ARRAY_PTR(wxAuiDockInfo*, wxAuiDockInfoPtrArray, class WXDLLIMPEXP_AUI);
-#endif // SWIG
-
-extern WXDLLIMPEXP_AUI wxAuiDockInfo wxAuiNullDockInfo;
-extern WXDLLIMPEXP_AUI wxAuiPaneInfo wxAuiNullPaneInfo;
-
-
-
-class WXDLLIMPEXP_AUI wxAuiPaneInfo
-{
-public:
-
- wxAuiPaneInfo()
- {
- window = NULL;
- frame = NULL;
- state = 0;
- dock_direction = wxAUI_DOCK_LEFT;
- dock_layer = 0;
- dock_row = 0;
- dock_pos = 0;
- floating_pos = wxDefaultPosition;
- floating_size = wxDefaultSize;
- best_size = wxDefaultSize;
- min_size = wxDefaultSize;
- max_size = wxDefaultSize;
- dock_proportion = 0;
-
- DefaultPane();
- }
-
- ~wxAuiPaneInfo() {}
-
-#ifndef SWIG
- wxAuiPaneInfo(const wxAuiPaneInfo& c)
- {
- name = c.name;
- caption = c.caption;
- window = c.window;
- frame = c.frame;
- state = c.state;
- dock_direction = c.dock_direction;
- dock_layer = c.dock_layer;
- dock_row = c.dock_row;
- dock_pos = c.dock_pos;
- best_size = c.best_size;
- min_size = c.min_size;
- max_size = c.max_size;
- floating_pos = c.floating_pos;
- floating_size = c.floating_size;
- dock_proportion = c.dock_proportion;
- buttons = c.buttons;
- rect = c.rect;
- }
-
- wxAuiPaneInfo& operator=(const wxAuiPaneInfo& c)
- {
- name = c.name;
- caption = c.caption;
- window = c.window;
- frame = c.frame;
- state = c.state;
- dock_direction = c.dock_direction;
- dock_layer = c.dock_layer;
- dock_row = c.dock_row;
- dock_pos = c.dock_pos;
- best_size = c.best_size;
- min_size = c.min_size;
- max_size = c.max_size;
- floating_pos = c.floating_pos;
- floating_size = c.floating_size;
- dock_proportion = c.dock_proportion;
- buttons = c.buttons;
- rect = c.rect;
- return *this;
- }
-#endif // SWIG
-
- // Write the safe parts of a newly loaded PaneInfo structure "source" into "this"
- // used on loading perspectives etc.
- void SafeSet(wxAuiPaneInfo source)
- {
- // note source is not passed by reference so we can overwrite, to keep the
- // unsafe bits of "dest"
- source.window = window;
- source.frame = frame;
- source.buttons = buttons;
- // now assign
- *this = source;
- }
-
- bool IsOk() const { return (window != NULL) ? true : false; }
- bool IsFixed() const { return !HasFlag(optionResizable); }
- bool IsResizable() const { return HasFlag(optionResizable); }
- bool IsShown() const { return !HasFlag(optionHidden); }
- bool IsFloating() const { return HasFlag(optionFloating); }
- bool IsDocked() const { return !HasFlag(optionFloating); }
- bool IsToolbar() const { return HasFlag(optionToolbar); }
- bool IsTopDockable() const { return HasFlag(optionTopDockable); }
- bool IsBottomDockable() const { return HasFlag(optionBottomDockable); }
- bool IsLeftDockable() const { return HasFlag(optionLeftDockable); }
- bool IsRightDockable() const { return HasFlag(optionRightDockable); }
- bool IsFloatable() const { return HasFlag(optionFloatable); }
- bool IsMovable() const { return HasFlag(optionMovable); }
- bool IsDestroyOnClose() const { return HasFlag(optionDestroyOnClose); }
- bool IsMaximized() const { return HasFlag(optionMaximized); }
- bool HasCaption() const { return HasFlag(optionCaption); }
- bool HasGripper() const { return HasFlag(optionGripper); }
- bool HasBorder() const { return HasFlag(optionPaneBorder); }
- bool HasCloseButton() const { return HasFlag(buttonClose); }
- bool HasMaximizeButton() const { return HasFlag(buttonMaximize); }
- bool HasMinimizeButton() const { return HasFlag(buttonMinimize); }
- bool HasPinButton() const { return HasFlag(buttonPin); }
- bool HasGripperTop() const { return HasFlag(optionGripperTop); }
-
-#ifdef SWIG
- %typemap(out) wxAuiPaneInfo& { $result = $self; Py_INCREF($result); }
-#endif
- wxAuiPaneInfo& Window(wxWindow* w) { window = w; return *this; }
- wxAuiPaneInfo& Name(const wxString& n) { name = n; return *this; }
- wxAuiPaneInfo& Caption(const wxString& c) { caption = c; return *this; }
- wxAuiPaneInfo& Left() { dock_direction = wxAUI_DOCK_LEFT; return *this; }
- wxAuiPaneInfo& Right() { dock_direction = wxAUI_DOCK_RIGHT; return *this; }
- wxAuiPaneInfo& Top() { dock_direction = wxAUI_DOCK_TOP; return *this; }
- wxAuiPaneInfo& Bottom() { dock_direction = wxAUI_DOCK_BOTTOM; return *this; }
- wxAuiPaneInfo& Center() { dock_direction = wxAUI_DOCK_CENTER; return *this; }
- wxAuiPaneInfo& Centre() { dock_direction = wxAUI_DOCK_CENTRE; return *this; }
- wxAuiPaneInfo& Direction(int direction) { dock_direction = direction; return *this; }
- wxAuiPaneInfo& Layer(int layer) { dock_layer = layer; return *this; }
- wxAuiPaneInfo& Row(int row) { dock_row = row; return *this; }
- wxAuiPaneInfo& Position(int pos) { dock_pos = pos; return *this; }
- wxAuiPaneInfo& BestSize(const wxSize& size) { best_size = size; return *this; }
- wxAuiPaneInfo& MinSize(const wxSize& size) { min_size = size; return *this; }
- wxAuiPaneInfo& MaxSize(const wxSize& size) { max_size = size; return *this; }
- wxAuiPaneInfo& BestSize(int x, int y) { best_size.Set(x,y); return *this; }
- wxAuiPaneInfo& MinSize(int x, int y) { min_size.Set(x,y); return *this; }
- wxAuiPaneInfo& MaxSize(int x, int y) { max_size.Set(x,y); return *this; }
- wxAuiPaneInfo& FloatingPosition(const wxPoint& pos) { floating_pos = pos; return *this; }
- wxAuiPaneInfo& FloatingPosition(int x, int y) { floating_pos.x = x; floating_pos.y = y; return *this; }
- wxAuiPaneInfo& FloatingSize(const wxSize& size) { floating_size = size; return *this; }
- wxAuiPaneInfo& FloatingSize(int x, int y) { floating_size.Set(x,y); return *this; }
- wxAuiPaneInfo& Fixed() { return SetFlag(optionResizable, false); }
- wxAuiPaneInfo& Resizable(bool resizable = true) { return SetFlag(optionResizable, resizable); }
- wxAuiPaneInfo& Dock() { return SetFlag(optionFloating, false); }
- wxAuiPaneInfo& Float() { return SetFlag(optionFloating, true); }
- wxAuiPaneInfo& Hide() { return SetFlag(optionHidden, true); }
- wxAuiPaneInfo& Show(bool show = true) { return SetFlag(optionHidden, !show); }
- wxAuiPaneInfo& CaptionVisible(bool visible = true) { return SetFlag(optionCaption, visible); }
- wxAuiPaneInfo& Maximize() { return SetFlag(optionMaximized, true); }
- wxAuiPaneInfo& Restore() { return SetFlag(optionMaximized, false); }
- wxAuiPaneInfo& PaneBorder(bool visible = true) { return SetFlag(optionPaneBorder, visible); }
- wxAuiPaneInfo& Gripper(bool visible = true) { return SetFlag(optionGripper, visible); }
- wxAuiPaneInfo& GripperTop(bool attop = true) { return SetFlag(optionGripperTop, attop); }
- wxAuiPaneInfo& CloseButton(bool visible = true) { return SetFlag(buttonClose, visible); }
- wxAuiPaneInfo& MaximizeButton(bool visible = true) { return SetFlag(buttonMaximize, visible); }
- wxAuiPaneInfo& MinimizeButton(bool visible = true) { return SetFlag(buttonMinimize, visible); }
- wxAuiPaneInfo& PinButton(bool visible = true) { return SetFlag(buttonPin, visible); }
- wxAuiPaneInfo& DestroyOnClose(bool b = true) { return SetFlag(optionDestroyOnClose, b); }
- wxAuiPaneInfo& TopDockable(bool b = true) { return SetFlag(optionTopDockable, b); }
- wxAuiPaneInfo& BottomDockable(bool b = true) { return SetFlag(optionBottomDockable, b); }
- wxAuiPaneInfo& LeftDockable(bool b = true) { return SetFlag(optionLeftDockable, b); }
- wxAuiPaneInfo& RightDockable(bool b = true) { return SetFlag(optionRightDockable, b); }
- wxAuiPaneInfo& Floatable(bool b = true) { return SetFlag(optionFloatable, b); }
- wxAuiPaneInfo& Movable(bool b = true) { return SetFlag(optionMovable, b); }
-#if wxABI_VERSION >= 20807
- wxAuiPaneInfo& DockFixed(bool b = true) { return SetFlag(optionDockFixed, b); }
-#endif
-
- wxAuiPaneInfo& Dockable(bool b = true)
- {
- return TopDockable(b).BottomDockable(b).LeftDockable(b).RightDockable(b);
- }
-
- wxAuiPaneInfo& DefaultPane()
- {
- state |= optionTopDockable | optionBottomDockable |
- optionLeftDockable | optionRightDockable |
- optionFloatable | optionMovable | optionResizable |
- optionCaption | optionPaneBorder | buttonClose;
- return *this;
- }
-
- wxAuiPaneInfo& CentrePane() { return CenterPane(); }
- wxAuiPaneInfo& CenterPane()
- {
- state = 0;
- return Center().PaneBorder().Resizable();
- }
-
- wxAuiPaneInfo& ToolbarPane()
- {
- DefaultPane();
- state |= (optionToolbar | optionGripper);
- state &= ~(optionResizable | optionCaption);
- if (dock_layer == 0)
- dock_layer = 10;
- return *this;
- }
-
- wxAuiPaneInfo& SetFlag(unsigned int flag, bool option_state)
- {
- if (option_state)
- state |= flag;
- else
- state &= ~flag;
- return *this;
- }
-
- bool HasFlag(unsigned int flag) const
- {
- return (state & flag) ? true:false;
- }
-
-#ifdef SWIG
- %typemap(out) wxAuiPaneInfo& ;
-#endif
-
-public:
-
- // NOTE: You can add and subtract flags from this list,
- // but do not change the values of the flags, because
- // they are stored in a binary integer format in the
- // perspective string. If you really need to change the
- // values around, you'll have to ensure backwards-compatibility
- // in the perspective loading code.
- enum wxAuiPaneState
- {
- optionFloating = 1 << 0,
- optionHidden = 1 << 1,
- optionLeftDockable = 1 << 2,
- optionRightDockable = 1 << 3,
- optionTopDockable = 1 << 4,
- optionBottomDockable = 1 << 5,
- optionFloatable = 1 << 6,
- optionMovable = 1 << 7,
- optionResizable = 1 << 8,
- optionPaneBorder = 1 << 9,
- optionCaption = 1 << 10,
- optionGripper = 1 << 11,
- optionDestroyOnClose = 1 << 12,
- optionToolbar = 1 << 13,
- optionActive = 1 << 14,
- optionGripperTop = 1 << 15,
- optionMaximized = 1 << 16,
- optionDockFixed = 1 << 17,
-
- buttonClose = 1 << 21,
- buttonMaximize = 1 << 22,
- buttonMinimize = 1 << 23,
- buttonPin = 1 << 24,
-
- buttonCustom1 = 1 << 26,
- buttonCustom2 = 1 << 27,
- buttonCustom3 = 1 << 28,
-
- savedHiddenState = 1 << 30, // used internally
- actionPane = 1 << 31 // used internally
- };
-
-public:
- wxString name; // name of the pane
- wxString caption; // caption displayed on the window
-
- wxWindow* window; // window that is in this pane
- wxFrame* frame; // floating frame window that holds the pane
- unsigned int state; // a combination of wxPaneState values
-
- int dock_direction; // dock direction (top, bottom, left, right, center)
- int dock_layer; // layer number (0 = innermost layer)
- int dock_row; // row number on the docking bar (0 = first row)
- int dock_pos; // position inside the row (0 = first position)
-
- wxSize best_size; // size that the layout engine will prefer
- wxSize min_size; // minimum size the pane window can tolerate
- wxSize max_size; // maximum size the pane window can tolerate
-
- wxPoint floating_pos; // position while floating
- wxSize floating_size; // size while floating
- int dock_proportion; // proportion while docked
-
- wxAuiPaneButtonArray buttons; // buttons on the pane
-
- wxRect rect; // current rectangle (populated by wxAUI)
-};
-
-
-
-class WXDLLIMPEXP_FWD_AUI wxAuiFloatingFrame;
-
-class WXDLLIMPEXP_AUI wxAuiManager : public wxEvtHandler
-{
-friend class wxAuiFloatingFrame;
-
-public:
-
- wxAuiManager(wxWindow* managed_wnd = NULL,
- unsigned int flags = wxAUI_MGR_DEFAULT);
- virtual ~wxAuiManager();
- void UnInit();
-
- void SetFlags(unsigned int flags);
- unsigned int GetFlags() const;
-
- void SetManagedWindow(wxWindow* managed_wnd);
- wxWindow* GetManagedWindow() const;
-
- static wxAuiManager* GetManager(wxWindow* window);
-
- void SetArtProvider(wxAuiDockArt* art_provider);
- wxAuiDockArt* GetArtProvider() const;
-
- wxAuiPaneInfo& GetPane(wxWindow* window);
- wxAuiPaneInfo& GetPane(const wxString& name);
- wxAuiPaneInfoArray& GetAllPanes();
-
- bool AddPane(wxWindow* window,
- const wxAuiPaneInfo& pane_info);
-
- bool AddPane(wxWindow* window,
- const wxAuiPaneInfo& pane_info,
- const wxPoint& drop_pos);
-
- bool AddPane(wxWindow* window,
- int direction = wxLEFT,
- const wxString& caption = wxEmptyString);
-
- bool InsertPane(wxWindow* window,
- const wxAuiPaneInfo& insert_location,
- int insert_level = wxAUI_INSERT_PANE);
-
- bool DetachPane(wxWindow* window);
-
- void Update();
-
- wxString SavePaneInfo(wxAuiPaneInfo& pane);
- void LoadPaneInfo(wxString pane_part, wxAuiPaneInfo &pane);
- wxString SavePerspective();
- bool LoadPerspective(const wxString& perspective, bool update = true);
-
- void SetDockSizeConstraint(double width_pct, double height_pct);
- void GetDockSizeConstraint(double* width_pct, double* height_pct) const;
-
- void ClosePane(wxAuiPaneInfo& pane_info);
- void MaximizePane(wxAuiPaneInfo& pane_info);
- void RestorePane(wxAuiPaneInfo& pane_info);
- void RestoreMaximizedPane();
-
-public:
-
- virtual wxAuiFloatingFrame* CreateFloatingFrame(wxWindow* parent, const wxAuiPaneInfo& p);
-
- void StartPaneDrag(
- wxWindow* pane_window,
- const wxPoint& offset);
-
- wxRect CalculateHintRect(
- wxWindow* pane_window,
- const wxPoint& pt,
- const wxPoint& offset);
-
- void DrawHintRect(
- wxWindow* pane_window,
- const wxPoint& pt,
- const wxPoint& offset);
-
- virtual void ShowHint(const wxRect& rect);
- virtual void HideHint();
-
-public:
-
- // deprecated -- please use SetManagedWindow() and
- // and GetManagedWindow() instead
-
- wxDEPRECATED( void SetFrame(wxFrame* frame) );
- wxDEPRECATED( wxFrame* GetFrame() const );
-
-protected:
-
- void UpdateHintWindowConfig();
-
- void DoFrameLayout();
-
- void LayoutAddPane(wxSizer* container,
- wxAuiDockInfo& dock,
- wxAuiPaneInfo& pane,
- wxAuiDockUIPartArray& uiparts,
- bool spacer_only);
-
- void LayoutAddDock(wxSizer* container,
- wxAuiDockInfo& dock,
- wxAuiDockUIPartArray& uiparts,
- bool spacer_only);
-
- wxSizer* LayoutAll(wxAuiPaneInfoArray& panes,
- wxAuiDockInfoArray& docks,
- wxAuiDockUIPartArray& uiparts,
- bool spacer_only = false);
-
- virtual bool ProcessDockResult(wxAuiPaneInfo& target,
- const wxAuiPaneInfo& new_pos);
-
- bool DoDrop(wxAuiDockInfoArray& docks,
- wxAuiPaneInfoArray& panes,
- wxAuiPaneInfo& drop,
- const wxPoint& pt,
- const wxPoint& action_offset = wxPoint(0,0));
-
- wxAuiDockUIPart* HitTest(int x, int y);
- wxAuiDockUIPart* GetPanePart(wxWindow* pane);
- int GetDockPixelOffset(wxAuiPaneInfo& test);
- void OnFloatingPaneMoveStart(wxWindow* window);
- void OnFloatingPaneMoving(wxWindow* window, wxDirection dir );
- void OnFloatingPaneMoved(wxWindow* window, wxDirection dir);
- void OnFloatingPaneActivated(wxWindow* window);
- void OnFloatingPaneClosed(wxWindow* window, wxCloseEvent& evt);
- void OnFloatingPaneResized(wxWindow* window, const wxSize& size);
- void Render(wxDC* dc);
- void Repaint(wxDC* dc = NULL);
- void ProcessMgrEvent(wxAuiManagerEvent& event);
- void UpdateButtonOnScreen(wxAuiDockUIPart* button_ui_part,
- const wxMouseEvent& event);
- void GetPanePositionsAndSizes(wxAuiDockInfo& dock,
- wxArrayInt& positions,
- wxArrayInt& sizes);
-
-#if wxABI_VERSION >= 20810
- /// Ends a resize action, or for live update, resizes the sash
- bool DoEndResizeAction(wxMouseEvent& event);
-#endif
-
-public:
-
- // public events (which can be invoked externally)
- void OnRender(wxAuiManagerEvent& evt);
- void OnPaneButton(wxAuiManagerEvent& evt);
-
-protected:
-
- // protected events
- void OnPaint(wxPaintEvent& evt);
- void OnEraseBackground(wxEraseEvent& evt);
- void OnSize(wxSizeEvent& evt);
- void OnSetCursor(wxSetCursorEvent& evt);
- void OnLeftDown(wxMouseEvent& evt);
- void OnLeftUp(wxMouseEvent& evt);
- void OnMotion(wxMouseEvent& evt);
- void OnLeaveWindow(wxMouseEvent& evt);
- void OnChildFocus(wxChildFocusEvent& evt);
- void OnHintFadeTimer(wxTimerEvent& evt);
- void OnFindManager(wxAuiManagerEvent& evt);
-
-protected:
-
- enum
- {
- actionNone = 0,
- actionResize,
- actionClickButton,
- actionClickCaption,
- actionDragToolbarPane,
- actionDragFloatingPane
- };
-
-protected:
-
- wxWindow* m_frame; // the window being managed
- wxAuiDockArt* m_art; // dock art object which does all drawing
- unsigned int m_flags; // manager flags wxAUI_MGR_*
-
- wxAuiPaneInfoArray m_panes; // array of panes structures
- wxAuiDockInfoArray m_docks; // array of docks structures
- wxAuiDockUIPartArray m_uiparts; // array of UI parts (captions, buttons, etc)
-
- int m_action; // current mouse action
- wxPoint m_action_start; // position where the action click started
- wxPoint m_action_offset; // offset from upper left of the item clicked
- wxAuiDockUIPart* m_action_part; // ptr to the part the action happened to
- wxWindow* m_action_window; // action frame or window (NULL if none)
- wxRect m_action_hintrect; // hint rectangle for the action
- wxRect m_last_rect;
- wxAuiDockUIPart* m_hover_button;// button uipart being hovered over
- wxRect m_last_hint; // last hint rectangle
- wxPoint m_last_mouse_move; // last mouse move position (see OnMotion)
- bool m_skipping;
- bool m_has_maximized;
-
- double m_dock_constraint_x; // 0.0 .. 1.0; max pct of window width a dock can consume
- double m_dock_constraint_y; // 0.0 .. 1.0; max pct of window height a dock can consume
-
- wxFrame* m_hint_wnd; // transparent hint window, if supported by platform
- wxTimer m_hint_fadetimer; // transparent fade timer
- wxByte m_hint_fadeamt; // transparent fade amount
- wxByte m_hint_fademax; // maximum value of hint fade
-
- void* m_reserved;
-
-#ifndef SWIG
- DECLARE_EVENT_TABLE()
- DECLARE_CLASS(wxAuiManager)
-#endif // SWIG
-};
-
-
-
-// event declarations/classes
-
-class WXDLLIMPEXP_AUI wxAuiManagerEvent : public wxEvent
-{
-public:
- wxAuiManagerEvent(wxEventType type=wxEVT_NULL) : wxEvent(0, type)
- {
- manager = NULL;
- pane = NULL;
- button = 0;
- veto_flag = false;
- canveto_flag = true;
- dc = NULL;
- }
-#ifndef SWIG
- wxAuiManagerEvent(const wxAuiManagerEvent& c) : wxEvent(c)
- {
- manager = c.manager;
- pane = c.pane;
- button = c.button;
- veto_flag = c.veto_flag;
- canveto_flag = c.canveto_flag;
- dc = c.dc;
- }
-#endif
- wxEvent *Clone() const { return new wxAuiManagerEvent(*this); }
-
- void SetManager(wxAuiManager* mgr) { manager = mgr; }
- void SetPane(wxAuiPaneInfo* p) { pane = p; }
- void SetButton(int b) { button = b; }
- void SetDC(wxDC* pdc) { dc = pdc; }
-
- wxAuiManager* GetManager() const { return manager; }
- wxAuiPaneInfo* GetPane() const { return pane; }
- int GetButton() const { return button; }
- wxDC* GetDC() const { return dc; }
-
- void Veto(bool veto = true) { veto_flag = veto; }
- bool GetVeto() const { return veto_flag; }
- void SetCanVeto(bool can_veto) { canveto_flag = can_veto; }
- bool CanVeto() const { return canveto_flag && veto_flag; }
-
-public:
- wxAuiManager* manager;
- wxAuiPaneInfo* pane;
- int button;
- bool veto_flag;
- bool canveto_flag;
- wxDC* dc;
-
-#ifndef SWIG
-private:
- DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxAuiManagerEvent)
-#endif
-};
-
-
-class WXDLLIMPEXP_AUI wxAuiDockInfo
-{
-public:
- wxAuiDockInfo()
- {
- dock_direction = 0;
- dock_layer = 0;
- dock_row = 0;
- size = 0;
- min_size = 0;
- resizable = true;
- fixed = false;
- toolbar = false;
- reserved1 = false;
- }
-
-#ifndef SWIG
- wxAuiDockInfo(const wxAuiDockInfo& c)
- {
- dock_direction = c.dock_direction;
- dock_layer = c.dock_layer;
- dock_row = c.dock_row;
- size = c.size;
- min_size = c.min_size;
- resizable = c.resizable;
- fixed = c.fixed;
- toolbar = c.toolbar;
- panes = c.panes;
- rect = c.rect;
- reserved1 = c.reserved1;
- }
-
- wxAuiDockInfo& operator=(const wxAuiDockInfo& c)
- {
- dock_direction = c.dock_direction;
- dock_layer = c.dock_layer;
- dock_row = c.dock_row;
- size = c.size;
- min_size = c.min_size;
- resizable = c.resizable;
- fixed = c.fixed;
- toolbar = c.toolbar;
- panes = c.panes;
- rect = c.rect;
- reserved1 = c.reserved1;
- return *this;
- }
-#endif // SWIG
-
- bool IsOk() const { return (dock_direction != 0) ? true : false; }
- bool IsHorizontal() const { return (dock_direction == wxAUI_DOCK_TOP ||
- dock_direction == wxAUI_DOCK_BOTTOM) ? true:false; }
- bool IsVertical() const { return (dock_direction == wxAUI_DOCK_LEFT ||
- dock_direction == wxAUI_DOCK_RIGHT ||
- dock_direction == wxAUI_DOCK_CENTER) ? true:false; }
-public:
- wxAuiPaneInfoPtrArray panes; // array of panes
- wxRect rect; // current rectangle
- int dock_direction; // dock direction (top, bottom, left, right, center)
- int dock_layer; // layer number (0 = innermost layer)
- int dock_row; // row number on the docking bar (0 = first row)
- int size; // size of the dock
- int min_size; // minimum size of a dock (0 if there is no min)
- bool resizable; // flag indicating whether the dock is resizable
- bool toolbar; // flag indicating dock contains only toolbars
- bool fixed; // flag indicating that the dock operates on
- // absolute coordinates as opposed to proportional
- bool reserved1;
-};
-
-
-class WXDLLIMPEXP_AUI wxAuiDockUIPart
-{
-public:
- enum
- {
- typeCaption,
- typeGripper,
- typeDock,
- typeDockSizer,
- typePane,
- typePaneSizer,
- typeBackground,
- typePaneBorder,
- typePaneButton
- };
-
- int type; // ui part type (see enum above)
- int orientation; // orientation (either wxHORIZONTAL or wxVERTICAL)
- wxAuiDockInfo* dock; // which dock the item is associated with
- wxAuiPaneInfo* pane; // which pane the item is associated with
- wxAuiPaneButton* button; // which pane button the item is associated with
- wxSizer* cont_sizer; // the part's containing sizer
- wxSizerItem* sizer_item; // the sizer item of the part
- wxRect rect; // client coord rectangle of the part itself
-};
-
-
-class WXDLLIMPEXP_AUI wxAuiPaneButton
-{
-public:
- int button_id; // id of the button (e.g. buttonClose)
-};
-
-
-
-#ifndef SWIG
-// wx event machinery
-
-BEGIN_DECLARE_EVENT_TYPES()
- DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_AUI, wxEVT_AUI_PANE_BUTTON, 0)
- DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_AUI, wxEVT_AUI_PANE_CLOSE, 0)
- DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_AUI, wxEVT_AUI_PANE_MAXIMIZE, 0)
- DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_AUI, wxEVT_AUI_PANE_RESTORE, 0)
- DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_AUI, wxEVT_AUI_RENDER, 0)
- DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_AUI, wxEVT_AUI_FIND_MANAGER, 0)
-END_DECLARE_EVENT_TYPES()
-
-typedef void (wxEvtHandler::*wxAuiManagerEventFunction)(wxAuiManagerEvent&);
-
-#define wxAuiManagerEventHandler(func) \
- (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxAuiManagerEventFunction, &func)
-
-#define EVT_AUI_PANE_BUTTON(func) \
- wx__DECLARE_EVT0(wxEVT_AUI_PANE_BUTTON, wxAuiManagerEventHandler(func))
-#define EVT_AUI_PANE_CLOSE(func) \
- wx__DECLARE_EVT0(wxEVT_AUI_PANE_CLOSE, wxAuiManagerEventHandler(func))
-#define EVT_AUI_PANE_MAXIMIZE(func) \
- wx__DECLARE_EVT0(wxEVT_AUI_PANE_MAXIMIZE, wxAuiManagerEventHandler(func))
-#define EVT_AUI_PANE_RESTORE(func) \
- wx__DECLARE_EVT0(wxEVT_AUI_PANE_RESTORE, wxAuiManagerEventHandler(func))
-#define EVT_AUI_RENDER(func) \
- wx__DECLARE_EVT0(wxEVT_AUI_RENDER, wxAuiManagerEventHandler(func))
-#define EVT_AUI_FIND_MANAGER(func) \
- wx__DECLARE_EVT0(wxEVT_AUI_FIND_MANAGER, wxAuiManagerEventHandler(func))
-
-#else
-
-%constant wxEventType wxEVT_AUI_PANE_BUTTON;
-%constant wxEventType wxEVT_AUI_PANE_CLOSE;
-%constant wxEventType wxEVT_AUI_PANE_MAXIMIZE;
-%constant wxEventType wxEVT_AUI_PANE_RESTORE;
-%constant wxEventType wxEVT_AUI_RENDER;
-%constant wxEventType wxEVT_AUI_FIND_MANAGER;
-
-%pythoncode {
- EVT_AUI_PANE_BUTTON = wx.PyEventBinder( wxEVT_AUI_PANE_BUTTON )
- EVT_AUI_PANE_CLOSE = wx.PyEventBinder( wxEVT_AUI_PANE_CLOSE )
- EVT_AUI_PANE_MAXIMIZE = wx.PyEventBinder( wxEVT_AUI_PANE_MAXIMIZE )
- EVT_AUI_PANE_RESTORE = wx.PyEventBinder( wxEVT_AUI_PANE_RESTORE )
- EVT_AUI_RENDER = wx.PyEventBinder( wxEVT_AUI_RENDER )
- EVT_AUI_FIND_MANAGER = wx.PyEventBinder( wxEVT_AUI_FIND_MANAGER )
-}
-#endif // SWIG
-
-#endif // wxUSE_AUI
-#endif //_WX_FRAMEMANAGER_H_
-
diff --git a/Externals/wxWidgets/include/wx/aui/tabmdi.h b/Externals/wxWidgets/include/wx/aui/tabmdi.h
deleted file mode 100644
index 6fa7ac095a..0000000000
--- a/Externals/wxWidgets/include/wx/aui/tabmdi.h
+++ /dev/null
@@ -1,269 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-// Name: wx/generic/tabmdi.h
-// Purpose: Generic MDI (Multiple Document Interface) classes
-// Author: Hans Van Leemputten
-// Modified by: Benjamin I. Williams / Kirix Corporation
-// Created: 29/07/2002
-// RCS-ID: $Id: tabmdi.h 53135 2008-04-12 02:31:04Z VZ $
-// Copyright: (c) Hans Van Leemputten
-// Licence: wxWindows licence
-/////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_AUITABMDI_H_
-#define _WX_AUITABMDI_H_
-
-#if wxUSE_AUI
-
-// ----------------------------------------------------------------------------
-// headers
-// ----------------------------------------------------------------------------
-
-#include "wx/frame.h"
-#include "wx/panel.h"
-#include "wx/notebook.h"
-#include "wx/icon.h"
-#include "wx/aui/auibook.h"
-
-//-----------------------------------------------------------------------------
-// classes
-//-----------------------------------------------------------------------------
-
-class WXDLLIMPEXP_FWD_AUI wxAuiMDIParentFrame;
-class WXDLLIMPEXP_FWD_AUI wxAuiMDIClientWindow;
-class WXDLLIMPEXP_FWD_AUI wxAuiMDIChildFrame;
-
-//-----------------------------------------------------------------------------
-// wxAuiMDIParentFrame
-//-----------------------------------------------------------------------------
-
-class WXDLLIMPEXP_AUI wxAuiMDIParentFrame : public wxFrame
-{
-public:
- wxAuiMDIParentFrame();
- wxAuiMDIParentFrame(wxWindow *parent,
- wxWindowID winid,
- const wxString& title,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize,
- long style = wxDEFAULT_FRAME_STYLE | wxVSCROLL | wxHSCROLL,
- const wxString& name = wxFrameNameStr);
-
- ~wxAuiMDIParentFrame();
-
- bool Create(wxWindow *parent,
- wxWindowID winid,
- const wxString& title,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize,
- long style = wxDEFAULT_FRAME_STYLE | wxVSCROLL | wxHSCROLL,
- const wxString& name = wxFrameNameStr );
-
- void SetArtProvider(wxAuiTabArt* provider);
- wxAuiTabArt* GetArtProvider();
- wxAuiNotebook* GetNotebook() const;
-
-#if wxUSE_MENUS
- wxMenu* GetWindowMenu() const { return m_pWindowMenu; }
- void SetWindowMenu(wxMenu* pMenu);
-
- virtual void SetMenuBar(wxMenuBar *pMenuBar);
-#endif // wxUSE_MENUS
-
- void SetChildMenuBar(wxAuiMDIChildFrame *pChild);
-
- virtual bool ProcessEvent(wxEvent& event);
-
- wxAuiMDIChildFrame *GetActiveChild() const;
- void SetActiveChild(wxAuiMDIChildFrame* pChildFrame);
-
- wxAuiMDIClientWindow *GetClientWindow() const;
- virtual wxAuiMDIClientWindow *OnCreateClient();
-
- virtual void Cascade() { /* Has no effect */ }
- virtual void Tile(wxOrientation orient = wxHORIZONTAL);
- virtual void ArrangeIcons() { /* Has no effect */ }
- virtual void ActivateNext();
- virtual void ActivatePrevious();
-
-protected:
- wxAuiMDIClientWindow* m_pClientWindow;
- wxAuiMDIChildFrame* m_pActiveChild;
- wxEvent* m_pLastEvt;
-
-#if wxUSE_MENUS
- wxMenu *m_pWindowMenu;
- wxMenuBar *m_pMyMenuBar;
-#endif // wxUSE_MENUS
-
-protected:
- void Init();
-
-#if wxUSE_MENUS
- void RemoveWindowMenu(wxMenuBar *pMenuBar);
- void AddWindowMenu(wxMenuBar *pMenuBar);
-
- void DoHandleMenu(wxCommandEvent &event);
-#endif // wxUSE_MENUS
-
- virtual void DoGetClientSize(int *width, int *height) const;
-
-private:
- DECLARE_EVENT_TABLE()
- DECLARE_DYNAMIC_CLASS(wxAuiMDIParentFrame)
-};
-
-//-----------------------------------------------------------------------------
-// wxAuiMDIChildFrame
-//-----------------------------------------------------------------------------
-
-class WXDLLIMPEXP_AUI wxAuiMDIChildFrame : public wxPanel
-{
-public:
- wxAuiMDIChildFrame();
- wxAuiMDIChildFrame(wxAuiMDIParentFrame *parent,
- wxWindowID winid,
- const wxString& title,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize,
- long style = wxDEFAULT_FRAME_STYLE,
- const wxString& name = wxFrameNameStr);
-
- virtual ~wxAuiMDIChildFrame();
- bool Create(wxAuiMDIParentFrame *parent,
- wxWindowID winid,
- const wxString& title,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize,
- long style = wxDEFAULT_FRAME_STYLE,
- const wxString& name = wxFrameNameStr);
-
-#if wxUSE_MENUS
- virtual void SetMenuBar(wxMenuBar *menu_bar);
- virtual wxMenuBar *GetMenuBar() const;
-#endif // wxUSE_MENUS
-
- virtual void SetTitle(const wxString& title);
- virtual wxString GetTitle() const;
-
- virtual void SetIcons(const wxIconBundle& icons);
- virtual const wxIconBundle& GetIcons() const;
-
- virtual void SetIcon(const wxIcon& icon);
- virtual const wxIcon& GetIcon() const;
-
- virtual void Activate();
- virtual bool Destroy();
-
-#if wxUSE_STATUSBAR
- // no status bars
- virtual wxStatusBar* CreateStatusBar(int WXUNUSED(number) = 1,
- long WXUNUSED(style) = 1,
- wxWindowID WXUNUSED(winid) = 1,
- const wxString& WXUNUSED(name) = wxEmptyString)
- { return (wxStatusBar*)NULL; }
-
- virtual wxStatusBar *GetStatusBar() const { return (wxStatusBar*)NULL; }
- virtual void SetStatusText( const wxString &WXUNUSED(text), int WXUNUSED(number)=0 ) {}
- virtual void SetStatusWidths( int WXUNUSED(n), const int WXUNUSED(widths_field)[] ) {}
-#endif
-
- // no size hints
- virtual void DoSetSizeHints(int WXUNUSED(minW),
- int WXUNUSED(minH),
- int WXUNUSED(maxW) = wxDefaultCoord,
- int WXUNUSED(maxH) = wxDefaultCoord,
- int WXUNUSED(incW) = wxDefaultCoord,
- int WXUNUSED(incH) = wxDefaultCoord) {}
-#if wxUSE_TOOLBAR
- // no toolbar bars
- virtual wxToolBar* CreateToolBar(long WXUNUSED(style),
- wxWindowID WXUNUSED(winid),
- const wxString& WXUNUSED(name))
- { return (wxToolBar*)NULL; }
- virtual wxToolBar *GetToolBar() const { return (wxToolBar*)NULL; }
-#endif
-
-
- // no maximize etc
- virtual void Maximize(bool WXUNUSED(maximize) = true) { /* Has no effect */ }
- virtual void Restore() { /* Has no effect */ }
- virtual void Iconize(bool WXUNUSED(iconize) = true) { /* Has no effect */ }
- virtual bool IsMaximized() const { return true; }
- virtual bool IsIconized() const { return false; }
- virtual bool ShowFullScreen(bool WXUNUSED(show), long WXUNUSED(style)) { return false; }
- virtual bool IsFullScreen() const { return false; }
-
- virtual bool IsTopLevel() const { return false; }
-
- void OnMenuHighlight(wxMenuEvent& evt);
- void OnActivate(wxActivateEvent& evt);
- void OnCloseWindow(wxCloseEvent& evt);
-
- void SetMDIParentFrame(wxAuiMDIParentFrame* parent);
- wxAuiMDIParentFrame* GetMDIParentFrame() const;
-
-protected:
- void Init();
- virtual bool Show(bool show = true);
- virtual void DoSetSize(int x, int y, int width, int height, int size_flags);
- virtual void DoMoveWindow(int x, int y, int width, int height);
-
-public:
- // This function needs to be called when a size change is confirmed,
- // we needed this function to prevent anybody from the outside
- // changing the panel... it messes the UI layout when we would allow it.
- void ApplyMDIChildFrameRect();
- void DoShow(bool show);
-
-protected:
- wxAuiMDIParentFrame* m_pMDIParentFrame;
- wxRect m_mdi_newrect;
- wxRect m_mdi_currect;
- wxString m_title;
- wxIcon m_icon;
- wxIconBundle m_icon_bundle;
- bool m_activate_on_create;
-
-#if wxUSE_MENUS
- wxMenuBar* m_pMenuBar;
-#endif // wxUSE_MENUS
-
-
-
-private:
- DECLARE_DYNAMIC_CLASS(wxAuiMDIChildFrame)
- DECLARE_EVENT_TABLE()
-
- friend class wxAuiMDIClientWindow;
-};
-
-//-----------------------------------------------------------------------------
-// wxAuiMDIClientWindow
-//-----------------------------------------------------------------------------
-
-class WXDLLIMPEXP_AUI wxAuiMDIClientWindow : public wxAuiNotebook
-{
-public:
- wxAuiMDIClientWindow();
- wxAuiMDIClientWindow(wxAuiMDIParentFrame *parent, long style = 0);
- ~wxAuiMDIClientWindow();
-
- virtual bool CreateClient(wxAuiMDIParentFrame *parent,
- long style = wxVSCROLL | wxHSCROLL);
-
- virtual int SetSelection(size_t page);
-
-protected:
-
- void PageChanged(int old_selection, int new_selection);
- void OnPageClose(wxAuiNotebookEvent& evt);
- void OnPageChanged(wxAuiNotebookEvent& evt);
- void OnSize(wxSizeEvent& evt);
-
-private:
- DECLARE_DYNAMIC_CLASS(wxAuiMDIClientWindow)
- DECLARE_EVENT_TABLE()
-};
-#endif // wxUSE_AUI
-
-#endif // _WX_AUITABMDI_H_
diff --git a/Externals/wxWidgets/include/wx/beforestd.h b/Externals/wxWidgets/include/wx/beforestd.h
deleted file mode 100644
index aacfc7c41e..0000000000
--- a/Externals/wxWidgets/include/wx/beforestd.h
+++ /dev/null
@@ -1,65 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Name: include/wx/beforestd.h
-// Purpose: #include before STL headers
-// Author: Vadim Zeitlin
-// Modified by:
-// Created: 07/07/03
-// RCS-ID: $Id: beforestd.h 42906 2006-11-01 14:16:42Z VZ $
-// Copyright: (c) 2003 Vadim Zeitlin
-// Licence: wxWindows licence
-///////////////////////////////////////////////////////////////////////////////
-
-/**
- Unfortunately, when compiling at maximum warning level, the standard
- headers themselves may generate warnings -- and really lots of them. So
- before including them, this header should be included to temporarily
- suppress the warnings and after this the header afterstd.h should be
- included to enable them back again.
-
- Note that there are intentionally no inclusion guards in this file, because
- it can be included several times.
- */
-
-// VC 7.x isn't as bad as VC6 and doesn't give these warnings but eVC (which
-// defines _MSC_VER as 1201) does need to be included as it's VC6-like
-#if defined(__VISUALC__) && __VISUALC__ <= 1201
- // MSVC 5 does not have this
- #if __VISUALC__ > 1100
- // we have to disable (and reenable in afterstd.h) this one because,
- // even though it is of level 4, it is not disabled by warning(push, 1)
- // below for VC7.1!
-
- // unreachable code
- #pragma warning(disable:4702)
-
- #pragma warning(push, 1)
- #else // VC 5
- // 'expression' : signed/unsigned mismatch
- #pragma warning(disable:4018)
-
- // 'identifier' : unreferenced formal parameter
- #pragma warning(disable:4100)
-
- // 'conversion' : conversion from 'type1' to 'type2',
- // possible loss of data
- #pragma warning(disable:4244)
-
- // C++ language change: to explicitly specialize class template
- // 'identifier' use the following syntax
- #pragma warning(disable:4663)
- #endif
-
- // these warning have to be disabled and not just temporarily disabled
- // because they will be given at the end of the compilation of the
- // current source and there is absolutely nothing we can do about them
-
- // 'foo': unreferenced inline function has been removed
- #pragma warning(disable:4514)
-
- // 'function' : function not inlined
- #pragma warning(disable:4710)
-
- // 'id': identifier was truncated to 'num' characters in the debug info
- #pragma warning(disable:4786)
-#endif // VC++ < 7
-
diff --git a/Externals/wxWidgets/include/wx/bitmap.h b/Externals/wxWidgets/include/wx/bitmap.h
deleted file mode 100644
index 92d4564780..0000000000
--- a/Externals/wxWidgets/include/wx/bitmap.h
+++ /dev/null
@@ -1,241 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Name: wx/bitmap.h
-// Purpose: wxBitmap class interface
-// Author: Vaclav Slavik
-// Modified by:
-// Created: 22.04.01
-// RCS-ID: $Id: bitmap.h 49563 2007-10-31 20:46:21Z VZ $
-// Copyright: (c) wxWidgets team
-// Licence: wxWindows licence
-///////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_BITMAP_H_BASE_
-#define _WX_BITMAP_H_BASE_
-
-// ----------------------------------------------------------------------------
-// headers
-// ----------------------------------------------------------------------------
-
-#include "wx/string.h"
-#include "wx/gdicmn.h" // for wxBitmapType
-#include "wx/colour.h"
-
-class WXDLLIMPEXP_FWD_CORE wxBitmap;
-class WXDLLIMPEXP_FWD_CORE wxBitmapHandler;
-class WXDLLIMPEXP_FWD_CORE wxIcon;
-class WXDLLIMPEXP_FWD_CORE wxImage;
-class WXDLLIMPEXP_FWD_CORE wxMask;
-class WXDLLIMPEXP_FWD_CORE wxPalette;
-
-// ----------------------------------------------------------------------------
-// wxVariant support
-// ----------------------------------------------------------------------------
-
-#if wxUSE_VARIANT
-#include "wx/variant.h"
-DECLARE_VARIANT_OBJECT_EXPORTED(wxBitmap,WXDLLEXPORT)
-#endif
-
-// ----------------------------------------------------------------------------
-// wxMask represents the transparent area of the bitmap
-// ----------------------------------------------------------------------------
-
-class WXDLLEXPORT wxMaskBase : public wxObject
-{
-public:
- // create the mask from bitmap pixels of the given colour
- bool Create(const wxBitmap& bitmap, const wxColour& colour);
-
-#if wxUSE_PALETTE
- // create the mask from bitmap pixels with the given palette index
- bool Create(const wxBitmap& bitmap, int paletteIndex);
-#endif // wxUSE_PALETTE
-
- // create the mask from the given mono bitmap
- bool Create(const wxBitmap& bitmap);
-
-protected:
- // this function is called from Create() to free the existing mask data
- virtual void FreeData() = 0;
-
- // these functions must be overridden to implement the corresponding public
- // Create() methods, they shouldn't call FreeData() as it's already called
- // by the public wrappers
- virtual bool InitFromColour(const wxBitmap& bitmap,
- const wxColour& colour) = 0;
- virtual bool InitFromMonoBitmap(const wxBitmap& bitmap) = 0;
-};
-
-#if defined(__WXMGL__) || \
- defined(__WXDFB__) || \
- defined(__WXMAC__) || \
- defined(__WXGTK__) || \
- defined(__WXCOCOA__) || \
- defined(__WXMOTIF__) || \
- defined(__WXX11__)
- #define wxUSE_BITMAP_BASE 1
-#else
- #define wxUSE_BITMAP_BASE 0
-#endif
-
-// Only used by some ports
-// FIXME -- make all ports (but MSW which uses wxGDIImage) use these base classes
-#if wxUSE_BITMAP_BASE
-
-// ----------------------------------------------------------------------------
-// wxBitmapHandler: class which knows how to create/load/save bitmaps in
-// different formats
-// ----------------------------------------------------------------------------
-
-class WXDLLEXPORT wxBitmapHandlerBase : public wxObject
-{
-public:
- wxBitmapHandlerBase() { m_type = wxBITMAP_TYPE_INVALID; }
- virtual ~wxBitmapHandlerBase() { }
-
- virtual bool Create(wxBitmap *bitmap, const void* data, long flags,
- int width, int height, int depth = 1);
- virtual bool LoadFile(wxBitmap *bitmap, const wxString& name, long flags,
- int desiredWidth, int desiredHeight);
- virtual bool SaveFile(const wxBitmap *bitmap, const wxString& name,
- int type, const wxPalette *palette = NULL);
-
- void SetName(const wxString& name) { m_name = name; }
- void SetExtension(const wxString& ext) { m_extension = ext; }
- void SetType(wxBitmapType type) { m_type = type; }
- const wxString& GetName() const { return m_name; }
- const wxString& GetExtension() const { return m_extension; }
- wxBitmapType GetType() const { return m_type; }
-
-private:
- wxString m_name;
- wxString m_extension;
- wxBitmapType m_type;
-
- DECLARE_ABSTRACT_CLASS(wxBitmapHandlerBase)
-};
-
-class WXDLLEXPORT wxBitmapBase : public wxGDIObject
-{
-public:
- /*
- Derived class must implement these:
-
- wxBitmap();
- wxBitmap(int width, int height, int depth = -1);
- wxBitmap(const char bits[], int width, int height, int depth = 1);
- wxBitmap(const char* const* bits);
- wxBitmap(const wxString &filename, wxBitmapType type = wxBITMAP_TYPE_XPM);
- wxBitmap(const wxImage& image, int depth = -1);
-
- bool Create(int width, int height, int depth = -1);
-
- static void InitStandardHandlers();
- */
-
- virtual bool Ok() const { return IsOk(); }
- virtual bool IsOk() const = 0;
-
- virtual int GetHeight() const = 0;
- virtual int GetWidth() const = 0;
- virtual int GetDepth() const = 0;
-
- virtual wxImage ConvertToImage() const = 0;
-
- virtual wxMask *GetMask() const = 0;
- virtual void SetMask(wxMask *mask) = 0;
-
- virtual wxBitmap GetSubBitmap(const wxRect& rect) const = 0;
-
- virtual bool SaveFile(const wxString &name, wxBitmapType type,
- const wxPalette *palette = (wxPalette *)NULL) const = 0;
- virtual bool LoadFile(const wxString &name, wxBitmapType type) = 0;
-
- /*
- If raw bitmap access is supported (see wx/rawbmp.h), the following
- methods should be implemented:
-
- virtual bool GetRawData(wxRawBitmapData *data) = 0;
- virtual void UngetRawData(wxRawBitmapData *data) = 0;
- */
-
-#if wxUSE_PALETTE
- virtual wxPalette *GetPalette() const = 0;
- virtual void SetPalette(const wxPalette& palette) = 0;
-#endif // wxUSE_PALETTE
-
- // copies the contents and mask of the given (colour) icon to the bitmap
- virtual bool CopyFromIcon(const wxIcon& icon) = 0;
-
- // implementation:
- virtual void SetHeight(int height) = 0;
- virtual void SetWidth(int width) = 0;
- virtual void SetDepth(int depth) = 0;
-
- // Format handling
- static inline wxList& GetHandlers() { return sm_handlers; }
- static void AddHandler(wxBitmapHandlerBase *handler);
- static void InsertHandler(wxBitmapHandlerBase *handler);
- static bool RemoveHandler(const wxString& name);
- static wxBitmapHandler *FindHandler(const wxString& name);
- static wxBitmapHandler *FindHandler(const wxString& extension, wxBitmapType bitmapType);
- static wxBitmapHandler *FindHandler(wxBitmapType bitmapType);
-
- //static void InitStandardHandlers();
- // (wxBitmap must implement this one)
-
- static void CleanUpHandlers();
-
- // this method is only used by the generic implementation of wxMask
- // currently but could be useful elsewhere in the future: it can be
- // overridden to quantize the colour to correspond to bitmap colour depth
- // if necessary; default implementation simply returns the colour as is
- virtual wxColour QuantizeColour(const wxColour& colour) const
- {
- return colour;
- }
-
-protected:
- static wxList sm_handlers;
-
- DECLARE_ABSTRACT_CLASS(wxBitmapBase)
-};
-
-#endif // wxUSE_BITMAP_BASE
-
-#if defined(__WXPALMOS__)
- #include "wx/palmos/bitmap.h"
-#elif defined(__WXMSW__)
- #include "wx/msw/bitmap.h"
-#elif defined(__WXMOTIF__)
- #include "wx/x11/bitmap.h"
-#elif defined(__WXGTK20__)
- #include "wx/gtk/bitmap.h"
-#elif defined(__WXGTK__)
- #include "wx/gtk1/bitmap.h"
-#elif defined(__WXX11__)
- #include "wx/x11/bitmap.h"
-#elif defined(__WXMGL__)
- #include "wx/mgl/bitmap.h"
-#elif defined(__WXDFB__)
- #include "wx/dfb/bitmap.h"
-#elif defined(__WXMAC__)
- #include "wx/mac/bitmap.h"
-#elif defined(__WXCOCOA__)
- #include "wx/cocoa/bitmap.h"
-#elif defined(__WXPM__)
- #include "wx/os2/bitmap.h"
-#endif
-
-// we must include generic mask.h after wxBitmap definition
-#if defined(__WXMGL__) || defined(__WXDFB__)
- #define wxUSE_GENERIC_MASK 1
-#else
- #define wxUSE_GENERIC_MASK 0
-#endif
-
-#if wxUSE_GENERIC_MASK
- #include "wx/generic/mask.h"
-#endif
-
-#endif // _WX_BITMAP_H_BASE_
diff --git a/Externals/wxWidgets/include/wx/bmpbuttn.h b/Externals/wxWidgets/include/wx/bmpbuttn.h
deleted file mode 100644
index c37d2cd7c5..0000000000
--- a/Externals/wxWidgets/include/wx/bmpbuttn.h
+++ /dev/null
@@ -1,122 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-// Name: wx/bmpbutton.h
-// Purpose: wxBitmapButton class interface
-// Author: Vadim Zeitlin
-// Modified by:
-// Created: 25.08.00
-// RCS-ID: $Id: bmpbuttn.h 45498 2007-04-16 13:03:05Z VZ $
-// Copyright: (c) 2000 Vadim Zeitlin
-// Licence: wxWindows licence
-/////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_BMPBUTTON_H_BASE_
-#define _WX_BMPBUTTON_H_BASE_
-
-#include "wx/defs.h"
-
-#if wxUSE_BMPBUTTON
-
-#include "wx/bitmap.h"
-#include "wx/button.h"
-
-extern WXDLLEXPORT_DATA(const wxChar) wxButtonNameStr[];
-
-// ----------------------------------------------------------------------------
-// wxBitmapButton: a button which shows bitmaps instead of the usual string.
-// It has different bitmaps for different states (focused/disabled/pressed)
-// ----------------------------------------------------------------------------
-
-class WXDLLEXPORT wxBitmapButtonBase : public wxButton
-{
-public:
- wxBitmapButtonBase()
- {
- m_marginX =
- m_marginY = 0;
- }
-
- // set the bitmaps
- void SetBitmapLabel(const wxBitmap& bitmap)
- { m_bmpNormal = bitmap; OnSetBitmap(); }
- void SetBitmapSelected(const wxBitmap& sel)
- { m_bmpSelected = sel; OnSetBitmap(); }
- void SetBitmapFocus(const wxBitmap& focus)
- { m_bmpFocus = focus; OnSetBitmap(); }
- void SetBitmapDisabled(const wxBitmap& disabled)
- { m_bmpDisabled = disabled; OnSetBitmap(); }
- void SetBitmapHover(const wxBitmap& hover)
- { m_bmpHover = hover; OnSetBitmap(); }
-
- // retrieve the bitmaps
- const wxBitmap& GetBitmapLabel() const { return m_bmpNormal; }
- const wxBitmap& GetBitmapSelected() const { return m_bmpSelected; }
- const wxBitmap& GetBitmapFocus() const { return m_bmpFocus; }
- const wxBitmap& GetBitmapDisabled() const { return m_bmpDisabled; }
- const wxBitmap& GetBitmapHover() const { return m_bmpHover; }
- wxBitmap& GetBitmapLabel() { return m_bmpNormal; }
- wxBitmap& GetBitmapSelected() { return m_bmpSelected; }
- wxBitmap& GetBitmapFocus() { return m_bmpFocus; }
- wxBitmap& GetBitmapDisabled() { return m_bmpDisabled; }
- wxBitmap& GetBitmapHover() { return m_bmpHover; }
-
- // set/get the margins around the button
- virtual void SetMargins(int x, int y) { m_marginX = x; m_marginY = y; }
- int GetMarginX() const { return m_marginX; }
- int GetMarginY() const { return m_marginY; }
-
- // deprecated synonym for SetBitmapLabel()
-#if WXWIN_COMPATIBILITY_2_6
- wxDEPRECATED( void SetLabel(const wxBitmap& bitmap) );
-
- // prevent virtual function hiding
- virtual void SetLabel(const wxString& label)
- { wxWindow::SetLabel(label); }
-#endif // WXWIN_COMPATIBILITY_2_6
-
-protected:
- // function called when any of the bitmaps changes
- virtual void OnSetBitmap() { InvalidateBestSize(); Refresh(); }
-
- // the bitmaps for various states
- wxBitmap m_bmpNormal,
- m_bmpSelected,
- m_bmpFocus,
- m_bmpDisabled,
- m_bmpHover;
-
- // the margins around the bitmap
- int m_marginX,
- m_marginY;
-
-
- DECLARE_NO_COPY_CLASS(wxBitmapButtonBase)
-};
-
-#if WXWIN_COMPATIBILITY_2_6
-inline void wxBitmapButtonBase::SetLabel(const wxBitmap& bitmap)
-{
- SetBitmapLabel(bitmap);
-}
-#endif // WXWIN_COMPATIBILITY_2_6
-
-#if defined(__WXUNIVERSAL__)
- #include "wx/univ/bmpbuttn.h"
-#elif defined(__WXMSW__)
- #include "wx/msw/bmpbuttn.h"
-#elif defined(__WXMOTIF__)
- #include "wx/motif/bmpbuttn.h"
-#elif defined(__WXGTK20__)
- #include "wx/gtk/bmpbuttn.h"
-#elif defined(__WXGTK__)
- #include "wx/gtk1/bmpbuttn.h"
-#elif defined(__WXMAC__)
- #include "wx/mac/bmpbuttn.h"
-#elif defined(__WXCOCOA__)
- #include "wx/cocoa/bmpbuttn.h"
-#elif defined(__WXPM__)
- #include "wx/os2/bmpbuttn.h"
-#endif
-
-#endif // wxUSE_BMPBUTTON
-
-#endif // _WX_BMPBUTTON_H_BASE_
diff --git a/Externals/wxWidgets/include/wx/bmpcbox.h b/Externals/wxWidgets/include/wx/bmpcbox.h
deleted file mode 100644
index 09fb32c4cb..0000000000
--- a/Externals/wxWidgets/include/wx/bmpcbox.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-// Name: wx/bmpcbox.h
-// Purpose: wxBitmapComboBox base header
-// Author: Jaakko Salli
-// Modified by:
-// Created: Aug-31-2006
-// Copyright: (c) Jaakko Salli
-// RCS-ID: $Id: bmpcbox.h 42046 2006-10-16 09:30:01Z ABX $
-// Licence: wxWindows licence
-/////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_BMPCBOX_H_BASE_
-#define _WX_BMPCBOX_H_BASE_
-
-
-#include "wx/defs.h"
-
-#if wxUSE_BITMAPCOMBOBOX
-
-#include "wx/bitmap.h"
-
-
-extern WXDLLIMPEXP_DATA_ADV(const wxChar) wxBitmapComboBoxNameStr[];
-
-
-class WXDLLIMPEXP_ADV wxBitmapComboBoxBase
-{
-public:
- // ctors and such
- wxBitmapComboBoxBase() { }
-
- virtual ~wxBitmapComboBoxBase() { }
-
- // Returns the image of the item with the given index.
- virtual wxBitmap GetItemBitmap(unsigned int n) const = 0;
-
- // Sets the image for the given item.
- virtual void SetItemBitmap(unsigned int n, const wxBitmap& bitmap) = 0;
-
- // Returns size of the image used in list
- virtual wxSize GetBitmapSize() const = 0;
-};
-
-
-#include "wx/generic/bmpcbox.h"
-
-#endif // wxUSE_BITMAPCOMBOBOX
-
-#endif // _WX_BMPCBOX_H_BASE_
diff --git a/Externals/wxWidgets/include/wx/bookctrl.h b/Externals/wxWidgets/include/wx/bookctrl.h
deleted file mode 100644
index ba1bdfe5bc..0000000000
--- a/Externals/wxWidgets/include/wx/bookctrl.h
+++ /dev/null
@@ -1,403 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Name: wx/bookctrl.h
-// Purpose: wxBookCtrlBase: common base class for wxList/Tree/Notebook
-// Author: Vadim Zeitlin
-// Modified by:
-// Created: 19.08.03
-// RCS-ID: $Id: bookctrl.h 49563 2007-10-31 20:46:21Z VZ $
-// Copyright: (c) 2003 Vadim Zeitlin
-// Licence: wxWindows licence
-///////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_BOOKCTRL_H_
-#define _WX_BOOKCTRL_H_
-
-// ----------------------------------------------------------------------------
-// headers
-// ----------------------------------------------------------------------------
-
-#include "wx/defs.h"
-
-#if wxUSE_BOOKCTRL
-
-#include "wx/control.h"
-#include "wx/dynarray.h"
-
-WX_DEFINE_EXPORTED_ARRAY_PTR(wxWindow *, wxArrayPages);
-
-class WXDLLIMPEXP_FWD_CORE wxImageList;
-class WXDLLIMPEXP_FWD_CORE wxBookCtrlBaseEvent;
-
-// ----------------------------------------------------------------------------
-// constants
-// ----------------------------------------------------------------------------
-
-// wxBookCtrl hit results
-enum
-{
- wxBK_HITTEST_NOWHERE = 1, // not on tab
- wxBK_HITTEST_ONICON = 2, // on icon
- wxBK_HITTEST_ONLABEL = 4, // on label
- wxBK_HITTEST_ONITEM = wxBK_HITTEST_ONICON | wxBK_HITTEST_ONLABEL,
- wxBK_HITTEST_ONPAGE = 8 // not on tab control, but over the selected page
-};
-
-// wxBookCtrl flags (common for wxNotebook, wxListbook, wxChoicebook, wxTreebook)
-#define wxBK_DEFAULT 0x0000
-#define wxBK_TOP 0x0010
-#define wxBK_BOTTOM 0x0020
-#define wxBK_LEFT 0x0040
-#define wxBK_RIGHT 0x0080
-#define wxBK_ALIGN_MASK (wxBK_TOP | wxBK_BOTTOM | wxBK_LEFT | wxBK_RIGHT)
-
-// ----------------------------------------------------------------------------
-// wxBookCtrlBase
-// ----------------------------------------------------------------------------
-
-class WXDLLEXPORT wxBookCtrlBase : public wxControl
-{
-public:
- // construction
- // ------------
-
- wxBookCtrlBase()
- {
- Init();
- }
-
- wxBookCtrlBase(wxWindow *parent,
- wxWindowID winid,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize,
- long style = 0,
- const wxString& name = wxEmptyString)
- {
- Init();
-
- (void)Create(parent, winid, pos, size, style, name);
- }
-
- // quasi ctor
- bool Create(wxWindow *parent,
- wxWindowID winid,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize,
- long style = 0,
- const wxString& name = wxEmptyString);
-
- // dtor
- virtual ~wxBookCtrlBase();
-
-
- // accessors
- // ---------
-
- // get number of pages in the dialog
- virtual size_t GetPageCount() const { return m_pages.size(); }
-
- // get the panel which represents the given page
- wxWindow *GetPage(size_t n) { return m_pages[n]; }
- wxWindow *GetPage(size_t n) const { return m_pages[n]; }
-
- // get the current page or NULL if none
- wxWindow *GetCurrentPage() const
- {
- const int n = GetSelection();
- return n == wxNOT_FOUND ? NULL : GetPage(n);
- }
-
- // get the currently selected page or wxNOT_FOUND if none
- virtual int GetSelection() const = 0;
-
- // set/get the title of a page
- virtual bool SetPageText(size_t n, const wxString& strText) = 0;
- virtual wxString GetPageText(size_t n) const = 0;
-
-
- // image list stuff: each page may have an image associated with it (all
- // images belong to the same image list)
- // ---------------------------------------------------------------------
-
- // sets the image list to use, it is *not* deleted by the control
- virtual void SetImageList(wxImageList *imageList);
-
- // as SetImageList() but we will delete the image list ourselves
- void AssignImageList(wxImageList *imageList);
-
- // get pointer (may be NULL) to the associated image list
- wxImageList* GetImageList() const { return m_imageList; }
-
- // sets/returns item's image index in the current image list
- virtual int GetPageImage(size_t n) const = 0;
- virtual bool SetPageImage(size_t n, int imageId) = 0;
-
-
- // geometry
- // --------
-
- // resize the notebook so that all pages will have the specified size
- virtual void SetPageSize(const wxSize& size);
-
- // calculate the size of the control from the size of its page
- virtual wxSize CalcSizeFromPage(const wxSize& sizePage) const = 0;
-
- // get/set size of area between book control area and page area
- unsigned int GetInternalBorder() const { return m_internalBorder; }
- void SetInternalBorder(unsigned int border) { m_internalBorder = border; }
-
- // Sets/gets the margin around the controller
- void SetControlMargin(int margin) { m_controlMargin = margin; }
- int GetControlMargin() const { return m_controlMargin; }
-
- // returns true if we have wxBK_TOP or wxBK_BOTTOM style
- bool IsVertical() const { return HasFlag(wxBK_BOTTOM | wxBK_TOP); }
-
- // set/get option to shrink to fit current page
- void SetFitToCurrentPage(bool fit) { m_fitToCurrentPage = fit; }
- bool GetFitToCurrentPage() const { return m_fitToCurrentPage; }
-
- // returns the sizer containing the control, if any
- wxSizer* GetControlSizer() const { return m_controlSizer; }
-
- // operations
- // ----------
-
- // remove one page from the control and delete it
- virtual bool DeletePage(size_t n);
-
- // remove one page from the notebook, without deleting it
- virtual bool RemovePage(size_t n)
- {
- DoInvalidateBestSize();
- return DoRemovePage(n) != NULL;
- }
-
- // remove all pages and delete them
- virtual bool DeleteAllPages()
- {
- DoInvalidateBestSize();
- WX_CLEAR_ARRAY(m_pages);
- return true;
- }
-
- // adds a new page to the control
- virtual bool AddPage(wxWindow *page,
- const wxString& text,
- bool bSelect = false,
- int imageId = -1)
- {
- DoInvalidateBestSize();
- return InsertPage(GetPageCount(), page, text, bSelect, imageId);
- }
-
- // the same as AddPage(), but adds the page at the specified position
- virtual bool InsertPage(size_t n,
- wxWindow *page,
- const wxString& text,
- bool bSelect = false,
- int imageId = -1) = 0;
-
- // set the currently selected page, return the index of the previously
- // selected one (or -1 on error)
- //
- // NB: this function will generate PAGE_CHANGING/ED events
- virtual int SetSelection(size_t n) = 0;
-
- // acts as SetSelection but does not generate events
- virtual int ChangeSelection(size_t n) = 0;
-
-
- // cycle thru the pages
- void AdvanceSelection(bool forward = true)
- {
- int nPage = GetNextPage(forward);
- if ( nPage != -1 )
- {
- // cast is safe because of the check above
- SetSelection((size_t)nPage);
- }
- }
-
- // hit test: returns which page is hit and, optionally, where (icon, label)
- virtual int HitTest(const wxPoint& WXUNUSED(pt),
- long * WXUNUSED(flags) = NULL) const
- {
- return wxNOT_FOUND;
- }
-
-
- // we do have multiple pages
- virtual bool HasMultiplePages() const { return true; }
-
-
-protected:
- // flags for DoSetSelection()
- enum
- {
- SetSelection_SendEvent = 1
- };
-
- // set the selection to the given page, sending the events (which can
- // possibly prevent the page change from taking place) if SendEvent flag is
- // included
- virtual int DoSetSelection(size_t nPage, int flags = 0);
-
- // if the derived class uses DoSetSelection() for implementing
- // [Set|Change]Selection, it must override UpdateSelectedPage(),
- // CreatePageChangingEvent() and MakeChangedEvent(), but as it might not
- // use it, these functions are not pure virtual
-
- // called to notify the control about a new current page
- virtual void UpdateSelectedPage(size_t WXUNUSED(newsel))
- { wxFAIL_MSG(wxT("Override this function!")); }
-
- // create a new "page changing" event
- virtual wxBookCtrlBaseEvent* CreatePageChangingEvent() const
- { wxFAIL_MSG(wxT("Override this function!")); return NULL; }
-
- // modify the event created by CreatePageChangingEvent() to "page changed"
- // event, usually by just calling SetEventType() on it
- virtual void MakeChangedEvent(wxBookCtrlBaseEvent& WXUNUSED(event))
- { wxFAIL_MSG(wxT("Override this function!")); }
-
-
- // Should we accept NULL page pointers in Add/InsertPage()?
- //
- // Default is no but derived classes may override it if they can treat NULL
- // pages in some sensible way (e.g. wxTreebook overrides this to allow
- // having nodes without any associated page)
- virtual bool AllowNullPage() const { return false; }
-
- // remove the page and return a pointer to it
- virtual wxWindow *DoRemovePage(size_t page) = 0;
-
- // our best size is the size which fits all our pages
- virtual wxSize DoGetBestSize() const;
-
- // helper: get the next page wrapping if we reached the end
- int GetNextPage(bool forward) const;
-
- // Lay out controls
- void DoSize();
-
- // This method also invalidates the size of the controller and should be
- // called instead of just InvalidateBestSize() whenever pages are added or
- // removed as this also affects the controller
- void DoInvalidateBestSize();
-
-#if wxUSE_HELP
- // Show the help for the corresponding page
- void OnHelp(wxHelpEvent& event);
-#endif // wxUSE_HELP
-
-
- // the array of all pages of this control
- wxArrayPages m_pages;
-
- // the associated image list or NULL
- wxImageList *m_imageList;
-
- // true if we must delete m_imageList
- bool m_ownsImageList;
-
- // get the page area
- wxRect GetPageRect() const;
-
- // event handlers
- virtual wxSize GetControllerSize() const;
- void OnSize(wxSizeEvent& event);
-
- // controller buddy if available, NULL otherwise (usually for native book controls like wxNotebook)
- wxControl *m_bookctrl;
-
- // Whether to shrink to fit current page
- bool m_fitToCurrentPage;
-
- // the sizer containing the choice control
- wxSizer *m_controlSizer;
-
- // the margin around the choice control
- int m_controlMargin;
-
-private:
-
- // common part of all ctors
- void Init();
-
- // internal border
- unsigned int m_internalBorder;
-
- DECLARE_ABSTRACT_CLASS(wxBookCtrlBase)
- DECLARE_NO_COPY_CLASS(wxBookCtrlBase)
- DECLARE_EVENT_TABLE()
-};
-
-// ----------------------------------------------------------------------------
-// wxBookCtrlBaseEvent: page changing events generated by derived classes
-// ----------------------------------------------------------------------------
-
-class WXDLLEXPORT wxBookCtrlBaseEvent : public wxNotifyEvent
-{
-public:
- wxBookCtrlBaseEvent(wxEventType commandType = wxEVT_NULL, int winid = 0,
- int nSel = -1, int nOldSel = -1)
- : wxNotifyEvent(commandType, winid)
- {
- m_nSel = nSel;
- m_nOldSel = nOldSel;
- }
-
- wxBookCtrlBaseEvent(const wxBookCtrlBaseEvent& event)
- : wxNotifyEvent(event)
- {
- m_nSel = event.m_nSel;
- m_nOldSel = event.m_nOldSel;
- }
-
- // accessors
- // the currently selected page (-1 if none)
- int GetSelection() const { return m_nSel; }
- void SetSelection(int nSel) { m_nSel = nSel; }
- // the page that was selected before the change (-1 if none)
- int GetOldSelection() const { return m_nOldSel; }
- void SetOldSelection(int nOldSel) { m_nOldSel = nOldSel; }
-
-private:
- int m_nSel, // currently selected page
- m_nOldSel; // previously selected page
-};
-
-// make a default book control for given platform
-#if wxUSE_NOTEBOOK
- // dedicated to majority of desktops
- #include "wx/notebook.h"
- #define wxBookCtrl wxNotebook
- #define wxBookCtrlEvent wxNotebookEvent
- #define wxEVT_COMMAND_BOOKCTRL_PAGE_CHANGED wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED
- #define wxEVT_COMMAND_BOOKCTRL_PAGE_CHANGING wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGING
- #define EVT_BOOKCTRL_PAGE_CHANGED(id, fn) EVT_NOTEBOOK_PAGE_CHANGED(id, fn)
- #define EVT_BOOKCTRL_PAGE_CHANGING(id, fn) EVT_NOTEBOOK_PAGE_CHANGING(id, fn)
- #define wxBookctrlEventHandler(func) wxNotebookEventHandler(func)
-#else
- // dedicated to Smartphones
- #include "wx/choicebk.h"
- #define wxBookCtrl wxChoicebook
- #define wxBookCtrlEvent wxChoicebookEvent
- #define wxEVT_COMMAND_BOOKCTRL_PAGE_CHANGED wxEVT_COMMAND_CHOICEBOOK_PAGE_CHANGED
- #define wxEVT_COMMAND_BOOKCTRL_PAGE_CHANGING wxEVT_COMMAND_CHOICEBOOK_PAGE_CHANGING
- #define EVT_BOOKCTRL_PAGE_CHANGED(id, fn) EVT_CHOICEBOOK_PAGE_CHANGED(id, fn)
- #define EVT_BOOKCTRL_PAGE_CHANGING(id, fn) EVT_CHOICEBOOK_PAGE_CHANGING(id, fn)
- #define wxBookctrlEventHandler(func) wxChoicebookEventHandler(func)
-#endif
-
-#if WXWIN_COMPATIBILITY_2_6
- #define wxBC_TOP wxBK_TOP
- #define wxBC_BOTTOM wxBK_BOTTOM
- #define wxBC_LEFT wxBK_LEFT
- #define wxBC_RIGHT wxBK_RIGHT
- #define wxBC_DEFAULT wxBK_DEFAULT
-#endif
-
-#endif // wxUSE_BOOKCTRL
-
-#endif // _WX_BOOKCTRL_H_
diff --git a/Externals/wxWidgets/include/wx/brush.h b/Externals/wxWidgets/include/wx/brush.h
deleted file mode 100644
index cbf7287282..0000000000
--- a/Externals/wxWidgets/include/wx/brush.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-// Name: wx/brush.h
-// Purpose: Includes platform-specific wxBrush file
-// Author: Julian Smart
-// Modified by:
-// Created:
-// RCS-ID: $Id: brush.h 40865 2006-08-27 09:42:42Z VS $
-// Copyright: Julian Smart
-// Licence: wxWindows Licence
-/////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_BRUSH_H_BASE_
-#define _WX_BRUSH_H_BASE_
-
-#include "wx/defs.h"
-#include "wx/object.h"
-#include "wx/gdiobj.h"
-
-// wxBrushBase
-class WXDLLEXPORT wxBrushBase: public wxGDIObject
-{
-public:
- virtual ~wxBrushBase() { }
-
- virtual int GetStyle() const = 0;
-
- virtual bool IsHatch() const
- { return (GetStyle()>=wxFIRST_HATCH) && (GetStyle()<=wxLAST_HATCH); }
-};
-
-#if defined(__WXPALMOS__)
- #include "wx/palmos/brush.h"
-#elif defined(__WXMSW__)
- #include "wx/msw/brush.h"
-#elif defined(__WXMOTIF__) || defined(__WXX11__)
- #include "wx/x11/brush.h"
-#elif defined(__WXGTK20__)
- #include "wx/gtk/brush.h"
-#elif defined(__WXGTK__)
- #include "wx/gtk1/brush.h"
-#elif defined(__WXMGL__)
- #include "wx/mgl/brush.h"
-#elif defined(__WXDFB__)
- #include "wx/dfb/brush.h"
-#elif defined(__WXMAC__)
- #include "wx/mac/brush.h"
-#elif defined(__WXCOCOA__)
- #include "wx/cocoa/brush.h"
-#elif defined(__WXPM__)
- #include "wx/os2/brush.h"
-#endif
-
-#endif
- // _WX_BRUSH_H_BASE_
diff --git a/Externals/wxWidgets/include/wx/buffer.h b/Externals/wxWidgets/include/wx/buffer.h
deleted file mode 100644
index 605f4f19c5..0000000000
--- a/Externals/wxWidgets/include/wx/buffer.h
+++ /dev/null
@@ -1,314 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Name: wx/buffer.h
-// Purpose: auto buffer classes: buffers which automatically free memory
-// Author: Vadim Zeitlin
-// Modified by:
-// Created: 12.04.99
-// RCS-ID: $Id: buffer.h 45761 2007-05-02 17:09:30Z VS $
-// Copyright: (c) 1998 Vadim Zeitlin
-// Licence: wxWindows licence
-///////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_BUFFER_H
-#define _WX_BUFFER_H
-
-#include "wx/wxchar.h"
-
-#include // malloc() and free()
-
-// ----------------------------------------------------------------------------
-// Special classes for (wide) character strings: they use malloc/free instead
-// of new/delete
-// ----------------------------------------------------------------------------
-
-#define DEFINE_BUFFER(classname, chartype, strdupfunc) \
-class WXDLLIMPEXP_BASE classname \
-{ \
-public: \
- classname(const chartype *str = NULL) \
- : m_str(str ? strdupfunc(str) : NULL) \
- { \
- } \
- \
- classname(size_t len) \
- : m_str((chartype *)malloc((len + 1)*sizeof(chartype))) \
- { \
- m_str[len] = (chartype)0; \
- } \
- \
- /* no need to check for NULL, free() does it */ \
- ~classname() { free(m_str); } \
- \
- /* \
- WARNING: \
- \
- the copy ctor and assignment operators change the passed in object \
- even although it is declared as "const", so: \
- \
- a) it shouldn't be really const \
- b) you shouldn't use it afterwards (or know that it was reset) \
- \
- This is very ugly but is unfortunately needed to make the normal use\
- of classname buffer objects possible and is very similar to what \
- std::auto_ptr<> does (as if it were an excuse...) \
- */ \
- \
- /* \
- because of the remark above, release() is declared const even if it \
- isn't really const \
- */ \
- chartype *release() const \
- { \
- chartype *p = m_str; \
- ((classname *)this)->m_str = NULL; \
- return p; \
- } \
- \
- void reset() \
- { \
- free(m_str); \
- m_str = NULL; \
- } \
- \
- classname(const classname& src) \
- : m_str(src.release()) \
- { \
- } \
- \
- classname& operator=(const chartype *str) \
- { \
- free(m_str); \
- m_str = str ? strdupfunc(str) : NULL; \
- return *this; \
- } \
- \
- classname& operator=(const classname& src) \
- { \
- free(m_str); \
- m_str = src.release(); \
- \
- return *this; \
- } \
- \
- bool extend(size_t len) \
- { \
- chartype * \
- str = (chartype *)realloc(m_str, (len + 1)*sizeof(chartype)); \
- if ( !str ) \
- return false; \
- \
- m_str = str; \
- \
- return true; \
- } \
- \
- chartype *data() { return m_str; } \
- const chartype *data() const { return m_str; } \
- operator const chartype *() const { return m_str; } \
- chartype operator[](size_t n) const { return m_str[n]; } \
- \
-private: \
- chartype *m_str; \
-}
-
-#if wxABI_VERSION >= 20804
-// needed for wxString::char_str() and wchar_str()
-#define DEFINE_WRITABLE_BUFFER(classname, baseclass, chartype) \
-class WXDLLIMPEXP_BASE classname : public baseclass \
-{ \
-public: \
- classname(const baseclass& src) : baseclass(src) {} \
- classname(const chartype *str = NULL) : baseclass(str) {} \
- \
- operator chartype*() { return this->data(); } \
-}
-#endif // wxABI_VERSION >= 20804
-
-DEFINE_BUFFER(wxCharBuffer, char, wxStrdupA);
-#if wxABI_VERSION >= 20804
-DEFINE_WRITABLE_BUFFER(wxWritableCharBuffer, wxCharBuffer, char);
-#endif
-
-#if wxUSE_WCHAR_T
-
-DEFINE_BUFFER(wxWCharBuffer, wchar_t, wxStrdupW);
-#if wxABI_VERSION >= 20804
-DEFINE_WRITABLE_BUFFER(wxWritableWCharBuffer, wxWCharBuffer, wchar_t);
-#endif
-
-#endif // wxUSE_WCHAR_T
-
-#undef DEFINE_BUFFER
-#undef DEFINE_WRITABLE_BUFFER
-
-#if wxUSE_UNICODE
- typedef wxWCharBuffer wxWxCharBuffer;
-
- #define wxMB2WXbuf wxWCharBuffer
- #define wxWX2MBbuf wxCharBuffer
- #define wxWC2WXbuf wxChar*
- #define wxWX2WCbuf wxChar*
-#else // ANSI
- typedef wxCharBuffer wxWxCharBuffer;
-
- #define wxMB2WXbuf wxChar*
- #define wxWX2MBbuf wxChar*
- #define wxWC2WXbuf wxCharBuffer
- #define wxWX2WCbuf wxWCharBuffer
-#endif // Unicode/ANSI
-
-// ----------------------------------------------------------------------------
-// A class for holding growable data buffers (not necessarily strings)
-// ----------------------------------------------------------------------------
-
-// This class manages the actual data buffer pointer and is ref-counted.
-class wxMemoryBufferData
-{
-public:
- // the initial size and also the size added by ResizeIfNeeded()
- enum { DefBufSize = 1024 };
-
- friend class wxMemoryBuffer;
-
- // everyting is private as it can only be used by wxMemoryBuffer
-private:
- wxMemoryBufferData(size_t size = wxMemoryBufferData::DefBufSize)
- : m_data(size ? malloc(size) : NULL), m_size(size), m_len(0), m_ref(0)
- {
- }
- ~wxMemoryBufferData() { free(m_data); }
-
-
- void ResizeIfNeeded(size_t newSize)
- {
- if (newSize > m_size)
- {
- void *dataOld = m_data;
- m_data = realloc(m_data, newSize + wxMemoryBufferData::DefBufSize);
- if ( !m_data )
- {
- free(dataOld);
- }
-
- m_size = newSize + wxMemoryBufferData::DefBufSize;
- }
- }
-
- void IncRef() { m_ref += 1; }
- void DecRef()
- {
- m_ref -= 1;
- if (m_ref == 0) // are there no more references?
- delete this;
- }
-
-
- // the buffer containing the data
- void *m_data;
-
- // the size of the buffer
- size_t m_size;
-
- // the amount of data currently in the buffer
- size_t m_len;
-
- // the reference count
- size_t m_ref;
-
- DECLARE_NO_COPY_CLASS(wxMemoryBufferData)
-};
-
-
-class wxMemoryBuffer
-{
-public:
- // ctor and dtor
- wxMemoryBuffer(size_t size = wxMemoryBufferData::DefBufSize)
- {
- m_bufdata = new wxMemoryBufferData(size);
- m_bufdata->IncRef();
- }
-
- ~wxMemoryBuffer() { m_bufdata->DecRef(); }
-
-
- // copy and assignment
- wxMemoryBuffer(const wxMemoryBuffer& src)
- : m_bufdata(src.m_bufdata)
- {
- m_bufdata->IncRef();
- }
-
- wxMemoryBuffer& operator=(const wxMemoryBuffer& src)
- {
- m_bufdata->DecRef();
- m_bufdata = src.m_bufdata;
- m_bufdata->IncRef();
- return *this;
- }
-
-
- // Accessors
- void *GetData() const { return m_bufdata->m_data; }
- size_t GetBufSize() const { return m_bufdata->m_size; }
- size_t GetDataLen() const { return m_bufdata->m_len; }
-
- void SetBufSize(size_t size) { m_bufdata->ResizeIfNeeded(size); }
- void SetDataLen(size_t len)
- {
- wxASSERT(len <= m_bufdata->m_size);
- m_bufdata->m_len = len;
- }
-
- // Ensure the buffer is big enough and return a pointer to it
- void *GetWriteBuf(size_t sizeNeeded)
- {
- m_bufdata->ResizeIfNeeded(sizeNeeded);
- return m_bufdata->m_data;
- }
-
- // Update the length after the write
- void UngetWriteBuf(size_t sizeUsed) { SetDataLen(sizeUsed); }
-
- // Like the above, but appends to the buffer
- void *GetAppendBuf(size_t sizeNeeded)
- {
- m_bufdata->ResizeIfNeeded(m_bufdata->m_len + sizeNeeded);
- return (char*)m_bufdata->m_data + m_bufdata->m_len;
- }
-
- // Update the length after the append
- void UngetAppendBuf(size_t sizeUsed)
- {
- SetDataLen(m_bufdata->m_len + sizeUsed);
- }
-
- // Other ways to append to the buffer
- void AppendByte(char data)
- {
- wxCHECK_RET( m_bufdata->m_data, _T("invalid wxMemoryBuffer") );
-
- m_bufdata->ResizeIfNeeded(m_bufdata->m_len + 1);
- *(((char*)m_bufdata->m_data) + m_bufdata->m_len) = data;
- m_bufdata->m_len += 1;
- }
-
- void AppendData(const void *data, size_t len)
- {
- memcpy(GetAppendBuf(len), data, len);
- UngetAppendBuf(len);
- }
-
- operator const char *() const { return (const char*)GetData(); }
-
-private:
- wxMemoryBufferData* m_bufdata;
-};
-
-// ----------------------------------------------------------------------------
-// template class for any kind of data
-// ----------------------------------------------------------------------------
-
-// TODO
-
-#endif // _WX_BUFFER_H
diff --git a/Externals/wxWidgets/include/wx/build.h b/Externals/wxWidgets/include/wx/build.h
deleted file mode 100644
index 989d5e611a..0000000000
--- a/Externals/wxWidgets/include/wx/build.h
+++ /dev/null
@@ -1,149 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Name: wx/build.h
-// Purpose: Runtime build options checking
-// Author: Vadim Zeitlin, Vaclav Slavik
-// Modified by:
-// Created: 07.05.02
-// RCS-ID: $Id: build.h 35858 2005-10-09 15:48:42Z MBN $
-// Copyright: (c) 2002 Vadim Zeitlin
-// Licence: wxWindows licence
-///////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_BUILD_H_
-#define _WX_BUILD_H_
-
-#include "wx/version.h"
-
-// NB: This file contains macros for checking binary compatibility of libraries
-// in multilib buildm, plugins and user components.
-// The WX_BUILD_OPTIONS_SIGNATURE macro expands into string that should
-// uniquely identify binary compatible builds: i.e. if two builds of the
-// library are binary compatible, their signature string should be the
-// same; if two builds are binary incompatible, their signatures should
-// be different.
-//
-// Therefore, wxUSE_XXX flags that affect binary compatibility (vtables,
-// function signatures) should be accounted for here. So should compilers
-// and compiler versions (but note that binary compatible compiler versions
-// such as gcc-2.95.2 and gcc-2.95.3 should have same signature!).
-
-// ----------------------------------------------------------------------------
-// WX_BUILD_OPTIONS_SIGNATURE
-// ----------------------------------------------------------------------------
-
-#define __WX_BO_STRINGIZE(x) __WX_BO_STRINGIZE0(x)
-#define __WX_BO_STRINGIZE0(x) #x
-
-#if (wxMINOR_VERSION % 2) == 0
- #define __WX_BO_VERSION(x,y,z) \
- __WX_BO_STRINGIZE(x) "." __WX_BO_STRINGIZE(y)
-#else
- #define __WX_BO_VERSION(x,y,z) \
- __WX_BO_STRINGIZE(x) "." __WX_BO_STRINGIZE(y) "." __WX_BO_STRINGIZE(z)
-#endif
-
-#ifdef __WXDEBUG__
- #define __WX_BO_DEBUG "debug"
-#else
- #define __WX_BO_DEBUG "no debug"
-#endif
-
-#if wxUSE_UNICODE
- #define __WX_BO_UNICODE "Unicode"
-#else
- #define __WX_BO_UNICODE "ANSI"
-#endif
-
-// GCC and Intel C++ share same C++ ABI (and possibly others in the future),
-// check if compiler versions are compatible:
-#if defined(__GXX_ABI_VERSION)
- #define __WX_BO_COMPILER \
- ",compiler with C++ ABI " __WX_BO_STRINGIZE(__GXX_ABI_VERSION)
-#elif defined(__INTEL_COMPILER)
- #define __WX_BO_COMPILER ",Intel C++"
-#elif defined(__GNUG__)
- #define __WX_BO_COMPILER ",GCC " \
- __WX_BO_STRINGIZE(__GNUC__) "." __WX_BO_STRINGIZE(__GNUC_MINOR__)
-#elif defined(__VISUALC__)
- #define __WX_BO_COMPILER ",Visual C++"
-#elif defined(__BORLANDC__)
- #define __WX_BO_COMPILER ",Borland C++"
-#elif defined(__DIGITALMARS__)
- #define __WX_BO_COMPILER ",DigitalMars"
-#elif defined(__WATCOMC__)
- #define __WX_BO_COMPILER ",Watcom C++"
-#else
- #define __WX_BO_COMPILER
-#endif
-
-// WXWIN_COMPATIBILITY macros affect presence of virtual functions
-#if WXWIN_COMPATIBILITY_2_4
- #define __WX_BO_WXWIN_COMPAT_2_4 ",compatible with 2.4"
-#else
- #define __WX_BO_WXWIN_COMPAT_2_4
-#endif
-#if WXWIN_COMPATIBILITY_2_6
- #define __WX_BO_WXWIN_COMPAT_2_6 ",compatible with 2.6"
-#else
- #define __WX_BO_WXWIN_COMPAT_2_6
-#endif
-
-// deriving wxWin containers from STL ones changes them completely:
-#if wxUSE_STL
- #define __WX_BO_STL ",STL containers"
-#else
- #define __WX_BO_STL ",wx containers"
-#endif
-
-// This macro is passed as argument to wxConsoleApp::CheckBuildOptions()
-#define WX_BUILD_OPTIONS_SIGNATURE \
- __WX_BO_VERSION(wxMAJOR_VERSION, wxMINOR_VERSION, wxRELEASE_NUMBER) \
- " (" __WX_BO_DEBUG "," __WX_BO_UNICODE \
- __WX_BO_COMPILER \
- __WX_BO_STL \
- __WX_BO_WXWIN_COMPAT_2_4 __WX_BO_WXWIN_COMPAT_2_6 \
- ")"
-
-
-// ----------------------------------------------------------------------------
-// WX_CHECK_BUILD_OPTIONS
-// ----------------------------------------------------------------------------
-
-// Use this macro to check build options. Adding it to a file in DLL will
-// ensure that the DLL checks build options in same way IMPLEMENT_APP() does.
-#define WX_CHECK_BUILD_OPTIONS(libName) \
- static struct wxBuildOptionsChecker \
- { \
- wxBuildOptionsChecker() \
- { \
- wxAppConsole::CheckBuildOptions(WX_BUILD_OPTIONS_SIGNATURE, \
- libName); \
- } \
- } gs_buildOptionsCheck;
-
-
-#if WXWIN_COMPATIBILITY_2_4
-
-// ----------------------------------------------------------------------------
-// wxBuildOptions
-// ----------------------------------------------------------------------------
-
-// NB: Don't use this class in new code, it relies on the ctor being always
-// inlined. WX_BUILD_OPTIONS_SIGNATURE always works.
-class wxBuildOptions
-{
-public:
- // the ctor must be inline to get the compilation settings of the code
- // which included this header
- wxBuildOptions() : m_signature(WX_BUILD_OPTIONS_SIGNATURE) {}
-
-private:
- const char *m_signature;
-
- // actually only CheckBuildOptions() should be our friend but well...
- friend class wxAppConsole;
-};
-
-#endif // WXWIN_COMPATIBILITY_2_4
-
-#endif // _WX_BUILD_H_
diff --git a/Externals/wxWidgets/include/wx/busyinfo.h b/Externals/wxWidgets/include/wx/busyinfo.h
deleted file mode 100644
index ae63552870..0000000000
--- a/Externals/wxWidgets/include/wx/busyinfo.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-// Name: wx/busyinfo.h
-// Purpose: Information window (when app is busy)
-// Author: Vaclav Slavik
-// Copyright: (c) 1999 Vaclav Slavik
-// RCS-ID: $Id: busyinfo.h 37158 2006-01-26 15:40:46Z ABX $
-// Licence: wxWindows licence
-/////////////////////////////////////////////////////////////////////////////
-
-#ifndef __BUSYINFO_H_BASE__
-#define __BUSYINFO_H_BASE__
-
-#include "wx/defs.h"
-
-#if wxUSE_BUSYINFO
-
-#include "wx/generic/busyinfo.h"
-
-#endif // wxUSE_BUSYINFO
-
-#endif // __BUSYINFO_H_BASE__
diff --git a/Externals/wxWidgets/include/wx/button.h b/Externals/wxWidgets/include/wx/button.h
deleted file mode 100644
index a4448f81f9..0000000000
--- a/Externals/wxWidgets/include/wx/button.h
+++ /dev/null
@@ -1,106 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-// Name: wx/button.h
-// Purpose: wxButtonBase class
-// Author: Vadim Zetlin
-// Modified by:
-// Created: 15.08.00
-// RCS-ID: $Id: button.h 49563 2007-10-31 20:46:21Z VZ $
-// Copyright: (c) Vadim Zetlin
-// Licence: wxWindows licence
-/////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_BUTTON_H_BASE_
-#define _WX_BUTTON_H_BASE_
-
-#include "wx/defs.h"
-
-// ----------------------------------------------------------------------------
-// wxButton flags shared with other classes
-// ----------------------------------------------------------------------------
-
-#if wxUSE_TOGGLEBTN || wxUSE_BUTTON
-
-// These flags affect label alignment
-#define wxBU_LEFT 0x0040
-#define wxBU_TOP 0x0080
-#define wxBU_RIGHT 0x0100
-#define wxBU_BOTTOM 0x0200
-#define wxBU_ALIGN_MASK ( wxBU_LEFT | wxBU_TOP | wxBU_RIGHT | wxBU_BOTTOM )
-#endif
-
-#if wxUSE_BUTTON
-
-// ----------------------------------------------------------------------------
-// wxButton specific flags
-// ----------------------------------------------------------------------------
-
-// These two flags are obsolete
-#define wxBU_NOAUTODRAW 0x0000
-#define wxBU_AUTODRAW 0x0004
-
-// by default, the buttons will be created with some (system dependent)
-// minimal size to make them look nicer, giving this style will make them as
-// small as possible
-#define wxBU_EXACTFIT 0x0001
-
-#include "wx/control.h"
-
-class WXDLLIMPEXP_FWD_CORE wxBitmap;
-
-extern WXDLLEXPORT_DATA(const wxChar) wxButtonNameStr[];
-
-// ----------------------------------------------------------------------------
-// wxButton: a push button
-// ----------------------------------------------------------------------------
-
-class WXDLLEXPORT wxButtonBase : public wxControl
-{
-public:
- wxButtonBase() { }
-
- // show the image in the button in addition to the label
- virtual void SetImageLabel(const wxBitmap& WXUNUSED(bitmap)) { }
-
- // set the margins around the image
- virtual void SetImageMargins(wxCoord WXUNUSED(x), wxCoord WXUNUSED(y)) { }
-
- // this wxButton method is called when the button becomes the default one
- // on its panel
- virtual void SetDefault() { }
-
- // Buttons on MSW can look bad if they are not native colours, because
- // then they become owner-drawn and not theme-drawn. Disable it here
- // in wxButtonBase to make it consistent.
- virtual bool ShouldInheritColours() const { return false; }
-
- // returns the default button size for this platform
- static wxSize GetDefaultSize();
-
-protected:
- DECLARE_NO_COPY_CLASS(wxButtonBase)
-};
-
-#if defined(__WXUNIVERSAL__)
- #include "wx/univ/button.h"
-#elif defined(__WXMSW__)
- #include "wx/msw/button.h"
-#elif defined(__WXMOTIF__)
- #include "wx/motif/button.h"
-#elif defined(__WXGTK20__)
- #include "wx/gtk/button.h"
-#elif defined(__WXGTK__)
- #include "wx/gtk1/button.h"
-#elif defined(__WXMAC__)
- #include "wx/mac/button.h"
-#elif defined(__WXCOCOA__)
- #include "wx/cocoa/button.h"
-#elif defined(__WXPM__)
- #include "wx/os2/button.h"
-#elif defined(__WXPALMOS__)
- #include "wx/palmos/button.h"
-#endif
-
-#endif // wxUSE_BUTTON
-
-#endif
- // _WX_BUTTON_H_BASE_
diff --git a/Externals/wxWidgets/include/wx/calctrl.h b/Externals/wxWidgets/include/wx/calctrl.h
deleted file mode 100644
index ace3b2262b..0000000000
--- a/Externals/wxWidgets/include/wx/calctrl.h
+++ /dev/null
@@ -1,232 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Name: wx/calctrl.h
-// Purpose: date-picker control
-// Author: Vadim Zeitlin
-// Modified by:
-// Created: 29.12.99
-// RCS-ID: $Id: calctrl.h 53135 2008-04-12 02:31:04Z VZ $
-// Copyright: (c) 1999 Vadim Zeitlin
-// Licence: wxWindows licence
-///////////////////////////////////////////////////////////////////////////////
-
-/*
- TODO
-
- 1. implement multiple selections for date ranges
- 2. background bitmap for the calendar?
- */
-
-#ifndef _WX_CALCTRL_H_
-#define _WX_CALCTRL_H_
-
-#include "wx/defs.h"
-
-#if wxUSE_CALENDARCTRL
-
-#include "wx/dateevt.h"
-#include "wx/colour.h"
-#include "wx/font.h"
-
-// ----------------------------------------------------------------------------
-// wxCalendarCtrl flags
-// ----------------------------------------------------------------------------
-
-enum
-{
- // show Sunday as the first day of the week (default)
- wxCAL_SUNDAY_FIRST = 0x0000,
-
- // show Monder as the first day of the week
- wxCAL_MONDAY_FIRST = 0x0001,
-
- // highlight holidays
- wxCAL_SHOW_HOLIDAYS = 0x0002,
-
- // disable the year change control, show only the month change one
- wxCAL_NO_YEAR_CHANGE = 0x0004,
-
- // don't allow changing neither month nor year (implies
- // wxCAL_NO_YEAR_CHANGE)
- wxCAL_NO_MONTH_CHANGE = 0x000c,
-
- // use MS-style month-selection instead of combo-spin combination
- wxCAL_SEQUENTIAL_MONTH_SELECTION = 0x0010,
-
- // show the neighbouring weeks in the previous and next month
- wxCAL_SHOW_SURROUNDING_WEEKS = 0x0020
-};
-
-// ----------------------------------------------------------------------------
-// constants
-// ----------------------------------------------------------------------------
-
-// return values for the HitTest() method
-enum wxCalendarHitTestResult
-{
- wxCAL_HITTEST_NOWHERE, // outside of anything
- wxCAL_HITTEST_HEADER, // on the header (weekdays)
- wxCAL_HITTEST_DAY, // on a day in the calendar
- wxCAL_HITTEST_INCMONTH,
- wxCAL_HITTEST_DECMONTH,
- wxCAL_HITTEST_SURROUNDING_WEEK
-};
-
-// border types for a date
-enum wxCalendarDateBorder
-{
- wxCAL_BORDER_NONE, // no border (default)
- wxCAL_BORDER_SQUARE, // a rectangular border
- wxCAL_BORDER_ROUND // a round border
-};
-
-// ----------------------------------------------------------------------------
-// wxCalendarDateAttr: custom attributes for a calendar date
-// ----------------------------------------------------------------------------
-
-class WXDLLIMPEXP_ADV wxCalendarDateAttr
-{
-#if !defined(__VISAGECPP__)
-protected:
- // This has to be before the use of Init(), for MSVC++ 1.5
- // But dorks up Visualage!
- void Init(wxCalendarDateBorder border = wxCAL_BORDER_NONE)
- {
- m_border = border;
- m_holiday = false;
- }
-#endif
-public:
- // ctors
- wxCalendarDateAttr() { Init(); }
- wxCalendarDateAttr(const wxColour& colText,
- const wxColour& colBack = wxNullColour,
- const wxColour& colBorder = wxNullColour,
- const wxFont& font = wxNullFont,
- wxCalendarDateBorder border = wxCAL_BORDER_NONE)
- : m_colText(colText), m_colBack(colBack),
- m_colBorder(colBorder), m_font(font)
- {
- Init(border);
- }
- wxCalendarDateAttr(wxCalendarDateBorder border,
- const wxColour& colBorder = wxNullColour)
- : m_colBorder(colBorder)
- {
- Init(border);
- }
-
- // setters
- void SetTextColour(const wxColour& colText) { m_colText = colText; }
- void SetBackgroundColour(const wxColour& colBack) { m_colBack = colBack; }
- void SetBorderColour(const wxColour& col) { m_colBorder = col; }
- void SetFont(const wxFont& font) { m_font = font; }
- void SetBorder(wxCalendarDateBorder border) { m_border = border; }
- void SetHoliday(bool holiday) { m_holiday = holiday; }
-
- // accessors
- bool HasTextColour() const { return m_colText.Ok(); }
- bool HasBackgroundColour() const { return m_colBack.Ok(); }
- bool HasBorderColour() const { return m_colBorder.Ok(); }
- bool HasFont() const { return m_font.Ok(); }
- bool HasBorder() const { return m_border != wxCAL_BORDER_NONE; }
-
- bool IsHoliday() const { return m_holiday; }
-
- const wxColour& GetTextColour() const { return m_colText; }
- const wxColour& GetBackgroundColour() const { return m_colBack; }
- const wxColour& GetBorderColour() const { return m_colBorder; }
- const wxFont& GetFont() const { return m_font; }
- wxCalendarDateBorder GetBorder() const { return m_border; }
-#if defined(__VISAGECPP__)
-protected:
- // This has to be here for VisualAge
- void Init(wxCalendarDateBorder border = wxCAL_BORDER_NONE)
- {
- m_border = border;
- m_holiday = false;
- }
-#endif
-private:
- wxColour m_colText,
- m_colBack,
- m_colBorder;
- wxFont m_font;
- wxCalendarDateBorder m_border;
- bool m_holiday;
-};
-
-// ----------------------------------------------------------------------------
-// wxCalendarCtrl events
-// ----------------------------------------------------------------------------
-
-class WXDLLIMPEXP_FWD_ADV wxCalendarCtrl;
-
-class WXDLLIMPEXP_ADV wxCalendarEvent : public wxDateEvent
-{
-friend class wxCalendarCtrl;
-public:
- wxCalendarEvent() { Init(); }
- inline wxCalendarEvent(wxCalendarCtrl *cal, wxEventType type);
-
- void SetWeekDay(const wxDateTime::WeekDay wd) { m_wday = wd; }
- wxDateTime::WeekDay GetWeekDay() const { return m_wday; }
-
-protected:
- void Init()
- {
- m_wday = wxDateTime::Inv_WeekDay;
- }
-
-private:
- wxDateTime::WeekDay m_wday;
-
- DECLARE_DYNAMIC_CLASS_NO_COPY(wxCalendarEvent)
-};
-
-// ----------------------------------------------------------------------------
-// wxCalendarCtrl
-// ----------------------------------------------------------------------------
-
-// so far we only have a generic version, so keep it simple
-#include "wx/generic/calctrl.h"
-
-
-// now we can define the inline ctor using wxCalendarCtrl
-inline
-wxCalendarEvent::wxCalendarEvent(wxCalendarCtrl *cal, wxEventType type)
- : wxDateEvent(cal, cal->GetDate(), type)
-{
-}
-
-// ----------------------------------------------------------------------------
-// calendar event types and macros for handling them
-// ----------------------------------------------------------------------------
-
-BEGIN_DECLARE_EVENT_TYPES()
- DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_ADV, wxEVT_CALENDAR_SEL_CHANGED, 950)
- DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_ADV, wxEVT_CALENDAR_DAY_CHANGED, 951)
- DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_ADV, wxEVT_CALENDAR_MONTH_CHANGED, 952)
- DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_ADV, wxEVT_CALENDAR_YEAR_CHANGED, 953)
- DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_ADV, wxEVT_CALENDAR_DOUBLECLICKED, 954)
- DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_ADV, wxEVT_CALENDAR_WEEKDAY_CLICKED, 955)
-END_DECLARE_EVENT_TYPES()
-
-typedef void (wxEvtHandler::*wxCalendarEventFunction)(wxCalendarEvent&);
-
-#define wxCalendarEventHandler(func) \
- (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxCalendarEventFunction, &func)
-
-#define wx__DECLARE_CALEVT(evt, id, fn) \
- wx__DECLARE_EVT1(wxEVT_CALENDAR_ ## evt, id, wxCalendarEventHandler(fn))
-
-#define EVT_CALENDAR(id, fn) wx__DECLARE_CALEVT(DOUBLECLICKED, id, fn)
-#define EVT_CALENDAR_SEL_CHANGED(id, fn) wx__DECLARE_CALEVT(SEL_CHANGED, id, fn)
-#define EVT_CALENDAR_DAY(id, fn) wx__DECLARE_CALEVT(DAY_CHANGED, id, fn)
-#define EVT_CALENDAR_MONTH(id, fn) wx__DECLARE_CALEVT(MONTH_CHANGED, id, fn)
-#define EVT_CALENDAR_YEAR(id, fn) wx__DECLARE_CALEVT(YEAR_CHANGED, id, fn)
-#define EVT_CALENDAR_WEEKDAY_CLICKED(id, fn) wx__DECLARE_CALEVT(WEEKDAY_CLICKED, id, fn)
-
-#endif // wxUSE_CALENDARCTRL
-
-#endif // _WX_CALCTRL_H_
-
diff --git a/Externals/wxWidgets/include/wx/caret.h b/Externals/wxWidgets/include/wx/caret.h
deleted file mode 100644
index 25b606699c..0000000000
--- a/Externals/wxWidgets/include/wx/caret.h
+++ /dev/null
@@ -1,252 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Name: wx/caret.h
-// Purpose: wxCaretBase class - the interface of wxCaret
-// Author: Vadim Zeitlin
-// Modified by:
-// Created: 23.05.99
-// RCS-ID: $Id: caret.h 49804 2007-11-10 01:09:42Z VZ $
-// Copyright: (c) wxWidgets team
-// Licence: wxWindows licence
-///////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_CARET_H_BASE_
-#define _WX_CARET_H_BASE_
-
-#include "wx/defs.h"
-
-#if wxUSE_CARET
-
-// ---------------------------------------------------------------------------
-// forward declarations
-// ---------------------------------------------------------------------------
-
-class WXDLLIMPEXP_FWD_CORE wxWindow;
-class WXDLLIMPEXP_FWD_CORE wxWindowBase;
-
-// ----------------------------------------------------------------------------
-// headers we have to include
-// ----------------------------------------------------------------------------
-
-#include "wx/gdicmn.h" // for wxPoint, wxSize
-
-// ----------------------------------------------------------------------------
-// A caret is a blinking cursor showing the position where the typed text will
-// appear. It can be either a solid block or a custom bitmap (TODO)
-// ----------------------------------------------------------------------------
-
-class WXDLLEXPORT wxCaretBase
-{
-public:
- // ctors
- // -----
- // default - use Create
- wxCaretBase() { Init(); }
- // create the caret of given (in pixels) width and height and associate
- // with the given window
- wxCaretBase(wxWindowBase *window, int width, int height)
- {
- Init();
-
- (void)Create(window, width, height);
- }
- // same as above
- wxCaretBase(wxWindowBase *window, const wxSize& size)
- {
- Init();
-
- (void)Create(window, size);
- }
-
- // a virtual dtor has been provided since this class has virtual members
- virtual ~wxCaretBase() { }
-
- // Create() functions - same as ctor but returns the success code
- // --------------------------------------------------------------
-
- // same as ctor
- bool Create(wxWindowBase *window, int width, int height)
- { return DoCreate(window, width, height); }
- // same as ctor
- bool Create(wxWindowBase *window, const wxSize& size)
- { return DoCreate(window, size.x, size.y); }
-
- // accessors
- // ---------
-
- // is the caret valid?
- bool IsOk() const { return m_width != 0 && m_height != 0; }
-
- // is the caret currently shown?
- bool IsVisible() const { return m_countVisible > 0; }
-
- // get the caret position
- void GetPosition(int *x, int *y) const
- {
- if ( x ) *x = m_x;
- if ( y ) *y = m_y;
- }
- wxPoint GetPosition() const { return wxPoint(m_x, m_y); }
-
- // get the caret size
- void GetSize(int *width, int *height) const
- {
- if ( width ) *width = m_width;
- if ( height ) *height = m_height;
- }
- wxSize GetSize() const { return wxSize(m_width, m_height); }
-
- // get the window we're associated with
- wxWindow *GetWindow() const { return (wxWindow *)m_window; }
-
- // change the size of the caret
- void SetSize(int width, int height) {
- m_width = width;
- m_height = height;
- DoSize();
- }
- void SetSize(const wxSize& size) { SetSize(size.x, size.y); }
-
-
- // operations
- // ----------
-
- // move the caret to given position (in logical coords)
- void Move(int x, int y) { m_x = x; m_y = y; DoMove(); }
- void Move(const wxPoint& pt) { m_x = pt.x; m_y = pt.y; DoMove(); }
-
- // show/hide the caret (should be called by wxWindow when needed):
- // Show() must be called as many times as Hide() + 1 to make the caret
- // visible
- virtual void Show(bool show = true)
- {
- if ( show )
- {
- if ( m_countVisible++ == 0 )
- DoShow();
- }
- else
- {
- if ( --m_countVisible == 0 )
- DoHide();
- }
- }
- virtual void Hide() { Show(false); }
-
- // blink time is measured in milliseconds and is the time elapsed
- // between 2 inversions of the caret (blink time of the caret is common
- // to all carets in the Universe, so these functions are static)
- static int GetBlinkTime();
- static void SetBlinkTime(int milliseconds);
-
- // implementation from now on
- // --------------------------
-
- // these functions should be called by wxWindow when the window gets/loses
- // the focus - we create/show and hide/destroy the caret here
- virtual void OnSetFocus() { }
- virtual void OnKillFocus() { }
-
-protected:
- // these functions may be overriden in the derived classes, but they
- // should call the base class version first
- virtual bool DoCreate(wxWindowBase *window, int width, int height)
- {
- m_window = window;
- m_width = width;
- m_height = height;
-
- return true;
- }
-
- // pure virtuals to implement in the derived class
- virtual void DoShow() = 0;
- virtual void DoHide() = 0;
- virtual void DoMove() = 0;
- virtual void DoSize() { }
-
- // the common initialization
- void Init()
- {
- m_window = (wxWindowBase *)NULL;
- m_x = m_y = 0;
- m_width = m_height = 0;
- m_countVisible = 0;
- }
-
- // the size of the caret
- int m_width, m_height;
-
- // the position of the caret
- int m_x, m_y;
-
- // the window we're associated with
- wxWindowBase *m_window;
-
- // visibility count: the caret is visible only if it's positive
- int m_countVisible;
-
-private:
- DECLARE_NO_COPY_CLASS(wxCaretBase)
-};
-
-// ---------------------------------------------------------------------------
-// now include the real thing
-// ---------------------------------------------------------------------------
-
-#if defined(__WXMSW__)
- #include "wx/msw/caret.h"
-#else
- #include "wx/generic/caret.h"
-#endif // platform
-
-// ----------------------------------------------------------------------------
-// wxCaretSuspend: a simple class which hides the caret in its ctor and
-// restores it in the dtor, this should be used when drawing on the screen to
-// avoid overdrawing the caret
-// ----------------------------------------------------------------------------
-
-#ifdef wxHAS_CARET_USING_OVERLAYS
-
-// we don't need to hide the caret if it's rendered using overlays
-class WXDLLEXPORT wxCaretSuspend
-{
-public:
- wxCaretSuspend(wxWindow *WXUNUSED(win)) {}
-
- DECLARE_NO_COPY_CLASS(wxCaretSuspend)
-};
-
-#else // !wxHAS_CARET_USING_OVERLAYS
-
-class WXDLLEXPORT wxCaretSuspend
-{
-public:
- wxCaretSuspend(wxWindow *win)
- {
- m_caret = win->GetCaret();
- m_show = false;
- if ( m_caret && m_caret->IsVisible() )
- {
- m_caret->Hide();
- m_show = true;
- }
- }
-
- ~wxCaretSuspend()
- {
- if ( m_caret && m_show )
- m_caret->Show();
- }
-
-private:
- wxCaret *m_caret;
- bool m_show;
-
- DECLARE_NO_COPY_CLASS(wxCaretSuspend)
-};
-
-#endif // wxHAS_CARET_USING_OVERLAYS/!wxHAS_CARET_USING_OVERLAYS
-
-#endif // wxUSE_CARET
-
-#endif // _WX_CARET_H_BASE_
diff --git a/Externals/wxWidgets/include/wx/checkbox.h b/Externals/wxWidgets/include/wx/checkbox.h
deleted file mode 100644
index 3d76b4a195..0000000000
--- a/Externals/wxWidgets/include/wx/checkbox.h
+++ /dev/null
@@ -1,156 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Name: wx/checkbox.h
-// Purpose: wxCheckBox class interface
-// Author: Vadim Zeitlin
-// Modified by:
-// Created: 07.09.00
-// RCS-ID: $Id: checkbox.h 39901 2006-06-30 10:51:44Z VS $
-// Copyright: (c) wxWidgets team
-// Licence: wxWindows licence
-///////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_CHECKBOX_H_BASE_
-#define _WX_CHECKBOX_H_BASE_
-
-#include "wx/defs.h"
-
-#if wxUSE_CHECKBOX
-
-#include "wx/control.h"
-
-
-/*
- * wxCheckBox style flags
- * (Using wxCHK_* because wxCB_* is used by wxComboBox).
- * Determine whether to use a 3-state or 2-state
- * checkbox. 3-state enables to differentiate
- * between 'unchecked', 'checked' and 'undetermined'.
- */
-#define wxCHK_2STATE 0x0000
-#define wxCHK_3STATE 0x1000
-
-/*
- * If this style is set the user can set the checkbox to the
- * undetermined state. If not set the undetermined set can only
- * be set programmatically.
- * This style can only be used with 3 state checkboxes.
- */
-#define wxCHK_ALLOW_3RD_STATE_FOR_USER 0x2000
-
-/*
- * The possible states of a 3-state checkbox (Compatible
- * with the 2-state checkbox).
- */
-enum wxCheckBoxState
-{
- wxCHK_UNCHECKED,
- wxCHK_CHECKED,
- wxCHK_UNDETERMINED /* 3-state checkbox only */
-};
-
-
-extern WXDLLEXPORT_DATA(const wxChar) wxCheckBoxNameStr[];
-
-// ----------------------------------------------------------------------------
-// wxCheckBox: a control which shows a label and a box which may be checked
-// ----------------------------------------------------------------------------
-
-class WXDLLEXPORT wxCheckBoxBase : public wxControl
-{
-public:
- wxCheckBoxBase() { }
-
- // set/get the checked status of the listbox
- virtual void SetValue(bool value) = 0;
- virtual bool GetValue() const = 0;
-
- bool IsChecked() const
- {
- wxASSERT_MSG( !Is3State(), wxT("Calling IsChecked() doesn't make sense for")
- wxT(" a three state checkbox, Use Get3StateValue() instead") );
-
- return GetValue();
- }
-
- wxCheckBoxState Get3StateValue() const
- {
- wxCheckBoxState state = DoGet3StateValue();
-
- if ( state == wxCHK_UNDETERMINED && !Is3State() )
- {
- // Undetermined state with a 2-state checkbox??
- wxFAIL_MSG( wxT("DoGet3StateValue() says the 2-state checkbox is ")
- wxT("in an undetermined/third state") );
-
- state = wxCHK_UNCHECKED;
- }
-
- return state;
- }
-
- void Set3StateValue(wxCheckBoxState state)
- {
- if ( state == wxCHK_UNDETERMINED && !Is3State() )
- {
- wxFAIL_MSG(wxT("Setting a 2-state checkbox to undetermined state"));
- state = wxCHK_UNCHECKED;
- }
-
- DoSet3StateValue(state);
- }
-
- bool Is3State() const { return HasFlag(wxCHK_3STATE); }
-
- bool Is3rdStateAllowedForUser() const
- {
- return HasFlag(wxCHK_ALLOW_3RD_STATE_FOR_USER);
- }
-
- virtual bool HasTransparentBackground() { return true; }
-
- // wxCheckBox-specific processing after processing the update event
- virtual void DoUpdateWindowUI(wxUpdateUIEvent& event)
- {
- wxControl::DoUpdateWindowUI(event);
-
- if ( event.GetSetChecked() )
- SetValue(event.GetChecked());
- }
-
-protected:
- virtual void DoSet3StateValue(wxCheckBoxState WXUNUSED(state)) { wxFAIL; }
-
- virtual wxCheckBoxState DoGet3StateValue() const
- {
- wxFAIL;
- return wxCHK_UNCHECKED;
- }
-
-private:
- DECLARE_NO_COPY_CLASS(wxCheckBoxBase)
-};
-
-#if defined(__WXUNIVERSAL__)
- #include "wx/univ/checkbox.h"
-#elif defined(__WXMSW__)
- #include "wx/msw/checkbox.h"
-#elif defined(__WXMOTIF__)
- #include "wx/motif/checkbox.h"
-#elif defined(__WXGTK20__)
- #include "wx/gtk/checkbox.h"
-#elif defined(__WXGTK__)
- #include "wx/gtk1/checkbox.h"
-#elif defined(__WXMAC__)
- #include "wx/mac/checkbox.h"
-#elif defined(__WXCOCOA__)
- #include "wx/cocoa/checkbox.h"
-#elif defined(__WXPM__)
- #include "wx/os2/checkbox.h"
-#elif defined(__WXPALMOS__)
- #include "wx/palmos/checkbox.h"
-#endif
-
-#endif // wxUSE_CHECKBOX
-
-#endif
- // _WX_CHECKBOX_H_BASE_
diff --git a/Externals/wxWidgets/include/wx/checklst.h b/Externals/wxWidgets/include/wx/checklst.h
deleted file mode 100644
index b83c8536f5..0000000000
--- a/Externals/wxWidgets/include/wx/checklst.h
+++ /dev/null
@@ -1,64 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Name: wx/checklst.h
-// Purpose: wxCheckListBox class interface
-// Author: Vadim Zeitlin
-// Modified by:
-// Created: 12.09.00
-// RCS-ID: $Id: checklst.h 38319 2006-03-23 22:05:23Z VZ $
-// Copyright: (c) Vadim Zeitlin
-// Licence: wxWindows licence
-///////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_CHECKLST_H_BASE_
-#define _WX_CHECKLST_H_BASE_
-
-#if wxUSE_CHECKLISTBOX
-
-#include "wx/listbox.h"
-
-// ----------------------------------------------------------------------------
-// wxCheckListBox: a listbox whose items may be checked
-// ----------------------------------------------------------------------------
-
-class WXDLLEXPORT wxCheckListBoxBase : public
- #ifdef __WXWINCE__
- // keep virtuals synchronised
- wxListBoxBase
- #else
- wxListBox
- #endif
-{
-public:
- wxCheckListBoxBase() { }
-
- // check list box specific methods
- virtual bool IsChecked(unsigned int item) const = 0;
- virtual void Check(unsigned int item, bool check = true) = 0;
-
- DECLARE_NO_COPY_CLASS(wxCheckListBoxBase)
-};
-
-#if defined(__WXUNIVERSAL__)
- #include "wx/univ/checklst.h"
-#elif defined(__WXWINCE__)
- #include "wx/msw/wince/checklst.h"
-#elif defined(__WXMSW__)
- #include "wx/msw/checklst.h"
-#elif defined(__WXMOTIF__)
- #include "wx/motif/checklst.h"
-#elif defined(__WXGTK20__)
- #include "wx/gtk/checklst.h"
-#elif defined(__WXGTK__)
- #include "wx/gtk1/checklst.h"
-#elif defined(__WXMAC__)
- #include "wx/mac/checklst.h"
-#elif defined(__WXCOCOA__)
- #include "wx/cocoa/checklst.h"
-#elif defined(__WXPM__)
- #include "wx/os2/checklst.h"
-#endif
-
-#endif // wxUSE_CHECKLISTBOX
-
-#endif
- // _WX_CHECKLST_H_BASE_
diff --git a/Externals/wxWidgets/include/wx/chkconf.h b/Externals/wxWidgets/include/wx/chkconf.h
deleted file mode 100644
index e0717b9d58..0000000000
--- a/Externals/wxWidgets/include/wx/chkconf.h
+++ /dev/null
@@ -1,1871 +0,0 @@
-/*
- * Name: wx/chkconf.h
- * Purpose: check the config settings for consistency
- * Author: Vadim Zeitlin
- * Modified by:
- * Created: 09.08.00
- * RCS-ID: $Id: chkconf.h 48113 2007-08-15 17:43:50Z DE $
- * Copyright: (c) 2000 Vadim Zeitlin
- * Licence: wxWindows licence
- */
-
-/* THIS IS A C FILE, DON'T USE C++ FEATURES (IN PARTICULAR COMMENTS) IN IT */
-
-/*
- Platform-specific checking.
- */
-
-#if defined(__WXPALMOS__)
-# include "wx/palmos/chkconf.h"
-#elif defined(__WXWINCE__)
-# include "wx/msw/wince/chkconf.h"
-#elif defined(__WXMSW__)
-# include "wx/msw/chkconf.h"
-#elif defined(__WXMAC__)
-# include "wx/mac/chkconf.h"
-#elif defined(__OS2__)
-# include "wx/os2/chkconf.h"
-#elif defined(__WXMGL__)
-# include "wx/mgl/chkconf.h"
-#elif defined(__WXDFB__)
-# include "wx/dfb/chkconf.h"
-#elif defined(__WXMOTIF__)
-# include "wx/motif/chkconf.h"
-#elif defined(__WXX11__)
-# include "wx/x11/chkconf.h"
-#endif
-
-#ifdef __WXUNIVERSAL__
-# include "wx/univ/chkconf.h"
-#endif
-
-/*
- this global setting determines what should we do if the setting FOO
- requires BAR and BAR is not set: we can either silently unset FOO as well
- (do this if you're trying to build the smallest possible library) or give an
- error and abort (default as leads to least surprizing behaviour)
- */
-#define wxABORT_ON_CONFIG_ERROR
-
-/*
- global features
- */
-
-/* GUI build by default */
-#if !defined(wxUSE_GUI)
-# define wxUSE_GUI 1
-#endif /* !defined(wxUSE_GUI) */
-
-/* Turn off wxUSE_ABI_INCOMPATIBLE_FEATURES if not specified. */
-#if !defined(wxUSE_ABI_INCOMPATIBLE_FEATURES)
-# define wxUSE_ABI_INCOMPATIBLE_FEATURES 0
-#endif /* !defined(wxUSE_ABI_INCOMPATIBLE_FEATURES) */
-
-/*
- If we're compiling without support for threads/exceptions we have to
- disable the corresponding features.
- */
-#ifdef wxNO_THREADS
-# undef wxUSE_THREADS
-# define wxUSE_THREADS 0
-#endif /* wxNO_THREADS */
-
-#ifdef wxNO_EXCEPTIONS
-# undef wxUSE_EXCEPTIONS
-# define wxUSE_EXCEPTIONS 0
-#endif /* wxNO_EXCEPTIONS */
-
-/* we also must disable exceptions if compiler doesn't support them */
-#if defined(_MSC_VER) && !defined(_CPPUNWIND)
-# undef wxUSE_EXCEPTIONS
-# define wxUSE_EXCEPTIONS 0
-#endif /* VC++ without exceptions support */
-
-
-/*
- tests for non GUI features
-
- please keep the options in alphabetical order!
- */
-
-#ifndef wxUSE_CRASHREPORT
- /* this one is special: as currently it is Windows-only, don't force it
- to be defined on other platforms */
-# if defined(wxABORT_ON_CONFIG_ERROR) && defined(__WXMSW__)
-# error "wxUSE_CRASHREPORT must be defined."
-# else
-# define wxUSE_CRASHREPORT 0
-# endif
-#endif /* !defined(wxUSE_CRASHREPORT) */
-
-#ifndef wxUSE_DYNLIB_CLASS
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_DYNLIB_CLASS must be defined."
-# else
-# define wxUSE_DYNLIB_CLASS 0
-# endif
-#endif /* !defined(wxUSE_DYNLIB_CLASS) */
-
-#ifndef wxUSE_EXCEPTIONS
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_EXCEPTIONS must be defined."
-# else
-# define wxUSE_EXCEPTIONS 0
-# endif
-#endif /* !defined(wxUSE_EXCEPTIONS) */
-
-#ifndef wxUSE_FILESYSTEM
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_FILESYSTEM must be defined."
-# else
-# define wxUSE_FILESYSTEM 0
-# endif
-#endif /* !defined(wxUSE_FILESYSTEM) */
-
-#ifndef wxUSE_FS_ARCHIVE
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_FS_ARCHIVE must be defined."
-# else
-# define wxUSE_FS_ARCHIVE 0
-# endif
-#endif /* !defined(wxUSE_FS_ARCHIVE) */
-
-/* don't give an error about this one yet, it's not fully implemented */
-#ifndef wxUSE_FSVOLUME
-# define wxUSE_FSVOLUME 0
-#endif /* !defined(wxUSE_FSVOLUME) */
-
-#ifndef wxUSE_DYNAMIC_LOADER
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_DYNAMIC_LOADER must be defined."
-# else
-# define wxUSE_DYNAMIC_LOADER 0
-# endif
-#endif /* !defined(wxUSE_DYNAMIC_LOADER) */
-
-#ifndef wxUSE_LOG
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_LOG must be defined."
-# else
-# define wxUSE_LOG 0
-# endif
-#endif /* !defined(wxUSE_LOG) */
-
-#ifndef wxUSE_LONGLONG
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_LONGLONG must be defined."
-# else
-# define wxUSE_LONGLONG 0
-# endif
-#endif /* !defined(wxUSE_LONGLONG) */
-
-#ifndef wxUSE_MIMETYPE
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_MIMETYPE must be defined."
-# else
-# define wxUSE_MIMETYPE 0
-# endif
-#endif /* !defined(wxUSE_MIMETYPE) */
-
-#ifndef wxUSE_ON_FATAL_EXCEPTION
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_ON_FATAL_EXCEPTION must be defined."
-# else
-# define wxUSE_ON_FATAL_EXCEPTION 0
-# endif
-#endif /* !defined(wxUSE_ON_FATAL_EXCEPTION) */
-
-#ifndef wxUSE_PRINTF_POS_PARAMS
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_PRINTF_POS_PARAMS must be defined."
-# else
-# define wxUSE_PRINTF_POS_PARAMS 0
-# endif
-#endif /* !defined(wxUSE_PRINTF_POS_PARAMS) */
-
-#ifndef wxUSE_PROTOCOL
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_PROTOCOL must be defined."
-# else
-# define wxUSE_PROTOCOL 0
-# endif
-#endif /* !defined(wxUSE_PROTOCOL) */
-
-/* we may not define wxUSE_PROTOCOL_XXX if wxUSE_PROTOCOL is set to 0 */
-#if !wxUSE_PROTOCOL
-# undef wxUSE_PROTOCOL_HTTP
-# undef wxUSE_PROTOCOL_FTP
-# undef wxUSE_PROTOCOL_FILE
-# define wxUSE_PROTOCOL_HTTP 0
-# define wxUSE_PROTOCOL_FTP 0
-# define wxUSE_PROTOCOL_FILE 0
-#endif /* wxUSE_PROTOCOL */
-
-#ifndef wxUSE_PROTOCOL_HTTP
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_PROTOCOL_HTTP must be defined."
-# else
-# define wxUSE_PROTOCOL_HTTP 0
-# endif
-#endif /* !defined(wxUSE_PROTOCOL_HTTP) */
-
-#ifndef wxUSE_PROTOCOL_FTP
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_PROTOCOL_FTP must be defined."
-# else
-# define wxUSE_PROTOCOL_FTP 0
-# endif
-#endif /* !defined(wxUSE_PROTOCOL_FTP) */
-
-#ifndef wxUSE_PROTOCOL_FILE
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_PROTOCOL_FILE must be defined."
-# else
-# define wxUSE_PROTOCOL_FILE 0
-# endif
-#endif /* !defined(wxUSE_PROTOCOL_FILE) */
-
-#ifndef wxUSE_REGEX
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_REGEX must be defined."
-# else
-# define wxUSE_REGEX 0
-# endif
-#endif /* !defined(wxUSE_REGEX) */
-
-#ifndef wxUSE_STDPATHS
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_STDPATHS must be defined."
-# else
-# define wxUSE_STDPATHS 1
-# endif
-#endif /* !defined(wxUSE_STDPATHS) */
-
-#ifndef wxUSE_XML
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_XML must be defined."
-# else
-# define wxUSE_XML 0
-# endif
-#endif /* !defined(wxUSE_XML) */
-
-#ifndef wxUSE_SOCKETS
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_SOCKETS must be defined."
-# else
-# define wxUSE_SOCKETS 0
-# endif
-#endif /* !defined(wxUSE_SOCKETS) */
-
-#ifndef wxUSE_STREAMS
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_STREAMS must be defined."
-# else
-# define wxUSE_STREAMS 0
-# endif
-#endif /* !defined(wxUSE_STREAMS) */
-
-#ifndef wxUSE_STOPWATCH
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_STOPWATCH must be defined."
-# else
-# define wxUSE_STOPWATCH 0
-# endif
-#endif /* !defined(wxUSE_STOPWATCH) */
-
-#ifndef wxUSE_TEXTBUFFER
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_TEXTBUFFER must be defined."
-# else
-# define wxUSE_TEXTBUFFER 0
-# endif
-#endif /* !defined(wxUSE_TEXTBUFFER) */
-
-#ifndef wxUSE_TEXTFILE
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_TEXTFILE must be defined."
-# else
-# define wxUSE_TEXTFILE 0
-# endif
-#endif /* !defined(wxUSE_TEXTFILE) */
-
-#ifndef wxUSE_UNICODE
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_UNICODE must be defined."
-# else
-# define wxUSE_UNICODE 0
-# endif
-#endif /* !defined(wxUSE_UNICODE) */
-
-#ifndef wxUSE_URL
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_URL must be defined."
-# else
-# define wxUSE_URL 0
-# endif
-#endif /* !defined(wxUSE_URL) */
-
-#ifndef wxUSE_VARIANT
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_VARIANT must be defined."
-# else
-# define wxUSE_VARIANT 0
-# endif
-#endif /* wxUSE_VARIANT */
-
-/*
- all these tests are for GUI only
-
- please keep the options in alphabetical order!
- */
-#if wxUSE_GUI
-
-/*
- all of the settings tested below must be defined or we'd get an error from
- preprocessor about invalid integer expression
- */
-
-#ifndef wxUSE_ABOUTDLG
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_ABOUTDLG must be defined."
-# else
-# define wxUSE_ABOUTDLG 0
-# endif
-#endif /* !defined(wxUSE_ABOUTDLG) */
-
-#ifndef wxUSE_ACCEL
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_ACCEL must be defined."
-# else
-# define wxUSE_ACCEL 0
-# endif
-#endif /* !defined(wxUSE_ACCEL) */
-
-#ifndef wxUSE_ANIMATIONCTRL
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_ANIMATIONCTRL must be defined."
-# else
-# define wxUSE_ANIMATIONCTRL 0
-# endif
-#endif /* !defined(wxUSE_ANIMATIONCTRL) */
-
-#ifndef wxUSE_BITMAPCOMBOBOX
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_BITMAPCOMBOBOX must be defined."
-# else
-# define wxUSE_BITMAPCOMBOBOX 0
-# endif
-#endif /* !defined(wxUSE_BITMAPCOMBOBOX) */
-
-#ifndef wxUSE_BMPBUTTON
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_BMPBUTTON must be defined."
-# else
-# define wxUSE_BMPBUTTON 0
-# endif
-#endif /* !defined(wxUSE_BMPBUTTON) */
-
-#ifndef wxUSE_BUTTON
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_BUTTON must be defined."
-# else
-# define wxUSE_BUTTON 0
-# endif
-#endif /* !defined(wxUSE_BUTTON) */
-
-#ifndef wxUSE_CALENDARCTRL
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_CALENDARCTRL must be defined."
-# else
-# define wxUSE_CALENDARCTRL 0
-# endif
-#endif /* !defined(wxUSE_CALENDARCTRL) */
-
-#ifndef wxUSE_CARET
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_CARET must be defined."
-# else
-# define wxUSE_CARET 0
-# endif
-#endif /* !defined(wxUSE_CARET) */
-
-#ifndef wxUSE_CHECKBOX
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_CHECKBOX must be defined."
-# else
-# define wxUSE_CHECKBOX 0
-# endif
-#endif /* !defined(wxUSE_CHECKBOX) */
-
-#ifndef wxUSE_CHECKLISTBOX
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_CHECKLISTBOX must be defined."
-# else
-# define wxUSE_CHECKLISTBOX 0
-# endif
-#endif /* !defined(wxUSE_CHECKLISTBOX) */
-
-#ifndef wxUSE_CHOICE
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_CHOICE must be defined."
-# else
-# define wxUSE_CHOICE 0
-# endif
-#endif /* !defined(wxUSE_CHOICE) */
-
-#ifndef wxUSE_CHOICEBOOK
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_CHOICEBOOK must be defined."
-# else
-# define wxUSE_CHOICEBOOK 0
-# endif
-#endif /* !defined(wxUSE_CHOICEBOOK) */
-
-#ifndef wxUSE_CHOICEDLG
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_CHOICEDLG must be defined."
-# else
-# define wxUSE_CHOICEDLG 0
-# endif
-#endif /* !defined(wxUSE_CHOICEDLG) */
-
-#ifndef wxUSE_CLIPBOARD
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_CLIPBOARD must be defined."
-# else
-# define wxUSE_CLIPBOARD 0
-# endif
-#endif /* !defined(wxUSE_CLIPBOARD) */
-
-#ifndef wxUSE_COLLPANE
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_COLLPANE must be defined."
-# else
-# define wxUSE_COLLPANE 0
-# endif
-#endif /* !defined(wxUSE_COLLPANE) */
-
-#ifndef wxUSE_COLOURDLG
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_COLOURDLG must be defined."
-# else
-# define wxUSE_COLOURDLG 0
-# endif
-#endif /* !defined(wxUSE_COLOURDLG) */
-
-#ifndef wxUSE_COLOURPICKERCTRL
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_COLOURPICKERCTRL must be defined."
-# else
-# define wxUSE_COLOURPICKERCTRL 0
-# endif
-#endif /* !defined(wxUSE_COLOURPICKERCTRL) */
-
-#ifndef wxUSE_COMBOBOX
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_COMBOBOX must be defined."
-# else
-# define wxUSE_COMBOBOX 0
-# endif
-#endif /* !defined(wxUSE_COMBOBOX) */
-
-#ifndef wxUSE_COMBOCTRL
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_COMBOCTRL must be defined."
-# else
-# define wxUSE_COMBOCTRL 0
-# endif
-#endif /* !defined(wxUSE_COMBOCTRL) */
-
-#ifndef wxUSE_DATAOBJ
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_DATAOBJ must be defined."
-# else
-# define wxUSE_DATAOBJ 0
-# endif
-#endif /* !defined(wxUSE_DATAOBJ) */
-
-#ifndef wxUSE_DATAVIEWCTRL
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_DATAVIEWCTRL must be defined."
-# else
-# define wxUSE_DATAVIEWCTRL 0
-# endif
-#endif /* !defined(wxUSE_DATAVIEWCTRL) */
-
-#ifndef wxUSE_DATEPICKCTRL
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_DATEPICKCTRL must be defined."
-# else
-# define wxUSE_DATEPICKCTRL 0
-# endif
-#endif /* !defined(wxUSE_DATEPICKCTRL) */
-
-#ifndef wxUSE_DIRPICKERCTRL
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_DIRPICKERCTRL must be defined."
-# else
-# define wxUSE_DIRPICKERCTRL 0
-# endif
-#endif /* !defined(wxUSE_DIRPICKERCTRL) */
-
-#ifndef wxUSE_DISPLAY
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_DISPLAY must be defined."
-# else
-# define wxUSE_DISPLAY 0
-# endif
-#endif /* !defined(wxUSE_DISPLAY) */
-
-#ifndef wxUSE_DOC_VIEW_ARCHITECTURE
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_DOC_VIEW_ARCHITECTURE must be defined."
-# else
-# define wxUSE_DOC_VIEW_ARCHITECTURE 0
-# endif
-#endif /* !defined(wxUSE_DOC_VIEW_ARCHITECTURE) */
-
-#ifndef wxUSE_FILEDLG
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_FILEDLG must be defined."
-# else
-# define wxUSE_FILEDLG 0
-# endif
-#endif /* !defined(wxUSE_FILEDLG) */
-
-#ifndef wxUSE_FILEPICKERCTRL
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_FILEPICKERCTRL must be defined."
-# else
-# define wxUSE_FILEPICKERCTRL 0
-# endif
-#endif /* !defined(wxUSE_FILEPICKERCTRL) */
-
-#ifndef wxUSE_FONTDLG
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_FONTDLG must be defined."
-# else
-# define wxUSE_FONTDLG 0
-# endif
-#endif /* !defined(wxUSE_FONTDLG) */
-
-#ifndef wxUSE_FONTMAP
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_FONTMAP must be defined."
-# else
-# define wxUSE_FONTMAP 0
-# endif
-#endif /* !defined(wxUSE_FONTMAP) */
-
-#ifndef wxUSE_FONTPICKERCTRL
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_FONTPICKERCTRL must be defined."
-# else
-# define wxUSE_FONTPICKERCTRL 0
-# endif
-#endif /* !defined(wxUSE_FONTPICKERCTRL) */
-
-#ifndef wxUSE_GAUGE
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_GAUGE must be defined."
-# else
-# define wxUSE_GAUGE 0
-# endif
-#endif /* !defined(wxUSE_GAUGE) */
-
-#ifndef wxUSE_GRAPHICS_CONTEXT
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_GRAPHICS_CONTEXT must be defined."
-# else
-# define wxUSE_GRAPHICS_CONTEXT 0
-# endif
-#endif /* !defined(wxUSE_GRAPHICS_CONTEXT) */
-
-
-#ifndef wxUSE_GRID
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_GRID must be defined."
-# else
-# define wxUSE_GRID 0
-# endif
-#endif /* !defined(wxUSE_GRID) */
-
-#ifndef wxUSE_HELP
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_HELP must be defined."
-# else
-# define wxUSE_HELP 0
-# endif
-#endif /* !defined(wxUSE_HELP) */
-
-#ifndef wxUSE_HYPERLINKCTRL
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_HYPERLINKCTRL must be defined."
-# else
-# define wxUSE_HYPERLINKCTRL 0
-# endif
-#endif /* !defined(wxUSE_HYPERLINKCTRL) */
-
-#ifndef wxUSE_HTML
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_HTML must be defined."
-# else
-# define wxUSE_HTML 0
-# endif
-#endif /* !defined(wxUSE_HTML) */
-
-#ifndef wxUSE_LIBMSPACK
-# ifndef __UNIX__
- /* set to 0 on platforms that don't have libmspack */
-# define wxUSE_LIBMSPACK 0
-# else
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_LIBMSPACK must be defined."
-# else
-# define wxUSE_LIBMSPACK 0
-# endif
-# endif
-#endif /* !defined(wxUSE_LIBMSPACK) */
-
-#ifndef wxUSE_ICO_CUR
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_ICO_CUR must be defined."
-# else
-# define wxUSE_ICO_CUR 0
-# endif
-#endif /* !defined(wxUSE_ICO_CUR) */
-
-#ifndef wxUSE_IFF
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_IFF must be defined."
-# else
-# define wxUSE_IFF 0
-# endif
-#endif /* !defined(wxUSE_IFF) */
-
-#ifndef wxUSE_IMAGLIST
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_IMAGLIST must be defined."
-# else
-# define wxUSE_IMAGLIST 0
-# endif
-#endif /* !defined(wxUSE_IMAGLIST) */
-
-#ifndef wxUSE_JOYSTICK
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_JOYSTICK must be defined."
-# else
-# define wxUSE_JOYSTICK 0
-# endif
-#endif /* !defined(wxUSE_JOYSTICK) */
-
-#ifndef wxUSE_LISTBOOK
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_LISTBOOK must be defined."
-# else
-# define wxUSE_LISTBOOK 0
-# endif
-#endif /* !defined(wxUSE_LISTBOOK) */
-
-#ifndef wxUSE_LISTBOX
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_LISTBOX must be defined."
-# else
-# define wxUSE_LISTBOX 0
-# endif
-#endif /* !defined(wxUSE_LISTBOX) */
-
-#ifndef wxUSE_LISTCTRL
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_LISTCTRL must be defined."
-# else
-# define wxUSE_LISTCTRL 0
-# endif
-#endif /* !defined(wxUSE_LISTCTRL) */
-
-#ifndef wxUSE_LOGGUI
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_LOGGUI must be defined."
-# else
-# define wxUSE_LOGGUI 0
-# endif
-#endif /* !defined(wxUSE_LOGGUI) */
-
-#ifndef wxUSE_LOGWINDOW
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_LOGWINDOW must be defined."
-# else
-# define wxUSE_LOGWINDOW 0
-# endif
-#endif /* !defined(wxUSE_LOGWINDOW) */
-
-#ifndef wxUSE_LOG_DIALOG
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_LOG_DIALOG must be defined."
-# else
-# define wxUSE_LOG_DIALOG 0
-# endif
-#endif /* !defined(wxUSE_LOG_DIALOG) */
-
-#ifndef wxUSE_MDI
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_MDI must be defined."
-# else
-# define wxUSE_MDI 0
-# endif
-#endif /* !defined(wxUSE_MDI) */
-
-#ifndef wxUSE_MDI_ARCHITECTURE
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_MDI_ARCHITECTURE must be defined."
-# else
-# define wxUSE_MDI_ARCHITECTURE 0
-# endif
-#endif /* !defined(wxUSE_MDI_ARCHITECTURE) */
-
-#ifndef wxUSE_MENUS
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_MENUS must be defined."
-# else
-# define wxUSE_MENUS 0
-# endif
-#endif /* !defined(wxUSE_MENUS) */
-
-#ifndef wxUSE_MSGDLG
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_MSGDLG must be defined."
-# else
-# define wxUSE_MSGDLG 0
-# endif
-#endif /* !defined(wxUSE_MSGDLG) */
-
-#ifndef wxUSE_NOTEBOOK
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_NOTEBOOK must be defined."
-# else
-# define wxUSE_NOTEBOOK 0
-# endif
-#endif /* !defined(wxUSE_NOTEBOOK) */
-
-#ifndef wxUSE_ODCOMBOBOX
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_ODCOMBOBOX must be defined."
-# else
-# define wxUSE_ODCOMBOBOX 0
-# endif
-#endif /* !defined(wxUSE_ODCOMBOBOX) */
-
-#ifndef wxUSE_PALETTE
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_PALETTE must be defined."
-# else
-# define wxUSE_PALETTE 0
-# endif
-#endif /* !defined(wxUSE_PALETTE) */
-
-#ifndef wxUSE_POPUPWIN
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_POPUPWIN must be defined."
-# else
-# define wxUSE_POPUPWIN 0
-# endif
-#endif /* !defined(wxUSE_POPUPWIN) */
-
-#ifndef wxUSE_PRINTING_ARCHITECTURE
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_PRINTING_ARCHITECTURE must be defined."
-# else
-# define wxUSE_PRINTING_ARCHITECTURE 0
-# endif
-#endif /* !defined(wxUSE_PRINTING_ARCHITECTURE) */
-
-#ifndef wxUSE_RADIOBOX
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_RADIOBOX must be defined."
-# else
-# define wxUSE_RADIOBOX 0
-# endif
-#endif /* !defined(wxUSE_RADIOBOX) */
-
-#ifndef wxUSE_RADIOBTN
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_RADIOBTN must be defined."
-# else
-# define wxUSE_RADIOBTN 0
-# endif
-#endif /* !defined(wxUSE_RADIOBTN) */
-
-#ifndef wxUSE_SASH
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_SASH must be defined."
-# else
-# define wxUSE_SASH 0
-# endif
-#endif /* !defined(wxUSE_SASH) */
-
-#ifndef wxUSE_SCROLLBAR
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_SCROLLBAR must be defined."
-# else
-# define wxUSE_SCROLLBAR 0
-# endif
-#endif /* !defined(wxUSE_SCROLLBAR) */
-
-#ifndef wxUSE_SLIDER
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_SLIDER must be defined."
-# else
-# define wxUSE_SLIDER 0
-# endif
-#endif /* !defined(wxUSE_SLIDER) */
-
-#ifndef wxUSE_SOUND
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_SOUND must be defined."
-# else
-# define wxUSE_SOUND 0
-# endif
-#endif /* !defined(wxUSE_SOUND) */
-
-#ifndef wxUSE_SPINBTN
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_SPINBTN must be defined."
-# else
-# define wxUSE_SPINBTN 0
-# endif
-#endif /* !defined(wxUSE_SPINBTN) */
-
-#ifndef wxUSE_SPINCTRL
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_SPINCTRL must be defined."
-# else
-# define wxUSE_SPINCTRL 0
-# endif
-#endif /* !defined(wxUSE_SPINCTRL) */
-
-#ifndef wxUSE_SPLASH
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_SPLASH must be defined."
-# else
-# define wxUSE_SPLASH 0
-# endif
-#endif /* !defined(wxUSE_SPLASH) */
-
-#ifndef wxUSE_SPLITTER
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_SPLITTER must be defined."
-# else
-# define wxUSE_SPLITTER 0
-# endif
-#endif /* !defined(wxUSE_SPLITTER) */
-
-#ifndef wxUSE_STATBMP
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_STATBMP must be defined."
-# else
-# define wxUSE_STATBMP 0
-# endif
-#endif /* !defined(wxUSE_STATBMP) */
-
-#ifndef wxUSE_STATBOX
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_STATBOX must be defined."
-# else
-# define wxUSE_STATBOX 0
-# endif
-#endif /* !defined(wxUSE_STATBOX) */
-
-#ifndef wxUSE_STATLINE
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_STATLINE must be defined."
-# else
-# define wxUSE_STATLINE 0
-# endif
-#endif /* !defined(wxUSE_STATLINE) */
-
-#ifndef wxUSE_STATTEXT
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_STATTEXT must be defined."
-# else
-# define wxUSE_STATTEXT 0
-# endif
-#endif /* !defined(wxUSE_STATTEXT) */
-
-#ifndef wxUSE_STATUSBAR
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_STATUSBAR must be defined."
-# else
-# define wxUSE_STATUSBAR 0
-# endif
-#endif /* !defined(wxUSE_STATUSBAR) */
-
-#ifndef wxUSE_TAB_DIALOG
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_TAB_DIALOG must be defined."
-# else
-# define wxUSE_TAB_DIALOG 0
-# endif
-#endif /* !defined(wxUSE_TAB_DIALOG) */
-
-#ifndef wxUSE_TEXTCTRL
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_TEXTCTRL must be defined."
-# else
-# define wxUSE_TEXTCTRL 0
-# endif
-#endif /* !defined(wxUSE_TEXTCTRL) */
-
-#ifndef wxUSE_TIPWINDOW
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_TIPWINDOW must be defined."
-# else
-# define wxUSE_TIPWINDOW 0
-# endif
-#endif /* !defined(wxUSE_TIPWINDOW) */
-
-#ifndef wxUSE_TOOLBAR
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_TOOLBAR must be defined."
-# else
-# define wxUSE_TOOLBAR 0
-# endif
-#endif /* !defined(wxUSE_TOOLBAR) */
-
-#ifndef wxUSE_TOOLTIPS
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_TOOLTIPS must be defined."
-# else
-# define wxUSE_TOOLTIPS 0
-# endif
-#endif /* !defined(wxUSE_TOOLTIPS) */
-
-#ifndef wxUSE_TREECTRL
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_TREECTRL must be defined."
-# else
-# define wxUSE_TREECTRL 0
-# endif
-#endif /* !defined(wxUSE_TREECTRL) */
-
-#ifndef wxUSE_VALIDATORS
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_VALIDATORS must be defined."
-# else
-# define wxUSE_VALIDATORS 0
-# endif
-#endif /* !defined(wxUSE_VALIDATORS) */
-
-#ifndef wxUSE_WXHTML_HELP
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_WXHTML_HELP must be defined."
-# else
-# define wxUSE_WXHTML_HELP 0
-# endif
-#endif /* !defined(wxUSE_WXHTML_HELP) */
-
-#ifndef wxUSE_XRC
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_XRC must be defined."
-# else
-# define wxUSE_XRC 0
-# endif
-#endif /* !defined(wxUSE_XRC) */
-
-#endif /* wxUSE_GUI */
-
-/*
- check consistency of the settings
- */
-
-#if WXWIN_COMPATIBILITY_2_4
-# if !WXWIN_COMPATIBILITY_2_6
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "2.4.X compatibility requires 2.6.X compatibility"
-# else
-# undef WXWIN_COMPATIBILITY_2_6
-# define WXWIN_COMPATIBILITY_2_6 1
-# endif
-# endif
-#endif /* WXWIN_COMPATIBILITY_2_4 */
-
-#if wxUSE_ARCHIVE_STREAMS
-# if !wxUSE_DATETIME
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxArchive requires wxUSE_DATETIME"
-# else
-# undef wxUSE_ARCHIVE_STREAMS
-# define wxUSE_ARCHIVE_STREAMS 0
-# endif
-# endif
-#endif /* wxUSE_ARCHIVE_STREAMS */
-
-#if wxUSE_CRASHREPORT && !wxUSE_ON_FATAL_EXCEPTION
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_CRASHREPORT requires wxUSE_ON_FATAL_EXCEPTION"
-# else
-# undef wxUSE_CRASHREPORT
-# define wxUSE_CRASHREPORT 0
-# endif
-#endif /* wxUSE_CRASHREPORT */
-
-#if wxUSE_PROTOCOL_FILE || wxUSE_PROTOCOL_FTP || wxUSE_PROTOCOL_HTTP
-# if !wxUSE_PROTOCOL
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_PROTOCOL_XXX requires wxUSE_PROTOCOL"
-# else
-# undef wxUSE_PROTOCOL
-# define wxUSE_PROTOCOL 1
-# endif
-# endif
-#endif /* wxUSE_PROTOCOL_XXX */
-
-#if wxUSE_URL
-# if !wxUSE_PROTOCOL
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_URL requires wxUSE_PROTOCOL"
-# else
-# undef wxUSE_PROTOCOL
-# define wxUSE_PROTOCOL 1
-# endif
-# endif
-#endif /* wxUSE_URL */
-
-#if wxUSE_PROTOCOL
-# if !wxUSE_SOCKETS
-# if wxUSE_PROTOCOL_HTTP || wxUSE_PROTOCOL_FTP
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_PROTOCOL_FTP/HTTP requires wxUSE_SOCKETS"
-# else
-# undef wxUSE_SOCKETS
-# define wxUSE_SOCKETS 1
-# endif
-# endif
-# endif
-
-# if !wxUSE_STREAMS
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_PROTOCOL requires wxUSE_STREAMS"
-# else
-# undef wxUSE_STREAMS
-# define wxUSE_STREAMS 1
-# endif
-# endif
-#endif /* wxUSE_PROTOCOL */
-
-/* have to test for wxUSE_HTML before wxUSE_FILESYSTEM */
-#if wxUSE_HTML
-# if !wxUSE_FILESYSTEM
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxHTML requires wxFileSystem"
-# else
-# undef wxUSE_FILESYSTEM
-# define wxUSE_FILESYSTEM 1
-# endif
-# endif
-#endif /* wxUSE_HTML */
-
-#if wxUSE_FS_ARCHIVE
-# if !wxUSE_FILESYSTEM
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxArchiveFSHandler requires wxFileSystem"
-# else
-# undef wxUSE_FILESYSTEM
-# define wxUSE_FILESYSTEM 1
-# endif
-# endif
-# if !wxUSE_ARCHIVE_STREAMS
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxArchiveFSHandler requires wxArchive"
-# else
-# undef wxUSE_ARCHIVE_STREAMS
-# define wxUSE_ARCHIVE_STREAMS 1
-# endif
-# endif
-#endif /* wxUSE_FS_ARCHIVE */
-
-#if wxUSE_FILESYSTEM
-# if !wxUSE_STREAMS
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_FILESYSTEM requires wxUSE_STREAMS"
-# else
-# undef wxUSE_STREAMS
-# define wxUSE_STREAMS 1
-# endif
-# endif
-# if !wxUSE_FILE && !wxUSE_FFILE
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_FILESYSTEM requires either wxUSE_FILE or wxUSE_FFILE"
-# else
-# undef wxUSE_FILE
-# define wxUSE_FILE 1
-# undef wxUSE_FFILE
-# define wxUSE_FFILE 1
-# endif
-# endif
-#endif /* wxUSE_FILESYSTEM */
-
-#if wxUSE_FS_INET
-# if !wxUSE_PROTOCOL
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_FS_INET requires wxUSE_PROTOCOL"
-# else
-# undef wxUSE_PROTOCOL
-# define wxUSE_PROTOCOL 1
-# endif
-# endif
-#endif /* wxUSE_FS_INET */
-
-#if wxUSE_STOPWATCH || wxUSE_DATETIME
-# if !wxUSE_LONGLONG
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_STOPWATCH and wxUSE_DATETIME require wxUSE_LONGLONG"
-# else
-# undef wxUSE_LONGLONG
-# define wxUSE_LONGLONG 1
-# endif
-# endif
-#endif /* wxUSE_STOPWATCH */
-
-#if wxUSE_MIMETYPE && !wxUSE_TEXTFILE
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_MIMETYPE requires wxUSE_TEXTFILE"
-# else
-# undef wxUSE_TEXTFILE
-# define wxUSE_TEXTFILE 1
-# endif
-#endif /* wxUSE_MIMETYPE */
-
-#if wxUSE_ODBC
-# if !wxUSE_DATETIME
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxODBC requires wxUSE_DATETIME"
-# else
-# undef wxUSE_ODBC
-# define wxUSE_ODBC 0
-# endif
-# endif
-#endif /* wxUSE_ODBC */
-
-#if wxUSE_TEXTFILE && !wxUSE_TEXTBUFFER
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_TEXTFILE requires wxUSE_TEXTBUFFER"
-# else
-# undef wxUSE_TEXTBUFFER
-# define wxUSE_TEXTBUFFER 1
-# endif
-#endif /* wxUSE_TEXTFILE */
-
-#if wxUSE_TEXTFILE && !wxUSE_FILE
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_TEXTFILE requires wxUSE_FILE"
-# else
-# undef wxUSE_FILE
-# define wxUSE_FILE 1
-# endif
-#endif /* wxUSE_TEXTFILE */
-
-#if wxUSE_XML && !wxUSE_WCHAR_T
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_XML requires wxUSE_WCHAR_T"
-# else
-# undef wxUSE_XML
-# define wxUSE_XML 0
-# endif
-#endif /* wxUSE_XML */
-
-#if !wxUSE_DYNLIB_CLASS
-# if wxUSE_DYNAMIC_LOADER
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_DYNAMIC_LOADER requires wxUSE_DYNLIB_CLASS."
-# else
-# define wxUSE_DYNLIB_CLASS 1
-# endif
-# endif
-#endif /* wxUSE_DYNLIB_CLASS */
-
-#if wxUSE_ZIPSTREAM
-# if !wxUSE_ZLIB
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxZip requires wxZlib"
-# else
-# undef wxUSE_ZLIB
-# define wxUSE_ZLIB 1
-# endif
-# endif
-# if !wxUSE_ARCHIVE_STREAMS
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxZip requires wxArchive"
-# else
-# undef wxUSE_ARCHIVE_STREAMS
-# define wxUSE_ARCHIVE_STREAMS 1
-# endif
-# endif
-#endif /* wxUSE_ZIPSTREAM */
-
-#if wxUSE_TARSTREAM
- /* wxTar doesn't currently compile without wchar_t */
-# if !wxUSE_WCHAR_T
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxTar requires wchar_t"
-# else
-# undef wxUSE_TARSTREAM
-# define wxUSE_TARSTREAM 0
-# endif
-# endif
-#endif /* wxUSE_TARSTREAM */
-
-#if wxUSE_TARSTREAM
-# if !wxUSE_ARCHIVE_STREAMS
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxTar requires wxArchive"
-# else
-# undef wxUSE_ARCHIVE_STREAMS
-# define wxUSE_ARCHIVE_STREAMS 1
-# endif
-# endif
-#endif /* wxUSE_TARSTREAM */
-
-/* the rest of the tests is for the GUI settings only */
-#if wxUSE_GUI
-
-#if wxUSE_BUTTON || \
- wxUSE_CALENDARCTRL || \
- wxUSE_CARET || \
- wxUSE_COMBOBOX || \
- wxUSE_BMPBUTTON || \
- wxUSE_CHECKBOX || \
- wxUSE_CHECKLISTBOX || \
- wxUSE_CHOICE || \
- wxUSE_GAUGE || \
- wxUSE_GRID || \
- wxUSE_LISTBOX || \
- wxUSE_LISTCTRL || \
- wxUSE_NOTEBOOK || \
- wxUSE_RADIOBOX || \
- wxUSE_RADIOBTN || \
- wxUSE_SCROLLBAR || \
- wxUSE_SLIDER || \
- wxUSE_SPINBTN || \
- wxUSE_SPINCTRL || \
- wxUSE_STATBMP || \
- wxUSE_STATBOX || \
- wxUSE_STATLINE || \
- wxUSE_STATTEXT || \
- wxUSE_STATUSBAR || \
- wxUSE_TEXTCTRL || \
- wxUSE_TOOLBAR || \
- wxUSE_TREECTRL
-# if !wxUSE_CONTROLS
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_CONTROLS unset but some controls used"
-# else
-# undef wxUSE_CONTROLS
-# define wxUSE_CONTROLS 1
-# endif
-# endif
-#endif /* controls */
-
-#if wxUSE_BMPBUTTON
-# if !wxUSE_BUTTON
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_BMPBUTTON requires wxUSE_BUTTON"
-# else
-# undef wxUSE_BUTTON
-# define wxUSE_BUTTON 1
-# endif
-# endif
-#endif /* wxUSE_BMPBUTTON */
-
-/*
- wxUSE_BOOKCTRL should be only used if any of the controls deriving from it
- are used
- */
-#ifdef wxUSE_BOOKCTRL
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_BOOKCTRL is defined automatically, don't define it"
-# else
-# undef wxUSE_BOOKCTRL
-# endif
-#endif
-
-#define wxUSE_BOOKCTRL (wxUSE_NOTEBOOK || \
- wxUSE_LISTBOOK || \
- wxUSE_CHOICEBOOK || \
- wxUSE_TOOLBOOK || \
- wxUSE_TREEBOOK)
-
-#if wxUSE_COLLPANE
-# if !wxUSE_BUTTON || !wxUSE_STATLINE
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_COLLPANE requires wxUSE_BUTTON and wxUSE_STATLINE"
-# else
-# undef wxUSE_COLLPANE
-# define wxUSE_COLLPANE 0
-# endif
-# endif
-#endif /* wxUSE_COLLPANE */
-
-#if wxUSE_LISTBOOK
-# if !wxUSE_LISTCTRL
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxListbook requires wxListCtrl"
-# else
-# undef wxUSE_LISTCTRL
-# define wxUSE_LISTCTRL 1
-# endif
-# endif
-#endif /* wxUSE_LISTBOOK */
-
-#if wxUSE_CHOICEBOOK
-# if !wxUSE_CHOICE
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxChoicebook requires wxChoice"
-# else
-# undef wxUSE_CHOICE
-# define wxUSE_CHOICE 1
-# endif
-# endif
-#endif /* wxUSE_CHOICEBOOK */
-
-#if wxUSE_TOOLBOOK
-# if !wxUSE_TOOLBAR
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxToolbook requires wxToolBar"
-# else
-# undef wxUSE_TOOLBAR
-# define wxUSE_TOOLBAR 1
-# endif
-# endif
-#endif /* wxUSE_TOOLBOOK */
-
-#if !wxUSE_ODCOMBOBOX
-# if wxUSE_BITMAPCOMBOBOX
-# error "wxBitmapComboBox requires wxOwnerDrawnComboBox"
-# else
-# undef wxUSE_BITMAPCOMBOBOX
-# define wxUSE_BITMAPCOMBOBOX 0
-# endif
-#endif /* !wxUSE_ODCOMBOBOX */
-
-/* don't attempt to use native status bar on the platforms not having it */
-#ifndef wxUSE_NATIVE_STATUSBAR
-# define wxUSE_NATIVE_STATUSBAR 0
-#elif wxUSE_NATIVE_STATUSBAR
-# if defined(__WXUNIVERSAL__) || !( defined(__WXMSW__) || \
- defined(__WXMAC__) || \
- defined(__WXPALMOS__) )
-# undef wxUSE_NATIVE_STATUSBAR
-# define wxUSE_NATIVE_STATUSBAR 0
-# endif
-#endif
-
-#if wxUSE_GRAPHICS_CONTEXT && !wxUSE_GEOMETRY
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_GRAPHICS_CONTEXT requires wxUSE_GEOMETRY"
-# else
-# undef wxUSE_GRAPHICS_CONTEXT
-# define wxUSE_GRAPHICS_CONTEXT 0
-# endif
-#endif /* wxUSE_GRAPHICS_CONTEXT */
-
-
-/* wxGTK-specific dependencies */
-#ifdef __WXGTK__
-# ifndef __WXUNIVERSAL__
-# if wxUSE_MDI_ARCHITECTURE && !wxUSE_MENUS
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "MDI requires wxUSE_MENUS in wxGTK"
-# else
-# undef wxUSE_MENUS
-# define wxUSE_MENUS 1
-# endif
-# endif
-# endif /* !__WXUNIVERSAL__ */
-
-# if wxUSE_JOYSTICK
-# if !wxUSE_THREADS
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxJoystick requires threads in wxGTK"
-# else
-# undef wxUSE_JOYSTICK
-# define wxUSE_JOYSTICK 0
-# endif
-# endif
-# endif
-#endif /* wxGTK && !wxUniv */
-
-/* Hopefully we can emulate these dialogs in due course */
-#if defined(__SMARTPHONE__) && defined(__WXWINCE__)
-# ifdef wxUSE_COLOURDLG
-# undef wxUSE_COLOURDLG
-# define wxUSE_COLOURDLG 0
-# endif
-#endif /* __SMARTPHONE__ && __WXWINCE__ */
-
-
-/* generic controls dependencies */
-#if !defined(__WXMSW__) || defined(__WXUNIVERSAL__)
-# if wxUSE_FONTDLG || wxUSE_FILEDLG || wxUSE_CHOICEDLG
- /* all common controls are needed by these dialogs */
-# if !defined(wxUSE_CHOICE) || \
- !defined(wxUSE_TEXTCTRL) || \
- !defined(wxUSE_BUTTON) || \
- !defined(wxUSE_CHECKBOX) || \
- !defined(wxUSE_STATTEXT)
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "These common controls are needed by common dialogs"
-# else
-# undef wxUSE_CHOICE
-# define wxUSE_CHOICE 1
-# undef wxUSE_TEXTCTRL
-# define wxUSE_TEXTCTRL 1
-# undef wxUSE_BUTTON
-# define wxUSE_BUTTON 1
-# undef wxUSE_CHECKBOX
-# define wxUSE_CHECKBOX 1
-# undef wxUSE_STATTEXT
-# define wxUSE_STATTEXT 1
-# endif
-# endif
-# endif
-#endif /* !wxMSW || wxUniv */
-
-/* common dependencies */
-#if wxUSE_CALENDARCTRL
-# if !(wxUSE_SPINBTN && wxUSE_COMBOBOX)
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxCalendarCtrl requires wxSpinButton and wxComboBox"
-# else
-# undef wxUSE_SPINBTN
-# undef wxUSE_COMBOBOX
-# define wxUSE_SPINBTN 1
-# define wxUSE_COMBOBOX 1
-# endif
-# endif
-
-# if !wxUSE_DATETIME
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxCalendarCtrl requires wxUSE_DATETIME"
-# else
-# undef wxUSE_DATETIME
-# define wxUSE_DATETIME 1
-# endif
-# endif
-#endif /* wxUSE_CALENDARCTRL */
-
-#if wxUSE_DATEPICKCTRL
-# if !wxUSE_DATETIME
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxDatePickerCtrl requires wxUSE_DATETIME"
-# else
-# undef wxUSE_DATETIME
-# define wxUSE_DATETIME 1
-# endif
-# endif
-#endif /* wxUSE_DATEPICKCTRL */
-
-#if wxUSE_CHECKLISTBOX
-# if !wxUSE_LISTBOX
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxCheckListBox requires wxListBox"
-# else
-# undef wxUSE_LISTBOX
-# define wxUSE_LISTBOX 1
-# endif
-# endif
-#endif /* wxUSE_CHECKLISTBOX */
-
-#if wxUSE_CHOICEDLG
-# if !wxUSE_LISTBOX
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "Choice dialogs requires wxListBox"
-# else
-# undef wxUSE_LISTBOX
-# define wxUSE_LISTBOX 1
-# endif
-# endif
-#endif /* wxUSE_CHOICEDLG */
-
-#if wxUSE_HELP
-# if !wxUSE_BMPBUTTON
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_HELP requires wxUSE_BMPBUTTON"
-# else
-# undef wxUSE_BMPBUTTON
-# define wxUSE_BMPBUTTON 1
-# endif
-# endif
-
-# if !wxUSE_CHOICEDLG
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_HELP requires wxUSE_CHOICEDLG"
-# else
-# undef wxUSE_CHOICEDLG
-# define wxUSE_CHOICEDLG 1
-# endif
-# endif
-#endif /* wxUSE_HELP */
-
-#if wxUSE_MS_HTML_HELP
- /*
- this doesn't make sense for platforms other than MSW but we still
- define it in wx/setup_inc.h so don't complain if it happens to be
- defined under another platform but just silently fix it.
- */
-# ifndef __WXMSW__
-# undef wxUSE_MS_HTML_HELP
-# define wxUSE_MS_HTML_HELP 0
-# endif
-#endif /* wxUSE_MS_HTML_HELP */
-
-#if wxUSE_WXHTML_HELP
-# if !wxUSE_HELP || !wxUSE_HTML || !wxUSE_COMBOBOX || !wxUSE_NOTEBOOK || !wxUSE_SPINCTRL
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "Built in help controller can't be compiled"
-# else
-# undef wxUSE_HELP
-# define wxUSE_HELP 1
-# undef wxUSE_HTML
-# define wxUSE_HTML 1
-# undef wxUSE_COMBOBOX
-# define wxUSE_COMBOBOX 1
-# undef wxUSE_NOTEBOOK
-# define wxUSE_NOTEBOOK 1
-# undef wxUSE_SPINCTRL
-# define wxUSE_SPINCTRL 1
-# endif
-# endif
-#endif /* wxUSE_WXHTML_HELP */
-
-#if !wxUSE_IMAGE
-/*
- The default wxUSE_IMAGE setting is 1, so if it's set to 0 we assume the
- user explicitly wants this and disable all other features that require
- wxUSE_IMAGE.
- */
-# if wxUSE_DRAGIMAGE
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_DRAGIMAGE requires wxUSE_IMAGE"
-# else
-# undef wxUSE_DRAGIMAGE
-# define wxUSE_DRAGIMAGE 0
-# endif
-# endif
-
-# if wxUSE_LIBPNG
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_LIBPNG requires wxUSE_IMAGE"
-# else
-# undef wxUSE_LIBPNG
-# define wxUSE_LIBPNG 0
-# endif
-# endif
-
-# if wxUSE_LIBJPEG
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_LIBJPEG requires wxUSE_IMAGE"
-# else
-# undef wxUSE_LIBJPEG
-# define wxUSE_LIBJPEG 0
-# endif
-# endif
-
-# if wxUSE_LIBTIFF
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_LIBTIFF requires wxUSE_IMAGE"
-# else
-# undef wxUSE_LIBTIFF
-# define wxUSE_LIBTIFF 0
-# endif
-# endif
-
-# if wxUSE_GIF
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_GIF requires wxUSE_IMAGE"
-# else
-# undef wxUSE_GIF
-# define wxUSE_GIF 0
-# endif
-# endif
-
-# if wxUSE_PNM
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_PNM requires wxUSE_IMAGE"
-# else
-# undef wxUSE_PNM
-# define wxUSE_PNM 0
-# endif
-# endif
-
-# if wxUSE_PCX
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_PCX requires wxUSE_IMAGE"
-# else
-# undef wxUSE_PCX
-# define wxUSE_PCX 0
-# endif
-# endif
-
-# if wxUSE_IFF
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_IFF requires wxUSE_IMAGE"
-# else
-# undef wxUSE_IFF
-# define wxUSE_IFF 0
-# endif
-# endif
-
-# if wxUSE_TOOLBAR
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_TOOLBAR requires wxUSE_IMAGE"
-# else
-# undef wxUSE_TOOLBAR
-# define wxUSE_TOOLBAR 0
-# endif
-# endif
-
-# if wxUSE_XPM
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_XPM requires wxUSE_IMAGE"
-# else
-# undef wxUSE_XPM
-# define wxUSE_XPM 0
-# endif
-# endif
-
-#endif /* !wxUSE_IMAGE */
-
-#if wxUSE_DOC_VIEW_ARCHITECTURE
-# if !wxUSE_MENUS
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "DocView requires wxUSE_MENUS"
-# else
-# undef wxUSE_MENUS
-# define wxUSE_MENUS 1
-# endif
-# endif
-
-# if !wxUSE_CHOICEDLG
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "DocView requires wxUSE_CHOICEDLG"
-# else
-# undef wxUSE_CHOICEDLG
-# define wxUSE_CHOICEDLG 1
-# endif
-# endif
-
-# if !wxUSE_STREAMS && !wxUSE_STD_IOSTREAM
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "DocView requires wxUSE_STREAMS or wxUSE_STD_IOSTREAM"
-# else
-# undef wxUSE_STREAMS
-# define wxUSE_STREAMS 1
-# endif
-# endif
-#endif /* wxUSE_DOC_VIEW_ARCHITECTURE */
-
-#if wxUSE_PRINTING_ARCHITECTURE
-# if !wxUSE_COMBOBOX
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "Print dialog requires wxUSE_COMBOBOX"
-# else
-# undef wxUSE_COMBOBOX
-# define wxUSE_COMBOBOX 1
-# endif
-# endif
-#endif /* wxUSE_PRINTING_ARCHITECTURE */
-
-#if wxUSE_MDI_ARCHITECTURE
-# if !wxUSE_MDI
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "MDI requires wxUSE_MDI"
-# else
-# undef wxUSE_MDI
-# define wxUSE_MDI 1
-# endif
-# endif
-
-# if !wxUSE_DOC_VIEW_ARCHITECTURE
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_MDI_ARCHITECTURE requires wxUSE_DOC_VIEW_ARCHITECTURE"
-# else
-# undef wxUSE_DOC_VIEW_ARCHITECTURE
-# define wxUSE_DOC_VIEW_ARCHITECTURE 1
-# endif
-# endif
-#endif /* wxUSE_MDI_ARCHITECTURE */
-
-#if !wxUSE_FILEDLG
-# if wxUSE_DOC_VIEW_ARCHITECTURE || wxUSE_WXHTML_HELP
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_FILEDLG is required by wxUSE_DOC_VIEW_ARCHITECTURE and wxUSE_WXHTML_HELP!"
-# else
-# undef wxUSE_FILEDLG
-# define wxUSE_FILEDLG 1
-# endif
-# endif
-#endif /* wxUSE_FILEDLG */
-
-#if !wxUSE_GAUGE || !wxUSE_BUTTON
-# if wxUSE_PROGRESSDLG && !defined(__WXPALMOS__)
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "Generic progress dialog requires wxUSE_GAUGE and wxUSE_BUTTON"
-# else
-# undef wxUSE_GAUGE
-# undef wxUSE_BUTTON
-# define wxUSE_GAUGE 1
-# define wxUSE_BUTTON 1
-# endif
-# endif
-#endif /* !wxUSE_GAUGE */
-
-#if !wxUSE_BUTTON
-# if wxUSE_FONTDLG || \
- wxUSE_FILEDLG || \
- wxUSE_CHOICEDLG || \
- wxUSE_NUMBERDLG || \
- wxUSE_TEXTDLG || \
- wxUSE_DIRDLG || \
- wxUSE_STARTUP_TIPS || \
- wxUSE_WIZARDDLG
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "Common and generic dialogs require wxUSE_BUTTON"
-# else
-# undef wxUSE_BUTTON
-# define wxUSE_BUTTON 1
-# endif
-# endif
-#endif /* !wxUSE_BUTTON */
-
-#if !wxUSE_TOOLBAR
-# if wxUSE_TOOLBAR_NATIVE
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_TOOLBAR is set to 0 but wxUSE_TOOLBAR_NATIVE is set to 1"
-# else
-# undef wxUSE_TOOLBAR_NATIVE
-# define wxUSE_TOOLBAR_NATIVE 0
-# endif
-# endif
-#endif
-
-#if !wxUSE_IMAGLIST
-# if wxUSE_TREECTRL || wxUSE_NOTEBOOK || wxUSE_LISTCTRL
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxImageList must be compiled as well"
-# else
-# undef wxUSE_IMAGLIST
-# define wxUSE_IMAGLIST 1
-# endif
-# endif
-#endif /* !wxUSE_IMAGLIST */
-
-#if !wxUSE_MSGDLG
-# ifdef wxABORT_ON_CONFIG_ERROR
- /* FIXME: should compile without it, of course, but doesn't */
-# error "wxMessageBox is always needed"
-# else
-# undef wxUSE_MSGDLG
-# define wxUSE_MSGDLG 1
-# endif
-#endif
-
-#if wxUSE_RADIOBOX
-# if !wxUSE_RADIOBTN
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_RADIOBOX requires wxUSE_RADIOBTN"
-# else
-# undef wxUSE_RADIOBTN
-# define wxUSE_RADIOBTN 1
-# endif
-# endif
-# if !wxUSE_STATBOX && !defined(__WXPALMOS__)
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_RADIOBOX requires wxUSE_STATBOX"
-# else
-# undef wxUSE_STATBOX
-# define wxUSE_STATBOX 1
-# endif
-# endif
-#endif /* wxUSE_RADIOBOX */
-
-#if wxUSE_LOGWINDOW
-# if !wxUSE_TEXTCTRL
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_LOGWINDOW requires wxUSE_TEXTCTRL"
-# else
-# undef wxUSE_TEXTCTRL
-# define wxUSE_TEXTCTRL 1
-# endif
-# endif
-#endif /* wxUSE_LOGWINDOW */
-
-#if wxUSE_LOG_DIALOG
-# if !wxUSE_LISTCTRL || !wxUSE_BUTTON
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_LOG_DIALOG requires wxUSE_LISTCTRL and wxUSE_BUTTON"
-# else
-# undef wxUSE_LISTCTRL
-# define wxUSE_LISTCTRL 1
-# undef wxUSE_BUTTON
-# define wxUSE_BUTTON 1
-# endif
-# endif
-#endif /* wxUSE_LOG_DIALOG */
-
-#if wxUSE_CLIPBOARD && !wxUSE_DATAOBJ
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxClipboard requires wxDataObject"
-# else
-# undef wxUSE_DATAOBJ
-# define wxUSE_DATAOBJ 1
-# endif
-#endif /* wxUSE_CLIPBOARD */
-
-#if wxUSE_WX_RESOURCES && !wxUSE_PROLOGIO
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxr resources require PrologIO"
-# else
-# undef wxUSE_PROLOGIO
-# define wxUSE_PROLOGIO 1
-# endif
-#endif /* wxUSE_WX_RESOURCES */
-
-#if wxUSE_XRC && !wxUSE_XML
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_XRC requires wxUSE_XML"
-# else
-# undef wxUSE_XRC
-# define wxUSE_XRC 0
-# endif
-#endif /* wxUSE_XRC */
-
-#if wxUSE_SOCKETS && !wxUSE_STOPWATCH
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_SOCKETS requires wxUSE_STOPWATCH"
-# else
-# undef wxUSE_SOCKETS
-# define wxUSE_SOCKETS 0
-# endif
-#endif /* wxUSE_SOCKETS */
-
-#if !wxUSE_VARIANT
-# if wxUSE_DATAVIEWCTRL
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxDataViewCtrl requires wxVariant"
-# else
-# undef wxUSE_DATAVIEWCTRL
-# define wxUSE_DATAVIEWCTRL 0
-# endif
-# endif
-
-# if wxUSE_ODBC
-# ifdef wxABORT_ON_CONFIG_ERROR
-# error "wxUSE_ODBC requires wxVariant"
-# else
-# undef wxUSE_ODBC
-# define wxUSE_ODBC 0
-# endif
-# endif
-#endif /* wxUSE_VARIANT */
-
-#endif /* wxUSE_GUI */
diff --git a/Externals/wxWidgets/include/wx/choicdlg.h b/Externals/wxWidgets/include/wx/choicdlg.h
deleted file mode 100644
index 29cd37867d..0000000000
--- a/Externals/wxWidgets/include/wx/choicdlg.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-// Name: wx/choicdgg.h
-// Purpose: Includes generic choice dialog file
-// Author: Julian Smart
-// Modified by:
-// Created:
-// RCS-ID: $Id: choicdlg.h 33948 2005-05-04 18:57:50Z JS $
-// Copyright: Julian Smart
-// Licence: wxWindows licence
-/////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_CHOICDLG_H_BASE_
-#define _WX_CHOICDLG_H_BASE_
-
-#if wxUSE_CHOICEDLG
-
-#include "wx/generic/choicdgg.h"
-
-#endif
-
-#endif
- // _WX_CHOICDLG_H_BASE_
diff --git a/Externals/wxWidgets/include/wx/choice.h b/Externals/wxWidgets/include/wx/choice.h
deleted file mode 100644
index 5c4ebb0cc1..0000000000
--- a/Externals/wxWidgets/include/wx/choice.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-// Name: wx/choice.h
-// Purpose: wxChoice class interface
-// Author: Vadim Zeitlin
-// Modified by:
-// Created: 26.07.99
-// RCS-ID: $Id: choice.h 42727 2006-10-30 16:04:27Z VZ $
-// Copyright: (c) wxWidgets team
-// Licence: wxWindows licence
-/////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_CHOICE_H_BASE_
-#define _WX_CHOICE_H_BASE_
-
-// ----------------------------------------------------------------------------
-// headers
-// ----------------------------------------------------------------------------
-
-#include "wx/defs.h"
-
-#if wxUSE_CHOICE
-
-#include "wx/ctrlsub.h" // the base class
-
-// ----------------------------------------------------------------------------
-// global data
-// ----------------------------------------------------------------------------
-
-extern WXDLLEXPORT_DATA(const wxChar) wxChoiceNameStr[];
-
-// ----------------------------------------------------------------------------
-// wxChoice allows to select one of a non-modifiable list of strings
-// ----------------------------------------------------------------------------
-
-class WXDLLEXPORT wxChoiceBase : public wxControlWithItems
-{
-public:
- wxChoiceBase() { }
- virtual ~wxChoiceBase();
-
- // all generic methods are in wxControlWithItems
-
- // get the current selection: this can only be different from the normal
- // selection if the popup items list is currently opened and the user
- // selected some item in it but didn't close the list yet; otherwise (and
- // currently always on platforms other than MSW) this is the same as
- // GetSelection()
- virtual int GetCurrentSelection() const { return GetSelection(); }
-
- // set/get the number of columns in the control (as they're not supported on
- // most platforms, they do nothing by default)
- virtual void SetColumns(int WXUNUSED(n) = 1 ) { }
- virtual int GetColumns() const { return 1 ; }
-
- // emulate selecting the item event.GetInt()
- void Command(wxCommandEvent& event);
-
-private:
- DECLARE_NO_COPY_CLASS(wxChoiceBase)
-};
-
-// ----------------------------------------------------------------------------
-// include the platform-dependent class definition
-// ----------------------------------------------------------------------------
-
-#if defined(__WXUNIVERSAL__)
- #include "wx/univ/choice.h"
-#elif defined(__SMARTPHONE__) && defined(__WXWINCE__)
- #include "wx/msw/wince/choicece.h"
-#elif defined(__WXMSW__)
- #include "wx/msw/choice.h"
-#elif defined(__WXMOTIF__)
- #include "wx/motif/choice.h"
-#elif defined(__WXGTK20__)
- #include "wx/gtk/choice.h"
-#elif defined(__WXGTK__)
- #include "wx/gtk1/choice.h"
-#elif defined(__WXMAC__)
- #include "wx/mac/choice.h"
-#elif defined(__WXCOCOA__)
- #include "wx/cocoa/choice.h"
-#elif defined(__WXPM__)
- #include "wx/os2/choice.h"
-#endif
-
-#endif // wxUSE_CHOICE
-
-#endif // _WX_CHOICE_H_BASE_
diff --git a/Externals/wxWidgets/include/wx/choicebk.h b/Externals/wxWidgets/include/wx/choicebk.h
deleted file mode 100644
index 85182ccbcd..0000000000
--- a/Externals/wxWidgets/include/wx/choicebk.h
+++ /dev/null
@@ -1,154 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Name: wx/choicebk.h
-// Purpose: wxChoicebook: wxChoice and wxNotebook combination
-// Author: Vadim Zeitlin
-// Modified by: Wlodzimierz ABX Skiba from wx/listbook.h
-// Created: 15.09.04
-// RCS-ID: $Id: choicebk.h 56623 2008-10-31 23:07:49Z VZ $
-// Copyright: (c) Vadim Zeitlin, Wlodzimierz Skiba
-// Licence: wxWindows licence
-///////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_CHOICEBOOK_H_
-#define _WX_CHOICEBOOK_H_
-
-#include "wx/defs.h"
-
-#if wxUSE_CHOICEBOOK
-
-#include "wx/bookctrl.h"
-#include "wx/choice.h"
-
-class WXDLLIMPEXP_FWD_CORE wxChoice;
-
-extern WXDLLIMPEXP_CORE const wxEventType wxEVT_COMMAND_CHOICEBOOK_PAGE_CHANGED;
-extern WXDLLIMPEXP_CORE const wxEventType wxEVT_COMMAND_CHOICEBOOK_PAGE_CHANGING;
-
-// wxChoicebook flags
-#define wxCHB_DEFAULT wxBK_DEFAULT
-#define wxCHB_TOP wxBK_TOP
-#define wxCHB_BOTTOM wxBK_BOTTOM
-#define wxCHB_LEFT wxBK_LEFT
-#define wxCHB_RIGHT wxBK_RIGHT
-#define wxCHB_ALIGN_MASK wxBK_ALIGN_MASK
-
-// ----------------------------------------------------------------------------
-// wxChoicebook
-// ----------------------------------------------------------------------------
-
-class WXDLLEXPORT wxChoicebook : public wxBookCtrlBase
-{
-public:
- wxChoicebook()
- {
- Init();
- }
-
- wxChoicebook(wxWindow *parent,
- wxWindowID id,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize,
- long style = 0,
- const wxString& name = wxEmptyString)
- {
- Init();
-
- (void)Create(parent, id, pos, size, style, name);
- }
-
- // quasi ctor
- bool Create(wxWindow *parent,
- wxWindowID id,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize,
- long style = 0,
- const wxString& name = wxEmptyString);
-
-
- virtual int GetSelection() const;
- virtual bool SetPageText(size_t n, const wxString& strText);
- virtual wxString GetPageText(size_t n) const;
- virtual int GetPageImage(size_t n) const;
- virtual bool SetPageImage(size_t n, int imageId);
- virtual wxSize CalcSizeFromPage(const wxSize& sizePage) const;
- virtual bool InsertPage(size_t n,
- wxWindow *page,
- const wxString& text,
- bool bSelect = false,
- int imageId = -1);
- virtual int SetSelection(size_t n) { return DoSetSelection(n, SetSelection_SendEvent); }
- virtual int ChangeSelection(size_t n) { return DoSetSelection(n); }
- virtual void SetImageList(wxImageList *imageList);
-
- virtual bool DeleteAllPages();
-
- // returns the choice control
- wxChoice* GetChoiceCtrl() const { return (wxChoice*)m_bookctrl; }
-
-protected:
- virtual wxWindow *DoRemovePage(size_t page);
-
- // get the size which the choice control should have
- virtual wxSize GetControllerSize() const;
-
- void UpdateSelectedPage(size_t newsel)
- {
- m_selection = wx_static_cast(int, newsel);
- GetChoiceCtrl()->Select(newsel);
- }
-
- wxBookCtrlBaseEvent* CreatePageChangingEvent() const;
- void MakeChangedEvent(wxBookCtrlBaseEvent &event);
-
- // event handlers
- void OnChoiceSelected(wxCommandEvent& event);
-
- // the currently selected page or wxNOT_FOUND if none
- int m_selection;
-
-private:
- // common part of all constructors
- void Init();
-
- DECLARE_EVENT_TABLE()
- DECLARE_DYNAMIC_CLASS_NO_COPY(wxChoicebook)
-};
-
-// ----------------------------------------------------------------------------
-// choicebook event class and related stuff
-// ----------------------------------------------------------------------------
-
-class WXDLLEXPORT wxChoicebookEvent : public wxBookCtrlBaseEvent
-{
-public:
- wxChoicebookEvent(wxEventType commandType = wxEVT_NULL, int id = 0,
- int nSel = -1, int nOldSel = -1)
- : wxBookCtrlBaseEvent(commandType, id, nSel, nOldSel)
- {
- }
-
- wxChoicebookEvent(const wxChoicebookEvent& event)
- : wxBookCtrlBaseEvent(event)
- {
- }
-
- virtual wxEvent *Clone() const { return new wxChoicebookEvent(*this); }
-
-private:
- DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxChoicebookEvent)
-};
-
-typedef void (wxEvtHandler::*wxChoicebookEventFunction)(wxChoicebookEvent&);
-
-#define wxChoicebookEventHandler(func) \
- (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxChoicebookEventFunction, &func)
-
-#define EVT_CHOICEBOOK_PAGE_CHANGED(winid, fn) \
- wx__DECLARE_EVT1(wxEVT_COMMAND_CHOICEBOOK_PAGE_CHANGED, winid, wxChoicebookEventHandler(fn))
-
-#define EVT_CHOICEBOOK_PAGE_CHANGING(winid, fn) \
- wx__DECLARE_EVT1(wxEVT_COMMAND_CHOICEBOOK_PAGE_CHANGING, winid, wxChoicebookEventHandler(fn))
-
-#endif // wxUSE_CHOICEBOOK
-
-#endif // _WX_CHOICEBOOK_H_
diff --git a/Externals/wxWidgets/include/wx/clipbrd.h b/Externals/wxWidgets/include/wx/clipbrd.h
deleted file mode 100644
index 6f6ab4bf96..0000000000
--- a/Externals/wxWidgets/include/wx/clipbrd.h
+++ /dev/null
@@ -1,145 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-// Name: wx/clipbrd.h
-// Purpose: wxClipboad class and clipboard functions
-// Author: Vadim Zeitlin
-// Modified by:
-// Created: 19.10.99
-// RCS-ID: $Id: clipbrd.h 49563 2007-10-31 20:46:21Z VZ $
-// Copyright: (c) wxWidgets Team
-// Licence: wxWindows licence
-/////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_CLIPBRD_H_BASE_
-#define _WX_CLIPBRD_H_BASE_
-
-#include "wx/defs.h"
-
-#if wxUSE_CLIPBOARD
-
-
-#include "wx/object.h"
-#include "wx/wxchar.h"
-
-class WXDLLIMPEXP_FWD_CORE wxDataFormat;
-class WXDLLIMPEXP_FWD_CORE wxDataObject;
-class WXDLLIMPEXP_FWD_CORE wxClipboard;
-
-// ----------------------------------------------------------------------------
-// wxClipboard represents the system clipboard. Normally, you should use
-// wxTheClipboard which is a global pointer to the (unique) clipboard.
-//
-// Clipboard can be used to copy data to/paste data from. It works together
-// with wxDataObject.
-// ----------------------------------------------------------------------------
-
-class WXDLLEXPORT wxClipboardBase : public wxObject
-{
-public:
- wxClipboardBase() {}
-
- // open the clipboard before Add/SetData() and GetData()
- virtual bool Open() = 0;
-
- // close the clipboard after Add/SetData() and GetData()
- virtual void Close() = 0;
-
- // query whether the clipboard is opened
- virtual bool IsOpened() const = 0;
-
- // add to the clipboard data
- //
- // NB: the clipboard owns the pointer and will delete it, so data must be
- // allocated on the heap
- virtual bool AddData( wxDataObject *data ) = 0;
-
- // set the clipboard data, this is the same as Clear() followed by
- // AddData()
- virtual bool SetData( wxDataObject *data ) = 0;
-
- // ask if data in correct format is available
- virtual bool IsSupported( const wxDataFormat& format ) = 0;
-
- // fill data with data on the clipboard (if available)
- virtual bool GetData( wxDataObject& data ) = 0;
-
- // clears wxTheClipboard and the system's clipboard if possible
- virtual void Clear() = 0;
-
- // flushes the clipboard: this means that the data which is currently on
- // clipboard will stay available even after the application exits (possibly
- // eating memory), otherwise the clipboard will be emptied on exit
- virtual bool Flush() { return false; }
-
- // X11 has two clipboards which get selected by this call. Empty on MSW.
- virtual void UsePrimarySelection( bool WXUNUSED(primary) = false ) { }
-
- // Returns global instance (wxTheClipboard) of the object:
- static wxClipboard *Get();
-};
-
-// ----------------------------------------------------------------------------
-// globals
-// ----------------------------------------------------------------------------
-
-// The global clipboard object - backward compatible access macro:
-#define wxTheClipboard (wxClipboard::Get())
-
-// ----------------------------------------------------------------------------
-// include platform-specific class declaration
-// ----------------------------------------------------------------------------
-
-#if defined(__WXMSW__)
- #include "wx/msw/clipbrd.h"
-#elif defined(__WXMOTIF__)
- #include "wx/motif/clipbrd.h"
-#elif defined(__WXGTK20__)
- #include "wx/gtk/clipbrd.h"
-#elif defined(__WXGTK__)
- #include "wx/gtk1/clipbrd.h"
-#elif defined(__WXX11__)
- #include "wx/x11/clipbrd.h"
-#elif defined(__WXMGL__)
- #include "wx/mgl/clipbrd.h"
-#elif defined(__WXMAC__)
- #include "wx/mac/clipbrd.h"
-#elif defined(__WXCOCOA__)
- #include "wx/cocoa/clipbrd.h"
-#elif defined(__WXPM__)
- #include "wx/os2/clipbrd.h"
-#endif
-
-// ----------------------------------------------------------------------------
-// helpful class for opening the clipboard and automatically closing it
-// ----------------------------------------------------------------------------
-
-class WXDLLEXPORT wxClipboardLocker
-{
-public:
- wxClipboardLocker(wxClipboard *clipboard = (wxClipboard *)NULL)
- {
- m_clipboard = clipboard ? clipboard : wxTheClipboard;
- if ( m_clipboard )
- {
- m_clipboard->Open();
- }
- }
-
- bool operator!() const { return !m_clipboard->IsOpened(); }
-
- ~wxClipboardLocker()
- {
- if ( m_clipboard )
- {
- m_clipboard->Close();
- }
- }
-
-private:
- wxClipboard *m_clipboard;
-
- DECLARE_NO_COPY_CLASS(wxClipboardLocker)
-};
-
-#endif // wxUSE_CLIPBOARD
-
-#endif // _WX_CLIPBRD_H_BASE_
diff --git a/Externals/wxWidgets/include/wx/clntdata.h b/Externals/wxWidgets/include/wx/clntdata.h
deleted file mode 100644
index 1707ac7648..0000000000
--- a/Externals/wxWidgets/include/wx/clntdata.h
+++ /dev/null
@@ -1,273 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-// Name: wx/clntdata.h
-// Purpose: A mixin class for holding a wxClientData or void pointer
-// Author: Robin Dunn
-// Modified by:
-// Created: 9-Oct-2001
-// RCS-ID: $Id: clntdata.h 36973 2006-01-18 16:45:41Z JS $
-// Copyright: (c) wxWidgets team
-// Licence: wxWindows licence
-/////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_CLNTDATAH__
-#define _WX_CLNTDATAH__
-
-#include "wx/defs.h"
-#include "wx/string.h"
-#include "wx/hashmap.h"
-
-typedef int (*wxShadowObjectMethod)(void*, void*);
-WX_DECLARE_STRING_HASH_MAP_WITH_DECL(
- wxShadowObjectMethod,
- wxShadowObjectMethods,
- class WXDLLIMPEXP_BASE
-);
-WX_DECLARE_STRING_HASH_MAP_WITH_DECL(
- void *,
- wxShadowObjectFields,
- class WXDLLIMPEXP_BASE
-);
-
-class WXDLLIMPEXP_BASE wxShadowObject
-{
-public:
- wxShadowObject() { }
-
- void AddMethod( const wxString &name, wxShadowObjectMethod method )
- {
- wxShadowObjectMethods::iterator it = m_methods.find( name );
- if (it == m_methods.end())
- m_methods[ name ] = method;
- else
- it->second = method;
- }
-
- bool InvokeMethod( const wxString &name, void* window, void* param, int* returnValue )
- {
- wxShadowObjectMethods::iterator it = m_methods.find( name );
- if (it == m_methods.end())
- return false;
- wxShadowObjectMethod method = it->second;
- int ret = (*method)(window, param);
- if (returnValue)
- *returnValue = ret;
- return true;
- }
-
- void AddField( const wxString &name, void* initialValue = NULL )
- {
- wxShadowObjectFields::iterator it = m_fields.find( name );
- if (it == m_fields.end())
- m_fields[ name ] = initialValue;
- else
- it->second = initialValue;
- }
-
- void SetField( const wxString &name, void* value )
- {
- wxShadowObjectFields::iterator it = m_fields.find( name );
- if (it == m_fields.end())
- return;
- it->second = value;
- }
-
- void* GetField( const wxString &name, void *defaultValue = NULL )
- {
- wxShadowObjectFields::iterator it = m_fields.find( name );
- if (it == m_fields.end())
- return defaultValue;
- return it->second;
- }
-
-private:
- wxShadowObjectMethods m_methods;
- wxShadowObjectFields m_fields;
-};
-
-
-// ----------------------------------------------------------------------------
-
-// what kind of client data do we have?
-enum wxClientDataType
-{
- wxClientData_None, // we don't know yet because we don't have it at all
- wxClientData_Object, // our client data is typed and we own it
- wxClientData_Void // client data is untyped and we don't own it
-};
-
-class WXDLLIMPEXP_BASE wxClientData
-{
-public:
- wxClientData() { }
- virtual ~wxClientData() { }
-};
-
-class WXDLLIMPEXP_BASE wxStringClientData : public wxClientData
-{
-public:
- wxStringClientData() : m_data() { }
- wxStringClientData( const wxString &data ) : m_data(data) { }
- void SetData( const wxString &data ) { m_data = data; }
- const wxString& GetData() const { return m_data; }
-
-private:
- wxString m_data;
-};
-
-// This class is a mixin that provides storage and management of "client
-// data." The client data stored can either be a pointer to a wxClientData
-// object in which case it is managed by the container (i.e. it will delete
-// the data when it's destroyed) or an untyped pointer which won't be deleted
-// by the container - but not both of them
-//
-// NOTE: This functionality is currently duplicated in wxEvtHandler in order
-// to avoid having more than one vtable in that class hierarchy.
-
-class WXDLLIMPEXP_BASE wxClientDataContainer
-{
-public:
- wxClientDataContainer();
- virtual ~wxClientDataContainer();
-
- void SetClientObject( wxClientData *data ) { DoSetClientObject(data); }
- wxClientData *GetClientObject() const { return DoGetClientObject(); }
-
- void SetClientData( void *data ) { DoSetClientData(data); }
- void *GetClientData() const { return DoGetClientData(); }
-
-protected:
- // The user data: either an object which will be deleted by the container
- // when it's deleted or some raw pointer which we do nothing with. Only
- // one type of data can be used with the given window, i.e. you cannot set
- // the void data and then associate the container with wxClientData or vice
- // versa.
- union
- {
- wxClientData *m_clientObject;
- void *m_clientData;
- };
-
- // client data accessors
- virtual void DoSetClientObject( wxClientData *data );
- virtual wxClientData *DoGetClientObject() const;
-
- virtual void DoSetClientData( void *data );
- virtual void *DoGetClientData() const;
-
- // what kind of data do we have?
- wxClientDataType m_clientDataType;
-
-};
-
-#include "wx/vector.h"
-
-struct WXDLLIMPEXP_BASE wxClientDataDictionaryPair
-{
- wxClientDataDictionaryPair( size_t idx ) : index( idx ), data( 0 ) { }
-
- size_t index;
- wxClientData* data;
-};
-
-_WX_DECLARE_VECTOR(
- wxClientDataDictionaryPair,
- wxClientDataDictionaryPairVector,
- WXDLLIMPEXP_BASE
-);
-
-// this class is used internally to maintain the association between items
-// of (some subclasses of) wxControlWithItems and their client data
-// NOTE: this class does not keep track of whether it contains
-// wxClientData or void*. The client must ensure that
-// it does not contain a mix of the two, and that
-// DestroyData is called if it contains wxClientData
-class WXDLLIMPEXP_BASE wxClientDataDictionary
-{
-public:
- wxClientDataDictionary() {}
-
- // deletes all the data
- void DestroyData()
- {
- for( size_t i = 0, end = m_vec.size(); i != end; ++i )
- delete m_vec[i].data;
- m_vec.clear();
- }
-
- // if data for the given index is not present, add it,
- // if it is present, delete the old data and replace it with
- // the new one
- void Set( size_t index, wxClientData* data, bool doDelete )
- {
- size_t ptr = Find( index );
-
- if( !data )
- {
- if( ptr == m_vec.size() ) return;
- if( doDelete )
- delete m_vec[ptr].data;
- m_vec.erase( ptr );
- }
- else
- {
- if( ptr == m_vec.size() )
- {
- m_vec.push_back( wxClientDataDictionaryPair( index ) );
- ptr = m_vec.size() - 1;
- }
-
- if( doDelete )
- delete m_vec[ptr].data;
- m_vec[ptr].data = data;
- }
- }
-
- // get the data associated with the given index,
- // return 0 if not found
- wxClientData* Get( size_t index ) const
- {
- size_t it = Find( index );
- if( it == m_vec.size() ) return 0;
- return (wxClientData*)m_vec[it].data; // const cast
- }
-
- // delete the data associated with the given index
- // it also decreases by one the indices of all the elements
- // with an index greater than the given index
- void Delete( size_t index, bool doDelete )
- {
- size_t todel = m_vec.size();
-
- for( size_t i = 0, end = m_vec.size(); i != end; ++i )
- {
- if( m_vec[i].index == index )
- todel = i;
- else if( m_vec[i].index > index )
- --(m_vec[i].index);
- }
-
- if( todel != m_vec.size() )
- {
- if( doDelete )
- delete m_vec[todel].data;
- m_vec.erase( todel );
- }
- }
-private:
- // returns MyVec.size() if not found
- size_t Find( size_t index ) const
- {
- for( size_t i = 0, end = m_vec.size(); i != end; ++i )
- {
- if( m_vec[i].index == index )
- return i;
- }
-
- return m_vec.size();
- }
-
- wxClientDataDictionaryPairVector m_vec;
-};
-
-#endif // _WX_CLNTDATAH__
-
diff --git a/Externals/wxWidgets/include/wx/clrpicker.h b/Externals/wxWidgets/include/wx/clrpicker.h
deleted file mode 100644
index 1dd2c4b3d0..0000000000
--- a/Externals/wxWidgets/include/wx/clrpicker.h
+++ /dev/null
@@ -1,200 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-// Name: wx/clrpicker.h
-// Purpose: wxColourPickerCtrl base header
-// Author: Francesco Montorsi (based on Vadim Zeitlin's code)
-// Modified by:
-// Created: 14/4/2006
-// Copyright: (c) Vadim Zeitlin, Francesco Montorsi
-// RCS-ID: $Id: clrpicker.h 53135 2008-04-12 02:31:04Z VZ $
-// Licence: wxWindows Licence
-/////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_CLRPICKER_H_BASE_
-#define _WX_CLRPICKER_H_BASE_
-
-#include "wx/defs.h"
-
-
-#if wxUSE_COLOURPICKERCTRL
-
-#include "wx/pickerbase.h"
-
-
-class WXDLLIMPEXP_FWD_CORE wxColourPickerEvent;
-
-extern WXDLLEXPORT_DATA(const wxChar) wxColourPickerWidgetNameStr[];
-extern WXDLLEXPORT_DATA(const wxChar) wxColourPickerCtrlNameStr[];
-
-
-// ----------------------------------------------------------------------------
-// wxColourPickerWidgetBase: a generic abstract interface which must be
-// implemented by controls used by wxColourPickerCtrl
-// ----------------------------------------------------------------------------
-
-class WXDLLIMPEXP_CORE wxColourPickerWidgetBase
-{
-public:
- wxColourPickerWidgetBase() { m_colour = *wxBLACK; }
- virtual ~wxColourPickerWidgetBase() {}
-
- wxColour GetColour() const
- { return m_colour; }
- virtual void SetColour(const wxColour &col)
- { m_colour = col; UpdateColour(); }
- virtual void SetColour(const wxString &col)
- { m_colour.Set(col); UpdateColour(); }
-
-protected:
-
- virtual void UpdateColour() = 0;
-
- // the current colour (may be invalid if none)
- wxColour m_colour;
-};
-
-
-// Styles which must be supported by all controls implementing wxColourPickerWidgetBase
-// NB: these styles must be defined to carefully-chosen values to
-// avoid conflicts with wxButton's styles
-
-// show the colour in HTML form (#AABBCC) as colour button label
-// (instead of no label at all)
-// NOTE: this style is supported just by wxColourButtonGeneric and
-// thus is not exposed in wxColourPickerCtrl
-#define wxCLRP_SHOW_LABEL 0x0008
-
-// map platform-dependent controls which implement the wxColourPickerWidgetBase
-// under the name "wxColourPickerWidget".
-// NOTE: wxColourPickerCtrl allocates a wxColourPickerWidget and relies on the
-// fact that all classes being mapped as wxColourPickerWidget have the
-// same prototype for their contructor (and also explains why we use
-// define instead of a typedef)
-// since GTK > 2.4, there is GtkColorButton
-#if defined(__WXGTK24__) && !defined(__WXUNIVERSAL__)
- #include "wx/gtk/clrpicker.h"
- #define wxColourPickerWidget wxColourButton
-#else
- #include "wx/generic/clrpickerg.h"
- #define wxColourPickerWidget wxGenericColourButton
-#endif
-
-
-// ----------------------------------------------------------------------------
-// wxColourPickerCtrl: platform-independent class which embeds a
-// platform-dependent wxColourPickerWidget and, if wxCLRP_USE_TEXTCTRL style is
-// used, a textctrl next to it.
-// ----------------------------------------------------------------------------
-
-#define wxCLRP_USE_TEXTCTRL (wxPB_USE_TEXTCTRL)
-#define wxCLRP_DEFAULT_STYLE 0
-
-class WXDLLIMPEXP_CORE wxColourPickerCtrl : public wxPickerBase
-{
-public:
- wxColourPickerCtrl() : m_bIgnoreNextTextCtrlUpdate(false) {}
- virtual ~wxColourPickerCtrl() {}
-
-
- wxColourPickerCtrl(wxWindow *parent, wxWindowID id,
- const wxColour& col = *wxBLACK, const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize, long style = wxCLRP_DEFAULT_STYLE,
- const wxValidator& validator = wxDefaultValidator,
- const wxString& name = wxColourPickerCtrlNameStr)
- : m_bIgnoreNextTextCtrlUpdate(false)
- { Create(parent, id, col, pos, size, style, validator, name); }
-
- bool Create(wxWindow *parent, wxWindowID id,
- const wxColour& col = *wxBLACK,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize,
- long style = wxCLRP_DEFAULT_STYLE,
- const wxValidator& validator = wxDefaultValidator,
- const wxString& name = wxColourPickerCtrlNameStr);
-
-
-public: // public API
-
- // get the colour chosen
- wxColour GetColour() const
- { return ((wxColourPickerWidget *)m_picker)->GetColour(); }
-
- // set currently displayed color
- void SetColour(const wxColour& col);
-
- // set colour using RGB(r,g,b) syntax or considering given text as a colour name;
- // returns true if the given text was successfully recognized.
- bool SetColour(const wxString& text);
-
-
-public: // internal functions
-
- // update the button colour to match the text control contents
- void UpdatePickerFromTextCtrl();
-
- // update the text control to match the button's colour
- void UpdateTextCtrlFromPicker();
-
- // event handler for our picker
- void OnColourChange(wxColourPickerEvent &);
-
-protected:
- virtual long GetPickerStyle(long style) const
- { return (style & wxCLRP_SHOW_LABEL); }
-
- // true if the next UpdateTextCtrl() call is to ignore
- bool m_bIgnoreNextTextCtrlUpdate;
-
-private:
- DECLARE_DYNAMIC_CLASS(wxColourPickerCtrl)
-};
-
-
-// ----------------------------------------------------------------------------
-// wxColourPickerEvent: used by wxColourPickerCtrl only
-// ----------------------------------------------------------------------------
-
-BEGIN_DECLARE_EVENT_TYPES()
- DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_CORE, wxEVT_COMMAND_COLOURPICKER_CHANGED, 1102)
-END_DECLARE_EVENT_TYPES()
-
-class WXDLLIMPEXP_CORE wxColourPickerEvent : public wxCommandEvent
-{
-public:
- wxColourPickerEvent() {}
- wxColourPickerEvent(wxObject *generator, int id, const wxColour &col)
- : wxCommandEvent(wxEVT_COMMAND_COLOURPICKER_CHANGED, id),
- m_colour(col)
- {
- SetEventObject(generator);
- }
-
- wxColour GetColour() const { return m_colour; }
- void SetColour(const wxColour &c) { m_colour = c; }
-
-
- // default copy ctor, assignment operator and dtor are ok
- virtual wxEvent *Clone() const { return new wxColourPickerEvent(*this); }
-
-private:
- wxColour m_colour;
-
- DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxColourPickerEvent)
-};
-
-// ----------------------------------------------------------------------------
-// event types and macros
-// ----------------------------------------------------------------------------
-
-typedef void (wxEvtHandler::*wxColourPickerEventFunction)(wxColourPickerEvent&);
-
-#define wxColourPickerEventHandler(func) \
- (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxColourPickerEventFunction, &func)
-
-#define EVT_COLOURPICKER_CHANGED(id, fn) \
- wx__DECLARE_EVT1(wxEVT_COMMAND_COLOURPICKER_CHANGED, id, wxColourPickerEventHandler(fn))
-
-
-#endif // wxUSE_COLOURPICKERCTRL
-
-#endif // _WX_CLRPICKER_H_BASE_
-
diff --git a/Externals/wxWidgets/include/wx/cmdline.h b/Externals/wxWidgets/include/wx/cmdline.h
deleted file mode 100644
index 50a17ce7a7..0000000000
--- a/Externals/wxWidgets/include/wx/cmdline.h
+++ /dev/null
@@ -1,239 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Name: wx/cmdline.h
-// Purpose: wxCmdLineParser and related classes for parsing the command
-// line options
-// Author: Vadim Zeitlin
-// Modified by:
-// Created: 04.01.00
-// RCS-ID: $Id: cmdline.h 49563 2007-10-31 20:46:21Z VZ $
-// Copyright: (c) 2000 Vadim Zeitlin
-// Licence: wxWindows licence
-///////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_CMDLINE_H_
-#define _WX_CMDLINE_H_
-
-#include "wx/defs.h"
-
-#include "wx/string.h"
-#include "wx/arrstr.h"
-
-#if wxUSE_CMDLINE_PARSER
-
-class WXDLLIMPEXP_FWD_BASE wxDateTime;
-
-// ----------------------------------------------------------------------------
-// constants
-// ----------------------------------------------------------------------------
-
-// by default, options are optional (sic) and each call to AddParam() allows
-// one more parameter - this may be changed by giving non-default flags to it
-enum
-{
- wxCMD_LINE_OPTION_MANDATORY = 0x01, // this option must be given
- wxCMD_LINE_PARAM_OPTIONAL = 0x02, // the parameter may be omitted
- wxCMD_LINE_PARAM_MULTIPLE = 0x04, // the parameter may be repeated
- wxCMD_LINE_OPTION_HELP = 0x08, // this option is a help request
- wxCMD_LINE_NEEDS_SEPARATOR = 0x10 // must have sep before the value
-};
-
-// an option value or parameter may be a string (the most common case), a
-// number or a date
-enum wxCmdLineParamType
-{
- wxCMD_LINE_VAL_STRING, // should be 0 (default)
- wxCMD_LINE_VAL_NUMBER,
- wxCMD_LINE_VAL_DATE,
- wxCMD_LINE_VAL_NONE
-};
-
-// for constructing the cmd line description using Init()
-enum wxCmdLineEntryType
-{
- wxCMD_LINE_SWITCH,
- wxCMD_LINE_OPTION,
- wxCMD_LINE_PARAM,
- wxCMD_LINE_NONE // to terminate the list
-};
-
-// ----------------------------------------------------------------------------
-// wxCmdLineEntryDesc is a description of one command line
-// switch/option/parameter
-// ----------------------------------------------------------------------------
-
-struct wxCmdLineEntryDesc
-{
- wxCmdLineEntryType kind;
- const wxChar *shortName;
- const wxChar *longName;
- const wxChar *description;
- wxCmdLineParamType type;
- int flags;
-};
-
-// ----------------------------------------------------------------------------
-// wxCmdLineParser is a class for parsing command line.
-//
-// It has the following features:
-//
-// 1. distinguishes options, switches and parameters; allows option grouping
-// 2. allows both short and long options
-// 3. automatically generates the usage message from the cmd line description
-// 4. does type checks on the options values (number, date, ...)
-//
-// To use it you should:
-//
-// 1. construct it giving it the cmd line to parse and optionally its desc
-// 2. construct the cmd line description using AddXXX() if not done in (1)
-// 3. call Parse()
-// 4. use GetXXX() to retrieve the parsed info
-// ----------------------------------------------------------------------------
-
-class WXDLLIMPEXP_BASE wxCmdLineParser
-{
-public:
- // ctors and initializers
- // ----------------------
-
- // default ctor or ctor giving the cmd line in either Unix or Win form
- wxCmdLineParser() { Init(); }
- wxCmdLineParser(int argc, char **argv) { Init(); SetCmdLine(argc, argv); }
-#if wxUSE_UNICODE
- wxCmdLineParser(int argc, wxChar **argv) { Init(); SetCmdLine(argc, argv); }
-#endif // wxUSE_UNICODE
- wxCmdLineParser(const wxString& cmdline) { Init(); SetCmdLine(cmdline); }
-
- // the same as above, but also gives the cmd line description - otherwise,
- // use AddXXX() later
- wxCmdLineParser(const wxCmdLineEntryDesc *desc)
- { Init(); SetDesc(desc); }
- wxCmdLineParser(const wxCmdLineEntryDesc *desc, int argc, char **argv)
- { Init(); SetCmdLine(argc, argv); SetDesc(desc); }
-#if wxUSE_UNICODE
- wxCmdLineParser(const wxCmdLineEntryDesc *desc, int argc, wxChar **argv)
- { Init(); SetCmdLine(argc, argv); SetDesc(desc); }
-#endif // wxUSE_UNICODE
- wxCmdLineParser(const wxCmdLineEntryDesc *desc, const wxString& cmdline)
- { Init(); SetCmdLine(cmdline); SetDesc(desc); }
-
- // set cmd line to parse after using one of the ctors which don't do it
- void SetCmdLine(int argc, char **argv);
-#if wxUSE_UNICODE
- void SetCmdLine(int argc, wxChar **argv);
-#endif // wxUSE_UNICODE
- void SetCmdLine(const wxString& cmdline);
-
- // not virtual, don't use this class polymorphically
- ~wxCmdLineParser();
-
- // set different parser options
- // ----------------------------
-
- // by default, '-' is switch char under Unix, '-' or '/' under Win:
- // switchChars contains all characters with which an option or switch may
- // start
- void SetSwitchChars(const wxString& switchChars);
-
- // long options are not POSIX-compliant, this option allows to disable them
- void EnableLongOptions(bool enable = true);
- void DisableLongOptions() { EnableLongOptions(false); }
-
- bool AreLongOptionsEnabled();
-
- // extra text may be shown by Usage() method if set by this function
- void SetLogo(const wxString& logo);
-
- // construct the cmd line description
- // ----------------------------------
-
- // take the cmd line description from the wxCMD_LINE_NONE terminated table
- void SetDesc(const wxCmdLineEntryDesc *desc);
-
- // a switch: i.e. an option without value
- void AddSwitch(const wxString& name, const wxString& lng = wxEmptyString,
- const wxString& desc = wxEmptyString,
- int flags = 0);
-
- // an option taking a value of the given type
- void AddOption(const wxString& name, const wxString& lng = wxEmptyString,
- const wxString& desc = wxEmptyString,
- wxCmdLineParamType type = wxCMD_LINE_VAL_STRING,
- int flags = 0);
-
- // a parameter
- void AddParam(const wxString& desc = wxEmptyString,
- wxCmdLineParamType type = wxCMD_LINE_VAL_STRING,
- int flags = 0);
-
- // actions
- // -------
-
- // parse the command line, return 0 if ok, -1 if "-h" or "--help" option
- // was encountered and the help message was given or a positive value if a
- // syntax error occurred
- //
- // if showUsage is true, Usage() is called in case of syntax error or if
- // help was requested
- int Parse(bool showUsage = true);
-
- // give the usage message describing all program options
- void Usage();
-
- // get the command line arguments
- // ------------------------------
-
- // returns true if the given switch was found
- bool Found(const wxString& name) const;
-
- // returns true if an option taking a string value was found and stores the
- // value in the provided pointer
- bool Found(const wxString& name, wxString *value) const;
-
- // returns true if an option taking an integer value was found and stores
- // the value in the provided pointer
- bool Found(const wxString& name, long *value) const;
-
-#if wxUSE_DATETIME
- // returns true if an option taking a date value was found and stores the
- // value in the provided pointer
- bool Found(const wxString& name, wxDateTime *value) const;
-#endif // wxUSE_DATETIME
-
- // gets the number of parameters found
- size_t GetParamCount() const;
-
- // gets the value of Nth parameter (as string only for now)
- wxString GetParam(size_t n = 0u) const;
-
- // Resets switches and options
- void Reset();
-
- // break down the command line in arguments
- static wxArrayString ConvertStringToArgs(const wxChar *cmdline);
-
-private:
- // get usage string
- wxString GetUsageString();
-
- // common part of all ctors
- void Init();
-
- struct wxCmdLineParserData *m_data;
-
- DECLARE_NO_COPY_CLASS(wxCmdLineParser)
-};
-
-#else // !wxUSE_CMDLINE_PARSER
-
-// this function is always available (even if !wxUSE_CMDLINE_PARSER) because it
-// is used by wxWin itself under Windows
-class WXDLLIMPEXP_BASE wxCmdLineParser
-{
-public:
- static wxArrayString ConvertStringToArgs(const wxChar *cmdline);
-};
-
-#endif // wxUSE_CMDLINE_PARSER/!wxUSE_CMDLINE_PARSER
-
-#endif // _WX_CMDLINE_H_
-
diff --git a/Externals/wxWidgets/include/wx/cmdproc.h b/Externals/wxWidgets/include/wx/cmdproc.h
deleted file mode 100644
index 0b101a14aa..0000000000
--- a/Externals/wxWidgets/include/wx/cmdproc.h
+++ /dev/null
@@ -1,144 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Name: wx/cmdproc.h
-// Purpose: undo/redo capable command processing framework
-// Author: Julian Smart (extracted from docview.h by VZ)
-// Modified by:
-// Created: 05.11.00
-// RCS-ID: $Id: cmdproc.h 49804 2007-11-10 01:09:42Z VZ $
-// Copyright: (c) wxWidgets team
-// Licence: wxWindows licence
-///////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_CMDPROC_H_
-#define _WX_CMDPROC_H_
-
-#include "wx/defs.h"
-#include "wx/object.h"
-#include "wx/list.h"
-
-class WXDLLIMPEXP_FWD_CORE wxMenu;
-
-// ----------------------------------------------------------------------------
-// wxCommand: a single command capable of performing itself
-// ----------------------------------------------------------------------------
-
-class WXDLLEXPORT wxCommand : public wxObject
-{
-public:
- wxCommand(bool canUndoIt = false, const wxString& name = wxEmptyString);
- virtual ~wxCommand(){}
-
- // Override this to perform a command
- virtual bool Do() = 0;
-
- // Override this to undo a command
- virtual bool Undo() = 0;
-
- virtual bool CanUndo() const { return m_canUndo; }
- virtual wxString GetName() const { return m_commandName; }
-
-protected:
- bool m_canUndo;
- wxString m_commandName;
-
-private:
- DECLARE_CLASS(wxCommand)
-};
-
-// ----------------------------------------------------------------------------
-// wxCommandProcessor: wxCommand manager
-// ----------------------------------------------------------------------------
-
-class WXDLLEXPORT wxCommandProcessor : public wxObject
-{
-public:
- // if max number of commands is -1, it is unlimited
- wxCommandProcessor(int maxCommands = -1);
- virtual ~wxCommandProcessor();
-
- // Pass a command to the processor. The processor calls Do(); if
- // successful, is appended to the command history unless storeIt is false.
- virtual bool Submit(wxCommand *command, bool storeIt = true);
-
- // just store the command without executing it
- virtual void Store(wxCommand *command);
-
- virtual bool Undo();
- virtual bool Redo();
- virtual bool CanUndo() const;
- virtual bool CanRedo() const;
-
- // Initialises the current command and menu strings.
- virtual void Initialize();
-
- // Sets the Undo/Redo menu strings for the current menu.
- virtual void SetMenuStrings();
-
- // Gets the current Undo menu label.
- wxString GetUndoMenuLabel() const;
-
- // Gets the current Undo menu label.
- wxString GetRedoMenuLabel() const;
-
-#if wxUSE_MENUS
- // Call this to manage an edit menu.
- void SetEditMenu(wxMenu *menu) { m_commandEditMenu = menu; }
- wxMenu *GetEditMenu() const { return m_commandEditMenu; }
-#endif // wxUSE_MENUS
-
- // command list access
- wxList& GetCommands() { return m_commands; }
- const wxList& GetCommands() const { return m_commands; }
- wxCommand *GetCurrentCommand() const
- {
- return (wxCommand *)(m_currentCommand ? m_currentCommand->GetData() : NULL);
- }
- int GetMaxCommands() const { return m_maxNoCommands; }
- virtual void ClearCommands();
-
- // Has the current project been changed?
- virtual bool IsDirty() const
- {
- return m_currentCommand && (m_lastSavedCommand != m_currentCommand);
- }
-
- // Mark the current command as the one where the last save took place
- void MarkAsSaved()
- {
- m_lastSavedCommand = m_currentCommand;
- }
-
-
- // By default, the accelerators are "\tCtrl+Z" and "\tCtrl+Y"
- const wxString& GetUndoAccelerator() const { return m_undoAccelerator; }
- const wxString& GetRedoAccelerator() const { return m_redoAccelerator; }
-
- void SetUndoAccelerator(const wxString& accel) { m_undoAccelerator = accel; }
- void SetRedoAccelerator(const wxString& accel) { m_redoAccelerator = accel; }
-
-protected:
- // for further flexibility, command processor doesn't call wxCommand::Do()
- // and Undo() directly but uses these functions which can be overridden in
- // the derived class
- virtual bool DoCommand(wxCommand& cmd);
- virtual bool UndoCommand(wxCommand& cmd);
-
- int m_maxNoCommands;
- wxList m_commands;
- wxList::compatibility_iterator m_currentCommand,
- m_lastSavedCommand;
-
-#if wxUSE_MENUS
- wxMenu* m_commandEditMenu;
-#endif // wxUSE_MENUS
-
- wxString m_undoAccelerator;
- wxString m_redoAccelerator;
-
-private:
- DECLARE_DYNAMIC_CLASS(wxCommandProcessor)
- DECLARE_NO_COPY_CLASS(wxCommandProcessor)
-};
-
-#endif // _WX_CMDPROC_H_
-
diff --git a/Externals/wxWidgets/include/wx/cmndata.h b/Externals/wxWidgets/include/wx/cmndata.h
deleted file mode 100644
index 30310e21c4..0000000000
--- a/Externals/wxWidgets/include/wx/cmndata.h
+++ /dev/null
@@ -1,454 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-// Name: wx/cmndata.h
-// Purpose: Common GDI data classes
-// Author: Julian Smart and others
-// Modified by:
-// Created: 01/02/97
-// RCS-ID: $Id: cmndata.h 53135 2008-04-12 02:31:04Z VZ $
-// Copyright: (c)
-// Licence: wxWindows licence
-/////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_CMNDATA_H_BASE_
-#define _WX_CMNDATA_H_BASE_
-
-#include "wx/window.h"
-#include "wx/font.h"
-#include "wx/encinfo.h"
-#include "wx/colour.h"
-#include "wx/gdicmn.h"
-
-#if wxUSE_STREAMS
-#include "wx/stream.h"
-#endif
-
-
-class WXDLLIMPEXP_FWD_CORE wxPrintNativeDataBase;
-
-
-class WXDLLEXPORT wxColourData: public wxObject
-{
-public:
- wxColourData();
- wxColourData(const wxColourData& data);
- virtual ~wxColourData();
-
- void SetChooseFull(bool flag) { m_chooseFull = flag; }
- bool GetChooseFull() const { return m_chooseFull; }
- void SetColour(const wxColour& colour) { m_dataColour = colour; }
- const wxColour& GetColour() const { return m_dataColour; }
- wxColour& GetColour() { return m_dataColour; }
-
- // Array of 16 custom colours
- void SetCustomColour(int i, const wxColour& colour);
- wxColour GetCustomColour(int i);
-
- void operator=(const wxColourData& data);
-
-public:
- wxColour m_dataColour;
- wxColour m_custColours[16];
- bool m_chooseFull;
-
-private:
- DECLARE_DYNAMIC_CLASS(wxColourData)
-};
-
-class WXDLLEXPORT wxFontData : public wxObject
-{
-public:
- wxFontData();
- virtual ~wxFontData();
-
- wxFontData(const wxFontData& data)
- : wxObject(),
- m_fontColour(data.m_fontColour),
- m_showHelp(data.m_showHelp),
- m_allowSymbols(data.m_allowSymbols),
- m_enableEffects(data.m_enableEffects),
- m_initialFont(data.m_initialFont),
- m_chosenFont(data.m_chosenFont),
- m_minSize(data.m_minSize),
- m_maxSize(data.m_maxSize),
- m_encoding(data.m_encoding),
- m_encodingInfo(data.m_encodingInfo)
- {
- }
-
- wxFontData& operator=(const wxFontData& data)
- {
- wxObject::operator=(data);
- m_fontColour = data.m_fontColour;
- m_showHelp = data.m_showHelp;
- m_allowSymbols = data.m_allowSymbols;
- m_enableEffects = data.m_enableEffects;
- m_initialFont = data.m_initialFont;
- m_chosenFont = data.m_chosenFont;
- m_minSize = data.m_minSize;
- m_maxSize = data.m_maxSize;
- m_encoding = data.m_encoding;
- m_encodingInfo = data.m_encodingInfo;
- return *this;
- }
-
- void SetAllowSymbols(bool flag) { m_allowSymbols = flag; }
- bool GetAllowSymbols() const { return m_allowSymbols; }
-
- void SetColour(const wxColour& colour) { m_fontColour = colour; }
- const wxColour& GetColour() const { return m_fontColour; }
-
- void SetShowHelp(bool flag) { m_showHelp = flag; }
- bool GetShowHelp() const { return m_showHelp; }
-
- void EnableEffects(bool flag) { m_enableEffects = flag; }
- bool GetEnableEffects() const { return m_enableEffects; }
-
- void SetInitialFont(const wxFont& font) { m_initialFont = font; }
- wxFont GetInitialFont() const { return m_initialFont; }
-
- void SetChosenFont(const wxFont& font) { m_chosenFont = font; }
- wxFont GetChosenFont() const { return m_chosenFont; }
-
- void SetRange(int minRange, int maxRange) { m_minSize = minRange; m_maxSize = maxRange; }
-
- // encoding info is split into 2 parts: the logical wxWin encoding
- // (wxFontEncoding) and a structure containing the native parameters for
- // it (wxNativeEncodingInfo)
- wxFontEncoding GetEncoding() const { return m_encoding; }
- void SetEncoding(wxFontEncoding encoding) { m_encoding = encoding; }
-
- wxNativeEncodingInfo& EncodingInfo() { return m_encodingInfo; }
-
-
- // public for backwards compatibility only: don't use directly
-public:
- wxColour m_fontColour;
- bool m_showHelp;
- bool m_allowSymbols;
- bool m_enableEffects;
- wxFont m_initialFont;
- wxFont m_chosenFont;
- int m_minSize;
- int m_maxSize;
-
-private:
- wxFontEncoding m_encoding;
- wxNativeEncodingInfo m_encodingInfo;
-
-private:
- DECLARE_DYNAMIC_CLASS(wxFontData)
-};
-
-#if wxUSE_PRINTING_ARCHITECTURE
-/*
- * wxPrintData
- * Encapsulates printer information (not printer dialog information)
- */
-
-enum wxPrintBin
-{
- wxPRINTBIN_DEFAULT,
-
- wxPRINTBIN_ONLYONE,
- wxPRINTBIN_LOWER,
- wxPRINTBIN_MIDDLE,
- wxPRINTBIN_MANUAL,
- wxPRINTBIN_ENVELOPE,
- wxPRINTBIN_ENVMANUAL,
- wxPRINTBIN_AUTO,
- wxPRINTBIN_TRACTOR,
- wxPRINTBIN_SMALLFMT,
- wxPRINTBIN_LARGEFMT,
- wxPRINTBIN_LARGECAPACITY,
- wxPRINTBIN_CASSETTE,
- wxPRINTBIN_FORMSOURCE,
-
- wxPRINTBIN_USER
-};
-
-const int wxPRINTMEDIA_DEFAULT = 0;
-
-class WXDLLEXPORT wxPrintData: public wxObject
-{
-public:
- wxPrintData();
- wxPrintData(const wxPrintData& printData);
- virtual ~wxPrintData();
-
- int GetNoCopies() const { return m_printNoCopies; }
- bool GetCollate() const { return m_printCollate; }
- int GetOrientation() const { return m_printOrientation; }
- bool IsOrientationReversed() const { return m_printOrientationReversed; }
-
- // Is this data OK for showing the print dialog?
- bool Ok() const { return IsOk(); }
- bool IsOk() const ;
-
- const wxString& GetPrinterName() const { return m_printerName; }
- bool GetColour() const { return m_colour; }
- wxDuplexMode GetDuplex() const { return m_duplexMode; }
- wxPaperSize GetPaperId() const { return m_paperId; }
- const wxSize& GetPaperSize() const { return m_paperSize; } // Not used yet: confusable with paper size
- // in wxPageSetupDialogData
- wxPrintQuality GetQuality() const { return m_printQuality; }
- wxPrintBin GetBin() const { return m_bin; }
- wxPrintMode GetPrintMode() const { return m_printMode; }
- int GetMedia() const { return m_media; }
-
- void SetNoCopies(int v) { m_printNoCopies = v; }
- void SetCollate(bool flag) { m_printCollate = flag; }
- void SetOrientation(int orient) { m_printOrientation = orient; }
- void SetOrientationReversed(bool reversed) { m_printOrientationReversed = reversed; }
-
- void SetPrinterName(const wxString& name) { m_printerName = name; }
- void SetColour(bool colour) { m_colour = colour; }
- void SetDuplex(wxDuplexMode duplex) { m_duplexMode = duplex; }
- void SetPaperId(wxPaperSize sizeId) { m_paperId = sizeId; }
- void SetPaperSize(const wxSize& sz) { m_paperSize = sz; }
- void SetQuality(wxPrintQuality quality) { m_printQuality = quality; }
- void SetBin(wxPrintBin bin) { m_bin = bin; }
- void SetMedia(int media) { m_media = media; }
- void SetPrintMode(wxPrintMode printMode) { m_printMode = printMode; }
-
- wxString GetFilename() const { return m_filename; }
- void SetFilename( const wxString &filename ) { m_filename = filename; }
-
- void operator=(const wxPrintData& data);
-
- char* GetPrivData() const { return m_privData; }
- int GetPrivDataLen() const { return m_privDataLen; }
- void SetPrivData( char *privData, int len );
-
-
-#if WXWIN_COMPATIBILITY_2_4
- // PostScript-specific data
- wxString GetPrinterCommand() const;
- wxString GetPrinterOptions() const;
- wxString GetPreviewCommand() const;
- wxString GetFontMetricPath() const;
- double GetPrinterScaleX() const;
- double GetPrinterScaleY() const;
- long GetPrinterTranslateX() const;
- long GetPrinterTranslateY() const;
-
- void SetPrinterCommand(const wxString& command);
- void SetPrinterOptions(const wxString& options);
- void SetPreviewCommand(const wxString& command);
- void SetFontMetricPath(const wxString& path);
- void SetPrinterScaleX(double x);
- void SetPrinterScaleY(double y);
- void SetPrinterScaling(double x, double y);
- void SetPrinterTranslateX(long x);
- void SetPrinterTranslateY(long y);
- void SetPrinterTranslation(long x, long y);
-#endif
-
- // Convert between wxPrintData and native data
- void ConvertToNative();
- void ConvertFromNative();
- // Holds the native print data
- wxPrintNativeDataBase *GetNativeData() const { return m_nativeData; }
-
-private:
- wxPrintBin m_bin;
- int m_media;
- wxPrintMode m_printMode;
-
- int m_printNoCopies;
- int m_printOrientation;
- bool m_printOrientationReversed;
- bool m_printCollate;
-
- wxString m_printerName;
- bool m_colour;
- wxDuplexMode m_duplexMode;
- wxPrintQuality m_printQuality;
- wxPaperSize m_paperId;
- wxSize m_paperSize;
-
- wxString m_filename;
-
- char* m_privData;
- int m_privDataLen;
-
- wxPrintNativeDataBase *m_nativeData;
-
-private:
- DECLARE_DYNAMIC_CLASS(wxPrintData)
-};
-
-/*
- * wxPrintDialogData
- * Encapsulates information displayed and edited in the printer dialog box.
- * Contains a wxPrintData object which is filled in according to the values retrieved
- * from the dialog.
- */
-
-class WXDLLEXPORT wxPrintDialogData: public wxObject
-{
-public:
- wxPrintDialogData();
- wxPrintDialogData(const wxPrintDialogData& dialogData);
- wxPrintDialogData(const wxPrintData& printData);
- virtual ~wxPrintDialogData();
-
- int GetFromPage() const { return m_printFromPage; }
- int GetToPage() const { return m_printToPage; }
- int GetMinPage() const { return m_printMinPage; }
- int GetMaxPage() const { return m_printMaxPage; }
- int GetNoCopies() const { return m_printNoCopies; }
- bool GetAllPages() const { return m_printAllPages; }
- bool GetSelection() const { return m_printSelection; }
- bool GetCollate() const { return m_printCollate; }
- bool GetPrintToFile() const { return m_printToFile; }
-#if WXWIN_COMPATIBILITY_2_4
- bool GetSetupDialog() const { return m_printSetupDialog; }
-#endif
- void SetFromPage(int v) { m_printFromPage = v; }
- void SetToPage(int v) { m_printToPage = v; }
- void SetMinPage(int v) { m_printMinPage = v; }
- void SetMaxPage(int v) { m_printMaxPage = v; }
- void SetNoCopies(int v) { m_printNoCopies = v; }
- void SetAllPages(bool flag) { m_printAllPages = flag; }
- void SetSelection(bool flag) { m_printSelection = flag; }
- void SetCollate(bool flag) { m_printCollate = flag; }
- void SetPrintToFile(bool flag) { m_printToFile = flag; }
-#if WXWIN_COMPATIBILITY_2_4
- void SetSetupDialog(bool flag) { m_printSetupDialog = flag; }
-#endif
- void EnablePrintToFile(bool flag) { m_printEnablePrintToFile = flag; }
- void EnableSelection(bool flag) { m_printEnableSelection = flag; }
- void EnablePageNumbers(bool flag) { m_printEnablePageNumbers = flag; }
- void EnableHelp(bool flag) { m_printEnableHelp = flag; }
-
- bool GetEnablePrintToFile() const { return m_printEnablePrintToFile; }
- bool GetEnableSelection() const { return m_printEnableSelection; }
- bool GetEnablePageNumbers() const { return m_printEnablePageNumbers; }
- bool GetEnableHelp() const { return m_printEnableHelp; }
-
- // Is this data OK for showing the print dialog?
- bool Ok() const { return IsOk(); }
- bool IsOk() const { return m_printData.Ok() ; }
-
- wxPrintData& GetPrintData() { return m_printData; }
- void SetPrintData(const wxPrintData& printData) { m_printData = printData; }
-
- void operator=(const wxPrintDialogData& data);
- void operator=(const wxPrintData& data); // Sets internal m_printData member
-
-private:
- int m_printFromPage;
- int m_printToPage;
- int m_printMinPage;
- int m_printMaxPage;
- int m_printNoCopies;
- bool m_printAllPages;
- bool m_printCollate;
- bool m_printToFile;
- bool m_printSelection;
- bool m_printEnableSelection;
- bool m_printEnablePageNumbers;
- bool m_printEnableHelp;
- bool m_printEnablePrintToFile;
-#if WXWIN_COMPATIBILITY_2_4
- bool m_printSetupDialog;
-#endif
- wxPrintData m_printData;
-
-private:
- DECLARE_DYNAMIC_CLASS(wxPrintDialogData)
-};
-
-/*
-* This is the data used (and returned) by the wxPageSetupDialog.
-*/
-
-// Compatibility with old name
-#define wxPageSetupData wxPageSetupDialogData
-
-class WXDLLEXPORT wxPageSetupDialogData: public wxObject
-{
-public:
- wxPageSetupDialogData();
- wxPageSetupDialogData(const wxPageSetupDialogData& dialogData);
- wxPageSetupDialogData(const wxPrintData& printData);
- virtual ~wxPageSetupDialogData();
-
- wxSize GetPaperSize() const { return m_paperSize; }
- wxPaperSize GetPaperId() const { return m_printData.GetPaperId(); }
- wxPoint GetMinMarginTopLeft() const { return m_minMarginTopLeft; }
- wxPoint GetMinMarginBottomRight() const { return m_minMarginBottomRight; }
- wxPoint GetMarginTopLeft() const { return m_marginTopLeft; }
- wxPoint GetMarginBottomRight() const { return m_marginBottomRight; }
-
- bool GetDefaultMinMargins() const { return m_defaultMinMargins; }
- bool GetEnableMargins() const { return m_enableMargins; }
- bool GetEnableOrientation() const { return m_enableOrientation; }
- bool GetEnablePaper() const { return m_enablePaper; }
- bool GetEnablePrinter() const { return m_enablePrinter; }
- bool GetDefaultInfo() const { return m_getDefaultInfo; }
- bool GetEnableHelp() const { return m_enableHelp; }
-
- // Is this data OK for showing the page setup dialog?
- bool Ok() const { return IsOk(); }
- bool IsOk() const { return m_printData.Ok() ; }
-
- // If a corresponding paper type is found in the paper database, will set the m_printData
- // paper size id member as well.
- void SetPaperSize(const wxSize& sz);
-
- void SetPaperId(wxPaperSize id) { m_printData.SetPaperId(id); }
-
- // Sets the wxPrintData id, plus the paper width/height if found in the paper database.
- void SetPaperSize(wxPaperSize id);
-
- void SetMinMarginTopLeft(const wxPoint& pt) { m_minMarginTopLeft = pt; }
- void SetMinMarginBottomRight(const wxPoint& pt) { m_minMarginBottomRight = pt; }
- void SetMarginTopLeft(const wxPoint& pt) { m_marginTopLeft = pt; }
- void SetMarginBottomRight(const wxPoint& pt) { m_marginBottomRight = pt; }
- void SetDefaultMinMargins(bool flag) { m_defaultMinMargins = flag; }
- void SetDefaultInfo(bool flag) { m_getDefaultInfo = flag; }
-
- void EnableMargins(bool flag) { m_enableMargins = flag; }
- void EnableOrientation(bool flag) { m_enableOrientation = flag; }
- void EnablePaper(bool flag) { m_enablePaper = flag; }
- void EnablePrinter(bool flag) { m_enablePrinter = flag; }
- void EnableHelp(bool flag) { m_enableHelp = flag; }
-
- // Use paper size defined in this object to set the wxPrintData
- // paper id
- void CalculateIdFromPaperSize();
-
- // Use paper id in wxPrintData to set this object's paper size
- void CalculatePaperSizeFromId();
-
- wxPageSetupDialogData& operator=(const wxPageSetupData& data);
- wxPageSetupDialogData& operator=(const wxPrintData& data);
-
- wxPrintData& GetPrintData() { return m_printData; }
- const wxPrintData& GetPrintData() const { return m_printData; }
- void SetPrintData(const wxPrintData& printData);
-
-private:
- wxSize m_paperSize; // The dimensions selected by the user (on return, same as in wxPrintData?)
- wxPoint m_minMarginTopLeft;
- wxPoint m_minMarginBottomRight;
- wxPoint m_marginTopLeft;
- wxPoint m_marginBottomRight;
- bool m_defaultMinMargins;
- bool m_enableMargins;
- bool m_enableOrientation;
- bool m_enablePaper;
- bool m_enablePrinter;
- bool m_getDefaultInfo; // Equiv. to PSD_RETURNDEFAULT
- bool m_enableHelp;
- wxPrintData m_printData;
-
-private:
- DECLARE_DYNAMIC_CLASS(wxPageSetupDialogData)
-};
-
-#endif // wxUSE_PRINTING_ARCHITECTURE
-
-#endif
-// _WX_CMNDATA_H_BASE_
diff --git a/Externals/wxWidgets/include/wx/collpane.h b/Externals/wxWidgets/include/wx/collpane.h
deleted file mode 100644
index 1db6bfb540..0000000000
--- a/Externals/wxWidgets/include/wx/collpane.h
+++ /dev/null
@@ -1,104 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-// Name: wx/collpane.h
-// Purpose: wxCollapsiblePane
-// Author: Francesco Montorsi
-// Modified by:
-// Created: 8/10/2006
-// RCS-ID: $Id: collpane.h 43300 2006-11-11 07:32:08Z RD $
-// Copyright: (c) Francesco Montorsi
-// Licence: wxWindows Licence
-/////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_COLLAPSABLE_PANE_H_BASE_
-#define _WX_COLLAPSABLE_PANE_H_BASE_
-
-#include "wx/defs.h"
-
-
-#if wxUSE_COLLPANE
-
-#include "wx/control.h"
-
-
-// ----------------------------------------------------------------------------
-// wxCollapsiblePaneBase: interface for wxCollapsiblePane
-// ----------------------------------------------------------------------------
-
-#define wxCP_DEFAULT_STYLE (wxTAB_TRAVERSAL | wxNO_BORDER)
-#define wxCP_NO_TLW_RESIZE (0x0002)
-
-class WXDLLIMPEXP_CORE wxCollapsiblePaneBase : public wxControl
-{
-public:
- wxCollapsiblePaneBase() {}
-
- virtual void Collapse(bool collapse = true) = 0;
- void Expand() { Collapse(false); }
-
- virtual bool IsCollapsed() const = 0;
- bool IsExpanded() const { return !IsCollapsed(); }
-
- virtual wxWindow *GetPane() const = 0;
-
- virtual wxString GetLabel() const = 0;
- virtual void SetLabel(const wxString& label) = 0;
-};
-
-
-// ----------------------------------------------------------------------------
-// event types and macros
-// ----------------------------------------------------------------------------
-
-BEGIN_DECLARE_EVENT_TYPES()
- DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_CORE, wxEVT_COMMAND_COLLPANE_CHANGED, 1102)
-END_DECLARE_EVENT_TYPES()
-
-class WXDLLIMPEXP_CORE wxCollapsiblePaneEvent : public wxCommandEvent
-{
-public:
- wxCollapsiblePaneEvent() {}
- wxCollapsiblePaneEvent(wxObject *generator, int id, bool collapsed)
- : wxCommandEvent(wxEVT_COMMAND_COLLPANE_CHANGED, id),
- m_bCollapsed(collapsed)
- {
- SetEventObject(generator);
- }
-
- bool GetCollapsed() const { return m_bCollapsed; }
- void SetCollapsed(bool c) { m_bCollapsed = c; }
-
-
- // default copy ctor, assignment operator and dtor are ok
- virtual wxEvent *Clone() const { return new wxCollapsiblePaneEvent(*this); }
-
-private:
- bool m_bCollapsed;
-
- DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxCollapsiblePaneEvent)
-};
-
-// ----------------------------------------------------------------------------
-// event types and macros
-// ----------------------------------------------------------------------------
-
-typedef void (wxEvtHandler::*wxCollapsiblePaneEventFunction)(wxCollapsiblePaneEvent&);
-
-#define wxCollapsiblePaneEventHandler(func) \
- (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxCollapsiblePaneEventFunction, &func)
-
-#define EVT_COLLAPSIBLEPANE_CHANGED(id, fn) \
- wx__DECLARE_EVT1(wxEVT_COMMAND_COLLPANE_CHANGED, id, wxCollapsiblePaneEventHandler(fn))
-
-
-#if defined(__WXGTK24__) && !defined(__WXUNIVERSAL__)
- #include "wx/gtk/collpane.h"
-#else
- #include "wx/generic/collpaneg.h"
-
- // use #define and not a typedef to allow forward declaring the class
- #define wxCollapsiblePane wxGenericCollapsiblePane
-#endif
-
-#endif // wxUSE_COLLPANE
-
-#endif // _WX_COLLAPSABLE_PANE_H_BASE_
diff --git a/Externals/wxWidgets/include/wx/colordlg.h b/Externals/wxWidgets/include/wx/colordlg.h
deleted file mode 100644
index 83e416dcb4..0000000000
--- a/Externals/wxWidgets/include/wx/colordlg.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-// Name: wx/colrdlgg.h
-// Purpose: wxColourDialog
-// Author: Vadim Zeitiln
-// Modified by:
-// Created: 01/02/97
-// RCS-ID: $Id: colordlg.h 36623 2006-01-02 14:26:36Z JS $
-// Copyright: (c) wxWidgets team
-// Licence: wxWindows licence
-/////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_COLORDLG_H_BASE_
-#define _WX_COLORDLG_H_BASE_
-
-#include "wx/defs.h"
-
-#if wxUSE_COLOURDLG
-
-#if defined(__WXMSW__) && !defined(__WXUNIVERSAL__)
- #include "wx/msw/colordlg.h"
-#elif defined(__WXMAC__) && !defined(__WXUNIVERSAL__)
- #include "wx/mac/colordlg.h"
-#elif defined(__WXGTK20__) && !defined(__WXUNIVERSAL__)
- #include "wx/gtk/colordlg.h"
-#elif defined(__WXPALMOS__)
- #include "wx/palmos/colordlg.h"
-#else
- #include "wx/generic/colrdlgg.h"
-
- #define wxColourDialog wxGenericColourDialog
-#endif
-
-// get the colour from user and return it
-wxColour WXDLLEXPORT
-wxGetColourFromUser(wxWindow *parent = (wxWindow *)NULL,
- const wxColour& colInit = wxNullColour, const wxString& caption = wxEmptyString);
-
-#endif // wxUSE_COLOURDLG
-
-#endif
- // _WX_COLORDLG_H_BASE_
diff --git a/Externals/wxWidgets/include/wx/colour.h b/Externals/wxWidgets/include/wx/colour.h
deleted file mode 100644
index bb396f0fed..0000000000
--- a/Externals/wxWidgets/include/wx/colour.h
+++ /dev/null
@@ -1,154 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-// Name: wx/colour.h
-// Purpose: wxColourBase definition
-// Author: Julian Smart
-// Modified by: Francesco Montorsi
-// Created:
-// RCS-ID: $Id: colour.h 53135 2008-04-12 02:31:04Z VZ $
-// Copyright: Julian Smart
-// Licence: wxWindows licence
-/////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_COLOUR_H_BASE_
-#define _WX_COLOUR_H_BASE_
-
-#include "wx/defs.h"
-#include "wx/gdiobj.h"
-
-
-class WXDLLIMPEXP_FWD_CORE wxColour;
-
-// the standard wxColour constructors;
-// this macro avoids to repeat these lines across all colour.h files, since
-// Set() is a virtual function and thus cannot be called by wxColourBase
-// constructors
-#define DEFINE_STD_WXCOLOUR_CONSTRUCTORS \
- wxColour( ChannelType red, ChannelType green, ChannelType blue, \
- ChannelType alpha = wxALPHA_OPAQUE ) \
- { Set(red, green, blue, alpha); } \
- wxColour( unsigned long colRGB ) { Set(colRGB); } \
- wxColour(const wxString &colourName) { Set(colourName); } \
- wxColour(const wxChar *colourName) { Set(colourName); }
-
-
-// flags for wxColour -> wxString conversion (see wxColour::GetAsString)
-#define wxC2S_NAME 1 // return colour name, when possible
-#define wxC2S_CSS_SYNTAX 2 // return colour in rgb(r,g,b) syntax
-#define wxC2S_HTML_SYNTAX 4 // return colour in #rrggbb syntax
-
-
-const unsigned char wxALPHA_TRANSPARENT = 0;
-const unsigned char wxALPHA_OPAQUE = 0xff;
-
-// ----------------------------------------------------------------------------
-// wxVariant support
-// ----------------------------------------------------------------------------
-
-#if wxUSE_VARIANT
-#include "wx/variant.h"
-DECLARE_VARIANT_OBJECT_EXPORTED(wxColour,WXDLLEXPORT)
-#endif
-
-//-----------------------------------------------------------------------------
-// wxColourBase: this class has no data members, just some functions to avoid
-// code redundancy in all native wxColour implementations
-//-----------------------------------------------------------------------------
-
-class WXDLLEXPORT wxColourBase : public wxGDIObject
-{
-public:
- // type of a single colour component
- typedef unsigned char ChannelType;
-
- wxColourBase() {}
- virtual ~wxColourBase() {}
-
-
- // Set() functions
- // ---------------
-
- void Set(ChannelType red,
- ChannelType green,
- ChannelType blue,
- ChannelType alpha = wxALPHA_OPAQUE)
- { InitRGBA(red,green,blue, alpha); }
-
- // implemented in colourcmn.cpp
- bool Set(const wxChar *str)
- { return FromString(str); }
-
- bool Set(const wxString &str)
- { return FromString(str); }
-
- void Set(unsigned long colRGB)
- {
- // we don't need to know sizeof(long) here because we assume that the three
- // least significant bytes contain the R, G and B values
- Set((ChannelType)(0xFF & colRGB),
- (ChannelType)(0xFF & (colRGB >> 8)),
- (ChannelType)(0xFF & (colRGB >> 16)));
- }
-
-
-
- // accessors
- // ---------
-
- virtual bool Ok() const { return IsOk(); }
- virtual bool IsOk() const = 0;
-
- virtual ChannelType Red() const = 0;
- virtual ChannelType Green() const = 0;
- virtual ChannelType Blue() const = 0;
- virtual ChannelType Alpha() const
- { return wxALPHA_OPAQUE ; }
-
- // implemented in colourcmn.cpp
- virtual wxString GetAsString(long flags = wxC2S_NAME | wxC2S_CSS_SYNTAX) const;
-
-
-
- // old, deprecated
- // ---------------
-
-#if WXWIN_COMPATIBILITY_2_6
- wxDEPRECATED( static wxColour CreateByName(const wxString& name) );
- wxDEPRECATED( void InitFromName(const wxString& col) );
-#endif
-
-protected:
- virtual void
- InitRGBA(ChannelType r, ChannelType g, ChannelType b, ChannelType a) = 0;
-
- virtual bool FromString(const wxChar *s);
-};
-
-
-
-#if defined(__WXPALMOS__)
- #include "wx/generic/colour.h"
-#elif defined(__WXMSW__)
- #include "wx/msw/colour.h"
-#elif defined(__WXMOTIF__)
- #include "wx/motif/colour.h"
-#elif defined(__WXGTK20__)
- #include "wx/gtk/colour.h"
-#elif defined(__WXGTK__)
- #include "wx/gtk1/colour.h"
-#elif defined(__WXMGL__)
- #include "wx/generic/colour.h"
-#elif defined(__WXDFB__)
- #include "wx/generic/colour.h"
-#elif defined(__WXX11__)
- #include "wx/x11/colour.h"
-#elif defined(__WXMAC__)
- #include "wx/mac/colour.h"
-#elif defined(__WXCOCOA__)
- #include "wx/cocoa/colour.h"
-#elif defined(__WXPM__)
- #include "wx/os2/colour.h"
-#endif
-
-#define wxColor wxColour
-
-#endif // _WX_COLOUR_H_BASE_
diff --git a/Externals/wxWidgets/include/wx/combo.h b/Externals/wxWidgets/include/wx/combo.h
deleted file mode 100644
index 52c8af4fbd..0000000000
--- a/Externals/wxWidgets/include/wx/combo.h
+++ /dev/null
@@ -1,746 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Name: wx/combo.h
-// Purpose: wxComboCtrl declaration
-// Author: Jaakko Salli
-// Modified by:
-// Created: Apr-30-2006
-// RCS-ID: $Id: combo.h 49804 2007-11-10 01:09:42Z VZ $
-// Copyright: (c) Jaakko Salli
-// Licence: wxWindows licence
-///////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_COMBOCONTROL_H_BASE_
-#define _WX_COMBOCONTROL_H_BASE_
-
-
-/*
- A few words about all the classes defined in this file are probably in
- order: why do we need extra wxComboCtrl and wxComboPopup classes?
-
- This is because a traditional combobox is a combination of a text control
- (with a button allowing to open the pop down list) with a listbox and
- wxComboBox class is exactly such control, however we want to also have other
- combinations - in fact, we want to allow anything at all to be used as pop
- down list, not just a wxListBox.
-
- So we define a base wxComboCtrl which can use any control as pop down
- list and wxComboBox deriving from it which implements the standard wxWidgets
- combobox API. wxComboCtrl needs to be told somehow which control to use
- and this is done by SetPopupControl(). However, we need something more than
- just a wxControl in this method as, for example, we need to call
- SetSelection("initial text value") and wxControl doesn't have such method.
- So we also need a wxComboPopup which is just a very simple interface which
- must be implemented by a control to be usable as a popup.
-
- We couldn't derive wxComboPopup from wxControl as this would make it
- impossible to have a class deriving from both wxListBx and from it, so
- instead it is just a mix-in.
- */
-
-
-#include "wx/defs.h"
-
-#if wxUSE_COMBOCTRL
-
-#include "wx/control.h"
-#include "wx/renderer.h" // this is needed for wxCONTROL_XXX flags
-#include "wx/bitmap.h" // wxBitmap used by-value
-
-class WXDLLIMPEXP_FWD_CORE wxTextCtrl;
-class WXDLLIMPEXP_FWD_CORE wxComboPopup;
-
-//
-// New window styles for wxComboCtrlBase
-//
-enum
-{
- // Double-clicking a read-only combo triggers call to popup's OnComboPopup.
- // In wxOwnerDrawnComboBox, for instance, it cycles item.
- wxCC_SPECIAL_DCLICK = 0x0100,
-
- // Dropbutton acts like standard push button.
- wxCC_STD_BUTTON = 0x0200
-};
-
-
-// wxComboCtrl internal flags
-enum
-{
- // First those that can be passed to Customize.
- // It is Windows style for all flags to be clear.
-
- // Button is preferred outside the border (GTK style)
- wxCC_BUTTON_OUTSIDE_BORDER = 0x0001,
- // Show popup on mouse up instead of mouse down (which is the Windows style)
- wxCC_POPUP_ON_MOUSE_UP = 0x0002,
- // All text is not automatically selected on click
- wxCC_NO_TEXT_AUTO_SELECT = 0x0004,
-
- // Internal use: signals creation is complete
- wxCC_IFLAG_CREATED = 0x0100,
- // Internal use: really put button outside
- wxCC_IFLAG_BUTTON_OUTSIDE = 0x0200,
- // Internal use: SetTextIndent has been called
- wxCC_IFLAG_INDENT_SET = 0x0400,
- // Internal use: Set wxTAB_TRAVERSAL to parent when popup is dismissed
- wxCC_IFLAG_PARENT_TAB_TRAVERSAL = 0x0800,
- // Internal use: Secondary popup window type should be used (if available).
- wxCC_IFLAG_USE_ALT_POPUP = 0x1000,
- // Internal use: Skip popup animation.
- wxCC_IFLAG_DISABLE_POPUP_ANIM = 0x2000
-};
-
-
-// Flags used by PreprocessMouseEvent and HandleButtonMouseEvent
-enum
-{
- wxCC_MF_ON_BUTTON = 0x0001, // cursor is on dropbutton area
- wxCC_MF_ON_CLICK_AREA = 0x0002 // cursor is on dropbutton or other area
- // that can be clicked to show the popup.
-};
-
-
-// Namespace for wxComboCtrl feature flags
-struct wxComboCtrlFeatures
-{
- enum
- {
- MovableButton = 0x0001, // Button can be on either side of control
- BitmapButton = 0x0002, // Button may be replaced with bitmap
- ButtonSpacing = 0x0004, // Button can have spacing from the edge
- // of the control
- TextIndent = 0x0008, // SetTextIndent can be used
- PaintControl = 0x0010, // Combo control itself can be custom painted
- PaintWritable = 0x0020, // A variable-width area in front of writable
- // combo control's textctrl can be custom
- // painted
- Borderless = 0x0040, // wxNO_BORDER window style works
-
- // There are no feature flags for...
- // PushButtonBitmapBackground - if its in wxRendererNative, then it should be
- // not an issue to have it automatically under the bitmap.
-
- All = MovableButton|BitmapButton|
- ButtonSpacing|TextIndent|
- PaintControl|PaintWritable|
- Borderless
- };
-};
-
-
-class WXDLLEXPORT wxComboCtrlBase : public wxControl
-{
- friend class wxComboPopup;
-public:
- // ctors and such
- wxComboCtrlBase() : wxControl() { Init(); }
-
- bool Create(wxWindow *parent,
- wxWindowID id,
- const wxString& value,
- const wxPoint& pos,
- const wxSize& size,
- long style,
- const wxValidator& validator,
- const wxString& name);
-
- virtual ~wxComboCtrlBase();
-
- // show/hide popup window
- virtual void ShowPopup();
- virtual void HidePopup();
-
- // Override for totally custom combo action
- virtual void OnButtonClick();
-
- // return true if the popup is currently shown
- bool IsPopupShown() const { return m_popupWinState == Visible; }
-
- // set interface class instance derived from wxComboPopup
- // NULL popup can be used to indicate default in a derived class
- void SetPopupControl( wxComboPopup* popup )
- {
- DoSetPopupControl(popup);
- }
-
- // get interface class instance derived from wxComboPopup
- wxComboPopup* GetPopupControl()
- {
- EnsurePopupControl();
- return m_popupInterface;
- }
-
- // get the popup window containing the popup control
- wxWindow *GetPopupWindow() const { return m_winPopup; }
-
- // Get the text control which is part of the combobox.
- wxTextCtrl *GetTextCtrl() const { return m_text; }
-
- // get the dropdown button which is part of the combobox
- // note: its not necessarily a wxButton or wxBitmapButton
- wxWindow *GetButton() const { return m_btn; }
-
- // forward these methods to all subcontrols
- virtual bool Enable(bool enable = true);
- virtual bool Show(bool show = true);
- virtual bool SetFont(const wxFont& font);
-#if wxUSE_VALIDATORS
- virtual void SetValidator(const wxValidator &validator);
- virtual wxValidator *GetValidator();
-#endif // wxUSE_VALIDATORS
-
- // wxTextCtrl methods - for readonly combo they should return
- // without errors.
- virtual wxString GetValue() const;
- virtual void SetValue(const wxString& value);
- virtual void Copy();
- virtual void Cut();
- virtual void Paste();
- virtual void SetInsertionPoint(long pos);
- virtual void SetInsertionPointEnd();
- virtual long GetInsertionPoint() const;
- virtual long GetLastPosition() const;
- virtual void Replace(long from, long to, const wxString& value);
- virtual void Remove(long from, long to);
- virtual void SetSelection(long from, long to);
- virtual void Undo();
-
- // This method sets the text without affecting list selection
- // (ie. wxComboPopup::SetStringValue doesn't get called).
- void SetText(const wxString& value);
-
- // This method sets value and also optionally sends EVT_TEXT
- // (needed by combo popups)
- void SetValueWithEvent(const wxString& value, bool withEvent = true);
-
- //
- // Popup customization methods
- //
-
- // Sets minimum width of the popup. If wider than combo control, it will extend to the left.
- // Remarks:
- // * Value -1 indicates the default.
- // * Custom popup may choose to ignore this (wxOwnerDrawnComboBox does not).
- void SetPopupMinWidth( int width )
- {
- m_widthMinPopup = width;
- }
-
- // Sets preferred maximum height of the popup.
- // Remarks:
- // * Value -1 indicates the default.
- // * Custom popup may choose to ignore this (wxOwnerDrawnComboBox does not).
- void SetPopupMaxHeight( int height )
- {
- m_heightPopup = height;
- }
-
- // Extends popup size horizontally, relative to the edges of the combo control.
- // Remarks:
- // * Popup minimum width may override extLeft (ie. it has higher precedence).
- // * Values 0 indicate default.
- // * Custom popup may not take this fully into account (wxOwnerDrawnComboBox takes).
- void SetPopupExtents( int extLeft, int extRight )
- {
- m_extLeft = extLeft;
- m_extRight = extRight;
- }
-
- // Set width, in pixels, of custom paint area in writable combo.
- // In read-only, used to indicate area that is not covered by the
- // focus rectangle (which may or may not be drawn, depending on the
- // popup type).
- void SetCustomPaintWidth( int width );
- int GetCustomPaintWidth() const { return m_widthCustomPaint; }
-
- // Set side of the control to which the popup will align itself.
- // Valid values are wxLEFT, wxRIGHT and 0. The default value 0 wmeans
- // that the side of the button will be used.
- void SetPopupAnchor( int anchorSide )
- {
- m_anchorSide = anchorSide;
- }
-
- // Set position of dropdown button.
- // width: button width. <= 0 for default.
- // height: button height. <= 0 for default.
- // side: wxLEFT or wxRIGHT, indicates on which side the button will be placed.
- // spacingX: empty space on sides of the button. Default is 0.
- // Remarks:
- // There is no spacingY - the button will be centered vertically.
- void SetButtonPosition( int width = -1,
- int height = -1,
- int side = wxRIGHT,
- int spacingX = 0 );
-
- // Returns current size of the dropdown button.
- wxSize GetButtonSize();
-
- //
- // Sets dropbutton to be drawn with custom bitmaps.
- //
- // bmpNormal: drawn when cursor is not on button
- // pushButtonBg: Draw push button background below the image.
- // NOTE! This is usually only properly supported on platforms with appropriate
- // method in wxRendererNative.
- // bmpPressed: drawn when button is depressed
- // bmpHover: drawn when cursor hovers on button. This is ignored on platforms
- // that do not generally display hover differently.
- // bmpDisabled: drawn when combobox is disabled.
- void SetButtonBitmaps( const wxBitmap& bmpNormal,
- bool pushButtonBg = false,
- const wxBitmap& bmpPressed = wxNullBitmap,
- const wxBitmap& bmpHover = wxNullBitmap,
- const wxBitmap& bmpDisabled = wxNullBitmap );
-
- //
- // This will set the space in pixels between left edge of the control and the
- // text, regardless whether control is read-only (ie. no wxTextCtrl) or not.
- // Platform-specific default can be set with value-1.
- // Remarks
- // * This method may do nothing on some native implementations.
- void SetTextIndent( int indent );
-
- // Returns actual indentation in pixels.
- wxCoord GetTextIndent() const
- {
- return m_absIndent;
- }
-
- // Returns area covered by the text field.
- const wxRect& GetTextRect() const
- {
- return m_tcArea;
- }
-
- // Call with enable as true to use a type of popup window that guarantees ability
- // to focus the popup control, and normal function of common native controls.
- // This alternative popup window is usually a wxDialog, and as such it's parent
- // frame will appear as if the focus has been lost from it.
- void UseAltPopupWindow( bool enable = true )
- {
- wxASSERT_MSG( !m_winPopup,
- wxT("call this only before SetPopupControl") );
-
- if ( enable )
- m_iFlags |= wxCC_IFLAG_USE_ALT_POPUP;
- else
- m_iFlags &= ~wxCC_IFLAG_USE_ALT_POPUP;
- }
-
- // Call with false to disable popup animation, if any.
- void EnablePopupAnimation( bool enable = true )
- {
- if ( enable )
- m_iFlags &= ~wxCC_IFLAG_DISABLE_POPUP_ANIM;
- else
- m_iFlags |= wxCC_IFLAG_DISABLE_POPUP_ANIM;
- }
-
- //
- // Utilies needed by the popups or native implementations
- //
-
- // Returns true if given key combination should toggle the popup.
- // NB: This is a separate from other keyboard handling because:
- // 1) Replaceability.
- // 2) Centralized code (otherwise it'd be split up between
- // wxComboCtrl key handler and wxVListBoxComboPopup's
- // key handler).
- virtual bool IsKeyPopupToggle(const wxKeyEvent& event) const = 0;
-
- // Prepare background of combo control or an item in a dropdown list
- // in a way typical on platform. This includes painting the focus/disabled
- // background and setting the clipping region.
- // Unless you plan to paint your own focus indicator, you should always call this
- // in your wxComboPopup::PaintComboControl implementation.
- // In addition, it sets pen and text colour to what looks good and proper
- // against the background.
- // flags: wxRendererNative flags: wxCONTROL_ISSUBMENU: is drawing a list item instead of combo control
- // wxCONTROL_SELECTED: list item is selected
- // wxCONTROL_DISABLED: control/item is disabled
- virtual void PrepareBackground( wxDC& dc, const wxRect& rect, int flags ) const;
-
- // Returns true if focus indicator should be drawn in the control.
- bool ShouldDrawFocus() const
- {
- const wxWindow* curFocus = FindFocus();
- return ( !IsPopupShown() &&
- (curFocus == this || (m_btn && curFocus == m_btn)) &&
- (m_windowStyle & wxCB_READONLY) );
- }
-
- // These methods return references to appropriate dropbutton bitmaps
- const wxBitmap& GetBitmapNormal() const { return m_bmpNormal; }
- const wxBitmap& GetBitmapPressed() const { return m_bmpPressed; }
- const wxBitmap& GetBitmapHover() const { return m_bmpHover; }
- const wxBitmap& GetBitmapDisabled() const { return m_bmpDisabled; }
-
- // Return internal flags
- wxUint32 GetInternalFlags() const { return m_iFlags; }
-
- // Return true if Create has finished
- bool IsCreated() const { return m_iFlags & wxCC_IFLAG_CREATED ? true : false; }
-
- // common code to be called on popup hide/dismiss
- void OnPopupDismiss();
-
- // PopupShown states
- enum
- {
- Hidden = 0,
- //Closing = 1,
- Animating = 2,
- Visible = 3
- };
-
- bool IsPopupWindowState( int state ) const { return (state == m_popupWinState) ? true : false; }
-
- wxByte GetPopupWindowState() const { return m_popupWinState; }
-
- // Set value returned by GetMainWindowOfCompositeControl
- void SetCtrlMainWnd( wxWindow* wnd ) { m_mainCtrlWnd = wnd; }
-
-protected:
-
- //
- // Override these for customization purposes
- //
-
- // called from wxSizeEvent handler
- virtual void OnResize() = 0;
-
- // Return native text identation (for pure text, not textctrl)
- virtual wxCoord GetNativeTextIndent() const;
-
- // Called in syscolourchanged handler and base create
- virtual void OnThemeChange();
-
- // Creates wxTextCtrl.
- // extraStyle: Extra style parameters
- void CreateTextCtrl( int extraStyle, const wxValidator& validator );
-
- // Installs standard input handler to combo (and optionally to the textctrl)
- void InstallInputHandlers();
-
- // flags for DrawButton()
- enum
- {
- Draw_PaintBg = 1
- };
-
- // Draws dropbutton. Using wxRenderer or bitmaps, as appropriate.
- void DrawButton( wxDC& dc, const wxRect& rect, int flags = Draw_PaintBg );
-
- // Call if cursor is on button area or mouse is captured for the button.
- //bool HandleButtonMouseEvent( wxMouseEvent& event, bool isInside );
- bool HandleButtonMouseEvent( wxMouseEvent& event, int flags );
-
- // returns true if event was consumed or filtered (event type is also set to 0 in this case)
- bool PreprocessMouseEvent( wxMouseEvent& event, int flags );
-
- //
- // This will handle left_down and left_dclick events outside button in a Windows-like manner.
- // If you need alternate behaviour, it is recommended you manipulate and filter events to it
- // instead of building your own handling routine (for reference, on wxEVT_LEFT_DOWN it will
- // toggle popup and on wxEVT_LEFT_DCLICK it will do the same or run the popup's dclick method,
- // if defined - you should pass events of other types of it for common processing).
- void HandleNormalMouseEvent( wxMouseEvent& event );
-
- // Creates popup window, calls interface->Create(), etc
- void CreatePopup();
-
- // Destroy popup window and all related constructs
- void DestroyPopup();
-
- // override the base class virtuals involved in geometry calculations
- virtual wxSize DoGetBestSize() const;
-
- // NULL popup can be used to indicate default in a derived class
- virtual void DoSetPopupControl(wxComboPopup* popup);
-
- // ensures there is atleast the default popup
- void EnsurePopupControl();
-
- // Recalculates button and textctrl areas. Called when size or button setup change.
- // btnWidth: default/calculated width of the dropbutton. 0 means unchanged,
- // just recalculate.
- void CalculateAreas( int btnWidth = 0 );
-
- // Standard textctrl positioning routine. Just give it platform-dependant
- // textctrl coordinate adjustment.
- void PositionTextCtrl( int textCtrlXAdjust, int textCtrlYAdjust );
-
- // event handlers
- void OnSizeEvent( wxSizeEvent& event );
- void OnFocusEvent(wxFocusEvent& event);
- void OnIdleEvent(wxIdleEvent& event);
- void OnTextCtrlEvent(wxCommandEvent& event);
- void OnSysColourChanged(wxSysColourChangedEvent& event);
- void OnKeyEvent(wxKeyEvent& event);
-
- // Set customization flags (directs how wxComboCtrlBase helpers behave)
- void Customize( wxUint32 flags ) { m_iFlags |= flags; }
-
- // Dispatches size event and refreshes
- void RecalcAndRefresh();
-
- // Flags for DoShowPopup and AnimateShow
- enum
- {
- ShowBelow = 0x0000, // Showing popup below the control
- ShowAbove = 0x0001, // Showing popup above the control
- CanDeferShow = 0x0002 // Can only return true from AnimateShow if this is set
- };
-
- // Shows and positions the popup.
- virtual void DoShowPopup( const wxRect& rect, int flags );
-
- // Implement in derived class to create a drop-down animation.
- // Return true if finished immediately. Otherwise popup is only
- // shown when the derived class call DoShowPopup.
- // Flags are same as for DoShowPopup.
- virtual bool AnimateShow( const wxRect& rect, int flags );
-
-#if wxUSE_TOOLTIPS
- virtual void DoSetToolTip( wxToolTip *tip );
-#endif
-
- virtual wxWindow *GetMainWindowOfCompositeControl()
- { return m_mainCtrlWnd; }
-
- // This is used when m_text is hidden (readonly).
- wxString m_valueString;
-
- // the text control and button we show all the time
- wxTextCtrl* m_text;
- wxWindow* m_btn;
-
- // wxPopupWindow or similar containing the window managed by the interface.
- wxWindow* m_winPopup;
-
- // the popup control/panel
- wxWindow* m_popup;
-
- // popup interface
- wxComboPopup* m_popupInterface;
-
- // this is input etc. handler for the text control
- wxEvtHandler* m_textEvtHandler;
-
- // this is for the top level window
- wxEvtHandler* m_toplevEvtHandler;
-
- // this is for the control in popup
- wxEvtHandler* m_popupExtraHandler;
-
- // this is for the popup window
- wxEvtHandler* m_popupWinEvtHandler;
-
- // main (ie. topmost) window of a composite control (default = this)
- wxWindow* m_mainCtrlWnd;
-
- // used to prevent immediate re-popupping incase closed popup
- // by clicking on the combo control (needed because of inconsistent
- // transient implementation across platforms).
- wxLongLong m_timeCanAcceptClick;
-
- // how much popup should expand to the left/right of the control
- wxCoord m_extLeft;
- wxCoord m_extRight;
-
- // minimum popup width
- wxCoord m_widthMinPopup;
-
- // preferred popup height
- wxCoord m_heightPopup;
-
- // how much of writable combo is custom-paint by callback?
- // also used to indicate area that is not covered by "blue"
- // selection indicator.
- wxCoord m_widthCustomPaint;
-
- // absolute text indentation, in pixels
- wxCoord m_absIndent;
-
- // side on which the popup is aligned
- int m_anchorSide;
-
- // Width of the "fake" border
- wxCoord m_widthCustomBorder;
-
- // The button and textctrl click/paint areas
- wxRect m_tcArea;
- wxRect m_btnArea;
-
- // current button state (uses renderer flags)
- int m_btnState;
-
- // button position
- int m_btnWid;
- int m_btnHei;
- int m_btnSide;
- int m_btnSpacingX;
-
- // last default button width
- int m_btnWidDefault;
-
- // custom dropbutton bitmaps
- wxBitmap m_bmpNormal;
- wxBitmap m_bmpPressed;
- wxBitmap m_bmpHover;
- wxBitmap m_bmpDisabled;
-
- // area used by the button
- wxSize m_btnSize;
-
- // platform-dependant customization and other flags
- wxUint32 m_iFlags;
-
- // draw blank button background under bitmap?
- bool m_blankButtonBg;
-
- // is the popup window currenty shown?
- wxByte m_popupWinState;
-
- // should the focus be reset to the textctrl in idle time?
- bool m_resetFocus;
-
-private:
- void Init();
-
- wxByte m_ignoreEvtText; // Number of next EVT_TEXTs to ignore
-
- // Is popup window wxPopupTransientWindow, wxPopupWindow or wxDialog?
- wxByte m_popupWinType;
-
- DECLARE_EVENT_TABLE()
-
- DECLARE_ABSTRACT_CLASS(wxComboCtrlBase)
-};
-
-
-// ----------------------------------------------------------------------------
-// wxComboPopup is the interface which must be implemented by a control to be
-// used as a popup by wxComboCtrl
-// ----------------------------------------------------------------------------
-
-
-// wxComboPopup internal flags
-enum
-{
- wxCP_IFLAG_CREATED = 0x0001 // Set by wxComboCtrlBase after Create is called
-};
-
-
-class WXDLLEXPORT wxComboPopup
-{
- friend class wxComboCtrlBase;
-public:
- wxComboPopup()
- {
- m_combo = (wxComboCtrlBase*) NULL;
- m_iFlags = 0;
- }
-
- // This is called immediately after construction finishes. m_combo member
- // variable has been initialized before the call.
- // NOTE: It is not in constructor so the derived class doesn't need to redefine
- // a default constructor of its own.
- virtual void Init() { }
-
- virtual ~wxComboPopup();
-
- // Create the popup child control.
- // Return true for success.
- virtual bool Create(wxWindow* parent) = 0;
-
- // We must have an associated control which is subclassed by the combobox.
- virtual wxWindow *GetControl() = 0;
-
- // Called immediately after the popup is shown
- virtual void OnPopup();
-
- // Called when popup is dismissed
- virtual void OnDismiss();
-
- // Called just prior to displaying popup.
- // Default implementation does nothing.
- virtual void SetStringValue( const wxString& value );
-
- // Gets displayed string representation of the value.
- virtual wxString GetStringValue() const = 0;
-
- // This is called to custom paint in the combo control itself (ie. not the popup).
- // Default implementation draws value as string.
- virtual void PaintComboControl( wxDC& dc, const wxRect& rect );
-
- // Receives key events from the parent wxComboCtrl.
- // Events not handled should be skipped, as usual.
- virtual void OnComboKeyEvent( wxKeyEvent& event );
-
- // Implement if you need to support special action when user
- // double-clicks on the parent wxComboCtrl.
- virtual void OnComboDoubleClick();
-
- // Return final size of popup. Called on every popup, just prior to OnShow.
- // minWidth = preferred minimum width for window
- // prefHeight = preferred height. Only applies if > 0,
- // maxHeight = max height for window, as limited by screen size
- // and should only be rounded down, if necessary.
- virtual wxSize GetAdjustedSize( int minWidth, int prefHeight, int maxHeight );
-
- // Return true if you want delay call to Create until the popup is shown
- // for the first time. It is more efficient, but note that it is often
- // more convenient to have the control created immediately.
- // Default returns false.
- virtual bool LazyCreate();
-
- //
- // Utilies
- //
-
- // Hides the popup
- void Dismiss();
-
- // Returns true if Create has been called.
- bool IsCreated() const
- {
- return (m_iFlags & wxCP_IFLAG_CREATED) ? true : false;
- }
-
- // Default PaintComboControl behaviour
- static void DefaultPaintComboControl( wxComboCtrlBase* combo,
- wxDC& dc,
- const wxRect& rect );
-
-protected:
- wxComboCtrlBase* m_combo;
- wxUint32 m_iFlags;
-
-private:
- // Called in wxComboCtrlBase::SetPopupControl
- void InitBase(wxComboCtrlBase *combo)
- {
- m_combo = combo;
- }
-};
-
-
-// ----------------------------------------------------------------------------
-// include the platform-dependent header defining the real class
-// ----------------------------------------------------------------------------
-
-#if defined(__WXUNIVERSAL__)
- // No native universal (but it must still be first in the list)
-#elif defined(__WXMSW__)
- #include "wx/msw/combo.h"
-#endif
-
-// Any ports may need generic as an alternative
-#include "wx/generic/combo.h"
-
-#endif // wxUSE_COMBOCTRL
-
-#endif
- // _WX_COMBOCONTROL_H_BASE_
diff --git a/Externals/wxWidgets/include/wx/combobox.h b/Externals/wxWidgets/include/wx/combobox.h
deleted file mode 100644
index 1b31705675..0000000000
--- a/Externals/wxWidgets/include/wx/combobox.h
+++ /dev/null
@@ -1,97 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Name: wx/combobox.h
-// Purpose: wxComboBox declaration
-// Author: Vadim Zeitlin
-// Modified by:
-// Created: 24.12.00
-// RCS-ID: $Id: combobox.h 42727 2006-10-30 16:04:27Z VZ $
-// Copyright: (c) 1996-2000 wxWidgets team
-// Licence: wxWindows licence
-///////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_COMBOBOX_H_BASE_
-#define _WX_COMBOBOX_H_BASE_
-
-#include "wx/defs.h"
-
-#if wxUSE_COMBOBOX
-
-extern WXDLLEXPORT_DATA(const wxChar) wxComboBoxNameStr[];
-
-// ----------------------------------------------------------------------------
-// wxComboBoxBase: this interface defines the methods wxComboBox must implement
-// ----------------------------------------------------------------------------
-
-#include "wx/textctrl.h"
-#include "wx/ctrlsub.h"
-
-class WXDLLEXPORT wxComboBoxBase : public wxItemContainer
-{
-public:
- // wxTextCtrl-like methods wxComboBox must implement
- virtual wxString GetValue() const = 0;
- virtual void SetValue(const wxString& value) = 0;
-
- virtual void Copy() = 0;
- virtual void Cut() = 0;
- virtual void Paste() = 0;
- virtual void SetInsertionPoint(long pos) = 0;
- virtual long GetInsertionPoint() const = 0;
- virtual wxTextPos GetLastPosition() const = 0;
- virtual void Replace(long from, long to, const wxString& value) = 0;
- virtual void SetSelection(long from, long to) = 0;
- virtual void SetEditable(bool editable) = 0;
-
- virtual void SetInsertionPointEnd()
- { SetInsertionPoint(GetLastPosition()); }
- virtual void Remove(long from, long to)
- { Replace(from, to, wxEmptyString); }
-
- virtual bool IsEditable() const = 0;
-
- virtual void Undo() = 0;
- virtual void Redo() = 0;
- virtual void SelectAll() = 0;
-
- virtual bool CanCopy() const = 0;
- virtual bool CanCut() const = 0;
- virtual bool CanPaste() const = 0;
- virtual bool CanUndo() const = 0;
- virtual bool CanRedo() const = 0;
-
- // may return value different from GetSelection() when the combobox
- // dropdown is shown and the user selected, but not yet accepted, a value
- // different from the old one in it
- virtual int GetCurrentSelection() const { return GetSelection(); }
-
- // redeclare inherited SetSelection() overload here as well to avoid
- // virtual function hiding
- virtual void SetSelection(int n) = 0;
-};
-
-// ----------------------------------------------------------------------------
-// include the platform-dependent header defining the real class
-// ----------------------------------------------------------------------------
-
-#if defined(__WXUNIVERSAL__)
- #include "wx/univ/combobox.h"
-#elif defined(__WXMSW__)
- #include "wx/msw/combobox.h"
-#elif defined(__WXMOTIF__)
- #include "wx/motif/combobox.h"
-#elif defined(__WXGTK20__)
- #include "wx/gtk/combobox.h"
-#elif defined(__WXGTK__)
- #include "wx/gtk1/combobox.h"
-#elif defined(__WXMAC__)
- #include "wx/mac/combobox.h"
-#elif defined(__WXCOCOA__)
- #include "wx/cocoa/combobox.h"
-#elif defined(__WXPM__)
- #include "wx/os2/combobox.h"
-#endif
-
-#endif // wxUSE_COMBOBOX
-
-#endif
- // _WX_COMBOBOX_H_BASE_
diff --git a/Externals/wxWidgets/include/wx/confbase.h b/Externals/wxWidgets/include/wx/confbase.h
deleted file mode 100644
index 9e0cf54b51..0000000000
--- a/Externals/wxWidgets/include/wx/confbase.h
+++ /dev/null
@@ -1,359 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Name: confbase.h
-// Purpose: declaration of the base class of all config implementations
-// (see also: fileconf.h and msw/regconf.h and iniconf.h)
-// Author: Karsten Ballueder & Vadim Zeitlin
-// Modified by:
-// Created: 07.04.98 (adapted from appconf.h)
-// RCS-ID: $Id: confbase.h 50711 2007-12-15 02:57:58Z VZ $
-// Copyright: (c) 1997 Karsten Ballueder Ballueder@usa.net
-// Vadim Zeitlin
-// Licence: wxWindows licence
-///////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_CONFBASE_H_
-#define _WX_CONFBASE_H_
-
-#include "wx/defs.h"
-#include "wx/string.h"
-
-class WXDLLIMPEXP_FWD_BASE wxArrayString;
-
-// ----------------------------------------------------------------------------
-// constants
-// ----------------------------------------------------------------------------
-
-/// shall we be case sensitive in parsing variable names?
-#ifndef wxCONFIG_CASE_SENSITIVE
- #define wxCONFIG_CASE_SENSITIVE 0
-#endif
-
-/// separates group and entry names (probably shouldn't be changed)
-#ifndef wxCONFIG_PATH_SEPARATOR
- #define wxCONFIG_PATH_SEPARATOR _T('/')
-#endif
-
-/// introduces immutable entries
-// (i.e. the ones which can't be changed from the local config file)
-#ifndef wxCONFIG_IMMUTABLE_PREFIX
- #define wxCONFIG_IMMUTABLE_PREFIX _T('!')
-#endif
-
-#if wxUSE_CONFIG
-
-#include "wx/string.h"
-
-/// should we use registry instead of configuration files under Windows?
-// (i.e. whether wxConfigBase::Create() will create a wxFileConfig (if it's
-// false) or wxRegConfig (if it's true and we're under Win32))
-#ifndef wxUSE_CONFIG_NATIVE
- #define wxUSE_CONFIG_NATIVE 1
-#endif
-
-// Style flags for constructor style parameter
-enum
-{
- wxCONFIG_USE_LOCAL_FILE = 1,
- wxCONFIG_USE_GLOBAL_FILE = 2,
- wxCONFIG_USE_RELATIVE_PATH = 4,
- wxCONFIG_USE_NO_ESCAPE_CHARACTERS = 8,
- wxCONFIG_USE_SUBDIR = 16
-};
-
-// ----------------------------------------------------------------------------
-// abstract base class wxConfigBase which defines the interface for derived
-// classes
-//
-// wxConfig organizes the items in a tree-like structure (modeled after the
-// Unix/Dos filesystem). There are groups (directories) and keys (files).
-// There is always one current group given by the current path.
-//
-// Keys are pairs "key_name = value" where value may be of string or integer
-// (long) type (TODO doubles and other types such as wxDate coming soon).
-// ----------------------------------------------------------------------------
-
-class WXDLLIMPEXP_BASE wxConfigBase
-{
-public:
- // constants
- // the type of an entry
- enum EntryType
- {
- Type_Unknown,
- Type_String,
- Type_Boolean,
- Type_Integer, // use Read(long *)
- Type_Float // use Read(double *)
- };
-
- // static functions
- // sets the config object, returns the previous pointer
- static wxConfigBase *Set(wxConfigBase *pConfig);
- // get the config object, creates it on demand unless DontCreateOnDemand
- // was called
- static wxConfigBase *Get(bool createOnDemand = true)
- { if ( createOnDemand && (!ms_pConfig) ) Create(); return ms_pConfig; }
- // create a new config object: this function will create the "best"
- // implementation of wxConfig available for the current platform, see
- // comments near definition wxUSE_CONFIG_NATIVE for details. It returns
- // the created object and also sets it as ms_pConfig.
- static wxConfigBase *Create();
- // should Get() try to create a new log object if the current one is NULL?
- static void DontCreateOnDemand() { ms_bAutoCreate = false; }
-
- // ctor & virtual dtor
- // ctor (can be used as default ctor too)
- //
- // Not all args will always be used by derived classes, but including
- // them all in each class ensures compatibility. If appName is empty,
- // uses wxApp name
- wxConfigBase(const wxString& appName = wxEmptyString,
- const wxString& vendorName = wxEmptyString,
- const wxString& localFilename = wxEmptyString,
- const wxString& globalFilename = wxEmptyString,
- long style = 0);
-
- // empty but ensures that dtor of all derived classes is virtual
- virtual ~wxConfigBase();
-
- // path management
- // set current path: if the first character is '/', it's the absolute path,
- // otherwise it's a relative path. '..' is supported. If the strPath
- // doesn't exist it is created.
- virtual void SetPath(const wxString& strPath) = 0;
- // retrieve the current path (always as absolute path)
- virtual const wxString& GetPath() const = 0;
-
- // enumeration: all functions here return false when there are no more items.
- // you must pass the same lIndex to GetNext and GetFirst (don't modify it)
- // enumerate subgroups
- virtual bool GetFirstGroup(wxString& str, long& lIndex) const = 0;
- virtual bool GetNextGroup (wxString& str, long& lIndex) const = 0;
- // enumerate entries
- virtual bool GetFirstEntry(wxString& str, long& lIndex) const = 0;
- virtual bool GetNextEntry (wxString& str, long& lIndex) const = 0;
- // get number of entries/subgroups in the current group, with or without
- // it's subgroups
- virtual size_t GetNumberOfEntries(bool bRecursive = false) const = 0;
- virtual size_t GetNumberOfGroups(bool bRecursive = false) const = 0;
-
- // tests of existence
- // returns true if the group by this name exists
- virtual bool HasGroup(const wxString& strName) const = 0;
- // same as above, but for an entry
- virtual bool HasEntry(const wxString& strName) const = 0;
- // returns true if either a group or an entry with a given name exist
- bool Exists(const wxString& strName) const
- { return HasGroup(strName) || HasEntry(strName); }
-
- // get the entry type
- virtual EntryType GetEntryType(const wxString& name) const
- {
- // by default all entries are strings
- return HasEntry(name) ? Type_String : Type_Unknown;
- }
-
- // key access: returns true if value was really read, false if default used
- // (and if the key is not found the default value is returned.)
-
- // read a string from the key
- bool Read(const wxString& key, wxString *pStr) const;
- bool Read(const wxString& key, wxString *pStr, const wxString& defVal) const;
-
- // read a number (long)
- bool Read(const wxString& key, long *pl) const;
- bool Read(const wxString& key, long *pl, long defVal) const;
-
- // read an int
- bool Read(const wxString& key, int *pi) const;
- bool Read(const wxString& key, int *pi, int defVal) const;
-
- // read a double
- bool Read(const wxString& key, double* val) const;
- bool Read(const wxString& key, double* val, double defVal) const;
-
- // read a bool
- bool Read(const wxString& key, bool* val) const;
- bool Read(const wxString& key, bool* val, bool defVal) const;
-
- // convenience functions returning directly the value (we don't have them for
- // int/double/bool as there would be ambiguities with the long one then)
- wxString Read(const wxString& key,
- const wxString& defVal = wxEmptyString) const
- { wxString s; (void)Read(key, &s, defVal); return s; }
-
- long Read(const wxString& key, long defVal) const
- { long l; (void)Read(key, &l, defVal); return l; }
-
- // write the value (return true on success)
- bool Write(const wxString& key, const wxString& value)
- { return DoWriteString(key, value); }
-
- bool Write(const wxString& key, long value)
- { return DoWriteLong(key, value); }
-
- bool Write(const wxString& key, int value)
- { return DoWriteInt(key, value); }
-
- bool Write(const wxString& key, double value)
- { return DoWriteDouble(key, value); }
-
- bool Write(const wxString& key, bool value)
- { return DoWriteBool(key, value); }
-
- // we have to provide a separate version for C strings as otherwise they
- // would be converted to bool and not to wxString as expected!
- bool Write(const wxString& key, const wxChar *value)
- { return Write(key, wxString(value)); }
-
- // permanently writes all changes
- virtual bool Flush(bool bCurrentOnly = false) = 0;
-
- // renaming, all functions return false on failure (probably because the new
- // name is already taken by an existing entry)
- // rename an entry
- virtual bool RenameEntry(const wxString& oldName,
- const wxString& newName) = 0;
- // rename a group
- virtual bool RenameGroup(const wxString& oldName,
- const wxString& newName) = 0;
-
- // delete entries/groups
- // deletes the specified entry and the group it belongs to if
- // it was the last key in it and the second parameter is true
- virtual bool DeleteEntry(const wxString& key,
- bool bDeleteGroupIfEmpty = true) = 0;
- // delete the group (with all subgroups)
- virtual bool DeleteGroup(const wxString& key) = 0;
- // delete the whole underlying object (disk file, registry key, ...)
- // primarily for use by uninstallation routine.
- virtual bool DeleteAll() = 0;
-
- // options
- // we can automatically expand environment variables in the config entries
- // (this option is on by default, you can turn it on/off at any time)
- bool IsExpandingEnvVars() const { return m_bExpandEnvVars; }
- void SetExpandEnvVars(bool bDoIt = true) { m_bExpandEnvVars = bDoIt; }
- // recording of default values
- void SetRecordDefaults(bool bDoIt = true) { m_bRecordDefaults = bDoIt; }
- bool IsRecordingDefaults() const { return m_bRecordDefaults; }
- // does expansion only if needed
- wxString ExpandEnvVars(const wxString& str) const;
-
- // misc accessors
- wxString GetAppName() const { return m_appName; }
- wxString GetVendorName() const { return m_vendorName; }
-
- // Used wxIniConfig to set members in constructor
- void SetAppName(const wxString& appName) { m_appName = appName; }
- void SetVendorName(const wxString& vendorName) { m_vendorName = vendorName; }
-
- void SetStyle(long style) { m_style = style; }
- long GetStyle() const { return m_style; }
-
-protected:
- static bool IsImmutable(const wxString& key)
- { return !key.IsEmpty() && key[0] == wxCONFIG_IMMUTABLE_PREFIX; }
-
- // return the path without trailing separator, if any: this should be called
- // to sanitize paths referring to the group names before passing them to
- // wxConfigPathChanger as "/foo/bar/" should be the same as "/foo/bar" and it
- // isn't interpreted in the same way by it (and this can't be changed there
- // as it's not the same for the entries names)
- static wxString RemoveTrailingSeparator(const wxString& key);
-
- // do read/write the values of different types
- virtual bool DoReadString(const wxString& key, wxString *pStr) const = 0;
- virtual bool DoReadLong(const wxString& key, long *pl) const = 0;
- virtual bool DoReadInt(const wxString& key, int *pi) const;
- virtual bool DoReadDouble(const wxString& key, double* val) const;
- virtual bool DoReadBool(const wxString& key, bool* val) const;
-
- virtual bool DoWriteString(const wxString& key, const wxString& value) = 0;
- virtual bool DoWriteLong(const wxString& key, long value) = 0;
- virtual bool DoWriteInt(const wxString& key, int value);
- virtual bool DoWriteDouble(const wxString& key, double value);
- virtual bool DoWriteBool(const wxString& key, bool value);
-
-private:
- // are we doing automatic environment variable expansion?
- bool m_bExpandEnvVars;
- // do we record default values?
- bool m_bRecordDefaults;
-
- // static variables
- static wxConfigBase *ms_pConfig;
- static bool ms_bAutoCreate;
-
- // Application name and organisation name
- wxString m_appName;
- wxString m_vendorName;
-
- // Style flag
- long m_style;
-};
-
-// a handy little class which changes current path to the path of given entry
-// and restores it in dtor: so if you declare a local variable of this type,
-// you work in the entry directory and the path is automatically restored
-// when the function returns
-// Taken out of wxConfig since not all compilers can cope with nested classes.
-class WXDLLIMPEXP_BASE wxConfigPathChanger
-{
-public:
- // ctor/dtor do path changing/restoring of the path
- wxConfigPathChanger(const wxConfigBase *pContainer, const wxString& strEntry);
- ~wxConfigPathChanger();
-
- // get the key name
- const wxString& Name() const { return m_strName; }
-
- // this method must be called if the original path (i.e. the current path at
- // the moment of creation of this object) could have been deleted to prevent
- // us from restoring the not existing (any more) path
- //
- // if the original path doesn't exist any more, the path will be restored to
- // the deepest still existing component of the old path
- void UpdateIfDeleted();
-
-private:
- wxConfigBase *m_pContainer; // object we live in
- wxString m_strName, // name of entry (i.e. name only)
- m_strOldPath; // saved path
- bool m_bChanged; // was the path changed?
-
- DECLARE_NO_COPY_CLASS(wxConfigPathChanger)
-};
-
-
-// ----------------------------------------------------------------------------
-// the native wxConfigBase implementation
-// ----------------------------------------------------------------------------
-
-// under Windows we prefer to use the native implementation
-// wxIniConfig isn't native anywhere after droping win16 in wxWidgets 2.6
-#if defined(__WXMSW__) && wxUSE_CONFIG_NATIVE
- #define wxConfig wxRegConfig
-#else // either we're under Unix or wish to use files even under Windows
- #define wxConfig wxFileConfig
-#endif
-
-#endif // wxUSE_CONFIG
-
-/*
- Replace environment variables ($SOMETHING) with their values. The format is
- $VARNAME or ${VARNAME} where VARNAME contains alphanumeric characters and
- '_' only. '$' must be escaped ('\$') in order to be taken literally.
-*/
-
-WXDLLIMPEXP_BASE wxString wxExpandEnvVars(const wxString &sz);
-
-/*
- Split path into parts removing '..' in progress
- */
-WXDLLIMPEXP_BASE void wxSplitPath(wxArrayString& aParts, const wxChar *sz);
-
-
-#endif
- // _WX_CONFIG_H_
-
diff --git a/Externals/wxWidgets/include/wx/config.h b/Externals/wxWidgets/include/wx/config.h
deleted file mode 100644
index 2ef3efcab3..0000000000
--- a/Externals/wxWidgets/include/wx/config.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-// Name: config.h
-// Purpose: wxConfig base header
-// Author: Julian Smart
-// Modified by:
-// Created:
-// Copyright: (c) Julian Smart
-// RCS-ID: $Id: config.h 33948 2005-05-04 18:57:50Z JS $
-// Licence: wxWindows licence
-/////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_CONFIG_H_BASE_
-#define _WX_CONFIG_H_BASE_
-
-#include "wx/defs.h"
-#include "wx/confbase.h"
-
-#if defined(__WXMSW__) && wxUSE_CONFIG_NATIVE
-# ifdef __WIN32__
-# include "wx/msw/regconf.h"
-# else
-# include "wx/msw/iniconf.h"
-# endif
-#elif defined(__WXPALMOS__) && wxUSE_CONFIG_NATIVE
-# include "wx/palmos/prefconf.h"
-#else
-# include "wx/fileconf.h"
-#endif
-
-#endif
- // _WX_CONFIG_H_BASE_
diff --git a/Externals/wxWidgets/include/wx/containr.h b/Externals/wxWidgets/include/wx/containr.h
deleted file mode 100644
index 79eb4f4b8e..0000000000
--- a/Externals/wxWidgets/include/wx/containr.h
+++ /dev/null
@@ -1,142 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Name: wx/containr.h
-// Purpose: wxControlContainer class declration: a "mix-in" class which
-// implements the TAB navigation between the controls
-// Author: Vadim Zeitlin
-// Modified by:
-// Created: 06.08.01
-// RCS-ID: $Id: containr.h 50863 2007-12-20 18:32:55Z VS $
-// Copyright: (c) 2001 Vadim Zeitlin
-// Licence: wxWindows licence
-///////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_CONTAINR_H_
-#define _WX_CONTAINR_H_
-
-class WXDLLIMPEXP_FWD_CORE wxFocusEvent;
-class WXDLLIMPEXP_FWD_CORE wxNavigationKeyEvent;
-class WXDLLIMPEXP_FWD_CORE wxWindow;
-class WXDLLIMPEXP_FWD_CORE wxWindowBase;
-
-/*
- Implementation note: wxControlContainer is not a real mix-in but rather
- a class meant to be agregated with (and not inherited from). Although
- logically it should be a mix-in, doing it like this has no advantage from
- the point of view of the existing code but does have some problems (we'd
- need to play tricks with event handlers which may be difficult to do
- safely). The price we pay for this simplicity is the ugly macros below.
- */
-
-// ----------------------------------------------------------------------------
-// wxControlContainer
-// ----------------------------------------------------------------------------
-
-class WXDLLEXPORT wxControlContainer
-{
-public:
- // ctors and such
- wxControlContainer(wxWindow *winParent = NULL);
- void SetContainerWindow(wxWindow *winParent) { m_winParent = winParent; }
-
- // the methods to be called from the window event handlers
- void HandleOnNavigationKey(wxNavigationKeyEvent& event);
- void HandleOnFocus(wxFocusEvent& event);
- void HandleOnWindowDestroy(wxWindowBase *child);
-
- // should be called from SetFocus(), returns false if we did nothing with
- // the focus and the default processing should take place
- bool DoSetFocus();
-
- // can our child get the focus?
- bool AcceptsFocus() const;
-
- // called from OnChildFocus() handler, i.e. when one of our (grand)
- // children gets the focus
- void SetLastFocus(wxWindow *win);
-
-protected:
- // set the focus to the child which had it the last time
- bool SetFocusToChild();
-
- // the parent window we manage the children for
- wxWindow *m_winParent;
-
- // the child which had the focus last time this panel was activated
- wxWindow *m_winLastFocused;
-
- // a guard against infinite recursion
- bool m_inSetFocus;
-
- DECLARE_NO_COPY_CLASS(wxControlContainer)
-};
-
-// this function is for wxWidgets internal use only
-extern bool wxSetFocusToChild(wxWindow *win, wxWindow **child);
-
-// ----------------------------------------------------------------------------
-// macros which may be used by the classes wishing to implement TAB navigation
-// among their children
-// ----------------------------------------------------------------------------
-
-// declare the methods to be forwarded
-#define WX_DECLARE_CONTROL_CONTAINER() \
-public: \
- void OnNavigationKey(wxNavigationKeyEvent& event); \
- void OnFocus(wxFocusEvent& event); \
- virtual void OnChildFocus(wxChildFocusEvent& event); \
- virtual void SetFocus(); \
- virtual void SetFocusIgnoringChildren(); \
- virtual void RemoveChild(wxWindowBase *child); \
- virtual bool AcceptsFocus() const; \
-\
-protected: \
- wxControlContainer m_container
-
-// implement the event table entries for wxControlContainer
-#define WX_EVENT_TABLE_CONTROL_CONTAINER(classname) \
- EVT_SET_FOCUS(classname::OnFocus) \
- EVT_CHILD_FOCUS(classname::OnChildFocus) \
- EVT_NAVIGATION_KEY(classname::OnNavigationKey)
-
-// implement the methods forwarding to the wxControlContainer
-#define WX_DELEGATE_TO_CONTROL_CONTAINER(classname, basename) \
-void classname::OnNavigationKey( wxNavigationKeyEvent& event ) \
-{ \
- m_container.HandleOnNavigationKey(event); \
-} \
- \
-void classname::RemoveChild(wxWindowBase *child) \
-{ \
- m_container.HandleOnWindowDestroy(child); \
- \
- basename::RemoveChild(child); \
-} \
- \
-void classname::SetFocus() \
-{ \
- if ( !m_container.DoSetFocus() ) \
- basename::SetFocus(); \
-} \
- \
-void classname::SetFocusIgnoringChildren() \
-{ \
- basename::SetFocus(); \
-} \
- \
-void classname::OnChildFocus(wxChildFocusEvent& event) \
-{ \
- m_container.SetLastFocus(event.GetWindow()); \
- event.Skip(); \
-} \
- \
-void classname::OnFocus(wxFocusEvent& event) \
-{ \
- m_container.HandleOnFocus(event); \
-} \
-bool classname::AcceptsFocus() const \
-{ \
- return m_container.AcceptsFocus(); \
-}
-
-
-#endif // _WX_CONTAINR_H_
diff --git a/Externals/wxWidgets/include/wx/control.h b/Externals/wxWidgets/include/wx/control.h
deleted file mode 100644
index b5208d07d5..0000000000
--- a/Externals/wxWidgets/include/wx/control.h
+++ /dev/null
@@ -1,117 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-// Name: wx/control.h
-// Purpose: wxControl common interface
-// Author: Vadim Zeitlin
-// Modified by:
-// Created: 26.07.99
-// RCS-ID: $Id: control.h 42816 2006-10-31 08:50:17Z RD $
-// Copyright: (c) wxWidgets team
-// Licence: wxWindows licence
-/////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_CONTROL_H_BASE_
-#define _WX_CONTROL_H_BASE_
-
-// ----------------------------------------------------------------------------
-// headers
-// ----------------------------------------------------------------------------
-
-#include "wx/defs.h"
-
-#if wxUSE_CONTROLS
-
-#include "wx/window.h" // base class
-
-extern WXDLLEXPORT_DATA(const wxChar) wxControlNameStr[];
-
-// ----------------------------------------------------------------------------
-// wxControl is the base class for all controls
-// ----------------------------------------------------------------------------
-
-class WXDLLEXPORT wxControlBase : public wxWindow
-{
-public:
- wxControlBase() { }
-
- virtual ~wxControlBase();
-
- // Create() function adds the validator parameter
- bool Create(wxWindow *parent, wxWindowID id,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize,
- long style = 0,
- const wxValidator& validator = wxDefaultValidator,
- const wxString& name = wxControlNameStr);
-
- // get the control alignment (left/right/centre, top/bottom/centre)
- int GetAlignment() const { return m_windowStyle & wxALIGN_MASK; }
-
- // get the string without mnemonic characters ('&')
- static wxString GetLabelText(const wxString& label);
-
- // get just the text of the label, without mnemonic characters ('&')
- wxString GetLabelText() const { return GetLabelText(GetLabel()); }
-
- // controls by default inherit the colours of their parents, if a
- // particular control class doesn't want to do it, it can override
- // ShouldInheritColours() to return false
- virtual bool ShouldInheritColours() const { return true; }
-
-
- // WARNING: this doesn't work for all controls nor all platforms!
- //
- // simulates the event of given type (i.e. wxButton::Command() is just as
- // if the button was clicked)
- virtual void Command(wxCommandEvent &event);
-
- virtual void SetLabel( const wxString &label );
- virtual bool SetFont(const wxFont& font);
-
- // wxControl-specific processing after processing the update event
- virtual void DoUpdateWindowUI(wxUpdateUIEvent& event);
-
-protected:
- // creates the control (calls wxWindowBase::CreateBase inside) and adds it
- // to the list of parents children
- bool CreateControl(wxWindowBase *parent,
- wxWindowID id,
- const wxPoint& pos,
- const wxSize& size,
- long style,
- const wxValidator& validator,
- const wxString& name);
-
- // initialize the common fields of wxCommandEvent
- void InitCommandEvent(wxCommandEvent& event) const;
-
- DECLARE_NO_COPY_CLASS(wxControlBase)
-};
-
-// ----------------------------------------------------------------------------
-// include platform-dependent wxControl declarations
-// ----------------------------------------------------------------------------
-
-#if defined(__WXUNIVERSAL__)
- #include "wx/univ/control.h"
-#elif defined(__WXPALMOS__)
- #include "wx/palmos/control.h"
-#elif defined(__WXMSW__)
- #include "wx/msw/control.h"
-#elif defined(__WXMOTIF__)
- #include "wx/motif/control.h"
-#elif defined(__WXGTK20__)
- #include "wx/gtk/control.h"
-#elif defined(__WXGTK__)
- #include "wx/gtk1/control.h"
-#elif defined(__WXMAC__)
- #include "wx/mac/control.h"
-#elif defined(__WXCOCOA__)
- #include "wx/cocoa/control.h"
-#elif defined(__WXPM__)
- #include "wx/os2/control.h"
-#endif
-
-#endif // wxUSE_CONTROLS
-
-#endif
- // _WX_CONTROL_H_BASE_
diff --git a/Externals/wxWidgets/include/wx/convauto.h b/Externals/wxWidgets/include/wx/convauto.h
deleted file mode 100644
index 8d96afa557..0000000000
--- a/Externals/wxWidgets/include/wx/convauto.h
+++ /dev/null
@@ -1,108 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Name: wx/convauto.h
-// Purpose: wxConvAuto class declaration
-// Author: Vadim Zeitlin
-// Created: 2006-04-03
-// RCS-ID: $Id: convauto.h 45893 2007-05-08 20:05:16Z VZ $
-// Copyright: (c) 2006 Vadim Zeitlin
-// Licence: wxWindows licence
-///////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_CONVAUTO_H_
-#define _WX_CONVAUTO_H_
-
-#include "wx/strconv.h"
-
-#if wxUSE_WCHAR_T
-
-// ----------------------------------------------------------------------------
-// wxConvAuto: uses BOM to automatically detect input encoding
-// ----------------------------------------------------------------------------
-
-class WXDLLIMPEXP_BASE wxConvAuto : public wxMBConv
-{
-public:
- // default ctor, the real conversion will be created on demand
- wxConvAuto() { m_conv = NULL; /* the rest will be initialized later */ }
-
- // copy ctor doesn't initialize anything neither as conversion can only be
- // deduced on first use
- wxConvAuto(const wxConvAuto& WXUNUSED(other)) : wxMBConv() { m_conv = NULL; }
-
- virtual ~wxConvAuto() { if ( m_conv && m_ownsConv ) delete m_conv; }
-
- // override the base class virtual function(s) to use our m_conv
- virtual size_t ToWChar(wchar_t *dst, size_t dstLen,
- const char *src, size_t srcLen = wxNO_LEN) const;
-
- virtual size_t FromWChar(char *dst, size_t dstLen,
- const wchar_t *src, size_t srcLen = wxNO_LEN) const;
-
- virtual size_t GetMBNulLen() const { return m_conv->GetMBNulLen(); }
-
- virtual wxMBConv *Clone() const { return new wxConvAuto(*this); }
-
-private:
- // all currently recognized BOM values
- enum BOMType
- {
- BOM_None,
- BOM_UTF32BE,
- BOM_UTF32LE,
- BOM_UTF16BE,
- BOM_UTF16LE,
- BOM_UTF8
- };
-
- // return the BOM type of this buffer
- static BOMType DetectBOM(const char *src, size_t srcLen);
-
- // initialize m_conv with the conversion to use by default (UTF-8)
- void InitWithDefault()
- {
- m_conv = &wxConvUTF8;
- m_ownsConv = false;
- }
-
- // create the correct conversion object for the given BOM type
- void InitFromBOM(BOMType bomType);
-
- // create the correct conversion object for the BOM present in the
- // beginning of the buffer; adjust the buffer to skip the BOM if found
- void InitFromInput(const char **src, size_t *len);
-
- // adjust src and len to skip over the BOM (identified by m_bomType) at the
- // start of the buffer
- void SkipBOM(const char **src, size_t *len) const;
-
-
- // conversion object which we really use, NULL until the first call to
- // either ToWChar() or FromWChar()
- wxMBConv *m_conv;
-
- // our BOM type
- BOMType m_bomType;
-
- // true if we allocated m_conv ourselves, false if we just use an existing
- // global conversion
- bool m_ownsConv;
-
- // true if we already skipped BOM when converting (and not just calculating
- // the size)
- bool m_consumedBOM;
-
-
- DECLARE_NO_ASSIGN_CLASS(wxConvAuto)
-};
-
-#else // !wxUSE_WCHAR_T
-
-// it doesn't matter how we define it in this case as it's unused anyhow, but
-// do define it to allow the code using wxConvAuto() as default argument (this
-// is done in many places) to compile
-typedef wxMBConv wxConvAuto;
-
-#endif // wxUSE_WCHAR_T/!wxUSE_WCHAR_T
-
-#endif // _WX_CONVAUTO_H_
-
diff --git a/Externals/wxWidgets/include/wx/cpp.h b/Externals/wxWidgets/include/wx/cpp.h
deleted file mode 100644
index 3e23273acd..0000000000
--- a/Externals/wxWidgets/include/wx/cpp.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Name: wx/cpp.h
- * Purpose: Various preprocessor helpers
- * Author: Vadim Zeitlin
- * Created: 2006-09-30
- * RCS-ID: $Id: cpp.h 42993 2006-11-03 21:06:57Z VZ $
- * Copyright: (c) 2006 Vadim Zeitlin
- * Licence: wxWindows licence
- */
-
-/* THIS IS A C FILE, DON'T USE C++ FEATURES (IN PARTICULAR COMMENTS) IN IT */
-
-#ifndef _WX_CPP_H_
-#define _WX_CPP_H_
-
-/* wxCONCAT works like preprocessor ## operator but also works with macros */
-#define wxCONCAT_HELPER(text, line) text ## line
-#define wxCONCAT(text, line) wxCONCAT_HELPER(text, line)
-
-/* wxSTRINGIZE works as the preprocessor # operator but also works with macros */
-#define wxSTRINGIZE_HELPER(x) #x
-#define wxSTRINGIZE(x) wxSTRINGIZE_HELPER(x)
-
-/* a Unicode-friendly version of wxSTRINGIZE_T */
-#define wxSTRINGIZE_T(x) wxAPPLY_T(wxSTRINGIZE(x))
-
-/*
- Helper macros for wxMAKE_UNIQUE_NAME: normally this works by appending the
- current line number to the given identifier to reduce the probability of the
- conflict (it may still happen if this is used in the headers, hence you
- should avoid doing it or provide unique prefixes then) but we have to do it
- differently for VC++
- */
-#if defined(__VISUALC__) && (__VISUALC__ >= 1300)
- /*
- __LINE__ handling is completely broken in VC++ when using "Edit and
- Continue" (/ZI option) and results in preprocessor errors if we use it
- inside the macros. Luckily VC7 has another standard macro which can be
- used like this and is even better than __LINE__ because it is globally
- unique.
- */
-# define wxCONCAT_LINE(text) wxCONCAT(text, __COUNTER__)
-#else /* normal compilers */
-# define wxCONCAT_LINE(text) wxCONCAT(text, __LINE__)
-#endif
-
-/* Create a "unique" name with the given prefix */
-#define wxMAKE_UNIQUE_NAME(text) wxCONCAT_LINE(text)
-
-/*
- This macro can be passed as argument to another macro when you don't have
- anything to pass in fact.
- */
-#define wxEMPTY_PARAMETER_VALUE /* Fake macro parameter value */
-
-#endif // _WX_CPP_H_
-
diff --git a/Externals/wxWidgets/include/wx/cppunit.h b/Externals/wxWidgets/include/wx/cppunit.h
deleted file mode 100644
index c70cfbd805..0000000000
--- a/Externals/wxWidgets/include/wx/cppunit.h
+++ /dev/null
@@ -1,129 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-// Name: wx/cppunit.h
-// Purpose: wrapper header for CppUnit headers
-// Author: Vadim Zeitlin
-// Created: 15.02.04
-// RCS-ID: $Id: cppunit.h 53917 2008-06-01 20:32:26Z VZ $
-// Copyright: (c) 2004 Vadim Zeitlin
-// Licence: wxWindows Licence
-/////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_CPPUNIT_H_
-#define _WX_CPPUNIT_H_
-
-///////////////////////////////////////////////////////////////////////////////
-// using CPPUNIT_TEST() macro results in this warning, disable it as there is
-// no other way to get rid of it and it's not very useful anyhow
-#ifdef __VISUALC__
- // typedef-name 'foo' used as synonym for class-name 'bar'
- #pragma warning(disable:4097)
-
- // unreachable code: we don't care about warnings in CppUnit headers
- #pragma warning(disable:4702)
-
- // 'id': identifier was truncated to 'num' characters in the debug info
- #pragma warning(disable:4786)
-#endif // __VISUALC__
-
-#ifdef __BORLANDC__
- #pragma warn -8022
-#endif
-
-#ifndef CPPUNIT_STD_NEED_ALLOCATOR
- #define CPPUNIT_STD_NEED_ALLOCATOR 0
-#endif
-
-///////////////////////////////////////////////////////////////////////////////
-// Set the default format for the errors, which can be used by an IDE to jump
-// to the error location. This default gets overridden by the cppunit headers
-// for some compilers (e.g. VC++).
-
-#ifndef CPPUNIT_COMPILER_LOCATION_FORMAT
- #define CPPUNIT_COMPILER_LOCATION_FORMAT "%p:%l:"
-#endif
-
-
-///////////////////////////////////////////////////////////////////////////////
-// Include all needed cppunit headers.
-//
-
-#include "wx/beforestd.h"
-#include
-#include
-#include
-#include
-#include
-#include "wx/afterstd.h"
-
-
-///////////////////////////////////////////////////////////////////////////////
-// Set of helpful test macros.
-//
-
-// Base macro for wrapping CPPUNIT_TEST macros and so making them conditional
-// tests, meaning that the test only get registered and thus run when a given
-// runtime condition is true.
-// In case the condition is evaluated as false a skip message is logged
-// (the message will only be shown in verbose mode).
-#define WXTEST_ANY_WITH_CONDITION(suiteName, Condition, testMethod, anyTest) \
- if (Condition) \
- { anyTest; } \
- else \
- wxLogInfo(wxString::Format(_T("skipping: %s.%s\n reason: %s equals false\n"), \
- wxString(suiteName, wxConvUTF8).c_str(), \
- wxString(#testMethod, wxConvUTF8).c_str(), \
- wxString(#Condition, wxConvUTF8).c_str()))
-
-// Conditional CPPUNIT_TEST macro.
-#define WXTEST_WITH_CONDITION(suiteName, Condition, testMethod) \
- WXTEST_ANY_WITH_CONDITION(suiteName, Condition, testMethod, CPPUNIT_TEST(testMethod))
-// Conditional CPPUNIT_TEST_FAIL macro.
-#define WXTEST_FAIL_WITH_CONDITION(suiteName, Condition, testMethod) \
- WXTEST_ANY_WITH_CONDITION(suiteName, Condition, testMethod, CPPUNIT_TEST_FAIL(testMethod))
-
-// Use this macro to compare a wxString with a literal string.
-#define WX_ASSERT_STR_EQUAL(p, s) CPPUNIT_ASSERT_EQUAL(wxString(p), s)
-
-// Use this macro to compare a size_t with a literal integer
-#define WX_ASSERT_SIZET_EQUAL(n, m) CPPUNIT_ASSERT_EQUAL(((size_t)n), m)
-
-// Use this macro to compare the expected time_t value with the result of not
-// necessarily time_t type
-#define WX_ASSERT_TIME_T_EQUAL(t, n) CPPUNIT_ASSERT_EQUAL((t), (time_t)(n))
-
-
-///////////////////////////////////////////////////////////////////////////////
-// stream inserter for wxString
-//
-
-#include "wx/string.h"
-
-inline std::ostream& operator<<(std::ostream& o, const wxString& s)
-{
- return o << s.mb_str();
-}
-
-
-///////////////////////////////////////////////////////////////////////////////
-// Some more compiler warning tweaking and auto linking.
-//
-
-#ifdef __BORLANDC__
- #pragma warn .8022
-#endif
-
-#ifdef _MSC_VER
- #pragma warning(default:4702)
-#endif // _MSC_VER
-
-// for VC++ automatically link in cppunit library
-#ifdef __VISUALC__
- #ifdef NDEBUG
- #pragma comment(lib, "cppunit.lib")
- #else // Debug
- #pragma comment(lib, "cppunitd.lib")
- #endif // Release/Debug
-#endif
-
-#endif // _WX_CPPUNIT_H_
-
diff --git a/Externals/wxWidgets/include/wx/cshelp.h b/Externals/wxWidgets/include/wx/cshelp.h
deleted file mode 100644
index f77ac4f67e..0000000000
--- a/Externals/wxWidgets/include/wx/cshelp.h
+++ /dev/null
@@ -1,244 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-// Name: wx/cshelp.h
-// Purpose: Context-sensitive help support classes
-// Author: Julian Smart, Vadim Zeitlin
-// Modified by:
-// Created: 08/09/2000
-// RCS-ID: $Id: cshelp.h 39675 2006-06-11 21:10:32Z VZ $
-// Copyright: (c) 2000 Julian Smart, Vadim Zeitlin
-// Licence: wxWindows licence
-/////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_CSHELP_H_
-#define _WX_CSHELP_H_
-
-#include "wx/defs.h"
-
-#if wxUSE_HELP
-
-#include "wx/help.h"
-
-#include "wx/hashmap.h"
-#if wxUSE_BMPBUTTON
-#include "wx/bmpbuttn.h"
-#endif
-
-#include "wx/event.h"
-
-// ----------------------------------------------------------------------------
-// classes used to implement context help UI
-// ----------------------------------------------------------------------------
-
-/*
- * wxContextHelp
- * Invokes context-sensitive help. When the user
- * clicks on a window, a wxEVT_HELP event will be sent to that
- * window for the application to display help for.
- */
-
-class WXDLLEXPORT wxContextHelp : public wxObject
-{
-public:
- wxContextHelp(wxWindow* win = NULL, bool beginHelp = true);
- virtual ~wxContextHelp();
-
- bool BeginContextHelp(wxWindow* win);
- bool EndContextHelp();
-
- bool EventLoop();
- bool DispatchEvent(wxWindow* win, const wxPoint& pt);
-
- void SetStatus(bool status) { m_status = status; }
-
-protected:
- bool m_inHelp;
- bool m_status; // true if the user left-clicked
-
-private:
- DECLARE_DYNAMIC_CLASS(wxContextHelp)
-};
-
-#if wxUSE_BMPBUTTON
-/*
- * wxContextHelpButton
- * You can add this to your dialogs (especially on non-Windows platforms)
- * to put the application into context help mode.
- */
-
-class WXDLLEXPORT wxContextHelpButton : public wxBitmapButton
-{
-public:
- wxContextHelpButton(wxWindow* parent,
- wxWindowID id = wxID_CONTEXT_HELP,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize,
- long style = wxBU_AUTODRAW);
-
- void OnContextHelp(wxCommandEvent& event);
-
-private:
- DECLARE_DYNAMIC_CLASS_NO_COPY(wxContextHelpButton)
- DECLARE_EVENT_TABLE()
-};
-
-#endif
-
-// ----------------------------------------------------------------------------
-// classes used to implement context help support
-// ----------------------------------------------------------------------------
-
-// wxHelpProvider is an abstract class used by the program implementing context help to
-// show the help text (or whatever: it may be HTML page or anything else) for
-// the given window.
-//
-// The current help provider must be explicitly set by the application using
-// wxHelpProvider::Set().
-//
-// Special note about ShowHelpAtPoint() and ShowHelp(): we want to be able to
-// override ShowHelpAtPoint() when we need to use different help messages for
-// different parts of the window, but it should also be possible to override
-// just ShowHelp() both for backwards compatibility and just because most
-// often the help does not, in fact, depend on the position and so
-// implementing just ShowHelp() is simpler and more natural, so by default
-// ShowHelpAtPoint() forwards to ShowHelp(). But this means that
-// wxSimpleHelpProvider has to override ShowHelp() and not ShowHelpAtPoint()
-// for backwards compatibility as otherwise the existing code deriving from it
-// and overriding ShowHelp() but calling the base class version wouldn't work
-// any more, which forces us to use a rather ugly hack and pass the extra
-// parameters of ShowHelpAtPoint() to ShowHelp() via member variables.
-class WXDLLEXPORT wxHelpProvider
-{
-public:
- // get/set the current (application-global) help provider (Set() returns
- // the previous one)
- static wxHelpProvider *Set(wxHelpProvider *helpProvider)
- {
- wxHelpProvider *helpProviderOld = ms_helpProvider;
- ms_helpProvider = helpProvider;
- return helpProviderOld;
- }
-
- // unlike some other class, the help provider is not created on demand,
- // this must be explicitly done by the application
- static wxHelpProvider *Get() { return ms_helpProvider; }
-
- // get the help string (whose interpretation is help provider dependent
- // except that empty string always means that no help is associated with
- // the window) for this window
- virtual wxString GetHelp(const wxWindowBase *window) = 0;
-
- // do show help for the given window (uses window->GetHelpAtPoint()
- // internally if applicable), return true if it was done or false
- // if no help available for this window
- virtual bool ShowHelpAtPoint(wxWindowBase *window,
- const wxPoint& pt,
- wxHelpEvent::Origin origin)
- {
- wxCHECK_MSG( window, false, _T("window must not be NULL") );
-
- m_helptextAtPoint = pt;
- m_helptextOrigin = origin;
-
- return ShowHelp(window);
- }
-
- // show help for the given window, see ShowHelpAtPoint() above
- virtual bool ShowHelp(wxWindowBase * WXUNUSED(window)) { return false; }
-
- // associate the text with the given window or id: although all help
- // providers have these functions to allow making wxWindow::SetHelpText()
- // work, not all of them implement them
- virtual void AddHelp(wxWindowBase *window, const wxString& text);
-
- // this version associates the given text with all window with this id
- // (may be used to set the same help string for all [Cancel] buttons in
- // the application, for example)
- virtual void AddHelp(wxWindowID id, const wxString& text);
-
- // removes the association
- virtual void RemoveHelp(wxWindowBase* window);
-
- // virtual dtor for any base class
- virtual ~wxHelpProvider();
-
-protected:
- wxHelpProvider()
- : m_helptextAtPoint(wxDefaultPosition),
- m_helptextOrigin(wxHelpEvent::Origin_Unknown)
- {
- }
-
- // helper method used by ShowHelp(): returns the help string to use by
- // using m_helptextAtPoint/m_helptextOrigin if they're set or just GetHelp
- // otherwise
- wxString GetHelpTextMaybeAtPoint(wxWindowBase *window);
-
-
- // parameters of the last ShowHelpAtPoint() call, used by ShowHelp()
- wxPoint m_helptextAtPoint;
- wxHelpEvent::Origin m_helptextOrigin;
-
-private:
- static wxHelpProvider *ms_helpProvider;
-};
-
-WX_DECLARE_EXPORTED_HASH_MAP( wxUIntPtr, wxString, wxIntegerHash,
- wxIntegerEqual, wxSimpleHelpProviderHashMap );
-
-// wxSimpleHelpProvider is an implementation of wxHelpProvider which supports
-// only plain text help strings and shows the string associated with the
-// control (if any) in a tooltip
-class WXDLLEXPORT wxSimpleHelpProvider : public wxHelpProvider
-{
-public:
- // implement wxHelpProvider methods
- virtual wxString GetHelp(const wxWindowBase *window);
-
- // override ShowHelp() and not ShowHelpAtPoint() as explained above
- virtual bool ShowHelp(wxWindowBase *window);
-
- virtual void AddHelp(wxWindowBase *window, const wxString& text);
- virtual void AddHelp(wxWindowID id, const wxString& text);
- virtual void RemoveHelp(wxWindowBase* window);
-
-protected:
- // we use 2 hashes for storing the help strings associated with windows
- // and the ids
- wxSimpleHelpProviderHashMap m_hashWindows,
- m_hashIds;
-};
-
-// wxHelpControllerHelpProvider is an implementation of wxHelpProvider which supports
-// both context identifiers and plain text help strings. If the help text is an integer,
-// it is passed to wxHelpController::DisplayContextPopup. Otherwise, it shows the string
-// in a tooltip as per wxSimpleHelpProvider.
-class WXDLLEXPORT wxHelpControllerHelpProvider : public wxSimpleHelpProvider
-{
-public:
- // Note that it doesn't own the help controller. The help controller
- // should be deleted separately.
- wxHelpControllerHelpProvider(wxHelpControllerBase* hc = (wxHelpControllerBase*) NULL);
-
- // implement wxHelpProvider methods
-
- // again (see above): this should be ShowHelpAtPoint() but we need to
- // override ShowHelp() to avoid breaking existing code
- virtual bool ShowHelp(wxWindowBase *window);
-
- // Other accessors
- void SetHelpController(wxHelpControllerBase* hc) { m_helpController = hc; }
- wxHelpControllerBase* GetHelpController() const { return m_helpController; }
-
-protected:
- wxHelpControllerBase* m_helpController;
-
- DECLARE_NO_COPY_CLASS(wxHelpControllerHelpProvider)
-};
-
-// Convenience function for turning context id into wxString
-WXDLLEXPORT wxString wxContextId(int id);
-
-#endif // wxUSE_HELP
-
-#endif // _WX_CSHELP_H_
-
diff --git a/Externals/wxWidgets/include/wx/ctrlsub.h b/Externals/wxWidgets/include/wx/ctrlsub.h
deleted file mode 100644
index 6697bb6b32..0000000000
--- a/Externals/wxWidgets/include/wx/ctrlsub.h
+++ /dev/null
@@ -1,210 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-// Name: wx/ctrlsub.h (read: "wxConTRoL with SUBitems")
-// Purpose: wxControlWithItems interface
-// Author: Vadim Zeitlin
-// Modified by:
-// Created: 22.10.99
-// RCS-ID: $Id: ctrlsub.h 42816 2006-10-31 08:50:17Z RD $
-// Copyright: (c) wxWidgets team
-// Licence: wxWindows licence
-/////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_CTRLSUB_H_BASE_
-#define _WX_CTRLSUB_H_BASE_
-
-#include "wx/defs.h"
-
-#if wxUSE_CONTROLS
-
-#include "wx/control.h" // base class
-
-// ----------------------------------------------------------------------------
-// wxItemContainer defines an interface which is implemented by all controls
-// which have string subitems each of which may be selected.
-//
-// It is decomposed in wxItemContainerImmutable which omits all methods
-// adding/removing items and is used by wxRadioBox and wxItemContainer itself.
-//
-// Examples: wxListBox, wxCheckListBox, wxChoice and wxComboBox (which
-// implements an extended interface deriving from this one)
-// ----------------------------------------------------------------------------
-
-class WXDLLEXPORT wxItemContainerImmutable
-{
-public:
- wxItemContainerImmutable() { }
- virtual ~wxItemContainerImmutable();
-
- // accessing strings
- // -----------------
-
- virtual unsigned int GetCount() const = 0;
- bool IsEmpty() const { return GetCount() == 0; }
-
- virtual wxString GetString(unsigned int n) const = 0;
- wxArrayString GetStrings() const;
- virtual void SetString(unsigned int n, const wxString& s) = 0;
-
- // finding string natively is either case sensitive or insensitive
- // but never both so fall back to this base version for not
- // supported search type
- virtual int FindString(const wxString& s, bool bCase = false) const
- {
- unsigned int count = GetCount();
-
- for ( unsigned int i = 0; i < count ; ++i )
- {
- if (GetString(i).IsSameAs( s , bCase ))
- return (int)i;
- }
-
- return wxNOT_FOUND;
- }
-
-
- // selection
- // ---------
-
- virtual void SetSelection(int n) = 0;
- virtual int GetSelection() const = 0;
-
- // set selection to the specified string, return false if not found
- bool SetStringSelection(const wxString& s);
-
- // return the selected string or empty string if none
- wxString GetStringSelection() const;
-
- // this is the same as SetSelection( for single-selection controls but
- // reads better for multi-selection ones
- void Select(int n) { SetSelection(n); }
-
-
-protected:
-
- // check that the index is valid
- inline bool IsValid(unsigned int n) const { return n < GetCount(); }
- inline bool IsValidInsert(unsigned int n) const { return n <= GetCount(); }
-};
-
-class WXDLLEXPORT wxItemContainer : public wxItemContainerImmutable
-{
-public:
- wxItemContainer() { m_clientDataItemsType = wxClientData_None; }
- virtual ~wxItemContainer();
-
- // adding items
- // ------------
-
- int Append(const wxString& item)
- { return DoAppend(item); }
- int Append(const wxString& item, void *clientData)
- { int n = DoAppend(item); SetClientData(n, clientData); return n; }
- int Append(const wxString& item, wxClientData *clientData)
- { int n = DoAppend(item); SetClientObject(n, clientData); return n; }
-
- // only for rtti needs (separate name)
- void AppendString( const wxString& item)
- { Append( item ); }
-
- // append several items at once to the control
- void Append(const wxArrayString& strings);
-
- int Insert(const wxString& item, unsigned int pos)
- { return DoInsert(item, pos); }
- int Insert(const wxString& item, unsigned int pos, void *clientData);
- int Insert(const wxString& item, unsigned int pos, wxClientData *clientData);
-
- // deleting items
- // --------------
-
- virtual void Clear() = 0;
- virtual void Delete(unsigned int n) = 0;
-
- // misc
- // ----
-
- // client data stuff
- void SetClientData(unsigned int n, void* clientData);
- void* GetClientData(unsigned int n) const;
-
- void SetClientObject(unsigned int n, wxClientData* clientData);
- wxClientData* GetClientObject(unsigned int n) const;
-
- bool HasClientObjectData() const
- { return m_clientDataItemsType == wxClientData_Object; }
- bool HasClientUntypedData() const
- { return m_clientDataItemsType == wxClientData_Void; }
-
-protected:
- virtual int DoAppend(const wxString& item) = 0;
- virtual int DoInsert(const wxString& item, unsigned int pos) = 0;
-
- virtual void DoSetItemClientData(unsigned int n, void* clientData) = 0;
- virtual void* DoGetItemClientData(unsigned int n) const = 0;
- virtual void DoSetItemClientObject(unsigned int n, wxClientData* clientData) = 0;
- virtual wxClientData* DoGetItemClientObject(unsigned int n) const = 0;
-
-
- // the type of the client data for the items
- wxClientDataType m_clientDataItemsType;
-};
-
-// this macro must (unfortunately) be used in any class deriving from both
-// wxItemContainer and wxControl because otherwise there is ambiguity when
-// calling GetClientXXX() functions -- the compiler can't choose between the
-// two versions
-#define wxCONTROL_ITEMCONTAINER_CLIENTDATAOBJECT_RECAST \
- void SetClientData(void *data) \
- { wxEvtHandler::SetClientData(data); } \
- void *GetClientData() const \
- { return wxEvtHandler::GetClientData(); } \
- void SetClientObject(wxClientData *data) \
- { wxEvtHandler::SetClientObject(data); } \
- wxClientData *GetClientObject() const \
- { return wxEvtHandler::GetClientObject(); } \
- void SetClientData(unsigned int n, void* clientData) \
- { wxItemContainer::SetClientData(n, clientData); } \
- void* GetClientData(unsigned int n) const \
- { return wxItemContainer::GetClientData(n); } \
- void SetClientObject(unsigned int n, wxClientData* clientData) \
- { wxItemContainer::SetClientObject(n, clientData); } \
- wxClientData* GetClientObject(unsigned int n) const \
- { return wxItemContainer::GetClientObject(n); }
-
-class WXDLLEXPORT wxControlWithItems : public wxControl, public wxItemContainer
-{
-public:
- wxControlWithItems() { }
- virtual ~wxControlWithItems();
-
- // we have to redefine these functions here to avoid ambiguities in classes
- // deriving from us which would arise otherwise because both base classses
- // have the methods with the same names - hopefully, a smart compiler can
- // optimize away these simple inline wrappers so we don't suffer much from
- // this
- wxCONTROL_ITEMCONTAINER_CLIENTDATAOBJECT_RECAST
-
- // usually the controls like list/combo boxes have their own background
- // colour
- virtual bool ShouldInheritColours() const { return false; }
-
-protected:
- // fill in the client object or data field of the event as appropriate
- //
- // calls InitCommandEvent() and, if n != wxNOT_FOUND, also sets the per
- // item client data
- void InitCommandEventWithItems(wxCommandEvent& event, int n);
-
-private:
- DECLARE_ABSTRACT_CLASS(wxControlWithItems)
- DECLARE_NO_COPY_CLASS(wxControlWithItems)
-};
-
-
-// ----------------------------------------------------------------------------
-// inline functions
-// ----------------------------------------------------------------------------
-
-#endif // wxUSE_CONTROLS
-
-#endif // _WX_CTRLSUB_H_BASE_
diff --git a/Externals/wxWidgets/include/wx/cursor.h b/Externals/wxWidgets/include/wx/cursor.h
deleted file mode 100644
index 39b4e21940..0000000000
--- a/Externals/wxWidgets/include/wx/cursor.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-// Name: wx/cursor.h
-// Purpose: wxCursor base header
-// Author: Julian Smart
-// Modified by:
-// Created:
-// Copyright: (c) Julian Smart
-// RCS-ID: $Id: cursor.h 40865 2006-08-27 09:42:42Z VS $
-// Licence: wxWindows Licence
-/////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_CURSOR_H_BASE_
-#define _WX_CURSOR_H_BASE_
-
-#include "wx/defs.h"
-
-#if defined(__WXPALMOS__)
- #include "wx/palmos/cursor.h"
-#elif defined(__WXMSW__)
- #include "wx/msw/cursor.h"
-#elif defined(__WXMOTIF__)
- #include "wx/motif/cursor.h"
-#elif defined(__WXGTK20__)
- #include "wx/gtk/cursor.h"
-#elif defined(__WXGTK__)
- #include "wx/gtk1/cursor.h"
-#elif defined(__WXX11__)
- #include "wx/x11/cursor.h"
-#elif defined(__WXMGL__)
- #include "wx/mgl/cursor.h"
-#elif defined(__WXDFB__)
- #include "wx/dfb/cursor.h"
-#elif defined(__WXMAC__)
- #include "wx/mac/cursor.h"
-#elif defined(__WXCOCOA__)
- #include "wx/cocoa/cursor.h"
-#elif defined(__WXPM__)
- #include "wx/os2/cursor.h"
-#endif
-
-#include "wx/utils.h"
-
-/* This is a small class which can be used by all ports
- to temporarily suspend the busy cursor. Useful in modal
- dialogs.
-
- Actually that is not (any longer) quite true.. currently it is
- only used in wxGTK Dialog::ShowModal() and now uses static
- wxBusyCursor methods that are only implemented for wxGTK so far.
- The BusyCursor handling code should probably be implemented in
- common code somewhere instead of the separate implementations we
- currently have. Also the name BusyCursorSuspender is a little
- misleading since it doesn't actually suspend the BusyCursor, just
- masks one that is already showing.
- If another call to wxBeginBusyCursor is made while this is active
- the Busy Cursor will again be shown. But at least now it doesn't
- interfere with the state of wxIsBusy() -- RL
-
-*/
-class wxBusyCursorSuspender
-{
-public:
- wxBusyCursorSuspender()
- {
- if( wxIsBusy() )
- {
- wxSetCursor( wxBusyCursor::GetStoredCursor() );
- }
- }
- ~wxBusyCursorSuspender()
- {
- if( wxIsBusy() )
- {
- wxSetCursor( wxBusyCursor::GetBusyCursor() );
- }
- }
-};
-#endif
- // _WX_CURSOR_H_BASE_
diff --git a/Externals/wxWidgets/include/wx/dataobj.h b/Externals/wxWidgets/include/wx/dataobj.h
deleted file mode 100644
index 4c290dc340..0000000000
--- a/Externals/wxWidgets/include/wx/dataobj.h
+++ /dev/null
@@ -1,540 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Name: wx/dataobj.h
-// Purpose: common data object classes
-// Author: Vadim Zeitlin, Robert Roebling
-// Modified by:
-// Created: 26.05.99
-// RCS-ID: $Id: dataobj.h 40772 2006-08-23 13:38:45Z VZ $
-// Copyright: (c) wxWidgets Team
-// Licence: wxWindows licence
-///////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_DATAOBJ_H_BASE_
-#define _WX_DATAOBJ_H_BASE_
-
-// ----------------------------------------------------------------------------
-// headers
-// ----------------------------------------------------------------------------
-#include "wx/defs.h"
-
-#if wxUSE_DATAOBJ
-
-#include "wx/string.h"
-#include "wx/bitmap.h"
-#include "wx/list.h"
-#include "wx/arrstr.h"
-
-// ============================================================================
-/*
- Generic data transfer related classes. The class hierarchy is as follows:
-
- - wxDataObject-
- / \
- / \
- wxDataObjectSimple wxDataObjectComposite
- / | \
- / | \
- wxTextDataObject | wxBitmapDataObject
- |
- wxCustomDataObject
-
-*/
-// ============================================================================
-
-// ----------------------------------------------------------------------------
-// wxDataFormat class is declared in platform-specific headers: it represents
-// a format for data which may be either one of the standard ones (text,
-// bitmap, ...) or a custom one which is then identified by a unique string.
-// ----------------------------------------------------------------------------
-
-/* the class interface looks like this (pseudo code):
-
-class wxDataFormat
-{
-public:
- typedef NativeFormat;
-
- wxDataFormat(NativeFormat format = wxDF_INVALID);
- wxDataFormat(const wxChar *format);
-
- wxDataFormat& operator=(NativeFormat format);
- wxDataFormat& operator=(const wxDataFormat& format);
-
- bool operator==(NativeFormat format) const;
- bool operator!=(NativeFormat format) const;
-
- void SetType(NativeFormat format);
- NativeFormat GetType() const;
-
- wxString GetId() const;
- void SetId(const wxChar *format);
-};
-
-*/
-
-#if defined(__WXMSW__)
- #include "wx/msw/ole/dataform.h"
-#elif defined(__WXMOTIF__)
- #include "wx/motif/dataform.h"
-#elif defined(__WXGTK20__)
- #include "wx/gtk/dataform.h"
-#elif defined(__WXGTK__)
- #include "wx/gtk1/dataform.h"
-#elif defined(__WXX11__)
- #include "wx/x11/dataform.h"
-#elif defined(__WXMAC__)
- #include "wx/mac/dataform.h"
-#elif defined(__WXCOCOA__)
- #include "wx/cocoa/dataform.h"
-#elif defined(__WXPM__)
- #include "wx/os2/dataform.h"
-#endif
-
-// the value for default argument to some functions (corresponds to
-// wxDF_INVALID)
-extern WXDLLEXPORT const wxDataFormat& wxFormatInvalid;
-
-// ----------------------------------------------------------------------------
-// wxDataObject represents a piece of data which knows which formats it
-// supports and knows how to render itself in each of them - GetDataHere(),
-// and how to restore data from the buffer (SetData()).
-//
-// Although this class may be used directly (i.e. custom classes may be
-// derived from it), in many cases it might be simpler to use either
-// wxDataObjectSimple or wxDataObjectComposite classes.
-//
-// A data object may be "read only", i.e. support only GetData() functions or
-// "read-write", i.e. support both GetData() and SetData() (in principle, it
-// might be "write only" too, but this is rare). Moreover, it doesn't have to
-// support the same formats in Get() and Set() directions: for example, a data
-// object containing JPEG image might accept BMPs in GetData() because JPEG
-// image may be easily transformed into BMP but not in SetData(). Accordingly,
-// all methods dealing with formats take an additional "direction" argument
-// which is either SET or GET and which tells the function if the format needs
-// to be supported by SetData() or GetDataHere().
-// ----------------------------------------------------------------------------
-
-class WXDLLEXPORT wxDataObjectBase
-{
-public:
- enum Direction
- {
- Get = 0x01, // format is supported by GetDataHere()
- Set = 0x02, // format is supported by SetData()
- Both = 0x03 // format is supported by both (unused currently)
- };
-
- // this class is polymorphic, hence it needs a virtual dtor
- virtual ~wxDataObjectBase();
-
- // get the best suited format for rendering our data
- virtual wxDataFormat GetPreferredFormat(Direction dir = Get) const = 0;
-
- // get the number of formats we support
- virtual size_t GetFormatCount(Direction dir = Get) const = 0;
-
- // return all formats in the provided array (of size GetFormatCount())
- virtual void GetAllFormats(wxDataFormat *formats,
- Direction dir = Get) const = 0;
-
- // get the (total) size of data for the given format
- virtual size_t GetDataSize(const wxDataFormat& format) const = 0;
-
- // copy raw data (in the specified format) to the provided buffer, return
- // true if data copied successfully, false otherwise
- virtual bool GetDataHere(const wxDataFormat& format, void *buf) const = 0;
-
- // get data from the buffer of specified length (in the given format),
- // return true if the data was read successfully, false otherwise
- virtual bool SetData(const wxDataFormat& WXUNUSED(format),
- size_t WXUNUSED(len), const void * WXUNUSED(buf))
- {
- return false;
- }
-
- // returns true if this format is supported
- bool IsSupported(const wxDataFormat& format, Direction dir = Get) const;
-};
-
-// ----------------------------------------------------------------------------
-// include the platform-specific declarations of wxDataObject
-// ----------------------------------------------------------------------------
-
-#if defined(__WXMSW__)
- #include "wx/msw/ole/dataobj.h"
-#elif defined(__WXMOTIF__)
- #include "wx/motif/dataobj.h"
-#elif defined(__WXX11__)
- #include "wx/x11/dataobj.h"
-#elif defined(__WXGTK20__)
- #include "wx/gtk/dataobj.h"
-#elif defined(__WXGTK__)
- #include "wx/gtk1/dataobj.h"
-#elif defined(__WXMAC__)
- #include "wx/mac/dataobj.h"
-#elif defined(__WXCOCOA__)
- #include "wx/cocoa/dataobj.h"
-#elif defined(__WXPM__)
- #include "wx/os2/dataobj.h"
-#endif
-
-// ----------------------------------------------------------------------------
-// wxDataObjectSimple is a wxDataObject which only supports one format (in
-// both Get and Set directions, but you may return false from GetDataHere() or
-// SetData() if one of them is not supported). This is the simplest possible
-// wxDataObject implementation.
-//
-// This is still an "abstract base class" (although it doesn't have any pure
-// virtual functions), to use it you should derive from it and implement
-// GetDataSize(), GetDataHere() and SetData() functions because the base class
-// versions don't do anything - they just return "not implemented".
-//
-// This class should be used when you provide data in only one format (no
-// conversion to/from other formats), either a standard or a custom one.
-// Otherwise, you should use wxDataObjectComposite or wxDataObject directly.
-// ----------------------------------------------------------------------------
-
-class WXDLLEXPORT wxDataObjectSimple : public wxDataObject
-{
-public:
- // ctor takes the format we support, but it can also be set later with
- // SetFormat()
- wxDataObjectSimple(const wxDataFormat& format = wxFormatInvalid)
- : m_format(format)
- {
- }
-
- // get/set the format we support
- const wxDataFormat& GetFormat() const { return m_format; }
- void SetFormat(const wxDataFormat& format) { m_format = format; }
-
- // virtual functions to override in derived class (the base class versions
- // just return "not implemented")
- // -----------------------------------------------------------------------
-
- // get the size of our data
- virtual size_t GetDataSize() const
- { return 0; }
-
- // copy our data to the buffer
- virtual bool GetDataHere(void *WXUNUSED(buf)) const
- { return false; }
-
- // copy data from buffer to our data
- virtual bool SetData(size_t WXUNUSED(len), const void *WXUNUSED(buf))
- { return false; }
-
- // implement base class pure virtuals
- // ----------------------------------
- virtual wxDataFormat GetPreferredFormat(wxDataObjectBase::Direction WXUNUSED(dir) = Get) const
- { return m_format; }
- virtual size_t GetFormatCount(wxDataObjectBase::Direction WXUNUSED(dir) = Get) const
- { return 1; }
- virtual void GetAllFormats(wxDataFormat *formats,
- wxDataObjectBase::Direction WXUNUSED(dir) = Get) const
- { *formats = m_format; }
- virtual size_t GetDataSize(const wxDataFormat& WXUNUSED(format)) const
- { return GetDataSize(); }
- virtual bool GetDataHere(const wxDataFormat& WXUNUSED(format),
- void *buf) const
- { return GetDataHere(buf); }
- virtual bool SetData(const wxDataFormat& WXUNUSED(format),
- size_t len, const void *buf)
- { return SetData(len, buf); }
-
-private:
- // the one and only format we support
- wxDataFormat m_format;
-
- DECLARE_NO_COPY_CLASS(wxDataObjectSimple)
-};
-
-// ----------------------------------------------------------------------------
-// wxDataObjectComposite is the simplest way to implement wxDataObject
-// supporting multiple formats. It contains several wxDataObjectSimple and
-// supports all formats supported by any of them.
-//
-// This class shouldn't be (normally) derived from, but may be used directly.
-// If you need more flexibility than what it provides, you should probably use
-// wxDataObject directly.
-// ----------------------------------------------------------------------------
-
-WX_DECLARE_EXPORTED_LIST(wxDataObjectSimple, wxSimpleDataObjectList);
-
-class WXDLLEXPORT wxDataObjectComposite : public wxDataObject
-{
-public:
- // ctor
- wxDataObjectComposite();
- virtual ~wxDataObjectComposite();
-
- // add data object (it will be deleted by wxDataObjectComposite, hence it
- // must be allocated on the heap) whose format will become the preferred
- // one if preferred == true
- void Add(wxDataObjectSimple *dataObject, bool preferred = false);
-
- // Report the format passed to the SetData method. This should be the
- // format of the data object within the composite that recieved data from
- // the clipboard or the DnD operation. You can use this method to find
- // out what kind of data object was recieved.
- wxDataFormat GetReceivedFormat() const;
-
- // implement base class pure virtuals
- // ----------------------------------
- virtual wxDataFormat GetPreferredFormat(wxDataObjectBase::Direction dir = Get) const;
- virtual size_t GetFormatCount(wxDataObjectBase::Direction dir = Get) const;
- virtual void GetAllFormats(wxDataFormat *formats, wxDataObjectBase::Direction dir = Get) const;
- virtual size_t GetDataSize(const wxDataFormat& format) const;
- virtual bool GetDataHere(const wxDataFormat& format, void *buf) const;
- virtual bool SetData(const wxDataFormat& format, size_t len, const void *buf);
-#if defined(__WXMSW__)
- virtual const void* GetSizeFromBuffer( const void* buffer, size_t* size,
- const wxDataFormat& format );
- virtual void* SetSizeInBuffer( void* buffer, size_t size,
- const wxDataFormat& format );
- virtual size_t GetBufferOffset( const wxDataFormat& format );
-#endif
-
-protected:
- // returns the pointer to the object which supports this format or NULL
- wxDataObjectSimple *GetObject(const wxDataFormat& format) const;
-
-private:
- // the list of all (simple) data objects whose formats we support
- wxSimpleDataObjectList m_dataObjects;
-
- // the index of the preferred one (0 initially, so by default the first
- // one is the preferred)
- size_t m_preferred;
-
- wxDataFormat m_receivedFormat;
-
- DECLARE_NO_COPY_CLASS(wxDataObjectComposite)
-};
-
-// ============================================================================
-// Standard implementations of wxDataObjectSimple which can be used directly
-// (i.e. without having to derive from them) for standard data type transfers.
-//
-// Note that although all of them can work with provided data, you can also
-// override their virtual GetXXX() functions to only provide data on demand.
-// ============================================================================
-
-// ----------------------------------------------------------------------------
-// wxTextDataObject contains text data
-// ----------------------------------------------------------------------------
-
-class WXDLLEXPORT wxTextDataObject : public wxDataObjectSimple
-{
-public:
- // ctor: you can specify the text here or in SetText(), or override
- // GetText()
- wxTextDataObject(const wxString& text = wxEmptyString)
- : wxDataObjectSimple(
-#if wxUSE_UNICODE
- wxDF_UNICODETEXT
-#else
- wxDF_TEXT
-#endif
- ),
- m_text(text)
- {
- }
-
- // virtual functions which you may override if you want to provide text on
- // demand only - otherwise, the trivial default versions will be used
- virtual size_t GetTextLength() const { return m_text.Len() + 1; }
- virtual wxString GetText() const { return m_text; }
- virtual void SetText(const wxString& text) { m_text = text; }
-
- // implement base class pure virtuals
- // ----------------------------------
-
- // some platforms have 2 and not 1 format for text data
-#if wxUSE_UNICODE && (defined(__WXGTK20__) || defined(__WXMAC__))
- virtual size_t GetFormatCount(Direction WXUNUSED(dir) = Get) const { return 2; }
- virtual void GetAllFormats(wxDataFormat *formats,
- wxDataObjectBase::Direction WXUNUSED(dir) = Get) const;
-
- virtual size_t GetDataSize() const { return GetDataSize(GetPreferredFormat()); }
- virtual bool GetDataHere(void *buf) const { return GetDataHere(GetPreferredFormat(), buf); }
- virtual bool SetData(size_t len, const void *buf) { return SetData(GetPreferredFormat(), len, buf); }
-
- size_t GetDataSize(const wxDataFormat& format) const;
- bool GetDataHere(const wxDataFormat& format, void *pBuf) const;
- bool SetData(const wxDataFormat& format, size_t nLen, const void* pBuf);
-#else
- virtual size_t GetDataSize() const;
- virtual bool GetDataHere(void *buf) const;
- virtual bool SetData(size_t len, const void *buf);
- // Must provide overloads to avoid hiding them (and warnings about it)
- virtual size_t GetDataSize(const wxDataFormat&) const
- {
- return GetDataSize();
- }
- virtual bool GetDataHere(const wxDataFormat&, void *buf) const
- {
- return GetDataHere(buf);
- }
- virtual bool SetData(const wxDataFormat&, size_t len, const void *buf)
- {
- return SetData(len, buf);
- }
-#endif
-
-private:
- wxString m_text;
-
- DECLARE_NO_COPY_CLASS(wxTextDataObject)
-};
-
-// ----------------------------------------------------------------------------
-// wxBitmapDataObject contains a bitmap
-// ----------------------------------------------------------------------------
-
-class WXDLLEXPORT wxBitmapDataObjectBase : public wxDataObjectSimple
-{
-public:
- // ctor: you can specify the bitmap here or in SetBitmap(), or override
- // GetBitmap()
- wxBitmapDataObjectBase(const wxBitmap& bitmap = wxNullBitmap)
- : wxDataObjectSimple(wxDF_BITMAP), m_bitmap(bitmap)
- {
- }
-
- // virtual functions which you may override if you want to provide data on
- // demand only - otherwise, the trivial default versions will be used
- virtual wxBitmap GetBitmap() const { return m_bitmap; }
- virtual void SetBitmap(const wxBitmap& bitmap) { m_bitmap = bitmap; }
-
-protected:
- wxBitmap m_bitmap;
-
- DECLARE_NO_COPY_CLASS(wxBitmapDataObjectBase)
-};
-
-// ----------------------------------------------------------------------------
-// wxFileDataObject contains a list of filenames
-//
-// NB: notice that this is a "write only" object, it can only be filled with
-// data from drag and drop operation.
-// ----------------------------------------------------------------------------
-
-class WXDLLEXPORT wxFileDataObjectBase : public wxDataObjectSimple
-{
-public:
- // ctor: use AddFile() later to fill the array
- wxFileDataObjectBase() : wxDataObjectSimple(wxDF_FILENAME) { }
-
- // get a reference to our array
- const wxArrayString& GetFilenames() const { return m_filenames; }
-
-protected:
- wxArrayString m_filenames;
-
- DECLARE_NO_COPY_CLASS(wxFileDataObjectBase)
-};
-
-// ----------------------------------------------------------------------------
-// wxCustomDataObject contains arbitrary untyped user data.
-//
-// It is understood that this data can be copied bitwise.
-// ----------------------------------------------------------------------------
-
-class WXDLLEXPORT wxCustomDataObject : public wxDataObjectSimple
-{
-public:
- // if you don't specify the format in the ctor, you can still use
- // SetFormat() later
- wxCustomDataObject(const wxDataFormat& format = wxFormatInvalid);
-
- // the dtor calls Free()
- virtual ~wxCustomDataObject();
-
- // you can call SetData() to set m_data: it will make a copy of the data
- // you pass - or you can use TakeData() which won't copy anything, but
- // will take ownership of data (i.e. will call Free() on it later)
- void TakeData(size_t size, void *data);
-
- // this function is called to allocate "size" bytes of memory from
- // SetData(). The default version uses operator new[].
- virtual void *Alloc(size_t size);
-
- // this function is called when the data is freed, you may override it to
- // anything you want (or may be nothing at all). The default version calls
- // operator delete[] on m_data
- virtual void Free();
-
- // get data: you may override these functions if you wish to provide data
- // only when it's requested
- virtual size_t GetSize() const { return m_size; }
- virtual void *GetData() const { return m_data; }
-
- // implement base class pure virtuals
- // ----------------------------------
- virtual size_t GetDataSize() const;
- virtual bool GetDataHere(void *buf) const;
- virtual bool SetData(size_t size, const void *buf);
- // Must provide overloads to avoid hiding them (and warnings about it)
- virtual size_t GetDataSize(const wxDataFormat&) const
- {
- return GetDataSize();
- }
- virtual bool GetDataHere(const wxDataFormat&, void *buf) const
- {
- return GetDataHere(buf);
- }
- virtual bool SetData(const wxDataFormat&, size_t len, const void *buf)
- {
- return SetData(len, buf);
- }
-
-private:
- size_t m_size;
- void *m_data;
-
- DECLARE_NO_COPY_CLASS(wxCustomDataObject)
-};
-
-// ----------------------------------------------------------------------------
-// include platform-specific declarations of wxXXXBase classes
-// ----------------------------------------------------------------------------
-
-#if defined(__WXMSW__)
- #include "wx/msw/ole/dataobj2.h"
-
- // wxURLDataObject defined in msw/ole/dataobj2.h
-#else // !__WXMSW__
- #if defined(__WXGTK20__)
- #include "wx/gtk/dataobj2.h"
- #elif defined(__WXGTK__)
- #include "wx/gtk1/dataobj2.h"
- #elif defined(__WXX11__)
- #include "wx/x11/dataobj2.h"
- #elif defined(__WXMOTIF__)
- #include "wx/motif/dataobj2.h"
- #elif defined(__WXMAC__)
- #include "wx/mac/dataobj2.h"
- #elif defined(__WXCOCOA__)
- #include "wx/cocoa/dataobj2.h"
- #elif defined(__WXPM__)
- #include "wx/os2/dataobj2.h"
- #endif
-
- // wxURLDataObject is simply wxTextDataObject with a different name
- class WXDLLEXPORT wxURLDataObject : public wxTextDataObject
- {
- public:
- wxURLDataObject(const wxString& url = wxEmptyString)
- : wxTextDataObject(url)
- {
- }
-
- wxString GetURL() const { return GetText(); }
- void SetURL(const wxString& url) { SetText(url); }
- };
-#endif // __WXMSW__/!__WXMSW__
-
-#endif // wxUSE_DATAOBJ
-
-#endif // _WX_DATAOBJ_H_BASE_
diff --git a/Externals/wxWidgets/include/wx/dataview.h b/Externals/wxWidgets/include/wx/dataview.h
deleted file mode 100644
index 249eff71df..0000000000
--- a/Externals/wxWidgets/include/wx/dataview.h
+++ /dev/null
@@ -1,462 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-// Name: wx/dataview.h
-// Purpose: wxDataViewCtrl base classes
-// Author: Robert Roebling
-// Modified by:
-// Created: 08.01.06
-// RCS-ID: $Id: dataview.h 53135 2008-04-12 02:31:04Z VZ $
-// Copyright: (c) Robert Roebling
-// Licence: wxWindows licence
-/////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_DATAVIEW_H_BASE_
-#define _WX_DATAVIEW_H_BASE_
-
-#include "wx/defs.h"
-
-#if wxUSE_DATAVIEWCTRL
-
-#include "wx/control.h"
-#include "wx/textctrl.h"
-#include "wx/bitmap.h"
-#include "wx/variant.h"
-
-
-#if defined(__WXGTK20__)
- // for testing
- // #define wxUSE_GENERICDATAVIEWCTRL 1
-#elif defined(__WXMAC__)
- #define wxUSE_GENERICDATAVIEWCTRL 1
-#else
- #define wxUSE_GENERICDATAVIEWCTRL 1
-#endif
-
-// ----------------------------------------------------------------------------
-// wxDataViewCtrl flags
-// ----------------------------------------------------------------------------
-
-// ----------------------------------------------------------------------------
-// wxDataViewCtrl globals
-// ----------------------------------------------------------------------------
-
-class WXDLLIMPEXP_FWD_ADV wxDataViewModel;
-class WXDLLIMPEXP_FWD_ADV wxDataViewListModel;
-class WXDLLIMPEXP_FWD_ADV wxDataViewCtrl;
-class WXDLLIMPEXP_FWD_ADV wxDataViewColumn;
-class WXDLLIMPEXP_FWD_ADV wxDataViewRenderer;
-
-extern WXDLLIMPEXP_DATA_ADV(const wxChar) wxDataViewCtrlNameStr[];
-
-// ---------------------------------------------------------
-// wxDataViewModel
-// ---------------------------------------------------------
-
-class WXDLLIMPEXP_ADV wxDataViewModel: public wxObject
-{
-public:
- wxDataViewModel() { }
- virtual ~wxDataViewModel() { }
-
-protected:
- DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewModel)
-};
-
-// ---------------------------------------------------------
-// wxDataViewListModelNotifier
-// ---------------------------------------------------------
-
-
-class WXDLLIMPEXP_ADV wxDataViewListModelNotifier: public wxObject
-{
-public:
- wxDataViewListModelNotifier() { }
- virtual ~wxDataViewListModelNotifier() { }
-
- virtual bool RowAppended() = 0;
- virtual bool RowPrepended() = 0;
- virtual bool RowInserted( unsigned int before ) = 0;
- virtual bool RowDeleted( unsigned int row ) = 0;
- virtual bool RowChanged( unsigned int row ) = 0;
- virtual bool ValueChanged( unsigned int col, unsigned int row ) = 0;
- virtual bool RowsReordered( unsigned int *new_order ) = 0;
- virtual bool Cleared() = 0;
-
- void SetOwner( wxDataViewListModel *owner ) { m_owner = owner; }
- wxDataViewListModel *GetOwner() { return m_owner; }
-
-private:
- wxDataViewListModel *m_owner;
-};
-
-// ---------------------------------------------------------
-// wxDataViewListModel
-// ---------------------------------------------------------
-
-class WXDLLIMPEXP_ADV wxDataViewViewingColumn: public wxObject
-{
-public:
- wxDataViewViewingColumn( wxDataViewColumn *view_column, unsigned int model_column )
- {
- m_viewColumn = view_column;
- m_modelColumn = model_column;
- }
-
- wxDataViewColumn *m_viewColumn;
- unsigned int m_modelColumn;
-};
-
-class WXDLLIMPEXP_ADV wxDataViewListModel: public wxDataViewModel
-{
-public:
- wxDataViewListModel();
- virtual ~wxDataViewListModel();
-
- virtual unsigned int GetNumberOfRows() = 0;
- virtual unsigned int GetNumberOfCols() = 0;
- // return type as reported by wxVariant
- virtual wxString GetColType( unsigned int col ) = 0;
- // get value into a wxVariant
- virtual void GetValue( wxVariant &variant, unsigned int col, unsigned int row ) = 0;
- // set value, call ValueChanged() afterwards!
- virtual bool SetValue( wxVariant &variant, unsigned int col, unsigned int row ) = 0;
-
- // delegated notifiers
- virtual bool RowAppended();
- virtual bool RowPrepended();
- virtual bool RowInserted( unsigned int before );
- virtual bool RowDeleted( unsigned int row );
- virtual bool RowChanged( unsigned int row );
- virtual bool ValueChanged( unsigned int col, unsigned int row );
- virtual bool RowsReordered( unsigned int *new_order );
- virtual bool Cleared();
-
- // Used internally
- void AddViewingColumn( wxDataViewColumn *view_column, unsigned int model_column );
- void RemoveViewingColumn( wxDataViewColumn *column );
-
- void AddNotifier( wxDataViewListModelNotifier *notifier );
- void RemoveNotifier( wxDataViewListModelNotifier *notifier );
-
- wxList m_notifiers;
- wxList m_viewingColumns;
-
-protected:
- DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewListModel)
-};
-
-// ---------------------------------------------------------
-// wxDataViewSortedListModel
-// ---------------------------------------------------------
-
-typedef int (wxCALLBACK *wxDataViewListModelCompare)
- (unsigned int row1, unsigned int row2, unsigned int col, wxDataViewListModel* model );
-
-WX_DEFINE_SORTED_USER_EXPORTED_ARRAY_SIZE_T(unsigned int, wxDataViewSortedIndexArray, WXDLLIMPEXP_ADV);
-
-class WXDLLIMPEXP_ADV wxDataViewSortedListModel: public wxDataViewListModel
-{
-public:
- wxDataViewSortedListModel( wxDataViewListModel *child );
- virtual ~wxDataViewSortedListModel();
-
- void SetAscending( bool ascending ) { m_ascending = ascending; }
- bool GetAscending() { return m_ascending; }
-
- virtual unsigned int GetNumberOfRows();
- virtual unsigned int GetNumberOfCols();
- // return type as reported by wxVariant
- virtual wxString GetColType( unsigned int col );
- // get value into a wxVariant
- virtual void GetValue( wxVariant &variant, unsigned int col, unsigned int row );
- // set value, call ValueChanged() afterwards!
- virtual bool SetValue( wxVariant &variant, unsigned int col, unsigned int row );
-
- // called from user
- virtual bool RowAppended();
- virtual bool RowPrepended();
- virtual bool RowInserted( unsigned int before );
- virtual bool RowDeleted( unsigned int row );
- virtual bool RowChanged( unsigned int row );
- virtual bool ValueChanged( unsigned int col, unsigned int row );
- virtual bool RowsReordered( unsigned int *new_order );
- virtual bool Cleared();
-
- // called if child's notifiers are called
- bool ChildRowAppended();
- bool ChildRowPrepended();
- bool ChildRowInserted( unsigned int before );
- bool ChildRowDeleted( unsigned int row );
- bool ChildRowChanged( unsigned int row );
- bool ChildValueChanged( unsigned int col, unsigned int row );
- bool ChildRowsReordered( unsigned int *new_order );
- bool ChildCleared();
-
- virtual void Resort();
-
-private:
- bool m_ascending;
- wxDataViewListModel *m_child;
- wxDataViewSortedIndexArray m_array;
- wxDataViewListModelNotifier *m_notifierOnChild;
-
- void InitStatics(); // BAD
-
-protected:
- DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewSortedListModel)
-};
-
-// ---------------------------------------------------------
-// wxDataViewRendererBase
-// ---------------------------------------------------------
-
-enum wxDataViewCellMode
-{
- wxDATAVIEW_CELL_INERT,
- wxDATAVIEW_CELL_ACTIVATABLE,
- wxDATAVIEW_CELL_EDITABLE
-};
-
-enum wxDataViewCellRenderState
-{
- wxDATAVIEW_CELL_SELECTED = 1,
- wxDATAVIEW_CELL_PRELIT = 2,
- wxDATAVIEW_CELL_INSENSITIVE = 4,
- wxDATAVIEW_CELL_FOCUSED = 8
-};
-
-class WXDLLIMPEXP_ADV wxDataViewRendererBase: public wxObject
-{
-public:
- wxDataViewRendererBase( const wxString &varianttype, wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT );
-
- virtual bool SetValue( const wxVariant& WXUNUSED(value) ) { return true; }
- virtual bool GetValue( wxVariant& WXUNUSED(value) ) { return true; }
- virtual bool Validate( wxVariant& WXUNUSED(value) ) { return true; }
-
- wxString GetVariantType() { return m_variantType; }
- wxDataViewCellMode GetMode() { return m_mode; }
-
- void SetOwner( wxDataViewColumn *owner ) { m_owner = owner; }
- wxDataViewColumn* GetOwner() { return m_owner; }
-
-protected:
- wxDataViewCellMode m_mode;
- wxString m_variantType;
- wxDataViewColumn *m_owner;
-
-protected:
- DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewRendererBase)
-};
-
-// ---------------------------------------------------------
-// wxDataViewColumnBase
-// ---------------------------------------------------------
-
-enum wxDataViewColumnFlags
-{
- wxDATAVIEW_COL_RESIZABLE = 1,
- wxDATAVIEW_COL_SORTABLE = 2,
- wxDATAVIEW_COL_HIDDEN = 4
-};
-
-class WXDLLIMPEXP_ADV wxDataViewColumnBase: public wxObject
-{
-public:
- wxDataViewColumnBase( const wxString &title, wxDataViewRenderer *renderer, unsigned int model_column,
- int width = 80, int flags = wxDATAVIEW_COL_RESIZABLE );
- wxDataViewColumnBase( const wxBitmap &bitmap, wxDataViewRenderer *renderer, unsigned int model_column,
- int width = 80, int flags = wxDATAVIEW_COL_RESIZABLE );
- virtual ~wxDataViewColumnBase();
-
- virtual void SetTitle( const wxString &title );
- virtual wxString GetTitle();
-
- virtual void SetBitmap( const wxBitmap &bitmap );
- virtual const wxBitmap &GetBitmap();
-
- virtual void SetAlignment( wxAlignment align ) = 0;
-
- virtual void SetSortable( bool sortable ) = 0;
- virtual bool GetSortable() = 0;
- virtual void SetSortOrder( bool ascending ) = 0;
- virtual bool IsSortOrderAscending() = 0;
-
- wxDataViewRenderer* GetRenderer() { return m_renderer; }
-
- unsigned int GetModelColumn() { return m_model_column; }
-
- virtual void SetOwner( wxDataViewCtrl *owner ) { m_owner = owner; }
- wxDataViewCtrl *GetOwner() { return m_owner; }
-
- virtual int GetWidth() = 0;
-
-private:
- wxDataViewCtrl *m_ctrl;
- wxDataViewRenderer *m_renderer;
- int m_model_column;
- int m_flags;
- wxString m_title;
- wxBitmap m_bitmap;
- wxDataViewCtrl *m_owner;
-
-protected:
- DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewColumnBase)
-};
-
-// ---------------------------------------------------------
-// wxDataViewCtrlBase
-// ---------------------------------------------------------
-
-#define wxDV_SINGLE 0x0000 // for convenience
-#define wxDV_MULTIPLE 0x0020 // can select multiple items
-
-class WXDLLIMPEXP_ADV wxDataViewCtrlBase: public wxControl
-{
-public:
- wxDataViewCtrlBase();
- virtual ~wxDataViewCtrlBase();
-
- virtual bool AssociateModel( wxDataViewListModel *model );
- wxDataViewListModel* GetModel();
-
- // short cuts
- bool AppendTextColumn( const wxString &label, unsigned int model_column,
- wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT, int width = -1 );
- bool AppendToggleColumn( const wxString &label, unsigned int model_column,
- wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT, int width = 30 );
- bool AppendProgressColumn( const wxString &label, unsigned int model_column,
- wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT, int width = 80 );
- bool AppendDateColumn( const wxString &label, unsigned int model_column,
- wxDataViewCellMode mode = wxDATAVIEW_CELL_ACTIVATABLE, int width = -1 );
- bool AppendBitmapColumn( const wxString &label, unsigned int model_column,
- wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT, int width = -1 );
- bool AppendTextColumn( const wxBitmap &label, unsigned int model_column,
- wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT, int width = -1 );
- bool AppendToggleColumn( const wxBitmap &label, unsigned int model_column,
- wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT, int width = 30 );
- bool AppendProgressColumn( const wxBitmap &label, unsigned int model_column,
- wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT, int width = 80 );
- bool AppendDateColumn( const wxBitmap &label, unsigned int model_column,
- wxDataViewCellMode mode = wxDATAVIEW_CELL_ACTIVATABLE, int width = -1 );
- bool AppendBitmapColumn( const wxBitmap &label, unsigned int model_column,
- wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT, int width = -1 );
-
- virtual bool AppendColumn( wxDataViewColumn *col );
- virtual unsigned int GetNumberOfColumns();
- virtual bool DeleteColumn( unsigned int pos );
- virtual bool ClearColumns();
- virtual wxDataViewColumn* GetColumn( unsigned int pos );
-
- virtual void SetSelection( int row ) = 0; // -1 for unselect
- inline void ClearSelection() { SetSelection( -1 ); }
- virtual void Unselect( unsigned int row ) = 0;
- virtual void SetSelectionRange( unsigned int from, unsigned int to ) = 0;
- virtual void SetSelections( const wxArrayInt& aSelections) = 0;
-
- virtual bool IsSelected( unsigned int row ) const = 0;
- virtual int GetSelection() const = 0;
- virtual int GetSelections(wxArrayInt& aSelections) const = 0;
-
-private:
- wxDataViewListModel *m_model;
- wxList m_cols;
-
-protected:
- DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewCtrlBase)
-};
-
-
-// ----------------------------------------------------------------------------
-// wxDataViewEvent - the event class for the wxDataViewCtrl notifications
-// ----------------------------------------------------------------------------
-
-class WXDLLIMPEXP_ADV wxDataViewEvent : public wxNotifyEvent
-{
-public:
- wxDataViewEvent(wxEventType commandType = wxEVT_NULL, int winid = 0)
- : wxNotifyEvent(commandType, winid),
- m_col(-1),
- m_row(-1),
- m_model(NULL),
- m_value(wxNullVariant),
- m_editCancelled(false),
- m_column(NULL)
- { }
-
- wxDataViewEvent(const wxDataViewEvent& event)
- : wxNotifyEvent(event),
- m_col(event.m_col),
- m_row(event.m_col),
- m_model(event.m_model),
- m_value(event.m_value),
- m_editCancelled(event.m_editCancelled),
- m_column(event.m_column)
- { }
-
- int GetColumn() const { return m_col; }
- void SetColumn( int col ) { m_col = col; }
- int GetRow() const { return m_row; }
- void SetRow( int row ) { m_row = row; }
- wxDataViewModel* GetModel() const { return m_model; }
- void SetModel( wxDataViewModel *model ) { m_model = model; }
- const wxVariant &GetValue() const { return m_value; }
- void SetValue( const wxVariant &value ) { m_value = value; }
-
- // for wxEVT_DATAVIEW_COLUMN_HEADER_CLICKED only
- void SetDataViewColumn( wxDataViewColumn *col ) { m_column = col; }
- wxDataViewColumn *GetDataViewColumn() { return m_column; }
-
- // was label editing canceled? (for wxEVT_COMMAND_DATVIEW_END_LABEL_EDIT only)
- bool IsEditCancelled() const { return m_editCancelled; }
- void SetEditCanceled(bool editCancelled) { m_editCancelled = editCancelled; }
-
- virtual wxEvent *Clone() const { return new wxDataViewEvent(*this); }
-
-protected:
- int m_col;
- int m_row;
- wxDataViewModel *m_model;
- wxVariant m_value;
- bool m_editCancelled;
- wxDataViewColumn *m_column;
-
-private:
- DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxDataViewEvent)
-};
-
-BEGIN_DECLARE_EVENT_TYPES()
- DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_ADV, wxEVT_COMMAND_DATAVIEW_ROW_SELECTED, -1)
- DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_ADV, wxEVT_COMMAND_DATAVIEW_ROW_ACTIVATED, -1)
- DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_ADV, wxEVT_COMMAND_DATAVIEW_COLUMN_HEADER_CLICK, -1)
- DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_ADV, wxEVT_COMMAND_DATAVIEW_COLUMN_HEADER_RIGHT_CLICK, -1)
-END_DECLARE_EVENT_TYPES()
-
-typedef void (wxEvtHandler::*wxDataViewEventFunction)(wxDataViewEvent&);
-
-#define wxDataViewEventHandler(func) \
- (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxDataViewEventFunction, &func)
-
-#define wx__DECLARE_DATAVIEWEVT(evt, id, fn) \
- wx__DECLARE_EVT1(wxEVT_COMMAND_DATAVIEW_ ## evt, id, wxDataViewEventHandler(fn))
-
-#define EVT_DATAVIEW_ROW_SELECTED(id, fn) wx__DECLARE_DATAVIEWEVT(ROW_SELECTED, id, fn)
-#define EVT_DATAVIEW_ROW_ACTIVATED(id, fn) wx__DECLARE_DATAVIEWEVT(ROW_ACTIVATED, id, fn)
-#define EVT_DATAVIEW_COLUMN_HEADER_CLICK(id, fn) wx__DECLARE_DATAVIEWEVT(COLUMN_HEADER_CLICK, id, fn)
-#define EVT_DATAVIEW_COLUMN_HEADER_RIGHT_CLICKED(id, fn) wx__DECLARE_DATAVIEWEVT(COLUMN_HEADER_RIGHT_CLICK, id, fn)
-
-
-#if defined(wxUSE_GENERICDATAVIEWCTRL)
- #include "wx/generic/dataview.h"
-#elif defined(__WXGTK20__)
- #include "wx/gtk/dataview.h"
-#elif defined(__WXMAC__)
- // TODO
- // #include "wx/mac/dataview.h"
-#else
- #include "wx/generic/dataview.h"
-#endif
-
-#endif // wxUSE_DATAVIEWCTRL
-
-#endif
- // _WX_DATAVIEW_H_BASE_
diff --git a/Externals/wxWidgets/include/wx/datectrl.h b/Externals/wxWidgets/include/wx/datectrl.h
deleted file mode 100644
index 0da12775b5..0000000000
--- a/Externals/wxWidgets/include/wx/datectrl.h
+++ /dev/null
@@ -1,112 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Name: wx/datectrl.h
-// Purpose: implements wxDatePickerCtrl
-// Author: Vadim Zeitlin
-// Modified by:
-// Created: 2005-01-09
-// RCS-ID: $Id: datectrl.h 37663 2006-02-21 22:14:31Z MR $
-// Copyright: (c) 2005 Vadim Zeitlin
-// Licence: wxWindows licence
-///////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_DATECTRL_H_
-#define _WX_DATECTRL_H_
-
-#include "wx/defs.h"
-
-#if wxUSE_DATEPICKCTRL
-
-#include "wx/control.h" // the base class
-#include "wx/datetime.h"
-
-#define wxDatePickerCtrlNameStr _T("datectrl")
-
-// wxDatePickerCtrl styles
-enum
-{
- // default style on this platform, either wxDP_SPIN or wxDP_DROPDOWN
- wxDP_DEFAULT = 0,
-
- // a spin control-like date picker (not supported in generic version)
- wxDP_SPIN = 1,
-
- // a combobox-like date picker (not supported in mac version)
- wxDP_DROPDOWN = 2,
-
- // always show century in the default date display (otherwise it depends on
- // the system date format which may include the century or not)
- wxDP_SHOWCENTURY = 4,
-
- // allow not having any valid date in the control (by default it always has
- // some date, today initially if no valid date specified in ctor)
- wxDP_ALLOWNONE = 8
-};
-
-// ----------------------------------------------------------------------------
-// wxDatePickerCtrl: allow the user to enter the date
-// ----------------------------------------------------------------------------
-
-class WXDLLIMPEXP_ADV wxDatePickerCtrlBase : public wxControl
-{
-public:
- /*
- The derived classes should implement ctor and Create() method with the
- following signature:
-
- bool Create(wxWindow *parent,
- wxWindowID id,
- const wxDateTime& dt = wxDefaultDateTime,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize,
- long style = wxDP_DEFAULT | wxDP_SHOWCENTURY,
- const wxValidator& validator = wxDefaultValidator,
- const wxString& name = wxDatePickerCtrlNameStr);
- */
-
- // set/get the date
- virtual void SetValue(const wxDateTime& dt) = 0;
- virtual wxDateTime GetValue() const = 0;
-
- // set/get the allowed valid range for the dates, if either/both of them
- // are invalid, there is no corresponding limit and if neither is set
- // GetRange() returns false
- virtual void SetRange(const wxDateTime& dt1, const wxDateTime& dt2) = 0;
- virtual bool GetRange(wxDateTime *dt1, wxDateTime *dt2) const = 0;
-};
-
-#if defined(__WXPALMOS__)
- #include "wx/palmos/datectrl.h"
-
- #define wxHAS_NATIVE_DATEPICKCTRL
-#elif defined(__WXMSW__) && !defined(__WXUNIVERSAL__)
- #include "wx/msw/datectrl.h"
-
- #define wxHAS_NATIVE_DATEPICKCTRL
-#else
- #include "wx/generic/datectrl.h"
-
- class WXDLLIMPEXP_ADV wxDatePickerCtrl : public wxDatePickerCtrlGeneric
- {
- public:
- wxDatePickerCtrl() { }
- wxDatePickerCtrl(wxWindow *parent,
- wxWindowID id,
- const wxDateTime& date = wxDefaultDateTime,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize,
- long style = wxDP_DEFAULT | wxDP_SHOWCENTURY,
- const wxValidator& validator = wxDefaultValidator,
- const wxString& name = wxDatePickerCtrlNameStr)
- : wxDatePickerCtrlGeneric(parent, id, date, pos, size, style, validator, name)
- {
- }
-
- private:
- DECLARE_DYNAMIC_CLASS_NO_COPY(wxDatePickerCtrl)
- };
-#endif
-
-#endif // wxUSE_DATEPICKCTRL
-
-#endif // _WX_DATECTRL_H_
-
diff --git a/Externals/wxWidgets/include/wx/dateevt.h b/Externals/wxWidgets/include/wx/dateevt.h
deleted file mode 100644
index ba62954406..0000000000
--- a/Externals/wxWidgets/include/wx/dateevt.h
+++ /dev/null
@@ -1,69 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Name: wx/dateevt.h
-// Purpose: declares wxDateEvent class
-// Author: Vadim Zeitlin
-// Modified by:
-// Created: 2005-01-10
-// RCS-ID: $Id: dateevt.h 39637 2006-06-08 18:27:44Z RD $
-// Copyright: (c) 2005 Vadim Zeitlin
-// Licence: wxWindows licence
-///////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_DATEEVT_H_
-#define _WX_DATEEVT_H_
-
-#include "wx/event.h"
-#include "wx/datetime.h"
-#include "wx/window.h"
-
-// ----------------------------------------------------------------------------
-// wxDateEvent: used by wxCalendarCtrl and wxDatePickerCtrl
-// ----------------------------------------------------------------------------
-
-class WXDLLIMPEXP_ADV wxDateEvent : public wxCommandEvent
-{
-public:
- wxDateEvent() { }
- wxDateEvent(wxWindow *win, const wxDateTime& dt, wxEventType type)
- : wxCommandEvent(type, win->GetId()),
- m_date(dt)
- {
- SetEventObject(win);
- }
-
- const wxDateTime& GetDate() const { return m_date; }
- void SetDate(const wxDateTime &date) { m_date = date; }
-
- // default copy ctor, assignment operator and dtor are ok
- virtual wxEvent *Clone() const { return new wxDateEvent(*this); }
-
-private:
- wxDateTime m_date;
-
- DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxDateEvent)
-};
-
-// ----------------------------------------------------------------------------
-// event types and macros for handling them
-// ----------------------------------------------------------------------------
-
-BEGIN_DECLARE_EVENT_TYPES()
- DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_ADV, wxEVT_DATE_CHANGED, 1101)
-END_DECLARE_EVENT_TYPES()
-
-typedef void (wxEvtHandler::*wxDateEventFunction)(wxDateEvent&);
-
-#define wxDateEventHandler(func) \
- (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxDateEventFunction, &func)
-
-#define EVT_DATE_CHANGED(id, fn) \
- wx__DECLARE_EVT1(wxEVT_DATE_CHANGED, id, wxDateEventHandler(fn))
-
-#ifdef _WX_DEFINE_DATE_EVENTS_
- DEFINE_EVENT_TYPE(wxEVT_DATE_CHANGED)
-
- IMPLEMENT_DYNAMIC_CLASS(wxDateEvent, wxCommandEvent)
-#endif
-
-#endif // _WX_DATEEVT_H_
-
diff --git a/Externals/wxWidgets/include/wx/datetime.h b/Externals/wxWidgets/include/wx/datetime.h
deleted file mode 100644
index e74dde1c73..0000000000
--- a/Externals/wxWidgets/include/wx/datetime.h
+++ /dev/null
@@ -1,2137 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-// Name: wx/datetime.h
-// Purpose: declarations of time/date related classes (wxDateTime,
-// wxTimeSpan)
-// Author: Vadim Zeitlin
-// Modified by:
-// Created: 10.02.99
-// RCS-ID: $Id: datetime.h 57502 2008-12-22 19:52:20Z VZ $
-// Copyright: (c) 1998 Vadim Zeitlin
-// Licence: wxWindows licence
-/////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_DATETIME_H
-#define _WX_DATETIME_H
-
-#include "wx/defs.h"
-
-#if wxUSE_DATETIME
-
-#ifndef __WXWINCE__
-#include
-#else
-#include "wx/msw/wince/time.h"
-#endif
-
-#include // for INT_MIN
-
-#include "wx/longlong.h"
-
-class WXDLLIMPEXP_FWD_BASE wxDateTime;
-class WXDLLIMPEXP_FWD_BASE wxTimeSpan;
-class WXDLLIMPEXP_FWD_BASE wxDateSpan;
-
-#include "wx/dynarray.h"
-
-// not all c-runtimes are based on 1/1/1970 being (time_t) 0
-// set this to the corresponding value in seconds 1/1/1970 has on your
-// systems c-runtime
-
-#if defined(__WXMAC__) && !defined(__DARWIN__) && __MSL__ < 0x6000
- #define WX_TIME_BASE_OFFSET ( 2082844800L + 126144000L )
-#else
- #define WX_TIME_BASE_OFFSET 0
-#endif
-/*
- * TODO
- *
- * + 1. Time zones with minutes (make TimeZone a class)
- * ? 2. getdate() function like under Solaris
- * + 3. text conversion for wxDateSpan
- * + 4. pluggable modules for the workdays calculations
- * 5. wxDateTimeHolidayAuthority for Easter and other christian feasts
- */
-
-/* Two wrapper functions for thread safety */
-#ifdef HAVE_LOCALTIME_R
-#define wxLocaltime_r localtime_r
-#else
-WXDLLIMPEXP_BASE struct tm *wxLocaltime_r(const time_t*, struct tm*);
-#if wxUSE_THREADS && !defined(__WINDOWS__) && !defined(__WATCOMC__)
- // On Windows, localtime _is_ threadsafe!
-#warning using pseudo thread-safe wrapper for localtime to emulate localtime_r
-#endif
-#endif
-
-#ifdef HAVE_GMTIME_R
-#define wxGmtime_r gmtime_r
-#else
-WXDLLIMPEXP_BASE struct tm *wxGmtime_r(const time_t*, struct tm*);
-#if wxUSE_THREADS && !defined(__WINDOWS__) && !defined(__WATCOMC__)
- // On Windows, gmtime _is_ threadsafe!
-#warning using pseudo thread-safe wrapper for gmtime to emulate gmtime_r
-#endif
-#endif
-
-/*
- The three (main) classes declared in this header represent:
-
- 1. An absolute moment in the time (wxDateTime)
- 2. A difference between two moments in the time, positive or negative
- (wxTimeSpan)
- 3. A logical difference between two dates expressed in
- years/months/weeks/days (wxDateSpan)
-
- The following arithmetic operations are permitted (all others are not):
-
- addition
- --------
-
- wxDateTime + wxTimeSpan = wxDateTime
- wxDateTime + wxDateSpan = wxDateTime
- wxTimeSpan + wxTimeSpan = wxTimeSpan
- wxDateSpan + wxDateSpan = wxDateSpan
-
- subtraction
- ------------
- wxDateTime - wxDateTime = wxTimeSpan
- wxDateTime - wxTimeSpan = wxDateTime
- wxDateTime - wxDateSpan = wxDateTime
- wxTimeSpan - wxTimeSpan = wxTimeSpan
- wxDateSpan - wxDateSpan = wxDateSpan
-
- multiplication
- --------------
- wxTimeSpan * number = wxTimeSpan
- number * wxTimeSpan = wxTimeSpan
- wxDateSpan * number = wxDateSpan
- number * wxDateSpan = wxDateSpan
-
- unitary minus
- -------------
- -wxTimeSpan = wxTimeSpan
- -wxDateSpan = wxDateSpan
-
- For each binary operation OP (+, -, *) we have the following operatorOP=() as
- a method and the method with a symbolic name OPER (Add, Subtract, Multiply)
- as a synonym for it and another const method with the same name which returns
- the changed copy of the object and operatorOP() as a global function which is
- implemented in terms of the const version of OPEN. For the unary - we have
- operator-() as a method, Neg() as synonym for it and Negate() which returns
- the copy of the object with the changed sign.
-*/
-
-// an invalid/default date time object which may be used as the default
-// argument for arguments of type wxDateTime; it is also returned by all
-// functions returning wxDateTime on failure (this is why it is also called
-// wxInvalidDateTime)
-class WXDLLIMPEXP_FWD_BASE wxDateTime;
-
-extern WXDLLIMPEXP_DATA_BASE(const wxChar*) wxDefaultDateTimeFormat;
-extern WXDLLIMPEXP_DATA_BASE(const wxChar*) wxDefaultTimeSpanFormat;
-extern WXDLLIMPEXP_DATA_BASE(const wxDateTime) wxDefaultDateTime;
-
-#define wxInvalidDateTime wxDefaultDateTime
-
-// ----------------------------------------------------------------------------
-// wxDateTime represents an absolute moment in the time
-// ----------------------------------------------------------------------------
-
-class WXDLLIMPEXP_BASE wxDateTime
-{
-public:
- // types
- // ------------------------------------------------------------------------
-
- // a small unsigned integer type for storing things like minutes,
- // seconds &c. It should be at least short (i.e. not char) to contain
- // the number of milliseconds - it may also be 'int' because there is
- // no size penalty associated with it in our code, we don't store any
- // data in this format
- typedef unsigned short wxDateTime_t;
-
- // constants
- // ------------------------------------------------------------------------
-
- // the timezones
- enum TZ
- {
- // the time in the current time zone
- Local,
-
- // zones from GMT (= Greenwhich Mean Time): they're guaranteed to be
- // consequent numbers, so writing something like `GMT0 + offset' is
- // safe if abs(offset) <= 12
-
- // underscore stands for minus
- GMT_12, GMT_11, GMT_10, GMT_9, GMT_8, GMT_7,
- GMT_6, GMT_5, GMT_4, GMT_3, GMT_2, GMT_1,
- GMT0,
- GMT1, GMT2, GMT3, GMT4, GMT5, GMT6,
- GMT7, GMT8, GMT9, GMT10, GMT11, GMT12, GMT13,
- // Note that GMT12 and GMT_12 are not the same: there is a difference
- // of exactly one day between them
-
- // some symbolic names for TZ
-
- // Europe
- WET = GMT0, // Western Europe Time
- WEST = GMT1, // Western Europe Summer Time
- CET = GMT1, // Central Europe Time
- CEST = GMT2, // Central Europe Summer Time
- EET = GMT2, // Eastern Europe Time
- EEST = GMT3, // Eastern Europe Summer Time
- MSK = GMT3, // Moscow Time
- MSD = GMT4, // Moscow Summer Time
-
- // US and Canada
- AST = GMT_4, // Atlantic Standard Time
- ADT = GMT_3, // Atlantic Daylight Time
- EST = GMT_5, // Eastern Standard Time
- EDT = GMT_4, // Eastern Daylight Saving Time
- CST = GMT_6, // Central Standard Time
- CDT = GMT_5, // Central Daylight Saving Time
- MST = GMT_7, // Mountain Standard Time
- MDT = GMT_6, // Mountain Daylight Saving Time
- PST = GMT_8, // Pacific Standard Time
- PDT = GMT_7, // Pacific Daylight Saving Time
- HST = GMT_10, // Hawaiian Standard Time
- AKST = GMT_9, // Alaska Standard Time
- AKDT = GMT_8, // Alaska Daylight Saving Time
-
- // Australia
-
- A_WST = GMT8, // Western Standard Time
- A_CST = GMT13 + 1, // Central Standard Time (+9.5)
- A_EST = GMT10, // Eastern Standard Time
- A_ESST = GMT11, // Eastern Summer Time
-
- // New Zealand
- NZST = GMT12, // Standard Time
- NZDT = GMT13, // Daylight Saving Time
-
- // TODO add more symbolic timezone names here
-
- // Universal Coordinated Time = the new and politically correct name
- // for GMT
- UTC = GMT0
- };
-
- // the calendar systems we know about: notice that it's valid (for
- // this classes purpose anyhow) to work with any of these calendars
- // even with the dates before the historical appearance of the
- // calendar
- enum Calendar
- {
- Gregorian, // current calendar
- Julian // calendar in use since -45 until the 1582 (or later)
-
- // TODO Hebrew, Chinese, Maya, ... (just kidding) (or then may be not?)
- };
-
- // these values only are used to identify the different dates of
- // adoption of the Gregorian calendar (see IsGregorian())
- //
- // All data and comments taken verbatim from "The Calendar FAQ (v 2.0)"
- // by Claus Tndering, http://www.pip.dknet.dk/~c-t/calendar.html
- // except for the comments "we take".
- //
- // Symbol "->" should be read as "was followed by" in the comments
- // which follow.
- enum GregorianAdoption
- {
- Gr_Unknown, // no data for this country or it's too uncertain to use
- Gr_Standard, // on the day 0 of Gregorian calendar: 15 Oct 1582
-
- Gr_Alaska, // Oct 1867 when Alaska became part of the USA
- Gr_Albania, // Dec 1912
-
- Gr_Austria = Gr_Unknown, // Different regions on different dates
- Gr_Austria_Brixen, // 5 Oct 1583 -> 16 Oct 1583
- Gr_Austria_Salzburg = Gr_Austria_Brixen,
- Gr_Austria_Tyrol = Gr_Austria_Brixen,
- Gr_Austria_Carinthia, // 14 Dec 1583 -> 25 Dec 1583
- Gr_Austria_Styria = Gr_Austria_Carinthia,
-
- Gr_Belgium, // Then part of the Netherlands
-
- Gr_Bulgaria = Gr_Unknown, // Unknown precisely (from 1915 to 1920)
- Gr_Bulgaria_1, // 18 Mar 1916 -> 1 Apr 1916
- Gr_Bulgaria_2, // 31 Mar 1916 -> 14 Apr 1916
- Gr_Bulgaria_3, // 3 Sep 1920 -> 17 Sep 1920
-
- Gr_Canada = Gr_Unknown, // Different regions followed the changes in
- // Great Britain or France
-
- Gr_China = Gr_Unknown, // Different authorities say:
- Gr_China_1, // 18 Dec 1911 -> 1 Jan 1912
- Gr_China_2, // 18 Dec 1928 -> 1 Jan 1929
-
- Gr_Czechoslovakia, // (Bohemia and Moravia) 6 Jan 1584 -> 17 Jan 1584
- Gr_Denmark, // (including Norway) 18 Feb 1700 -> 1 Mar 1700
- Gr_Egypt, // 1875
- Gr_Estonia, // 1918
- Gr_Finland, // Then part of Sweden
-
- Gr_France, // 9 Dec 1582 -> 20 Dec 1582
- Gr_France_Alsace, // 4 Feb 1682 -> 16 Feb 1682
- Gr_France_Lorraine, // 16 Feb 1760 -> 28 Feb 1760
- Gr_France_Strasbourg, // February 1682
-
- Gr_Germany = Gr_Unknown, // Different states on different dates:
- Gr_Germany_Catholic, // 1583-1585 (we take 1584)
- Gr_Germany_Prussia, // 22 Aug 1610 -> 2 Sep 1610
- Gr_Germany_Protestant, // 18 Feb 1700 -> 1 Mar 1700
-
- Gr_GreatBritain, // 2 Sep 1752 -> 14 Sep 1752 (use 'cal(1)')
-
- Gr_Greece, // 9 Mar 1924 -> 23 Mar 1924
- Gr_Hungary, // 21 Oct 1587 -> 1 Nov 1587
- Gr_Ireland = Gr_GreatBritain,
- Gr_Italy = Gr_Standard,
-
- Gr_Japan = Gr_Unknown, // Different authorities say:
- Gr_Japan_1, // 19 Dec 1872 -> 1 Jan 1873
- Gr_Japan_2, // 19 Dec 1892 -> 1 Jan 1893
- Gr_Japan_3, // 18 Dec 1918 -> 1 Jan 1919
-
- Gr_Latvia, // 1915-1918 (we take 1915)
- Gr_Lithuania, // 1915
- Gr_Luxemburg, // 14 Dec 1582 -> 25 Dec 1582
- Gr_Netherlands = Gr_Belgium, // (including Belgium) 1 Jan 1583
-
- // this is too weird to take into account: the Gregorian calendar was
- // introduced twice in Groningen, first time 28 Feb 1583 was followed
- // by 11 Mar 1583, then it has gone back to Julian in the summer of
- // 1584 and then 13 Dec 1700 -> 12 Jan 1701 - which is
- // the date we take here
- Gr_Netherlands_Groningen, // 13 Dec 1700 -> 12 Jan 1701
- Gr_Netherlands_Gelderland, // 30 Jun 1700 -> 12 Jul 1700
- Gr_Netherlands_Utrecht, // (and Overijssel) 30 Nov 1700->12 Dec 1700
- Gr_Netherlands_Friesland, // (and Drenthe) 31 Dec 1700 -> 12 Jan 1701
-
- Gr_Norway = Gr_Denmark, // Then part of Denmark
- Gr_Poland = Gr_Standard,
- Gr_Portugal = Gr_Standard,
- Gr_Romania, // 31 Mar 1919 -> 14 Apr 1919
- Gr_Russia, // 31 Jan 1918 -> 14 Feb 1918
- Gr_Scotland = Gr_GreatBritain,
- Gr_Spain = Gr_Standard,
-
- // Sweden has a curious history. Sweden decided to make a gradual
- // change from the Julian to the Gregorian calendar. By dropping every
- // leap year from 1700 through 1740 the eleven superfluous days would
- // be omitted and from 1 Mar 1740 they would be in sync with the
- // Gregorian calendar. (But in the meantime they would be in sync with
- // nobody!)
- //
- // So 1700 (which should have been a leap year in the Julian calendar)
- // was not a leap year in Sweden. However, by mistake 1704 and 1708
- // became leap years. This left Sweden out of synchronisation with
- // both the Julian and the Gregorian world, so they decided to go back
- // to the Julian calendar. In order to do this, they inserted an extra
- // day in 1712, making that year a double leap year! So in 1712,
- // February had 30 days in Sweden.
- //
- // Later, in 1753, Sweden changed to the Gregorian calendar by
- // dropping 11 days like everyone else.
- Gr_Sweden = Gr_Finland, // 17 Feb 1753 -> 1 Mar 1753
-
- Gr_Switzerland = Gr_Unknown,// Different cantons used different dates
- Gr_Switzerland_Catholic, // 1583, 1584 or 1597 (we take 1584)
- Gr_Switzerland_Protestant, // 31 Dec 1700 -> 12 Jan 1701
-
- Gr_Turkey, // 1 Jan 1927
- Gr_USA = Gr_GreatBritain,
- Gr_Wales = Gr_GreatBritain,
- Gr_Yugoslavia // 1919
- };
-
- // the country parameter is used so far for calculating the start and
- // the end of DST period and for deciding whether the date is a work
- // day or not
- //
- // TODO move this to intl.h
-
-// Required for WinCE
-#ifdef USA
-#undef USA
-#endif
-
- enum Country
- {
- Country_Unknown, // no special information for this country
- Country_Default, // set the default country with SetCountry() method
- // or use the default country with any other
-
- // TODO add more countries (for this we must know about DST and/or
- // holidays for this country)
-
- // Western European countries: we assume that they all follow the same
- // DST rules (true or false?)
- Country_WesternEurope_Start,
- Country_EEC = Country_WesternEurope_Start,
- France,
- Germany,
- UK,
- Country_WesternEurope_End = UK,
-
- Russia,
- USA
- };
- // symbolic names for the months
- enum Month
- {
- Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec, Inv_Month
- };
-
- // symbolic names for the weekdays
- enum WeekDay
- {
- Sun, Mon, Tue, Wed, Thu, Fri, Sat, Inv_WeekDay
- };
-
- // invalid value for the year
- enum Year
- {
- Inv_Year = SHRT_MIN // should hold in wxDateTime_t
- };
-
- // flags for GetWeekDayName and GetMonthName
- enum NameFlags
- {
- Name_Full = 0x01, // return full name
- Name_Abbr = 0x02 // return abbreviated name
- };
-
- // flags for GetWeekOfYear and GetWeekOfMonth
- enum WeekFlags
- {
- Default_First, // Sunday_First for US, Monday_First for the rest
- Monday_First, // week starts with a Monday
- Sunday_First // week starts with a Sunday
- };
-
- // helper classes
- // ------------------------------------------------------------------------
-
- // a class representing a time zone: basicly, this is just an offset
- // (in seconds) from GMT
- class WXDLLIMPEXP_BASE TimeZone
- {
- public:
- TimeZone(TZ tz);
-
- // don't use this ctor, it doesn't work for negative offsets (but can't
- // be removed or changed to avoid breaking ABI in 2.8)
- TimeZone(wxDateTime_t offset = 0) { m_offset = offset; }
-
-#if wxABI_VERSION >= 20808
- // create time zone object with the given offset
- static TimeZone Make(long offset)
- {
- TimeZone tz;
- tz.m_offset = offset;
- return tz;
- }
-#endif // wxABI 2.8.8+
-
- long GetOffset() const { return m_offset; }
-
- private:
- // offset for this timezone from GMT in seconds
- long m_offset;
- };
-
- // standard struct tm is limited to the years from 1900 (because
- // tm_year field is the offset from 1900), so we use our own struct
- // instead to represent broken down time
- //
- // NB: this struct should always be kept normalized (i.e. mon should
- // be < 12, 1 <= day <= 31 &c), so use AddMonths(), AddDays()
- // instead of modifying the member fields directly!
- struct WXDLLIMPEXP_BASE Tm
- {
- wxDateTime_t msec, sec, min, hour, mday;
- Month mon;
- int year;
-
- // default ctor inits the object to an invalid value
- Tm();
-
- // ctor from struct tm and the timezone
- Tm(const struct tm& tm, const TimeZone& tz);
-
- // check that the given date/time is valid (in Gregorian calendar)
- bool IsValid() const;
-
- // get the week day
- WeekDay GetWeekDay() // not const because wday may be changed
- {
- if ( wday == Inv_WeekDay )
- ComputeWeekDay();
-
- return (WeekDay)wday;
- }
-
- // add the given number of months to the date keeping it normalized
- void AddMonths(int monDiff);
-
- // add the given number of months to the date keeping it normalized
- void AddDays(int dayDiff);
-
- private:
- // compute the weekday from other fields
- void ComputeWeekDay();
-
- // the timezone we correspond to
- TimeZone m_tz;
-
- // these values can't be accessed directly because they're not always
- // computed and we calculate them on demand
- wxDateTime_t wday, yday;
- };
-
- // static methods
- // ------------------------------------------------------------------------
-
- // set the current country
- static void SetCountry(Country country);
- // get the current country
- static Country GetCountry();
-
- // return true if the country is a West European one (in practice,
- // this means that the same DST rules as for EEC apply)
- static bool IsWestEuropeanCountry(Country country = Country_Default);
-
- // return the current year
- static int GetCurrentYear(Calendar cal = Gregorian);
-
- // convert the year as returned by wxDateTime::GetYear() to a year
- // suitable for BC/AD notation. The difference is that BC year 1
- // corresponds to the year 0 (while BC year 0 didn't exist) and AD
- // year N is just year N.
- static int ConvertYearToBC(int year);
-
- // return the current month
- static Month GetCurrentMonth(Calendar cal = Gregorian);
-
- // returns true if the given year is a leap year in the given calendar
- static bool IsLeapYear(int year = Inv_Year, Calendar cal = Gregorian);
-
- // get the century (19 for 1999, 20 for 2000 and -5 for 492 BC)
- static int GetCentury(int year);
-
- // returns the number of days in this year (356 or 355 for Gregorian
- // calendar usually :-)
- static wxDateTime_t GetNumberOfDays(int year, Calendar cal = Gregorian);
-
- // get the number of the days in the given month (default value for
- // the year means the current one)
- static wxDateTime_t GetNumberOfDays(Month month,
- int year = Inv_Year,
- Calendar cal = Gregorian);
-
- // get the full (default) or abbreviated month name in the current
- // locale, returns empty string on error
- static wxString GetMonthName(Month month,
- NameFlags flags = Name_Full);
-
- // get the full (default) or abbreviated weekday name in the current
- // locale, returns empty string on error
- static wxString GetWeekDayName(WeekDay weekday,
- NameFlags flags = Name_Full);
-
- // get the AM and PM strings in the current locale (may be empty)
- static void GetAmPmStrings(wxString *am, wxString *pm);
-
- // return true if the given country uses DST for this year
- static bool IsDSTApplicable(int year = Inv_Year,
- Country country = Country_Default);
-
- // get the beginning of DST for this year, will return invalid object
- // if no DST applicable in this year. The default value of the
- // parameter means to take the current year.
- static wxDateTime GetBeginDST(int year = Inv_Year,
- Country country = Country_Default);
- // get the end of DST for this year, will return invalid object
- // if no DST applicable in this year. The default value of the
- // parameter means to take the current year.
- static wxDateTime GetEndDST(int year = Inv_Year,
- Country country = Country_Default);
-
- // return the wxDateTime object for the current time
- static inline wxDateTime Now();
-
- // return the wxDateTime object for the current time with millisecond
- // precision (if available on this platform)
- static wxDateTime UNow();
-
- // return the wxDateTime object for today midnight: i.e. as Now() but
- // with time set to 0
- static inline wxDateTime Today();
-
- // constructors: you should test whether the constructor succeeded with
- // IsValid() function. The values Inv_Month and Inv_Year for the
- // parameters mean take current month and/or year values.
- // ------------------------------------------------------------------------
-
- // default ctor does not initialize the object, use Set()!
- wxDateTime() { m_time = wxLongLong((wxInt32)UINT_MAX, UINT_MAX); }
-
- // from time_t: seconds since the Epoch 00:00:00 UTC, Jan 1, 1970)
-#if (!(defined(__VISAGECPP__) && __IBMCPP__ >= 400))
-// VA C++ confuses this with wxDateTime(double jdn) thinking it is a duplicate declaration
- inline wxDateTime(time_t timet);
-#endif
- // from broken down time/date (only for standard Unix range)
- inline wxDateTime(const struct tm& tm);
- // from broken down time/date (any range)
- inline wxDateTime(const Tm& tm);
-
- // from JDN (beware of rounding errors)
- inline wxDateTime(double jdn);
-
- // from separate values for each component, date set to today
- inline wxDateTime(wxDateTime_t hour,
- wxDateTime_t minute = 0,
- wxDateTime_t second = 0,
- wxDateTime_t millisec = 0);
- // from separate values for each component with explicit date
- inline wxDateTime(wxDateTime_t day, // day of the month
- Month month,
- int year = Inv_Year, // 1999, not 99 please!
- wxDateTime_t hour = 0,
- wxDateTime_t minute = 0,
- wxDateTime_t second = 0,
- wxDateTime_t millisec = 0);
-
- // default copy ctor ok
-
- // no dtor
-
- // assignment operators and Set() functions: all non const methods return
- // the reference to this object. IsValid() should be used to test whether
- // the function succeeded.
- // ------------------------------------------------------------------------
-
- // set to the current time
- inline wxDateTime& SetToCurrent();
-
-#if (!(defined(__VISAGECPP__) && __IBMCPP__ >= 400))
-// VA C++ confuses this with wxDateTime(double jdn) thinking it is a duplicate declaration
- // set to given time_t value
- inline wxDateTime& Set(time_t timet);
-#endif
-
- // set to given broken down time/date
- wxDateTime& Set(const struct tm& tm);
-
- // set to given broken down time/date
- inline wxDateTime& Set(const Tm& tm);
-
- // set to given JDN (beware of rounding errors)
- wxDateTime& Set(double jdn);
-
- // set to given time, date = today
- wxDateTime& Set(wxDateTime_t hour,
- wxDateTime_t minute = 0,
- wxDateTime_t second = 0,
- wxDateTime_t millisec = 0);
-
- // from separate values for each component with explicit date
- // (defaults for month and year are the current values)
- wxDateTime& Set(wxDateTime_t day,
- Month month,
- int year = Inv_Year, // 1999, not 99 please!
- wxDateTime_t hour = 0,
- wxDateTime_t minute = 0,
- wxDateTime_t second = 0,
- wxDateTime_t millisec = 0);
-
- // resets time to 00:00:00, doesn't change the date
- wxDateTime& ResetTime();
-
-#if wxABI_VERSION >= 20802
- // get the date part of this object only, i.e. the object which has the
- // same date as this one but time of 00:00:00
- wxDateTime GetDateOnly() const;
-#endif // wxABI 2.8.1+
-
- // the following functions don't change the values of the other
- // fields, i.e. SetMinute() won't change either hour or seconds value
-
- // set the year
- wxDateTime& SetYear(int year);
- // set the month
- wxDateTime& SetMonth(Month month);
- // set the day of the month
- wxDateTime& SetDay(wxDateTime_t day);
- // set hour
- wxDateTime& SetHour(wxDateTime_t hour);
- // set minute
- wxDateTime& SetMinute(wxDateTime_t minute);
- // set second
- wxDateTime& SetSecond(wxDateTime_t second);
- // set millisecond
- wxDateTime& SetMillisecond(wxDateTime_t millisecond);
-
- // assignment operator from time_t
- wxDateTime& operator=(time_t timet) { return Set(timet); }
-
- // assignment operator from broken down time/date
- wxDateTime& operator=(const struct tm& tm) { return Set(tm); }
-
- // assignment operator from broken down time/date
- wxDateTime& operator=(const Tm& tm) { return Set(tm); }
-
- // default assignment operator is ok
-
- // calendar calculations (functions which set the date only leave the time
- // unchanged, e.g. don't explictly zero it): SetXXX() functions modify the
- // object itself, GetXXX() ones return a new object.
- // ------------------------------------------------------------------------
-
- // set to the given week day in the same week as this one
- wxDateTime& SetToWeekDayInSameWeek(WeekDay weekday,
- WeekFlags flags = Monday_First);
- inline wxDateTime GetWeekDayInSameWeek(WeekDay weekday,
- WeekFlags flags = Monday_First) const;
-
- // set to the next week day following this one
- wxDateTime& SetToNextWeekDay(WeekDay weekday);
- inline wxDateTime GetNextWeekDay(WeekDay weekday) const;
-
- // set to the previous week day before this one
- wxDateTime& SetToPrevWeekDay(WeekDay weekday);
- inline wxDateTime GetPrevWeekDay(WeekDay weekday) const;
-
- // set to Nth occurence of given weekday in the given month of the
- // given year (time is set to 0), return true on success and false on
- // failure. n may be positive (1..5) or negative to count from the end
- // of the month (see helper function SetToLastWeekDay())
- bool SetToWeekDay(WeekDay weekday,
- int n = 1,
- Month month = Inv_Month,
- int year = Inv_Year);
- inline wxDateTime GetWeekDay(WeekDay weekday,
- int n = 1,
- Month month = Inv_Month,
- int year = Inv_Year) const;
-
- // sets to the last weekday in the given month, year
- inline bool SetToLastWeekDay(WeekDay weekday,
- Month month = Inv_Month,
- int year = Inv_Year);
- inline wxDateTime GetLastWeekDay(WeekDay weekday,
- Month month = Inv_Month,
- int year = Inv_Year);
-
-#if WXWIN_COMPATIBILITY_2_6
- // sets the date to the given day of the given week in the year,
- // returns true on success and false if given date doesn't exist (e.g.
- // numWeek is > 53)
- //
- // these functions are badly defined as they're not the reverse of
- // GetWeekOfYear(), use SetToTheWeekOfYear() instead
- wxDEPRECATED( bool SetToTheWeek(wxDateTime_t numWeek,
- WeekDay weekday = Mon,
- WeekFlags flags = Monday_First) );
- wxDEPRECATED( wxDateTime GetWeek(wxDateTime_t numWeek,
- WeekDay weekday = Mon,
- WeekFlags flags = Monday_First) const );
-#endif // WXWIN_COMPATIBILITY_2_6
-
- // returns the date corresponding to the given week day of the given
- // week (in ISO notation) of the specified year
- static wxDateTime SetToWeekOfYear(int year,
- wxDateTime_t numWeek,
- WeekDay weekday = Mon);
-
- // sets the date to the last day of the given (or current) month or the
- // given (or current) year
- wxDateTime& SetToLastMonthDay(Month month = Inv_Month,
- int year = Inv_Year);
- inline wxDateTime GetLastMonthDay(Month month = Inv_Month,
- int year = Inv_Year) const;
-
- // sets to the given year day (1..365 or 366)
- wxDateTime& SetToYearDay(wxDateTime_t yday);
- inline wxDateTime GetYearDay(wxDateTime_t yday) const;
-
- // The definitions below were taken verbatim from
- //
- // http://www.capecod.net/~pbaum/date/date0.htm
- //
- // (Peter Baum's home page)
- //
- // definition: The Julian Day Number, Julian Day, or JD of a
- // particular instant of time is the number of days and fractions of a
- // day since 12 hours Universal Time (Greenwich mean noon) on January
- // 1 of the year -4712, where the year is given in the Julian
- // proleptic calendar. The idea of using this reference date was
- // originally proposed by Joseph Scalizer in 1582 to count years but
- // it was modified by 19th century astronomers to count days. One
- // could have equivalently defined the reference time to be noon of
- // November 24, -4713 if were understood that Gregorian calendar rules
- // were applied. Julian days are Julian Day Numbers and are not to be
- // confused with Julian dates.
- //
- // definition: The Rata Die number is a date specified as the number
- // of days relative to a base date of December 31 of the year 0. Thus
- // January 1 of the year 1 is Rata Die day 1.
-
- // get the Julian Day number (the fractional part specifies the time of
- // the day, related to noon - beware of rounding errors!)
- double GetJulianDayNumber() const;
- double GetJDN() const { return GetJulianDayNumber(); }
-
- // get the Modified Julian Day number: it is equal to JDN - 2400000.5
- // and so integral MJDs correspond to the midnights (and not noons).
- // MJD 0 is Nov 17, 1858
- double GetModifiedJulianDayNumber() const { return GetJDN() - 2400000.5; }
- double GetMJD() const { return GetModifiedJulianDayNumber(); }
-
- // get the Rata Die number
- double GetRataDie() const;
-
- // TODO algorithms for calculating some important dates, such as
- // religious holidays (Easter...) or moon/solar eclipses? Some
- // algorithms can be found in the calendar FAQ
-
-
- // Timezone stuff: a wxDateTime object constructed using given
- // day/month/year/hour/min/sec values is interpreted as this moment in
- // local time. Using the functions below, it may be converted to another
- // time zone (e.g., the Unix epoch is wxDateTime(1, Jan, 1970).ToGMT()).
- //
- // These functions try to handle DST internally, but there is no magical
- // way to know all rules for it in all countries in the world, so if the
- // program can handle it itself (or doesn't want to handle it at all for
- // whatever reason), the DST handling can be disabled with noDST.
- // ------------------------------------------------------------------------
-
- // transform to any given timezone
- inline wxDateTime ToTimezone(const TimeZone& tz, bool noDST = false) const;
- wxDateTime& MakeTimezone(const TimeZone& tz, bool noDST = false);
-
- // interpret current value as being in another timezone and transform
- // it to local one
- inline wxDateTime FromTimezone(const TimeZone& tz, bool noDST = false) const;
- wxDateTime& MakeFromTimezone(const TimeZone& tz, bool noDST = false);
-
- // transform to/from GMT/UTC
- wxDateTime ToUTC(bool noDST = false) const { return ToTimezone(UTC, noDST); }
- wxDateTime& MakeUTC(bool noDST = false) { return MakeTimezone(UTC, noDST); }
-
- wxDateTime ToGMT(bool noDST = false) const { return ToUTC(noDST); }
- wxDateTime& MakeGMT(bool noDST = false) { return MakeUTC(noDST); }
-
- wxDateTime FromUTC(bool noDST = false) const
- { return FromTimezone(UTC, noDST); }
- wxDateTime& MakeFromUTC(bool noDST = false)
- { return MakeFromTimezone(UTC, noDST); }
-
- // is daylight savings time in effect at this moment according to the
- // rules of the specified country?
- //
- // Return value is > 0 if DST is in effect, 0 if it is not and -1 if
- // the information is not available (this is compatible with ANSI C)
- int IsDST(Country country = Country_Default) const;
-
-
- // accessors: many of them take the timezone parameter which indicates the
- // timezone for which to make the calculations and the default value means
- // to do it for the current timezone of this machine (even if the function
- // only operates with the date it's necessary because a date may wrap as
- // result of timezone shift)
- // ------------------------------------------------------------------------
-
- // is the date valid?
- inline bool IsValid() const { return m_time != wxInvalidDateTime.m_time; }
-
- // get the broken down date/time representation in the given timezone
- //
- // If you wish to get several time components (day, month and year),
- // consider getting the whole Tm strcuture first and retrieving the
- // value from it - this is much more efficient
- Tm GetTm(const TimeZone& tz = Local) const;
-
- // get the number of seconds since the Unix epoch - returns (time_t)-1
- // if the value is out of range
- inline time_t GetTicks() const;
-
- // get the century, same as GetCentury(GetYear())
- int GetCentury(const TimeZone& tz = Local) const
- { return GetCentury(GetYear(tz)); }
- // get the year (returns Inv_Year if date is invalid)
- int GetYear(const TimeZone& tz = Local) const
- { return GetTm(tz).year; }
- // get the month (Inv_Month if date is invalid)
- Month GetMonth(const TimeZone& tz = Local) const
- { return (Month)GetTm(tz).mon; }
- // get the month day (in 1..31 range, 0 if date is invalid)
- wxDateTime_t GetDay(const TimeZone& tz = Local) const
- { return GetTm(tz).mday; }
- // get the day of the week (Inv_WeekDay if date is invalid)
- WeekDay GetWeekDay(const TimeZone& tz = Local) const
- { return GetTm(tz).GetWeekDay(); }
- // get the hour of the day
- wxDateTime_t GetHour(const TimeZone& tz = Local) const
- { return GetTm(tz).hour; }
- // get the minute
- wxDateTime_t GetMinute(const TimeZone& tz = Local) const
- { return GetTm(tz).min; }
- // get the second
- wxDateTime_t GetSecond(const TimeZone& tz = Local) const
- { return GetTm(tz).sec; }
- // get milliseconds
- wxDateTime_t GetMillisecond(const TimeZone& tz = Local) const
- { return GetTm(tz).msec; }
-
- // get the day since the year start (1..366, 0 if date is invalid)
- wxDateTime_t GetDayOfYear(const TimeZone& tz = Local) const;
- // get the week number since the year start (1..52 or 53, 0 if date is
- // invalid)
- wxDateTime_t GetWeekOfYear(WeekFlags flags = Monday_First,
- const TimeZone& tz = Local) const;
- // get the week number since the month start (1..5, 0 if date is
- // invalid)
- wxDateTime_t GetWeekOfMonth(WeekFlags flags = Monday_First,
- const TimeZone& tz = Local) const;
-
- // is this date a work day? This depends on a country, of course,
- // because the holidays are different in different countries
- bool IsWorkDay(Country country = Country_Default) const;
-
- // is this date later than Gregorian calendar introduction for the
- // given country (see enum GregorianAdoption)?
- //
- // NB: this function shouldn't be considered as absolute authority in
- // the matter. Besides, for some countries the exact date of
- // adoption of the Gregorian calendar is simply unknown.
- bool IsGregorianDate(GregorianAdoption country = Gr_Standard) const;
-
- // dos date and time format
- // ------------------------------------------------------------------------
-
- // set from the DOS packed format
- wxDateTime& SetFromDOS(unsigned long ddt);
-
- // pack the date in DOS format
- unsigned long GetAsDOS() const;
-
- // comparison (see also functions below for operator versions)
- // ------------------------------------------------------------------------
-
- // returns true if the two moments are strictly identical
- inline bool IsEqualTo(const wxDateTime& datetime) const;
-
- // returns true if the date is strictly earlier than the given one
- inline bool IsEarlierThan(const wxDateTime& datetime) const;
-
- // returns true if the date is strictly later than the given one
- inline bool IsLaterThan(const wxDateTime& datetime) const;
-
- // returns true if the date is strictly in the given range
- inline bool IsStrictlyBetween(const wxDateTime& t1,
- const wxDateTime& t2) const;
-
- // returns true if the date is in the given range
- inline bool IsBetween(const wxDateTime& t1, const wxDateTime& t2) const;
-
- // do these two objects refer to the same date?
- inline bool IsSameDate(const wxDateTime& dt) const;
-
- // do these two objects have the same time?
- inline bool IsSameTime(const wxDateTime& dt) const;
-
- // are these two objects equal up to given timespan?
- inline bool IsEqualUpTo(const wxDateTime& dt, const wxTimeSpan& ts) const;
-
- inline bool operator<(const wxDateTime& dt) const
- {
- wxASSERT_MSG( IsValid() && dt.IsValid(), _T("invalid wxDateTime") );
- return GetValue() < dt.GetValue();
- }
-
- inline bool operator<=(const wxDateTime& dt) const
- {
- wxASSERT_MSG( IsValid() && dt.IsValid(), _T("invalid wxDateTime") );
- return GetValue() <= dt.GetValue();
- }
-
- inline bool operator>(const wxDateTime& dt) const
- {
- wxASSERT_MSG( IsValid() && dt.IsValid(), _T("invalid wxDateTime") );
- return GetValue() > dt.GetValue();
- }
-
- inline bool operator>=(const wxDateTime& dt) const
- {
- wxASSERT_MSG( IsValid() && dt.IsValid(), _T("invalid wxDateTime") );
- return GetValue() >= dt.GetValue();
- }
-
- inline bool operator==(const wxDateTime& dt) const
- {
- wxASSERT_MSG( IsValid() && dt.IsValid(), _T("invalid wxDateTime") );
- return GetValue() == dt.GetValue();
- }
-
- inline bool operator!=(const wxDateTime& dt) const
- {
- wxASSERT_MSG( IsValid() && dt.IsValid(), _T("invalid wxDateTime") );
- return GetValue() != dt.GetValue();
- }
-
- // arithmetics with dates (see also below for more operators)
- // ------------------------------------------------------------------------
-
- // return the sum of the date with a time span (positive or negative)
- inline wxDateTime Add(const wxTimeSpan& diff) const;
- // add a time span (positive or negative)
- inline wxDateTime& Add(const wxTimeSpan& diff);
- // add a time span (positive or negative)
- inline wxDateTime& operator+=(const wxTimeSpan& diff);
- inline wxDateTime operator+(const wxTimeSpan& ts) const
- {
- wxDateTime dt(*this);
- dt.Add(ts);
- return dt;
- }
-
- // return the difference of the date with a time span
- inline wxDateTime Subtract(const wxTimeSpan& diff) const;
- // subtract a time span (positive or negative)
- inline wxDateTime& Subtract(const wxTimeSpan& diff);
- // subtract a time span (positive or negative)
- inline wxDateTime& operator-=(const wxTimeSpan& diff);
- inline wxDateTime operator-(const wxTimeSpan& ts) const
- {
- wxDateTime dt(*this);
- dt.Subtract(ts);
- return dt;
- }
-
- // return the sum of the date with a date span
- inline wxDateTime Add(const wxDateSpan& diff) const;
- // add a date span (positive or negative)
- wxDateTime& Add(const wxDateSpan& diff);
- // add a date span (positive or negative)
- inline wxDateTime& operator+=(const wxDateSpan& diff);
- inline wxDateTime operator+(const wxDateSpan& ds) const
- {
- wxDateTime dt(*this);
- dt.Add(ds);
- return dt;
- }
-
- // return the difference of the date with a date span
- inline wxDateTime Subtract(const wxDateSpan& diff) const;
- // subtract a date span (positive or negative)
- inline wxDateTime& Subtract(const wxDateSpan& diff);
- // subtract a date span (positive or negative)
- inline wxDateTime& operator-=(const wxDateSpan& diff);
- inline wxDateTime operator-(const wxDateSpan& ds) const
- {
- wxDateTime dt(*this);
- dt.Subtract(ds);
- return dt;
- }
-
- // return the difference between two dates
- inline wxTimeSpan Subtract(const wxDateTime& dt) const;
- inline wxTimeSpan operator-(const wxDateTime& dt2) const;
-
- // conversion to/from text: all conversions from text return the pointer to
- // the next character following the date specification (i.e. the one where
- // the scan had to stop) or NULL on failure.
- // ------------------------------------------------------------------------
-
- // parse a string in RFC 822 format (found e.g. in mail headers and
- // having the form "Wed, 10 Feb 1999 19:07:07 +0100")
- const wxChar *ParseRfc822Date(const wxChar* date);
- // parse a date/time in the given format (see strptime(3)), fill in
- // the missing (in the string) fields with the values of dateDef (by
- // default, they will not change if they had valid values or will
- // default to Today() otherwise)
- const wxChar *ParseFormat(const wxChar *date,
- const wxChar *format = wxDefaultDateTimeFormat,
- const wxDateTime& dateDef = wxDefaultDateTime);
- // parse a string containing the date/time in "free" format, this
- // function will try to make an educated guess at the string contents
- const wxChar *ParseDateTime(const wxChar *datetime);
- // parse a string containing the date only in "free" format (less
- // flexible than ParseDateTime)
- const wxChar *ParseDate(const wxChar *date);
- // parse a string containing the time only in "free" format
- const wxChar *ParseTime(const wxChar *time);
-
- // this function accepts strftime()-like format string (default
- // argument corresponds to the preferred date and time representation
- // for the current locale) and returns the string containing the
- // resulting text representation
- wxString Format(const wxChar *format = wxDefaultDateTimeFormat,
- const TimeZone& tz = Local) const;
- // preferred date representation for the current locale
- wxString FormatDate() const { return Format(_T("%x")); }
- // preferred time representation for the current locale
- wxString FormatTime() const { return Format(_T("%X")); }
- // returns the string representing the date in ISO 8601 format
- // (YYYY-MM-DD)
- wxString FormatISODate() const { return Format(_T("%Y-%m-%d")); }
- // returns the string representing the time in ISO 8601 format
- // (HH:MM:SS)
- wxString FormatISOTime() const { return Format(_T("%H:%M:%S")); }
-
- // implementation
- // ------------------------------------------------------------------------
-
- // construct from internal representation
- wxDateTime(const wxLongLong& time) { m_time = time; }
-
- // get the internal representation
- inline wxLongLong GetValue() const;
-
- // a helper function to get the current time_t
- static time_t GetTimeNow() { return time((time_t *)NULL); }
-
- // another one to get the current time broken down
- static struct tm *GetTmNow()
- {
- static struct tm l_CurrentTime;
- return GetTmNow(&l_CurrentTime);
- }
-
- // get current time using thread-safe function
- static struct tm *GetTmNow(struct tm *tmstruct);
-
-private:
- // the current country - as it's the same for all program objects (unless
- // it runs on a _really_ big cluster system :-), this is a static member:
- // see SetCountry() and GetCountry()
- static Country ms_country;
-
- // this constant is used to transform a time_t value to the internal
- // representation, as time_t is in seconds and we use milliseconds it's
- // fixed to 1000
- static const long TIME_T_FACTOR;
-
- // returns true if we fall in range in which we can use standard ANSI C
- // functions
- inline bool IsInStdRange() const;
-
- // the internal representation of the time is the amount of milliseconds
- // elapsed since the origin which is set by convention to the UNIX/C epoch
- // value: the midnight of January 1, 1970 (UTC)
- wxLongLong m_time;
-};
-
-// ----------------------------------------------------------------------------
-// This class contains a difference between 2 wxDateTime values, so it makes
-// sense to add it to wxDateTime and it is the result of subtraction of 2
-// objects of that class. See also wxDateSpan.
-// ----------------------------------------------------------------------------
-
-class WXDLLIMPEXP_BASE wxTimeSpan
-{
-public:
- // constructors
- // ------------------------------------------------------------------------
-
- // return the timespan for the given number of milliseconds
- static wxTimeSpan Milliseconds(wxLongLong ms) { return wxTimeSpan(0, 0, 0, ms); }
- static wxTimeSpan Millisecond() { return Milliseconds(1); }
-
- // return the timespan for the given number of seconds
- static wxTimeSpan Seconds(wxLongLong sec) { return wxTimeSpan(0, 0, sec); }
- static wxTimeSpan Second() { return Seconds(1); }
-
- // return the timespan for the given number of minutes
- static wxTimeSpan Minutes(long min) { return wxTimeSpan(0, min, 0 ); }
- static wxTimeSpan Minute() { return Minutes(1); }
-
- // return the timespan for the given number of hours
- static wxTimeSpan Hours(long hours) { return wxTimeSpan(hours, 0, 0); }
- static wxTimeSpan Hour() { return Hours(1); }
-
- // return the timespan for the given number of days
- static wxTimeSpan Days(long days) { return Hours(24 * days); }
- static wxTimeSpan Day() { return Days(1); }
-
- // return the timespan for the given number of weeks
- static wxTimeSpan Weeks(long days) { return Days(7 * days); }
- static wxTimeSpan Week() { return Weeks(1); }
-
- // default ctor constructs the 0 time span
- wxTimeSpan() { }
-
- // from separate values for each component, date set to 0 (hours are
- // not restricted to 0..24 range, neither are minutes, seconds or
- // milliseconds)
- inline wxTimeSpan(long hours,
- long minutes = 0,
- wxLongLong seconds = 0,
- wxLongLong milliseconds = 0);
-
- // default copy ctor is ok
-
- // no dtor
-
- // arithmetics with time spans (see also below for more operators)
- // ------------------------------------------------------------------------
-
- // return the sum of two timespans
- inline wxTimeSpan Add(const wxTimeSpan& diff) const;
- // add two timespans together
- inline wxTimeSpan& Add(const wxTimeSpan& diff);
- // add two timespans together
- wxTimeSpan& operator+=(const wxTimeSpan& diff) { return Add(diff); }
- inline wxTimeSpan operator+(const wxTimeSpan& ts) const
- {
- return wxTimeSpan(GetValue() + ts.GetValue());
- }
-
- // return the difference of two timespans
- inline wxTimeSpan Subtract(const wxTimeSpan& diff) const;
- // subtract another timespan
- inline wxTimeSpan& Subtract(const wxTimeSpan& diff);
- // subtract another timespan
- wxTimeSpan& operator-=(const wxTimeSpan& diff) { return Subtract(diff); }
- inline wxTimeSpan operator-(const wxTimeSpan& ts)
- {
- return wxTimeSpan(GetValue() - ts.GetValue());
- }
-
- // multiply timespan by a scalar
- inline wxTimeSpan Multiply(int n) const;
- // multiply timespan by a scalar
- inline wxTimeSpan& Multiply(int n);
- // multiply timespan by a scalar
- wxTimeSpan& operator*=(int n) { return Multiply(n); }
- inline wxTimeSpan operator*(int n) const
- {
- return wxTimeSpan(*this).Multiply(n);
- }
-
- // return this timespan with opposite sign
- wxTimeSpan Negate() const { return wxTimeSpan(-GetValue()); }
- // negate the value of the timespan
- wxTimeSpan& Neg() { m_diff = -GetValue(); return *this; }
- // negate the value of the timespan
- wxTimeSpan& operator-() { return Neg(); }
-
- // return the absolute value of the timespan: does _not_ modify the
- // object
- inline wxTimeSpan Abs() const;
-
- // there is intentionally no division because we don't want to
- // introduce rounding errors in time calculations
-
- // comparaison (see also operator versions below)
- // ------------------------------------------------------------------------
-
- // is the timespan null?
- bool IsNull() const { return m_diff == 0l; }
- // returns true if the timespan is null
- bool operator!() const { return !IsNull(); }
-
- // is the timespan positive?
- bool IsPositive() const { return m_diff > 0l; }
-
- // is the timespan negative?
- bool IsNegative() const { return m_diff < 0l; }
-
- // are two timespans equal?
- inline bool IsEqualTo(const wxTimeSpan& ts) const;
- // compare two timestamps: works with the absolute values, i.e. -2
- // hours is longer than 1 hour. Also, it will return false if the
- // timespans are equal in absolute value.
- inline bool IsLongerThan(const wxTimeSpan& ts) const;
- // compare two timestamps: works with the absolute values, i.e. 1
- // hour is shorter than -2 hours. Also, it will return false if the
- // timespans are equal in absolute value.
- bool IsShorterThan(const wxTimeSpan& t) const { return !IsLongerThan(t); }
-
- inline bool operator<(const wxTimeSpan &ts) const
- {
- return GetValue() < ts.GetValue();
- }
-
- inline bool operator<=(const wxTimeSpan &ts) const
- {
- return GetValue() <= ts.GetValue();
- }
-
- inline bool operator>(const wxTimeSpan &ts) const
- {
- return GetValue() > ts.GetValue();
- }
-
- inline bool operator>=(const wxTimeSpan &ts) const
- {
- return GetValue() >= ts.GetValue();
- }
-
- inline bool operator==(const wxTimeSpan &ts) const
- {
- return GetValue() == ts.GetValue();
- }
-
- inline bool operator!=(const wxTimeSpan &ts) const
- {
- return GetValue() != ts.GetValue();
- }
-
- // breaking into days, hours, minutes and seconds
- // ------------------------------------------------------------------------
-
- // get the max number of weeks in this timespan
- inline int GetWeeks() const;
- // get the max number of days in this timespan
- inline int GetDays() const;
- // get the max number of hours in this timespan
- inline int GetHours() const;
- // get the max number of minutes in this timespan
- inline int GetMinutes() const;
- // get the max number of seconds in this timespan
- inline wxLongLong GetSeconds() const;
- // get the number of milliseconds in this timespan
- wxLongLong GetMilliseconds() const { return m_diff; }
-
- // conversion to text
- // ------------------------------------------------------------------------
-
- // this function accepts strftime()-like format string (default
- // argument corresponds to the preferred date and time representation
- // for the current locale) and returns the string containing the
- // resulting text representation. Notice that only some of format
- // specifiers valid for wxDateTime are valid for wxTimeSpan: hours,
- // minutes and seconds make sense, but not "PM/AM" string for example.
- wxString Format(const wxChar *format = wxDefaultTimeSpanFormat) const;
-
- // implementation
- // ------------------------------------------------------------------------
-
- // construct from internal representation
- wxTimeSpan(const wxLongLong& diff) { m_diff = diff; }
-
- // get the internal representation
- wxLongLong GetValue() const { return m_diff; }
-
-private:
- // the (signed) time span in milliseconds
- wxLongLong m_diff;
-};
-
-// ----------------------------------------------------------------------------
-// This class is a "logical time span" and is useful for implementing program
-// logic for such things as "add one month to the date" which, in general,
-// doesn't mean to add 60*60*24*31 seconds to it, but to take the same date
-// the next month (to understand that this is indeed different consider adding
-// one month to Feb, 15 - we want to get Mar, 15, of course).
-//
-// When adding a month to the date, all lesser components (days, hours, ...)
-// won't be changed unless the resulting date would be invalid: for example,
-// Jan 31 + 1 month will be Feb 28, not (non existing) Feb 31.
-//
-// Because of this feature, adding and subtracting back again the same
-// wxDateSpan will *not*, in general give back the original date: Feb 28 - 1
-// month will be Jan 28, not Jan 31!
-//
-// wxDateSpan can be either positive or negative. They may be
-// multiplied by scalars which multiply all deltas by the scalar: i.e. 2*(1
-// month and 1 day) is 2 months and 2 days. They can be added together and
-// with wxDateTime or wxTimeSpan, but the type of result is different for each
-// case.
-//
-// Beware about weeks: if you specify both weeks and days, the total number of
-// days added will be 7*weeks + days! See also GetTotalDays() function.
-//
-// Equality operators are defined for wxDateSpans. Two datespans are equal if
-// they both give the same target date when added to *every* source date.
-// Thus wxDateSpan::Months(1) is not equal to wxDateSpan::Days(30), because
-// they not give the same date when added to 1 Feb. But wxDateSpan::Days(14) is
-// equal to wxDateSpan::Weeks(2)
-//
-// Finally, notice that for adding hours, minutes &c you don't need this
-// class: wxTimeSpan will do the job because there are no subtleties
-// associated with those.
-// ----------------------------------------------------------------------------
-
-class WXDLLIMPEXP_BASE wxDateSpan
-{
-public:
- // constructors
- // ------------------------------------------------------------------------
-
- // this many years/months/weeks/days
- wxDateSpan(int years = 0, int months = 0, int weeks = 0, int days = 0)
- {
- m_years = years;
- m_months = months;
- m_weeks = weeks;
- m_days = days;
- }
-
- // get an object for the given number of days
- static wxDateSpan Days(int days) { return wxDateSpan(0, 0, 0, days); }
- static wxDateSpan Day() { return Days(1); }
-
- // get an object for the given number of weeks
- static wxDateSpan Weeks(int weeks) { return wxDateSpan(0, 0, weeks, 0); }
- static wxDateSpan Week() { return Weeks(1); }
-
- // get an object for the given number of months
- static wxDateSpan Months(int mon) { return wxDateSpan(0, mon, 0, 0); }
- static wxDateSpan Month() { return Months(1); }
-
- // get an object for the given number of years
- static wxDateSpan Years(int years) { return wxDateSpan(years, 0, 0, 0); }
- static wxDateSpan Year() { return Years(1); }
-
- // default copy ctor is ok
-
- // no dtor
-
- // accessors (all SetXXX() return the (modified) wxDateSpan object)
- // ------------------------------------------------------------------------
-
- // set number of years
- wxDateSpan& SetYears(int n) { m_years = n; return *this; }
- // set number of months
- wxDateSpan& SetMonths(int n) { m_months = n; return *this; }
- // set number of weeks
- wxDateSpan& SetWeeks(int n) { m_weeks = n; return *this; }
- // set number of days
- wxDateSpan& SetDays(int n) { m_days = n; return *this; }
-
- // get number of years
- int GetYears() const { return m_years; }
- // get number of months
- int GetMonths() const { return m_months; }
- // get number of weeks
- int GetWeeks() const { return m_weeks; }
- // get number of days
- int GetDays() const { return m_days; }
- // returns 7*GetWeeks() + GetDays()
- int GetTotalDays() const { return 7*m_weeks + m_days; }
-
- // arithmetics with date spans (see also below for more operators)
- // ------------------------------------------------------------------------
-
- // return sum of two date spans
- inline wxDateSpan Add(const wxDateSpan& other) const;
- // add another wxDateSpan to us
- inline wxDateSpan& Add(const wxDateSpan& other);
- // add another wxDateSpan to us
- inline wxDateSpan& operator+=(const wxDateSpan& other);
- inline wxDateSpan operator+(const wxDateSpan& ds) const
- {
- return wxDateSpan(GetYears() + ds.GetYears(),
- GetMonths() + ds.GetMonths(),
- GetWeeks() + ds.GetWeeks(),
- GetDays() + ds.GetDays());
- }
-
- // return difference of two date spans
- inline wxDateSpan Subtract(const wxDateSpan& other) const;
- // subtract another wxDateSpan from us
- inline wxDateSpan& Subtract(const wxDateSpan& other);
- // subtract another wxDateSpan from us
- inline wxDateSpan& operator-=(const wxDateSpan& other);
- inline wxDateSpan operator-(const wxDateSpan& ds) const
- {
- return wxDateSpan(GetYears() - ds.GetYears(),
- GetMonths() - ds.GetMonths(),
- GetWeeks() - ds.GetWeeks(),
- GetDays() - ds.GetDays());
- }
-
- // return a copy of this time span with changed sign
- inline wxDateSpan Negate() const;
- // inverse the sign of this timespan
- inline wxDateSpan& Neg();
- // inverse the sign of this timespan
- wxDateSpan& operator-() { return Neg(); }
-
- // return the date span proportional to this one with given factor
- inline wxDateSpan Multiply(int factor) const;
- // multiply all components by a (signed) number
- inline wxDateSpan& Multiply(int factor);
- // multiply all components by a (signed) number
- inline wxDateSpan& operator*=(int factor) { return Multiply(factor); }
- inline wxDateSpan operator*(int n) const
- {
- return wxDateSpan(*this).Multiply(n);
- }
-
- // ds1 == d2 if and only if for every wxDateTime t t + ds1 == t + ds2
- inline bool operator==(const wxDateSpan& ds) const
- {
- return GetYears() == ds.GetYears() &&
- GetMonths() == ds.GetMonths() &&
- GetTotalDays() == ds.GetTotalDays();
- }
-
- inline bool operator!=(const wxDateSpan& ds) const
- {
- return !(*this == ds);
- }
-
-private:
- int m_years,
- m_months,
- m_weeks,
- m_days;
-};
-
-// ----------------------------------------------------------------------------
-// wxDateTimeArray: array of dates.
-// ----------------------------------------------------------------------------
-
-WX_DECLARE_USER_EXPORTED_OBJARRAY(wxDateTime, wxDateTimeArray, WXDLLIMPEXP_BASE);
-
-// ----------------------------------------------------------------------------
-// wxDateTimeHolidayAuthority: an object of this class will decide whether a
-// given date is a holiday and is used by all functions working with "work
-// days".
-//
-// NB: the base class is an ABC, derived classes must implement the pure
-// virtual methods to work with the holidays they correspond to.
-// ----------------------------------------------------------------------------
-
-class WXDLLIMPEXP_FWD_BASE wxDateTimeHolidayAuthority;
-WX_DEFINE_USER_EXPORTED_ARRAY_PTR(wxDateTimeHolidayAuthority *,
- wxHolidayAuthoritiesArray,
- class WXDLLIMPEXP_BASE);
-
-class wxDateTimeHolidaysModule;
-class WXDLLIMPEXP_BASE wxDateTimeHolidayAuthority
-{
-friend class wxDateTimeHolidaysModule;
-public:
- // returns true if the given date is a holiday
- static bool IsHoliday(const wxDateTime& dt);
-
- // fills the provided array with all holidays in the given range, returns
- // the number of them
- static size_t GetHolidaysInRange(const wxDateTime& dtStart,
- const wxDateTime& dtEnd,
- wxDateTimeArray& holidays);
-
- // clear the list of holiday authorities
- static void ClearAllAuthorities();
-
- // add a new holiday authority (the pointer will be deleted by
- // wxDateTimeHolidayAuthority)
- static void AddAuthority(wxDateTimeHolidayAuthority *auth);
-
- // the base class must have a virtual dtor
- virtual ~wxDateTimeHolidayAuthority();
-
-protected:
- // this function is called to determine whether a given day is a holiday
- virtual bool DoIsHoliday(const wxDateTime& dt) const = 0;
-
- // this function should fill the array with all holidays between the two
- // given dates - it is implemented in the base class, but in a very
- // inefficient way (it just iterates over all days and uses IsHoliday() for
- // each of them), so it must be overridden in the derived class where the
- // base class version may be explicitly used if needed
- //
- // returns the number of holidays in the given range and fills holidays
- // array
- virtual size_t DoGetHolidaysInRange(const wxDateTime& dtStart,
- const wxDateTime& dtEnd,
- wxDateTimeArray& holidays) const = 0;
-
-private:
- // all holiday authorities
- static wxHolidayAuthoritiesArray ms_authorities;
-};
-
-// the holidays for this class are all Saturdays and Sundays
-class WXDLLIMPEXP_BASE wxDateTimeWorkDays : public wxDateTimeHolidayAuthority
-{
-protected:
- virtual bool DoIsHoliday(const wxDateTime& dt) const;
- virtual size_t DoGetHolidaysInRange(const wxDateTime& dtStart,
- const wxDateTime& dtEnd,
- wxDateTimeArray& holidays) const;
-};
-
-// ============================================================================
-// inline functions implementation
-// ============================================================================
-
-// ----------------------------------------------------------------------------
-// private macros
-// ----------------------------------------------------------------------------
-
-#define MILLISECONDS_PER_DAY 86400000l
-
-// some broken compilers (HP-UX CC) refuse to compile the "normal" version, but
-// using a temp variable always might prevent other compilers from optimising
-// it away - hence use of this ugly macro
-#ifndef __HPUX__
- #define MODIFY_AND_RETURN(op) return wxDateTime(*this).op
-#else
- #define MODIFY_AND_RETURN(op) wxDateTime dt(*this); dt.op; return dt
-#endif
-
-// ----------------------------------------------------------------------------
-// wxDateTime construction
-// ----------------------------------------------------------------------------
-
-inline bool wxDateTime::IsInStdRange() const
-{
- return m_time >= 0l && (m_time / TIME_T_FACTOR) < LONG_MAX;
-}
-
-/* static */
-inline wxDateTime wxDateTime::Now()
-{
- struct tm tmstruct;
- return wxDateTime(*GetTmNow(&tmstruct));
-}
-
-/* static */
-inline wxDateTime wxDateTime::Today()
-{
- wxDateTime dt(Now());
- dt.ResetTime();
-
- return dt;
-}
-
-#if (!(defined(__VISAGECPP__) && __IBMCPP__ >= 400))
-inline wxDateTime& wxDateTime::Set(time_t timet)
-{
- // assign first to avoid long multiplication overflow!
- m_time = timet - WX_TIME_BASE_OFFSET ;
- m_time *= TIME_T_FACTOR;
-
- return *this;
-}
-#endif
-
-inline wxDateTime& wxDateTime::SetToCurrent()
-{
- *this = Now();
- return *this;
-}
-
-#if (!(defined(__VISAGECPP__) && __IBMCPP__ >= 400))
-inline wxDateTime::wxDateTime(time_t timet)
-{
- Set(timet);
-}
-#endif
-
-inline wxDateTime::wxDateTime(const struct tm& tm)
-{
- Set(tm);
-}
-
-inline wxDateTime::wxDateTime(const Tm& tm)
-{
- Set(tm);
-}
-
-inline wxDateTime::wxDateTime(double jdn)
-{
- Set(jdn);
-}
-
-inline wxDateTime& wxDateTime::Set(const Tm& tm)
-{
- wxASSERT_MSG( tm.IsValid(), _T("invalid broken down date/time") );
-
- return Set(tm.mday, (Month)tm.mon, tm.year,
- tm.hour, tm.min, tm.sec, tm.msec);
-}
-
-inline wxDateTime::wxDateTime(wxDateTime_t hour,
- wxDateTime_t minute,
- wxDateTime_t second,
- wxDateTime_t millisec)
-{
- Set(hour, minute, second, millisec);
-}
-
-inline wxDateTime::wxDateTime(wxDateTime_t day,
- Month month,
- int year,
- wxDateTime_t hour,
- wxDateTime_t minute,
- wxDateTime_t second,
- wxDateTime_t millisec)
-{
- Set(day, month, year, hour, minute, second, millisec);
-}
-
-// ----------------------------------------------------------------------------
-// wxDateTime accessors
-// ----------------------------------------------------------------------------
-
-inline wxLongLong wxDateTime::GetValue() const
-{
- wxASSERT_MSG( IsValid(), _T("invalid wxDateTime"));
-
- return m_time;
-}
-
-inline time_t wxDateTime::GetTicks() const
-{
- wxASSERT_MSG( IsValid(), _T("invalid wxDateTime"));
- if ( !IsInStdRange() )
- {
- return (time_t)-1;
- }
-
- return (time_t)((m_time / (long)TIME_T_FACTOR).ToLong()) + WX_TIME_BASE_OFFSET;
-}
-
-inline bool wxDateTime::SetToLastWeekDay(WeekDay weekday,
- Month month,
- int year)
-{
- return SetToWeekDay(weekday, -1, month, year);
-}
-
-inline wxDateTime
-wxDateTime::GetWeekDayInSameWeek(WeekDay weekday,
- WeekFlags WXUNUSED(flags)) const
-{
- MODIFY_AND_RETURN( SetToWeekDayInSameWeek(weekday) );
-}
-
-inline wxDateTime wxDateTime::GetNextWeekDay(WeekDay weekday) const
-{
- MODIFY_AND_RETURN( SetToNextWeekDay(weekday) );
-}
-
-inline wxDateTime wxDateTime::GetPrevWeekDay(WeekDay weekday) const
-{
- MODIFY_AND_RETURN( SetToPrevWeekDay(weekday) );
-}
-
-inline wxDateTime wxDateTime::GetWeekDay(WeekDay weekday,
- int n,
- Month month,
- int year) const
-{
- wxDateTime dt(*this);
-
- return dt.SetToWeekDay(weekday, n, month, year) ? dt : wxInvalidDateTime;
-}
-
-inline wxDateTime wxDateTime::GetLastWeekDay(WeekDay weekday,
- Month month,
- int year)
-{
- wxDateTime dt(*this);
-
- return dt.SetToLastWeekDay(weekday, month, year) ? dt : wxInvalidDateTime;
-}
-
-inline wxDateTime wxDateTime::GetLastMonthDay(Month month, int year) const
-{
- MODIFY_AND_RETURN( SetToLastMonthDay(month, year) );
-}
-
-inline wxDateTime wxDateTime::GetYearDay(wxDateTime_t yday) const
-{
- MODIFY_AND_RETURN( SetToYearDay(yday) );
-}
-
-// ----------------------------------------------------------------------------
-// wxDateTime comparison
-// ----------------------------------------------------------------------------
-
-inline bool wxDateTime::IsEqualTo(const wxDateTime& datetime) const
-{
- wxASSERT_MSG( IsValid() && datetime.IsValid(), _T("invalid wxDateTime"));
-
- return m_time == datetime.m_time;
-}
-
-inline bool wxDateTime::IsEarlierThan(const wxDateTime& datetime) const
-{
- wxASSERT_MSG( IsValid() && datetime.IsValid(), _T("invalid wxDateTime"));
-
- return m_time < datetime.m_time;
-}
-
-inline bool wxDateTime::IsLaterThan(const wxDateTime& datetime) const
-{
- wxASSERT_MSG( IsValid() && datetime.IsValid(), _T("invalid wxDateTime"));
-
- return m_time > datetime.m_time;
-}
-
-inline bool wxDateTime::IsStrictlyBetween(const wxDateTime& t1,
- const wxDateTime& t2) const
-{
- // no need for assert, will be checked by the functions we call
- return IsLaterThan(t1) && IsEarlierThan(t2);
-}
-
-inline bool wxDateTime::IsBetween(const wxDateTime& t1,
- const wxDateTime& t2) const
-{
- // no need for assert, will be checked by the functions we call
- return IsEqualTo(t1) || IsEqualTo(t2) || IsStrictlyBetween(t1, t2);
-}
-
-inline bool wxDateTime::IsSameDate(const wxDateTime& dt) const
-{
- Tm tm1 = GetTm(),
- tm2 = dt.GetTm();
-
- return tm1.year == tm2.year &&
- tm1.mon == tm2.mon &&
- tm1.mday == tm2.mday;
-}
-
-inline bool wxDateTime::IsSameTime(const wxDateTime& dt) const
-{
- // notice that we can't do something like this:
- //
- // m_time % MILLISECONDS_PER_DAY == dt.m_time % MILLISECONDS_PER_DAY
- //
- // because we have also to deal with (possibly) different DST settings!
- Tm tm1 = GetTm(),
- tm2 = dt.GetTm();
-
- return tm1.hour == tm2.hour &&
- tm1.min == tm2.min &&
- tm1.sec == tm2.sec &&
- tm1.msec == tm2.msec;
-}
-
-inline bool wxDateTime::IsEqualUpTo(const wxDateTime& dt,
- const wxTimeSpan& ts) const
-{
- return IsBetween(dt.Subtract(ts), dt.Add(ts));
-}
-
-// ----------------------------------------------------------------------------
-// wxDateTime arithmetics
-// ----------------------------------------------------------------------------
-
-inline wxDateTime wxDateTime::Add(const wxTimeSpan& diff) const
-{
- wxASSERT_MSG( IsValid(), _T("invalid wxDateTime"));
-
- return wxDateTime(m_time + diff.GetValue());
-}
-
-inline wxDateTime& wxDateTime::Add(const wxTimeSpan& diff)
-{
- wxASSERT_MSG( IsValid(), _T("invalid wxDateTime"));
-
- m_time += diff.GetValue();
-
- return *this;
-}
-
-inline wxDateTime& wxDateTime::operator+=(const wxTimeSpan& diff)
-{
- return Add(diff);
-}
-
-inline wxDateTime wxDateTime::Subtract(const wxTimeSpan& diff) const
-{
- wxASSERT_MSG( IsValid(), _T("invalid wxDateTime"));
-
- return wxDateTime(m_time - diff.GetValue());
-}
-
-inline wxDateTime& wxDateTime::Subtract(const wxTimeSpan& diff)
-{
- wxASSERT_MSG( IsValid(), _T("invalid wxDateTime"));
-
- m_time -= diff.GetValue();
-
- return *this;
-}
-
-inline wxDateTime& wxDateTime::operator-=(const wxTimeSpan& diff)
-{
- return Subtract(diff);
-}
-
-inline wxTimeSpan wxDateTime::Subtract(const wxDateTime& datetime) const
-{
- wxASSERT_MSG( IsValid() && datetime.IsValid(), _T("invalid wxDateTime"));
-
- return wxTimeSpan(GetValue() - datetime.GetValue());
-}
-
-inline wxTimeSpan wxDateTime::operator-(const wxDateTime& dt2) const
-{
- return this->Subtract(dt2);
-}
-
-inline wxDateTime wxDateTime::Add(const wxDateSpan& diff) const
-{
- return wxDateTime(*this).Add(diff);
-}
-
-inline wxDateTime& wxDateTime::Subtract(const wxDateSpan& diff)
-{
- return Add(diff.Negate());
-}
-
-inline wxDateTime wxDateTime::Subtract(const wxDateSpan& diff) const
-{
- return wxDateTime(*this).Subtract(diff);
-}
-
-inline wxDateTime& wxDateTime::operator-=(const wxDateSpan& diff)
-{
- return Subtract(diff);
-}
-
-inline wxDateTime& wxDateTime::operator+=(const wxDateSpan& diff)
-{
- return Add(diff);
-}
-
-// ----------------------------------------------------------------------------
-// wxDateTime and timezones
-// ----------------------------------------------------------------------------
-
-inline wxDateTime
-wxDateTime::ToTimezone(const wxDateTime::TimeZone& tz, bool noDST) const
-{
- MODIFY_AND_RETURN( MakeTimezone(tz, noDST) );
-}
-
-inline wxDateTime
-wxDateTime::FromTimezone(const wxDateTime::TimeZone& tz, bool noDST) const
-{
- MODIFY_AND_RETURN( MakeFromTimezone(tz, noDST) );
-}
-
-// ----------------------------------------------------------------------------
-// wxTimeSpan construction
-// ----------------------------------------------------------------------------
-
-inline wxTimeSpan::wxTimeSpan(long hours,
- long minutes,
- wxLongLong seconds,
- wxLongLong milliseconds)
-{
- // assign first to avoid precision loss
- m_diff = hours;
- m_diff *= 60l;
- m_diff += minutes;
- m_diff *= 60l;
- m_diff += seconds;
- m_diff *= 1000l;
- m_diff += milliseconds;
-}
-
-// ----------------------------------------------------------------------------
-// wxTimeSpan accessors
-// ----------------------------------------------------------------------------
-
-inline wxLongLong wxTimeSpan::GetSeconds() const
-{
- return m_diff / 1000l;
-}
-
-inline int wxTimeSpan::GetMinutes() const
-{
- // explicit cast to int suppresses a warning with CodeWarrior and possibly
- // others (changing the return type to long from int is impossible in 2.8)
- return (int)((GetSeconds() / 60l).GetLo());
-}
-
-inline int wxTimeSpan::GetHours() const
-{
- return GetMinutes() / 60;
-}
-
-inline int wxTimeSpan::GetDays() const
-{
- return GetHours() / 24;
-}
-
-inline int wxTimeSpan::GetWeeks() const
-{
- return GetDays() / 7;
-}
-
-// ----------------------------------------------------------------------------
-// wxTimeSpan arithmetics
-// ----------------------------------------------------------------------------
-
-inline wxTimeSpan wxTimeSpan::Add(const wxTimeSpan& diff) const
-{
- return wxTimeSpan(m_diff + diff.GetValue());
-}
-
-inline wxTimeSpan& wxTimeSpan::Add(const wxTimeSpan& diff)
-{
- m_diff += diff.GetValue();
-
- return *this;
-}
-
-inline wxTimeSpan wxTimeSpan::Subtract(const wxTimeSpan& diff) const
-{
- return wxTimeSpan(m_diff - diff.GetValue());
-}
-
-inline wxTimeSpan& wxTimeSpan::Subtract(const wxTimeSpan& diff)
-{
- m_diff -= diff.GetValue();
-
- return *this;
-}
-
-inline wxTimeSpan& wxTimeSpan::Multiply(int n)
-{
- m_diff *= (long)n;
-
- return *this;
-}
-
-inline wxTimeSpan wxTimeSpan::Multiply(int n) const
-{
- return wxTimeSpan(m_diff * (long)n);
-}
-
-inline wxTimeSpan wxTimeSpan::Abs() const
-{
- return wxTimeSpan(GetValue().Abs());
-}
-
-inline bool wxTimeSpan::IsEqualTo(const wxTimeSpan& ts) const
-{
- return GetValue() == ts.GetValue();
-}
-
-inline bool wxTimeSpan::IsLongerThan(const wxTimeSpan& ts) const
-{
- return GetValue().Abs() > ts.GetValue().Abs();
-}
-
-// ----------------------------------------------------------------------------
-// wxDateSpan
-// ----------------------------------------------------------------------------
-
-inline wxDateSpan& wxDateSpan::operator+=(const wxDateSpan& other)
-{
- m_years += other.m_years;
- m_months += other.m_months;
- m_weeks += other.m_weeks;
- m_days += other.m_days;
-
- return *this;
-}
-
-inline wxDateSpan& wxDateSpan::Add(const wxDateSpan& other)
-{
- return *this += other;
-}
-
-inline wxDateSpan wxDateSpan::Add(const wxDateSpan& other) const
-{
- wxDateSpan ds(*this);
- ds.Add(other);
- return ds;
-}
-
-inline wxDateSpan& wxDateSpan::Multiply(int factor)
-{
- m_years *= factor;
- m_months *= factor;
- m_weeks *= factor;
- m_days *= factor;
-
- return *this;
-}
-
-inline wxDateSpan wxDateSpan::Multiply(int factor) const
-{
- wxDateSpan ds(*this);
- ds.Multiply(factor);
- return ds;
-}
-
-inline wxDateSpan wxDateSpan::Negate() const
-{
- return wxDateSpan(-m_years, -m_months, -m_weeks, -m_days);
-}
-
-inline wxDateSpan& wxDateSpan::Neg()
-{
- m_years = -m_years;
- m_months = -m_months;
- m_weeks = -m_weeks;
- m_days = -m_days;
-
- return *this;
-}
-
-inline wxDateSpan& wxDateSpan::operator-=(const wxDateSpan& other)
-{
- return *this += other.Negate();
-}
-
-inline wxDateSpan& wxDateSpan::Subtract(const wxDateSpan& other)
-{
- return *this -= other;
-}
-
-inline wxDateSpan wxDateSpan::Subtract(const wxDateSpan& other) const
-{
- wxDateSpan ds(*this);
- ds.Subtract(other);
- return ds;
-}
-
-#undef MILLISECONDS_PER_DAY
-
-#undef MODIFY_AND_RETURN
-
-// ============================================================================
-// binary operators
-// ============================================================================
-
-// ----------------------------------------------------------------------------
-// wxTimeSpan operators
-// ----------------------------------------------------------------------------
-
-wxTimeSpan WXDLLIMPEXP_BASE operator*(int n, const wxTimeSpan& ts);
-
-// ----------------------------------------------------------------------------
-// wxDateSpan
-// ----------------------------------------------------------------------------
-
-wxDateSpan WXDLLIMPEXP_BASE operator*(int n, const wxDateSpan& ds);
-
-// ============================================================================
-// other helper functions
-// ============================================================================
-
-// ----------------------------------------------------------------------------
-// iteration helpers: can be used to write a for loop over enum variable like
-// this:
-// for ( m = wxDateTime::Jan; m < wxDateTime::Inv_Month; wxNextMonth(m) )
-// ----------------------------------------------------------------------------
-
-WXDLLIMPEXP_BASE void wxNextMonth(wxDateTime::Month& m);
-WXDLLIMPEXP_BASE void wxPrevMonth(wxDateTime::Month& m);
-WXDLLIMPEXP_BASE void wxNextWDay(wxDateTime::WeekDay& wd);
-WXDLLIMPEXP_BASE void wxPrevWDay(wxDateTime::WeekDay& wd);
-
-#endif // wxUSE_DATETIME
-
-#endif // _WX_DATETIME_H
diff --git a/Externals/wxWidgets/include/wx/datstrm.h b/Externals/wxWidgets/include/wx/datstrm.h
deleted file mode 100644
index 709e1007ba..0000000000
--- a/Externals/wxWidgets/include/wx/datstrm.h
+++ /dev/null
@@ -1,170 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-// Name: datstrm.h
-// Purpose: Data stream classes
-// Author: Guilhem Lavaux
-// Modified by: Mickael Gilabert
-// Created: 28/06/1998
-// RCS-ID: $Id: datstrm.h 38576 2006-04-05 16:10:08Z VZ $
-// Copyright: (c) Guilhem Lavaux
-// Licence: wxWindows licence
-/////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_DATSTREAM_H_
-#define _WX_DATSTREAM_H_
-
-#include "wx/stream.h"
-#include "wx/longlong.h"
-#include "wx/convauto.h"
-
-#if wxUSE_STREAMS
-
-class WXDLLIMPEXP_BASE wxDataInputStream
-{
-public:
-#if wxUSE_UNICODE
- wxDataInputStream(wxInputStream& s, const wxMBConv& conv = wxConvAuto());
-#else
- wxDataInputStream(wxInputStream& s);
-#endif
- ~wxDataInputStream();
-
- bool IsOk() { return m_input->IsOk(); }
-
-#if wxHAS_INT64
- wxUint64 Read64();
-#endif
-#if wxUSE_LONGLONG
- wxLongLong ReadLL();
-#endif
- wxUint32 Read32();
- wxUint16 Read16();
- wxUint8 Read8();
- double ReadDouble();
- wxString ReadString();
-
-#if wxHAS_INT64
- void Read64(wxUint64 *buffer, size_t size);
- void Read64(wxInt64 *buffer, size_t size);
-#endif
-#if defined(wxLongLong_t) && wxUSE_LONGLONG
- void Read64(wxULongLong *buffer, size_t size);
- void Read64(wxLongLong *buffer, size_t size);
-#endif
-#if wxUSE_LONGLONG
- void ReadLL(wxULongLong *buffer, size_t size);
- void ReadLL(wxLongLong *buffer, size_t size);
-#endif
- void Read32(wxUint32 *buffer, size_t size);
- void Read16(wxUint16 *buffer, size_t size);
- void Read8(wxUint8 *buffer, size_t size);
- void ReadDouble(double *buffer, size_t size);
-
- wxDataInputStream& operator>>(wxString& s);
- wxDataInputStream& operator>>(wxInt8& c);
- wxDataInputStream& operator>>(wxInt16& i);
- wxDataInputStream& operator>>(wxInt32& i);
- wxDataInputStream& operator>>(wxUint8& c);
- wxDataInputStream& operator>>(wxUint16& i);
- wxDataInputStream& operator>>(wxUint32& i);
-#if wxHAS_INT64
- wxDataInputStream& operator>>(wxUint64& i);
- wxDataInputStream& operator>>(wxInt64& i);
-#endif
-#if defined(wxLongLong_t) && wxUSE_LONGLONG
- wxDataInputStream& operator>>(wxULongLong& i);
- wxDataInputStream& operator>>(wxLongLong& i);
-#endif
- wxDataInputStream& operator>>(double& i);
- wxDataInputStream& operator>>(float& f);
-
- void BigEndianOrdered(bool be_order) { m_be_order = be_order; }
-
-protected:
- wxInputStream *m_input;
- bool m_be_order;
-#if wxUSE_UNICODE
- wxMBConv *m_conv;
-#endif
-
- DECLARE_NO_COPY_CLASS(wxDataInputStream)
-};
-
-class WXDLLIMPEXP_BASE wxDataOutputStream
-{
-public:
-#if wxUSE_UNICODE
- wxDataOutputStream(wxOutputStream& s, const wxMBConv& conv = wxConvAuto());
-#else
- wxDataOutputStream(wxOutputStream& s);
-#endif
- ~wxDataOutputStream();
-
- bool IsOk() { return m_output->IsOk(); }
-
-#if wxHAS_INT64
- void Write64(wxUint64 i);
- void Write64(wxInt64 i);
-#endif
-#if wxUSE_LONGLONG
- void WriteLL(const wxLongLong &ll);
- void WriteLL(const wxULongLong &ll);
-#endif
- void Write32(wxUint32 i);
- void Write16(wxUint16 i);
- void Write8(wxUint8 i);
- void WriteDouble(double d);
- void WriteString(const wxString& string);
-
-#if wxHAS_INT64
- void Write64(const wxUint64 *buffer, size_t size);
- void Write64(const wxInt64 *buffer, size_t size);
-#endif
-#if defined(wxLongLong_t) && wxUSE_LONGLONG
- void Write64(const wxULongLong *buffer, size_t size);
- void Write64(const wxLongLong *buffer, size_t size);
-#endif
-#if wxUSE_LONGLONG
- void WriteLL(const wxULongLong *buffer, size_t size);
- void WriteLL(const wxLongLong *buffer, size_t size);
-#endif
- void Write32(const wxUint32 *buffer, size_t size);
- void Write16(const wxUint16 *buffer, size_t size);
- void Write8(const wxUint8 *buffer, size_t size);
- void WriteDouble(const double *buffer, size_t size);
-
- wxDataOutputStream& operator<<(const wxChar *string);
- wxDataOutputStream& operator<<(const wxString& string);
- wxDataOutputStream& operator<<(wxInt8 c);
- wxDataOutputStream& operator<<(wxInt16 i);
- wxDataOutputStream& operator<<(wxInt32 i);
- wxDataOutputStream& operator<<(wxUint8 c);
- wxDataOutputStream& operator<<(wxUint16 i);
- wxDataOutputStream& operator<<(wxUint32 i);
-#if wxHAS_INT64
- wxDataOutputStream& operator<<(wxUint64 i);
- wxDataOutputStream& operator<<(wxInt64 i);
-#endif
-#if defined(wxLongLong_t) && wxUSE_LONGLONG
- wxDataOutputStream& operator<<(const wxULongLong &i);
- wxDataOutputStream& operator<<(const wxLongLong &i);
-#endif
- wxDataOutputStream& operator<<(double f);
- wxDataOutputStream& operator<<(float f);
-
- void BigEndianOrdered(bool be_order) { m_be_order = be_order; }
-
-protected:
- wxOutputStream *m_output;
- bool m_be_order;
-#if wxUSE_UNICODE
- wxMBConv *m_conv;
-#endif
-
- DECLARE_NO_COPY_CLASS(wxDataOutputStream)
-};
-
-#endif
- // wxUSE_STREAMS
-
-#endif
- // _WX_DATSTREAM_H_
diff --git a/Externals/wxWidgets/include/wx/db.h b/Externals/wxWidgets/include/wx/db.h
deleted file mode 100644
index 013bc22760..0000000000
--- a/Externals/wxWidgets/include/wx/db.h
+++ /dev/null
@@ -1,853 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Name: wx/db.h
-// Purpose: Header file wxDb class. The wxDb class represents a connection
-// to an ODBC data source. The wxDb class allows operations on the data
-// source such as opening and closing the data source.
-// Author: Doug Card
-// Modified by: George Tasker
-// Bart Jourquin
-// Mark Johnson, wxWindows@mj10777.de
-// Mods: Dec, 1998:
-// -Added support for SQL statement logging and database cataloging
-// April, 1999
-// -Added QUERY_ONLY mode support to reduce default number of cursors
-// -Added additional SQL logging code
-// -Added DEBUG-ONLY tracking of Ctable objects to detect orphaned DB connections
-// -Set ODBC option to only read committed writes to the DB so all
-// databases operate the same in that respect
-//
-// Created: 9.96
-// RCS-ID: $Id: db.h 56697 2008-11-07 22:45:47Z VZ $
-// Copyright: (c) 1996 Remstar International, Inc.
-// Licence: wxWindows licence
-///////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_DB_H_
-#define _WX_DB_H_
-
-
-// BJO 20000503: introduce new GetColumns members which are more database independent and
-// return columns in the order they were created
-#define OLD_GETCOLUMNS 1
-#define EXPERIMENTAL_WXDB_FUNCTIONS 1
-
-#include "wx/defs.h"
-#include "wx/string.h"
-
-#if defined(__VISUALC__)
- // we need to include standard Windows headers but we can't include
- // directly when using MFC because it includes it itself in a
- // different manner
- #if wxUSE_MFC
- #include
- #else // !wxUSE_MFC
- #include "wx/msw/wrapwin.h"
- #endif // wxUSE_MFC/!wxUSE_MFC
-
- // If you use the wxDbCreateDataSource() function with MSW/VC6,
- // you cannot use the iODBC headers, you must use the VC headers,
- // plus the odbcinst.h header - gt Nov 2 2000
- //
- // Must add "odbccp32.lib" in \wx2\wxWidgets\src\makevc.env to the WINLIBS= line
- //
- #include "sql.h"
- #include "sqlext.h"
- //#if wxUSE_UNICODE
- // #include
- //#endif
- #include "odbcinst.h"
-#else
- #if defined(__WINDOWS__) && ( defined(HAVE_W32API_H) || defined(__BORLANDC__) || defined (__DMC__))
- #include "wx/msw/wrapwin.h"
- #endif
- extern "C" {
- #if defined(wxUSE_BUILTIN_IODBC) && wxUSE_BUILTIN_IODBC
- // Use the ones from the library
- #include "wx/isql.h"
- #include "wx/isqlext.h"
- // Not available in v2.x of iODBC
- #ifndef __WXMSW__
- #if wxUSE_UNICODE
- typedef wxChar SQLTCHAR;
- #else
- typedef UCHAR SQLTCHAR;
- #endif
- #endif
- #else // !wxUSE_BUILTIN_IODBC
- // SQL headers define BOOL if it's not defined yet but BOOL is also
- // defined in many other places on other systems (Motif, at least on
- // OpenVMS; Cocoa and X11) so prevent the problem by defining it before
- // including these headers
- #ifndef BOOL
- #define BOOL int
- #include
- #include
- #undef BOOL
- #else
- #include
- #include
- #endif
- #endif // wxUSE_BUILTIN_IODBC/!wxUSE_BUILTIN_IODBC
- }
-#endif
-
-#if wxUSE_UNICODE
-#define SQL_C_WXCHAR SQL_C_WCHAR
-#else
-#define SQL_C_WXCHAR SQL_C_CHAR
-#endif
-
-#ifdef __DIGITALMARS__
-#if wxUSE_UNICODE
-typedef wxChar SQLTCHAR;
-#else
-typedef UCHAR SQLTCHAR;
-#endif
-#endif
-
-typedef float SFLOAT;
-typedef double SDOUBLE;
-typedef unsigned int UINT;
-#define ULONG UDWORD
-
-#ifndef wxODBC_FWD_ONLY_CURSORS
-#define wxODBC_FWD_ONLY_CURSORS 1
-#endif
-
-enum enumDummy {enumDum1};
-
-#ifndef SQL_C_BOOLEAN
- #define SQL_C_BOOLEAN(datatype) (sizeof(datatype) == 1 ? SQL_C_UTINYINT : (sizeof(datatype) == 2 ? SQL_C_USHORT : SQL_C_ULONG))
-#endif
-
-#ifndef SQL_C_ENUM
- #define SQL_C_ENUM (sizeof(enumDummy) == 2 ? SQL_C_USHORT : SQL_C_ULONG)
-#endif
-
-// NOTE: If SQL_C_BLOB is defined, and it is not SQL_C_BINARY, iODBC 2.x
-// may not function correctly. Likely best to use SQL_C_BINARY direct
-#ifndef SQL_C_BLOB
- #ifdef SQL_C_BINARY
- #define SQL_C_BLOB SQL_C_BINARY
- #endif
-#endif
-
-#ifndef _WIN64
-#ifndef SQLLEN
-#define SQLLEN SQLINTEGER
-#endif
-#ifndef SQLULEN
-#define SQLULEN SQLUINTEGER
-#endif
-#endif
-
-const int wxDB_PATH_MAX = 254;
-
-extern WXDLLIMPEXP_DATA_ODBC(wxChar const *) SQL_LOG_FILENAME;
-extern WXDLLIMPEXP_DATA_ODBC(wxChar const *) SQL_CATALOG_FILENAME;
-
-// Database Globals
-const int DB_TYPE_NAME_LEN = 40;
-const int DB_MAX_STATEMENT_LEN = 4096;
-const int DB_MAX_WHERE_CLAUSE_LEN = 2048;
-const int DB_MAX_ERROR_MSG_LEN = 512;
-const int DB_MAX_ERROR_HISTORY = 5;
-const int DB_MAX_TABLE_NAME_LEN = 128;
-const int DB_MAX_COLUMN_NAME_LEN = 128;
-
-const int DB_DATA_TYPE_VARCHAR = 1;
-const int DB_DATA_TYPE_INTEGER = 2;
-const int DB_DATA_TYPE_FLOAT = 3;
-const int DB_DATA_TYPE_DATE = 4;
-const int DB_DATA_TYPE_BLOB = 5;
-const int DB_DATA_TYPE_MEMO = 6;
-
-const int DB_SELECT_KEYFIELDS = 1;
-const int DB_SELECT_WHERE = 2;
-const int DB_SELECT_MATCHING = 3;
-const int DB_SELECT_STATEMENT = 4;
-
-const int DB_UPD_KEYFIELDS = 1;
-const int DB_UPD_WHERE = 2;
-
-const int DB_DEL_KEYFIELDS = 1;
-const int DB_DEL_WHERE = 2;
-const int DB_DEL_MATCHING = 3;
-
-const int DB_WHERE_KEYFIELDS = 1;
-const int DB_WHERE_MATCHING = 2;
-
-const int DB_GRANT_SELECT = 1;
-const int DB_GRANT_INSERT = 2;
-const int DB_GRANT_UPDATE = 4;
-const int DB_GRANT_DELETE = 8;
-const int DB_GRANT_ALL = DB_GRANT_SELECT | DB_GRANT_INSERT | DB_GRANT_UPDATE | DB_GRANT_DELETE;
-
-// ODBC Error codes (derived from ODBC SqlState codes)
-enum wxODBC_ERRORS
-{
- DB_FAILURE = 0,
- DB_SUCCESS = 1,
- DB_ERR_NOT_IN_USE,
- DB_ERR_GENERAL_WARNING, // SqlState = '01000'
- DB_ERR_DISCONNECT_ERROR, // SqlState = '01002'
- DB_ERR_DATA_TRUNCATED, // SqlState = '01004'
- DB_ERR_PRIV_NOT_REVOKED, // SqlState = '01006'
- DB_ERR_INVALID_CONN_STR_ATTR, // SqlState = '01S00'
- DB_ERR_ERROR_IN_ROW, // SqlState = '01S01'
- DB_ERR_OPTION_VALUE_CHANGED, // SqlState = '01S02'
- DB_ERR_NO_ROWS_UPD_OR_DEL, // SqlState = '01S03'
- DB_ERR_MULTI_ROWS_UPD_OR_DEL, // SqlState = '01S04'
- DB_ERR_WRONG_NO_OF_PARAMS, // SqlState = '07001'
- DB_ERR_DATA_TYPE_ATTR_VIOL, // SqlState = '07006'
- DB_ERR_UNABLE_TO_CONNECT, // SqlState = '08001'
- DB_ERR_CONNECTION_IN_USE, // SqlState = '08002'
- DB_ERR_CONNECTION_NOT_OPEN, // SqlState = '08003'
- DB_ERR_REJECTED_CONNECTION, // SqlState = '08004'
- DB_ERR_CONN_FAIL_IN_TRANS, // SqlState = '08007'
- DB_ERR_COMM_LINK_FAILURE, // SqlState = '08S01'
- DB_ERR_INSERT_VALUE_LIST_MISMATCH, // SqlState = '21S01'
- DB_ERR_DERIVED_TABLE_MISMATCH, // SqlState = '21S02'
- DB_ERR_STRING_RIGHT_TRUNC, // SqlState = '22001'
- DB_ERR_NUMERIC_VALUE_OUT_OF_RNG, // SqlState = '22003'
- DB_ERR_ERROR_IN_ASSIGNMENT, // SqlState = '22005'
- DB_ERR_DATETIME_FLD_OVERFLOW, // SqlState = '22008'
- DB_ERR_DIVIDE_BY_ZERO, // SqlState = '22012'
- DB_ERR_STR_DATA_LENGTH_MISMATCH, // SqlState = '22026'
- DB_ERR_INTEGRITY_CONSTRAINT_VIOL, // SqlState = '23000'
- DB_ERR_INVALID_CURSOR_STATE, // SqlState = '24000'
- DB_ERR_INVALID_TRANS_STATE, // SqlState = '25000'
- DB_ERR_INVALID_AUTH_SPEC, // SqlState = '28000'
- DB_ERR_INVALID_CURSOR_NAME, // SqlState = '34000'
- DB_ERR_SYNTAX_ERROR_OR_ACCESS_VIOL, // SqlState = '37000'
- DB_ERR_DUPLICATE_CURSOR_NAME, // SqlState = '3C000'
- DB_ERR_SERIALIZATION_FAILURE, // SqlState = '40001'
- DB_ERR_SYNTAX_ERROR_OR_ACCESS_VIOL2, // SqlState = '42000'
- DB_ERR_OPERATION_ABORTED, // SqlState = '70100'
- DB_ERR_UNSUPPORTED_FUNCTION, // SqlState = 'IM001'
- DB_ERR_NO_DATA_SOURCE, // SqlState = 'IM002'
- DB_ERR_DRIVER_LOAD_ERROR, // SqlState = 'IM003'
- DB_ERR_SQLALLOCENV_FAILED, // SqlState = 'IM004'
- DB_ERR_SQLALLOCCONNECT_FAILED, // SqlState = 'IM005'
- DB_ERR_SQLSETCONNECTOPTION_FAILED, // SqlState = 'IM006'
- DB_ERR_NO_DATA_SOURCE_DLG_PROHIB, // SqlState = 'IM007'
- DB_ERR_DIALOG_FAILED, // SqlState = 'IM008'
- DB_ERR_UNABLE_TO_LOAD_TRANSLATION_DLL, // SqlState = 'IM009'
- DB_ERR_DATA_SOURCE_NAME_TOO_LONG, // SqlState = 'IM010'
- DB_ERR_DRIVER_NAME_TOO_LONG, // SqlState = 'IM011'
- DB_ERR_DRIVER_KEYWORD_SYNTAX_ERROR, // SqlState = 'IM012'
- DB_ERR_TRACE_FILE_ERROR, // SqlState = 'IM013'
- DB_ERR_TABLE_OR_VIEW_ALREADY_EXISTS, // SqlState = 'S0001'
- DB_ERR_TABLE_NOT_FOUND, // SqlState = 'S0002'
- DB_ERR_INDEX_ALREADY_EXISTS, // SqlState = 'S0011'
- DB_ERR_INDEX_NOT_FOUND, // SqlState = 'S0012'
- DB_ERR_COLUMN_ALREADY_EXISTS, // SqlState = 'S0021'
- DB_ERR_COLUMN_NOT_FOUND, // SqlState = 'S0022'
- DB_ERR_NO_DEFAULT_FOR_COLUMN, // SqlState = 'S0023'
- DB_ERR_GENERAL_ERROR, // SqlState = 'S1000'
- DB_ERR_MEMORY_ALLOCATION_FAILURE, // SqlState = 'S1001'
- DB_ERR_INVALID_COLUMN_NUMBER, // SqlState = 'S1002'
- DB_ERR_PROGRAM_TYPE_OUT_OF_RANGE, // SqlState = 'S1003'
- DB_ERR_SQL_DATA_TYPE_OUT_OF_RANGE, // SqlState = 'S1004'
- DB_ERR_OPERATION_CANCELLED, // SqlState = 'S1008'
- DB_ERR_INVALID_ARGUMENT_VALUE, // SqlState = 'S1009'
- DB_ERR_FUNCTION_SEQUENCE_ERROR, // SqlState = 'S1010'
- DB_ERR_OPERATION_INVALID_AT_THIS_TIME, // SqlState = 'S1011'
- DB_ERR_INVALID_TRANS_OPERATION_CODE, // SqlState = 'S1012'
- DB_ERR_NO_CURSOR_NAME_AVAIL, // SqlState = 'S1015'
- DB_ERR_INVALID_STR_OR_BUF_LEN, // SqlState = 'S1090'
- DB_ERR_DESCRIPTOR_TYPE_OUT_OF_RANGE, // SqlState = 'S1091'
- DB_ERR_OPTION_TYPE_OUT_OF_RANGE, // SqlState = 'S1092'
- DB_ERR_INVALID_PARAM_NO, // SqlState = 'S1093'
- DB_ERR_INVALID_SCALE_VALUE, // SqlState = 'S1094'
- DB_ERR_FUNCTION_TYPE_OUT_OF_RANGE, // SqlState = 'S1095'
- DB_ERR_INF_TYPE_OUT_OF_RANGE, // SqlState = 'S1096'
- DB_ERR_COLUMN_TYPE_OUT_OF_RANGE, // SqlState = 'S1097'
- DB_ERR_SCOPE_TYPE_OUT_OF_RANGE, // SqlState = 'S1098'
- DB_ERR_NULLABLE_TYPE_OUT_OF_RANGE, // SqlState = 'S1099'
- DB_ERR_UNIQUENESS_OPTION_TYPE_OUT_OF_RANGE, // SqlState = 'S1100'
- DB_ERR_ACCURACY_OPTION_TYPE_OUT_OF_RANGE, // SqlState = 'S1101'
- DB_ERR_DIRECTION_OPTION_OUT_OF_RANGE, // SqlState = 'S1103'
- DB_ERR_INVALID_PRECISION_VALUE, // SqlState = 'S1104'
- DB_ERR_INVALID_PARAM_TYPE, // SqlState = 'S1105'
- DB_ERR_FETCH_TYPE_OUT_OF_RANGE, // SqlState = 'S1106'
- DB_ERR_ROW_VALUE_OUT_OF_RANGE, // SqlState = 'S1107'
- DB_ERR_CONCURRENCY_OPTION_OUT_OF_RANGE, // SqlState = 'S1108'
- DB_ERR_INVALID_CURSOR_POSITION, // SqlState = 'S1109'
- DB_ERR_INVALID_DRIVER_COMPLETION, // SqlState = 'S1110'
- DB_ERR_INVALID_BOOKMARK_VALUE, // SqlState = 'S1111'
- DB_ERR_DRIVER_NOT_CAPABLE, // SqlState = 'S1C00'
- DB_ERR_TIMEOUT_EXPIRED // SqlState = 'S1T00'
-};
-
-#ifndef MAXNAME
- #define MAXNAME 31
-#endif
-
-#ifndef SQL_MAX_AUTHSTR_LEN
- // There does not seem to be a standard for this, so I am
- // defaulting to the value that MS uses
- #define SQL_MAX_AUTHSTR_LEN MAXNAME
-#endif
-
-#ifndef SQL_MAX_CONNECTSTR_LEN
- // There does not seem to be a standard for this, so I am
- // defaulting to the value that MS recommends
- #define SQL_MAX_CONNECTSTR_LEN 1024
-#endif
-
-
-class WXDLLIMPEXP_ODBC wxDbConnectInf
-{
- private:
- bool freeHenvOnDestroy;
- bool useConnectionStr;
-
- public:
- HENV Henv;
- wxChar Dsn[SQL_MAX_DSN_LENGTH+1]; // Data Source Name
- wxChar Uid[SQL_MAX_USER_NAME_LEN+1]; // User ID
- wxChar AuthStr[SQL_MAX_AUTHSTR_LEN+1]; // Authorization string (password)
- wxChar ConnectionStr[SQL_MAX_CONNECTSTR_LEN+1]; // Connection string (password)
-
- wxString Description; // Not sure what the max length is
- wxString FileType; // Not sure what the max length is
-
- // Optionals needed for some databases like dBase
- wxString DefaultDir; // Directory that db file resides in
-
- public:
-
- wxDbConnectInf();
- wxDbConnectInf(HENV henv, const wxString &dsn, const wxString &userID=wxEmptyString,
- const wxString &password=wxEmptyString, const wxString &defaultDir=wxEmptyString,
- const wxString &description=wxEmptyString, const wxString &fileType=wxEmptyString);
-
- ~wxDbConnectInf();
-
- bool Initialize();
-
- bool AllocHenv();
- void FreeHenv();
-
- // Accessors
- const HENV &GetHenv() { return Henv; }
-
- const wxChar *GetDsn() { return Dsn; }
-
- const wxChar *GetUid() { return Uid; }
- const wxChar *GetUserID() { return Uid; }
-
- const wxChar *GetAuthStr() { return AuthStr; }
- const wxChar *GetPassword() { return AuthStr; }
-
- const wxChar *GetConnectionStr() { return ConnectionStr; }
- bool UseConnectionStr() { return useConnectionStr; }
-
- const wxChar *GetDescription() { return Description; }
- const wxChar *GetFileType() { return FileType; }
- const wxChar *GetDefaultDir() { return DefaultDir; }
-
- void SetHenv(const HENV henv) { Henv = henv; }
-
- void SetDsn(const wxString &dsn);
-
- void SetUserID(const wxString &userID);
- void SetUid(const wxString &uid) { SetUserID(uid); }
-
- void SetPassword(const wxString &password);
- void SetAuthStr(const wxString &authstr) { SetPassword(authstr); }
-
- void SetConnectionStr(const wxString &connectStr);
-
- void SetDescription(const wxString &desc) { Description = desc; }
- void SetFileType(const wxString &fileType) { FileType = fileType; }
- void SetDefaultDir(const wxString &defDir) { DefaultDir = defDir; }
-}; // class wxDbConnectInf
-
-
-struct WXDLLIMPEXP_ODBC wxDbSqlTypeInfo
-{
- wxString TypeName;
- SWORD FsqlType;
- long Precision;
- short CaseSensitive;
- short MaximumScale;
-};
-
-
-class WXDLLIMPEXP_ODBC wxDbColFor
-{
-public:
- wxString s_Field; // Formatted String for Output
- wxString s_Format[7]; // Formatted Objects - TIMESTAMP has the biggest (7)
- wxString s_Amount[7]; // Formatted Objects - amount of things that can be formatted
- int i_Amount[7]; // Formatted Objects - TT MM YYYY HH MM SS m
- int i_Nation; // 0 = timestamp , 1=EU, 2=UK, 3=International, 4=US
- int i_dbDataType; // conversion of the 'sqlDataType' to the generic data type used by these classes
- SWORD i_sqlDataType;
-
- wxDbColFor();
- ~wxDbColFor(){}
-
- void Initialize();
- int Format(int Nation, int dbDataType, SWORD sqlDataType, short columnLength, short decimalDigits);
-};
-
-
-class WXDLLIMPEXP_ODBC wxDbColInf
-{
-public:
- wxChar catalog[128+1];
- wxChar schema[128+1];
- wxChar tableName[DB_MAX_TABLE_NAME_LEN+1];
- wxChar colName[DB_MAX_COLUMN_NAME_LEN+1];
- SWORD sqlDataType;
- wxChar typeName[128+1];
- SWORD columnLength;
- SWORD bufferSize;
- short decimalDigits;
- short numPrecRadix;
- short nullable;
- wxChar remarks[254+1];
- int dbDataType; // conversion of the 'sqlDataType' to the generic data type used by these classes
- // mj10777.19991224 : new
- int PkCol; // Primary key column 0=No; 1= First Key, 2 = Second Key etc.
- wxChar PkTableName[DB_MAX_TABLE_NAME_LEN+1]; // Tables that use this PKey as a FKey
- int FkCol; // Foreign key column 0=No; 1= First Key, 2 = Second Key etc.
- wxChar FkTableName[DB_MAX_TABLE_NAME_LEN+1]; // Foreign key table name
- wxDbColFor *pColFor; // How should this columns be formatted
-
- wxDbColInf();
- ~wxDbColInf();
-
- bool Initialize();
-};
-
-
-class WXDLLIMPEXP_ODBC wxDbTableInf // Description of a Table
-{
-public:
- wxChar tableName[DB_MAX_TABLE_NAME_LEN+1];
- wxChar tableType[254+1]; // "TABLE" or "SYSTEM TABLE" etc.
- wxChar tableRemarks[254+1];
- UWORD numCols; // How many Columns does this Table have: GetColumnCount(..);
- wxDbColInf *pColInf; // pColInf = NULL ; User can later call GetColumns(..);
-
- wxDbTableInf();
- ~wxDbTableInf();
-
- bool Initialize();
-};
-
-
-class WXDLLIMPEXP_ODBC wxDbInf // Description of a Database
-{
-public:
- wxChar catalog[128+1];
- wxChar schema[128+1];
- int numTables; // How many tables does this database have
- wxDbTableInf *pTableInf; // pTableInf = new wxDbTableInf[numTables];
-
- wxDbInf();
- ~wxDbInf();
-
- bool Initialize();
-};
-
-
-enum wxDbSqlLogState
-{
- sqlLogOFF,
- sqlLogON
-};
-
-// These are the databases currently tested and working with these classes
-// See the comments in wxDb::Dbms() for exceptions/issues with
-// each of these database engines
-enum wxDBMS
-{
- dbmsUNIDENTIFIED,
- dbmsORACLE,
- dbmsSYBASE_ASA, // Adaptive Server Anywhere
- dbmsSYBASE_ASE, // Adaptive Server Enterprise
- dbmsMS_SQL_SERVER,
- dbmsMY_SQL,
- dbmsPOSTGRES,
- dbmsACCESS,
- dbmsDBASE,
- dbmsINFORMIX,
- dbmsVIRTUOSO,
- dbmsDB2,
- dbmsINTERBASE,
- dbmsPERVASIVE_SQL,
- dbmsXBASE_SEQUITER,
- dbmsFIREBIRD,
- dbmsMAXDB,
- dbmsFuture1,
- dbmsFuture2,
- dbmsFuture3,
- dbmsFuture4,
- dbmsFuture5,
- dbmsFuture6,
- dbmsFuture7,
- dbmsFuture8,
- dbmsFuture9,
- dbmsFuture10
-};
-
-
-// The wxDb::errorList is copied to this variable when the wxDb object
-// is closed. This way, the error list is still available after the
-// database object is closed. This is necessary if the database
-// connection fails so the calling application can show the operator
-// why the connection failed. Note: as each wxDb object is closed, it
-// will overwrite the errors of the previously destroyed wxDb object in
-// this variable.
-
-extern WXDLLIMPEXP_DATA_ODBC(wxChar)
- DBerrorList[DB_MAX_ERROR_HISTORY][DB_MAX_ERROR_MSG_LEN+1];
-
-
-class WXDLLIMPEXP_ODBC wxDb
-{
-private:
- bool dbIsOpen;
- bool dbIsCached; // Was connection created by caching functions
- bool dbOpenedWithConnectionString; // Was the database connection opened with a connection string
- wxString dsn; // Data source name
- wxString uid; // User ID
- wxString authStr; // Authorization string (password)
- wxString inConnectionStr; // Connection string used to connect to the database
- wxString outConnectionStr;// Connection string returned by the database when a connection is successfully opened
- FILE *fpSqlLog; // Sql Log file pointer
- wxDbSqlLogState sqlLogState; // On or Off
- bool fwdOnlyCursors;
- wxDBMS dbmsType; // Type of datasource - i.e. Oracle, dBase, SQLServer, etc
-
- // Private member functions
- bool getDbInfo(bool failOnDataTypeUnsupported=true);
- bool getDataTypeInfo(SWORD fSqlType, wxDbSqlTypeInfo &structSQLTypeInfo);
- bool setConnectionOptions(void);
- void logError(const wxString &errMsg, const wxString &SQLState);
- const wxChar *convertUserID(const wxChar *userID, wxString &UserID);
- bool determineDataTypes(bool failOnDataTypeUnsupported);
- void initialize();
- bool open(bool failOnDataTypeUnsupported=true);
-
-#if !wxODBC_BACKWARD_COMPATABILITY
- // ODBC handles
- HENV henv; // ODBC Environment handle
- HDBC hdbc; // ODBC DB Connection handle
- HSTMT hstmt; // ODBC Statement handle
-
- //Error reporting mode
- bool silent;
-
- // Number of Ctable objects connected to this db object. FOR INTERNAL USE ONLY!!!
- unsigned int nTables;
-
- // Information about logical data types VARCHAR, INTEGER, FLOAT and DATE.
- //
- // This information is obtained from the ODBC driver by use of the
- // SQLGetTypeInfo() function. The key piece of information is the
- // type name the data source uses for each logical data type.
- // e.g. VARCHAR; Oracle calls it VARCHAR2.
- wxDbSqlTypeInfo typeInfVarchar;
- wxDbSqlTypeInfo typeInfInteger;
- wxDbSqlTypeInfo typeInfFloat;
- wxDbSqlTypeInfo typeInfDate;
- wxDbSqlTypeInfo typeInfBlob;
- wxDbSqlTypeInfo typeInfMemo;
-#endif
-
-public:
-
- void setCached(bool cached) { dbIsCached = cached; } // This function must only be called by wxDbGetConnection() and wxDbCloseConnections!!!
- bool IsCached() { return dbIsCached; }
-
- bool GetDataTypeInfo(SWORD fSqlType, wxDbSqlTypeInfo &structSQLTypeInfo)
- { return getDataTypeInfo(fSqlType, structSQLTypeInfo); }
-
-#if wxODBC_BACKWARD_COMPATABILITY
- // ODBC handles
- HENV henv; // ODBC Environment handle
- HDBC hdbc; // ODBC DB Connection handle
- HSTMT hstmt; // ODBC Statement handle
-
- //Error reporting mode
- bool silent;
-
- // Number of Ctable objects connected to this db object. FOR INTERNAL USE ONLY!!!
- unsigned int nTables;
-#endif
-
- // The following structure contains database information gathered from the
- // datasource when the datasource is first opened.
- struct
- {
- wxChar dbmsName[40]; // Name of the dbms product
- wxChar dbmsVer[64]; // Version # of the dbms product
- wxChar driverName[40]; // Driver name
- wxChar odbcVer[60]; // ODBC version of the driver
- wxChar drvMgrOdbcVer[60]; // ODBC version of the driver manager
- wxChar driverVer[60]; // Driver version
- wxChar serverName[80]; // Server Name, typically a connect string
- wxChar databaseName[128]; // Database filename
- wxChar outerJoins[2]; // Indicates whether the data source supports outer joins
- wxChar procedureSupport[2]; // Indicates whether the data source supports stored procedures
- wxChar accessibleTables[2]; // Indicates whether the data source only reports accessible tables in SQLTables.
- UWORD maxConnections; // Maximum # of connections the data source supports
- UWORD maxStmts; // Maximum # of HSTMTs per HDBC
- UWORD apiConfLvl; // ODBC API conformance level
- UWORD cliConfLvl; // Indicates whether the data source is SAG compliant
- UWORD sqlConfLvl; // SQL conformance level
- UWORD cursorCommitBehavior; // Indicates how cursors are affected by a db commit
- UWORD cursorRollbackBehavior; // Indicates how cursors are affected by a db rollback
- UWORD supportNotNullClause; // Indicates if data source supports NOT NULL clause
- wxChar supportIEF[2]; // Integrity Enhancement Facility (Referential Integrity)
- UDWORD txnIsolation; // Default transaction isolation level supported by the driver
- UDWORD txnIsolationOptions; // Transaction isolation level options available
- UDWORD fetchDirections; // Fetch directions supported
- UDWORD lockTypes; // Lock types supported in SQLSetPos
- UDWORD posOperations; // Position operations supported in SQLSetPos
- UDWORD posStmts; // Position statements supported
- UDWORD scrollConcurrency; // Concurrency control options supported for scrollable cursors
- UDWORD scrollOptions; // Scroll Options supported for scrollable cursors
- UDWORD staticSensitivity; // Indicates if additions, deletions and updates can be detected
- UWORD txnCapable; // Indicates if the data source supports transactions
- UDWORD loginTimeout; // Number seconds to wait for a login request
- } dbInf;
-
- // ODBC Error Inf.
- SWORD cbErrorMsg;
- int DB_STATUS;
-#ifdef __VMS
- // The DECC compiler chokes when in db.cpp the array is accessed outside
- // its bounds. Maybe this change should also applied for other platforms.
- wxChar errorList[DB_MAX_ERROR_HISTORY][DB_MAX_ERROR_MSG_LEN+1];
-#else
- wxChar errorList[DB_MAX_ERROR_HISTORY][DB_MAX_ERROR_MSG_LEN];
-#endif
- wxChar errorMsg[SQL_MAX_MESSAGE_LENGTH];
- SQLINTEGER nativeError;
- wxChar sqlState[20];
-
-#if wxODBC_BACKWARD_COMPATABILITY
- // Information about logical data types VARCHAR, INTEGER, FLOAT and DATE.
- //
- // This information is obtained from the ODBC driver by use of the
- // SQLGetTypeInfo() function. The key piece of information is the
- // type name the data source uses for each logical data type.
- // e.g. VARCHAR; Oracle calls it VARCHAR2.
- wxDbSqlTypeInfo typeInfVarchar;
- wxDbSqlTypeInfo typeInfInteger;
- wxDbSqlTypeInfo typeInfFloat;
- wxDbSqlTypeInfo typeInfDate;
- wxDbSqlTypeInfo typeInfBlob;
-#endif
-
- // Public member functions
- wxDb(const HENV &aHenv, bool FwdOnlyCursors=(bool)wxODBC_FWD_ONLY_CURSORS);
- ~wxDb();
-
- // Data Source Name, User ID, Password and whether open should fail on data type not supported
- bool Open(const wxString& inConnectStr, bool failOnDataTypeUnsupported=true);
- ///This version of Open will open the odbc source selection dialog. Cast a wxWindow::GetHandle() to SQLHWND to use.
- bool Open(const wxString& inConnectStr, SQLHWND parentWnd, bool failOnDataTypeUnsupported=true);
- bool Open(const wxString &Dsn, const wxString &Uid, const wxString &AuthStr, bool failOnDataTypeUnsupported=true);
- bool Open(wxDbConnectInf *dbConnectInf, bool failOnDataTypeUnsupported=true);
- bool Open(wxDb *copyDb); // pointer to a wxDb whose connection info should be copied rather than re-queried
- void Close(void);
- bool CommitTrans(void);
- bool RollbackTrans(void);
- bool DispAllErrors(HENV aHenv, HDBC aHdbc = SQL_NULL_HDBC, HSTMT aHstmt = SQL_NULL_HSTMT);
- bool GetNextError(HENV aHenv, HDBC aHdbc = SQL_NULL_HDBC, HSTMT aHstmt = SQL_NULL_HSTMT);
- void DispNextError(void);
- bool CreateView(const wxString &viewName, const wxString &colList, const wxString &pSqlStmt, bool attemptDrop=true);
- bool DropView(const wxString &viewName);
- bool ExecSql(const wxString &pSqlStmt);
- bool ExecSql(const wxString &pSqlStmt, wxDbColInf** columns, short& numcols);
- bool GetNext(void);
- bool GetData(UWORD colNo, SWORD cType, PTR pData, SDWORD maxLen, SQLLEN FAR *cbReturned);
- bool Grant(int privileges, const wxString &tableName, const wxString &userList = wxT("PUBLIC"));
- int TranslateSqlState(const wxString &SQLState);
- wxDbInf *GetCatalog(const wxChar *userID=NULL);
- bool Catalog(const wxChar *userID=NULL, const wxString &fileName=SQL_CATALOG_FILENAME);
- int GetKeyFields(const wxString &tableName, wxDbColInf* colInf, UWORD noCols);
-
- wxDbColInf *GetColumns(wxChar *tableName[], const wxChar *userID=NULL);
- wxDbColInf *GetColumns(const wxString &tableName, UWORD *numCols, const wxChar *userID=NULL);
-
- int GetColumnCount(const wxString &tableName, const wxChar *userID=NULL);
- const wxChar *GetDatabaseName(void) {return dbInf.dbmsName;}
- const wxString &GetDataSource(void) {return dsn;}
- const wxString &GetDatasourceName(void){return dsn;}
- const wxString &GetUsername(void) {return uid;}
- const wxString &GetPassword(void) {return authStr;}
- const wxString &GetConnectionInStr(void) {return inConnectionStr;}
- const wxString &GetConnectionOutStr(void) {return outConnectionStr;}
- bool IsOpen(void) {return dbIsOpen;}
- bool OpenedWithConnectionString(void) {return dbOpenedWithConnectionString;}
- HENV GetHENV(void) {return henv;}
- HDBC GetHDBC(void) {return hdbc;}
- HSTMT GetHSTMT(void) {return hstmt;}
- int GetTableCount() {return nTables;} // number of tables using this connection
- wxDbSqlTypeInfo GetTypeInfVarchar() {return typeInfVarchar;}
- wxDbSqlTypeInfo GetTypeInfInteger() {return typeInfInteger;}
- wxDbSqlTypeInfo GetTypeInfFloat() {return typeInfFloat;}
- wxDbSqlTypeInfo GetTypeInfDate() {return typeInfDate;}
- wxDbSqlTypeInfo GetTypeInfBlob() {return typeInfBlob;}
- wxDbSqlTypeInfo GetTypeInfMemo() {return typeInfMemo;}
-
- // tableName can refer to a table, view, alias or synonym
- bool TableExists(const wxString &tableName, const wxChar *userID=NULL,
- const wxString &tablePath=wxEmptyString);
- bool TablePrivileges(const wxString &tableName, const wxString &priv,
- const wxChar *userID=NULL, const wxChar *schema=NULL,
- const wxString &path=wxEmptyString);
-
- // These two functions return the table name or column name in a form ready
- // for use in SQL statements. For example, if the datasource allows spaces
- // in the table name or column name, the returned string will have the
- // correct enclosing marks around the name to allow it to be properly
- // included in a SQL statement
- const wxString SQLTableName(const wxChar *tableName);
- const wxString SQLColumnName(const wxChar *colName);
-
- void LogError(const wxString &errMsg, const wxString &SQLState = wxEmptyString)
- { logError(errMsg, SQLState); }
- void SetDebugErrorMessages(bool state) { silent = !state; }
- bool SetSqlLogging(wxDbSqlLogState state, const wxString &filename = SQL_LOG_FILENAME,
- bool append = false);
- bool WriteSqlLog(const wxString &logMsg);
-
- wxDBMS Dbms(void);
- bool ModifyColumn(const wxString &tableName, const wxString &columnName,
- int dataType, ULONG columnLength=0,
- const wxString &optionalParam=wxEmptyString);
-
- bool FwdOnlyCursors(void) {return fwdOnlyCursors;}
-
- // return the string with all special SQL characters escaped
- wxString EscapeSqlChars(const wxString& value);
-
- // These two functions are provided strictly for use by wxDbTable.
- // DO NOT USE THESE FUNCTIONS, OR MEMORY LEAKS MAY OCCUR
- void incrementTableCount() { nTables++; return; }
- void decrementTableCount() { nTables--; return; }
-
-}; // wxDb
-
-
-// This structure forms a node in a linked list. The linked list of "DbList" objects
-// keeps track of allocated database connections. This allows the application to
-// open more than one database connection through ODBC for multiple transaction support
-// or for multiple database support.
-struct wxDbList
-{
- wxDbList *PtrPrev; // Pointer to previous item in the list
- wxString Dsn; // Data Source Name
- wxString Uid; // User ID
- wxString AuthStr; // Authorization string (password)
- wxString ConnectionStr; // Connection string used instead of DSN
- wxDb *PtrDb; // Pointer to the wxDb object
- bool Free; // Is item free or in use?
- wxDbList *PtrNext; // Pointer to next item in the list
-};
-
-
-#ifdef __WXDEBUG__
-#include "wx/object.h"
-class wxTablesInUse : public wxObject
-{
- public:
- const wxChar *tableName;
- ULONG tableID;
- class wxDb *pDb;
-}; // wxTablesInUse
-#endif
-
-
-// The following routines allow a user to get new database connections, free them
-// for other code segments to use, or close all of them when the application has
-// completed.
-wxDb WXDLLIMPEXP_ODBC *wxDbGetConnection(wxDbConnectInf *pDbConfig, bool FwdOnlyCursors=(bool)wxODBC_FWD_ONLY_CURSORS);
-bool WXDLLIMPEXP_ODBC wxDbFreeConnection(wxDb *pDb);
-void WXDLLIMPEXP_ODBC wxDbCloseConnections(void);
-int WXDLLIMPEXP_ODBC wxDbConnectionsInUse(void);
-
-
-// Writes a message to the wxLog window (stdout usually) when an internal error
-// situation occurs. This function only works in DEBUG builds
-const wxChar WXDLLIMPEXP_ODBC *
-wxDbLogExtendedErrorMsg(const wxChar *userText,
- wxDb *pDb,
- const wxChar *ErrFile,
- int ErrLine);
-
-
-// This function sets the sql log state for all open wxDb objects
-bool WXDLLIMPEXP_ODBC
-wxDbSqlLog(wxDbSqlLogState state, const wxString &filename = SQL_LOG_FILENAME);
-
-
-#if 0
-// MSW/VC6 ONLY!!! Experimental
-int WXDLLEXPORT wxDbCreateDataSource(const wxString &driverName, const wxString &dsn, const wxString &description=wxEmptyString,
- bool sysDSN=false, const wxString &defDir=wxEmptyString, wxWindow *parent=NULL);
-#endif
-
-// This routine allows you to query a driver manager
-// for a list of available datasources. Call this routine
-// the first time using SQL_FETCH_FIRST. Continue to call it
-// using SQL_FETCH_NEXT until you've exhausted the list.
-bool WXDLLIMPEXP_ODBC
-wxDbGetDataSource(HENV henv, wxChar *Dsn, SWORD DsnMaxLength, wxChar *DsDesc,
- SWORD DsDescMaxLength, UWORD direction = SQL_FETCH_NEXT);
-
-
-// Change this to 0 to remove use of all deprecated functions
-#if wxODBC_BACKWARD_COMPATABILITY
-//#################################################################################
-//############### DEPRECATED functions for backward compatibility #################
-//#################################################################################
-
-// Backward compability structures/classes. This will eventually go away
-const int DB_PATH_MAX = wxDB_PATH_MAX;
-
-typedef wxDb wxDB;
-typedef wxDbTableInf wxTableInf;
-typedef wxDbColInf wxColInf;
-typedef wxDbColInf CcolInf;
-typedef wxDbColFor wxColFor;
-typedef wxDbSqlTypeInfo SqlTypeInfo;
-typedef wxDbSqlTypeInfo wxSqlTypeInfo;
-typedef enum wxDbSqlLogState sqlLog;
-typedef enum wxDbSqlLogState wxSqlLogState;
-typedef enum wxDBMS dbms;
-typedef enum wxDBMS DBMS;
-typedef wxODBC_ERRORS ODBC_ERRORS;
-typedef wxDbConnectInf DbStuff;
-typedef wxDbList DbList;
-#ifdef __WXDEBUG__
-typedef wxTablesInUse CstructTablesInUse;
-#endif
-
-// Deprecated function names that are replaced by the function names listed above
-wxDB WXDLLIMPEXP_ODBC
-*GetDbConnection(DbStuff *pDbStuff, bool FwdOnlyCursors=(bool)wxODBC_FWD_ONLY_CURSORS);
-bool WXDLLIMPEXP_ODBC FreeDbConnection(wxDB *pDb);
-void WXDLLIMPEXP_ODBC CloseDbConnections(void);
-int WXDLLIMPEXP_ODBC NumberDbConnectionsInUse(void);
-
-bool SqlLog(sqlLog state, const wxChar *filename = SQL_LOG_FILENAME);
-
-bool WXDLLIMPEXP_ODBC
-GetDataSource(HENV henv, char *Dsn, SWORD DsnMaxLength, char *DsDesc, SWORD DsDescMaxLength,
- UWORD direction = SQL_FETCH_NEXT);
-
-#endif // Deprecated structures/classes/functions
-
-#endif // _WX_DB_H_
-
diff --git a/Externals/wxWidgets/include/wx/dbgrid.h b/Externals/wxWidgets/include/wx/dbgrid.h
deleted file mode 100644
index 4e8655cbe1..0000000000
--- a/Externals/wxWidgets/include/wx/dbgrid.h
+++ /dev/null
@@ -1,177 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Name: dbgrid.h
-// Purpose: Displays a wxDbTable in a wxGrid.
-// Author: Roger Gammans, Paul Gammans
-// Modified by:
-// Created:
-// RCS-ID: $Id: dbgrid.h 41020 2006-09-05 20:47:48Z VZ $
-// Copyright: (c) 1999 The Computer Surgery (roger@computer-surgery.co.uk)
-// Licence: wxWindows licence
-///////////////////////////////////////////////////////////////////////////////
-// Branched From : dbgrid.h,v 1.19 2001/03/28 11:16:01
-///////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_GENERIC_DBGRID_H_
-#define _WX_GENERIC_DBGRID_H_
-
-#if wxUSE_ODBC
-#if wxUSE_GRID
-
-#include "wx/log.h"
-#include "wx/dbtable.h"
-#include "wx/dynarray.h"
-#include "wx/grid.h"
-#include "wx/dbkeyg.h"
-
-#define wxGRID_VALUE_DBAUTO _T("dbauto")
-
-WX_DECLARE_USER_EXPORTED_OBJARRAY(GenericKey,keyarray,WXDLLIMPEXP_DBGRID);
-
-static const int wxUSE_QUERY = -1;
-
-class WXDLLIMPEXP_DBGRID wxDbGridColInfoBase
-{
-public:
- //Default ctor
- wxDbGridColInfoBase() { }
- wxDbGridColInfoBase(int colNo,
- wxString type, wxString title) :
- DbCol(colNo),
- wxtypename(type),
- Title(title)
- { }
- //Copy Ctor
- wxDbGridColInfoBase(const wxDbGridColInfoBase& ref)
- {
- DbCol = ref.DbCol;
- wxtypename = ref.wxtypename;
- Title = ref.Title;
- }
- //Empty destructor for member obj's
- ~wxDbGridColInfoBase() {}
-
- int DbCol;
- wxString wxtypename;
- wxString Title;
-};
-
-
-class WXDLLIMPEXP_DBGRID wxDbGridColInfo
-{
-public:
- wxDbGridColInfo(int colNo,
- wxString type,
- wxString title,
- wxDbGridColInfo *next) :
- m_data(colNo,type,title)
- {
- m_next=next;
- }
-
- //Empty List
- ~wxDbGridColInfo() { delete m_next; }
-
- //Recurse to find length.
- int Length() { return (m_next ? m_next->Length() +1 : 1); }
-
- // Adds a new column info (2 step creation)
- void AddColInfo (int colNo,
- wxString type,
- wxString title)
- {
- GetLast()->m_next = new wxDbGridColInfo (colNo, type, title, NULL);
- }
-
- // Searches last
- wxDbGridColInfo *GetLast() { return (m_next ? m_next->GetLast() : this); }
-
-
- protected:
- wxDbGridColInfoBase m_data;
- wxDbGridColInfo *m_next;
-
- friend class wxDbGridTableBase;
-};
-
-
-class WXDLLIMPEXP_DBGRID wxDbGridCellAttrProvider : public wxGridCellAttrProvider
-{
-public:
- wxDbGridCellAttrProvider();
- wxDbGridCellAttrProvider(wxDbTable *tab, wxDbGridColInfoBase* ColInfo);
- virtual ~wxDbGridCellAttrProvider();
-
- virtual wxGridCellAttr *GetAttr(int row, int col,
- wxGridCellAttr::wxAttrKind kind) const;
- virtual void AssignDbTable(wxDbTable *tab);
-private:
- wxDbTable *m_data;
- wxDbGridColInfoBase *m_ColInfo;
-};
-
-
-class WXDLLIMPEXP_DBGRID wxDbGridTableBase : public wxGridTableBase
-{
-public:
- wxDbGridTableBase(wxDbTable *tab, wxDbGridColInfo *ColInfo,
- int count = wxUSE_QUERY, bool takeOwnership = true);
- virtual ~wxDbGridTableBase();
-
- virtual int GetNumberRows()
- {
- wxLogDebug(_T(" GetNumberRows() = %i"),m_rowtotal);
- return m_rowtotal;
- }
- virtual int GetNumberCols()
- {
- wxLogDebug(_T(" GetNumberCols() = %i"),m_nocols);
- return m_nocols;
- }
- virtual bool IsEmptyCell(int row, int col) ;
- virtual wxString GetValue(int row, int col) ;
- virtual void SetValue(int row, int col, const wxString& value);
- virtual bool CanHaveAttributes();
- virtual wxString GetTypeName(int row, int col);
- virtual bool CanGetValueAs(int row, int col, const wxString& typeName);
- virtual bool CanSetValueAs(int row, int col, const wxString& typeName);
- virtual long GetValueAsLong(int row, int col);
- virtual double GetValueAsDouble(int row, int col);
- virtual bool GetValueAsBool(int row, int col);
- virtual void SetValueAsLong(int row, int col, long value);
- virtual void SetValueAsDouble(int row, int col, double value);
- virtual void SetValueAsBool(int row, int col, bool value);
- virtual void *GetValueAsCustom(int row, int col, const wxString& typeName);
- virtual void SetValueAsCustom(int row, int col, const wxString& typeName, void* value);
-
-
- virtual wxString GetColLabelValue(int col);
-
- virtual bool AssignDbTable(wxDbTable *tab, int count = wxUSE_QUERY, bool takeOwnership=true);
- virtual void ValidateRow(int row);
- virtual bool UpdateRow(int row) const
- {
- if (m_row != row)
- return true;
- else
- return Writeback();
- }
-
-private:
- //Operates on the current row
- bool Writeback() const;
-
- typedef wxGridTableBase inherited;
- keyarray m_keys;
- wxDbTable *m_data;
- bool m_dbowner;
- int m_rowtotal;
- int m_nocols;
- int m_row;
- wxDbGridColInfoBase *m_ColInfo;
- bool m_rowmodified;
-};
-
-#endif // #if wxUSE_GRID
-#endif // #if wxUSE_ODBC
-
-#endif // _WX_GENERIC_DBGRID_H_
diff --git a/Externals/wxWidgets/include/wx/dbkeyg.h b/Externals/wxWidgets/include/wx/dbkeyg.h
deleted file mode 100644
index eb91f1ce16..0000000000
--- a/Externals/wxWidgets/include/wx/dbkeyg.h
+++ /dev/null
@@ -1,41 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Name: dbkeyg.h
-// Purpose: Generic key support for wxDbTable
-// Author: Roger Gammans
-// Modified by:
-// Created:
-// RCS-ID: $Id: dbkeyg.h 29077 2004-09-10 12:56:07Z ABX $
-// Copyright: (c) 1999 The Computer Surgery (roger@computer-surgery.co.uk)
-// Licence: wxWindows licence
-//
-// NOTE : There is no CPP file to go along with this
-//
-///////////////////////////////////////////////////////////////////////////////
-// Branched From : gkey.h,v 1.3 2001/06/01 10:31:41
-///////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_DBGKEY_H_
-#define _WX_DBGKEY_H_
-
-class GenericKey
-{
-public:
- GenericKey(void *blk, size_t sz) { clone(blk,sz); }
- GenericKey(const GenericKey &ref) { clone(ref.m_data,ref.m_sz); }
- ~GenericKey() { free(m_data); }
-
- void *GetBlk(void) const { return m_data; }
-
-private:
- void clone(void *blk, size_t sz)
- {
- m_data = malloc(sz);
- memcpy(m_data,blk,sz);
- m_sz = sz;
- }
-
- void *m_data;
- size_t m_sz;
-};
-
-#endif // _WX_DBGKEY_H_
diff --git a/Externals/wxWidgets/include/wx/dbtable.h b/Externals/wxWidgets/include/wx/dbtable.h
deleted file mode 100644
index 1bbef54d76..0000000000
--- a/Externals/wxWidgets/include/wx/dbtable.h
+++ /dev/null
@@ -1,377 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Name: dbtable.h
-// Purpose: Declaration of the wxDbTable class.
-// Author: Doug Card
-// Modified by: George Tasker
-// Bart Jourquin
-// Mark Johnson
-// Created: 9.96
-// RCS-ID: $Id: dbtable.h 35650 2005-09-23 12:56:45Z MR $
-// Copyright: (c) 1996 Remstar International, Inc.
-// Licence: wxWindows licence
-///////////////////////////////////////////////////////////////////////////////
-
-/*
-// SYNOPSIS START
-// SYNOPSIS STOP
-*/
-
-#ifndef DBTABLE_DOT_H
-#define DBTABLE_DOT_H
-
-#include "wx/defs.h"
-
-#include "wx/db.h"
-
-#include "wx/variant.h"
-#include "wx/dbkeyg.h"
-
-const int wxDB_ROWID_LEN = 24; // 18 is the max, 24 is in case it gets larger
-const int wxDB_DEFAULT_CURSOR = 0;
-const bool wxDB_QUERY_ONLY = true;
-const bool wxDB_DISABLE_VIEW = true;
-
-// Used to indicate end of a variable length list of
-// column numbers passed to member functions
-const int wxDB_NO_MORE_COLUMN_NUMBERS = -1;
-
-// The following class is used to define a column of a table.
-// The wxDbTable constructor will dynamically allocate as many of
-// these as there are columns in the table. The class derived
-// from wxDbTable must initialize these column definitions in it's
-// constructor. These column definitions provide inf. to the
-// wxDbTable class which allows it to create a table in the data
-// source, exchange data between the data source and the C++
-// object, and so on.
-class WXDLLIMPEXP_ODBC wxDbColDef
-{
-public:
- wxChar ColName[DB_MAX_COLUMN_NAME_LEN+1]; // Column Name
- int DbDataType; // Logical Data Type; e.g. DB_DATA_TYPE_INTEGER
- SWORD SqlCtype; // C data type; e.g. SQL_C_LONG
- void *PtrDataObj; // Address of the data object
- int SzDataObj; // Size, in bytes, of the data object
- bool KeyField; // true if this column is part of the PRIMARY KEY to the table; Date fields should NOT be KeyFields.
- bool Updateable; // Specifies whether this column is updateable
- bool InsertAllowed; // Specifies whether this column should be included in an INSERT statement
- bool DerivedCol; // Specifies whether this column is a derived value
- SQLLEN CbValue; // Internal use only!!!
- bool Null; // NOT FULLY IMPLEMENTED - Allows NULL values in Inserts and Updates
-
- wxDbColDef();
-
- bool Initialize();
-}; // wxDbColDef
-
-
-class WXDLLIMPEXP_ODBC wxDbColDataPtr
-{
-public:
- void *PtrDataObj;
- int SzDataObj;
- SWORD SqlCtype;
-}; // wxDbColDataPtr
-
-
-// This structure is used when creating secondary indexes.
-class WXDLLIMPEXP_ODBC wxDbIdxDef
-{
-public:
- wxChar ColName[DB_MAX_COLUMN_NAME_LEN+1];
- bool Ascending;
-}; // wxDbIdxDef
-
-
-class WXDLLIMPEXP_ODBC wxDbTable
-{
-private:
- ULONG tableID; // Used for debugging. This can help to match up mismatched constructors/destructors
-
- // Private member variables
- UDWORD cursorType;
- bool insertable;
-
- // Private member functions
- bool initialize(wxDb *pwxDb, const wxString &tblName, const UWORD numColumns,
- const wxString &qryTblName, bool qryOnly, const wxString &tblPath);
- void cleanup();
-
- void setCbValueForColumn(int columnIndex);
- bool bindParams(bool forUpdate); // called by the other 'bind' functions
- bool bindInsertParams(void);
- bool bindUpdateParams(void);
-
- bool bindCols(HSTMT cursor);
- bool getRec(UWORD fetchType);
- bool execDelete(const wxString &pSqlStmt);
- bool execUpdate(const wxString &pSqlStmt);
- bool query(int queryType, bool forUpdate, bool distinct, const wxString &pSqlStmt=wxEmptyString);
-
-#if !wxODBC_BACKWARD_COMPATABILITY
-// these were public
- // Where, Order By and From clauses
- wxString where; // Standard SQL where clause, minus the word WHERE
- wxString orderBy; // Standard SQL order by clause, minus the ORDER BY
- wxString from; // Allows for joins in a wxDbTable::Query(). Format: ",tbl,tbl..."
-
- // ODBC Handles
- HENV henv; // ODBC Environment handle
- HDBC hdbc; // ODBC DB Connection handle
- HSTMT hstmt; // ODBC Statement handle
- HSTMT *hstmtDefault; // Default cursor
- HSTMT hstmtInsert; // ODBC Statement handle used specifically for inserts
- HSTMT hstmtDelete; // ODBC Statement handle used specifically for deletes
- HSTMT hstmtUpdate; // ODBC Statement handle used specifically for updates
- HSTMT hstmtInternal; // ODBC Statement handle used internally only
- HSTMT *hstmtCount; // ODBC Statement handle used by Count() function (No binding of columns)
-
- // Flags
- bool selectForUpdate;
-
- // Pointer to the database object this table belongs to
- wxDb *pDb;
-
- // Table Inf.
- wxString tablePath; // needed for dBase tables
- wxString tableName; // Table name
- wxString queryTableName; // Query Table Name
- UWORD m_numCols; // # of columns in the table
- bool queryOnly; // Query Only, no inserts, updates or deletes
-
- // Column Definitions
- wxDbColDef *colDefs; // Array of wxDbColDef structures
-#endif
-public:
-#if wxODBC_BACKWARD_COMPATABILITY
- // Where, Order By and From clauses
- char *where; // Standard SQL where clause, minus the word WHERE
- char *orderBy; // Standard SQL order by clause, minus the ORDER BY
- char *from; // Allows for joins in a wxDbTable::Query(). Format: ",tbl,tbl..."
-
- // ODBC Handles
- HENV henv; // ODBC Environment handle
- HDBC hdbc; // ODBC DB Connection handle
- HSTMT hstmt; // ODBC Statement handle
- HSTMT *hstmtDefault; // Default cursor
- HSTMT hstmtInsert; // ODBC Statement handle used specifically for inserts
- HSTMT hstmtDelete; // ODBC Statement handle used specifically for deletes
- HSTMT hstmtUpdate; // ODBC Statement handle used specifically for updates
- HSTMT hstmtInternal; // ODBC Statement handle used internally only
- HSTMT *hstmtCount; // ODBC Statement handle used by Count() function (No binding of columns)
-
- // Flags
- bool selectForUpdate;
-
- // Pointer to the database object this table belongs to
- wxDb *pDb;
-
- // Table Inf.
- char tablePath[wxDB_PATH_MAX]; // needed for dBase tables
- char tableName[DB_MAX_TABLE_NAME_LEN+1]; // Table name
- char queryTableName[DB_MAX_TABLE_NAME_LEN+1]; // Query Table Name
- UWORD m_numCols; // # of columns in the table
- bool queryOnly; // Query Only, no inserts, updates or deletes
-
- // Column Definitions
- wxDbColDef *colDefs; // Array of wxDbColDef structures
-#endif
- // Public member functions
- wxDbTable(wxDb *pwxDb, const wxString &tblName, const UWORD numColumns,
- const wxString &qryTblName=wxEmptyString, bool qryOnly = !wxDB_QUERY_ONLY,
- const wxString &tblPath=wxEmptyString);
-
-#if WXWIN_COMPATIBILITY_2_4
- wxDEPRECATED(
- wxDbTable(wxDb *pwxDb, const wxString &tblName, const UWORD numColumns,
- const wxChar *qryTblName, bool qryOnly,
- const wxString &tblPath)
- );
-#endif // WXWIN_COMPATIBILITY_2_4
-
- virtual ~wxDbTable();
-
- bool Open(bool checkPrivileges=false, bool checkTableExists=true);
- bool CreateTable(bool attemptDrop=true);
- bool DropTable(void);
- bool CreateIndex(const wxString &indexName, bool unique, UWORD numIndexColumns,
- wxDbIdxDef *pIndexDefs, bool attemptDrop=true);
- bool DropIndex(const wxString &indexName);
-
- // Accessors
-
- // The member variables returned by these accessors are all
- // set when the wxDbTable instance is created and cannot be
- // changed, hence there is no corresponding SetXxxx function
- wxDb *GetDb() { return pDb; }
- const wxString &GetTableName() { return tableName; }
- const wxString &GetQueryTableName() { return queryTableName; }
- const wxString &GetTablePath() { return tablePath; }
-
- UWORD GetNumberOfColumns() { return m_numCols; } // number of "defined" columns for this wxDbTable instance
-
- const wxString &GetFromClause() { return from; }
- const wxString &GetOrderByClause() { return orderBy; }
- const wxString &GetWhereClause() { return where; }
-
- bool IsQueryOnly() { return queryOnly; }
-#if wxODBC_BACKWARD_COMPATABILITY
- void SetFromClause(const char *From) { from = (char *)From; }
- void SetOrderByClause(const char *OrderBy) { orderBy = (char *)OrderBy; }
- void SetWhereClause(const char *Where) { where = (char *)Where; }
-#else
- void SetFromClause(const wxString &From) { from = From; }
- void SetOrderByClause(const wxString &OrderBy) { orderBy = OrderBy; }
- bool SetOrderByColNums(UWORD first, ...);
- void SetWhereClause(const wxString &Where) { where = Where; }
- void From(const wxString &From) { from = From; }
- void OrderBy(const wxString &OrderBy) { orderBy = OrderBy; }
- void Where(const wxString &Where) { where = Where; }
- const wxString &Where() { return where; }
- const wxString &OrderBy() { return orderBy; }
- const wxString &From() { return from; }
-#endif
- int Insert(void);
- bool Update(void);
- bool Update(const wxString &pSqlStmt);
- bool UpdateWhere(const wxString &pWhereClause);
- bool Delete(void);
- bool DeleteWhere(const wxString &pWhereClause);
- bool DeleteMatching(void);
- virtual bool Query(bool forUpdate = false, bool distinct = false);
- bool QueryBySqlStmt(const wxString &pSqlStmt);
- bool QueryMatching(bool forUpdate = false, bool distinct = false);
- bool QueryOnKeyFields(bool forUpdate = false, bool distinct = false);
- bool Refresh(void);
- bool GetNext(void) { return(getRec(SQL_FETCH_NEXT)); }
- bool operator++(int) { return(getRec(SQL_FETCH_NEXT)); }
-
- /***** These four functions only work with wxDb instances that are defined *****
- ***** as not being FwdOnlyCursors *****/
- bool GetPrev(void);
- bool operator--(int);
- bool GetFirst(void);
- bool GetLast(void);
-
- bool IsCursorClosedOnCommit(void);
- UWORD GetRowNum(void);
-
- void BuildSelectStmt(wxString &pSqlStmt, int typeOfSelect, bool distinct);
- void BuildSelectStmt(wxChar *pSqlStmt, int typeOfSelect, bool distinct);
-
- void BuildDeleteStmt(wxString &pSqlStmt, int typeOfDel, const wxString &pWhereClause=wxEmptyString);
- void BuildDeleteStmt(wxChar *pSqlStmt, int typeOfDel, const wxString &pWhereClause=wxEmptyString);
-
- void BuildUpdateStmt(wxString &pSqlStmt, int typeOfUpdate, const wxString &pWhereClause=wxEmptyString);
- void BuildUpdateStmt(wxChar *pSqlStmt, int typeOfUpdate, const wxString &pWhereClause=wxEmptyString);
-
- void BuildWhereClause(wxString &pWhereClause, int typeOfWhere, const wxString &qualTableName=wxEmptyString, bool useLikeComparison=false);
- void BuildWhereClause(wxChar *pWhereClause, int typeOfWhere, const wxString &qualTableName=wxEmptyString, bool useLikeComparison=false);
-
-#if wxODBC_BACKWARD_COMPATABILITY
-// The following member functions are deprecated. You should use the BuildXxxxxStmt functions (above)
- void GetSelectStmt(char *pSqlStmt, int typeOfSelect, bool distinct)
- { BuildSelectStmt(pSqlStmt,typeOfSelect,distinct); }
- void GetDeleteStmt(char *pSqlStmt, int typeOfDel, const char *pWhereClause = NULL)
- { BuildDeleteStmt(pSqlStmt,typeOfDel,pWhereClause); }
- void GetUpdateStmt(char *pSqlStmt, int typeOfUpdate, const char *pWhereClause = NULL)
- { BuildUpdateStmt(pSqlStmt,typeOfUpdate,pWhereClause); }
- void GetWhereClause(char *pWhereClause, int typeOfWhere,
- const char *qualTableName = NULL, bool useLikeComparison=false)
- { BuildWhereClause(pWhereClause,typeOfWhere,qualTableName,useLikeComparison); }
-#endif
- bool CanSelectForUpdate(void);
-#if wxODBC_BACKWARD_COMPATABILITY
- bool CanUpdByROWID(void) { return CanUpdateByRowID(); };
-#endif
- bool CanUpdateByROWID(void);
- void ClearMemberVar(UWORD colNumber, bool setToNull=false);
- void ClearMemberVars(bool setToNull=false);
- bool SetQueryTimeout(UDWORD nSeconds);
-
- wxDbColDef *GetColDefs() { return colDefs; }
- bool SetColDefs(UWORD index, const wxString &fieldName, int dataType,
- void *pData, SWORD cType,
- int size, bool keyField = false, bool updateable = true,
- bool insertAllowed = true, bool derivedColumn = false);
- wxDbColDataPtr *SetColDefs(wxDbColInf *colInfs, UWORD numCols);
-
- bool CloseCursor(HSTMT cursor);
- bool DeleteCursor(HSTMT *hstmtDel);
- void SetCursor(HSTMT *hstmtActivate = (void **) wxDB_DEFAULT_CURSOR);
- HSTMT GetCursor(void) { return(hstmt); }
- HSTMT *GetNewCursor(bool setCursor = false, bool bindColumns = true);
-#if wxODBC_BACKWARD_COMPATABILITY
-// The following member function is deprecated. You should use the GetNewCursor
- HSTMT *NewCursor(bool setCursor = false, bool bindColumns = true) { return GetNewCursor(setCursor,bindColumns); }
-#endif
-
- ULONG Count(const wxString &args=_T("*"));
- int DB_STATUS(void) { return(pDb->DB_STATUS); }
-
- bool IsColNull(UWORD colNumber) const;
- bool SetColNull(UWORD colNumber, bool set=true);
- bool SetColNull(const wxString &colName, bool set=true);
-#if wxODBC_BACKWARD_COMPATABILITY
-// The following member functions are deprecated. You should use the SetColNull()
- bool SetNull(int colNumber, bool set=true) { return (SetNull(colNumber,set)); }
- bool SetNull(const char *colName, bool set=true) { return (SetNull(colName,set)); }
-#endif
-#ifdef __WXDEBUG__
- ULONG GetTableID() { return tableID; }
-#endif
-
-//TODO: Need to Document
- typedef enum { WX_ROW_MODE_QUERY , WX_ROW_MODE_INDIVIDUAL } rowmode_t;
- virtual void SetRowMode(const rowmode_t rowmode);
-#if wxODBC_BACKWARD_COMPATABILITY
- virtual wxVariant GetCol(const int colNumber) const { return GetColumn(colNumber); };
- virtual void SetCol(const int colNumber, const wxVariant value) { return SetColumn(colNumber, value); };
-#endif
- virtual wxVariant GetColumn(const int colNumber) const ;
- virtual void SetColumn(const int colNumber, const wxVariant value);
- virtual GenericKey GetKey(void);
- virtual void SetKey(const GenericKey &key);
-
- private:
- HSTMT *m_hstmtGridQuery;
- rowmode_t m_rowmode;
- size_t m_keysize;
-
-// typedef enum {unmodified=0, UpdatePending, InsertPending } recStatus;
-
-// recStatus get_ModifiedStatus() { return m_recstatus; }
-
-// void modify() {
-// if (m_recstatus==unmodified)
-// m_recstatus=UpdatePending;
-// }
-// protected:
-// void insertify() {m_recstatus=InsertPending; }
-// void unmodify() {m_recstatus=unmodified; }
-// recStatus m_recstatus;
-//TODO: Need to Document
-}; // wxDbTable
-
-
-// Change this to 0 to remove use of all deprecated functions
-#if wxODBC_BACKWARD_COMPATABILITY
-//#################################################################################
-//############### DEPRECATED functions for backward compatibility #################
-//#################################################################################
-
-// Backward compability. These will eventually go away
-typedef wxDbTable wxTable;
-typedef wxDbIdxDef wxIdxDef;
-typedef wxDbIdxDef CidxDef;
-typedef wxDbColDef wxColDef;
-typedef wxDbColDef CcolDef;
-typedef wxDbColDataPtr wxColDataPtr;
-typedef wxDbColDataPtr CcolDataPtr;
-
-const int ROWID = wxDB_ROWID_LEN;
-const int DEFAULT_CURSOR = wxDB_DEFAULT_CURSOR;
-const bool QUERY_ONLY = wxDB_QUERY_ONLY;
-const bool DISABLE_VIEW = wxDB_DISABLE_VIEW;
-#endif
-
-#endif
diff --git a/Externals/wxWidgets/include/wx/dc.h b/Externals/wxWidgets/include/wx/dc.h
deleted file mode 100644
index d4790403a1..0000000000
--- a/Externals/wxWidgets/include/wx/dc.h
+++ /dev/null
@@ -1,1003 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-// Name: wx/dc.h
-// Purpose: wxDC class
-// Author: Vadim Zeitlin
-// Modified by:
-// Created: 05/25/99
-// RCS-ID: $Id: dc.h 55927 2008-09-28 09:12:16Z VS $
-// Copyright: (c) wxWidgets team
-// Licence: wxWindows licence
-/////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_DC_H_BASE_
-#define _WX_DC_H_BASE_
-
-// ----------------------------------------------------------------------------
-// headers which we must include here
-// ----------------------------------------------------------------------------
-
-#include "wx/object.h" // the base class
-
-#include "wx/intl.h" // for wxLayoutDirection
-#include "wx/cursor.h" // we have member variables of these classes
-#include "wx/font.h" // so we can't do without them
-#include "wx/colour.h"
-#include "wx/bitmap.h" // for wxNullBitmap
-#include "wx/brush.h"
-#include "wx/pen.h"
-#include "wx/palette.h"
-#include "wx/list.h" // we use wxList in inline functions
-#include "wx/dynarray.h"
-#include "wx/math.h"
-
-class WXDLLIMPEXP_FWD_CORE wxDC;
-class WXDLLIMPEXP_FWD_CORE wxDCBase;
-
-class WXDLLEXPORT wxDrawObject
-{
-public:
-
- wxDrawObject()
- : m_isBBoxValid(false)
- , m_minX(0), m_minY(0), m_maxX(0), m_maxY(0)
- { }
-
- virtual ~wxDrawObject() { }
-
- virtual void Draw(wxDCBase&) const { }
-
- virtual void CalcBoundingBox(wxCoord x, wxCoord y)
- {
- if ( m_isBBoxValid )
- {
- if ( x < m_minX ) m_minX = x;
- if ( y < m_minY ) m_minY = y;
- if ( x > m_maxX ) m_maxX = x;
- if ( y > m_maxY ) m_maxY = y;
- }
- else
- {
- m_isBBoxValid = true;
-
- m_minX = x;
- m_minY = y;
- m_maxX = x;
- m_maxY = y;
- }
- }
-
- void ResetBoundingBox()
- {
- m_isBBoxValid = false;
-
- m_minX = m_maxX = m_minY = m_maxY = 0;
- }
-
- // Get the final bounding box of the PostScript or Metafile picture.
-
- wxCoord MinX() const { return m_minX; }
- wxCoord MaxX() const { return m_maxX; }
- wxCoord MinY() const { return m_minY; }
- wxCoord MaxY() const { return m_maxY; }
-
- //to define the type of object for derived objects
- virtual int GetType()=0;
-
-protected:
- //for boundingbox calculation
- bool m_isBBoxValid:1;
- //for boundingbox calculation
- wxCoord m_minX, m_minY, m_maxX, m_maxY;
-};
-
-// ---------------------------------------------------------------------------
-// global variables
-// ---------------------------------------------------------------------------
-
-// ---------------------------------------------------------------------------
-// wxDC is the device context - object on which any drawing is done
-// ---------------------------------------------------------------------------
-
-class WXDLLEXPORT wxDCBase : public wxObject
-{
-public:
- wxDCBase()
- : m_colour(wxColourDisplay())
- , m_ok(true)
- , m_clipping(false)
- , m_isInteractive(0)
- , m_isBBoxValid(false)
- , m_logicalOriginX(0), m_logicalOriginY(0)
- , m_deviceOriginX(0), m_deviceOriginY(0)
- , m_logicalScaleX(1.0), m_logicalScaleY(1.0)
- , m_userScaleX(1.0), m_userScaleY(1.0)
- , m_scaleX(1.0), m_scaleY(1.0)
- , m_signX(1), m_signY(1)
- , m_minX(0), m_minY(0), m_maxX(0), m_maxY(0)
- , m_clipX1(0), m_clipY1(0), m_clipX2(0), m_clipY2(0)
- , m_logicalFunction(wxCOPY)
- , m_backgroundMode(wxTRANSPARENT)
- , m_mappingMode(wxMM_TEXT)
- , m_pen()
- , m_brush()
- , m_backgroundBrush(*wxTRANSPARENT_BRUSH)
- , m_textForegroundColour(*wxBLACK)
- , m_textBackgroundColour(*wxWHITE)
- , m_font()
-#if wxUSE_PALETTE
- , m_palette()
- , m_hasCustomPalette(false)
-#endif // wxUSE_PALETTE
- {
- ResetBoundingBox();
- ResetClipping();
- }
-
- virtual ~wxDCBase() { }
-
- // graphic primitives
- // ------------------
-
- virtual void DrawObject(wxDrawObject* drawobject)
- {
- drawobject->Draw(*this);
- CalcBoundingBox(drawobject->MinX(),drawobject->MinY());
- CalcBoundingBox(drawobject->MaxX(),drawobject->MaxY());
- }
-
- bool FloodFill(wxCoord x, wxCoord y, const wxColour& col,
- int style = wxFLOOD_SURFACE)
- { return DoFloodFill(x, y, col, style); }
- bool FloodFill(const wxPoint& pt, const wxColour& col,
- int style = wxFLOOD_SURFACE)
- { return DoFloodFill(pt.x, pt.y, col, style); }
-
- // fill the area specified by rect with a radial gradient, starting from
- // initialColour in the centre of the cercle and fading to destColour.
- void GradientFillConcentric(const wxRect& rect,
- const wxColour& initialColour,
- const wxColour& destColour)
- { GradientFillConcentric(rect, initialColour, destColour,
- wxPoint(rect.GetWidth() / 2,
- rect.GetHeight() / 2)); }
-
- void GradientFillConcentric(const wxRect& rect,
- const wxColour& initialColour,
- const wxColour& destColour,
- const wxPoint& circleCenter)
- { DoGradientFillConcentric(rect, initialColour, destColour, circleCenter); }
-
- // fill the area specified by rect with a linear gradient
- void GradientFillLinear(const wxRect& rect,
- const wxColour& initialColour,
- const wxColour& destColour,
- wxDirection nDirection = wxEAST)
- { DoGradientFillLinear(rect, initialColour, destColour, nDirection); }
-
- bool GetPixel(wxCoord x, wxCoord y, wxColour *col) const
- { return DoGetPixel(x, y, col); }
- bool GetPixel(const wxPoint& pt, wxColour *col) const
- { return DoGetPixel(pt.x, pt.y, col); }
-
- void DrawLine(wxCoord x1, wxCoord y1, wxCoord x2, wxCoord y2)
- { DoDrawLine(x1, y1, x2, y2); }
- void DrawLine(const wxPoint& pt1, const wxPoint& pt2)
- { DoDrawLine(pt1.x, pt1.y, pt2.x, pt2.y); }
-
- void CrossHair(wxCoord x, wxCoord y)
- { DoCrossHair(x, y); }
- void CrossHair(const wxPoint& pt)
- { DoCrossHair(pt.x, pt.y); }
-
- void DrawArc(wxCoord x1, wxCoord y1, wxCoord x2, wxCoord y2,
- wxCoord xc, wxCoord yc)
- { DoDrawArc(x1, y1, x2, y2, xc, yc); }
- void DrawArc(const wxPoint& pt1, const wxPoint& pt2, const wxPoint& centre)
- { DoDrawArc(pt1.x, pt1.y, pt2.x, pt2.y, centre.x, centre.y); }
-
- void DrawCheckMark(wxCoord x, wxCoord y,
- wxCoord width, wxCoord height)
- { DoDrawCheckMark(x, y, width, height); }
- void DrawCheckMark(const wxRect& rect)
- { DoDrawCheckMark(rect.x, rect.y, rect.width, rect.height); }
-
- void DrawEllipticArc(wxCoord x, wxCoord y, wxCoord w, wxCoord h,
- double sa, double ea)
- { DoDrawEllipticArc(x, y, w, h, sa, ea); }
- void DrawEllipticArc(const wxPoint& pt, const wxSize& sz,
- double sa, double ea)
- { DoDrawEllipticArc(pt.x, pt.y, sz.x, sz.y, sa, ea); }
-
- void DrawPoint(wxCoord x, wxCoord y)
- { DoDrawPoint(x, y); }
- void DrawPoint(const wxPoint& pt)
- { DoDrawPoint(pt.x, pt.y); }
-
- void DrawLines(int n, wxPoint points[],
- wxCoord xoffset = 0, wxCoord yoffset = 0)
- { DoDrawLines(n, points, xoffset, yoffset); }
- void DrawLines(const wxList *list,
- wxCoord xoffset = 0, wxCoord yoffset = 0);
-
- void DrawPolygon(int n, wxPoint points[],
- wxCoord xoffset = 0, wxCoord yoffset = 0,
- int fillStyle = wxODDEVEN_RULE)
- { DoDrawPolygon(n, points, xoffset, yoffset, fillStyle); }
-
- void DrawPolygon(const wxList *list,
- wxCoord xoffset = 0, wxCoord yoffset = 0,
- int fillStyle = wxODDEVEN_RULE);
-
- void DrawPolyPolygon(int n, int count[], wxPoint points[],
- wxCoord xoffset = 0, wxCoord yoffset = 0,
- int fillStyle = wxODDEVEN_RULE)
- { DoDrawPolyPolygon(n, count, points, xoffset, yoffset, fillStyle); }
-
- void DrawRectangle(wxCoord x, wxCoord y, wxCoord width, wxCoord height)
- { DoDrawRectangle(x, y, width, height); }
- void DrawRectangle(const wxPoint& pt, const wxSize& sz)
- { DoDrawRectangle(pt.x, pt.y, sz.x, sz.y); }
- void DrawRectangle(const wxRect& rect)
- { DoDrawRectangle(rect.x, rect.y, rect.width, rect.height); }
-
- void DrawRoundedRectangle(wxCoord x, wxCoord y, wxCoord width, wxCoord height,
- double radius)
- { DoDrawRoundedRectangle(x, y, width, height, radius); }
- void DrawRoundedRectangle(const wxPoint& pt, const wxSize& sz,
- double radius)
- { DoDrawRoundedRectangle(pt.x, pt.y, sz.x, sz.y, radius); }
- void DrawRoundedRectangle(const wxRect& r, double radius)
- { DoDrawRoundedRectangle(r.x, r.y, r.width, r.height, radius); }
-
- void DrawCircle(wxCoord x, wxCoord y, wxCoord radius)
- { DoDrawEllipse(x - radius, y - radius, 2*radius, 2*radius); }
- void DrawCircle(const wxPoint& pt, wxCoord radius)
- { DrawCircle(pt.x, pt.y, radius); }
-
- void DrawEllipse(wxCoord x, wxCoord y, wxCoord width, wxCoord height)
- { DoDrawEllipse(x, y, width, height); }
- void DrawEllipse(const wxPoint& pt, const wxSize& sz)
- { DoDrawEllipse(pt.x, pt.y, sz.x, sz.y); }
- void DrawEllipse(const wxRect& rect)
- { DoDrawEllipse(rect.x, rect.y, rect.width, rect.height); }
-
- void DrawIcon(const wxIcon& icon, wxCoord x, wxCoord y)
- { DoDrawIcon(icon, x, y); }
- void DrawIcon(const wxIcon& icon, const wxPoint& pt)
- { DoDrawIcon(icon, pt.x, pt.y); }
-
- void DrawBitmap(const wxBitmap &bmp, wxCoord x, wxCoord y,
- bool useMask = false)
- { DoDrawBitmap(bmp, x, y, useMask); }
- void DrawBitmap(const wxBitmap &bmp, const wxPoint& pt,
- bool useMask = false)
- { DoDrawBitmap(bmp, pt.x, pt.y, useMask); }
-
- void DrawText(const wxString& text, wxCoord x, wxCoord y)
- { DoDrawText(text, x, y); }
- void DrawText(const wxString& text, const wxPoint& pt)
- { DoDrawText(text, pt.x, pt.y); }
-
- void DrawRotatedText(const wxString& text, wxCoord x, wxCoord y, double angle)
- { DoDrawRotatedText(text, x, y, angle); }
- void DrawRotatedText(const wxString& text, const wxPoint& pt, double angle)
- { DoDrawRotatedText(text, pt.x, pt.y, angle); }
-
- // this version puts both optional bitmap and the text into the given
- // rectangle and aligns is as specified by alignment parameter; it also
- // will emphasize the character with the given index if it is != -1 and
- // return the bounding rectangle if required
- virtual void DrawLabel(const wxString& text,
- const wxBitmap& image,
- const wxRect& rect,
- int alignment = wxALIGN_LEFT | wxALIGN_TOP,
- int indexAccel = -1,
- wxRect *rectBounding = NULL);
-
- void DrawLabel(const wxString& text, const wxRect& rect,
- int alignment = wxALIGN_LEFT | wxALIGN_TOP,
- int indexAccel = -1)
- { DrawLabel(text, wxNullBitmap, rect, alignment, indexAccel); }
-
- bool Blit(wxCoord xdest, wxCoord ydest, wxCoord width, wxCoord height,
- wxDC *source, wxCoord xsrc, wxCoord ysrc,
- int rop = wxCOPY, bool useMask = false, wxCoord xsrcMask = wxDefaultCoord, wxCoord ysrcMask = wxDefaultCoord)
- {
- return DoBlit(xdest, ydest, width, height,
- source, xsrc, ysrc, rop, useMask, xsrcMask, ysrcMask);
- }
- bool Blit(const wxPoint& destPt, const wxSize& sz,
- wxDC *source, const wxPoint& srcPt,
- int rop = wxCOPY, bool useMask = false, const wxPoint& srcPtMask = wxDefaultPosition)
- {
- return DoBlit(destPt.x, destPt.y, sz.x, sz.y,
- source, srcPt.x, srcPt.y, rop, useMask, srcPtMask.x, srcPtMask.y);
- }
-
- wxBitmap GetAsBitmap(const wxRect *subrect = (const wxRect *) NULL) const
- {
- return DoGetAsBitmap(subrect);
- }
-
-#if wxUSE_SPLINES
- // TODO: this API needs fixing (wxPointList, why (!const) "wxList *"?)
- void DrawSpline(wxCoord x1, wxCoord y1,
- wxCoord x2, wxCoord y2,
- wxCoord x3, wxCoord y3);
- void DrawSpline(int n, wxPoint points[]);
-
- void DrawSpline(wxList *points) { DoDrawSpline(points); }
-#endif // wxUSE_SPLINES
-
- // Eventually we will have wxUSE_GENERIC_DRAWELLIPSE
-#ifdef __WXWINCE__
- //! Generic method to draw ellipses, circles and arcs with current pen and brush.
- /*! \param x Upper left corner of bounding box.
- * \param y Upper left corner of bounding box.
- * \param w Width of bounding box.
- * \param h Height of bounding box.
- * \param sa Starting angle of arc
- * (counterclockwise, start at 3 o'clock, 360 is full circle).
- * \param ea Ending angle of arc.
- * \param angle Rotation angle, the Arc will be rotated after
- * calculating begin and end.
- */
- void DrawEllipticArcRot( wxCoord x, wxCoord y,
- wxCoord width, wxCoord height,
- double sa = 0, double ea = 0, double angle = 0 )
- { DoDrawEllipticArcRot( x, y, width, height, sa, ea, angle ); }
-
- void DrawEllipticArcRot( const wxPoint& pt,
- const wxSize& sz,
- double sa = 0, double ea = 0, double angle = 0 )
- { DoDrawEllipticArcRot( pt.x, pt.y, sz.x, sz.y, sa, ea, angle ); }
-
- void DrawEllipticArcRot( const wxRect& rect,
- double sa = 0, double ea = 0, double angle = 0 )
- { DoDrawEllipticArcRot( rect.x, rect.y, rect.width, rect.height, sa, ea, angle ); }
-
- virtual void DoDrawEllipticArcRot( wxCoord x, wxCoord y,
- wxCoord w, wxCoord h,
- double sa = 0, double ea = 0, double angle = 0 );
-
- //! Rotates points around center.
- /*! This is a quite straight method, it calculates in pixels
- * and so it produces rounding errors.
- * \param points The points inside will be rotated.
- * \param angle Rotating angle (counterclockwise, start at 3 o'clock, 360 is full circle).
- * \param center Center of rotation.
- */
- void Rotate( wxList* points, double angle, wxPoint center = wxPoint(0,0) );
-
- // used by DrawEllipticArcRot
- // Careful: wxList gets filled with points you have to delete later.
- void CalculateEllipticPoints( wxList* points,
- wxCoord xStart, wxCoord yStart,
- wxCoord w, wxCoord h,
- double sa, double ea );
-#endif
-
- // global DC operations
- // --------------------
-
- virtual void Clear() = 0;
-
- virtual bool StartDoc(const wxString& WXUNUSED(message)) { return true; }
- virtual void EndDoc() { }
-
- virtual void StartPage() { }
- virtual void EndPage() { }
-
-#if WXWIN_COMPATIBILITY_2_6
- wxDEPRECATED( void BeginDrawing() );
- wxDEPRECATED( void EndDrawing() );
-#endif // WXWIN_COMPATIBILITY_2_6
-
-
- // set objects to use for drawing
- // ------------------------------
-
- virtual void SetFont(const wxFont& font) = 0;
- virtual void SetPen(const wxPen& pen) = 0;
- virtual void SetBrush(const wxBrush& brush) = 0;
- virtual void SetBackground(const wxBrush& brush) = 0;
- virtual void SetBackgroundMode(int mode) = 0;
-#if wxUSE_PALETTE
- virtual void SetPalette(const wxPalette& palette) = 0;
-#endif // wxUSE_PALETTE
-
- // clipping region
- // ---------------
-
- void SetClippingRegion(wxCoord x, wxCoord y, wxCoord width, wxCoord height)
- { DoSetClippingRegion(x, y, width, height); }
- void SetClippingRegion(const wxPoint& pt, const wxSize& sz)
- { DoSetClippingRegion(pt.x, pt.y, sz.x, sz.y); }
- void SetClippingRegion(const wxRect& rect)
- { DoSetClippingRegion(rect.x, rect.y, rect.width, rect.height); }
- void SetClippingRegion(const wxRegion& region)
- { DoSetClippingRegionAsRegion(region); }
-
- virtual void DestroyClippingRegion() { ResetClipping(); }
-
- void GetClippingBox(wxCoord *x, wxCoord *y, wxCoord *w, wxCoord *h) const
- { DoGetClippingBox(x, y, w, h); }
- void GetClippingBox(wxRect& rect) const
- {
- DoGetClippingBox(&rect.x, &rect.y, &rect.width, &rect.height);
- }
-
- // text extent
- // -----------
-
- virtual wxCoord GetCharHeight() const = 0;
- virtual wxCoord GetCharWidth() const = 0;
-
- // only works for single line strings
- void GetTextExtent(const wxString& string,
- wxCoord *x, wxCoord *y,
- wxCoord *descent = NULL,
- wxCoord *externalLeading = NULL,
- wxFont *theFont = NULL) const
- { DoGetTextExtent(string, x, y, descent, externalLeading, theFont); }
-
- wxSize GetTextExtent(const wxString& string) const
- {
- wxCoord w, h;
- DoGetTextExtent(string, &w, &h);
- return wxSize(w, h);
- }
-
- // works for single as well as multi-line strings
- virtual void GetMultiLineTextExtent(const wxString& string,
- wxCoord *width,
- wxCoord *height,
- wxCoord *heightLine = NULL,
- wxFont *font = NULL) const;
-
- wxSize GetMultiLineTextExtent(const wxString& string) const
- {
- wxCoord w, h;
- GetMultiLineTextExtent(string, &w, &h);
- return wxSize(w, h);
- }
-
- // Measure cumulative width of text after each character
- bool GetPartialTextExtents(const wxString& text, wxArrayInt& widths) const
- { return DoGetPartialTextExtents(text, widths); }
-
- // size and resolution
- // -------------------
-
- // in device units
- void GetSize(int *width, int *height) const
- { DoGetSize(width, height); }
- wxSize GetSize() const
- {
- int w, h;
- DoGetSize(&w, &h);
-
- return wxSize(w, h);
- }
-
- // in mm
- void GetSizeMM(int* width, int* height) const
- { DoGetSizeMM(width, height); }
- wxSize GetSizeMM() const
- {
- int w, h;
- DoGetSizeMM(&w, &h);
-
- return wxSize(w, h);
- }
-
- // coordinates conversions
- // -----------------------
-
- // This group of functions does actual conversion of the input, as you'd
- // expect.
- wxCoord DeviceToLogicalX(wxCoord x) const;
- wxCoord DeviceToLogicalY(wxCoord y) const;
- wxCoord DeviceToLogicalXRel(wxCoord x) const;
- wxCoord DeviceToLogicalYRel(wxCoord y) const;
- wxCoord LogicalToDeviceX(wxCoord x) const;
- wxCoord LogicalToDeviceY(wxCoord y) const;
- wxCoord LogicalToDeviceXRel(wxCoord x) const;
- wxCoord LogicalToDeviceYRel(wxCoord y) const;
-
- // query DC capabilities
- // ---------------------
-
- virtual bool CanDrawBitmap() const = 0;
- virtual bool CanGetTextExtent() const = 0;
-
- // colour depth
- virtual int GetDepth() const = 0;
-
- // Resolution in Pixels per inch
- virtual wxSize GetPPI() const = 0;
-
- virtual bool Ok() const { return IsOk(); }
- virtual bool IsOk() const { return m_ok; }
-
- // accessors and setters
- // ---------------------
-
- virtual int GetBackgroundMode() const { return m_backgroundMode; }
- virtual const wxBrush& GetBackground() const { return m_backgroundBrush; }
- virtual const wxBrush& GetBrush() const { return m_brush; }
- virtual const wxFont& GetFont() const { return m_font; }
- virtual const wxPen& GetPen() const { return m_pen; }
-
- virtual const wxColour& GetTextForeground() const { return m_textForegroundColour; }
- virtual const wxColour& GetTextBackground() const { return m_textBackgroundColour; }
- virtual void SetTextForeground(const wxColour& colour)
- { m_textForegroundColour = colour; }
- virtual void SetTextBackground(const wxColour& colour)
- { m_textBackgroundColour = colour; }
-
- virtual int GetMapMode() const { return m_mappingMode; }
- virtual void SetMapMode(int mode) = 0;
-
- virtual void GetUserScale(double *x, double *y) const
- {
- if ( x ) *x = m_userScaleX;
- if ( y ) *y = m_userScaleY;
- }
- virtual void SetUserScale(double x, double y) = 0;
-
- virtual void GetLogicalScale(double *x, double *y)
- {
- if ( x ) *x = m_logicalScaleX;
- if ( y ) *y = m_logicalScaleY;
- }
- virtual void SetLogicalScale(double x, double y)
- {
- m_logicalScaleX = x;
- m_logicalScaleY = y;
- }
-
- void GetLogicalOrigin(wxCoord *x, wxCoord *y) const
- { DoGetLogicalOrigin(x, y); }
- wxPoint GetLogicalOrigin() const
- { wxCoord x, y; DoGetLogicalOrigin(&x, &y); return wxPoint(x, y); }
- virtual void SetLogicalOrigin(wxCoord x, wxCoord y) = 0;
-
- void GetDeviceOrigin(wxCoord *x, wxCoord *y) const
- { DoGetDeviceOrigin(x, y); }
- wxPoint GetDeviceOrigin() const
- { wxCoord x, y; DoGetDeviceOrigin(&x, &y); return wxPoint(x, y); }
- virtual void SetDeviceOrigin(wxCoord x, wxCoord y) = 0;
-
- virtual void ComputeScaleAndOrigin() {}
-
- virtual void SetAxisOrientation(bool xLeftRight, bool yBottomUp) = 0;
-
- virtual int GetLogicalFunction() const { return m_logicalFunction; }
- virtual void SetLogicalFunction(int function) = 0;
-
-#if WXWIN_COMPATIBILITY_2_4
- virtual void SetOptimization(bool WXUNUSED(opt)) { }
- virtual bool GetOptimization() { return false; }
-#endif
-
- // bounding box
- // ------------
-
- virtual void CalcBoundingBox(wxCoord x, wxCoord y)
- {
- if ( m_isBBoxValid )
- {
- if ( x < m_minX ) m_minX = x;
- if ( y < m_minY ) m_minY = y;
- if ( x > m_maxX ) m_maxX = x;
- if ( y > m_maxY ) m_maxY = y;
- }
- else
- {
- m_isBBoxValid = true;
-
- m_minX = x;
- m_minY = y;
- m_maxX = x;
- m_maxY = y;
- }
- }
-
- void ResetBoundingBox()
- {
- m_isBBoxValid = false;
-
- m_minX = m_maxX = m_minY = m_maxY = 0;
- }
-
- // Get the final bounding box of the PostScript or Metafile picture.
- wxCoord MinX() const { return m_minX; }
- wxCoord MaxX() const { return m_maxX; }
- wxCoord MinY() const { return m_minY; }
- wxCoord MaxY() const { return m_maxY; }
-
- // misc old functions
- // ------------------
-
- // for compatibility with the old code when wxCoord was long everywhere
- void GetTextExtent(const wxString& string,
- long *x, long *y,
- long *descent = NULL,
- long *externalLeading = NULL,
- wxFont *theFont = NULL) const
- {
- wxCoord x2, y2, descent2, externalLeading2;
- DoGetTextExtent(string, &x2, &y2,
- &descent2, &externalLeading2,
- theFont);
- if ( x )
- *x = x2;
- if ( y )
- *y = y2;
- if ( descent )
- *descent = descent2;
- if ( externalLeading )
- *externalLeading = externalLeading2;
- }
-
- void GetLogicalOrigin(long *x, long *y) const
- {
- wxCoord x2, y2;
- DoGetLogicalOrigin(&x2, &y2);
- if ( x )
- *x = x2;
- if ( y )
- *y = y2;
- }
-
- void GetDeviceOrigin(long *x, long *y) const
- {
- wxCoord x2, y2;
- DoGetDeviceOrigin(&x2, &y2);
- if ( x )
- *x = x2;
- if ( y )
- *y = y2;
- }
- void GetClippingBox(long *x, long *y, long *w, long *h) const
- {
- wxCoord xx,yy,ww,hh;
- DoGetClippingBox(&xx, &yy, &ww, &hh);
- if (x) *x = xx;
- if (y) *y = yy;
- if (w) *w = ww;
- if (h) *h = hh;
- }
-
- // RTL related functions
- // ---------------------
-
- // get or change the layout direction (LTR or RTL) for this dc,
- // wxLayout_Default is returned if layout direction is not supported
- virtual wxLayoutDirection GetLayoutDirection() const
- { return wxLayout_Default; }
- virtual void SetLayoutDirection(wxLayoutDirection WXUNUSED(dir))
- { }
-
-protected:
- // the pure virtual functions which should be implemented by wxDC
- virtual bool DoFloodFill(wxCoord x, wxCoord y, const wxColour& col,
- int style = wxFLOOD_SURFACE) = 0;
-
- virtual void DoGradientFillLinear(const wxRect& rect,
- const wxColour& initialColour,
- const wxColour& destColour,
- wxDirection nDirection = wxEAST);
-
- virtual void DoGradientFillConcentric(const wxRect& rect,
- const wxColour& initialColour,
- const wxColour& destColour,
- const wxPoint& circleCenter);
-
- virtual bool DoGetPixel(wxCoord x, wxCoord y, wxColour *col) const = 0;
-
- virtual void DoDrawPoint(wxCoord x, wxCoord y) = 0;
- virtual void DoDrawLine(wxCoord x1, wxCoord y1, wxCoord x2, wxCoord y2) = 0;
-
- virtual void DoDrawArc(wxCoord x1, wxCoord y1,
- wxCoord x2, wxCoord y2,
- wxCoord xc, wxCoord yc) = 0;
- virtual void DoDrawCheckMark(wxCoord x, wxCoord y,
- wxCoord width, wxCoord height);
- virtual void DoDrawEllipticArc(wxCoord x, wxCoord y, wxCoord w, wxCoord h,
- double sa, double ea) = 0;
-
- virtual void DoDrawRectangle(wxCoord x, wxCoord y, wxCoord width, wxCoord height) = 0;
- virtual void DoDrawRoundedRectangle(wxCoord x, wxCoord y,
- wxCoord width, wxCoord height,
- double radius) = 0;
- virtual void DoDrawEllipse(wxCoord x, wxCoord y,
- wxCoord width, wxCoord height) = 0;
-
- virtual void DoCrossHair(wxCoord x, wxCoord y) = 0;
-
- virtual void DoDrawIcon(const wxIcon& icon, wxCoord x, wxCoord y) = 0;
- virtual void DoDrawBitmap(const wxBitmap &bmp, wxCoord x, wxCoord y,
- bool useMask = false) = 0;
-
- virtual void DoDrawText(const wxString& text, wxCoord x, wxCoord y) = 0;
- virtual void DoDrawRotatedText(const wxString& text,
- wxCoord x, wxCoord y, double angle) = 0;
-
- virtual bool DoBlit(wxCoord xdest, wxCoord ydest,
- wxCoord width, wxCoord height,
- wxDC *source, wxCoord xsrc, wxCoord ysrc,
- int rop = wxCOPY, bool useMask = false, wxCoord xsrcMask = wxDefaultCoord, wxCoord ysrcMask = wxDefaultCoord) = 0;
-
- virtual wxBitmap DoGetAsBitmap(const wxRect *WXUNUSED(subrect)) const { return wxNullBitmap; }
-
- virtual void DoGetSize(int *width, int *height) const = 0;
- virtual void DoGetSizeMM(int* width, int* height) const = 0;
-
- virtual void DoDrawLines(int n, wxPoint points[],
- wxCoord xoffset, wxCoord yoffset) = 0;
- virtual void DoDrawPolygon(int n, wxPoint points[],
- wxCoord xoffset, wxCoord yoffset,
- int fillStyle = wxODDEVEN_RULE) = 0;
- virtual void DoDrawPolyPolygon(int n, int count[], wxPoint points[],
- wxCoord xoffset, wxCoord yoffset,
- int fillStyle);
-
- virtual void DoSetClippingRegionAsRegion(const wxRegion& region) = 0;
- virtual void DoSetClippingRegion(wxCoord x, wxCoord y,
- wxCoord width, wxCoord height) = 0;
-
-#if WXWIN_COMPATIBILITY_2_4
- // this was only for confusing people, use DoGetClippingBox only
- virtual void DoGetClippingRegion(wxCoord *x, wxCoord *y,
- wxCoord *w, wxCoord *h)
- { DoGetClippingBox(x, y, w, h); }
-#endif
-
- virtual void DoGetClippingBox(wxCoord *x, wxCoord *y,
- wxCoord *w, wxCoord *h) const
- {
- if ( x )
- *x = m_clipX1;
- if ( y )
- *y = m_clipY1;
- if ( w )
- *w = m_clipX2 - m_clipX1;
- if ( h )
- *h = m_clipY2 - m_clipY1;
- }
-
- virtual void DoGetLogicalOrigin(wxCoord *x, wxCoord *y) const
- {
- if ( x ) *x = m_logicalOriginX;
- if ( y ) *y = m_logicalOriginY;
- }
-
- virtual void DoGetDeviceOrigin(wxCoord *x, wxCoord *y) const
- {
- if ( x ) *x = m_deviceOriginX;
- if ( y ) *y = m_deviceOriginY;
- }
-
- virtual void DoGetTextExtent(const wxString& string,
- wxCoord *x, wxCoord *y,
- wxCoord *descent = NULL,
- wxCoord *externalLeading = NULL,
- wxFont *theFont = NULL) const = 0;
-
- virtual bool DoGetPartialTextExtents(const wxString& text, wxArrayInt& widths) const;
-
-#if wxUSE_SPLINES
- virtual void DoDrawSpline(wxList *points);
-#endif
-
-#if wxABI_VERSION >= 20810
- // returns adjustment factor for converting wxFont "point size"; in wx
- // it is point size on screen and needs to be multiplied by this value
- // for rendering on higher-resolution DCs such as printer ones
- static float GetFontPointSizeAdjustment(float dpi);
-#endif
-
-protected:
- // unset clipping variables (after clipping region was destroyed)
- void ResetClipping()
- {
- m_clipping = false;
-
- m_clipX1 = m_clipX2 = m_clipY1 = m_clipY2 = 0;
- }
-
- // flags
- bool m_colour:1;
- bool m_ok:1;
- bool m_clipping:1;
- bool m_isInteractive:1;
- bool m_isBBoxValid:1;
-
- // coordinate system variables
-
- // TODO short descriptions of what exactly they are would be nice...
-
- wxCoord m_logicalOriginX, m_logicalOriginY;
- wxCoord m_deviceOriginX, m_deviceOriginY;
-
- double m_logicalScaleX, m_logicalScaleY;
- double m_userScaleX, m_userScaleY;
- double m_scaleX, m_scaleY;
-
- // Used by SetAxisOrientation() to invert the axes
- int m_signX, m_signY;
-
- // bounding and clipping boxes
- wxCoord m_minX, m_minY, m_maxX, m_maxY;
- wxCoord m_clipX1, m_clipY1, m_clipX2, m_clipY2;
-
- int m_logicalFunction;
- int m_backgroundMode;
- int m_mappingMode;
-
- // GDI objects
- wxPen m_pen;
- wxBrush m_brush;
- wxBrush m_backgroundBrush;
- wxColour m_textForegroundColour;
- wxColour m_textBackgroundColour;
- wxFont m_font;
-
-#if wxUSE_PALETTE
- wxPalette m_palette;
- bool m_hasCustomPalette;
-#endif // wxUSE_PALETTE
-
-private:
- DECLARE_NO_COPY_CLASS(wxDCBase)
- DECLARE_ABSTRACT_CLASS(wxDCBase)
-};
-
-// ----------------------------------------------------------------------------
-// now include the declaration of wxDC class
-// ----------------------------------------------------------------------------
-
-#if defined(__WXPALMOS__)
- #include "wx/palmos/dc.h"
-#elif defined(__WXMSW__)
- #include "wx/msw/dc.h"
-#elif defined(__WXMOTIF__)
- #include "wx/motif/dc.h"
-#elif defined(__WXGTK20__)
- #include "wx/gtk/dc.h"
-#elif defined(__WXGTK__)
- #include "wx/gtk1/dc.h"
-#elif defined(__WXX11__)
- #include "wx/x11/dc.h"
-#elif defined(__WXMGL__)
- #include "wx/mgl/dc.h"
-#elif defined(__WXDFB__)
- #include "wx/dfb/dc.h"
-#elif defined(__WXMAC__)
- #include "wx/mac/dc.h"
-#elif defined(__WXCOCOA__)
- #include "wx/cocoa/dc.h"
-#elif defined(__WXPM__)
- #include "wx/os2/dc.h"
-#endif
-
-#if wxUSE_GRAPHICS_CONTEXT
- #include "wx/dcgraph.h"
-#endif
-
-// ----------------------------------------------------------------------------
-// helper class: you can use it to temporarily change the DC text colour and
-// restore it automatically when the object goes out of scope
-// ----------------------------------------------------------------------------
-
-class WXDLLEXPORT wxDCTextColourChanger
-{
-public:
- wxDCTextColourChanger(wxDC& dc) : m_dc(dc), m_colFgOld() { }
-
- wxDCTextColourChanger(wxDC& dc, const wxColour& col) : m_dc(dc)
- {
- Set(col);
- }
-
- ~wxDCTextColourChanger()
- {
- if ( m_colFgOld.Ok() )
- m_dc.SetTextForeground(m_colFgOld);
- }
-
- void Set(const wxColour& col)
- {
- if ( !m_colFgOld.Ok() )
- m_colFgOld = m_dc.GetTextForeground();
- m_dc.SetTextForeground(col);
- }
-
-private:
- wxDC& m_dc;
-
- wxColour m_colFgOld;
-
- DECLARE_NO_COPY_CLASS(wxDCTextColourChanger)
-};
-
-// ----------------------------------------------------------------------------
-// helper class: you can use it to temporarily change the DC pen and
-// restore it automatically when the object goes out of scope
-// ----------------------------------------------------------------------------
-
-class WXDLLEXPORT wxDCPenChanger
-{
-public:
- wxDCPenChanger(wxDC& dc, const wxPen& pen) : m_dc(dc), m_penOld(dc.GetPen())
- {
- m_dc.SetPen(pen);
- }
-
- ~wxDCPenChanger()
- {
- if ( m_penOld.Ok() )
- m_dc.SetPen(m_penOld);
- }
-
-private:
- wxDC& m_dc;
-
- wxPen m_penOld;
-
- DECLARE_NO_COPY_CLASS(wxDCPenChanger)
-};
-
-// ----------------------------------------------------------------------------
-// helper class: you can use it to temporarily change the DC brush and
-// restore it automatically when the object goes out of scope
-// ----------------------------------------------------------------------------
-
-class WXDLLEXPORT wxDCBrushChanger
-{
-public:
- wxDCBrushChanger(wxDC& dc, const wxBrush& brush) : m_dc(dc), m_brushOld(dc.GetBrush())
- {
- m_dc.SetBrush(brush);
- }
-
- ~wxDCBrushChanger()
- {
- if ( m_brushOld.Ok() )
- m_dc.SetBrush(m_brushOld);
- }
-
-private:
- wxDC& m_dc;
-
- wxBrush m_brushOld;
-
- DECLARE_NO_COPY_CLASS(wxDCBrushChanger)
-};
-
-// ----------------------------------------------------------------------------
-// another small helper class: sets the clipping region in its ctor and
-// destroys it in the dtor
-// ----------------------------------------------------------------------------
-
-class WXDLLEXPORT wxDCClipper
-{
-public:
- wxDCClipper(wxDC& dc, const wxRegion& r) : m_dc(dc)
- { dc.SetClippingRegion(r); }
- wxDCClipper(wxDC& dc, const wxRect& r) : m_dc(dc)
- { dc.SetClippingRegion(r.x, r.y, r.width, r.height); }
- wxDCClipper(wxDC& dc, wxCoord x, wxCoord y, wxCoord w, wxCoord h) : m_dc(dc)
- { dc.SetClippingRegion(x, y, w, h); }
-
- ~wxDCClipper() { m_dc.DestroyClippingRegion(); }
-
-private:
- wxDC& m_dc;
-
- DECLARE_NO_COPY_CLASS(wxDCClipper)
-};
-
-#endif // _WX_DC_H_BASE_
diff --git a/Externals/wxWidgets/include/wx/dcbuffer.h b/Externals/wxWidgets/include/wx/dcbuffer.h
deleted file mode 100644
index 46c28ba536..0000000000
--- a/Externals/wxWidgets/include/wx/dcbuffer.h
+++ /dev/null
@@ -1,276 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-// Name: wx/dcbuffer.h
-// Purpose: wxBufferedDC class
-// Author: Ron Lee
-// Modified by: Vadim Zeitlin (refactored, added bg preservation)
-// Created: 16/03/02
-// RCS-ID: $Id: dcbuffer.h 44609 2007-03-05 08:58:09Z VZ $
-// Copyright: (c) Ron Lee
-// Licence: wxWindows licence
-/////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_DCBUFFER_H_
-#define _WX_DCBUFFER_H_
-
-#include "wx/dcmemory.h"
-#include "wx/dcclient.h"
-#include "wx/window.h"
-
-// Split platforms into two groups - those which have well-working
-// double-buffering by default, and those which do not.
-#if defined(__WXMAC__) || defined(__WXGTK20__) || defined(__WXDFB__)
- #define wxALWAYS_NATIVE_DOUBLE_BUFFER 1
-#else
- #define wxALWAYS_NATIVE_DOUBLE_BUFFER 0
-#endif
-
-
-// ----------------------------------------------------------------------------
-// Double buffering helper.
-// ----------------------------------------------------------------------------
-
-// Assumes the buffer bitmap covers the entire scrolled window,
-// and prepares the window DC accordingly
-#define wxBUFFER_VIRTUAL_AREA 0x01
-
-// Assumes the buffer bitmap only covers the client area;
-// does not prepare the window DC
-#define wxBUFFER_CLIENT_AREA 0x02
-
-class WXDLLEXPORT wxBufferedDC : public wxMemoryDC
-{
-public:
- // Default ctor, must subsequently call Init for two stage construction.
- wxBufferedDC()
- : m_dc(NULL),
- m_buffer(NULL),
- m_style(0)
- {
- }
-
- // Construct a wxBufferedDC using a user supplied buffer.
- wxBufferedDC(wxDC *dc,
- wxBitmap& buffer = wxNullBitmap,
- int style = wxBUFFER_CLIENT_AREA)
- : m_dc(NULL), m_buffer(NULL)
- {
- Init(dc, buffer, style);
- }
-
- // Construct a wxBufferedDC with an internal buffer of 'area'
- // (where area is usually something like the size of the window
- // being buffered)
- wxBufferedDC(wxDC *dc, const wxSize& area, int style = wxBUFFER_CLIENT_AREA)
- : m_dc(NULL), m_buffer(NULL)
- {
- Init(dc, area, style);
- }
-
- // The usually desired action in the dtor is to blit the buffer.
- virtual ~wxBufferedDC()
- {
- if ( m_dc )
- UnMask();
- }
-
- // These reimplement the actions of the ctors for two stage creation
- void Init(wxDC *dc,
- wxBitmap& buffer = wxNullBitmap,
- int style = wxBUFFER_CLIENT_AREA)
- {
- InitCommon(dc, style);
-
- m_buffer = &buffer;
-
- UseBuffer();
- }
-
- void Init(wxDC *dc, const wxSize &area, int style = wxBUFFER_CLIENT_AREA)
- {
- InitCommon(dc, style);
-
- UseBuffer(area.x, area.y);
- }
-
- // Blits the buffer to the dc, and detaches the dc from the buffer (so it
- // can be effectively used once only).
- //
- // Usually called in the dtor or by the dtor of derived classes if the
- // BufferedDC must blit before the derived class (which may own the dc it's
- // blitting to) is destroyed.
- void UnMask()
- {
- wxCHECK_RET( m_dc, _T("no underlying wxDC?") );
- wxASSERT_MSG( m_buffer && m_buffer->IsOk(), _T("invalid backing store") );
-
- wxCoord x = 0,
- y = 0;
-
- if ( m_style & wxBUFFER_CLIENT_AREA )
- GetDeviceOrigin(&x, &y);
-
- m_dc->Blit(0, 0, m_buffer->GetWidth(), m_buffer->GetHeight(),
- this, -x, -y );
- m_dc = NULL;
- }
-
- // Set and get the style
- void SetStyle(int style) { m_style = style; }
- int GetStyle() const { return m_style; }
-
-private:
- // common part of Init()s
- void InitCommon(wxDC *dc, int style)
- {
- wxASSERT_MSG( !m_dc, _T("wxBufferedDC already initialised") );
-
- m_dc = dc;
- m_style = style;
-
- // inherit the same layout direction as the original DC
- if (dc && dc->IsOk())
- SetLayoutDirection(dc->GetLayoutDirection());
- }
-
- // check that the bitmap is valid and use it
- void UseBuffer(wxCoord w = -1, wxCoord h = -1);
-
- // the underlying DC to which we copy everything drawn on this one in
- // UnMask()
- //
- // NB: Without the existence of a wxNullDC, this must be a pointer, else it
- // could probably be a reference.
- wxDC *m_dc;
-
- // the buffer (selected in this DC), initially invalid
- wxBitmap *m_buffer;
-
- // the buffering style
- int m_style;
-
- DECLARE_DYNAMIC_CLASS(wxBufferedDC)
- DECLARE_NO_COPY_CLASS(wxBufferedDC)
-};
-
-
-// ----------------------------------------------------------------------------
-// Double buffered PaintDC.
-// ----------------------------------------------------------------------------
-
-// Creates a double buffered wxPaintDC, optionally allowing the
-// user to specify their own buffer to use.
-class WXDLLEXPORT wxBufferedPaintDC : public wxBufferedDC
-{
-public:
- // If no bitmap is supplied by the user, a temporary one will be created.
- wxBufferedPaintDC(wxWindow *window, wxBitmap& buffer, int style = wxBUFFER_CLIENT_AREA)
- : m_paintdc(window)
- {
- // If we're buffering the virtual window, scale the paint DC as well
- if (style & wxBUFFER_VIRTUAL_AREA)
- window->PrepareDC( m_paintdc );
-
- if( buffer.IsOk() )
- Init(&m_paintdc, buffer, style);
- else
- Init(&m_paintdc, GetBufferedSize(window, style), style);
- }
-
- // If no bitmap is supplied by the user, a temporary one will be created.
- wxBufferedPaintDC(wxWindow *window, int style = wxBUFFER_CLIENT_AREA)
- : m_paintdc(window)
- {
- // If we're using the virtual window, scale the paint DC as well
- if (style & wxBUFFER_VIRTUAL_AREA)
- window->PrepareDC( m_paintdc );
-
- Init(&m_paintdc, GetBufferedSize(window, style), style);
- }
-
- // default copy ctor ok.
-
- virtual ~wxBufferedPaintDC()
- {
- // We must UnMask here, else by the time the base class
- // does it, the PaintDC will have already been destroyed.
- UnMask();
- }
-
-protected:
- // return the size needed by the buffer: this depends on whether we're
- // buffering just the currently shown part or the total (scrolled) window
- static wxSize GetBufferedSize(wxWindow *window, int style)
- {
- return style & wxBUFFER_VIRTUAL_AREA ? window->GetVirtualSize()
- : window->GetClientSize();
- }
-
-private:
- wxPaintDC m_paintdc;
-
- DECLARE_ABSTRACT_CLASS(wxBufferedPaintDC)
- DECLARE_NO_COPY_CLASS(wxBufferedPaintDC)
-};
-
-
-
-//
-// wxAutoBufferedPaintDC is a wxPaintDC in toolkits which have double-
-// buffering by default. Otherwise it is a wxBufferedPaintDC. Thus,
-// you can only expect it work with a simple constructor that
-// accepts single wxWindow* argument.
-//
-#if wxALWAYS_NATIVE_DOUBLE_BUFFER
- #define wxAutoBufferedPaintDCBase wxPaintDC
-#else
- #define wxAutoBufferedPaintDCBase wxBufferedPaintDC
-#endif
-
-
-#ifdef __WXDEBUG__
-
-class wxAutoBufferedPaintDC : public wxAutoBufferedPaintDCBase
-{
-public:
-
- wxAutoBufferedPaintDC(wxWindow* win)
- : wxAutoBufferedPaintDCBase(win)
- {
- TestWinStyle(win);
- }
-
- virtual ~wxAutoBufferedPaintDC() { }
-
-private:
-
- void TestWinStyle(wxWindow* win)
- {
- // Help the user to get the double-buffering working properly.
- wxASSERT_MSG( win->GetBackgroundStyle() == wxBG_STYLE_CUSTOM,
- wxT("In constructor, you need to call SetBackgroundStyle(wxBG_STYLE_CUSTOM), ")
- wxT("and also, if needed, paint the background manually in the paint event handler."));
- }
-
- DECLARE_NO_COPY_CLASS(wxAutoBufferedPaintDC)
-};
-
-#else // !__WXDEBUG__
-
-// In release builds, just use typedef
-typedef wxAutoBufferedPaintDCBase wxAutoBufferedPaintDC;
-
-#endif
-
-
-// Check if the window is natively double buffered and will return a wxPaintDC
-// if it is, a wxBufferedPaintDC otherwise. It is the caller's responsibility
-// to delete the wxDC pointer when finished with it.
-inline wxDC* wxAutoBufferedPaintDCFactory(wxWindow* window)
-{
- if ( window->IsDoubleBuffered() )
- return new wxPaintDC(window);
- else
- return new wxBufferedPaintDC(window);
-}
-
-#endif // _WX_DCBUFFER_H_
diff --git a/Externals/wxWidgets/include/wx/dcclient.h b/Externals/wxWidgets/include/wx/dcclient.h
deleted file mode 100644
index c8bc31a151..0000000000
--- a/Externals/wxWidgets/include/wx/dcclient.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-// Name: wx/dcclient.h
-// Purpose: wxClientDC base header
-// Author: Julian Smart
-// Modified by:
-// Created:
-// Copyright: (c) Julian Smart
-// RCS-ID: $Id: dcclient.h 40865 2006-08-27 09:42:42Z VS $
-// Licence: wxWindows Licence
-/////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_DCCLIENT_H_BASE_
-#define _WX_DCCLIENT_H_BASE_
-
-#include "wx/defs.h"
-
-#if defined(__WXPALMOS__)
-#include "wx/palmos/dcclient.h"
-#elif defined(__WXMSW__)
-#include "wx/msw/dcclient.h"
-#elif defined(__WXMOTIF__)
-#include "wx/motif/dcclient.h"
-#elif defined(__WXGTK20__)
-#include "wx/gtk/dcclient.h"
-#elif defined(__WXGTK__)
-#include "wx/gtk1/dcclient.h"
-#elif defined(__WXX11__)
-#include "wx/x11/dcclient.h"
-#elif defined(__WXMGL__)
-#include "wx/mgl/dcclient.h"
-#elif defined(__WXDFB__)
-#include "wx/dfb/dcclient.h"
-#elif defined(__WXMAC__)
-#include "wx/mac/dcclient.h"
-#elif defined(__WXCOCOA__)
-#include "wx/cocoa/dcclient.h"
-#elif defined(__WXPM__)
-#include "wx/os2/dcclient.h"
-#endif
-
-#endif
- // _WX_DCCLIENT_H_BASE_
diff --git a/Externals/wxWidgets/include/wx/dcgraph.h b/Externals/wxWidgets/include/wx/dcgraph.h
deleted file mode 100644
index e94996657f..0000000000
--- a/Externals/wxWidgets/include/wx/dcgraph.h
+++ /dev/null
@@ -1,190 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-// Name: wx/graphdc.h
-// Purpose: graphics context device bridge header
-// Author: Stefan Csomor
-// Modified by:
-// Created:
-// Copyright: (c) Stefan Csomor
-// RCS-ID: $Id: dcgraph.h 53390 2008-04-28 04:19:15Z KO $
-// Licence: wxWindows licence
-/////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_GRAPHICS_DC_H_
-#define _WX_GRAPHICS_DC_H_
-
-#if wxUSE_GRAPHICS_CONTEXT
-
-#include "wx/geometry.h"
-#include "wx/dynarray.h"
-#include "wx/graphics.h"
-
-class WXDLLEXPORT wxWindowDC;
-
-#ifdef __WXMAC__
-#define wxGCDC wxDC
-#endif
-
-class WXDLLEXPORT wxGCDC:
-#ifdef __WXMAC__
- public wxDCBase
-#else
- public wxDC
-#endif
-{
- DECLARE_DYNAMIC_CLASS(wxGCDC)
- DECLARE_NO_COPY_CLASS(wxGCDC)
-
-public:
- wxGCDC(const wxWindowDC& dc);
-#ifdef __WXMSW__
- wxGCDC( const wxMemoryDC& dc);
-#endif
- wxGCDC();
- virtual ~wxGCDC();
-
- void Init();
-
-
- // implement base class pure virtuals
- // ----------------------------------
-
- virtual void Clear();
-
- virtual bool StartDoc( const wxString& message );
- virtual void EndDoc();
-
- virtual void StartPage();
- virtual void EndPage();
-
- // to be virtualized on next major
- // flushing the content of this dc immediately onto screen
- void Flush();
-
- virtual void SetFont(const wxFont& font);
- virtual void SetPen(const wxPen& pen);
- virtual void SetBrush(const wxBrush& brush);
- virtual void SetBackground(const wxBrush& brush);
- virtual void SetBackgroundMode(int mode);
- virtual void SetPalette(const wxPalette& palette);
-
- virtual void DestroyClippingRegion();
-
- virtual wxCoord GetCharHeight() const;
- virtual wxCoord GetCharWidth() const;
-
- virtual bool CanDrawBitmap() const;
- virtual bool CanGetTextExtent() const;
- virtual int GetDepth() const;
- virtual wxSize GetPPI() const;
-
- virtual void SetMapMode(int mode);
- virtual void SetUserScale(double x, double y);
-
- virtual void SetLogicalScale(double x, double y);
- virtual void SetLogicalOrigin(wxCoord x, wxCoord y);
- virtual void SetDeviceOrigin(wxCoord x, wxCoord y);
- virtual void SetAxisOrientation(bool xLeftRight, bool yBottomUp);
- virtual void SetLogicalFunction(int function);
-
- virtual void SetTextForeground(const wxColour& colour);
- virtual void SetTextBackground(const wxColour& colour);
-
- virtual void ComputeScaleAndOrigin();
-
- wxGraphicsContext* GetGraphicsContext() { return m_graphicContext; }
- virtual void SetGraphicsContext( wxGraphicsContext* ctx );
-
-protected:
- // the true implementations
- virtual bool DoFloodFill(wxCoord x, wxCoord y, const wxColour& col,
- int style = wxFLOOD_SURFACE);
-
- virtual void DoGradientFillLinear(const wxRect& rect,
- const wxColour& initialColour,
- const wxColour& destColour,
- wxDirection nDirection = wxEAST);
-
- virtual void DoGradientFillConcentric(const wxRect& rect,
- const wxColour& initialColour,
- const wxColour& destColour,
- const wxPoint& circleCenter);
-
- virtual bool DoGetPixel(wxCoord x, wxCoord y, wxColour *col) const;
-
- virtual void DoDrawPoint(wxCoord x, wxCoord y);
-
-#if wxUSE_SPLINES
- virtual void DoDrawSpline(wxList *points);
-#endif
-
- virtual void DoDrawLine(wxCoord x1, wxCoord y1, wxCoord x2, wxCoord y2);
-
- virtual void DoDrawArc(wxCoord x1, wxCoord y1,
- wxCoord x2, wxCoord y2,
- wxCoord xc, wxCoord yc);
-
- virtual void DoDrawCheckMark(wxCoord x, wxCoord y,
- wxCoord width, wxCoord height);
-
- virtual void DoDrawEllipticArc(wxCoord x, wxCoord y, wxCoord w, wxCoord h,
- double sa, double ea);
-
- virtual void DoDrawRectangle(wxCoord x, wxCoord y, wxCoord width, wxCoord height);
- virtual void DoDrawRoundedRectangle(wxCoord x, wxCoord y,
- wxCoord width, wxCoord height,
- double radius);
- virtual void DoDrawEllipse(wxCoord x, wxCoord y, wxCoord width, wxCoord height);
-
- virtual void DoCrossHair(wxCoord x, wxCoord y);
-
- virtual void DoDrawIcon(const wxIcon& icon, wxCoord x, wxCoord y);
- virtual void DoDrawBitmap(const wxBitmap &bmp, wxCoord x, wxCoord y,
- bool useMask = false);
-
- virtual void DoDrawText(const wxString& text, wxCoord x, wxCoord y);
- virtual void DoDrawRotatedText(const wxString& text, wxCoord x, wxCoord y,
- double angle);
-
- virtual bool DoBlit(wxCoord xdest, wxCoord ydest, wxCoord width, wxCoord height,
- wxDC *source, wxCoord xsrc, wxCoord ysrc,
- int rop = wxCOPY, bool useMask = false, wxCoord xsrcMask = -1, wxCoord ysrcMask = -1);
-
- virtual void DoGetSize(int *,int *) const;
- virtual void DoGetSizeMM(int* width, int* height) const;
-
- virtual void DoDrawLines(int n, wxPoint points[],
- wxCoord xoffset, wxCoord yoffset);
- virtual void DoDrawPolygon(int n, wxPoint points[],
- wxCoord xoffset, wxCoord yoffset,
- int fillStyle = wxODDEVEN_RULE);
- virtual void DoDrawPolyPolygon(int n, int count[], wxPoint points[],
- wxCoord xoffset, wxCoord yoffset,
- int fillStyle);
-
- virtual void DoSetClippingRegionAsRegion(const wxRegion& region);
- virtual void DoSetClippingRegion(wxCoord x, wxCoord y,
- wxCoord width, wxCoord height);
-
- virtual void DoGetTextExtent(const wxString& string,
- wxCoord *x, wxCoord *y,
- wxCoord *descent = NULL,
- wxCoord *externalLeading = NULL,
- wxFont *theFont = NULL) const;
-
- virtual bool DoGetPartialTextExtents(const wxString& text, wxArrayInt& widths) const;
-
-protected:
- // scaling variables
- bool m_logicalFunctionSupported;
- double m_mm_to_pix_x, m_mm_to_pix_y;
- wxGraphicsMatrix m_matrixOriginal;
- wxGraphicsMatrix m_matrixCurrent;
-
- double m_formerScaleX, m_formerScaleY;
-
- wxGraphicsContext* m_graphicContext;
-};
-
-#endif
-
-#endif // _WX_GRAPHICS_DC_H_
diff --git a/Externals/wxWidgets/include/wx/dcmemory.h b/Externals/wxWidgets/include/wx/dcmemory.h
deleted file mode 100644
index 68d4355ac9..0000000000
--- a/Externals/wxWidgets/include/wx/dcmemory.h
+++ /dev/null
@@ -1,76 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-// Name: wx/dcmemory.h
-// Purpose: wxMemoryDC base header
-// Author: Julian Smart
-// Modified by:
-// Created:
-// Copyright: (c) Julian Smart
-// RCS-ID: $Id: dcmemory.h 43843 2006-12-07 05:44:44Z PC $
-// Licence: wxWindows Licence
-/////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_DCMEMORY_H_BASE_
-#define _WX_DCMEMORY_H_BASE_
-
-#include "wx/bitmap.h"
-
-// NOTE: different native implementations of wxMemoryDC will derive from
-// different wxDC classes (wxPaintDC, wxWindowDC, etc), so that
-// we cannot derive wxMemoryDCBase from wxDC and then use it as the
-// only base class for native impl of wxMemoryDC...
-class WXDLLEXPORT wxMemoryDCBase
-{
-public:
- wxMemoryDCBase() { }
-
- // avoid warnings about having virtual functions but non virtual dtor
- virtual ~wxMemoryDCBase() { }
-
- // select the given bitmap to draw on it
- void SelectObject(wxBitmap& bmp)
- {
- // make sure that the given wxBitmap is not sharing its data with other
- // wxBitmap instances as its contents will be modified by any drawing
- // operation done on this DC
- if (bmp.IsOk())
- bmp.UnShare();
-
- DoSelect(bmp);
- }
-
- // select the given bitmap for read-only
- virtual void SelectObjectAsSource(const wxBitmap& bmp)
- {
- DoSelect(bmp);
- }
-
-protected:
- virtual void DoSelect(const wxBitmap& bmp) = 0;
-};
-
-#if defined(__WXPALMOS__)
-#include "wx/palmos/dcmemory.h"
-#elif defined(__WXMSW__)
-#include "wx/msw/dcmemory.h"
-#elif defined(__WXMOTIF__)
-#include "wx/motif/dcmemory.h"
-#elif defined(__WXGTK20__)
-#include "wx/gtk/dcmemory.h"
-#elif defined(__WXGTK__)
-#include "wx/gtk1/dcmemory.h"
-#elif defined(__WXX11__)
-#include "wx/x11/dcmemory.h"
-#elif defined(__WXMGL__)
-#include "wx/mgl/dcmemory.h"
-#elif defined(__WXDFB__)
-#include "wx/dfb/dcmemory.h"
-#elif defined(__WXMAC__)
-#include "wx/mac/dcmemory.h"
-#elif defined(__WXCOCOA__)
-#include "wx/cocoa/dcmemory.h"
-#elif defined(__WXPM__)
-#include "wx/os2/dcmemory.h"
-#endif
-
-#endif
- // _WX_DCMEMORY_H_BASE_
diff --git a/Externals/wxWidgets/include/wx/dcmirror.h b/Externals/wxWidgets/include/wx/dcmirror.h
deleted file mode 100644
index bc15a398e4..0000000000
--- a/Externals/wxWidgets/include/wx/dcmirror.h
+++ /dev/null
@@ -1,287 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Name: wx/dcmirror.h
-// Purpose: wxMirrorDC class
-// Author: Vadim Zeitlin
-// Modified by:
-// Created: 21.07.2003
-// RCS-ID: $Id: dcmirror.h 41751 2006-10-08 21:56:55Z VZ $
-// Copyright: (c) 2003 Vadim Zeitlin
-// Licence: wxWindows licence
-///////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_DCMIRROR_H_
-#define _WX_DCMIRROR_H_
-
-#include "wx/dc.h"
-
-// ----------------------------------------------------------------------------
-// wxMirrorDC allows to write the same code for horz/vertical layout
-// ----------------------------------------------------------------------------
-
-class WXDLLEXPORT wxMirrorDC : public wxDC
-{
-public:
- // constructs a mirror DC associated with the given real DC
- //
- // if mirror parameter is true, all vertical and horizontal coordinates are
- // exchanged, otherwise this class behaves in exactly the same way as a
- // plain DC
- //
- // the cast to wxMirrorDC is a dirty hack done to allow us to call the
- // protected methods of wxDCBase directly in our code below, without it it
- // would be impossible (this is correct from C++ point of view but doesn't
- // make any sense in this particular situation)
- wxMirrorDC(wxDC& dc, bool mirror) : m_dc((wxMirrorDC&)dc)
- { m_mirror = mirror; }
-
- // wxDCBase operations
- virtual void Clear() { m_dc.Clear(); }
- virtual void SetFont(const wxFont& font) { m_dc.SetFont(font); }
- virtual void SetPen(const wxPen& pen) { m_dc.SetPen(pen); }
- virtual void SetBrush(const wxBrush& brush) { m_dc.SetBrush(brush); }
- virtual void SetBackground(const wxBrush& brush)
- { m_dc.SetBackground(brush); }
- virtual void SetBackgroundMode(int mode) { m_dc.SetBackgroundMode(mode); }
-#if wxUSE_PALETTE
- virtual void SetPalette(const wxPalette& palette)
- { m_dc.SetPalette(palette); }
-#endif // wxUSE_PALETTE
- virtual void DestroyClippingRegion() { m_dc.DestroyClippingRegion(); }
- virtual wxCoord GetCharHeight() const { return m_dc.GetCharHeight(); }
- virtual wxCoord GetCharWidth() const { return m_dc.GetCharWidth(); }
- virtual bool CanDrawBitmap() const { return m_dc.CanDrawBitmap(); }
- virtual bool CanGetTextExtent() const { return m_dc.CanGetTextExtent(); }
- virtual int GetDepth() const { return m_dc.GetDepth(); }
- virtual wxSize GetPPI() const { return m_dc.GetPPI(); }
- virtual bool Ok() const { return IsOk(); }
- virtual bool IsOk() const { return m_dc.Ok(); }
- virtual void SetMapMode(int mode) { m_dc.SetMapMode(mode); }
- virtual void SetUserScale(double x, double y)
- { m_dc.SetUserScale(GetX(x, y), GetY(x, y)); }
- virtual void SetLogicalOrigin(wxCoord x, wxCoord y)
- { m_dc.SetLogicalOrigin(GetX(x, y), GetY(x, y)); }
- virtual void SetDeviceOrigin(wxCoord x, wxCoord y)
- { m_dc.SetDeviceOrigin(GetX(x, y), GetY(x, y)); }
- virtual void SetAxisOrientation(bool xLeftRight, bool yBottomUp)
- { m_dc.SetAxisOrientation(GetX(xLeftRight, yBottomUp),
- GetY(xLeftRight, yBottomUp)); }
- virtual void SetLogicalFunction(int function)
- { m_dc.SetLogicalFunction(function); }
-
- // helper functions which may be useful for the users of this class
- wxSize Reflect(const wxSize& sizeOrig)
- {
- return m_mirror ? wxSize(sizeOrig.y, sizeOrig.x) : sizeOrig;
- }
-
-protected:
- // returns x and y if not mirroring or y and x if mirroring
- wxCoord GetX(wxCoord x, wxCoord y) const { return m_mirror ? y : x; }
- wxCoord GetY(wxCoord x, wxCoord y) const { return m_mirror ? x : y; }
- double GetX(double x, double y) const { return m_mirror ? y : x; }
- double GetY(double x, double y) const { return m_mirror ? x : y; }
- bool GetX(bool x, bool y) const { return m_mirror ? y : x; }
- bool GetY(bool x, bool y) const { return m_mirror ? x : y; }
-
- // same thing but for pointers
- wxCoord *GetX(wxCoord *x, wxCoord *y) const { return m_mirror ? y : x; }
- wxCoord *GetY(wxCoord *x, wxCoord *y) const { return m_mirror ? x : y; }
-
- // exchange x and y unconditionally
- static void Swap(wxCoord& x, wxCoord& y)
- {
- wxCoord t = x;
- x = y;
- y = t;
- }
-
- // exchange x and y components of all points in the array if necessary
- void Mirror(int n, wxPoint points[]) const
- {
- if ( m_mirror )
- {
- for ( int i = 0; i < n; i++ )
- {
- Swap(points[i].x, points[i].y);
- }
- }
- }
-
-
- // wxDCBase functions
- virtual bool DoFloodFill(wxCoord x, wxCoord y, const wxColour& col,
- int style = wxFLOOD_SURFACE)
- {
- return m_dc.DoFloodFill(GetX(x, y), GetY(x, y), col, style);
- }
-
- virtual bool DoGetPixel(wxCoord x, wxCoord y, wxColour *col) const
- {
- return m_dc.DoGetPixel(GetX(x, y), GetY(x, y), col);
- }
-
-
- virtual void DoDrawPoint(wxCoord x, wxCoord y)
- {
- m_dc.DoDrawPoint(GetX(x, y), GetY(x, y));
- }
-
- virtual void DoDrawLine(wxCoord x1, wxCoord y1, wxCoord x2, wxCoord y2)
- {
- m_dc.DoDrawLine(GetX(x1, y1), GetY(x1, y1), GetX(x2, y2), GetY(x2, y2));
- }
-
- virtual void DoDrawArc(wxCoord x1, wxCoord y1,
- wxCoord x2, wxCoord y2,
- wxCoord xc, wxCoord yc)
- {
- wxFAIL_MSG( _T("this is probably wrong") );
-
- m_dc.DoDrawArc(GetX(x1, y1), GetY(x1, y1),
- GetX(x2, y2), GetY(x2, y2),
- xc, yc);
- }
-
- virtual void DoDrawCheckMark(wxCoord x, wxCoord y,
- wxCoord w, wxCoord h)
- {
- m_dc.DoDrawCheckMark(GetX(x, y), GetY(x, y),
- GetX(w, h), GetY(w, h));
- }
-
- virtual void DoDrawEllipticArc(wxCoord x, wxCoord y, wxCoord w, wxCoord h,
- double sa, double ea)
- {
- wxFAIL_MSG( _T("this is probably wrong") );
-
- m_dc.DoDrawEllipticArc(GetX(x, y), GetY(x, y),
- GetX(w, h), GetY(w, h),
- sa, ea);
- }
-
- virtual void DoDrawRectangle(wxCoord x, wxCoord y, wxCoord w, wxCoord h)
- {
- m_dc.DoDrawRectangle(GetX(x, y), GetY(x, y), GetX(w, h), GetY(w, h));
- }
-
- virtual void DoDrawRoundedRectangle(wxCoord x, wxCoord y,
- wxCoord w, wxCoord h,
- double radius)
- {
- m_dc.DoDrawRoundedRectangle(GetX(x, y), GetY(x, y),
- GetX(w, h), GetY(w, h),
- radius);
- }
-
- virtual void DoDrawEllipse(wxCoord x, wxCoord y, wxCoord w, wxCoord h)
- {
- m_dc.DoDrawEllipse(GetX(x, y), GetY(x, y), GetX(w, h), GetY(w, h));
- }
-
- virtual void DoCrossHair(wxCoord x, wxCoord y)
- {
- m_dc.DoCrossHair(GetX(x, y), GetY(x, y));
- }
-
- virtual void DoDrawIcon(const wxIcon& icon, wxCoord x, wxCoord y)
- {
- m_dc.DoDrawIcon(icon, GetX(x, y), GetY(x, y));
- }
-
- virtual void DoDrawBitmap(const wxBitmap &bmp, wxCoord x, wxCoord y,
- bool useMask = false)
- {
- m_dc.DoDrawBitmap(bmp, GetX(x, y), GetY(x, y), useMask);
- }
-
- virtual void DoDrawText(const wxString& text, wxCoord x, wxCoord y)
- {
- // this is never mirrored
- m_dc.DoDrawText(text, x, y);
- }
-
- virtual void DoDrawRotatedText(const wxString& text,
- wxCoord x, wxCoord y, double angle)
- {
- // this is never mirrored
- m_dc.DoDrawRotatedText(text, x, y, angle);
- }
-
- virtual bool DoBlit(wxCoord xdest, wxCoord ydest,
- wxCoord w, wxCoord h,
- wxDC *source, wxCoord xsrc, wxCoord ysrc,
- int rop = wxCOPY, bool useMask = false,
- wxCoord xsrcMask = wxDefaultCoord, wxCoord ysrcMask = wxDefaultCoord)
- {
- return m_dc.DoBlit(GetX(xdest, ydest), GetY(xdest, ydest),
- GetX(w, h), GetY(w, h),
- source, GetX(xsrc, ysrc), GetY(xsrc, ysrc),
- rop, useMask,
- GetX(xsrcMask, ysrcMask), GetX(xsrcMask, ysrcMask));
- }
-
- virtual void DoGetSize(int *w, int *h) const
- {
- m_dc.DoGetSize(GetX(w, h), GetY(w, h));
- }
-
- virtual void DoGetSizeMM(int *w, int *h) const
- {
- m_dc.DoGetSizeMM(GetX(w, h), GetY(w, h));
- }
-
- virtual void DoDrawLines(int n, wxPoint points[],
- wxCoord xoffset, wxCoord yoffset)
- {
- Mirror(n, points);
-
- m_dc.DoDrawLines(n, points,
- GetX(xoffset, yoffset), GetY(xoffset, yoffset));
-
- Mirror(n, points);
- }
-
- virtual void DoDrawPolygon(int n, wxPoint points[],
- wxCoord xoffset, wxCoord yoffset,
- int fillStyle = wxODDEVEN_RULE)
- {
- Mirror(n, points);
-
- m_dc.DoDrawPolygon(n, points,
- GetX(xoffset, yoffset), GetY(xoffset, yoffset),
- fillStyle);
-
- Mirror(n, points);
- }
-
- virtual void DoSetClippingRegionAsRegion(const wxRegion& WXUNUSED(region))
- {
- wxFAIL_MSG( _T("not implemented") );
- }
-
- virtual void DoSetClippingRegion(wxCoord x, wxCoord y,
- wxCoord w, wxCoord h)
- {
- m_dc.DoSetClippingRegion(GetX(x, y), GetY(x, y), GetX(w, h), GetY(w, h));
- }
-
- virtual void DoGetTextExtent(const wxString& string,
- wxCoord *x, wxCoord *y,
- wxCoord *descent = NULL,
- wxCoord *externalLeading = NULL,
- wxFont *theFont = NULL) const
- {
- // never mirrored
- m_dc.DoGetTextExtent(string, x, y, descent, externalLeading, theFont);
- }
-
-private:
- wxMirrorDC& m_dc;
-
- bool m_mirror;
-
- DECLARE_NO_COPY_CLASS(wxMirrorDC)
-};
-
-#endif // _WX_DCMIRROR_H_
-
diff --git a/Externals/wxWidgets/include/wx/dcprint.h b/Externals/wxWidgets/include/wx/dcprint.h
deleted file mode 100644
index 5a40911d18..0000000000
--- a/Externals/wxWidgets/include/wx/dcprint.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-// Name: wx/dcprint.h
-// Purpose: wxPrinterDC base header
-// Author: Julian Smart
-// Modified by:
-// Created:
-// Copyright: (c) Julian Smart
-// RCS-ID: $Id: dcprint.h 41240 2006-09-15 16:45:48Z PC $
-// Licence: wxWindows Licence
-/////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_DCPRINT_H_BASE_
-#define _WX_DCPRINT_H_BASE_
-
-#include "wx/defs.h"
-
-#if wxUSE_PRINTING_ARCHITECTURE
-
-#if defined(__WXPALMOS__)
-#include "wx/palmos/dcprint.h"
-#elif defined(__WXMSW__)
-#include "wx/msw/dcprint.h"
-#endif
-#if defined(__WXPM__)
-#include "wx/os2/dcprint.h"
-#endif
-#if defined(__WXMAC__)
-#include "wx/mac/dcprint.h"
-#endif
-
-#endif // wxUSE_PRINTING_ARCHITECTURE
-#endif
- // _WX_DCPRINT_H_BASE_
diff --git a/Externals/wxWidgets/include/wx/dcps.h b/Externals/wxWidgets/include/wx/dcps.h
deleted file mode 100644
index 2615d33243..0000000000
--- a/Externals/wxWidgets/include/wx/dcps.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-// Name: wx/dcps.h
-// Purpose: wxPostScriptDC base header
-// Author: Julian Smart
-// Modified by:
-// Created:
-// Copyright: (c) Julian Smart
-// RCS-ID: $Id: dcps.h 33948 2005-05-04 18:57:50Z JS $
-// Licence: wxWindows Licence
-/////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_DCPS_H_BASE_
-#define _WX_DCPS_H_BASE_
-
-#include "wx/generic/dcpsg.h"
-
-#endif
-
diff --git a/Externals/wxWidgets/include/wx/dcscreen.h b/Externals/wxWidgets/include/wx/dcscreen.h
deleted file mode 100644
index 7e59787efa..0000000000
--- a/Externals/wxWidgets/include/wx/dcscreen.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-// Name: wx/dcscreen.h
-// Purpose: wxScreenDC base header
-// Author: Julian Smart
-// Modified by:
-// Created:
-// Copyright: (c) Julian Smart
-// RCS-ID: $Id: dcscreen.h 40865 2006-08-27 09:42:42Z VS $
-// Licence: wxWindows Licence
-/////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_DCSCREEN_H_BASE_
-#define _WX_DCSCREEN_H_BASE_
-
-#include "wx/defs.h"
-
-#if defined(__WXPALMOS__)
-#include "wx/palmos/dcscreen.h"
-#elif defined(__WXMSW__)
-#include "wx/msw/dcscreen.h"
-#elif defined(__WXMOTIF__)
-#include "wx/motif/dcscreen.h"
-#elif defined(__WXGTK20__)
-#include "wx/gtk/dcscreen.h"
-#elif defined(__WXGTK__)
-#include "wx/gtk1/dcscreen.h"
-#elif defined(__WXX11__)
-#include "wx/x11/dcscreen.h"
-#elif defined(__WXMGL__)
-#include "wx/mgl/dcscreen.h"
-#elif defined(__WXDFB__)
-#include "wx/dfb/dcscreen.h"
-#elif defined(__WXMAC__)
-#include "wx/mac/dcscreen.h"
-#elif defined(__WXCOCOA__)
-#include "wx/cocoa/dcscreen.h"
-#elif defined(__WXPM__)
-#include "wx/os2/dcscreen.h"
-#endif
-
-#endif
- // _WX_DCSCREEN_H_BASE_
diff --git a/Externals/wxWidgets/include/wx/dde.h b/Externals/wxWidgets/include/wx/dde.h
deleted file mode 100644
index 402a6ec70d..0000000000
--- a/Externals/wxWidgets/include/wx/dde.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-// Name: wx/dde.h
-// Purpose: DDE base header
-// Author: Julian Smart
-// Modified by:
-// Created:
-// Copyright: (c) Julian Smart
-// RCS-ID: $Id: dde.h 53135 2008-04-12 02:31:04Z VZ $
-// Licence: wxWindows Licence
-/////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_DDE_H_BASE_
-#define _WX_DDE_H_BASE_
-
-#include "wx/list.h"
-
-class WXDLLIMPEXP_FWD_BASE wxDDEClient;
-class WXDLLIMPEXP_FWD_BASE wxDDEServer;
-class WXDLLIMPEXP_FWD_BASE wxDDEConnection;
-
-WX_DECLARE_USER_EXPORTED_LIST(wxDDEClient, wxDDEClientList, WXDLLIMPEXP_BASE);
-WX_DECLARE_USER_EXPORTED_LIST(wxDDEServer, wxDDEServerList, WXDLLIMPEXP_BASE);
-WX_DECLARE_USER_EXPORTED_LIST(wxDDEConnection, wxDDEConnectionList, WXDLLIMPEXP_BASE);
-
-#if defined(__WXMSW__)
- #include "wx/msw/dde.h"
-#else
- #error DDE is only supported on MSW
-#endif
-
-#endif
- // _WX_DDE_H_BASE_
diff --git a/Externals/wxWidgets/include/wx/debug.h b/Externals/wxWidgets/include/wx/debug.h
deleted file mode 100644
index fd389d516c..0000000000
--- a/Externals/wxWidgets/include/wx/debug.h
+++ /dev/null
@@ -1,316 +0,0 @@
-/**
-* Name: wx/debug.h
-* Purpose: Misc debug functions and macros
-* Author: Vadim Zeitlin
-* Modified by: Ryan Norton (Converted to C)
-* Created: 29/01/98
-* RCS-ID: $Id: debug.h 54492 2008-07-05 17:54:03Z SN $
-* Copyright: (c) 1998 Vadim Zeitlin
-* Licence: wxWindows licence
-*/
-
-/* THIS IS A C FILE, DON'T USE C++ FEATURES (IN PARTICULAR COMMENTS) IN IT */
-
-#ifndef _WX_DEBUG_H_
-#define _WX_DEBUG_H_
-
-#ifndef __WXWINCE__
-#include
-#endif
-#include /* for CHAR_BIT used below */
-
-#include "wx/wxchar.h" /* for __TFILE__ and wxChar */
-
-/* ---------------------------------------------------------------------------- */
-/* Defines controlling the debugging macros */
-/* ---------------------------------------------------------------------------- */
-
-/* if _DEBUG is defined (MS VC++ and others use it in debug builds), define */
-/* __WXDEBUG__ too */
-#ifdef _DEBUG
- #ifndef __WXDEBUG__
- #define __WXDEBUG__
- #endif /* !__WXDEBUG__ */
-#endif /* _DEBUG */
-
-/* if NDEBUG is defined ( uses it), undef __WXDEBUG__ and WXDEBUG */
-#ifdef NDEBUG
- #undef __WXDEBUG__
- #undef WXDEBUG
-#endif /* NDEBUG */
-
-/* if __WXDEBUG__ is defined, make sure that WXDEBUG is defined and >= 1 */
-#ifdef __WXDEBUG__
- #if !defined(WXDEBUG) || !WXDEBUG
- #undef WXDEBUG
- #define WXDEBUG 1
- #endif /* !WXDEBUG */
-#endif /* __WXDEBUG__ */
-
-#ifndef __WXFUNCTION__
- /* TODO: add more compilers supporting __FUNCTION__ */
- #if defined(__DMC__)
- /*
- __FUNCTION__ happens to be not defined within class members
- http://www.digitalmars.com/drn-bin/wwwnews?c%2B%2B.beta/485
- */
- #define __WXFUNCTION__ (NULL)
- #elif defined(__GNUC__) || \
- (defined(_MSC_VER) && _MSC_VER >= 1300) || \
- defined(__FUNCTION__)
- #define __WXFUNCTION__ __FUNCTION__
- #else
- /* still define __WXFUNCTION__ to avoid #ifdefs elsewhere */
- #define __WXFUNCTION__ (NULL)
- #endif
-#endif /* __WXFUNCTION__ already defined */
-
-/* ---------------------------------------------------------------------------- */
-/* Debugging macros */
-/* */
-/* All debugging macros rely on ASSERT() which in turn calls the user-defined */
-/* OnAssert() function. To keep things simple, it's called even when the */
-/* expression is true (i.e. everything is ok) and by default does nothing: just */
-/* returns the same value back. But if you redefine it to do something more sexy */
-/* (popping up a message box in your favourite GUI, sending you e-mail or */
-/* whatever) it will affect all ASSERTs, FAILs and CHECKs in your code. */
-/* */
-/* Warning: if you don't like advice on programming style, don't read */
-/* further! ;-) */
-/* */
-/* Extensive use of these macros is recommended! Remember that ASSERTs are */
-/* disabled in final build (without __WXDEBUG__ defined), so they add strictly */
-/* nothing to your program's code. On the other hand, CHECK macros do stay */
-/* even in release builds, but in general are not much of a burden, while */
-/* a judicious use of them might increase your program's stability. */
-/* ---------------------------------------------------------------------------- */
-
-/* Macros which are completely disabled in 'release' mode */
-/* */
-/* NB: these functions are implemented in src/common/appcmn.cpp */
-#if defined(__cplusplus) && defined(__WXDEBUG__)
- /*
- This function is called whenever one of debugging macros fails (i.e.
- condition is false in an assertion). To customize its behaviour, override
- wxApp::OnAssert().
-
- Parameters:
- szFile and nLine - file name and line number of the ASSERT
- szFunc - function name of the ASSERT, may be NULL (NB: ASCII)
- szCond - text form of the condition which failed
- szMsg - optional message explaining the reason
- */
- extern void WXDLLIMPEXP_BASE wxOnAssert(const wxChar *szFile,
- int nLine,
- const char *szFunc,
- const wxChar *szCond,
- const wxChar *szMsg = NULL);
-
- /* call this function to break into the debugger unconditionally (assuming */
- /* the program is running under debugger, of course) */
- extern void WXDLLIMPEXP_BASE wxTrap();
-
- /* generic assert macro */
- #define wxASSERT(cond) wxASSERT_MSG(cond, NULL)
-
-
- /* assert with additional message explaining its cause */
-
- /* compilers can give a warning (such as "possible unwanted ;") when using */
- /* the default definition of wxASSERT_MSG so we provide an alternative */
- #if defined(__MWERKS__)
- #define wxASSERT_MSG(cond, msg) \
- if ( cond ) \
- {} \
- else \
- wxOnAssert(__TFILE__, __LINE__, __WXFUNCTION__, _T(#cond), msg)
- #else
- #define wxASSERT_MSG(cond, msg) \
- if ( cond ) \
- ; \
- else \
- wxOnAssert(__TFILE__, __LINE__, __WXFUNCTION__, _T(#cond), msg)
- #endif
-
- /* special form of assert: always triggers it (in debug mode) */
- #define wxFAIL wxFAIL_MSG(NULL)
-
- /* FAIL with some message */
- #define wxFAIL_MSG(msg) wxFAIL_COND_MSG("wxAssertFailure", msg)
-
- /* FAIL with some message and a condition */
- #define wxFAIL_COND_MSG(cond, msg) \
- wxOnAssert(__TFILE__, __LINE__, __WXFUNCTION__, _T(cond), msg)
-
- /* An assert helper used to avoid warning when testing constant expressions, */
- /* i.e. wxASSERT( sizeof(int) == 4 ) can generate a compiler warning about */
- /* expression being always true, but not using */
- /* wxASSERT( wxAssertIsEqual(sizeof(int), 4) ) */
- /* */
- /* NB: this is made obsolete by wxCOMPILE_TIME_ASSERT() and should no */
- /* longer be used. */
- extern bool WXDLLIMPEXP_BASE wxAssertIsEqual(int x, int y);
-#else
- #define wxTrap()
-
- /* nothing to do in release mode (hopefully at this moment there are */
- /* no more bugs ;-) */
- #define wxASSERT(cond)
- #define wxASSERT_MSG(cond, msg)
- #define wxFAIL
- #define wxFAIL_MSG(msg)
- #define wxFAIL_COND_MSG(cond, msg)
-#endif /* __WXDEBUG__ */
-
-#ifdef __cplusplus
- /* Use of wxFalse instead of false suppresses compiler warnings about testing */
- /* constant expression */
- extern WXDLLIMPEXP_DATA_BASE(const bool) wxFalse;
-#endif
-
-#define wxAssertFailure wxFalse
-
-/* NB: the following macros also work in release mode! */
-
-/*
- These macros must be used only in invalid situation: for example, an
- invalid parameter (e.g. a NULL pointer) is passed to a function. Instead of
- dereferencing it and causing core dump the function might try using
- CHECK( p != NULL ) or CHECK( p != NULL, return LogError("p is NULL!!") )
-*/
-
-/* check that expression is true, "return" if not (also FAILs in debug mode) */
-#define wxCHECK(cond, rc) wxCHECK_MSG(cond, rc, NULL)
-
-/* as wxCHECK but with a message explaining why we fail */
-#define wxCHECK_MSG(cond, rc, msg) wxCHECK2_MSG(cond, return rc, msg)
-
-/* check that expression is true, perform op if not */
-#define wxCHECK2(cond, op) wxCHECK2_MSG(cond, op, NULL)
-
-/* as wxCHECK2 but with a message explaining why we fail */
-
-#ifdef __GNUC__
- #define wxFORCE_SEMICOLON typedef int wxDummyCheckInt
- /* Note: old gcc versions (e.g. 2.8) give an internal compiler error */
- /* on a simple forward declaration, when used in a template */
- /* function, so rather use a dummy typedef which does work... */
-#else
- #define wxFORCE_SEMICOLON struct wxDummyCheckStruct
- /* Note2: however, some other compilers (notably Digital Mars */
- /* don't like multiple typedefs (even though the standard */
- /* does allow them), so use a forward declaration for non-gcc. */
-#endif
-/* see comment near the definition of wxASSERT_MSG for the # if/else reason */
-#if defined(__MWERKS__)
- #define wxCHECK2_MSG(cond, op, msg) \
- if ( cond ) \
- {} \
- else \
- { \
- wxFAIL_COND_MSG(#cond, msg); \
- op; \
- } \
- struct wxDummyCheckStruct /* just to force a semicolon */
-#else
- #define wxCHECK2_MSG(cond, op, msg) \
- if ( cond ) \
- ; \
- else \
- { \
- wxFAIL_COND_MSG(#cond, msg); \
- op; \
- } \
- wxFORCE_SEMICOLON /* just to force a semicolon */
-#endif
-
-/* special form of wxCHECK2: as wxCHECK, but for use in void functions */
-/* */
-/* NB: there is only one form (with msg parameter) and it's intentional: */
-/* there is no other way to tell the caller what exactly went wrong */
-/* from the void function (of course, the function shouldn't be void */
-/* to begin with...) */
-#define wxCHECK_RET(cond, msg) wxCHECK2_MSG(cond, return, msg)
-
-/* ---------------------------------------------------------------------------- */
-/* Compile time asserts */
-/* */
-/* Unlike the normal assert and related macros above which are checked during */
-/* the program tun-time the macros below will result in a compilation error if */
-/* the condition they check is false. This is usually used to check the */
-/* expressions containing sizeof()s which cannot be tested with the */
-/* preprocessor. If you can use the #if's, do use them as you can give a more */
-/* detailed error message then. */
-/* ---------------------------------------------------------------------------- */
-
-/*
- How this works (you don't have to understand it to be able to use the
- macros): we rely on the fact that it is invalid to define a named bit field
- in a struct of width 0. All the rest are just the hacks to minimize the
- possibility of the compiler warnings when compiling this macro: in
- particular, this is why we define a struct and not an object (which would
- result in a warning about unused variable) and a named struct (otherwise we'd
- get a warning about an unnamed struct not used to define an object!).
- */
-
-#define wxMAKE_UNIQUE_ASSERT_NAME wxMAKE_UNIQUE_NAME(wxAssert_)
-
-/*
- The second argument of this macro must be a valid C++ identifier and not a
- string. I.e. you should use it like this:
-
- wxCOMPILE_TIME_ASSERT( sizeof(int) >= 2, YourIntsAreTooSmall );
-
- It may be used both within a function and in the global scope.
-*/
-#if defined(__WATCOMC__) && defined(__cplusplus)
- /* avoid "unused symbol" warning */
- #define wxCOMPILE_TIME_ASSERT(expr, msg) \
- class wxMAKE_UNIQUE_ASSERT_NAME { \
- unsigned int msg: expr; \
- wxMAKE_UNIQUE_ASSERT_NAME() { wxUnusedVar(msg); } \
- }
-#else
- #define wxCOMPILE_TIME_ASSERT(expr, msg) \
- struct wxMAKE_UNIQUE_ASSERT_NAME { unsigned int msg: expr; }
-#endif
-
-/*
- When using VC++ 6 with "Edit and Continue" on, the compiler completely
- mishandles __LINE__ and so wxCOMPILE_TIME_ASSERT() doesn't work, provide a
- way to make "unique" assert names by specifying a unique prefix explicitly
- */
-#define wxMAKE_UNIQUE_ASSERT_NAME2(text) wxCONCAT(wxAssert_, text)
-
-#define wxCOMPILE_TIME_ASSERT2(expr, msg, text) \
- struct wxMAKE_UNIQUE_ASSERT_NAME2(text) { unsigned int msg: expr; }
-
-/* helpers for wxCOMPILE_TIME_ASSERT below, for private use only */
-#define wxMAKE_BITSIZE_MSG(type, size) type ## SmallerThan ## size ## Bits
-
-/* a special case of compile time assert: check that the size of the given type */
-/* is at least the given number of bits */
-#define wxASSERT_MIN_BITSIZE(type, size) \
- wxCOMPILE_TIME_ASSERT(sizeof(type) * CHAR_BIT >= size, \
- wxMAKE_BITSIZE_MSG(type, size))
-
-/* ---------------------------------------------------------------------------- */
-/* other miscellaneous debugger-related functions */
-/* ---------------------------------------------------------------------------- */
-
-/*
- Return true if we're running under debugger.
-
- Currently this only really works under Win32 and Mac in CodeWarrior builds,
- it always returns false in other cases.
- */
-#ifdef __cplusplus
- /* ABX: check __WIN32__ instead of __WXMSW__ for the same MSWBase in any Win32 port */
- #if defined(__WXMAC__) || defined(__WIN32__)
- extern bool WXDLLIMPEXP_BASE wxIsDebuggerRunning();
- #else /* !Mac */
- inline bool wxIsDebuggerRunning() { return false; }
- #endif /* Mac/!Mac */
-#endif /* __cplusplus */
-
-#endif /* _WX_DEBUG_H_ */
diff --git a/Externals/wxWidgets/include/wx/debugrpt.h b/Externals/wxWidgets/include/wx/debugrpt.h
deleted file mode 100644
index a50f1cbd08..0000000000
--- a/Externals/wxWidgets/include/wx/debugrpt.h
+++ /dev/null
@@ -1,235 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Name: wx/debugrpt.h
-// Purpose: declaration of wxDebugReport class
-// Author: Vadim Zeitlin
-// Created: 2005-01-17
-// RCS-ID: $Id: debugrpt.h 49563 2007-10-31 20:46:21Z VZ $
-// Copyright: (c) 2005 Vadim Zeitlin
-// Licence: wxWindows licence
-///////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_DEBUGRPT_H_
-#define _WX_DEBUGRPT_H_
-
-#include "wx/defs.h"
-
-#if wxUSE_DEBUGREPORT && wxUSE_XML
-
-#include "wx/string.h"
-#include "wx/arrstr.h"
-
-class WXDLLIMPEXP_FWD_XML wxXmlNode;
-
-// ----------------------------------------------------------------------------
-// wxDebugReport: generate a debug report, processing is done in derived class
-// ----------------------------------------------------------------------------
-
-class WXDLLIMPEXP_QA wxDebugReport
-{
-public:
- // this is used for the functions which may report either the current state
- // or the state during the last (fatal) exception
- enum Context { Context_Current, Context_Exception };
-
-
- // ctor creates a temporary directory where we create the files which will
- // be included in the report, use IsOk() to check for errors
- wxDebugReport();
-
- // dtor normally destroys the temporary directory created in the ctor (with
- // all the files it contains), call Reset() to prevent this from happening
- virtual ~wxDebugReport();
-
- // return the name of the directory used for this report
- const wxString& GetDirectory() const { return m_dir; }
-
- // return true if the object was successfully initialized
- bool IsOk() const { return !GetDirectory().empty(); }
-
- // reset the directory name we use, the object can't be used any more after
- // this as it becomes invalid/uninitialized
- void Reset() { m_dir.clear(); }
-
-
- // add another file to the report: the file must already exist, its name
- // can be either absolute in which case it is copied to the debug report
- // directory or relative to GetDirectory()
- //
- // description is shown to the user in the report summary
- virtual void AddFile(const wxString& filename, const wxString& description);
-
- // convenience function: write the given text to a file with the given name
- // and then add it to the report (the difference with AddFile() is that the
- // file will be created by this function and doesn't have to already exist)
- bool AddText(const wxString& filename,
- const wxString& text,
- const wxString& description);
-
-#if wxUSE_STACKWALKER
- // add an XML file containing the current or exception context and the
- // stack trace
- bool AddCurrentContext() { return AddContext(Context_Current); }
- bool AddExceptionContext() { return AddContext(Context_Exception); }
- virtual bool AddContext(Context ctx);
-#endif
-
-#if wxUSE_CRASHREPORT
- // add a file with crash report
- bool AddCurrentDump() { return AddDump(Context_Current); }
- bool AddExceptionDump() { return AddDump(Context_Exception); }
- virtual bool AddDump(Context ctx);
-#endif // wxUSE_CRASHREPORT
-
- // add all available information to the report
- void AddAll(Context context = Context_Exception);
-
-
- // process this report: the base class simply notifies the user that the
- // report has been generated, this is usually not enough -- instead you
- // should override this method to do something more useful to you
- bool Process();
-
- // get the name used as base name for various files, by default
- // wxApp::GetName()
- virtual wxString GetReportName() const;
-
- // get the files in this report
- size_t GetFilesCount() const { return m_files.GetCount(); }
- bool GetFile(size_t n, wxString *name, wxString *desc) const;
-
- // remove the file from report: this is used by wxDebugReportPreview to
- // allow the user to remove files potentially containing private
- // information from the report
- void RemoveFile(const wxString& name);
-
-protected:
-#if wxUSE_STACKWALKER
- // used by AddContext()
- virtual bool DoAddSystemInfo(wxXmlNode *nodeSystemInfo);
- virtual bool DoAddLoadedModules(wxXmlNode *nodeModules);
- virtual bool DoAddExceptionInfo(wxXmlNode *nodeContext);
- virtual void DoAddCustomContext(wxXmlNode * WXUNUSED(nodeRoot)) { }
-#endif
-
- // used by Process()
- virtual bool DoProcess();
-
-private:
- // name of the report directory
- wxString m_dir;
-
- // the arrays of files in this report and their descriptions
- wxArrayString m_files,
- m_descriptions;
-};
-
-#if wxUSE_ZIPSTREAM
-
-// ----------------------------------------------------------------------------
-// wxDebugReportCompress: compress all files of this debug report in a .ZIP
-// ----------------------------------------------------------------------------
-
-class WXDLLIMPEXP_QA wxDebugReportCompress : public wxDebugReport
-{
-public:
- wxDebugReportCompress() { }
-
- // returns the full path of the compressed file (empty if creation failed)
- const wxString& GetCompressedFileName() const { return m_zipfile; }
-
-protected:
- virtual bool DoProcess();
-
-private:
- // full path to the ZIP file we created
- wxString m_zipfile;
-};
-
-// ----------------------------------------------------------------------------
-// wxDebugReportUploader: uploads compressed file using HTTP POST request
-// ----------------------------------------------------------------------------
-
-class WXDLLIMPEXP_QA wxDebugReportUpload : public wxDebugReportCompress
-{
-public:
- // this class will upload the compressed file created by its base class to
- // an HTML multipart/form-data form at the specified address
- //
- // the URL is the base address, input is the name of the "type=file"
- // control on the form used for the file name and action is the value of
- // the form action field
- wxDebugReportUpload(const wxString& url,
- const wxString& input,
- const wxString& action,
- const wxString& curl = _T("curl"));
-
-protected:
- virtual bool DoProcess();
-
- // this function may be overridden in a derived class to show the output
- // from curl: this may be an HTML page or anything else that the server
- // returned
- //
- // return value becomes the return value of Process()
- virtual bool OnServerReply(const wxArrayString& WXUNUSED(reply))
- {
- return true;
- }
-
-private:
- // the full URL to use with HTTP POST request
- wxString m_uploadURL;
-
- // the name of the input field containing the file name in the form at
- // above URL
- wxString m_inputField;
-
- // the curl command (by default it is just "curl" but could be full path to
- // curl or a wrapper script with curl-compatible syntax)
- wxString m_curlCmd;
-};
-
-#endif // wxUSE_ZIPSTREAM
-
-
-// ----------------------------------------------------------------------------
-// wxDebugReportPreview: presents the debug report to the user and allows him
-// to veto report entirely or remove some parts of it
-// ----------------------------------------------------------------------------
-
-class WXDLLIMPEXP_QA wxDebugReportPreview
-{
-public:
- // ctor is trivial
- wxDebugReportPreview() { }
-
- // present the report to the user and allow him to modify it by removing
- // some or all of the files and, potentially, adding some notes
- //
- // return true if the report should be processed or false if the user chose
- // to cancel report generation or removed all files from it
- virtual bool Show(wxDebugReport& dbgrpt) const = 0;
-
- // dtor is trivial as well but should be virtual for a base class
- virtual ~wxDebugReportPreview() { }
-};
-
-#if wxUSE_GUI
-
-// ----------------------------------------------------------------------------
-// wxDebugReportPreviewStd: standard debug report preview window
-// ----------------------------------------------------------------------------
-
-class WXDLLIMPEXP_QA wxDebugReportPreviewStd : public wxDebugReportPreview
-{
-public:
- wxDebugReportPreviewStd() { }
-
- virtual bool Show(wxDebugReport& dbgrpt) const;
-};
-
-#endif // wxUSE_GUI
-
-#endif // wxUSE_DEBUGREPORT && wxUSE_XML
-
-#endif // _WX_DEBUGRPT_H_
diff --git a/Externals/wxWidgets/include/wx/defs.h b/Externals/wxWidgets/include/wx/defs.h
deleted file mode 100644
index 0e2ca0c5d4..0000000000
--- a/Externals/wxWidgets/include/wx/defs.h
+++ /dev/null
@@ -1,2900 +0,0 @@
-/*
- * Name: wx/defs.h
- * Purpose: Declarations/definitions common to all wx source files
- * Author: Julian Smart and others
- * Modified by: Ryan Norton (Converted to C)
- * Created: 01/02/97
- * RCS-ID: $Id: defs.h 53370 2008-04-26 05:43:41Z KO $
- * Copyright: (c) Julian Smart
- * Licence: wxWindows licence
- */
-
-/* THIS IS A C FILE, DON'T USE C++ FEATURES (IN PARTICULAR COMMENTS) IN IT */
-
-#ifndef _WX_DEFS_H_
-#define _WX_DEFS_H_
-
-/* ---------------------------------------------------------------------------- */
-/* compiler and OS identification */
-/* ---------------------------------------------------------------------------- */
-
-#include "wx/platform.h"
-
-#ifdef __cplusplus
-/* Make sure the environment is set correctly */
-# if defined(__WXMSW__) && defined(__X__)
-# error "Target can't be both X and Windows"
-# elif defined(__WXMSW__) && defined(__PALMOS__)
-# error "Target can't be both PalmOS and Windows"
-# elif !defined(__WXMOTIF__) && \
- !defined(__WXMSW__) && \
- !defined(__WXPALMOS__)&& \
- !defined(__WXGTK__) && \
- !defined(__WXPM__) && \
- !defined(__WXMAC__) && \
- !defined(__WXCOCOA__) && \
- !defined(__X__) && \
- !defined(__WXMGL__) && \
- !defined(__WXDFB__) && \
- !defined(__WXX11__) && \
- wxUSE_GUI
-# ifdef __UNIX__
-# error "No Target! You should use wx-config program for compilation flags!"
-# else /* !Unix */
-# error "No Target! You should use supplied makefiles for compilation!"
-# endif /* Unix/!Unix */
-# endif
-#endif /*__cplusplus*/
-
-#ifndef __WXWINDOWS__
- #define __WXWINDOWS__ 1
-#endif
-
-#ifndef wxUSE_BASE
- /* by default consider that this is a monolithic build */
- #define wxUSE_BASE 1
-#endif
-
-#if !wxUSE_GUI && !defined(__WXBASE__)
- #define __WXBASE__
-#endif
-
-/* include the feature test macros */
-#include "wx/features.h"
-
-/* suppress some Visual C++ warnings */
-#ifdef __VISUALC__
- /* the only "real" warning here is 4244 but there are just too many of them */
- /* in our code... one day someone should go and fix them but until then... */
-# pragma warning(disable:4097) /* typedef used as class */
-# pragma warning(disable:4201) /* nonstandard extension used: nameless struct/union */
-# pragma warning(disable:4244) /* conversion from double to float */
-# pragma warning(disable:4355) /* 'this' used in base member initializer list */
-# pragma warning(disable:4511) /* copy ctor couldn't be generated */
-# pragma warning(disable:4512) /* operator=() couldn't be generated */
-# pragma warning(disable:4710) /* function not inlined */
-
- /* For VC++ 5.0 for release mode, the warning 'C4702: unreachable code */
- /* is buggy, and occurs for code that does actually get executed */
-# if !defined __WXDEBUG__ && __VISUALC__ <= 1100
-# pragma warning(disable:4702) /* unreachable code */
-# endif
- /* The VC++ 5.0 warning 'C4003: not enough actual parameters for macro'
- * is incompatible with the wxWidgets headers since it is given when
- * parameters are empty but not missing. */
-# if __VISUALC__ <= 1100
-# pragma warning(disable:4003) /* not enough actual parameters for macro */
-# endif
-
- /*
- VC++ 8 gives a warning when using standard functions such as sprintf,
- localtime, ... -- stop this madness, unless the user had already done it
- */
- #if __VISUALC__ >= 1400
- #ifndef _CRT_SECURE_NO_DEPRECATE
- #define _CRT_SECURE_NO_DEPRECATE 1
- #endif
- #ifndef _CRT_NON_CONFORMING_SWPRINTFS
- #define _CRT_NON_CONFORMING_SWPRINTFS 1
- #endif
- #endif /* VC++ 8 */
-#endif /* __VISUALC__ */
-
-/* suppress some Salford C++ warnings */
-#ifdef __SALFORDC__
-# pragma suppress 353 /* Possible nested comments */
-# pragma suppress 593 /* Define not used */
-# pragma suppress 61 /* enum has no name (doesn't suppress!) */
-# pragma suppress 106 /* unnamed, unused parameter */
-# pragma suppress 571 /* Virtual function hiding */
-#endif /* __SALFORDC__ */
-
-/* suppress some Borland C++ warnings */
-#ifdef __BORLANDC__
-# pragma warn -inl /* Functions containing reserved words and certain constructs are not expanded inline */
-#endif /* __BORLANDC__ */
-
-/*
- g++ gives a warning when a class has private dtor if it has no friends but
- this is a perfectly valid situation for a ref-counted class which destroys
- itself when its ref count drops to 0, so provide a macro to suppress this
- warning
- */
-#ifdef __GNUG__
-# define wxSUPPRESS_GCC_PRIVATE_DTOR_WARNING(name) \
- friend class wxDummyFriendFor ## name;
-#else /* !g++ */
-# define wxSUPPRESS_GCC_PRIVATE_DTOR_WARNING(name)
-#endif
-
-/* ---------------------------------------------------------------------------- */
-/* wxWidgets version and compatibility defines */
-/* ---------------------------------------------------------------------------- */
-
-#include "wx/version.h"
-
-/* ============================================================================ */
-/* non portable C++ features */
-/* ============================================================================ */
-
-/* ---------------------------------------------------------------------------- */
-/* compiler defects workarounds */
-/* ---------------------------------------------------------------------------- */
-
-/*
- Digital Unix C++ compiler only defines this symbol for .cxx and .hxx files,
- so define it ourselves (newer versions do it for all files, though, and
- don't allow it to be redefined)
- */
-#if defined(__DECCXX) && !defined(__VMS) && !defined(__cplusplus)
-#define __cplusplus
-#endif /* __DECCXX */
-
-/* Resolves linking problems under HP-UX when compiling with gcc/g++ */
-#if defined(__HPUX__) && defined(__GNUG__)
-#define va_list __gnuc_va_list
-#endif /* HP-UX */
-
-/* ---------------------------------------------------------------------------- */
-/* check for native bool type and TRUE/FALSE constants */
-/* ---------------------------------------------------------------------------- */
-
-/* Add more tests here for Windows compilers that already define bool */
-/* (under Unix, configure tests for this) */
-#ifndef HAVE_BOOL
- #if defined( __MWERKS__ )
- #if (__MWERKS__ >= 0x1000) && __option(bool)
- #define HAVE_BOOL
- #endif
- #elif defined(__APPLE__) && defined(__APPLE_CC__)
- /* Apple bundled gcc supports bool */
- #define HAVE_BOOL
- #elif defined(__VISUALC__) && (__VISUALC__ == 1020)
- /* in VC++ 4.2 the bool keyword is reserved (hence can't be typedefed) */
- /* but not implemented, so we must #define it */
- #define bool unsigned int
- #elif defined(__VISUALC__) && (__VISUALC__ == 1010)
- /* For VisualC++ 4.1, we need to define */
- /* bool as something between 4.0 & 5.0... */
- typedef unsigned int wxbool;
- #define bool wxbool
- #define HAVE_BOOL
- #elif defined(__VISUALC__) && (__VISUALC__ > 1020)
- /* VC++ supports bool since 4.2 */
- #define HAVE_BOOL
- #elif defined(__BORLANDC__) && (__BORLANDC__ >= 0x500)
- /* Borland 5.0+ supports bool */
- #define HAVE_BOOL
- #elif wxCHECK_WATCOM_VERSION(1,0)
- /* Watcom 11+ supports bool */
- #define HAVE_BOOL
- #elif defined(__DIGITALMARS__)
- /* DigitalMars supports bool */
- #define HAVE_BOOL
- #elif defined(__GNUWIN32__) || defined(__MINGW32__) || defined(__CYGWIN__)
- /* Cygwin supports bool */
- #define HAVE_BOOL
- #elif defined(__VISAGECPP__)
- #if __IBMCPP__ < 400
- typedef unsigned long bool;
- #define true ((bool)1)
- #define false ((bool)0)
- #endif
- #define HAVE_BOOL
- #endif /* compilers */
-#endif /* HAVE_BOOL */
-
-#if !defined(__MWERKS__) || !defined(true)
-#if !defined(HAVE_BOOL) && !defined(bool) && !defined(VMS)
- /* NB: of course, this doesn't replace the standard type, because, for */
- /* example, overloading based on bool/int parameter doesn't work and */
- /* so should be avoided in portable programs */
- typedef unsigned int bool;
-#endif /* bool */
-
-/* deal with TRUE/true stuff: we assume that if the compiler supports bool, it */
-/* supports true/false as well and that, OTOH, if it does _not_ support bool, */
-/* it doesn't support these keywords (this is less sure, in particular VC++ */
-/* 4.x could be a problem here) */
-#ifndef HAVE_BOOL
- #define true ((bool)1)
- #define false ((bool)0)
-#endif
-#endif
-
-/* for backwards compatibility, also define TRUE and FALSE */
-/* */
-/* note that these definitions should work both in C++ and C code, so don't */
-/* use true/false below */
-#ifndef TRUE
- #define TRUE 1
-#endif
-
-#ifndef FALSE
- #define FALSE 0
-#endif
-
-typedef short int WXTYPE;
-
-/* special care should be taken with this type under Windows where the real */
-/* window id is unsigned, so we must always do the cast before comparing them */
-/* (or else they would be always different!). Using wxGetWindowId() which does */
-/* the cast itself is recommended. Note that this type can't be unsigned */
-/* because wxID_ANY == -1 is a valid (and largely used) value for window id. */
-typedef int wxWindowID;
-
-/* ---------------------------------------------------------------------------- */
-/* other feature tests */
-/* ---------------------------------------------------------------------------- */
-
-/* Every ride down a slippery slope begins with a single step.. */
-/* */
-/* Yes, using nested classes is indeed against our coding standards in */
-/* general, but there are places where you can use them to advantage */
-/* without totally breaking ports that cannot use them. If you do, then */
-/* wrap it in this guard, but such cases should still be relatively rare. */
-#define wxUSE_NESTED_CLASSES 1
-
-/* check for explicit keyword support */
-#ifndef HAVE_EXPLICIT
- #if defined(__VISUALC__) && (__VISUALC__ >= 1100)
- /* VC++ 6.0 and 5.0 have explicit (what about earlier versions?) */
- #define HAVE_EXPLICIT
- #elif ( defined(__MINGW32__) || defined(__CYGWIN32__) ) \
- && wxCHECK_GCC_VERSION(2, 95)
- /* GCC 2.95 has explicit, what about earlier versions? */
- #define HAVE_EXPLICIT
- #elif defined(__BORLANDC__) && (__BORLANDC__ >= 0x0520)
- /* BC++ 4.52 doesn't support explicit, CBuilder 1 does */
- #define HAVE_EXPLICIT
- #elif defined(__MWERKS__) && (__MWERKS__ >= 0x2400)
- /* Metrowerks CW6 or higher has explicit */
- #define HAVE_EXPLICIT
- #elif defined(__DIGITALMARS__)
- #define HAVE_EXPLICIT
- #endif
-#endif /* !HAVE_EXPLICIT */
-
-#ifdef HAVE_EXPLICIT
- #define wxEXPLICIT explicit
-#else /* !HAVE_EXPLICIT */
- #define wxEXPLICIT
-#endif /* HAVE_EXPLICIT/!HAVE_EXPLICIT */
-
-/* check for static/const_cast<>() (we don't use the other ones for now) */
-#ifndef HAVE_CXX_CASTS
- #if defined(__VISUALC__) && (__VISUALC__ >= 1100)
- /* VC++ 6.0 and 5.0 have C++ casts (what about earlier versions?) */
- #define HAVE_CXX_CASTS
- #elif defined(__MINGW32__) || defined(__CYGWIN32__)
- #if wxCHECK_GCC_VERSION(2, 95)
- /* GCC 2.95 has C++ casts, what about earlier versions? */
- #define HAVE_CXX_CASTS
- #endif
- #endif
-#endif /* !HAVE_CXX_CASTS */
-
-#ifdef HAVE_CXX_CASTS
- #ifndef HAVE_CONST_CAST
- #define HAVE_CONST_CAST
- #endif
- #ifndef HAVE_REINTERPRET_CAST
- #define HAVE_REINTERPRET_CAST
- #endif
- #ifndef HAVE_STATIC_CAST
- #define HAVE_STATIC_CAST
- #endif
- #ifndef HAVE_DYNAMIC_CAST
- #define HAVE_DYNAMIC_CAST
- #endif
-#endif /* HAVE_CXX_CASTS */
-
-#ifdef HAVE_STATIC_CAST
- #define wx_static_cast(t, x) static_cast(x)
-#else
- #define wx_static_cast(t, x) ((t)(x))
-#endif
-
-#ifdef HAVE_CONST_CAST
- #define wx_const_cast(t, x) const_cast(x)
-#else
- #define wx_const_cast(t, x) ((t)(x))
-#endif
-
-#ifdef HAVE_REINTERPRET_CAST
- #define wx_reinterpret_cast(t, x) reinterpret_cast(x)
-#else
- #define wx_reinterpret_cast(t, x) ((t)(x))
-#endif
-
-/*
- This one is a wx invention: like static cast but used when we intentionally
- truncate from a larger to smaller type, static_cast<> can't be used for it
- as it results in warnings when using some compilers (SGI mipspro for example)
- */
-#if defined(__INTELC__) && defined(__cplusplus)
- template
- inline T wx_truncate_cast_impl(X x)
- {
- #pragma warning(push)
- /* implicit conversion of a 64-bit integral type to a smaller integral type */
- #pragma warning(disable: 1682)
- /* conversion from "X" to "T" may lose significant bits */
- #pragma warning(disable: 810)
-
- return x;
-
- #pragma warning(pop)
- }
-
- #define wx_truncate_cast(t, x) wx_truncate_cast_impl(x)
-
-#elif defined(__cplusplus) && defined(__VISUALC__) && __VISUALC__ >= 1310
- template
- inline T wx_truncate_cast_impl(X x)
- {
- #pragma warning(push)
- /* conversion from 'X' to 'T', possible loss of data */
- #pragma warning(disable: 4267)
-
- return x;
-
- #pragma warning(pop)
- }
-
- #define wx_truncate_cast(t, x) wx_truncate_cast_impl(x)
-#else
- #define wx_truncate_cast(t, x) ((t)(x))
-#endif
-
-/* for consistency with wxStatic/DynamicCast defined in wx/object.h */
-#define wxConstCast(obj, className) wx_const_cast(className *, obj)
-
-#ifndef HAVE_STD_WSTRING
- #if defined(__VISUALC__) && (__VISUALC__ >= 1100)
- /* VC++ 6.0 and 5.0 have std::wstring (what about earlier versions?) */
- #define HAVE_STD_WSTRING
- #elif ( defined(__MINGW32__) || defined(__CYGWIN32__) ) \
- && wxCHECK_GCC_VERSION(3, 3)
- /* GCC 3.1 has std::wstring; 3.0 never was in MinGW, 2.95 hasn't it */
- #define HAVE_STD_WSTRING
- #endif
-#endif
-
-#ifndef HAVE_STD_STRING_COMPARE
- #if defined(__VISUALC__) && (__VISUALC__ >= 1100)
- /* VC++ 6.0 and 5.0 have std::string::compare */
- /* (what about earlier versions?) */
- #define HAVE_STD_STRING_COMPARE
- #elif ( defined(__MINGW32__) || defined(__CYGWIN32__) ) \
- && wxCHECK_GCC_VERSION(3, 1)
- /* GCC 3.1 has std::string::compare; */
- /* 3.0 never was in MinGW, 2.95 hasn't it */
- #define HAVE_STD_STRING_COMPARE
- #endif
-#endif
-
-/* provide replacement for C99 va_copy() if the compiler doesn't have it */
-
-/* could be already defined by configure or the user */
-#ifndef wxVaCopy
- /* if va_copy is a macro or configure detected that we have it, use it */
- #if defined(va_copy) || defined(HAVE_VA_COPY)
- #define wxVaCopy va_copy
- #else /* no va_copy, try to provide a replacement */
- /*
- configure tries to determine whether va_list is an array or struct
- type, but it may not be used under Windows, so deal with a few
- special cases.
- */
-
- #ifdef __WATCOMC__
- /* Watcom uses array type for va_list except for PPC and Alpha */
- #if !defined(__PPC__) && !defined(__AXP__)
- #define VA_LIST_IS_ARRAY
- #endif
- #endif /* __WATCOMC__ */
-
- #if defined(__PPC__) && (defined(_CALL_SYSV) || defined (_WIN32))
- /*
- PPC using SysV ABI and NT/PPC are special in that they use an
- extra level of indirection.
- */
- #define VA_LIST_IS_POINTER
- #endif /* SysV or Win32 on __PPC__ */
-
- /*
- note that we use memmove(), not memcpy(), in case anybody tries
- to do wxVaCopy(ap, ap)
- */
- #if defined(VA_LIST_IS_POINTER)
- #define wxVaCopy(d, s) memmove(*(d), *(s), sizeof(va_list))
- #elif defined(VA_LIST_IS_ARRAY)
- #define wxVaCopy(d, s) memmove((d), (s), sizeof(va_list))
- #else /* we can only hope that va_lists are simple lvalues */
- #define wxVaCopy(d, s) ((d) = (s))
- #endif
- #endif /* va_copy/!va_copy */
-#endif /* wxVaCopy */
-
-
-/* ---------------------------------------------------------------------------- */
-/* portable calling conventions macros */
-/* ---------------------------------------------------------------------------- */
-
-/* stdcall is used for all functions called by Windows under Windows */
-#if defined(__WINDOWS__)
- #if defined(__GNUWIN32__)
- #define wxSTDCALL __attribute__((stdcall))
- #else
- /* both VC++ and Borland understand this */
- #define wxSTDCALL _stdcall
- #endif
-
-#else /* Win */
- /* no such stupidness under Unix */
- #define wxSTDCALL
-#endif /* platform */
-
-/* LINKAGEMODE mode is empty for everyting except OS/2 */
-#ifndef LINKAGEMODE
- #define LINKAGEMODE
-#endif /* LINKAGEMODE */
-
-/* wxCALLBACK should be used for the functions which are called back by */
-/* Windows (such as compare function for wxListCtrl) */
-#if defined(__WIN32__) && !defined(__WXMICROWIN__)
- #define wxCALLBACK wxSTDCALL
-#else
- /* no stdcall under Unix nor Win16 */
- #define wxCALLBACK
-#endif /* platform */
-
-/* generic calling convention for the extern "C" functions */
-
-#if defined(__VISUALC__)
- #define wxC_CALLING_CONV _cdecl
-#elif defined(__VISAGECPP__)
- #define wxC_CALLING_CONV _Optlink
-#else /* !Visual C++ */
- #define wxC_CALLING_CONV
-#endif /* compiler */
-
-/* callling convention for the qsort(3) callback */
-#define wxCMPFUNC_CONV wxC_CALLING_CONV
-
-/* compatibility :-( */
-#define CMPFUNC_CONV wxCMPFUNC_CONV
-
-/* DLL import/export declarations */
-#include "wx/dlimpexp.h"
-
-/* ---------------------------------------------------------------------------- */
-/* Very common macros */
-/* ---------------------------------------------------------------------------- */
-
-/* Printf-like attribute definitions to obtain warnings with GNU C/C++ */
-#ifndef ATTRIBUTE_PRINTF
-# if defined(__GNUC__) && !wxUSE_UNICODE
-# define ATTRIBUTE_PRINTF(m, n) __attribute__ ((__format__ (__printf__, m, n)))
-# else
-# define ATTRIBUTE_PRINTF(m, n)
-# endif
-
-# define ATTRIBUTE_PRINTF_1 ATTRIBUTE_PRINTF(1, 2)
-# define ATTRIBUTE_PRINTF_2 ATTRIBUTE_PRINTF(2, 3)
-# define ATTRIBUTE_PRINTF_3 ATTRIBUTE_PRINTF(3, 4)
-# define ATTRIBUTE_PRINTF_4 ATTRIBUTE_PRINTF(4, 5)
-# define ATTRIBUTE_PRINTF_5 ATTRIBUTE_PRINTF(5, 6)
-#endif /* !defined(ATTRIBUTE_PRINTF) */
-
-/* Macro to issue warning when using deprecated functions with gcc3 or MSVC7: */
-#if wxCHECK_GCC_VERSION(3, 1)
- #define wxDEPRECATED(x) x __attribute__ ((deprecated))
-#elif defined(__VISUALC__) && (__VISUALC__ >= 1300)
- #define wxDEPRECATED(x) __declspec(deprecated) x
-#else
- #define wxDEPRECATED(x) x
-#endif
-
-/* everybody gets the assert and other debug macros */
-#include "wx/debug.h"
-
-/* NULL declaration: it must be defined as 0 for C++ programs (in particular, */
-/* it must not be defined as "(void *)0" which is standard for C but completely */
-/* breaks C++ code) */
-#ifndef __HANDHELDPC__
-#include
-#endif
-
-/* delete pointer if it is not NULL and NULL it afterwards */
-/* (checking that it's !NULL before passing it to delete is just a */
-/* a question of style, because delete will do it itself anyhow, but it might */
-/* be considered as an error by some overzealous debugging implementations of */
-/* the library, so we do it ourselves) */
-#define wxDELETE(p) if ( (p) != NULL ) { delete p; p = NULL; }
-
-/* delete an array and NULL it (see comments above) */
-#define wxDELETEA(p) if ( (p) ) { delete [] (p); p = NULL; }
-
-/* size of statically declared array */
-#define WXSIZEOF(array) (sizeof(array)/sizeof(array[0]))
-
-/* symbolic constant used by all Find()-like functions returning positive */
-/* integer on success as failure indicator */
-#define wxNOT_FOUND (-1)
-
-/* ---------------------------------------------------------------------------- */
-/* macros to avoid compiler warnings */
-/* ---------------------------------------------------------------------------- */
-
-/* Macro to cut down on compiler warnings. */
-#if 1 /* there should be no more any compilers needing the "#else" version */
- #define WXUNUSED(identifier) /* identifier */
-#else /* stupid, broken compiler */
- #define WXUNUSED(identifier) identifier
-#endif
-
-/* some arguments are only used in debug mode, but unused in release one */
-#ifdef __WXDEBUG__
- #define WXUNUSED_UNLESS_DEBUG(param) param
-#else
- #define WXUNUSED_UNLESS_DEBUG(param) WXUNUSED(param)
-#endif
-
-/* some arguments are not used in unicode mode */
-#if wxUSE_UNICODE
- #define WXUNUSED_IN_UNICODE(param) WXUNUSED(param)
-#else
- #define WXUNUSED_IN_UNICODE(param) param
-#endif
-
-/* some arguments are not used in WinCE build */
-#ifdef __WXWINCE__
- #define WXUNUSED_IN_WINCE(param) WXUNUSED(param)
-#else
- #define WXUNUSED_IN_WINCE(param) param
-#endif
-
-/* unused parameters in non stream builds */
-#if wxUSE_STREAMS
- #define WXUNUSED_UNLESS_STREAMS(param) param
-#else
- #define WXUNUSED_UNLESS_STREAMS(param) WXUNUSED(param)
-#endif
-
-/* some compilers give warning about a possibly unused variable if it is */
-/* initialized in both branches of if/else and shut up if it is initialized */
-/* when declared, but other compilers then give warnings about unused variable */
-/* value -- this should satisfy both of them */
-#if defined(__VISUALC__)
- #define wxDUMMY_INITIALIZE(val) = val
-#else
- #define wxDUMMY_INITIALIZE(val)
-#endif
-
-/* sometimes the value of a variable is *really* not used, to suppress the */
-/* resulting warning you may pass it to this function */
-#ifdef __cplusplus
-# ifdef __BORLANDC__
-# define wxUnusedVar(identifier) identifier
-# else
- template
- inline void wxUnusedVar(const T& WXUNUSED(t)) { }
-# endif
-#endif
-
-/* ---------------------------------------------------------------------------- */
-/* compiler specific settings */
-/* ---------------------------------------------------------------------------- */
-
-/* to allow compiling with warning level 4 under Microsoft Visual C++ some */
-/* warnings just must be disabled */
-#ifdef __VISUALC__
- #pragma warning(disable: 4514) /* unreferenced inline func has been removed */
-/*
- you might be tempted to disable this one also: triggered by CHECK and FAIL
- macros in debug.h, but it's, overall, a rather useful one, so I leave it and
- will try to find some way to disable this warning just for CHECK/FAIL. Anyone?
-*/
- #pragma warning(disable: 4127) /* conditional expression is constant */
-#endif /* VC++ */
-
-#if defined(__MWERKS__)
- #undef try
- #undef except
- #undef finally
- #define except(x) catch(...)
-#endif /* Metrowerks */
-
-#if wxONLY_WATCOM_EARLIER_THAN(1,4)
- typedef short mode_t;
-#endif
-
-/* where should i put this? we need to make sure of this as it breaks */
-/* the code. */
-#if !wxUSE_IOSTREAMH && defined(__WXDEBUG__)
-# ifndef __MWERKS__
-/* #undef __WXDEBUG__ */
-# ifdef wxUSE_DEBUG_NEW_ALWAYS
-# undef wxUSE_DEBUG_NEW_ALWAYS
-# define wxUSE_DEBUG_NEW_ALWAYS 0
-# endif
-# endif
-#endif
-
-/* ---------------------------------------------------------------------------- */
-/* standard wxWidgets types */
-/* ---------------------------------------------------------------------------- */
-
-/* the type for screen and DC coordinates */
-typedef int wxCoord;
-
-enum { wxDefaultCoord = -1 };
-
-/* ---------------------------------------------------------------------------- */
-/* define fixed length types */
-/* ---------------------------------------------------------------------------- */
-
-#if defined(__WXPALMOS__) || defined(__MINGW32__)
- #include
-#endif
-
-/* chars are always one byte (by definition), shorts are always two (in */
-/* practice) */
-
-/* 8bit */
-#ifndef SIZEOF_CHAR
- #define SIZEOF_CHAR 1
-#endif
-typedef signed char wxInt8;
-typedef unsigned char wxUint8;
-typedef wxUint8 wxByte;
-
-
-/* 16bit */
-#ifdef SIZEOF_SHORT
- #if SIZEOF_SHORT != 2
- #error "wxWidgets assumes sizeof(short) == 2, please fix the code"
- #endif
-#else
- #define SIZEOF_SHORT 2
-#endif
-
-typedef signed short wxInt16;
-typedef unsigned short wxUint16;
-
-typedef wxUint16 wxWord;
-
-/*
- things are getting more interesting with ints, longs and pointers
-
- there are several different standard data models described by this table:
-
- +-----------+----------------------------+
- |type\model | LP64 ILP64 LLP64 ILP32 LP32|
- +-----------+----------------------------+
- |char | 8 8 8 8 8 |
- |short | 16 16 16 16 16 |
- |int | 32 64 32 32 16 |
- |long | 64 64 32 32 32 |
- |long long | 64 |
- |void * | 64 64 64 32 32 |
- +-----------+----------------------------+
-
- Win16 used LP32 (but we don't support it any longer), Win32 obviously used
- ILP32 and Win64 uses LLP64 (a.k.a. P64)
-
- Under Unix LP64 is the most widely used (the only I've ever seen, in fact)
- */
-
-/* 32bit */
-#ifdef __PALMOS__
- typedef int wxInt32;
- typedef unsigned int wxUint32;
- #define SIZEOF_INT 4
- #define SIZEOF_LONG 4
- #define SIZEOF_WCHAR_T 2
- #define SIZEOF_SIZE_T 4
- #define wxSIZE_T_IS_UINT
- #define SIZEOF_VOID_P 4
- #define SIZEOF_SIZE_T 4
-#elif defined(__WINDOWS__)
- /* Win64 uses LLP64 model and so ints and longs have the same size as in */
- /* Win32 */
- #if defined(__WIN32__)
- typedef int wxInt32;
- typedef unsigned int wxUint32;
-
- /* Assume that if SIZEOF_INT is defined that all the other ones except
- SIZEOF_SIZE_T, are too. See next #if below. */
- #ifndef SIZEOF_INT
- #define SIZEOF_INT 4
- #define SIZEOF_LONG 4
- #define SIZEOF_WCHAR_T 2
-
- /*
- under Win64 sizeof(size_t) == 8 and so it is neither unsigned
- int nor unsigned long!
- */
- #ifdef __WIN64__
- #define SIZEOF_SIZE_T 8
-
- #undef wxSIZE_T_IS_UINT
- #else /* Win32 */
- #define SIZEOF_SIZE_T 4
-
- #define wxSIZE_T_IS_UINT
- #endif
- #undef wxSIZE_T_IS_ULONG
-
- #ifdef __WIN64__
- #define SIZEOF_VOID_P 8
- #else /* Win32 */
- #define SIZEOF_VOID_P 4
- #endif /* Win64/32 */
- #endif /* !defined(SIZEOF_INT) */
-
- /*
- If Python.h was included first, it defines all of the SIZEOF's above
- except for SIZEOF_SIZE_T, so we need to do it here to avoid
- triggering the #error in the ssize_t typedefs below...
- */
- #ifndef SIZEOF_SIZE_T
- #ifdef __WIN64__
- #define SIZEOF_SIZE_T 8
- #else /* Win32 */
- #define SIZEOF_SIZE_T 4
- #endif
- #endif
- #else
- #error "Unsupported Windows version"
- #endif
-#else /* !Windows */
- /* SIZEOF_XXX are normally defined by configure */
- #ifdef SIZEOF_INT
- #if SIZEOF_INT == 8
- /* must be ILP64 data model, there is normally a special 32 bit */
- /* type in it but we don't know what it is... */
- #error "No 32bit int type on this platform"
- #elif SIZEOF_INT == 4
- typedef int wxInt32;
- typedef unsigned int wxUint32;
- #elif SIZEOF_INT == 2
- /* must be LP32 */
- #if SIZEOF_LONG != 4
- #error "No 32bit int type on this platform"
- #endif
-
- typedef long wxInt32;
- typedef unsigned long wxUint32;
- #else
- /* wxWidgets is not ready for 128bit systems yet... */
- #error "Unknown sizeof(int) value, what are you compiling for?"
- #endif
- #else /* !defined(SIZEOF_INT) */
- /* assume default 32bit machine -- what else can we do? */
- wxCOMPILE_TIME_ASSERT( sizeof(int) == 4, IntMustBeExactly4Bytes);
- wxCOMPILE_TIME_ASSERT( sizeof(size_t) == 4, SizeTMustBeExactly4Bytes);
- wxCOMPILE_TIME_ASSERT( sizeof(void *) == 4, PtrMustBeExactly4Bytes);
-
- #define SIZEOF_INT 4
- #define SIZEOF_SIZE_T 4
- #define SIZEOF_VOID_P 4
-
- typedef int wxInt32;
- typedef unsigned int wxUint32;
-
- #if defined(__MACH__) && !defined(SIZEOF_WCHAR_T)
- #define SIZEOF_WCHAR_T 4
- #endif
- #if wxUSE_WCHAR_T && !defined(SIZEOF_WCHAR_T)
- /* also assume that sizeof(wchar_t) == 2 (under Unix the most */
- /* common case is 4 but there configure would have defined */
- /* SIZEOF_WCHAR_T for us) */
- /* the most common case */
- wxCOMPILE_TIME_ASSERT( sizeof(wchar_t) == 2,
- Wchar_tMustBeExactly2Bytes);
-
- #define SIZEOF_WCHAR_T 2
- #endif /* wxUSE_WCHAR_T */
- #endif
-#endif /* Win/!Win */
-
-typedef wxUint32 wxDword;
-
-/*
- Define an integral type big enough to contain all of long, size_t and void *.
- */
-#if SIZEOF_LONG >= SIZEOF_VOID_P && SIZEOF_LONG >= SIZEOF_SIZE_T
- /* normal case */
- typedef unsigned long wxUIntPtr;
-#elif SIZEOF_SIZE_T >= SIZEOF_VOID_P
- /* Win64 case */
- typedef size_t wxUIntPtr;
-#else
- /*
- This should never happen for the current architectures but if you're
- using one where it does, please contact wx-dev@lists.wxwidgets.org.
- */
- #error "Pointers can't be stored inside integer types."
-#endif
-
-#ifdef __cplusplus
-/* And also define a couple of simple functions to cast pointer to/from it. */
-inline wxUIntPtr wxPtrToUInt(const void *p)
-{
- /*
- VC++ 7.1 gives warnings about casts such as below even when they're
- explicit with /Wp64 option, suppress them as we really know what we're
- doing here. Same thing with icc with -Wall.
- */
-#ifdef __VISUALC__
- #if __VISUALC__ >= 1200
- #pragma warning(push)
- #endif
- /* pointer truncation from '' to '' */
- #pragma warning(disable: 4311)
-#elif defined(__INTELC__)
- #pragma warning(push)
- /* conversion from pointer to same-sized integral type */
- #pragma warning(disable: 1684)
-#endif
-
- return wx_reinterpret_cast(wxUIntPtr, p);
-
-#if (defined(__VISUALC__) && __VISUALC__ >= 1200) || defined(__INTELC__)
- #pragma warning(pop)
-#endif
-}
-
-inline void *wxUIntToPtr(wxUIntPtr p)
-{
-#ifdef __VISUALC__
- #if __VISUALC__ >= 1200
- #pragma warning(push)
- #endif
- /* conversion to type of greater size */
- #pragma warning(disable: 4312)
-#elif defined(__INTELC__)
- #pragma warning(push)
- /* invalid type conversion: "wxUIntPtr={unsigned long}" to "void *" */
- #pragma warning(disable: 171)
-#endif
-
- return wx_reinterpret_cast(void *, p);
-
-#if (defined(__VISUALC__) && __VISUALC__ >= 1200) || defined(__INTELC__)
- #pragma warning(pop)
-#endif
-}
-#endif /*__cplusplus*/
-
-
-/* 64 bit */
-
-/* NB: we #define and not typedef wxLongLong_t because we use "#ifdef */
-/* wxLongLong_t" in wx/longlong.h */
-
-/* wxULongLong_t is set later (usually to unsigned wxLongLong_t) */
-
-/* to avoid compilation problems on 64bit machines with ambiguous method calls */
-/* we will need to define this */
-#undef wxLongLongIsLong
-
-/*
- First check for specific compilers which have known 64 bit integer types,
- this avoids clashes with SIZEOF_LONG[_LONG] being defined incorrectly for
- e.g. MSVC builds (Python.h defines it as 8 even for MSVC).
-
- Also notice that we check for "long long" before checking for 64 bit long as
- we still want to use "long long" and not "long" for wxLongLong_t on 64 bit
- architectures to be able to pass wxLongLong_t to the standard functions
- prototyped as taking "long long" such as strtoll().
- */
-#if (defined(__VISUALC__) && defined(__WIN32__))
- #define wxLongLong_t __int64
- #define wxLongLongSuffix i64
- #define wxLongLongFmtSpec _T("I64")
-#elif defined(__BORLANDC__) && defined(__WIN32__) && (__BORLANDC__ >= 0x520)
- #define wxLongLong_t __int64
- #define wxLongLongSuffix i64
- #define wxLongLongFmtSpec _T("L")
-#elif (defined(__WATCOMC__) && (defined(__WIN32__) || defined(__DOS__) || defined(__OS2__)))
- #define wxLongLong_t __int64
- #define wxLongLongSuffix i64
- #define wxLongLongFmtSpec _T("L")
-#elif defined(__DIGITALMARS__)
- #define wxLongLong_t __int64
- #define wxLongLongSuffix LL
- #define wxLongLongFmtSpec _T("ll")
-#elif defined(__MINGW32__)
- #define wxLongLong_t long long
- #define wxLongLongSuffix ll
- #define wxLongLongFmtSpec _T("I64")
-#elif defined(__MWERKS__)
- #if __option(longlong)
- #define wxLongLong_t long long
- #define wxLongLongSuffix ll
- #define wxLongLongFmtSpec _T("ll")
- #else
- #error "The 64 bit integer support in CodeWarrior has been disabled."
- #error "See the documentation on the 'longlong' pragma."
- #endif
-#elif defined(__WXPALMOS__)
- #define wxLongLong_t int64_t
- #define wxLongLongSuffix ll
- #define wxLongLongFmtSpec _T("ll")
-#elif defined(__VISAGECPP__) && __IBMCPP__ >= 400
- #define wxLongLong_t long long
-#elif (defined(SIZEOF_LONG_LONG) && SIZEOF_LONG_LONG >= 8) || \
- defined(__GNUC__) || \
- defined(__CYGWIN__) || \
- defined(__WXMICROWIN__) || \
- (defined(__DJGPP__) && __DJGPP__ >= 2)
- #define wxLongLong_t long long
- #define wxLongLongSuffix ll
- #define wxLongLongFmtSpec _T("ll")
-#elif defined(SIZEOF_LONG) && (SIZEOF_LONG == 8)
- #define wxLongLong_t long
- #define wxLongLongSuffix l
- #define wxLongLongFmtSpec _T("l")
- #define wxLongLongIsLong
-#endif
-
-
-#ifdef wxLongLong_t
-
- #ifdef __WXPALMOS__
- #define wxULongLong_t uint64_t
- #else
- #define wxULongLong_t unsigned wxLongLong_t
- #endif
-
- /* these macros allow to define 64 bit constants in a portable way */
- #define wxLL(x) wxCONCAT(x, wxLongLongSuffix)
- #define wxULL(x) wxCONCAT(x, wxCONCAT(u, wxLongLongSuffix))
-
- typedef wxLongLong_t wxInt64;
- typedef wxULongLong_t wxUint64;
-
- #define wxHAS_INT64 1
-
-#elif wxUSE_LONGLONG
- /* these macros allow to define 64 bit constants in a portable way */
- #define wxLL(x) wxLongLong(x)
- #define wxULL(x) wxULongLong(x)
-
- #define wxInt64 wxLongLong
- #define wxUint64 wxULongLong
-
- #define wxHAS_INT64 1
-
-#else /* !wxUSE_LONGLONG */
-
- #define wxHAS_INT64 0
-
-#endif
-
-
-/* Make sure ssize_t is defined (a signed type the same size as size_t) */
-/* HAVE_SSIZE_T should be defined for compiliers that already have it */
-#ifdef __MINGW32__
- #if defined(_SSIZE_T_) && !defined(HAVE_SSIZE_T)
- #define HAVE_SSIZE_T
- #endif
-#endif
-#if defined(__PALMOS__) && !defined(HAVE_SSIZE_T)
- #define HAVE_SSIZE_T
-#endif
-#if wxCHECK_WATCOM_VERSION(1,4)
- #define HAVE_SSIZE_T
-#endif
-#ifndef HAVE_SSIZE_T
- #if SIZEOF_SIZE_T == 4
- typedef wxInt32 ssize_t;
- #elif SIZEOF_SIZE_T == 8
- typedef wxInt64 ssize_t;
- #else
- #error "error defining ssize_t, size_t is not 4 or 8 bytes"
- #endif
-#endif
-
-
-/* base floating point types */
-/* wxFloat32: 32 bit IEEE float ( 1 sign, 8 exponent bits, 23 fraction bits */
-/* wxFloat64: 64 bit IEEE float ( 1 sign, 11 exponent bits, 52 fraction bits */
-/* wxDouble: native fastest representation that has at least wxFloat64 */
-/* precision, so use the IEEE types for storage, and this for */
-/* calculations */
-
-typedef float wxFloat32;
-#if (defined( __WXMAC__ ) || defined(__WXCOCOA__)) && defined (__MWERKS__)
- typedef short double wxFloat64;
-#else
- typedef double wxFloat64;
-#endif
-
-typedef double wxDouble;
-
-/*
- Some (non standard) compilers typedef wchar_t as an existing type instead
- of treating it as a real fundamental type, set wxWCHAR_T_IS_REAL_TYPE to 0
- for them and to 1 for all the others.
- */
-#if wxUSE_WCHAR_T
- /*
- VC++ typedefs wchar_t as unsigned short by default, that is unless
- /Za or /Zc:wchar_t option is used in which case _WCHAR_T_DEFINED is
- defined.
- */
-# if defined(__VISUALC__) && !defined(_NATIVE_WCHAR_T_DEFINED)
-# define wxWCHAR_T_IS_REAL_TYPE 0
-# else /* compiler having standard-conforming wchar_t */
-# define wxWCHAR_T_IS_REAL_TYPE 1
-# endif
-#endif /* wxUSE_WCHAR_T */
-
-/* ---------------------------------------------------------------------------- */
-/* byte ordering related definition and macros */
-/* ---------------------------------------------------------------------------- */
-
-/* byte sex */
-
-#define wxBIG_ENDIAN 4321
-#define wxLITTLE_ENDIAN 1234
-#define wxPDP_ENDIAN 3412
-
-#ifdef WORDS_BIGENDIAN
-#define wxBYTE_ORDER wxBIG_ENDIAN
-#else
-#define wxBYTE_ORDER wxLITTLE_ENDIAN
-#endif
-
-/* byte swapping */
-
-#if defined (__MWERKS__) && ( (__MWERKS__ < 0x0900) || macintosh )
-/* assembler versions for these */
-#ifdef __POWERPC__
- inline wxUint16 wxUINT16_SWAP_ALWAYS( wxUint16 i )
- {return (__lhbrx( &i , 0 ) );}
- inline wxInt16 wxINT16_SWAP_ALWAYS( wxInt16 i )
- {return (__lhbrx( &i , 0 ) );}
- inline wxUint32 wxUINT32_SWAP_ALWAYS( wxUint32 i )
- {return (__lwbrx( &i , 0 ) );}
- inline wxInt32 wxINT32_SWAP_ALWAYS( wxInt32 i )
- {return (__lwbrx( &i , 0 ) );}
-#else
- #pragma parameter __D0 wxUINT16_SWAP_ALWAYS(__D0)
- pascal wxUint16 wxUINT16_SWAP_ALWAYS(wxUint16 value)
- = { 0xE158 };
-
- #pragma parameter __D0 wxINT16_SWAP_ALWAYS(__D0)
- pascal wxInt16 wxINT16_SWAP_ALWAYS(wxInt16 value)
- = { 0xE158 };
-
- #pragma parameter __D0 wxUINT32_SWAP_ALWAYS (__D0)
- pascal wxUint32 wxUINT32_SWAP_ALWAYS(wxUint32 value)
- = { 0xE158, 0x4840, 0xE158 };
-
- #pragma parameter __D0 wxINT32_SWAP_ALWAYS (__D0)
- pascal wxInt32 wxINT32_SWAP_ALWAYS(wxInt32 value)
- = { 0xE158, 0x4840, 0xE158 };
-
-#endif
-#else /* !MWERKS */
-#define wxUINT16_SWAP_ALWAYS(val) \
- ((wxUint16) ( \
- (((wxUint16) (val) & (wxUint16) 0x00ffU) << 8) | \
- (((wxUint16) (val) & (wxUint16) 0xff00U) >> 8)))
-
-#define wxINT16_SWAP_ALWAYS(val) \
- ((wxInt16) ( \
- (((wxUint16) (val) & (wxUint16) 0x00ffU) << 8) | \
- (((wxUint16) (val) & (wxUint16) 0xff00U) >> 8)))
-
-#define wxUINT32_SWAP_ALWAYS(val) \
- ((wxUint32) ( \
- (((wxUint32) (val) & (wxUint32) 0x000000ffU) << 24) | \
- (((wxUint32) (val) & (wxUint32) 0x0000ff00U) << 8) | \
- (((wxUint32) (val) & (wxUint32) 0x00ff0000U) >> 8) | \
- (((wxUint32) (val) & (wxUint32) 0xff000000U) >> 24)))
-
-#define wxINT32_SWAP_ALWAYS(val) \
- ((wxInt32) ( \
- (((wxUint32) (val) & (wxUint32) 0x000000ffU) << 24) | \
- (((wxUint32) (val) & (wxUint32) 0x0000ff00U) << 8) | \
- (((wxUint32) (val) & (wxUint32) 0x00ff0000U) >> 8) | \
- (((wxUint32) (val) & (wxUint32) 0xff000000U) >> 24)))
-#endif
-/* machine specific byte swapping */
-
-#ifdef wxLongLong_t
- #define wxUINT64_SWAP_ALWAYS(val) \
- ((wxUint64) ( \
- (((wxUint64) (val) & (wxUint64) wxULL(0x00000000000000ff)) << 56) | \
- (((wxUint64) (val) & (wxUint64) wxULL(0x000000000000ff00)) << 40) | \
- (((wxUint64) (val) & (wxUint64) wxULL(0x0000000000ff0000)) << 24) | \
- (((wxUint64) (val) & (wxUint64) wxULL(0x00000000ff000000)) << 8) | \
- (((wxUint64) (val) & (wxUint64) wxULL(0x000000ff00000000)) >> 8) | \
- (((wxUint64) (val) & (wxUint64) wxULL(0x0000ff0000000000)) >> 24) | \
- (((wxUint64) (val) & (wxUint64) wxULL(0x00ff000000000000)) >> 40) | \
- (((wxUint64) (val) & (wxUint64) wxULL(0xff00000000000000)) >> 56)))
-
- #define wxINT64_SWAP_ALWAYS(val) \
- ((wxInt64) ( \
- (((wxUint64) (val) & (wxUint64) wxULL(0x00000000000000ff)) << 56) | \
- (((wxUint64) (val) & (wxUint64) wxULL(0x000000000000ff00)) << 40) | \
- (((wxUint64) (val) & (wxUint64) wxULL(0x0000000000ff0000)) << 24) | \
- (((wxUint64) (val) & (wxUint64) wxULL(0x00000000ff000000)) << 8) | \
- (((wxUint64) (val) & (wxUint64) wxULL(0x000000ff00000000)) >> 8) | \
- (((wxUint64) (val) & (wxUint64) wxULL(0x0000ff0000000000)) >> 24) | \
- (((wxUint64) (val) & (wxUint64) wxULL(0x00ff000000000000)) >> 40) | \
- (((wxUint64) (val) & (wxUint64) wxULL(0xff00000000000000)) >> 56)))
-#elif wxUSE_LONGLONG /* !wxLongLong_t */
- #define wxUINT64_SWAP_ALWAYS(val) \
- ((wxUint64) ( \
- ((wxULongLong(val) & wxULongLong(0L, 0x000000ffU)) << 56) | \
- ((wxULongLong(val) & wxULongLong(0L, 0x0000ff00U)) << 40) | \
- ((wxULongLong(val) & wxULongLong(0L, 0x00ff0000U)) << 24) | \
- ((wxULongLong(val) & wxULongLong(0L, 0xff000000U)) << 8) | \
- ((wxULongLong(val) & wxULongLong(0x000000ffL, 0U)) >> 8) | \
- ((wxULongLong(val) & wxULongLong(0x0000ff00L, 0U)) >> 24) | \
- ((wxULongLong(val) & wxULongLong(0x00ff0000L, 0U)) >> 40) | \
- ((wxULongLong(val) & wxULongLong(0xff000000L, 0U)) >> 56)))
-
- #define wxINT64_SWAP_ALWAYS(val) \
- ((wxInt64) ( \
- ((wxLongLong(val) & wxLongLong(0L, 0x000000ffU)) << 56) | \
- ((wxLongLong(val) & wxLongLong(0L, 0x0000ff00U)) << 40) | \
- ((wxLongLong(val) & wxLongLong(0L, 0x00ff0000U)) << 24) | \
- ((wxLongLong(val) & wxLongLong(0L, 0xff000000U)) << 8) | \
- ((wxLongLong(val) & wxLongLong(0x000000ffL, 0U)) >> 8) | \
- ((wxLongLong(val) & wxLongLong(0x0000ff00L, 0U)) >> 24) | \
- ((wxLongLong(val) & wxLongLong(0x00ff0000L, 0U)) >> 40) | \
- ((wxLongLong(val) & wxLongLong(0xff000000L, 0U)) >> 56)))
-#endif /* wxLongLong_t/!wxLongLong_t */
-
-#ifdef WORDS_BIGENDIAN
- #define wxUINT16_SWAP_ON_BE(val) wxUINT16_SWAP_ALWAYS(val)
- #define wxINT16_SWAP_ON_BE(val) wxINT16_SWAP_ALWAYS(val)
- #define wxUINT16_SWAP_ON_LE(val) (val)
- #define wxINT16_SWAP_ON_LE(val) (val)
- #define wxUINT32_SWAP_ON_BE(val) wxUINT32_SWAP_ALWAYS(val)
- #define wxINT32_SWAP_ON_BE(val) wxINT32_SWAP_ALWAYS(val)
- #define wxUINT32_SWAP_ON_LE(val) (val)
- #define wxINT32_SWAP_ON_LE(val) (val)
- #if wxHAS_INT64
- #define wxUINT64_SWAP_ON_BE(val) wxUINT64_SWAP_ALWAYS(val)
- #define wxUINT64_SWAP_ON_LE(val) (val)
- #endif
-#else
- #define wxUINT16_SWAP_ON_LE(val) wxUINT16_SWAP_ALWAYS(val)
- #define wxINT16_SWAP_ON_LE(val) wxINT16_SWAP_ALWAYS(val)
- #define wxUINT16_SWAP_ON_BE(val) (val)
- #define wxINT16_SWAP_ON_BE(val) (val)
- #define wxUINT32_SWAP_ON_LE(val) wxUINT32_SWAP_ALWAYS(val)
- #define wxINT32_SWAP_ON_LE(val) wxINT32_SWAP_ALWAYS(val)
- #define wxUINT32_SWAP_ON_BE(val) (val)
- #define wxINT32_SWAP_ON_BE(val) (val)
- #if wxHAS_INT64
- #define wxUINT64_SWAP_ON_LE(val) wxUINT64_SWAP_ALWAYS(val)
- #define wxUINT64_SWAP_ON_BE(val) (val)
- #endif
-#endif
-
-/* ---------------------------------------------------------------------------- */
-/* Geometric flags */
-/* ---------------------------------------------------------------------------- */
-
-enum wxGeometryCentre
-{
- wxCENTRE = 0x0001,
- wxCENTER = wxCENTRE
-};
-
-/* centering into frame rather than screen (obsolete) */
-#define wxCENTER_FRAME 0x0000
-/* centre on screen rather than parent */
-#define wxCENTRE_ON_SCREEN 0x0002
-#define wxCENTER_ON_SCREEN wxCENTRE_ON_SCREEN
-
-enum wxOrientation
-{
- /* don't change the values of these elements, they are used elsewhere */
- wxHORIZONTAL = 0x0004,
- wxVERTICAL = 0x0008,
-
- wxBOTH = wxVERTICAL | wxHORIZONTAL
-};
-
-enum wxDirection
-{
- wxLEFT = 0x0010,
- wxRIGHT = 0x0020,
- wxUP = 0x0040,
- wxDOWN = 0x0080,
-
- wxTOP = wxUP,
- wxBOTTOM = wxDOWN,
-
- wxNORTH = wxUP,
- wxSOUTH = wxDOWN,
- wxWEST = wxLEFT,
- wxEAST = wxRIGHT,
-
- wxALL = (wxUP | wxDOWN | wxRIGHT | wxLEFT)
-};
-
-enum wxAlignment
-{
- wxALIGN_NOT = 0x0000,
- wxALIGN_CENTER_HORIZONTAL = 0x0100,
- wxALIGN_CENTRE_HORIZONTAL = wxALIGN_CENTER_HORIZONTAL,
- wxALIGN_LEFT = wxALIGN_NOT,
- wxALIGN_TOP = wxALIGN_NOT,
- wxALIGN_RIGHT = 0x0200,
- wxALIGN_BOTTOM = 0x0400,
- wxALIGN_CENTER_VERTICAL = 0x0800,
- wxALIGN_CENTRE_VERTICAL = wxALIGN_CENTER_VERTICAL,
-
- wxALIGN_CENTER = (wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL),
- wxALIGN_CENTRE = wxALIGN_CENTER,
-
- /* a mask to extract alignment from the combination of flags */
- wxALIGN_MASK = 0x0f00
-};
-
-enum wxStretch
-{
- wxSTRETCH_NOT = 0x0000,
- wxSHRINK = 0x1000,
- wxGROW = 0x2000,
- wxEXPAND = wxGROW,
- wxSHAPED = 0x4000,
- wxFIXED_MINSIZE = 0x8000,
-#if wxABI_VERSION >= 20808
- wxRESERVE_SPACE_EVEN_IF_HIDDEN = 0x0002,
-#endif
- wxTILE = 0xc000,
-
- /* for compatibility only, default now, don't use explicitly any more */
-#if WXWIN_COMPATIBILITY_2_4
- wxADJUST_MINSIZE = 0x00100000
-#else
- wxADJUST_MINSIZE = 0
-#endif
-};
-
-/* border flags: the values are chosen for backwards compatibility */
-enum wxBorder
-{
- /* this is different from wxBORDER_NONE as by default the controls do have */
- /* border */
- wxBORDER_DEFAULT = 0,
-
- wxBORDER_NONE = 0x00200000,
- wxBORDER_STATIC = 0x01000000,
- wxBORDER_SIMPLE = 0x02000000,
- wxBORDER_RAISED = 0x04000000,
- wxBORDER_SUNKEN = 0x08000000,
- wxBORDER_DOUBLE = 0x10000000, /* deprecated */
- wxBORDER_THEME = 0x10000000,
-
- /* a mask to extract border style from the combination of flags */
- wxBORDER_MASK = 0x1f200000
-};
-
-/* This makes it easier to specify a 'normal' border for a control */
-#if defined(__SMARTPHONE__) || defined(__POCKETPC__)
-#define wxDEFAULT_CONTROL_BORDER wxBORDER_SIMPLE
-#else
-#define wxDEFAULT_CONTROL_BORDER wxBORDER_SUNKEN
-#endif
-
-/* ---------------------------------------------------------------------------- */
-/* Window style flags */
-/* ---------------------------------------------------------------------------- */
-
-/*
- * Values are chosen so they can be |'ed in a bit list.
- * Some styles are used across more than one group,
- * so the values mustn't clash with others in the group.
- * Otherwise, numbers can be reused across groups.
- *
- * From version 1.66:
- * Window (cross-group) styles now take up the first half
- * of the flag, and control-specific styles the
- * second half.
- *
- */
-
-/*
- * Window (Frame/dialog/subwindow/panel item) style flags
- */
-#define wxVSCROLL 0x80000000
-#define wxHSCROLL 0x40000000
-#define wxCAPTION 0x20000000
-
-/* New styles (border styles are now in their own enum) */
-#define wxDOUBLE_BORDER wxBORDER_DOUBLE
-#define wxSUNKEN_BORDER wxBORDER_SUNKEN
-#define wxRAISED_BORDER wxBORDER_RAISED
-#define wxBORDER wxBORDER_SIMPLE
-#define wxSIMPLE_BORDER wxBORDER_SIMPLE
-#define wxSTATIC_BORDER wxBORDER_STATIC
-#define wxNO_BORDER wxBORDER_NONE
-
-/* wxALWAYS_SHOW_SB: instead of hiding the scrollbar when it is not needed, */
-/* disable it - but still show (see also wxLB_ALWAYS_SB style) */
-/* */
-/* NB: as this style is only supported by wxUniversal and wxMSW so far */
-#define wxALWAYS_SHOW_SB 0x00800000
-
-/* Clip children when painting, which reduces flicker in e.g. frames and */
-/* splitter windows, but can't be used in a panel where a static box must be */
-/* 'transparent' (panel paints the background for it) */
-#define wxCLIP_CHILDREN 0x00400000
-
-/* Note we're reusing the wxCAPTION style because we won't need captions */
-/* for subwindows/controls */
-#define wxCLIP_SIBLINGS 0x20000000
-
-#define wxTRANSPARENT_WINDOW 0x00100000
-
-/* Add this style to a panel to get tab traversal working outside of dialogs */
-/* (on by default for wxPanel, wxDialog, wxScrolledWindow) */
-#define wxTAB_TRAVERSAL 0x00080000
-
-/* Add this style if the control wants to get all keyboard messages (under */
-/* Windows, it won't normally get the dialog navigation key events) */
-#define wxWANTS_CHARS 0x00040000
-
-/* Make window retained (Motif only, see src/generic/scrolwing.cpp)
- * This is non-zero only under wxMotif, to avoid a clash with wxPOPUP_WINDOW
- * on other platforms
- */
-
-#ifdef __WXMOTIF__
-#define wxRETAINED 0x00020000
-#else
-#define wxRETAINED 0x00000000
-#endif
-#define wxBACKINGSTORE wxRETAINED
-
-/* set this flag to create a special popup window: it will be always shown on */
-/* top of other windows, will capture the mouse and will be dismissed when the */
-/* mouse is clicked outside of it or if it loses focus in any other way */
-#define wxPOPUP_WINDOW 0x00020000
-
-/* force a full repaint when the window is resized (instead of repainting just */
-/* the invalidated area) */
-#define wxFULL_REPAINT_ON_RESIZE 0x00010000
-
-/* obsolete: now this is the default behaviour */
-/* */
-/* don't invalidate the whole window (resulting in a PAINT event) when the */
-/* window is resized (currently, makes sense for wxMSW only) */
-#define wxNO_FULL_REPAINT_ON_RESIZE 0
-
-/* A mask which can be used to filter (out) all wxWindow-specific styles.
- */
-#define wxWINDOW_STYLE_MASK \
- (wxVSCROLL|wxHSCROLL|wxBORDER_MASK|wxALWAYS_SHOW_SB|wxCLIP_CHILDREN| \
- wxCLIP_SIBLINGS|wxTRANSPARENT_WINDOW|wxTAB_TRAVERSAL|wxWANTS_CHARS| \
- wxRETAINED|wxPOPUP_WINDOW|wxFULL_REPAINT_ON_RESIZE)
-
-/*
- * Extra window style flags (use wxWS_EX prefix to make it clear that they
- * should be passed to wxWindow::SetExtraStyle(), not SetWindowStyle())
- */
-
-/* by default, TransferDataTo/FromWindow() only work on direct children of the */
-/* window (compatible behaviour), set this flag to make them recursively */
-/* descend into all subwindows */
-#define wxWS_EX_VALIDATE_RECURSIVELY 0x00000001
-
-/* wxCommandEvents and the objects of the derived classes are forwarded to the */
-/* parent window and so on recursively by default. Using this flag for the */
-/* given window allows to block this propagation at this window, i.e. prevent */
-/* the events from being propagated further upwards. The dialogs have this */
-/* flag on by default. */
-#define wxWS_EX_BLOCK_EVENTS 0x00000002
-
-/* don't use this window as an implicit parent for the other windows: this must */
-/* be used with transient windows as otherwise there is the risk of creating a */
-/* dialog/frame with this window as a parent which would lead to a crash if the */
-/* parent is destroyed before the child */
-#define wxWS_EX_TRANSIENT 0x00000004
-
-/* don't paint the window background, we'll assume it will */
-/* be done by a theming engine. This is not yet used but could */
-/* possibly be made to work in the future, at least on Windows */
-#define wxWS_EX_THEMED_BACKGROUND 0x00000008
-
-/* this window should always process idle events */
-#define wxWS_EX_PROCESS_IDLE 0x00000010
-
-/* this window should always process UI update events */
-#define wxWS_EX_PROCESS_UI_UPDATES 0x00000020
-
-/* Draw the window in a metal theme on Mac */
-#define wxFRAME_EX_METAL 0x00000040
-#define wxDIALOG_EX_METAL 0x00000040
-
-/* Use this style to add a context-sensitive help to the window (currently for */
-/* Win32 only and it doesn't work if wxMINIMIZE_BOX or wxMAXIMIZE_BOX are used) */
-#define wxWS_EX_CONTEXTHELP 0x00000080
-
-/* synonyms for wxWS_EX_CONTEXTHELP for compatibility */
-#define wxFRAME_EX_CONTEXTHELP wxWS_EX_CONTEXTHELP
-#define wxDIALOG_EX_CONTEXTHELP wxWS_EX_CONTEXTHELP
-
-/* Create a window which is attachable to another top level window */
-#define wxFRAME_DRAWER 0x0020
-
-/*
- * MDI parent frame style flags
- * Can overlap with some of the above.
- */
-
-#define wxFRAME_NO_WINDOW_MENU 0x0100
-
-/*
- * wxMenuBar style flags
- */
-/* use native docking */
-#define wxMB_DOCKABLE 0x0001
-
-/*
- * wxMenu style flags
- */
-#define wxMENU_TEAROFF 0x0001
-
-/*
- * Apply to all panel items
- */
-#define wxCOLOURED 0x0800
-#define wxFIXED_LENGTH 0x0400
-
-/*
- * Styles for wxListBox
- */
-#define wxLB_SORT 0x0010
-#define wxLB_SINGLE 0x0020
-#define wxLB_MULTIPLE 0x0040
-#define wxLB_EXTENDED 0x0080
-/* wxLB_OWNERDRAW is Windows-only */
-#define wxLB_OWNERDRAW 0x0100
-#define wxLB_NEEDED_SB 0x0200
-#define wxLB_ALWAYS_SB 0x0400
-#define wxLB_HSCROLL wxHSCROLL
-/* always show an entire number of rows */
-#define wxLB_INT_HEIGHT 0x0800
-
-#if WXWIN_COMPATIBILITY_2_6
- /* deprecated synonyms */
- #define wxPROCESS_ENTER 0x0400 /* wxTE_PROCESS_ENTER */
- #define wxPASSWORD 0x0800 /* wxTE_PASSWORD */
-#endif
-
-/*
- * wxComboBox style flags
- */
-#define wxCB_SIMPLE 0x0004
-#define wxCB_SORT 0x0008
-#define wxCB_READONLY 0x0010
-#define wxCB_DROPDOWN 0x0020
-
-/*
- * wxRadioBox style flags
- */
-/* should we number the items from left to right or from top to bottom in a 2d */
-/* radiobox? */
-#define wxRA_LEFTTORIGHT 0x0001
-#define wxRA_TOPTOBOTTOM 0x0002
-
-/* New, more intuitive names to specify majorDim argument */
-#define wxRA_SPECIFY_COLS wxHORIZONTAL
-#define wxRA_SPECIFY_ROWS wxVERTICAL
-
-/* Old names for compatibility */
-#define wxRA_HORIZONTAL wxHORIZONTAL
-#define wxRA_VERTICAL wxVERTICAL
-#define wxRA_USE_CHECKBOX 0x0010 /* alternative native subcontrols (wxPalmOS) */
-
-/*
- * wxRadioButton style flag
- */
-#define wxRB_GROUP 0x0004
-#define wxRB_SINGLE 0x0008
-#define wxRB_USE_CHECKBOX 0x0010 /* alternative native control (wxPalmOS) */
-
-/*
- * wxScrollBar flags
- */
-#define wxSB_HORIZONTAL wxHORIZONTAL
-#define wxSB_VERTICAL wxVERTICAL
-
-/*
- * wxSpinButton flags.
- * Note that a wxSpinCtrl is sometimes defined as
- * a wxTextCtrl, and so the flags must be different
- * from wxTextCtrl's.
- */
-#define wxSP_HORIZONTAL wxHORIZONTAL /* 4 */
-#define wxSP_VERTICAL wxVERTICAL /* 8 */
-#define wxSP_ARROW_KEYS 0x1000
-#define wxSP_WRAP 0x2000
-
-/*
- * wxTabCtrl flags
- */
-#define wxTC_RIGHTJUSTIFY 0x0010
-#define wxTC_FIXEDWIDTH 0x0020
-#define wxTC_TOP 0x0000 /* default */
-#define wxTC_LEFT 0x0020
-#define wxTC_RIGHT 0x0040
-#define wxTC_BOTTOM 0x0080
-#define wxTC_MULTILINE 0x0200 /* == wxNB_MULTILINE */
-#define wxTC_OWNERDRAW 0x0400
-
-/*
- * wxStatusBar95 flags
- */
-#define wxST_SIZEGRIP 0x0010
-
-/*
- * wxStaticText flags
- */
-#define wxST_NO_AUTORESIZE 0x0001
-#define wxST_DOTS_MIDDLE 0x0002
-#define wxST_DOTS_END 0x0004
-
-/*
- * wxStaticBitmap flags
- */
-#define wxBI_EXPAND wxEXPAND
-
-/*
- * wxStaticLine flags
- */
-#define wxLI_HORIZONTAL wxHORIZONTAL
-#define wxLI_VERTICAL wxVERTICAL
-
-
-/*
- * extended dialog specifiers. these values are stored in a different
- * flag and thus do not overlap with other style flags. note that these
- * values do not correspond to the return values of the dialogs (for
- * those values, look at the wxID_XXX defines).
- */
-
-/* wxCENTRE already defined as 0x00000001 */
-#define wxYES 0x00000002
-#define wxOK 0x00000004
-#define wxNO 0x00000008
-#define wxYES_NO (wxYES | wxNO)
-#define wxCANCEL 0x00000010
-
-#define wxYES_DEFAULT 0x00000000 /* has no effect (default) */
-#define wxNO_DEFAULT 0x00000080
-
-#define wxICON_EXCLAMATION 0x00000100
-#define wxICON_HAND 0x00000200
-#define wxICON_WARNING wxICON_EXCLAMATION
-#define wxICON_ERROR wxICON_HAND
-#define wxICON_QUESTION 0x00000400
-#define wxICON_INFORMATION 0x00000800
-#define wxICON_STOP wxICON_HAND
-#define wxICON_ASTERISK wxICON_INFORMATION
-#define wxICON_MASK (0x00000100|0x00000200|0x00000400|0x00000800)
-
-#define wxFORWARD 0x00001000
-#define wxBACKWARD 0x00002000
-#define wxRESET 0x00004000
-#define wxHELP 0x00008000
-#define wxMORE 0x00010000
-#define wxSETUP 0x00020000
-
-/*
- * Background styles. See wxWindow::SetBackgroundStyle
- */
-
-enum wxBackgroundStyle
-{
- wxBG_STYLE_SYSTEM,
- wxBG_STYLE_COLOUR,
- wxBG_STYLE_CUSTOM
-};
-
-/* ---------------------------------------------------------------------------- */
-/* standard IDs */
-/* ---------------------------------------------------------------------------- */
-
-/* Standard menu IDs */
-enum
-{
- /* no id matches this one when compared to it */
- wxID_NONE = -3,
-
- /* id for a separator line in the menu (invalid for normal item) */
- wxID_SEPARATOR = -2,
-
- /* any id: means that we don't care about the id, whether when installing
- * an event handler or when creating a new window */
- wxID_ANY = -1,
-
-
- /* all predefined ids are between wxID_LOWEST and wxID_HIGHEST */
- wxID_LOWEST = 4999,
-
- wxID_OPEN,
- wxID_CLOSE,
- wxID_NEW,
- wxID_SAVE,
- wxID_SAVEAS,
- wxID_REVERT,
- wxID_EXIT,
- wxID_UNDO,
- wxID_REDO,
- wxID_HELP,
- wxID_PRINT,
- wxID_PRINT_SETUP,
- wxID_PAGE_SETUP,
- wxID_PREVIEW,
- wxID_ABOUT,
- wxID_HELP_CONTENTS,
- wxID_HELP_INDEX,
- wxID_HELP_SEARCH,
- wxID_HELP_COMMANDS,
- wxID_HELP_PROCEDURES,
- wxID_HELP_CONTEXT,
- wxID_CLOSE_ALL,
- wxID_PREFERENCES,
-
- wxID_EDIT = 5030,
- wxID_CUT,
- wxID_COPY,
- wxID_PASTE,
- wxID_CLEAR,
- wxID_FIND,
- wxID_DUPLICATE,
- wxID_SELECTALL,
- wxID_DELETE,
- wxID_REPLACE,
- wxID_REPLACE_ALL,
- wxID_PROPERTIES,
-
- wxID_VIEW_DETAILS,
- wxID_VIEW_LARGEICONS,
- wxID_VIEW_SMALLICONS,
- wxID_VIEW_LIST,
- wxID_VIEW_SORTDATE,
- wxID_VIEW_SORTNAME,
- wxID_VIEW_SORTSIZE,
- wxID_VIEW_SORTTYPE,
-
- wxID_FILE = 5050,
- wxID_FILE1,
- wxID_FILE2,
- wxID_FILE3,
- wxID_FILE4,
- wxID_FILE5,
- wxID_FILE6,
- wxID_FILE7,
- wxID_FILE8,
- wxID_FILE9,
-
- /* Standard button and menu IDs */
- wxID_OK = 5100,
- wxID_CANCEL,
- wxID_APPLY,
- wxID_YES,
- wxID_NO,
- wxID_STATIC,
- wxID_FORWARD,
- wxID_BACKWARD,
- wxID_DEFAULT,
- wxID_MORE,
- wxID_SETUP,
- wxID_RESET,
- wxID_CONTEXT_HELP,
- wxID_YESTOALL,
- wxID_NOTOALL,
- wxID_ABORT,
- wxID_RETRY,
- wxID_IGNORE,
- wxID_ADD,
- wxID_REMOVE,
-
- wxID_UP,
- wxID_DOWN,
- wxID_HOME,
- wxID_REFRESH,
- wxID_STOP,
- wxID_INDEX,
-
- wxID_BOLD,
- wxID_ITALIC,
- wxID_JUSTIFY_CENTER,
- wxID_JUSTIFY_FILL,
- wxID_JUSTIFY_RIGHT,
- wxID_JUSTIFY_LEFT,
- wxID_UNDERLINE,
- wxID_INDENT,
- wxID_UNINDENT,
- wxID_ZOOM_100,
- wxID_ZOOM_FIT,
- wxID_ZOOM_IN,
- wxID_ZOOM_OUT,
- wxID_UNDELETE,
- wxID_REVERT_TO_SAVED,
-
- /* System menu IDs (used by wxUniv): */
- wxID_SYSTEM_MENU = 5200,
- wxID_CLOSE_FRAME,
- wxID_MOVE_FRAME,
- wxID_RESIZE_FRAME,
- wxID_MAXIMIZE_FRAME,
- wxID_ICONIZE_FRAME,
- wxID_RESTORE_FRAME,
-
- /* IDs used by generic file dialog (13 consecutive starting from this value) */
- wxID_FILEDLGG = 5900,
-
- wxID_HIGHEST = 5999
-};
-
-/* ---------------------------------------------------------------------------- */
-/* other constants */
-/* ---------------------------------------------------------------------------- */
-
-/* menu and toolbar item kinds */
-enum wxItemKind
-{
- wxITEM_SEPARATOR = -1,
- wxITEM_NORMAL,
- wxITEM_CHECK,
- wxITEM_RADIO,
- wxITEM_MAX
-};
-
-/* hit test results */
-enum wxHitTest
-{
- wxHT_NOWHERE,
-
- /* scrollbar */
- wxHT_SCROLLBAR_FIRST = wxHT_NOWHERE,
- wxHT_SCROLLBAR_ARROW_LINE_1, /* left or upper arrow to scroll by line */
- wxHT_SCROLLBAR_ARROW_LINE_2, /* right or down */
- wxHT_SCROLLBAR_ARROW_PAGE_1, /* left or upper arrow to scroll by page */
- wxHT_SCROLLBAR_ARROW_PAGE_2, /* right or down */
- wxHT_SCROLLBAR_THUMB, /* on the thumb */
- wxHT_SCROLLBAR_BAR_1, /* bar to the left/above the thumb */
- wxHT_SCROLLBAR_BAR_2, /* bar to the right/below the thumb */
- wxHT_SCROLLBAR_LAST,
-
- /* window */
- wxHT_WINDOW_OUTSIDE, /* not in this window at all */
- wxHT_WINDOW_INSIDE, /* in the client area */
- wxHT_WINDOW_VERT_SCROLLBAR, /* on the vertical scrollbar */
- wxHT_WINDOW_HORZ_SCROLLBAR, /* on the horizontal scrollbar */
- wxHT_WINDOW_CORNER, /* on the corner between 2 scrollbars */
-
- wxHT_MAX
-};
-
-/* ---------------------------------------------------------------------------- */
-/* Possible SetSize flags */
-/* ---------------------------------------------------------------------------- */
-
-/* Use internally-calculated width if -1 */
-#define wxSIZE_AUTO_WIDTH 0x0001
-/* Use internally-calculated height if -1 */
-#define wxSIZE_AUTO_HEIGHT 0x0002
-/* Use internally-calculated width and height if each is -1 */
-#define wxSIZE_AUTO (wxSIZE_AUTO_WIDTH|wxSIZE_AUTO_HEIGHT)
-/* Ignore missing (-1) dimensions (use existing). */
-/* For readability only: test for wxSIZE_AUTO_WIDTH/HEIGHT in code. */
-#define wxSIZE_USE_EXISTING 0x0000
-/* Allow -1 as a valid position */
-#define wxSIZE_ALLOW_MINUS_ONE 0x0004
-/* Don't do parent client adjustments (for implementation only) */
-#define wxSIZE_NO_ADJUSTMENTS 0x0008
-/* Change the window position even if it seems to be already correct */
-#define wxSIZE_FORCE 0x0010
-
-/* ---------------------------------------------------------------------------- */
-/* GDI descriptions */
-/* ---------------------------------------------------------------------------- */
-
-enum
-{
- /* Text font families */
- wxDEFAULT = 70,
- wxDECORATIVE,
- wxROMAN,
- wxSCRIPT,
- wxSWISS,
- wxMODERN,
- wxTELETYPE, /* @@@@ */
-
- /* Proportional or Fixed width fonts (not yet used) */
- wxVARIABLE = 80,
- wxFIXED,
-
- wxNORMAL = 90,
- wxLIGHT,
- wxBOLD,
- /* Also wxNORMAL for normal (non-italic text) */
- wxITALIC,
- wxSLANT,
-
- /* Pen styles */
- wxSOLID = 100,
- wxDOT,
- wxLONG_DASH,
- wxSHORT_DASH,
- wxDOT_DASH,
- wxUSER_DASH,
-
- wxTRANSPARENT,
-
- /* Brush & Pen Stippling. Note that a stippled pen cannot be dashed!! */
- /* Note also that stippling a Pen IS meaningfull, because a Line is */
- wxSTIPPLE_MASK_OPAQUE, /* mask is used for blitting monochrome using text fore and back ground colors */
- wxSTIPPLE_MASK, /* mask is used for masking areas in the stipple bitmap (TO DO) */
- /* drawn with a Pen, and without any Brush -- and it can be stippled. */
- wxSTIPPLE = 110,
-
- wxBDIAGONAL_HATCH, /* In wxWidgets < 2.6 use WX_HATCH macro */
- wxCROSSDIAG_HATCH, /* to verify these wx*_HATCH are in style */
- wxFDIAGONAL_HATCH, /* of wxBrush. In wxWidgets >= 2.6 use */
- wxCROSS_HATCH, /* wxBrush::IsHatch() instead. */
- wxHORIZONTAL_HATCH,
- wxVERTICAL_HATCH,
- wxFIRST_HATCH = wxBDIAGONAL_HATCH,
- wxLAST_HATCH = wxVERTICAL_HATCH,
-
- wxJOIN_BEVEL = 120,
- wxJOIN_MITER,
- wxJOIN_ROUND,
-
- wxCAP_ROUND = 130,
- wxCAP_PROJECTING,
- wxCAP_BUTT
-};
-
-#if WXWIN_COMPATIBILITY_2_4
- #define IS_HATCH(s) ((s)>=wxFIRST_HATCH && (s)<=wxLAST_HATCH)
-#else
- /* use wxBrush::IsHatch() instead thought wxMotif still uses it in src/motif/dcclient.cpp */
-#endif
-
-/* Logical ops */
-typedef enum
-{
- wxCLEAR, wxROP_BLACK = wxCLEAR, wxBLIT_BLACKNESS = wxCLEAR, /* 0 */
- wxXOR, wxROP_XORPEN = wxXOR, wxBLIT_SRCINVERT = wxXOR, /* src XOR dst */
- wxINVERT, wxROP_NOT = wxINVERT, wxBLIT_DSTINVERT = wxINVERT, /* NOT dst */
- wxOR_REVERSE, wxROP_MERGEPENNOT = wxOR_REVERSE, wxBLIT_00DD0228 = wxOR_REVERSE, /* src OR (NOT dst) */
- wxAND_REVERSE, wxROP_MASKPENNOT = wxAND_REVERSE, wxBLIT_SRCERASE = wxAND_REVERSE, /* src AND (NOT dst) */
- wxCOPY, wxROP_COPYPEN = wxCOPY, wxBLIT_SRCCOPY = wxCOPY, /* src */
- wxAND, wxROP_MASKPEN = wxAND, wxBLIT_SRCAND = wxAND, /* src AND dst */
- wxAND_INVERT, wxROP_MASKNOTPEN = wxAND_INVERT, wxBLIT_00220326 = wxAND_INVERT, /* (NOT src) AND dst */
- wxNO_OP, wxROP_NOP = wxNO_OP, wxBLIT_00AA0029 = wxNO_OP, /* dst */
- wxNOR, wxROP_NOTMERGEPEN = wxNOR, wxBLIT_NOTSRCERASE = wxNOR, /* (NOT src) AND (NOT dst) */
- wxEQUIV, wxROP_NOTXORPEN = wxEQUIV, wxBLIT_00990066 = wxEQUIV, /* (NOT src) XOR dst */
- wxSRC_INVERT, wxROP_NOTCOPYPEN = wxSRC_INVERT, wxBLIT_NOTSCRCOPY = wxSRC_INVERT, /* (NOT src) */
- wxOR_INVERT, wxROP_MERGENOTPEN = wxOR_INVERT, wxBLIT_MERGEPAINT = wxOR_INVERT, /* (NOT src) OR dst */
- wxNAND, wxROP_NOTMASKPEN = wxNAND, wxBLIT_007700E6 = wxNAND, /* (NOT src) OR (NOT dst) */
- wxOR, wxROP_MERGEPEN = wxOR, wxBLIT_SRCPAINT = wxOR, /* src OR dst */
- wxSET, wxROP_WHITE = wxSET, wxBLIT_WHITENESS = wxSET /* 1 */
-} form_ops_t;
-
-/* Flood styles */
-enum
-{
- wxFLOOD_SURFACE = 1,
- wxFLOOD_BORDER
-};
-
-/* Polygon filling mode */
-enum
-{
- wxODDEVEN_RULE = 1,
- wxWINDING_RULE
-};
-
-/* ToolPanel in wxFrame (VZ: unused?) */
-enum
-{
- wxTOOL_TOP = 1,
- wxTOOL_BOTTOM,
- wxTOOL_LEFT,
- wxTOOL_RIGHT
-};
-
-/* the values of the format constants should be the same as corresponding */
-/* CF_XXX constants in Windows API */
-enum wxDataFormatId
-{
- wxDF_INVALID = 0,
- wxDF_TEXT = 1, /* CF_TEXT */
- wxDF_BITMAP = 2, /* CF_BITMAP */
- wxDF_METAFILE = 3, /* CF_METAFILEPICT */
- wxDF_SYLK = 4,
- wxDF_DIF = 5,
- wxDF_TIFF = 6,
- wxDF_OEMTEXT = 7, /* CF_OEMTEXT */
- wxDF_DIB = 8, /* CF_DIB */
- wxDF_PALETTE = 9,
- wxDF_PENDATA = 10,
- wxDF_RIFF = 11,
- wxDF_WAVE = 12,
- wxDF_UNICODETEXT = 13,
- wxDF_ENHMETAFILE = 14,
- wxDF_FILENAME = 15, /* CF_HDROP */
- wxDF_LOCALE = 16,
- wxDF_PRIVATE = 20,
- wxDF_HTML = 30, /* Note: does not correspond to CF_ constant */
- wxDF_MAX
-};
-
-/* Virtual keycodes */
-enum wxKeyCode
-{
- WXK_BACK = 8,
- WXK_TAB = 9,
- WXK_RETURN = 13,
- WXK_ESCAPE = 27,
- WXK_SPACE = 32,
- WXK_DELETE = 127,
-
- /* These are, by design, not compatible with unicode characters.
- If you want to get a unicode character from a key event, use
- wxKeyEvent::GetUnicodeKey instead. */
- WXK_START = 300,
- WXK_LBUTTON,
- WXK_RBUTTON,
- WXK_CANCEL,
- WXK_MBUTTON,
- WXK_CLEAR,
- WXK_SHIFT,
- WXK_ALT,
- WXK_CONTROL,
- WXK_MENU,
- WXK_PAUSE,
- WXK_CAPITAL,
- WXK_END,
- WXK_HOME,
- WXK_LEFT,
- WXK_UP,
- WXK_RIGHT,
- WXK_DOWN,
- WXK_SELECT,
- WXK_PRINT,
- WXK_EXECUTE,
- WXK_SNAPSHOT,
- WXK_INSERT,
- WXK_HELP,
- WXK_NUMPAD0,
- WXK_NUMPAD1,
- WXK_NUMPAD2,
- WXK_NUMPAD3,
- WXK_NUMPAD4,
- WXK_NUMPAD5,
- WXK_NUMPAD6,
- WXK_NUMPAD7,
- WXK_NUMPAD8,
- WXK_NUMPAD9,
- WXK_MULTIPLY,
- WXK_ADD,
- WXK_SEPARATOR,
- WXK_SUBTRACT,
- WXK_DECIMAL,
- WXK_DIVIDE,
- WXK_F1,
- WXK_F2,
- WXK_F3,
- WXK_F4,
- WXK_F5,
- WXK_F6,
- WXK_F7,
- WXK_F8,
- WXK_F9,
- WXK_F10,
- WXK_F11,
- WXK_F12,
- WXK_F13,
- WXK_F14,
- WXK_F15,
- WXK_F16,
- WXK_F17,
- WXK_F18,
- WXK_F19,
- WXK_F20,
- WXK_F21,
- WXK_F22,
- WXK_F23,
- WXK_F24,
- WXK_NUMLOCK,
- WXK_SCROLL,
- WXK_PAGEUP,
- WXK_PAGEDOWN,
-#if WXWIN_COMPATIBILITY_2_6
- WXK_PRIOR = WXK_PAGEUP,
- WXK_NEXT = WXK_PAGEDOWN,
-#endif
-
- WXK_NUMPAD_SPACE,
- WXK_NUMPAD_TAB,
- WXK_NUMPAD_ENTER,
- WXK_NUMPAD_F1,
- WXK_NUMPAD_F2,
- WXK_NUMPAD_F3,
- WXK_NUMPAD_F4,
- WXK_NUMPAD_HOME,
- WXK_NUMPAD_LEFT,
- WXK_NUMPAD_UP,
- WXK_NUMPAD_RIGHT,
- WXK_NUMPAD_DOWN,
- WXK_NUMPAD_PAGEUP,
- WXK_NUMPAD_PAGEDOWN,
-#if WXWIN_COMPATIBILITY_2_6
- WXK_NUMPAD_PRIOR = WXK_NUMPAD_PAGEUP,
- WXK_NUMPAD_NEXT = WXK_NUMPAD_PAGEDOWN,
-#endif
- WXK_NUMPAD_END,
- WXK_NUMPAD_BEGIN,
- WXK_NUMPAD_INSERT,
- WXK_NUMPAD_DELETE,
- WXK_NUMPAD_EQUAL,
- WXK_NUMPAD_MULTIPLY,
- WXK_NUMPAD_ADD,
- WXK_NUMPAD_SEPARATOR,
- WXK_NUMPAD_SUBTRACT,
- WXK_NUMPAD_DECIMAL,
- WXK_NUMPAD_DIVIDE,
-
- WXK_WINDOWS_LEFT,
- WXK_WINDOWS_RIGHT,
- WXK_WINDOWS_MENU ,
- WXK_COMMAND,
-
- /* Hardware-specific buttons */
- WXK_SPECIAL1 = 193,
- WXK_SPECIAL2,
- WXK_SPECIAL3,
- WXK_SPECIAL4,
- WXK_SPECIAL5,
- WXK_SPECIAL6,
- WXK_SPECIAL7,
- WXK_SPECIAL8,
- WXK_SPECIAL9,
- WXK_SPECIAL10,
- WXK_SPECIAL11,
- WXK_SPECIAL12,
- WXK_SPECIAL13,
- WXK_SPECIAL14,
- WXK_SPECIAL15,
- WXK_SPECIAL16,
- WXK_SPECIAL17,
- WXK_SPECIAL18,
- WXK_SPECIAL19,
- WXK_SPECIAL20
-};
-
-/* This enum contains bit mask constants used in wxKeyEvent */
-enum wxKeyModifier
-{
- wxMOD_NONE = 0x0000,
- wxMOD_ALT = 0x0001,
- wxMOD_CONTROL = 0x0002,
- wxMOD_ALTGR = wxMOD_ALT | wxMOD_CONTROL,
- wxMOD_SHIFT = 0x0004,
- wxMOD_META = 0x0008,
- wxMOD_WIN = wxMOD_META,
-#if defined(__WXMAC__) || defined(__WXCOCOA__)
- wxMOD_CMD = wxMOD_META,
-#else
- wxMOD_CMD = wxMOD_CONTROL,
-#endif
- wxMOD_ALL = 0xffff
-};
-
-/* Mapping modes (same values as used by Windows, don't change) */
-enum
-{
- wxMM_TEXT = 1,
- wxMM_LOMETRIC,
- wxMM_HIMETRIC,
- wxMM_LOENGLISH,
- wxMM_HIENGLISH,
- wxMM_TWIPS,
- wxMM_ISOTROPIC,
- wxMM_ANISOTROPIC,
- wxMM_POINTS,
- wxMM_METRIC
-};
-
-/* Shortcut for easier dialog-unit-to-pixel conversion */
-#define wxDLG_UNIT(parent, pt) parent->ConvertDialogToPixels(pt)
-
-/* Paper types */
-typedef enum
-{
- wxPAPER_NONE, /* Use specific dimensions */
- wxPAPER_LETTER, /* Letter, 8 1/2 by 11 inches */
- wxPAPER_LEGAL, /* Legal, 8 1/2 by 14 inches */
- wxPAPER_A4, /* A4 Sheet, 210 by 297 millimeters */
- wxPAPER_CSHEET, /* C Sheet, 17 by 22 inches */
- wxPAPER_DSHEET, /* D Sheet, 22 by 34 inches */
- wxPAPER_ESHEET, /* E Sheet, 34 by 44 inches */
- wxPAPER_LETTERSMALL, /* Letter Small, 8 1/2 by 11 inches */
- wxPAPER_TABLOID, /* Tabloid, 11 by 17 inches */
- wxPAPER_LEDGER, /* Ledger, 17 by 11 inches */
- wxPAPER_STATEMENT, /* Statement, 5 1/2 by 8 1/2 inches */
- wxPAPER_EXECUTIVE, /* Executive, 7 1/4 by 10 1/2 inches */
- wxPAPER_A3, /* A3 sheet, 297 by 420 millimeters */
- wxPAPER_A4SMALL, /* A4 small sheet, 210 by 297 millimeters */
- wxPAPER_A5, /* A5 sheet, 148 by 210 millimeters */
- wxPAPER_B4, /* B4 sheet, 250 by 354 millimeters */
- wxPAPER_B5, /* B5 sheet, 182-by-257-millimeter paper */
- wxPAPER_FOLIO, /* Folio, 8-1/2-by-13-inch paper */
- wxPAPER_QUARTO, /* Quarto, 215-by-275-millimeter paper */
- wxPAPER_10X14, /* 10-by-14-inch sheet */
- wxPAPER_11X17, /* 11-by-17-inch sheet */
- wxPAPER_NOTE, /* Note, 8 1/2 by 11 inches */
- wxPAPER_ENV_9, /* #9 Envelope, 3 7/8 by 8 7/8 inches */
- wxPAPER_ENV_10, /* #10 Envelope, 4 1/8 by 9 1/2 inches */
- wxPAPER_ENV_11, /* #11 Envelope, 4 1/2 by 10 3/8 inches */
- wxPAPER_ENV_12, /* #12 Envelope, 4 3/4 by 11 inches */
- wxPAPER_ENV_14, /* #14 Envelope, 5 by 11 1/2 inches */
- wxPAPER_ENV_DL, /* DL Envelope, 110 by 220 millimeters */
- wxPAPER_ENV_C5, /* C5 Envelope, 162 by 229 millimeters */
- wxPAPER_ENV_C3, /* C3 Envelope, 324 by 458 millimeters */
- wxPAPER_ENV_C4, /* C4 Envelope, 229 by 324 millimeters */
- wxPAPER_ENV_C6, /* C6 Envelope, 114 by 162 millimeters */
- wxPAPER_ENV_C65, /* C65 Envelope, 114 by 229 millimeters */
- wxPAPER_ENV_B4, /* B4 Envelope, 250 by 353 millimeters */
- wxPAPER_ENV_B5, /* B5 Envelope, 176 by 250 millimeters */
- wxPAPER_ENV_B6, /* B6 Envelope, 176 by 125 millimeters */
- wxPAPER_ENV_ITALY, /* Italy Envelope, 110 by 230 millimeters */
- wxPAPER_ENV_MONARCH, /* Monarch Envelope, 3 7/8 by 7 1/2 inches */
- wxPAPER_ENV_PERSONAL, /* 6 3/4 Envelope, 3 5/8 by 6 1/2 inches */
- wxPAPER_FANFOLD_US, /* US Std Fanfold, 14 7/8 by 11 inches */
- wxPAPER_FANFOLD_STD_GERMAN, /* German Std Fanfold, 8 1/2 by 12 inches */
- wxPAPER_FANFOLD_LGL_GERMAN, /* German Legal Fanfold, 8 1/2 by 13 inches */
-
- wxPAPER_ISO_B4, /* B4 (ISO) 250 x 353 mm */
- wxPAPER_JAPANESE_POSTCARD, /* Japanese Postcard 100 x 148 mm */
- wxPAPER_9X11, /* 9 x 11 in */
- wxPAPER_10X11, /* 10 x 11 in */
- wxPAPER_15X11, /* 15 x 11 in */
- wxPAPER_ENV_INVITE, /* Envelope Invite 220 x 220 mm */
- wxPAPER_LETTER_EXTRA, /* Letter Extra 9 \275 x 12 in */
- wxPAPER_LEGAL_EXTRA, /* Legal Extra 9 \275 x 15 in */
- wxPAPER_TABLOID_EXTRA, /* Tabloid Extra 11.69 x 18 in */
- wxPAPER_A4_EXTRA, /* A4 Extra 9.27 x 12.69 in */
- wxPAPER_LETTER_TRANSVERSE, /* Letter Transverse 8 \275 x 11 in */
- wxPAPER_A4_TRANSVERSE, /* A4 Transverse 210 x 297 mm */
- wxPAPER_LETTER_EXTRA_TRANSVERSE, /* Letter Extra Transverse 9\275 x 12 in */
- wxPAPER_A_PLUS, /* SuperA/SuperA/A4 227 x 356 mm */
- wxPAPER_B_PLUS, /* SuperB/SuperB/A3 305 x 487 mm */
- wxPAPER_LETTER_PLUS, /* Letter Plus 8.5 x 12.69 in */
- wxPAPER_A4_PLUS, /* A4 Plus 210 x 330 mm */
- wxPAPER_A5_TRANSVERSE, /* A5 Transverse 148 x 210 mm */
- wxPAPER_B5_TRANSVERSE, /* B5 (JIS) Transverse 182 x 257 mm */
- wxPAPER_A3_EXTRA, /* A3 Extra 322 x 445 mm */
- wxPAPER_A5_EXTRA, /* A5 Extra 174 x 235 mm */
- wxPAPER_B5_EXTRA, /* B5 (ISO) Extra 201 x 276 mm */
- wxPAPER_A2, /* A2 420 x 594 mm */
- wxPAPER_A3_TRANSVERSE, /* A3 Transverse 297 x 420 mm */
- wxPAPER_A3_EXTRA_TRANSVERSE, /* A3 Extra Transverse 322 x 445 mm */
-
- wxPAPER_DBL_JAPANESE_POSTCARD,/* Japanese Double Postcard 200 x 148 mm */
- wxPAPER_A6, /* A6 105 x 148 mm */
- wxPAPER_JENV_KAKU2, /* Japanese Envelope Kaku #2 */
- wxPAPER_JENV_KAKU3, /* Japanese Envelope Kaku #3 */
- wxPAPER_JENV_CHOU3, /* Japanese Envelope Chou #3 */
- wxPAPER_JENV_CHOU4, /* Japanese Envelope Chou #4 */
- wxPAPER_LETTER_ROTATED, /* Letter Rotated 11 x 8 1/2 in */
- wxPAPER_A3_ROTATED, /* A3 Rotated 420 x 297 mm */
- wxPAPER_A4_ROTATED, /* A4 Rotated 297 x 210 mm */
- wxPAPER_A5_ROTATED, /* A5 Rotated 210 x 148 mm */
- wxPAPER_B4_JIS_ROTATED, /* B4 (JIS) Rotated 364 x 257 mm */
- wxPAPER_B5_JIS_ROTATED, /* B5 (JIS) Rotated 257 x 182 mm */
- wxPAPER_JAPANESE_POSTCARD_ROTATED,/* Japanese Postcard Rotated 148 x 100 mm */
- wxPAPER_DBL_JAPANESE_POSTCARD_ROTATED,/* Double Japanese Postcard Rotated 148 x 200 mm */
- wxPAPER_A6_ROTATED, /* A6 Rotated 148 x 105 mm */
- wxPAPER_JENV_KAKU2_ROTATED, /* Japanese Envelope Kaku #2 Rotated */
- wxPAPER_JENV_KAKU3_ROTATED, /* Japanese Envelope Kaku #3 Rotated */
- wxPAPER_JENV_CHOU3_ROTATED, /* Japanese Envelope Chou #3 Rotated */
- wxPAPER_JENV_CHOU4_ROTATED, /* Japanese Envelope Chou #4 Rotated */
- wxPAPER_B6_JIS, /* B6 (JIS) 128 x 182 mm */
- wxPAPER_B6_JIS_ROTATED, /* B6 (JIS) Rotated 182 x 128 mm */
- wxPAPER_12X11, /* 12 x 11 in */
- wxPAPER_JENV_YOU4, /* Japanese Envelope You #4 */
- wxPAPER_JENV_YOU4_ROTATED, /* Japanese Envelope You #4 Rotated */
- wxPAPER_P16K, /* PRC 16K 146 x 215 mm */
- wxPAPER_P32K, /* PRC 32K 97 x 151 mm */
- wxPAPER_P32KBIG, /* PRC 32K(Big) 97 x 151 mm */
- wxPAPER_PENV_1, /* PRC Envelope #1 102 x 165 mm */
- wxPAPER_PENV_2, /* PRC Envelope #2 102 x 176 mm */
- wxPAPER_PENV_3, /* PRC Envelope #3 125 x 176 mm */
- wxPAPER_PENV_4, /* PRC Envelope #4 110 x 208 mm */
- wxPAPER_PENV_5, /* PRC Envelope #5 110 x 220 mm */
- wxPAPER_PENV_6, /* PRC Envelope #6 120 x 230 mm */
- wxPAPER_PENV_7, /* PRC Envelope #7 160 x 230 mm */
- wxPAPER_PENV_8, /* PRC Envelope #8 120 x 309 mm */
- wxPAPER_PENV_9, /* PRC Envelope #9 229 x 324 mm */
- wxPAPER_PENV_10, /* PRC Envelope #10 324 x 458 mm */
- wxPAPER_P16K_ROTATED, /* PRC 16K Rotated */
- wxPAPER_P32K_ROTATED, /* PRC 32K Rotated */
- wxPAPER_P32KBIG_ROTATED, /* PRC 32K(Big) Rotated */
- wxPAPER_PENV_1_ROTATED, /* PRC Envelope #1 Rotated 165 x 102 mm */
- wxPAPER_PENV_2_ROTATED, /* PRC Envelope #2 Rotated 176 x 102 mm */
- wxPAPER_PENV_3_ROTATED, /* PRC Envelope #3 Rotated 176 x 125 mm */
- wxPAPER_PENV_4_ROTATED, /* PRC Envelope #4 Rotated 208 x 110 mm */
- wxPAPER_PENV_5_ROTATED, /* PRC Envelope #5 Rotated 220 x 110 mm */
- wxPAPER_PENV_6_ROTATED, /* PRC Envelope #6 Rotated 230 x 120 mm */
- wxPAPER_PENV_7_ROTATED, /* PRC Envelope #7 Rotated 230 x 160 mm */
- wxPAPER_PENV_8_ROTATED, /* PRC Envelope #8 Rotated 309 x 120 mm */
- wxPAPER_PENV_9_ROTATED, /* PRC Envelope #9 Rotated 324 x 229 mm */
- wxPAPER_PENV_10_ROTATED /* PRC Envelope #10 Rotated 458 x 324 m */
-} wxPaperSize;
-
-/* Printing orientation */
-#ifndef wxPORTRAIT
-#define wxPORTRAIT 1
-#define wxLANDSCAPE 2
-#endif
-
-/* Duplex printing modes
- */
-
-enum wxDuplexMode
-{
- wxDUPLEX_SIMPLEX, /* Non-duplex */
- wxDUPLEX_HORIZONTAL,
- wxDUPLEX_VERTICAL
-};
-
-/* Print quality.
- */
-
-#define wxPRINT_QUALITY_HIGH -1
-#define wxPRINT_QUALITY_MEDIUM -2
-#define wxPRINT_QUALITY_LOW -3
-#define wxPRINT_QUALITY_DRAFT -4
-
-typedef int wxPrintQuality;
-
-/* Print mode (currently PostScript only)
- */
-
-enum wxPrintMode
-{
- wxPRINT_MODE_NONE = 0,
- wxPRINT_MODE_PREVIEW = 1, /* Preview in external application */
- wxPRINT_MODE_FILE = 2, /* Print to file */
- wxPRINT_MODE_PRINTER = 3, /* Send to printer */
- wxPRINT_MODE_STREAM = 4 /* Send postscript data into a stream */
-};
-
-/* ---------------------------------------------------------------------------- */
-/* UpdateWindowUI flags */
-/* ---------------------------------------------------------------------------- */
-
-enum wxUpdateUI
-{
- wxUPDATE_UI_NONE = 0x0000,
- wxUPDATE_UI_RECURSE = 0x0001,
- wxUPDATE_UI_FROMIDLE = 0x0002 /* Invoked from On(Internal)Idle */
-};
-
-/* ---------------------------------------------------------------------------- */
-/* Notification Event flags - used for dock icon bouncing, etc. */
-/* ---------------------------------------------------------------------------- */
-
-enum wxNotificationOptions
-{
- wxNOTIFY_NONE = 0x0000,
- wxNOTIFY_ONCE = 0x0001,
- wxNOTIFY_REPEAT = 0x0002
-};
-
-/* ---------------------------------------------------------------------------- */
-/* miscellaneous */
-/* ---------------------------------------------------------------------------- */
-
-/* define this macro if font handling is done using the X font names */
-#if (defined(__WXGTK__) && !defined(__WXGTK20__)) || defined(__X__)
- #define _WX_X_FONTLIKE
-#endif
-
-/* macro to specify "All Files" on different platforms */
-#if defined(__WXMSW__) || defined(__WXPM__)
-# define wxALL_FILES_PATTERN wxT("*.*")
-# define wxALL_FILES gettext_noop("All files (*.*)|*.*")
-#else
-# define wxALL_FILES_PATTERN wxT("*")
-# define wxALL_FILES gettext_noop("All files (*)|*")
-#endif
-
-#if defined(__CYGWIN__) && defined(__WXMSW__)
-# if wxUSE_STL || defined(wxUSE_STD_STRING)
- /*
- NASTY HACK because the gethostname in sys/unistd.h which the gnu
- stl includes and wx builds with by default clash with each other
- (windows version 2nd param is int, sys/unistd.h version is unsigned
- int).
- */
-# define gethostname gethostnameHACK
-# include
-# undef gethostname
-# endif
-#endif
-
-/* --------------------------------------------------------------------------- */
-/* macros that enable wxWidgets apps to be compiled in absence of the */
-/* sytem headers, although some platform specific types are used in the */
-/* platform specific (implementation) parts of the headers */
-/* --------------------------------------------------------------------------- */
-
-#ifdef __WXMAC__
-
-#define WX_OPAQUE_TYPE( name ) struct wxOpaque##name
-
-typedef unsigned char WXCOLORREF[6];
-typedef void* WXCGIMAGEREF;
-typedef void* WXHBITMAP;
-typedef void* WXHCURSOR;
-typedef void* WXHRGN;
-typedef void* WXRECTPTR;
-typedef void* WXPOINTPTR;
-typedef void* WXHWND;
-typedef void* WXEVENTREF;
-typedef void* WXEVENTHANDLERREF;
-typedef void* WXEVENTHANDLERCALLREF;
-typedef void* WXAPPLEEVENTREF;
-typedef void* WXHDC;
-typedef void* WXHMENU;
-typedef unsigned int WXUINT;
-typedef unsigned long WXDWORD;
-typedef unsigned short WXWORD;
-
-typedef WX_OPAQUE_TYPE(CIconHandle ) * WXHICON ;
-typedef WX_OPAQUE_TYPE(PicHandle ) * WXHMETAFILE ;
-
-
-/* typedef void* WXWidget; */
-/* typedef void* WXWindow; */
-typedef WX_OPAQUE_TYPE(ControlRef ) * WXWidget ;
-typedef WX_OPAQUE_TYPE(WindowRef) * WXWindow ;
-typedef void* WXDisplay;
-
-/* typedef WindowPtr WXHWND; */
-/* typedef Handle WXHANDLE; */
-/* typedef CIconHandle WXHICON; */
-/* typedef unsigned long WXHFONT; */
-/* typedef MenuHandle WXHMENU; */
-/* typedef unsigned long WXHPEN; */
-/* typedef unsigned long WXHBRUSH; */
-/* typedef unsigned long WXHPALETTE; */
-/* typedef CursHandle WXHCURSOR; */
-/* typedef RgnHandle WXHRGN; */
-/* typedef unsigned long WXHACCEL; */
-/* typedef unsigned long WXHINSTANCE; */
-/* typedef unsigned long WXHIMAGELIST; */
-/* typedef unsigned long WXHGLOBAL; */
-/* typedef GrafPtr WXHDC; */
-/* typedef unsigned int WXWPARAM; */
-/* typedef long WXLPARAM; */
-/* typedef void * WXRGNDATA; */
-/* typedef void * WXMSG; */
-/* typedef unsigned long WXHCONV; */
-/* typedef unsigned long WXHKEY; */
-/* typedef void * WXDRAWITEMSTRUCT; */
-/* typedef void * WXMEASUREITEMSTRUCT; */
-/* typedef void * WXLPCREATESTRUCT; */
-/* typedef int (*WXFARPROC)(); */
-
-/* typedef WindowPtr WXWindow; */
-/* typedef ControlHandle WXWidget; */
-
-#endif
-
-#if defined( __WXCOCOA__ ) || ( defined(__WXMAC__) && defined(__DARWIN__) )
-
-/* Definitions of 32-bit/64-bit types
- * These are typedef'd exactly the same way in newer OS X headers so
- * redefinition when real headers are included should not be a problem. If
- * it is, the types are being defined wrongly here.
- * The purpose of these types is so they can be used from public wx headers.
- * and also because the older (pre-Leopard) headers don't define them.
- */
-
-/* NOTE: We don't pollute namespace with CGFLOAT_MIN/MAX/IS_DOUBLE macros
- * since they are unlikely to be needed in a public header.
- */
-#if defined(__LP64__) && __LP64__
- typedef double CGFloat;
-#else
- typedef float CGFloat;
-#endif
-
-#if (defined(__LP64__) && __LP64__) || (defined(NS_BUILD_32_LIKE_64) && NS_BUILD_32_LIKE_64)
-typedef long NSInteger;
-typedef unsigned long NSUInteger;
-#else
-typedef int NSInteger;
-typedef unsigned int NSUInteger;
-#endif
-
-/* Objective-C type declarations.
- * These are to be used in public headers in lieu of NSSomething* because
- * Objective-C class names are not available in C/C++ code.
- */
-
-/* NOTE: This ought to work with other compilers too, but I'm being cautious */
-#if (defined(__GNUC__) && defined(__APPLE__)) || defined(__MWERKS__)
-/* It's desirable to have type safety for Objective-C(++) code as it does
-at least catch typos of method names among other things. However, it
-is not possible to declare an Objective-C class from plain old C or C++
-code. Furthermore, because of C++ name mangling, the type name must
-be the same for both C++ and Objective-C++ code. Therefore, we define
-what should be a pointer to an Objective-C class as a pointer to a plain
-old C struct with the same name. Unfortunately, because the compiler
-does not see a struct as an Objective-C class we cannot declare it
-as a struct in Objective-C(++) mode.
-*/
-#if defined(__OBJC__)
-#define DECLARE_WXCOCOA_OBJC_CLASS(klass) \
-@class klass; \
-typedef klass *WX_##klass
-#else /* not defined(__OBJC__) */
-#define DECLARE_WXCOCOA_OBJC_CLASS(klass) \
-typedef struct klass *WX_##klass
-#endif /* defined(__OBJC__) */
-
-#else /* not Apple's GNU or CodeWarrior */
-#warning "Objective-C types will not be checked by the compiler."
-/* NOTE: typedef struct objc_object *id; */
-/* IOW, we're declaring these using the id type without using that name, */
-/* since "id" is used extensively not only within wxWidgets itself, but */
-/* also in wxWidgets application code. The following works fine when */
-/* compiling C(++) code, and works without typesafety for Obj-C(++) code */
-#define DECLARE_WXCOCOA_OBJC_CLASS(klass) \
-typedef struct objc_object *WX_##klass
-
-#endif /* (defined(__GNUC__) && defined(__APPLE__)) || defined(__MWERKS__) */
-
-DECLARE_WXCOCOA_OBJC_CLASS(NSApplication);
-DECLARE_WXCOCOA_OBJC_CLASS(NSBitmapImageRep);
-DECLARE_WXCOCOA_OBJC_CLASS(NSBox);
-DECLARE_WXCOCOA_OBJC_CLASS(NSButton);
-DECLARE_WXCOCOA_OBJC_CLASS(NSColor);
-DECLARE_WXCOCOA_OBJC_CLASS(NSColorPanel);
-DECLARE_WXCOCOA_OBJC_CLASS(NSControl);
-DECLARE_WXCOCOA_OBJC_CLASS(NSCursor);
-DECLARE_WXCOCOA_OBJC_CLASS(NSEvent);
-DECLARE_WXCOCOA_OBJC_CLASS(NSFontPanel);
-DECLARE_WXCOCOA_OBJC_CLASS(NSImage);
-DECLARE_WXCOCOA_OBJC_CLASS(NSLayoutManager);
-DECLARE_WXCOCOA_OBJC_CLASS(NSMenu);
-DECLARE_WXCOCOA_OBJC_CLASS(NSMenuExtra);
-DECLARE_WXCOCOA_OBJC_CLASS(NSMenuItem);
-DECLARE_WXCOCOA_OBJC_CLASS(NSMutableArray);
-DECLARE_WXCOCOA_OBJC_CLASS(NSNotification);
-DECLARE_WXCOCOA_OBJC_CLASS(NSObject);
-DECLARE_WXCOCOA_OBJC_CLASS(NSPanel);
-DECLARE_WXCOCOA_OBJC_CLASS(NSScrollView);
-DECLARE_WXCOCOA_OBJC_CLASS(NSSound);
-DECLARE_WXCOCOA_OBJC_CLASS(NSStatusItem);
-DECLARE_WXCOCOA_OBJC_CLASS(NSTableColumn);
-DECLARE_WXCOCOA_OBJC_CLASS(NSTableView);
-DECLARE_WXCOCOA_OBJC_CLASS(NSTextContainer);
-DECLARE_WXCOCOA_OBJC_CLASS(NSTextField);
-DECLARE_WXCOCOA_OBJC_CLASS(NSTextStorage);
-DECLARE_WXCOCOA_OBJC_CLASS(NSThread);
-DECLARE_WXCOCOA_OBJC_CLASS(NSWindow);
-DECLARE_WXCOCOA_OBJC_CLASS(NSView);
-#ifdef __WXMAC__
-// things added for __WXMAC__
-DECLARE_WXCOCOA_OBJC_CLASS(NSString);
-#else
-// things only for __WXCOCOA__
-typedef WX_NSView WXWidget; /* wxWidgets BASE definition */
-#endif
-#endif /* __WXCOCOA__ || ( __WXMAC__ &__DARWIN__)*/
-
-#if defined(__WXPALMOS__)
-
-typedef void * WXHWND;
-typedef void * WXHANDLE;
-typedef void * WXHICON;
-typedef void * WXHFONT;
-typedef void * WXHMENU;
-typedef void * WXHPEN;
-typedef void * WXHBRUSH;
-typedef void * WXHPALETTE;
-typedef void * WXHCURSOR;
-typedef void * WXHRGN;
-typedef void * WXHACCEL;
-typedef void * WXHINSTANCE;
-typedef void * WXHBITMAP;
-typedef void * WXHIMAGELIST;
-typedef void * WXHGLOBAL;
-typedef void * WXHDC;
-typedef unsigned int WXUINT;
-typedef unsigned long WXDWORD;
-typedef unsigned short WXWORD;
-
-typedef unsigned long WXCOLORREF;
-typedef struct tagMSG WXMSG;
-
-typedef WXHWND WXWINHANDLE; /* WinHandle of PalmOS */
-typedef WXWINHANDLE WXWidget;
-
-typedef void * WXFORMPTR;
-typedef void * WXEVENTPTR;
-typedef void * WXRECTANGLEPTR;
-
-#endif /* __WXPALMOS__ */
-
-
-/* ABX: check __WIN32__ instead of __WXMSW__ for the same MSWBase in any Win32 port */
-#if defined(__WIN32__)
-
-/* the keywords needed for WinMain() declaration */
-#ifndef WXFAR
-# define WXFAR
-#endif
-
-/* Stand-ins for Windows types to avoid #including all of windows.h */
-typedef void * WXHWND;
-typedef void * WXHANDLE;
-typedef void * WXHICON;
-typedef void * WXHFONT;
-typedef void * WXHMENU;
-typedef void * WXHPEN;
-typedef void * WXHBRUSH;
-typedef void * WXHPALETTE;
-typedef void * WXHCURSOR;
-typedef void * WXHRGN;
-typedef void * WXRECTPTR;
-typedef void * WXHACCEL;
-typedef void WXFAR * WXHINSTANCE;
-typedef void * WXHBITMAP;
-typedef void * WXHIMAGELIST;
-typedef void * WXHGLOBAL;
-typedef void * WXHDC;
-typedef unsigned int WXUINT;
-typedef unsigned long WXDWORD;
-typedef unsigned short WXWORD;
-
-typedef unsigned long WXCOLORREF;
-typedef void * WXRGNDATA;
-typedef struct tagMSG WXMSG;
-typedef void * WXHCONV;
-typedef void * WXHKEY;
-typedef void * WXHTREEITEM;
-
-typedef void * WXDRAWITEMSTRUCT;
-typedef void * WXMEASUREITEMSTRUCT;
-typedef void * WXLPCREATESTRUCT;
-
-typedef WXHWND WXWidget;
-
-#ifdef __WIN64__
-typedef unsigned __int64 WXWPARAM;
-typedef __int64 WXLPARAM;
-typedef __int64 WXLRESULT;
-#else
-typedef unsigned int WXWPARAM;
-typedef long WXLPARAM;
-typedef long WXLRESULT;
-#endif
-
-#if defined(__GNUWIN32__) || defined(__WXMICROWIN__)
-typedef int (*WXFARPROC)();
-#else
-typedef int (__stdcall *WXFARPROC)();
-#endif
-#endif /* __WIN32__ */
-
-
-#if defined(__OS2__)
-typedef unsigned long DWORD;
-typedef unsigned short WORD;
-#endif
-
-#if defined(__WXPM__) || defined(__EMX__)
-#ifdef __WXPM__
-/* Stand-ins for OS/2 types, to avoid #including all of os2.h */
-typedef unsigned long WXHWND;
-typedef unsigned long WXHANDLE;
-typedef unsigned long WXHICON;
-typedef unsigned long WXHFONT;
-typedef unsigned long WXHMENU;
-typedef unsigned long WXHPEN;
-typedef unsigned long WXHBRUSH;
-typedef unsigned long WXHPALETTE;
-typedef unsigned long WXHCURSOR;
-typedef unsigned long WXHRGN;
-typedef unsigned long WXHACCEL;
-typedef unsigned long WXHBITMAP;
-typedef unsigned long WXHDC;
-typedef unsigned int WXUINT;
-typedef unsigned long WXDWORD;
-typedef unsigned short WXWORD;
-
-typedef unsigned long WXCOLORREF;
-typedef void * WXMSG;
-typedef unsigned long WXHTREEITEM;
-
-typedef void * WXDRAWITEMSTRUCT;
-typedef void * WXMEASUREITEMSTRUCT;
-typedef void * WXLPCREATESTRUCT;
-
-typedef WXHWND WXWidget;
-#endif
-#ifdef __EMX__
-/* Need a well-known type for WXFARPROC
- below. MPARAM is typedef'ed too late. */
-#define WXWPARAM void *
-#define WXLPARAM void *
-#else
-#define WXWPARAM MPARAM
-#define WXLPARAM MPARAM
-#endif
-#define RECT RECTL
-#define LOGFONT FATTRS
-#define LOWORD SHORT1FROMMP
-#define HIWORD SHORT2FROMMP
-
-typedef unsigned long WXMPARAM;
-typedef unsigned long WXMSGID;
-typedef void* WXRESULT;
-/* typedef int (*WXFARPROC)(); */
-/* some windows handles not defined by PM */
-typedef unsigned long HANDLE;
-typedef unsigned long HICON;
-typedef unsigned long HFONT;
-typedef unsigned long HMENU;
-typedef unsigned long HPEN;
-typedef unsigned long HBRUSH;
-typedef unsigned long HPALETTE;
-typedef unsigned long HCURSOR;
-typedef unsigned long HINSTANCE;
-typedef unsigned long HIMAGELIST;
-typedef unsigned long HGLOBAL;
-#endif /* WXPM || EMX */
-
-#if defined (__WXPM__)
-/* WIN32 graphics types for OS/2 GPI */
-
-/* RGB under OS2 is more like a PALETTEENTRY struct under Windows so we need a real RGB def */
-#define OS2RGB(r,g,b) ((DWORD)((unsigned char)(b) | ((unsigned char)(g) << 8)) | ((unsigned char)(r) << 16))
-
-typedef unsigned long COLORREF;
-#define GetRValue(rgb) ((unsigned char)((rgb) >> 16))
-#define GetGValue(rgb) ((unsigned char)(((unsigned short)(rgb)) >> 8))
-#define GetBValue(rgb) ((unsigned char)(rgb))
-#define PALETTEINDEX(i) ((COLORREF)(0x01000000 | (DWORD)(WORD)(i)))
-#define PALETTERGB(r,g,b) (0x02000000 | OS2RGB(r,g,b))
-/* OS2's RGB/RGB2 is backwards from this */
-typedef struct tagPALETTEENTRY
-{
- char bRed;
- char bGreen;
- char bBlue;
- char bFlags;
-} PALETTEENTRY;
-typedef struct tagLOGPALETTE
-{
- WORD palVersion;
- WORD palNumentries;
- WORD PALETTEENTRY[1];
-} LOGPALETTE;
-
-#if (defined(__VISAGECPP__) && (__IBMCPP__ < 400)) || defined (__WATCOMC__)
- /* VA 3.0 for some reason needs base data types when typedefing a proc proto??? */
-typedef void* (_System *WXFARPROC)(unsigned long, unsigned long, void*, void*);
-#else
-#if defined(__EMX__) && !defined(_System)
-#define _System
-#endif
-typedef WXRESULT (_System *WXFARPROC)(WXHWND, WXMSGID, WXWPARAM, WXLPARAM);
-#endif
-
-#endif /* __WXPM__ */
-
-
-#if defined(__WXMOTIF__) || defined(__WXX11__)
-/* Stand-ins for X/Xt/Motif types */
-typedef void* WXWindow;
-typedef void* WXWidget;
-typedef void* WXAppContext;
-typedef void* WXColormap;
-typedef void* WXColor;
-typedef void WXDisplay;
-typedef void WXEvent;
-typedef void* WXCursor;
-typedef void* WXPixmap;
-typedef void* WXFontStructPtr;
-typedef void* WXGC;
-typedef void* WXRegion;
-typedef void* WXFont;
-typedef void* WXImage;
-typedef void* WXFontList;
-typedef void* WXFontSet;
-typedef void* WXRendition;
-typedef void* WXRenderTable;
-typedef void* WXFontType; /* either a XmFontList or XmRenderTable */
-typedef void* WXString;
-
-typedef unsigned long Atom; /* this might fail on a few architectures */
-typedef long WXPixel; /* safety catch in src/motif/colour.cpp */
-
-#endif /* Motif */
-
-#ifdef __WXGTK__
-
-/* Stand-ins for GLIB types */
-typedef char gchar;
-typedef signed char gint8;
-typedef int gint;
-typedef unsigned guint;
-typedef unsigned long gulong;
-typedef void* gpointer;
-typedef struct _GSList GSList;
-
-/* Stand-ins for GDK types */
-typedef struct _GdkColor GdkColor;
-typedef struct _GdkColormap GdkColormap;
-typedef struct _GdkFont GdkFont;
-typedef struct _GdkGC GdkGC;
-typedef struct _GdkVisual GdkVisual;
-
-#ifdef __WXGTK20__
-typedef struct _GdkAtom *GdkAtom;
-typedef struct _GdkDrawable GdkWindow;
-typedef struct _GdkDrawable GdkBitmap;
-typedef struct _GdkDrawable GdkPixmap;
-#else /* GTK+ 1.2 */
-typedef gulong GdkAtom;
-typedef struct _GdkWindow GdkWindow;
-typedef struct _GdkWindow GdkBitmap;
-typedef struct _GdkWindow GdkPixmap;
-#endif /* GTK+ 1.2/2.0 */
-
-typedef struct _GdkCursor GdkCursor;
-typedef struct _GdkRegion GdkRegion;
-typedef struct _GdkDragContext GdkDragContext;
-
-#ifdef HAVE_XIM
-typedef struct _GdkIC GdkIC;
-typedef struct _GdkICAttr GdkICAttr;
-#endif
-
-/* Stand-ins for GTK types */
-typedef struct _GtkWidget GtkWidget;
-typedef struct _GtkRcStyle GtkRcStyle;
-typedef struct _GtkAdjustment GtkAdjustment;
-typedef struct _GtkList GtkList;
-typedef struct _GtkToolbar GtkToolbar;
-typedef struct _GtkTooltips GtkTooltips;
-typedef struct _GtkNotebook GtkNotebook;
-typedef struct _GtkNotebookPage GtkNotebookPage;
-typedef struct _GtkAccelGroup GtkAccelGroup;
-typedef struct _GtkItemFactory GtkItemFactory;
-typedef struct _GtkSelectionData GtkSelectionData;
-typedef struct _GtkTextBuffer GtkTextBuffer;
-typedef struct _GtkRange GtkRange;
-
-typedef GtkWidget *WXWidget;
-
-#ifndef __WXGTK20__
-#define GTK_OBJECT_GET_CLASS(object) (GTK_OBJECT(object)->klass)
-#define GTK_CLASS_TYPE(klass) ((klass)->type)
-#endif
-
-#endif /* __WXGTK__ */
-
-#if defined(__WXGTK20__) || (defined(__WXX11__) && wxUSE_UNICODE)
-#define wxUSE_PANGO 1
-#else
-#define wxUSE_PANGO 0
-#endif
-
-#if wxUSE_PANGO
-/* Stand-ins for Pango types */
-typedef struct _PangoContext PangoContext;
-typedef struct _PangoLayout PangoLayout;
-typedef struct _PangoFontDescription PangoFontDescription;
-#endif
-
-#ifdef __WXMGL__
-typedef struct window_t *WXWidget;
-#endif /* MGL */
-
-#ifdef __WXDFB__
-/* DirectFB doesn't have the concept of non-TLW window, so use
- something arbitrary */
-typedef const void* WXWidget;
-#endif /* DFB */
-
-/* This is required because of clashing macros in windows.h, which may be */
-/* included before or after wxWidgets classes, and therefore must be */
-/* disabled here before any significant wxWidgets headers are included. */
-#ifdef __WXMSW__
-#include "wx/msw/winundef.h"
-#endif /* __WXMSW__ */
-
-/* --------------------------------------------------------------------------- */
-/* macro to define a class without copy ctor nor assignment operator */
-/* --------------------------------------------------------------------------- */
-
-#define DECLARE_NO_COPY_CLASS(classname) \
- private: \
- classname(const classname&); \
- classname& operator=(const classname&);
-
-#define DECLARE_NO_ASSIGN_CLASS(classname) \
- private: \
- classname& operator=(const classname&);
-
-/* --------------------------------------------------------------------------- */
-/* If a manifest is being automatically generated, add common controls 6 to it */
-/* --------------------------------------------------------------------------- */
-
-#if (!defined wxUSE_NO_MANIFEST || wxUSE_NO_MANIFEST == 0 ) && \
- ( defined _MSC_FULL_VER && _MSC_FULL_VER >= 140040130 )
-
-#define WX_CC_MANIFEST(cpu) \
- "/manifestdependency:\"type='win32' \
- name='Microsoft.Windows.Common-Controls' \
- version='6.0.0.0' \
- processorArchitecture='"cpu"' \
- publicKeyToken='6595b64144ccf1df' \
- language='*'\""
-
-#if defined _M_IX86
- #pragma comment(linker, WX_CC_MANIFEST("x86"))
-#elif defined _M_X64
- #pragma comment(linker, WX_CC_MANIFEST("amd64"))
-#elif defined _M_IA64
- #pragma comment(linker, WX_CC_MANIFEST("ia64"))
-#else
- #pragma comment(linker, WX_CC_MANIFEST("*"))
-#endif
-
-#endif /* !wxUSE_NO_MANIFEST && _MSC_FULL_VER >= 140040130 */
-
-#endif
- /* _WX_DEFS_H_ */
diff --git a/Externals/wxWidgets/include/wx/dialog.h b/Externals/wxWidgets/include/wx/dialog.h
deleted file mode 100644
index ffb69db186..0000000000
--- a/Externals/wxWidgets/include/wx/dialog.h
+++ /dev/null
@@ -1,167 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-// Name: wx/dialog.h
-// Purpose: wxDialogBase class
-// Author: Vadim Zeitlin
-// Modified by:
-// Created: 29.06.99
-// RCS-ID: $Id: dialog.h 49804 2007-11-10 01:09:42Z VZ $
-// Copyright: (c) Vadim Zeitlin
-// Licence: wxWindows licence
-/////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_DIALOG_H_BASE_
-#define _WX_DIALOG_H_BASE_
-
-#include "wx/defs.h"
-#include "wx/containr.h"
-#include "wx/toplevel.h"
-
-class WXDLLIMPEXP_FWD_CORE wxSizer;
-class WXDLLIMPEXP_FWD_CORE wxStdDialogButtonSizer;
-
-#define wxDIALOG_NO_PARENT 0x0001 // Don't make owned by apps top window
-
-#ifdef __WXWINCE__
-#define wxDEFAULT_DIALOG_STYLE (wxCAPTION | wxMAXIMIZE | wxCLOSE_BOX | wxNO_BORDER)
-#else
-#define wxDEFAULT_DIALOG_STYLE (wxCAPTION | wxSYSTEM_MENU | wxCLOSE_BOX)
-#endif
-
-extern WXDLLEXPORT_DATA(const wxChar) wxDialogNameStr[];
-
-class WXDLLEXPORT wxDialogBase : public wxTopLevelWindow
-{
-public:
- enum
- {
- // all flags allowed in wxDialogBase::CreateButtonSizer()
- ButtonSizerFlags = wxOK|wxCANCEL|wxYES|wxNO|wxHELP|wxNO_DEFAULT
- };
-
- wxDialogBase() { Init(); }
- virtual ~wxDialogBase() { }
-
- // define public wxDialog methods to be implemented by the derived classes
- virtual int ShowModal() = 0;
- virtual void EndModal(int retCode) = 0;
- virtual bool IsModal() const = 0;
-
-
- // Modal dialogs have a return code - usually the id of the last
- // pressed button
- void SetReturnCode(int returnCode) { m_returnCode = returnCode; }
- int GetReturnCode() const { return m_returnCode; }
-
- // Set the identifier for the affirmative button: this button will close
- // the dialog after validating data and calling TransferDataFromWindow()
- void SetAffirmativeId(int affirmativeId);
- int GetAffirmativeId() const { return m_affirmativeId; }
-
- // Set identifier for Esc key translation: the button with this id will
- // close the dialog without doing anything else; special value wxID_NONE
- // means to not handle Esc at all while wxID_ANY means to map Esc to
- // wxID_CANCEL if present and GetAffirmativeId() otherwise
- void SetEscapeId(int escapeId);
- int GetEscapeId() const { return m_escapeId; }
-
-#if wxUSE_STATTEXT // && wxUSE_TEXTCTRL
- // splits text up at newlines and places the
- // lines into a vertical wxBoxSizer
- wxSizer *CreateTextSizer( const wxString &message );
-#endif // wxUSE_STATTEXT // && wxUSE_TEXTCTRL
-
- // returns a horizontal wxBoxSizer containing the given buttons
- //
- // notice that the returned sizer can be NULL if no buttons are put in the
- // sizer (this mostly happens under smart phones and other atypical
- // platforms which have hardware buttons replacing OK/Cancel and such)
- wxSizer *CreateButtonSizer(long flags);
-
- // returns the sizer containing CreateButtonSizer() below a separating
- // static line for the platforms which use static lines for items
- // separation (i.e. not Mac)
- wxSizer *CreateSeparatedButtonSizer(long flags);
-
-#if wxUSE_BUTTON
- wxStdDialogButtonSizer *CreateStdDialogButtonSizer( long flags );
-#endif // wxUSE_BUTTON
-
-protected:
- // emulate click of a button with the given id if it's present in the dialog
- //
- // return true if button was "clicked" or false if we don't have it
- bool EmulateButtonClickIfPresent(int id);
-
- // this function is used by OnCharHook() to decide whether the given key
- // should close the dialog
- //
- // for most platforms the default implementation (which just checks for
- // Esc) is sufficient, but Mac port also adds Cmd-. here and other ports
- // could do something different if needed
- virtual bool IsEscapeKey(const wxKeyEvent& event);
-
- // end either modal or modeless dialog, for the modal dialog rc is used as
- // the dialog return code
- void EndDialog(int rc);
-
- // call Validate() and TransferDataFromWindow() and close dialog with
- // wxID_OK return code
- void AcceptAndClose();
-
-
- // The return code from modal dialog
- int m_returnCode;
-
- // The identifier for the affirmative button (usually wxID_OK)
- int m_affirmativeId;
-
- // The identifier for cancel button (usually wxID_CANCEL)
- int m_escapeId;
-
-private:
- // common part of all ctors
- void Init();
-
- // handle Esc key presses
- void OnCharHook(wxKeyEvent& event);
-
- // handle closing the dialog window
- void OnCloseWindow(wxCloseEvent& event);
-
- // handle the standard buttons
- void OnButton(wxCommandEvent& event);
-
- // update the background colour
- void OnSysColourChanged(wxSysColourChangedEvent& event);
-
-
- DECLARE_NO_COPY_CLASS(wxDialogBase)
- DECLARE_EVENT_TABLE()
- WX_DECLARE_CONTROL_CONTAINER();
-};
-
-
-#if defined(__WXUNIVERSAL__) && !defined(__WXMICROWIN__)
- #include "wx/univ/dialog.h"
-#else
- #if defined(__WXPALMOS__)
- #include "wx/palmos/dialog.h"
- #elif defined(__WXMSW__)
- #include "wx/msw/dialog.h"
- #elif defined(__WXMOTIF__)
- #include "wx/motif/dialog.h"
- #elif defined(__WXGTK20__)
- #include "wx/gtk/dialog.h"
- #elif defined(__WXGTK__)
- #include "wx/gtk1/dialog.h"
- #elif defined(__WXMAC__)
- #include "wx/mac/dialog.h"
- #elif defined(__WXCOCOA__)
- #include "wx/cocoa/dialog.h"
- #elif defined(__WXPM__)
- #include "wx/os2/dialog.h"
- #endif
-#endif
-
-#endif
- // _WX_DIALOG_H_BASE_
diff --git a/Externals/wxWidgets/include/wx/dialup.h b/Externals/wxWidgets/include/wx/dialup.h
deleted file mode 100644
index c2dd296def..0000000000
--- a/Externals/wxWidgets/include/wx/dialup.h
+++ /dev/null
@@ -1,201 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-// Name: wx/dialup.h
-// Purpose: Network related wxWidgets classes and functions
-// Author: Vadim Zeitlin
-// Modified by:
-// Created: 07.07.99
-// RCS-ID: $Id: dialup.h 49804 2007-11-10 01:09:42Z VZ $
-// Copyright: (c) Vadim Zeitlin
-// Licence: wxWindows licence
-/////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_DIALUP_H
-#define _WX_DIALUP_H
-
-#if wxUSE_DIALUP_MANAGER
-
-#include "wx/event.h"
-
-// ----------------------------------------------------------------------------
-// misc
-// ----------------------------------------------------------------------------
-
-class WXDLLIMPEXP_FWD_BASE wxArrayString;
-
-#define WXDIALUP_MANAGER_DEFAULT_BEACONHOST wxT("www.yahoo.com")
-
-// ----------------------------------------------------------------------------
-// A class which groups functions dealing with connecting to the network from a
-// workstation using dial-up access to the net. There is at most one instance
-// of this class in the program accessed via GetDialUpManager().
-// ----------------------------------------------------------------------------
-
-/* TODO
- *
- * 1. more configurability for Unix: i.e. how to initiate the connection, how
- * to check for online status, &c.
- * 2. a function to enumerate all connections (ISPs) and show a dialog in
- * Dial() allowing to choose between them if no ISP given
- * 3. add an async version of dialing functions which notify the caller about
- * the progress (or may be even start another thread to monitor it)
- * 4. the static creation/accessor functions are not MT-safe - but is this
- * really crucial? I think we may suppose they're always called from the
- * main thread?
- */
-
-class WXDLLEXPORT wxDialUpManager
-{
-public:
- // this function should create and return the object of the
- // platform-specific class derived from wxDialUpManager. It's implemented
- // in the platform-specific source files.
- static wxDialUpManager *Create();
-
- // could the dialup manager be initialized correctly? If this function
- // returns false, no other functions will work neither, so it's a good idea
- // to call this function and check its result before calling any other
- // wxDialUpManager methods
- virtual bool IsOk() const = 0;
-
- // virtual dtor for any base class
- virtual ~wxDialUpManager() { }
-
- // operations
- // ----------
-
- // fills the array with the names of all possible values for the first
- // parameter to Dial() on this machine and returns their number (may be 0)
- virtual size_t GetISPNames(wxArrayString& names) const = 0;
-
- // dial the given ISP, use username and password to authentificate
- //
- // if no nameOfISP is given, the function will select the default one
- //
- // if no username/password are given, the function will try to do without
- // them, but will ask the user if really needed
- //
- // if async parameter is false, the function waits until the end of dialing
- // and returns true upon successful completion.
- // if async is true, the function only initiates the connection and returns
- // immediately - the result is reported via events (an event is sent
- // anyhow, but if dialing failed it will be a DISCONNECTED one)
- virtual bool Dial(const wxString& nameOfISP = wxEmptyString,
- const wxString& username = wxEmptyString,
- const wxString& password = wxEmptyString,
- bool async = true) = 0;
-
- // returns true if (async) dialing is in progress
- virtual bool IsDialing() const = 0;
-
- // cancel dialing the number initiated with Dial(async = true)
- // NB: this won't result in DISCONNECTED event being sent
- virtual bool CancelDialing() = 0;
-
- // hang up the currently active dial up connection
- virtual bool HangUp() = 0;
-
- // online status
- // -------------
-
- // returns true if the computer has a permanent network connection (i.e. is
- // on a LAN) and so there is no need to use Dial() function to go online
- //
- // NB: this functions tries to guess the result and it is not always
- // guaranteed to be correct, so it's better to ask user for
- // confirmation or give him a possibility to override it
- virtual bool IsAlwaysOnline() const = 0;
-
- // returns true if the computer is connected to the network: under Windows,
- // this just means that a RAS connection exists, under Unix we check that
- // the "well-known host" (as specified by SetWellKnownHost) is reachable
- virtual bool IsOnline() const = 0;
-
- // sometimes the built-in logic for determining the online status may fail,
- // so, in general, the user should be allowed to override it. This function
- // allows to forcefully set the online status - whatever our internal
- // algorithm may think about it.
- virtual void SetOnlineStatus(bool isOnline = true) = 0;
-
- // set misc wxDialUpManager options
- // --------------------------------
-
- // enable automatical checks for the connection status and sending of
- // wxEVT_DIALUP_CONNECTED/wxEVT_DIALUP_DISCONNECTED events. The interval
- // parameter is only for Unix where we do the check manually: under
- // Windows, the notification about the change of connection status is
- // instantenous.
- //
- // Returns false if couldn't set up automatic check for online status.
- virtual bool EnableAutoCheckOnlineStatus(size_t nSeconds = 60) = 0;
-
- // disable automatic check for connection status change - notice that the
- // wxEVT_DIALUP_XXX events won't be sent any more neither.
- virtual void DisableAutoCheckOnlineStatus() = 0;
-
- // additional Unix-only configuration
- // ----------------------------------
-
- // under Unix, the value of well-known host is used to check whether we're
- // connected to the internet. It's unused under Windows, but this function
- // is always safe to call. The default value is www.yahoo.com.
- virtual void SetWellKnownHost(const wxString& hostname,
- int portno = 80) = 0;
-
- // Sets the commands to start up the network and to hang up again. Used by
- // the Unix implementations only.
- virtual void
- SetConnectCommand(const wxString& commandDial = wxT("/usr/bin/pon"),
- const wxString& commandHangup = wxT("/usr/bin/poff")) = 0;
-};
-
-// ----------------------------------------------------------------------------
-// wxDialUpManager events
-// ----------------------------------------------------------------------------
-
-BEGIN_DECLARE_EVENT_TYPES()
- DECLARE_EVENT_TYPE(wxEVT_DIALUP_CONNECTED, 450)
- DECLARE_EVENT_TYPE(wxEVT_DIALUP_DISCONNECTED, 451)
-END_DECLARE_EVENT_TYPES()
-
-// the event class for the dialup events
-class WXDLLEXPORT wxDialUpEvent : public wxEvent
-{
-public:
- wxDialUpEvent(bool isConnected, bool isOwnEvent) : wxEvent(isOwnEvent)
- {
- SetEventType(isConnected ? wxEVT_DIALUP_CONNECTED
- : wxEVT_DIALUP_DISCONNECTED);
- }
-
- // is this a CONNECTED or DISCONNECTED event?
- bool IsConnectedEvent() const
- { return GetEventType() == wxEVT_DIALUP_CONNECTED; }
-
- // does this event come from wxDialUpManager::Dial() or from some extrenal
- // process (i.e. does it result from our own attempt to establish the
- // connection)?
- bool IsOwnEvent() const { return m_id != 0; }
-
- // implement the base class pure virtual
- virtual wxEvent *Clone() const { return new wxDialUpEvent(*this); }
-
-private:
- DECLARE_NO_ASSIGN_CLASS(wxDialUpEvent)
-};
-
-// the type of dialup event handler function
-typedef void (wxEvtHandler::*wxDialUpEventFunction)(wxDialUpEvent&);
-
-#define wxDialUpEventHandler(func) \
- (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxDialUpEventFunction, &func)
-
-// macros to catch dialup events
-#define EVT_DIALUP_CONNECTED(func) \
- wx__DECLARE_EVT0(wxEVT_DIALUP_CONNECTED, wxDialUpEventHandler(func))
-#define EVT_DIALUP_DISCONNECTED(func) \
- wx__DECLARE_EVT0(wxEVT_DIALUP_DISCONNECTED, wxDialUpEventHandler(func))
-
-
-#endif // wxUSE_DIALUP_MANAGER
-
-#endif // _WX_DIALUP_H
diff --git a/Externals/wxWidgets/include/wx/dir.h b/Externals/wxWidgets/include/wx/dir.h
deleted file mode 100644
index 0a5b2cffea..0000000000
--- a/Externals/wxWidgets/include/wx/dir.h
+++ /dev/null
@@ -1,161 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-// Name: wx/dir.h
-// Purpose: wxDir is a class for enumerating the files in a directory
-// Author: Vadim Zeitlin
-// Modified by:
-// Created: 08.12.99
-// RCS-ID: $Id: dir.h 53135 2008-04-12 02:31:04Z VZ $
-// Copyright: (c) 1999 Vadim Zeitlin
-// Licence: wxWindows licence
-/////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_DIR_H_
-#define _WX_DIR_H_
-
-#include "wx/longlong.h"
-#include "wx/string.h"
-
-class WXDLLIMPEXP_FWD_BASE wxArrayString;
-
-// ----------------------------------------------------------------------------
-// constants
-// ----------------------------------------------------------------------------
-
-// these flags define what kind of filenames is included in the list of files
-// enumerated by GetFirst/GetNext
-enum
-{
- wxDIR_FILES = 0x0001, // include files
- wxDIR_DIRS = 0x0002, // include directories
- wxDIR_HIDDEN = 0x0004, // include hidden files
- wxDIR_DOTDOT = 0x0008, // include '.' and '..'
-
- // by default, enumerate everything except '.' and '..'
- wxDIR_DEFAULT = wxDIR_FILES | wxDIR_DIRS | wxDIR_HIDDEN
-};
-
-// these constants are possible return value of wxDirTraverser::OnDir()
-enum wxDirTraverseResult
-{
- wxDIR_IGNORE = -1, // ignore this directory but continue with others
- wxDIR_STOP, // stop traversing
- wxDIR_CONTINUE // continue into this directory
-};
-
-// ----------------------------------------------------------------------------
-// wxDirTraverser: helper class for wxDir::Traverse()
-// ----------------------------------------------------------------------------
-
-class WXDLLIMPEXP_BASE wxDirTraverser
-{
-public:
- /// a virtual dtor has been provided since this class has virtual members
- virtual ~wxDirTraverser() { }
- // called for each file found by wxDir::Traverse()
- //
- // return wxDIR_STOP or wxDIR_CONTINUE from here (wxDIR_IGNORE doesn't
- // make sense)
- virtual wxDirTraverseResult OnFile(const wxString& filename) = 0;
-
- // called for each directory found by wxDir::Traverse()
- //
- // return one of the enum elements defined above
- virtual wxDirTraverseResult OnDir(const wxString& dirname) = 0;
-
- // called for each directory which we couldn't open during our traversal
- // of the directory tyree
- //
- // this method can also return either wxDIR_STOP, wxDIR_IGNORE or
- // wxDIR_CONTINUE but the latter is treated specially: it means to retry
- // opening the directory and so may lead to infinite loop if it is
- // returned unconditionally, be careful with this!
- //
- // the base class version always returns wxDIR_IGNORE
- virtual wxDirTraverseResult OnOpenError(const wxString& dirname);
-};
-
-// ----------------------------------------------------------------------------
-// wxDir: portable equivalent of {open/read/close}dir functions
-// ----------------------------------------------------------------------------
-
-class WXDLLIMPEXP_FWD_BASE wxDirData;
-
-class WXDLLIMPEXP_BASE wxDir
-{
-public:
- // test for existence of a directory with the given name
- static bool Exists(const wxString& dir);
-
- // ctors
- // -----
-
- // default, use Open()
- wxDir() { m_data = NULL; }
-
- // opens the directory for enumeration, use IsOpened() to test success
- wxDir(const wxString& dir);
-
- // dtor cleans up the associated ressources
- ~wxDir();
-
- // open the directory for enumerating
- bool Open(const wxString& dir);
-
- // returns true if the directory was successfully opened
- bool IsOpened() const;
-
- // get the full name of the directory (without '/' at the end)
- wxString GetName() const;
-
- // file enumeration routines
- // -------------------------
-
- // start enumerating all files matching filespec (or all files if it is
- // empty) and flags, return true on success
- bool GetFirst(wxString *filename,
- const wxString& filespec = wxEmptyString,
- int flags = wxDIR_DEFAULT) const;
-
- // get next file in the enumeration started with GetFirst()
- bool GetNext(wxString *filename) const;
-
- // return true if this directory has any files in it
- bool HasFiles(const wxString& spec = wxEmptyString);
-
- // return true if this directory has any subdirectories
- bool HasSubDirs(const wxString& spec = wxEmptyString);
-
- // enumerate all files in this directory and its subdirectories
- //
- // return the number of files found
- size_t Traverse(wxDirTraverser& sink,
- const wxString& filespec = wxEmptyString,
- int flags = wxDIR_DEFAULT) const;
-
- // simplest version of Traverse(): get the names of all files under this
- // directory into filenames array, return the number of files
- static size_t GetAllFiles(const wxString& dirname,
- wxArrayString *files,
- const wxString& filespec = wxEmptyString,
- int flags = wxDIR_DEFAULT);
-
- // check if there any files matching the given filespec under the given
- // directory (i.e. searches recursively), return the file path if found or
- // empty string otherwise
- static wxString FindFirst(const wxString& dirname,
- const wxString& filespec,
- int flags = wxDIR_DEFAULT);
-
- // returns the size of all directories recursively found in given path
- static wxULongLong GetTotalSize(const wxString &dir, wxArrayString *filesSkipped = NULL);
-
-private:
- friend class wxDirData;
-
- wxDirData *m_data;
-
- DECLARE_NO_COPY_CLASS(wxDir)
-};
-
-#endif // _WX_DIR_H_
-
diff --git a/Externals/wxWidgets/include/wx/dirctrl.h b/Externals/wxWidgets/include/wx/dirctrl.h
deleted file mode 100644
index 704f8bb768..0000000000
--- a/Externals/wxWidgets/include/wx/dirctrl.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-// Name: wx/dirctrl.h
-// Purpose: Directory control base header
-// Author: Julian Smart
-// Modified by:
-// Created:
-// Copyright: (c) Julian Smart
-// RCS-ID: $Id: dirctrl.h 33948 2005-05-04 18:57:50Z JS $
-// Licence: wxWindows Licence
-/////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_DIRCTRL_H_BASE_
-#define _WX_DIRCTRL_H_BASE_
-
-#include "wx/generic/dirctrlg.h"
-
-#endif
- // _WX_DIRCTRL_H_BASE_
diff --git a/Externals/wxWidgets/include/wx/dirdlg.h b/Externals/wxWidgets/include/wx/dirdlg.h
deleted file mode 100644
index 22ae354714..0000000000
--- a/Externals/wxWidgets/include/wx/dirdlg.h
+++ /dev/null
@@ -1,141 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-// Name: wx/dirdlg.h
-// Purpose: wxDirDialog base class
-// Author: Robert Roebling
-// Modified by:
-// Created:
-// Copyright: (c) Robert Roebling
-// RCS-ID: $Id: dirdlg.h 44027 2006-12-21 19:26:48Z VZ $
-// Licence: wxWindows Licence
-/////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_DIRDLG_H_BASE_
-#define _WX_DIRDLG_H_BASE_
-
-#if wxUSE_DIRDLG
-
-#include "wx/dialog.h"
-
-// ----------------------------------------------------------------------------
-// constants
-// ----------------------------------------------------------------------------
-
-extern WXDLLEXPORT_DATA(const wxChar) wxDirDialogNameStr[];
-extern WXDLLEXPORT_DATA(const wxChar) wxDirDialogDefaultFolderStr[];
-extern WXDLLEXPORT_DATA(const wxChar) wxDirSelectorPromptStr[];
-
-#define wxDD_CHANGE_DIR 0x0100
-#define wxDD_DIR_MUST_EXIST 0x0200
-
-// deprecated, on by default now, use wxDD_DIR_MUST_EXIST to disable it
-#define wxDD_NEW_DIR_BUTTON 0
-
-#ifdef __WXWINCE__
- #define wxDD_DEFAULT_STYLE wxDEFAULT_DIALOG_STYLE
-#else
- #define wxDD_DEFAULT_STYLE (wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER)
-#endif
-
-//-------------------------------------------------------------------------
-// wxDirDialogBase
-//-------------------------------------------------------------------------
-
-class WXDLLEXPORT wxDirDialogBase : public wxDialog
-{
-public:
- wxDirDialogBase() {}
- wxDirDialogBase(wxWindow *parent,
- const wxString& title = wxDirSelectorPromptStr,
- const wxString& defaultPath = wxEmptyString,
- long style = wxDD_DEFAULT_STYLE,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& sz = wxDefaultSize,
- const wxString& name = wxDirDialogNameStr)
- {
- Create(parent, title, defaultPath, style, pos, sz, name);
- }
-
- virtual ~wxDirDialogBase() {}
-
-
- bool Create(wxWindow *parent,
- const wxString& title = wxDirSelectorPromptStr,
- const wxString& defaultPath = wxEmptyString,
- long style = wxDD_DEFAULT_STYLE,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& sz = wxDefaultSize,
- const wxString& name = wxDirDialogNameStr)
- {
- if (!wxDialog::Create(parent, wxID_ANY, title, pos, sz, style, name))
- return false;
- m_path = defaultPath;
- m_message = title;
- return true;
- }
-
-#if WXWIN_COMPATIBILITY_2_6
-
- wxDEPRECATED( long GetStyle() const );
- wxDEPRECATED( void SetStyle(long style) );
-
-#endif // WXWIN_COMPATIBILITY_2_6
-
- virtual void SetMessage(const wxString& message) { m_message = message; }
- virtual void SetPath(const wxString& path) { m_path = path; }
-
- virtual wxString GetMessage() const { return m_message; }
- virtual wxString GetPath() const { return m_path; }
-
-protected:
- wxString m_message;
- wxString m_path;
-};
-
-
-// Universal and non-port related switches with need for generic implementation
-#if defined(__WXUNIVERSAL__)
- #include "wx/generic/dirdlgg.h"
- #define wxDirDialog wxGenericDirDialog
-#elif defined(__WXMSW__) && (defined(__SALFORDC__) || \
- !wxUSE_OLE || \
- (defined (__GNUWIN32__) && !wxUSE_NORLANDER_HEADERS))
- #include "wx/generic/dirdlgg.h"
- #define wxDirDialog wxGenericDirDialog
-#elif defined(__WXMSW__) && defined(__WXWINCE__) && !defined(__HANDHELDPC__)
- #include "wx/generic/dirdlgg.h" // MS PocketPC or MS Smartphone
- #define wxDirDialog wxGenericDirDialog
-#elif defined(__WXMSW__)
- #include "wx/msw/dirdlg.h" // Native MSW
-#elif defined(__WXGTK24__)
- #include "wx/gtk/dirdlg.h" // Native GTK for gtk2.4
-#elif defined(__WXGTK__)
- #include "wx/generic/dirdlgg.h"
- #define wxDirDialog wxGenericDirDialog
-#elif defined(__WXMAC__)
- #include "wx/mac/dirdlg.h" // Native Mac
-#elif defined(__WXCOCOA__)
- #include "wx/cocoa/dirdlg.h" // Native Cocoa
-#elif defined(__WXMOTIF__) || \
- defined(__WXX11__) || \
- defined(__WXMGL__) || \
- defined(__WXCOCOA__) || \
- defined(__WXPM__)
- #include "wx/generic/dirdlgg.h" // Other ports use generic implementation
- #define wxDirDialog wxGenericDirDialog
-#endif
-
-// ----------------------------------------------------------------------------
-// common ::wxDirSelector() function
-// ----------------------------------------------------------------------------
-
-WXDLLEXPORT wxString
-wxDirSelector(const wxString& message = wxDirSelectorPromptStr,
- const wxString& defaultPath = wxEmptyString,
- long style = wxDD_DEFAULT_STYLE,
- const wxPoint& pos = wxDefaultPosition,
- wxWindow *parent = NULL);
-
-#endif // wxUSE_DIRDLG
-
-#endif
- // _WX_DIRDLG_H_BASE_
diff --git a/Externals/wxWidgets/include/wx/display.h b/Externals/wxWidgets/include/wx/display.h
deleted file mode 100644
index 81f812c601..0000000000
--- a/Externals/wxWidgets/include/wx/display.h
+++ /dev/null
@@ -1,128 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-// Name: wx/display.h
-// Purpose: wxDisplay class
-// Author: Royce Mitchell III, Vadim Zeitlin
-// Created: 06/21/02
-// RCS-ID: $Id: display.h 49804 2007-11-10 01:09:42Z VZ $
-// Copyright: (c) 2002-2006 wxWidgets team
-// Licence: wxWindows licence
-/////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_DISPLAY_H_BASE_
-#define _WX_DISPLAY_H_BASE_
-
-// NB: no #if wxUSE_DISPLAY here, the display geometry part of this class (but
-// not the video mode stuff) is always available but if wxUSE_DISPLAY == 0
-// it becomes just a trivial wrapper around the old wxDisplayXXX() functions
-
-#if wxUSE_DISPLAY
- #include "wx/dynarray.h"
- #include "wx/vidmode.h"
-
- WX_DECLARE_EXPORTED_OBJARRAY(wxVideoMode, wxArrayVideoModes);
-
- // default, uninitialized, video mode object
- extern WXDLLEXPORT_DATA(const wxVideoMode) wxDefaultVideoMode;
-#endif // wxUSE_DISPLAY
-
-class WXDLLIMPEXP_FWD_CORE wxWindow;
-class WXDLLIMPEXP_FWD_CORE wxPoint;
-class WXDLLIMPEXP_FWD_CORE wxRect;
-class WXDLLIMPEXP_FWD_BASE wxString;
-
-class WXDLLIMPEXP_FWD_CORE wxDisplayFactory;
-class WXDLLIMPEXP_FWD_CORE wxDisplayImpl;
-
-// ----------------------------------------------------------------------------
-// wxDisplay: represents a display/monitor attached to the system
-// ----------------------------------------------------------------------------
-
-class WXDLLEXPORT wxDisplay
-{
-public:
- // initialize the object containing all information about the given
- // display
- //
- // the displays are numbered from 0 to GetCount() - 1, 0 is always the
- // primary display and the only one which is always supported
- wxDisplay(unsigned n = 0);
-
- // dtor is not virtual as this is a concrete class not meant to be derived
- // from
- ~wxDisplay();
-
-
- // return the number of available displays, valid parameters to
- // wxDisplay ctor are from 0 up to this number
- static unsigned GetCount();
-
- // find the display where the given point lies, return wxNOT_FOUND if
- // it doesn't belong to any display
- static int GetFromPoint(const wxPoint& pt);
-
- // find the display where the given window lies, return wxNOT_FOUND if it
- // is not shown at all
- static int GetFromWindow(wxWindow *window);
-
-
- // return true if the object was initialized successfully
- bool IsOk() const { return m_impl != NULL; }
-
- // get the full display size
- wxRect GetGeometry() const;
-
- // get the client area of the display, i.e. without taskbars and such
- wxRect GetClientArea() const;
-
- // name may be empty
- wxString GetName() const;
-
- // display 0 is usually the primary display
- bool IsPrimary() const;
-
-
-#if wxUSE_DISPLAY
- // enumerate all video modes supported by this display matching the given
- // one (in the sense of wxVideoMode::Match())
- //
- // as any mode matches the default value of the argument and there is
- // always at least one video mode supported by display, the returned array
- // is only empty for the default value of the argument if this function is
- // not supported at all on this platform
- wxArrayVideoModes
- GetModes(const wxVideoMode& mode = wxDefaultVideoMode) const;
-
- // get current video mode
- wxVideoMode GetCurrentMode() const;
-
- // change current mode, return true if succeeded, false otherwise
- //
- // for the default value of the argument restores the video mode to default
- bool ChangeMode(const wxVideoMode& mode = wxDefaultVideoMode);
-
- // restore the default video mode (just a more readable synonym)
- void ResetMode() { (void)ChangeMode(); }
-#endif // wxUSE_DISPLAY
-
-private:
- // returns the factory used to implement our static methods and create new
- // displays
- static wxDisplayFactory& Factory();
-
- // creates the factory object, called by Factory() when it is called for
- // the first time and should return a pointer allocated with new (the
- // caller will delete it)
- //
- // this method must be implemented in platform-specific code if
- // wxUSE_DISPLAY == 1 (if it is 0 we provide the stub in common code)
- static wxDisplayFactory *CreateFactory();
-
-
- // the real implementation
- wxDisplayImpl *m_impl;
-
-
- DECLARE_NO_COPY_CLASS(wxDisplay)
-};
-
-#endif // _WX_DISPLAY_H_BASE_
diff --git a/Externals/wxWidgets/include/wx/display_impl.h b/Externals/wxWidgets/include/wx/display_impl.h
deleted file mode 100644
index f79766e030..0000000000
--- a/Externals/wxWidgets/include/wx/display_impl.h
+++ /dev/null
@@ -1,110 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-// Name: wx/display_impl.h
-// Purpose: wxDisplayImpl class declaration
-// Author: Vadim Zeitlin
-// Created: 2006-03-15
-// RCS-ID: $Id: display_impl.h 41548 2006-10-02 05:38:05Z PC $
-// Copyright: (c) 2002-2006 Vadim Zeitlin
-// Licence: wxWindows licence
-/////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_DISPLAY_IMPL_H_BASE_
-#define _WX_DISPLAY_IMPL_H_BASE_
-
-#include "wx/gdicmn.h" // for wxRect
-
-// ----------------------------------------------------------------------------
-// wxDisplayFactory: allows to create wxDisplay objects
-// ----------------------------------------------------------------------------
-
-class WXDLLEXPORT wxDisplayFactory
-{
-public:
- wxDisplayFactory() { }
- virtual ~wxDisplayFactory() { }
-
- // create a new display object
- //
- // it can return a NULL pointer if the display creation failed
- virtual wxDisplayImpl *CreateDisplay(unsigned n) = 0;
-
- // get the total number of displays
- virtual unsigned GetCount() = 0;
-
- // return the display for the given point or wxNOT_FOUND
- virtual int GetFromPoint(const wxPoint& pt) = 0;
-
- // return the display for the given window or wxNOT_FOUND
- //
- // the window pointer must not be NULL (i.e. caller should check it)
- virtual int GetFromWindow(wxWindow *window);
-};
-
-// ----------------------------------------------------------------------------
-// wxDisplayImpl: base class for all wxDisplay implementations
-// ----------------------------------------------------------------------------
-
-class WXDLLEXPORT wxDisplayImpl
-{
-public:
- // virtual dtor for this base class
- virtual ~wxDisplayImpl() { }
-
-
- // return the full area of this display
- virtual wxRect GetGeometry() const = 0;
-
- // return the area of the display available for normal windows
- virtual wxRect GetClientArea() const { return GetGeometry(); }
-
- // return the name (may be empty)
- virtual wxString GetName() const = 0;
-
- // return the index of this display
- unsigned GetIndex() const { return m_index; }
-
- // return true if this is the primary monitor (usually one with index 0)
- virtual bool IsPrimary() const { return GetIndex() == 0; }
-
-
-#if wxUSE_DISPLAY
- // implements wxDisplay::GetModes()
- virtual wxArrayVideoModes GetModes(const wxVideoMode& mode) const = 0;
-
- // get current video mode
- virtual wxVideoMode GetCurrentMode() const = 0;
-
- // change current mode, return true if succeeded, false otherwise
- virtual bool ChangeMode(const wxVideoMode& mode) = 0;
-#endif // wxUSE_DISPLAY
-
-protected:
- // create the object providing access to the display with the given index
- wxDisplayImpl(unsigned n) : m_index(n) { }
-
-
- // the index of this display (0 is always the primary one)
- const unsigned m_index;
-
-
- friend class wxDisplayFactory;
-
- DECLARE_NO_COPY_CLASS(wxDisplayImpl)
-};
-
-// ----------------------------------------------------------------------------
-// wxDisplayFactorySingle
-// ----------------------------------------------------------------------------
-
-// this is a stub implementation using single/main display only, it is
-// available even if wxUSE_DISPLAY == 0
-class WXDLLEXPORT wxDisplayFactorySingle : public wxDisplayFactory
-{
-public:
- virtual wxDisplayImpl *CreateDisplay(unsigned n);
- virtual unsigned GetCount() { return 1; }
- virtual int GetFromPoint(const wxPoint& pt);
-};
-
-#endif // _WX_DISPLAY_IMPL_H_BASE_
-
diff --git a/Externals/wxWidgets/include/wx/dlimpexp.h b/Externals/wxWidgets/include/wx/dlimpexp.h
deleted file mode 100644
index c6fc095cee..0000000000
--- a/Externals/wxWidgets/include/wx/dlimpexp.h
+++ /dev/null
@@ -1,275 +0,0 @@
-/*
- * Name: wx/dlimpexp.h
- * Purpose: Macros for declaring DLL-imported/exported functions
- * Author: Vadim Zeitlin
- * Modified by:
- * Created: 16.10.2003 (extracted from wx/defs.h)
- * RCS-ID: $Id: dlimpexp.h 49563 2007-10-31 20:46:21Z VZ $
- * Copyright: (c) 2003 Vadim Zeitlin
- * Licence: wxWindows licence
- */
-
-/*
- This is a C file, not C++ one, do not use C++ comments here!
- */
-
-#ifndef _WX_DLIMPEXP_H_
-#define _WX_DLIMPEXP_H_
-
-#if defined(__WXMSW__)
- /*
- __declspec works in BC++ 5 and later, Watcom C++ 11.0 and later as well
- as VC++ and gcc
- */
-# if defined(__VISUALC__) || defined(__BORLANDC__) || defined(__GNUC__) || defined(__WATCOMC__)
-# define WXEXPORT __declspec(dllexport)
-# define WXIMPORT __declspec(dllimport)
-# else /* compiler doesn't support __declspec() */
-# define WXEXPORT
-# define WXIMPORT
-# endif
-#elif defined(__WXPM__)
-# if defined (__WATCOMC__)
-# define WXEXPORT __declspec(dllexport)
- /*
- __declspec(dllimport) prepends __imp to imported symbols. We do NOT
- want that!
- */
-# define WXIMPORT
-# elif defined(__EMX__)
-# define WXEXPORT
-# define WXIMPORT
-# elif (!(defined(__VISAGECPP__) && (__IBMCPP__ < 400 || __IBMC__ < 400 )))
-# define WXEXPORT _Export
-# define WXIMPORT _Export
-# endif
-#elif defined(__WXMAC__) || defined(__WXCOCOA__)
-# ifdef __MWERKS__
-# define WXEXPORT __declspec(export)
-# define WXIMPORT __declspec(import)
-# endif
-#elif defined(__CYGWIN__)
-# define WXEXPORT __declspec(dllexport)
-# define WXIMPORT __declspec(dllimport)
-#endif
-
-/* for other platforms/compilers we don't anything */
-#ifndef WXEXPORT
-# define WXEXPORT
-# define WXIMPORT
-#endif
-
-/*
- We support building wxWidgets as a set of several libraries but we don't
- support arbitrary combinations of libs/DLLs: either we build all of them as
- DLLs (in which case WXMAKINGDLL is defined) or none (it isn't).
-
- However we have a problem because we need separate WXDLLEXPORT versions for
- different libraries as, for example, wxString class should be dllexported
- when compiled in wxBase and dllimported otherwise, so we do define separate
- WXMAKING/USINGDLL_XYZ constants for each component XYZ.
- */
-#ifdef WXMAKINGDLL
-# if wxUSE_BASE
-# define WXMAKINGDLL_BASE
-# endif
-
-# define WXMAKINGDLL_NET
-# define WXMAKINGDLL_CORE
-# define WXMAKINGDLL_ADV
-# define WXMAKINGDLL_QA
-# define WXMAKINGDLL_ODBC
-# define WXMAKINGDLL_DBGRID
-# define WXMAKINGDLL_HTML
-# define WXMAKINGDLL_GL
-# define WXMAKINGDLL_XML
-# define WXMAKINGDLL_XRC
-# define WXMAKINGDLL_AUI
-# define WXMAKINGDLL_RICHTEXT
-# define WXMAKINGDLL_MEDIA
-#endif /* WXMAKINGDLL */
-
-/*
- WXDLLEXPORT maps to export declaration when building the DLL, to import
- declaration if using it or to nothing at all if we don't use wxWin as DLL
- */
-#ifdef WXMAKINGDLL_BASE
-# define WXDLLIMPEXP_BASE WXEXPORT
-# define WXDLLIMPEXP_DATA_BASE(type) WXEXPORT type
-#elif defined(WXUSINGDLL)
-# define WXDLLIMPEXP_BASE WXIMPORT
-# define WXDLLIMPEXP_DATA_BASE(type) WXIMPORT type
-#else /* not making nor using DLL */
-# define WXDLLIMPEXP_BASE
-# define WXDLLIMPEXP_DATA_BASE(type) type
-#endif
-
-#ifdef WXMAKINGDLL_NET
-# define WXDLLIMPEXP_NET WXEXPORT
-# define WXDLLIMPEXP_DATA_NET(type) WXEXPORT type
-#elif defined(WXUSINGDLL)
-# define WXDLLIMPEXP_NET WXIMPORT
-# define WXDLLIMPEXP_DATA_NET(type) WXIMPORT type
-#else /* not making nor using DLL */
-# define WXDLLIMPEXP_NET
-# define WXDLLIMPEXP_DATA_NET(type) type
-#endif
-
-#ifdef WXMAKINGDLL_CORE
-# define WXDLLIMPEXP_CORE WXEXPORT
-# define WXDLLIMPEXP_DATA_CORE(type) WXEXPORT type
-#elif defined(WXUSINGDLL)
-# define WXDLLIMPEXP_CORE WXIMPORT
-# define WXDLLIMPEXP_DATA_CORE(type) WXIMPORT type
-#else /* not making nor using DLL */
-# define WXDLLIMPEXP_CORE
-# define WXDLLIMPEXP_DATA_CORE(type) type
-#endif
-
-#ifdef WXMAKINGDLL_ADV
-# define WXDLLIMPEXP_ADV WXEXPORT
-# define WXDLLIMPEXP_DATA_ADV(type) WXEXPORT type
-#elif defined(WXUSINGDLL)
-# define WXDLLIMPEXP_ADV WXIMPORT
-# define WXDLLIMPEXP_DATA_ADV(type) WXIMPORT type
-#else /* not making nor using DLL */
-# define WXDLLIMPEXP_ADV
-# define WXDLLIMPEXP_DATA_ADV(type) type
-#endif
-
-#ifdef WXMAKINGDLL_ODBC
-# define WXDLLIMPEXP_ODBC WXEXPORT
-# define WXDLLIMPEXP_DATA_ODBC(type) WXEXPORT type
-#elif defined(WXUSINGDLL)
-# define WXDLLIMPEXP_ODBC WXIMPORT
-# define WXDLLIMPEXP_DATA_ODBC(type) WXIMPORT type
-#else /* not making nor using DLL */
-# define WXDLLIMPEXP_ODBC
-# define WXDLLIMPEXP_DATA_ODBC(type) type
-#endif
-
-#ifdef WXMAKINGDLL_QA
-# define WXDLLIMPEXP_QA WXEXPORT
-# define WXDLLIMPEXP_DATA_QA(type) WXEXPORT type
-#elif defined(WXUSINGDLL)
-# define WXDLLIMPEXP_QA WXIMPORT
-# define WXDLLIMPEXP_DATA_QA(type) WXIMPORT type
-#else /* not making nor using DLL */
-# define WXDLLIMPEXP_QA
-# define WXDLLIMPEXP_DATA_QA(type) type
-#endif
-
-#ifdef WXMAKINGDLL_DBGRID
-# define WXDLLIMPEXP_DBGRID WXEXPORT
-# define WXDLLIMPEXP_DATA_DBGRID(type) WXEXPORT type
-#elif defined(WXUSINGDLL)
-# define WXDLLIMPEXP_DBGRID WXIMPORT
-# define WXDLLIMPEXP_DATA_DBGRID(type) WXIMPORT type
-#else /* not making nor using DLL */
-# define WXDLLIMPEXP_DBGRID
-# define WXDLLIMPEXP_DATA_DBGRID(type) type
-#endif
-
-#ifdef WXMAKINGDLL_HTML
-# define WXDLLIMPEXP_HTML WXEXPORT
-# define WXDLLIMPEXP_DATA_HTML(type) WXEXPORT type
-#elif defined(WXUSINGDLL)
-# define WXDLLIMPEXP_HTML WXIMPORT
-# define WXDLLIMPEXP_DATA_HTML(type) WXIMPORT type
-#else /* not making nor using DLL */
-# define WXDLLIMPEXP_HTML
-# define WXDLLIMPEXP_DATA_HTML(type) type
-#endif
-
-#ifdef WXMAKINGDLL_GL
-# define WXDLLIMPEXP_GL WXEXPORT
-#elif defined(WXUSINGDLL)
-# define WXDLLIMPEXP_GL WXIMPORT
-#else /* not making nor using DLL */
-# define WXDLLIMPEXP_GL
-#endif
-
-#ifdef WXMAKINGDLL_XML
-# define WXDLLIMPEXP_XML WXEXPORT
-#elif defined(WXUSINGDLL)
-# define WXDLLIMPEXP_XML WXIMPORT
-#else /* not making nor using DLL */
-# define WXDLLIMPEXP_XML
-#endif
-
-#ifdef WXMAKINGDLL_XRC
-# define WXDLLIMPEXP_XRC WXEXPORT
-#elif defined(WXUSINGDLL)
-# define WXDLLIMPEXP_XRC WXIMPORT
-#else /* not making nor using DLL */
-# define WXDLLIMPEXP_XRC
-#endif
-
-#ifdef WXMAKINGDLL_AUI
-# define WXDLLIMPEXP_AUI WXEXPORT
-#elif defined(WXUSINGDLL)
-# define WXDLLIMPEXP_AUI WXIMPORT
-#else /* not making nor using DLL */
-# define WXDLLIMPEXP_AUI
-#endif
-
-#ifdef WXMAKINGDLL_RICHTEXT
-# define WXDLLIMPEXP_RICHTEXT WXEXPORT
-#elif defined(WXUSINGDLL)
-# define WXDLLIMPEXP_RICHTEXT WXIMPORT
-#else /* not making nor using DLL */
-# define WXDLLIMPEXP_RICHTEXT
-#endif
-
-#ifdef WXMAKINGDLL_MEDIA
-# define WXDLLIMPEXP_MEDIA WXEXPORT
-#elif defined(WXUSINGDLL)
-# define WXDLLIMPEXP_MEDIA WXIMPORT
-#else /* not making nor using DLL */
-# define WXDLLIMPEXP_MEDIA
-#endif
-
-/* for backwards compatibility, define suffix-less versions too */
-#define WXDLLEXPORT WXDLLIMPEXP_CORE
-#define WXDLLEXPORT_DATA WXDLLIMPEXP_DATA_CORE
-
-/* wx-2.9 introduces new macros for forward declarations, include them
- * here for forward compatibility:
-
- GCC warns about using __attribute__ (and also __declspec in mingw32 case) on
- forward declarations while MSVC complains about forward declarations without
- __declspec for the classes later declared with it, so we need a separate set
- of macros for forward declarations to hide this difference:
- */
-#if defined(__WINDOWS__) && defined(__GNUC__)
- #define WXDLLIMPEXP_FWD_BASE
- #define WXDLLIMPEXP_FWD_NET
- #define WXDLLIMPEXP_FWD_CORE
- #define WXDLLIMPEXP_FWD_ADV
- #define WXDLLIMPEXP_FWD_QA
- #define WXDLLIMPEXP_FWD_HTML
- #define WXDLLIMPEXP_FWD_GL
- #define WXDLLIMPEXP_FWD_XML
- #define WXDLLIMPEXP_FWD_XRC
- #define WXDLLIMPEXP_FWD_AUI
- #define WXDLLIMPEXP_FWD_RICHTEXT
- #define WXDLLIMPEXP_FWD_MEDIA
- #define WXDLLIMPEXP_FWD_STC
-#else
- #define WXDLLIMPEXP_FWD_BASE WXDLLIMPEXP_BASE
- #define WXDLLIMPEXP_FWD_NET WXDLLIMPEXP_NET
- #define WXDLLIMPEXP_FWD_CORE WXDLLIMPEXP_CORE
- #define WXDLLIMPEXP_FWD_ADV WXDLLIMPEXP_ADV
- #define WXDLLIMPEXP_FWD_QA WXDLLIMPEXP_QA
- #define WXDLLIMPEXP_FWD_HTML WXDLLIMPEXP_HTML
- #define WXDLLIMPEXP_FWD_GL WXDLLIMPEXP_GL
- #define WXDLLIMPEXP_FWD_XML WXDLLIMPEXP_XML
- #define WXDLLIMPEXP_FWD_XRC WXDLLIMPEXP_XRC
- #define WXDLLIMPEXP_FWD_AUI WXDLLIMPEXP_AUI
- #define WXDLLIMPEXP_FWD_RICHTEXT WXDLLIMPEXP_RICHTEXT
- #define WXDLLIMPEXP_FWD_MEDIA WXDLLIMPEXP_MEDIA
- #define WXDLLIMPEXP_FWD_STC WXDLLIMPEXP_STC
-#endif
-
-#endif /* _WX_DLIMPEXP_H_ */
-
diff --git a/Externals/wxWidgets/include/wx/dnd.h b/Externals/wxWidgets/include/wx/dnd.h
deleted file mode 100644
index 2eab71e654..0000000000
--- a/Externals/wxWidgets/include/wx/dnd.h
+++ /dev/null
@@ -1,267 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Name: wx/dnd.h
-// Purpose: Drag and drop classes declarations
-// Author: Vadim Zeitlin, Robert Roebling
-// Modified by:
-// Created: 26.05.99
-// RCS-ID: $Id: dnd.h 43636 2006-11-25 14:08:27Z VZ $
-// Copyright: (c) wxWidgets Team
-// Licence: wxWindows licence
-///////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_DND_H_BASE_
-#define _WX_DND_H_BASE_
-
-#include "wx/defs.h"
-
-#if wxUSE_DRAG_AND_DROP
-
-#include "wx/dataobj.h"
-#include "wx/cursor.h"
-
-// ----------------------------------------------------------------------------
-// constants
-// ----------------------------------------------------------------------------
-
-// flags for wxDropSource::DoDragDrop()
-//
-// NB: wxDrag_CopyOnly must be 0 (== FALSE) and wxDrag_AllowMove must be 1
-// (== TRUE) for compatibility with the old DoDragDrop(bool) method!
-enum
-{
- wxDrag_CopyOnly = 0, // allow only copying
- wxDrag_AllowMove = 1, // allow moving (copying is always allowed)
- wxDrag_DefaultMove = 3 // the default operation is move, not copy
-};
-
-// result of wxDropSource::DoDragDrop() call
-enum wxDragResult
-{
- wxDragError, // error prevented the d&d operation from completing
- wxDragNone, // drag target didn't accept the data
- wxDragCopy, // the data was successfully copied
- wxDragMove, // the data was successfully moved (MSW only)
- wxDragLink, // operation is a drag-link
- wxDragCancel // the operation was cancelled by user (not an error)
-};
-
-// return true if res indicates that something was done during a dnd operation,
-// i.e. is neither error nor none nor cancel
-WXDLLEXPORT bool wxIsDragResultOk(wxDragResult res);
-
-// ----------------------------------------------------------------------------
-// wxDropSource is the object you need to create (and call DoDragDrop on it)
-// to initiate a drag-and-drop operation
-// ----------------------------------------------------------------------------
-
-class WXDLLEXPORT wxDropSourceBase
-{
-public:
- wxDropSourceBase(const wxCursor &cursorCopy = wxNullCursor,
- const wxCursor &cursorMove = wxNullCursor,
- const wxCursor &cursorStop = wxNullCursor)
- : m_cursorCopy(cursorCopy),
- m_cursorMove(cursorMove),
- m_cursorStop(cursorStop)
- { m_data = (wxDataObject *)NULL; }
- virtual ~wxDropSourceBase() { }
-
- // set the data which is transfered by drag and drop
- void SetData(wxDataObject& data)
- { m_data = &data; }
-
- wxDataObject *GetDataObject()
- { return m_data; }
-
- // set the icon corresponding to given drag result
- void SetCursor(wxDragResult res, const wxCursor& cursor)
- {
- if ( res == wxDragCopy )
- m_cursorCopy = cursor;
- else if ( res == wxDragMove )
- m_cursorMove = cursor;
- else
- m_cursorStop = cursor;
- }
-
- // start drag action, see enum wxDragResult for return value description
- //
- // if flags contains wxDrag_AllowMove, moving (and only copying) data is
- // allowed, if it contains wxDrag_DefaultMove (which includes the previous
- // flag), it is even the default operation
- virtual wxDragResult DoDragDrop(int flags = wxDrag_CopyOnly) = 0;
-
- // override to give feedback depending on the current operation result
- // "effect" and return true if you did something, false to let the library
- // give the default feedback
- virtual bool GiveFeedback(wxDragResult WXUNUSED(effect)) { return false; }
-
-protected:
- const wxCursor& GetCursor(wxDragResult res) const
- {
- if ( res == wxDragCopy )
- return m_cursorCopy;
- else if ( res == wxDragMove )
- return m_cursorMove;
- else
- return m_cursorStop;
- }
-
- // the data we're dragging
- wxDataObject *m_data;
-
- // the cursors to use for feedback
- wxCursor m_cursorCopy,
- m_cursorMove,
- m_cursorStop;
-
- DECLARE_NO_COPY_CLASS(wxDropSourceBase)
-};
-
-// ----------------------------------------------------------------------------
-// wxDropTarget should be associated with a window if it wants to be able to
-// receive data via drag and drop.
-//
-// To use this class, you should derive from wxDropTarget and implement
-// OnData() pure virtual method. You may also wish to override OnDrop() if you
-// want to accept the data only inside some region of the window (this may
-// avoid having to copy the data to this application which happens only when
-// OnData() is called)
-// ----------------------------------------------------------------------------
-
-class WXDLLEXPORT wxDropTargetBase
-{
-public:
- // ctor takes a pointer to heap-allocated wxDataObject which will be owned
- // by wxDropTarget and deleted by it automatically. If you don't give it
- // here, you can use SetDataObject() later.
- wxDropTargetBase(wxDataObject *dataObject = (wxDataObject*)NULL)
- { m_dataObject = dataObject; m_defaultAction = wxDragNone; }
- // dtor deletes our data object
- virtual ~wxDropTargetBase()
- { delete m_dataObject; }
-
- // get/set the associated wxDataObject
- wxDataObject *GetDataObject() const
- { return m_dataObject; }
- void SetDataObject(wxDataObject *dataObject)
- { if (m_dataObject) delete m_dataObject;
- m_dataObject = dataObject; }
-
- // these functions are called when data is moved over position (x, y) and
- // may return either wxDragCopy, wxDragMove or wxDragNone depending on
- // what would happen if the data were dropped here.
- //
- // the last parameter is what would happen by default and is determined by
- // the platform-specific logic (for example, under Windows it's wxDragCopy
- // if Ctrl key is pressed and wxDragMove otherwise) except that it will
- // always be wxDragNone if the carried data is in an unsupported format.
-
- // called when the mouse enters the window (only once until OnLeave())
- virtual wxDragResult OnEnter(wxCoord x, wxCoord y, wxDragResult def)
- { return OnDragOver(x, y, def); }
-
- // called when the mouse moves in the window - shouldn't take long to
- // execute or otherwise mouse movement would be too slow
- virtual wxDragResult OnDragOver(wxCoord WXUNUSED(x), wxCoord WXUNUSED(y),
- wxDragResult def)
- { return def; }
-
- // called when mouse leaves the window: might be used to remove the
- // feedback which was given in OnEnter()
- virtual void OnLeave() { }
-
- // this function is called when data is dropped at position (x, y) - if it
- // returns true, OnData() will be called immediately afterwards which will
- // allow to retrieve the data dropped.
- virtual bool OnDrop(wxCoord x, wxCoord y) = 0;
-
- // called after OnDrop() returns TRUE: you will usually just call
- // GetData() from here and, probably, also refresh something to update the
- // new data and, finally, return the code indicating how did the operation
- // complete (returning default value in case of success and wxDragError on
- // failure is usually ok)
- virtual wxDragResult OnData(wxCoord x, wxCoord y, wxDragResult def) = 0;
-
- // may be called *only* from inside OnData() and will fill m_dataObject
- // with the data from the drop source if it returns true
- virtual bool GetData() = 0;
-
- // sets the default action for drag and drop:
- // use wxDragMove or wxDragCopy to set deafult action to move or copy
- // and use wxDragNone (default) to set default action specified by
- // initialization of draging (see wxDropSourceBase::DoDragDrop())
- void SetDefaultAction(wxDragResult action)
- { m_defaultAction = action; }
-
- // returns default action for drag and drop or
- // wxDragNone if this not specified
- wxDragResult GetDefaultAction()
- { return m_defaultAction; }
-
-protected:
- wxDataObject *m_dataObject;
- wxDragResult m_defaultAction;
-
- DECLARE_NO_COPY_CLASS(wxDropTargetBase)
-};
-
-// ----------------------------------------------------------------------------
-// include platform dependent class declarations
-// ----------------------------------------------------------------------------
-
-#if defined(__WXMSW__)
- #include "wx/msw/ole/dropsrc.h"
- #include "wx/msw/ole/droptgt.h"
-#elif defined(__WXMOTIF__)
- #include "wx/motif/dnd.h"
-#elif defined(__WXX11__)
- #include "wx/x11/dnd.h"
-#elif defined(__WXGTK20__)
- #include "wx/gtk/dnd.h"
-#elif defined(__WXGTK__)
- #include "wx/gtk1/dnd.h"
-#elif defined(__WXMAC__)
- #include "wx/mac/dnd.h"
-#elif defined(__WXPM__)
- #include "wx/os2/dnd.h"
-#endif
-
-// ----------------------------------------------------------------------------
-// standard wxDropTarget implementations (implemented in common/dobjcmn.cpp)
-// ----------------------------------------------------------------------------
-
-// A simple wxDropTarget derived class for text data: you only need to
-// override OnDropText() to get something working
-class WXDLLEXPORT wxTextDropTarget : public wxDropTarget
-{
-public:
- wxTextDropTarget();
-
- virtual bool OnDropText(wxCoord x, wxCoord y, const wxString& text) = 0;
-
- virtual wxDragResult OnData(wxCoord x, wxCoord y, wxDragResult def);
-
-private:
- DECLARE_NO_COPY_CLASS(wxTextDropTarget)
-};
-
-// A drop target which accepts files (dragged from File Manager or Explorer)
-class WXDLLEXPORT wxFileDropTarget : public wxDropTarget
-{
-public:
- wxFileDropTarget();
-
- // parameters are the number of files and the array of file names
- virtual bool OnDropFiles(wxCoord x, wxCoord y,
- const wxArrayString& filenames) = 0;
-
- virtual wxDragResult OnData(wxCoord x, wxCoord y, wxDragResult def);
-
-private:
- DECLARE_NO_COPY_CLASS(wxFileDropTarget)
-};
-
-#endif // wxUSE_DRAG_AND_DROP
-
-#endif // _WX_DND_H_BASE_
diff --git a/Externals/wxWidgets/include/wx/docmdi.h b/Externals/wxWidgets/include/wx/docmdi.h
deleted file mode 100644
index c8ab803c12..0000000000
--- a/Externals/wxWidgets/include/wx/docmdi.h
+++ /dev/null
@@ -1,107 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-// Name: docmdi.h
-// Purpose: Frame classes for MDI document/view applications
-// Author: Julian Smart
-// Modified by:
-// Created: 01/02/97
-// RCS-ID: $Id: docmdi.h 41020 2006-09-05 20:47:48Z VZ $
-// Copyright: (c) Julian Smart
-// Licence: wxWindows licence
-/////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_DOCMDI_H_
-#define _WX_DOCMDI_H_
-
-#include "wx/defs.h"
-
-#if wxUSE_MDI_ARCHITECTURE
-
-#include "wx/docview.h"
-#include "wx/mdi.h"
-
-/*
- * Use this instead of wxMDIParentFrame
- */
-
-class WXDLLEXPORT wxDocMDIParentFrame: public wxMDIParentFrame
-{
-public:
- wxDocMDIParentFrame();
- wxDocMDIParentFrame(wxDocManager *manager, wxFrame *parent, wxWindowID id,
- const wxString& title, const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize, long style = wxDEFAULT_FRAME_STYLE, const wxString& name = wxT("frame"));
-
- bool Create(wxDocManager *manager, wxFrame *parent, wxWindowID id,
- const wxString& title, const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize, long style = wxDEFAULT_FRAME_STYLE, const wxString& name = wxT("frame"));
-
- // Extend event processing to search the document manager's event table
- virtual bool ProcessEvent(wxEvent& event);
-
- wxDocManager *GetDocumentManager(void) const { return m_docManager; }
-
- void OnExit(wxCommandEvent& event);
- void OnMRUFile(wxCommandEvent& event);
- void OnCloseWindow(wxCloseEvent& event);
-
-protected:
- void Init();
- wxDocManager *m_docManager;
-
-private:
- DECLARE_CLASS(wxDocMDIParentFrame)
- DECLARE_EVENT_TABLE()
- DECLARE_NO_COPY_CLASS(wxDocMDIParentFrame)
-};
-
-/*
- * Use this instead of wxMDIChildFrame
- */
-
-class WXDLLEXPORT wxDocMDIChildFrame: public wxMDIChildFrame
-{
-public:
- wxDocMDIChildFrame();
- wxDocMDIChildFrame(wxDocument *doc, wxView *view, wxMDIParentFrame *frame, wxWindowID id,
- const wxString& title, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
- long type = wxDEFAULT_FRAME_STYLE, const wxString& name = wxT("frame"));
- virtual ~wxDocMDIChildFrame();
-
- bool Create(wxDocument *doc,
- wxView *view,
- wxMDIParentFrame *frame,
- wxWindowID id,
- const wxString& title,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize,
- long type = wxDEFAULT_FRAME_STYLE,
- const wxString& name = wxFrameNameStr);
-
- // Extend event processing to search the view's event table
- virtual bool ProcessEvent(wxEvent& event);
-
- void OnActivate(wxActivateEvent& event);
- void OnCloseWindow(wxCloseEvent& event);
-
- inline wxDocument *GetDocument() const { return m_childDocument; }
- inline wxView *GetView(void) const { return m_childView; }
- inline void SetDocument(wxDocument *doc) { m_childDocument = doc; }
- inline void SetView(wxView *view) { m_childView = view; }
- bool Destroy() { m_childView = (wxView *)NULL; return wxMDIChildFrame::Destroy(); }
-
-protected:
- void Init();
- wxDocument* m_childDocument;
- wxView* m_childView;
-
-private:
- DECLARE_EVENT_TABLE()
- DECLARE_CLASS(wxDocMDIChildFrame)
- DECLARE_NO_COPY_CLASS(wxDocMDIChildFrame)
-};
-
-#endif
- // wxUSE_MDI_ARCHITECTURE
-
-#endif
- // _WX_DOCMDI_H_
diff --git a/Externals/wxWidgets/include/wx/docview.h b/Externals/wxWidgets/include/wx/docview.h
deleted file mode 100644
index 60ed159071..0000000000
--- a/Externals/wxWidgets/include/wx/docview.h
+++ /dev/null
@@ -1,675 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-// Name: wx/docview.h
-// Purpose: Doc/View classes
-// Author: Julian Smart
-// Modified by:
-// Created: 01/02/97
-// RCS-ID: $Id: docview.h 53546 2008-05-10 21:02:36Z VZ $
-// Copyright: (c) Julian Smart
-// Licence: wxWindows licence
-/////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_DOCH__
-#define _WX_DOCH__
-
-#include "wx/defs.h"
-
-#if wxUSE_DOC_VIEW_ARCHITECTURE
-
-#include "wx/list.h"
-#include "wx/string.h"
-#include "wx/frame.h"
-
-#if wxUSE_PRINTING_ARCHITECTURE
- #include "wx/print.h"
-#endif
-
-class WXDLLIMPEXP_FWD_CORE wxWindow;
-class WXDLLIMPEXP_FWD_CORE wxDocument;
-class WXDLLIMPEXP_FWD_CORE wxView;
-class WXDLLIMPEXP_FWD_CORE wxDocTemplate;
-class WXDLLIMPEXP_FWD_CORE wxDocManager;
-class WXDLLIMPEXP_FWD_CORE wxPrintInfo;
-class WXDLLIMPEXP_FWD_CORE wxCommandProcessor;
-class WXDLLIMPEXP_FWD_CORE wxFileHistory;
-class WXDLLIMPEXP_FWD_BASE wxConfigBase;
-
-#if wxUSE_STD_IOSTREAM
- #include "wx/iosfwrap.h"
-#else
- #include "wx/stream.h"
-#endif
-
-// Document manager flags
-enum
-{
- wxDOC_SDI = 1,
- wxDOC_MDI,
- wxDOC_NEW,
- wxDOC_SILENT,
- wxDEFAULT_DOCMAN_FLAGS = wxDOC_SDI
-};
-
-// Document template flags
-enum
-{
- wxTEMPLATE_VISIBLE = 1,
- wxTEMPLATE_INVISIBLE,
- wxDEFAULT_TEMPLATE_FLAGS = wxTEMPLATE_VISIBLE
-};
-
-#define wxMAX_FILE_HISTORY 9
-
-class WXDLLEXPORT wxDocument : public wxEvtHandler
-{
-public:
- wxDocument(wxDocument *parent = (wxDocument *) NULL);
- virtual ~wxDocument();
-
- // accessors
- void SetFilename(const wxString& filename, bool notifyViews = false);
- wxString GetFilename() const { return m_documentFile; }
-
- void SetTitle(const wxString& title) { m_documentTitle = title; }
- wxString GetTitle() const { return m_documentTitle; }
-
- void SetDocumentName(const wxString& name) { m_documentTypeName = name; }
- wxString GetDocumentName() const { return m_documentTypeName; }
-
- bool GetDocumentSaved() const { return m_savedYet; }
- void SetDocumentSaved(bool saved = true) { m_savedYet = saved; }
-
- virtual bool Close();
- virtual bool Save();
- virtual bool SaveAs();
- virtual bool Revert();
-
-#if wxUSE_STD_IOSTREAM
- virtual wxSTD ostream& SaveObject(wxSTD ostream& stream);
- virtual wxSTD istream& LoadObject(wxSTD istream& stream);
-#else
- virtual wxOutputStream& SaveObject(wxOutputStream& stream);
- virtual wxInputStream& LoadObject(wxInputStream& stream);
-#endif
-
- // Called by wxWidgets
- virtual bool OnSaveDocument(const wxString& filename);
- virtual bool OnOpenDocument(const wxString& filename);
- virtual bool OnNewDocument();
- virtual bool OnCloseDocument();
-
- // Prompts for saving if about to close a modified document. Returns true
- // if ok to close the document (may have saved in the meantime, or set
- // modified to false)
- virtual bool OnSaveModified();
-
- // Called by framework if created automatically by the default document
- // manager: gives document a chance to initialise and (usually) create a
- // view
- virtual bool OnCreate(const wxString& path, long flags);
-
- // By default, creates a base wxCommandProcessor.
- virtual wxCommandProcessor *OnCreateCommandProcessor();
- virtual wxCommandProcessor *GetCommandProcessor() const { return m_commandProcessor; }
- virtual void SetCommandProcessor(wxCommandProcessor *proc) { m_commandProcessor = proc; }
-
- // Called after a view is added or removed. The default implementation
- // deletes the document if this is there are no more views.
- virtual void OnChangedViewList();
-
- virtual bool DeleteContents();
-
- virtual bool Draw(wxDC&);
- virtual bool IsModified() const { return m_documentModified; }
- virtual void Modify(bool mod) { m_documentModified = mod; }
-
- virtual bool AddView(wxView *view);
- virtual bool RemoveView(wxView *view);
- wxList& GetViews() { return m_documentViews; }
- const wxList& GetViews() const { return m_documentViews; }
- wxView *GetFirstView() const;
-
- virtual void UpdateAllViews(wxView *sender = (wxView *) NULL, wxObject *hint = (wxObject *) NULL);
- virtual void NotifyClosing();
-
- // Remove all views (because we're closing the document)
- virtual bool DeleteAllViews();
-
- // Other stuff
- virtual wxDocManager *GetDocumentManager() const;
- virtual wxDocTemplate *GetDocumentTemplate() const { return m_documentTemplate; }
- virtual void SetDocumentTemplate(wxDocTemplate *temp) { m_documentTemplate = temp; }
-
- // Get title, or filename if no title, else [unnamed]
- //
- // NB: this method will be deprecated in wxWidgets 3.0, you still need to
- // override it if you need to modify the existing behaviour in this
- // version but use GetUserReadableName() below if you just need to call
- // it
- virtual bool GetPrintableName(wxString& buf) const;
-
-#if wxABI_VERSION >= 20805
- wxString GetUserReadableName() const
- {
- wxString s;
- GetPrintableName(s);
- return s;
- }
-#endif // wxABI 2.8.5+
-
- // Returns a window that can be used as a parent for document-related
- // dialogs. Override if necessary.
- virtual wxWindow *GetDocumentWindow() const;
-
-protected:
- wxList m_documentViews;
- wxString m_documentFile;
- wxString m_documentTitle;
- wxString m_documentTypeName;
- wxDocTemplate* m_documentTemplate;
- bool m_documentModified;
- wxDocument* m_documentParent;
- wxCommandProcessor* m_commandProcessor;
- bool m_savedYet;
-
- // Called by OnSaveDocument and OnOpenDocument to implement standard
- // Save/Load behavior. Re-implement in derived class for custom
- // behavior.
- virtual bool DoSaveDocument(const wxString& file);
- virtual bool DoOpenDocument(const wxString& file);
-
-private:
- DECLARE_ABSTRACT_CLASS(wxDocument)
- DECLARE_NO_COPY_CLASS(wxDocument)
-};
-
-class WXDLLEXPORT wxView: public wxEvtHandler
-{
-public:
- // wxView(wxDocument *doc = (wxDocument *) NULL);
- wxView();
- virtual ~wxView();
-
- wxDocument *GetDocument() const { return m_viewDocument; }
- virtual void SetDocument(wxDocument *doc);
-
- wxString GetViewName() const { return m_viewTypeName; }
- void SetViewName(const wxString& name) { m_viewTypeName = name; }
-
- wxWindow *GetFrame() const { return m_viewFrame ; }
- void SetFrame(wxWindow *frame) { m_viewFrame = frame; }
-
- virtual void OnActivateView(bool activate, wxView *activeView, wxView *deactiveView);
- virtual void OnDraw(wxDC *dc) = 0;
- virtual void OnPrint(wxDC *dc, wxObject *info);
- virtual void OnUpdate(wxView *sender, wxObject *hint = (wxObject *) NULL);
- virtual void OnClosingDocument() {}
- virtual void OnChangeFilename();
-
- // Called by framework if created automatically by the default document
- // manager class: gives view a chance to initialise
- virtual bool OnCreate(wxDocument *WXUNUSED(doc), long WXUNUSED(flags)) { return true; }
-
- // Checks if the view is the last one for the document; if so, asks user
- // to confirm save data (if modified). If ok, deletes itself and returns
- // true.
- virtual bool Close(bool deleteWindow = true);
-
- // Override to do cleanup/veto close
- virtual bool OnClose(bool deleteWindow);
-
- // Extend event processing to search the document's event table
- virtual bool ProcessEvent(wxEvent& event);
-
- // A view's window can call this to notify the view it is (in)active.
- // The function then notifies the document manager.
- virtual void Activate(bool activate);
-
- wxDocManager *GetDocumentManager() const
- { return m_viewDocument->GetDocumentManager(); }
-
-#if wxUSE_PRINTING_ARCHITECTURE
- virtual wxPrintout *OnCreatePrintout();
-#endif
-
-protected:
- wxDocument* m_viewDocument;
- wxString m_viewTypeName;
- wxWindow* m_viewFrame;
-
-private:
- DECLARE_ABSTRACT_CLASS(wxView)
- DECLARE_NO_COPY_CLASS(wxView)
-};
-
-// Represents user interface (and other) properties of documents and views
-class WXDLLEXPORT wxDocTemplate: public wxObject
-{
-
-friend class WXDLLIMPEXP_FWD_CORE wxDocManager;
-
-public:
- // Associate document and view types. They're for identifying what view is
- // associated with what template/document type
- wxDocTemplate(wxDocManager *manager,
- const wxString& descr,
- const wxString& filter,
- const wxString& dir,
- const wxString& ext,
- const wxString& docTypeName,
- const wxString& viewTypeName,
- wxClassInfo *docClassInfo = (wxClassInfo *) NULL,
- wxClassInfo *viewClassInfo = (wxClassInfo *)NULL,
- long flags = wxDEFAULT_TEMPLATE_FLAGS);
-
- virtual ~wxDocTemplate();
-
- // By default, these two member functions dynamically creates document and
- // view using dynamic instance construction. Override these if you need a
- // different method of construction.
- virtual wxDocument *CreateDocument(const wxString& path, long flags = 0);
- virtual wxView *CreateView(wxDocument *doc, long flags = 0);
-
- // Helper method for CreateDocument; also allows you to do your own document
- // creation
- virtual bool InitDocument(wxDocument* doc, const wxString& path, long flags = 0);
-
- wxString GetDefaultExtension() const { return m_defaultExt; }
- wxString GetDescription() const { return m_description; }
- wxString GetDirectory() const { return m_directory; }
- wxDocManager *GetDocumentManager() const { return m_documentManager; }
- void SetDocumentManager(wxDocManager *manager) { m_documentManager = manager; }
- wxString GetFileFilter() const { return m_fileFilter; }
- long GetFlags() const { return m_flags; }
- virtual wxString GetViewName() const { return m_viewTypeName; }
- virtual wxString GetDocumentName() const { return m_docTypeName; }
-
- void SetFileFilter(const wxString& filter) { m_fileFilter = filter; }
- void SetDirectory(const wxString& dir) { m_directory = dir; }
- void SetDescription(const wxString& descr) { m_description = descr; }
- void SetDefaultExtension(const wxString& ext) { m_defaultExt = ext; }
- void SetFlags(long flags) { m_flags = flags; }
-
- bool IsVisible() const { return ((m_flags & wxTEMPLATE_VISIBLE) == wxTEMPLATE_VISIBLE); }
-
- wxClassInfo* GetDocClassInfo() const { return m_docClassInfo; }
- wxClassInfo* GetViewClassInfo() const { return m_viewClassInfo; }
-
- virtual bool FileMatchesTemplate(const wxString& path);
-
-protected:
- long m_flags;
- wxString m_fileFilter;
- wxString m_directory;
- wxString m_description;
- wxString m_defaultExt;
- wxString m_docTypeName;
- wxString m_viewTypeName;
- wxDocManager* m_documentManager;
-
- // For dynamic creation of appropriate instances.
- wxClassInfo* m_docClassInfo;
- wxClassInfo* m_viewClassInfo;
-
- // Called by CreateDocument and CreateView to create the actual document/view object.
- // By default uses the ClassInfo provided to the constructor. Override these functions
- // to provide a different method of creation.
- virtual wxDocument *DoCreateDocument();
- virtual wxView *DoCreateView();
-
-private:
- DECLARE_CLASS(wxDocTemplate)
- DECLARE_NO_COPY_CLASS(wxDocTemplate)
-};
-
-// One object of this class may be created in an application, to manage all
-// the templates and documents.
-class WXDLLEXPORT wxDocManager: public wxEvtHandler
-{
-public:
- wxDocManager(long flags = wxDEFAULT_DOCMAN_FLAGS, bool initialize = true);
- virtual ~wxDocManager();
-
- virtual bool Initialize();
-
- // Handlers for common user commands
- void OnFileClose(wxCommandEvent& event);
- void OnFileCloseAll(wxCommandEvent& event);
- void OnFileNew(wxCommandEvent& event);
- void OnFileOpen(wxCommandEvent& event);
- void OnFileRevert(wxCommandEvent& event);
- void OnFileSave(wxCommandEvent& event);
- void OnFileSaveAs(wxCommandEvent& event);
- void OnPrint(wxCommandEvent& event);
- void OnPreview(wxCommandEvent& event);
- void OnUndo(wxCommandEvent& event);
- void OnRedo(wxCommandEvent& event);
-
- // Handlers for UI update commands
- void OnUpdateFileOpen(wxUpdateUIEvent& event);
- void OnUpdateFileClose(wxUpdateUIEvent& event);
- void OnUpdateFileRevert(wxUpdateUIEvent& event);
- void OnUpdateFileNew(wxUpdateUIEvent& event);
- void OnUpdateFileSave(wxUpdateUIEvent& event);
- void OnUpdateFileSaveAs(wxUpdateUIEvent& event);
- void OnUpdateUndo(wxUpdateUIEvent& event);
- void OnUpdateRedo(wxUpdateUIEvent& event);
-
- void OnUpdatePrint(wxUpdateUIEvent& event);
- void OnUpdatePreview(wxUpdateUIEvent& event);
-
- // Extend event processing to search the view's event table
- virtual bool ProcessEvent(wxEvent& event);
-
- // called when file format detection didn't work, can be overridden to do
- // something in this case
- virtual void OnOpenFileFailure() { }
-
- virtual wxDocument *CreateDocument(const wxString& path, long flags = 0);
- virtual wxView *CreateView(wxDocument *doc, long flags = 0);
- virtual void DeleteTemplate(wxDocTemplate *temp, long flags = 0);
- virtual bool FlushDoc(wxDocument *doc);
- virtual wxDocTemplate *MatchTemplate(const wxString& path);
- virtual wxDocTemplate *SelectDocumentPath(wxDocTemplate **templates,
- int noTemplates, wxString& path, long flags, bool save = false);
- virtual wxDocTemplate *SelectDocumentType(wxDocTemplate **templates,
- int noTemplates, bool sort = false);
- virtual wxDocTemplate *SelectViewType(wxDocTemplate **templates,
- int noTemplates, bool sort = false);
- virtual wxDocTemplate *FindTemplateForPath(const wxString& path);
-
- void AssociateTemplate(wxDocTemplate *temp);
- void DisassociateTemplate(wxDocTemplate *temp);
-
- wxDocument *GetCurrentDocument() const;
-
- void SetMaxDocsOpen(int n) { m_maxDocsOpen = n; }
- int GetMaxDocsOpen() const { return m_maxDocsOpen; }
-
- // Add and remove a document from the manager's list
- void AddDocument(wxDocument *doc);
- void RemoveDocument(wxDocument *doc);
-
- // closes all currently open documents
- bool CloseDocuments(bool force = true);
-
- // closes the specified document
- bool CloseDocument(wxDocument* doc, bool force = false);
-
- // Clear remaining documents and templates
- bool Clear(bool force = true);
-
- // Views or windows should inform the document manager
- // when a view is going in or out of focus
- virtual void ActivateView(wxView *view, bool activate = true);
- virtual wxView *GetCurrentView() const;
-
- wxList& GetDocuments() { return m_docs; }
- wxList& GetTemplates() { return m_templates; }
-
- // Make a default document name
- //
- // NB: this method is renamed to MakeNewDocumentName() in wx 3.0, you still
- // need to override it if your code needs to customize the default name
- // generation but if you just use it from your code, prefer the version
- // below which is forward-compatible with wx 3.0
- virtual bool MakeDefaultName(wxString& buf);
-
-#if wxABI_VERSION >= 20808
- wxString MakeNewDocumentName() const
- {
- wxString s;
- wx_const_cast(wxDocManager *, this)->MakeDefaultName(s);
- return s;
- }
-#endif // wx ABI >= 2.8.8
-
- // Make a frame title (override this to do something different)
- virtual wxString MakeFrameTitle(wxDocument* doc);
-
- virtual wxFileHistory *OnCreateFileHistory();
- virtual wxFileHistory *GetFileHistory() const { return m_fileHistory; }
-
- // File history management
- virtual void AddFileToHistory(const wxString& file);
- virtual void RemoveFileFromHistory(size_t i);
- virtual size_t GetHistoryFilesCount() const;
- virtual wxString GetHistoryFile(size_t i) const;
- virtual void FileHistoryUseMenu(wxMenu *menu);
- virtual void FileHistoryRemoveMenu(wxMenu *menu);
-#if wxUSE_CONFIG
- virtual void FileHistoryLoad(wxConfigBase& config);
- virtual void FileHistorySave(wxConfigBase& config);
-#endif // wxUSE_CONFIG
-
- virtual void FileHistoryAddFilesToMenu();
- virtual void FileHistoryAddFilesToMenu(wxMenu* menu);
-
- wxString GetLastDirectory() const { return m_lastDirectory; }
- void SetLastDirectory(const wxString& dir) { m_lastDirectory = dir; }
-
- // Get the current document manager
- static wxDocManager* GetDocumentManager() { return sm_docManager; }
-
-#if WXWIN_COMPATIBILITY_2_6
- // deprecated, use GetHistoryFilesCount() instead
- wxDEPRECATED( size_t GetNoHistoryFiles() const );
-#endif // WXWIN_COMPATIBILITY_2_6
-
-protected:
- long m_flags;
- int m_defaultDocumentNameCounter;
- int m_maxDocsOpen;
- wxList m_docs;
- wxList m_templates;
- wxView* m_currentView;
- wxFileHistory* m_fileHistory;
- wxString m_lastDirectory;
- static wxDocManager* sm_docManager;
-
- DECLARE_EVENT_TABLE()
- DECLARE_DYNAMIC_CLASS(wxDocManager)
- DECLARE_NO_COPY_CLASS(wxDocManager)
-};
-
-#if WXWIN_COMPATIBILITY_2_6
-inline size_t wxDocManager::GetNoHistoryFiles() const
-{
- return GetHistoryFilesCount();
-}
-#endif // WXWIN_COMPATIBILITY_2_6
-
-// ----------------------------------------------------------------------------
-// A default child frame
-// ----------------------------------------------------------------------------
-
-class WXDLLEXPORT wxDocChildFrame : public wxFrame
-{
-public:
- wxDocChildFrame(wxDocument *doc,
- wxView *view,
- wxFrame *frame,
- wxWindowID id,
- const wxString& title,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize,
- long type = wxDEFAULT_FRAME_STYLE,
- const wxString& name = wxT("frame"));
- virtual ~wxDocChildFrame(){}
-
- // Extend event processing to search the view's event table
- virtual bool ProcessEvent(wxEvent& event);
-
- void OnActivate(wxActivateEvent& event);
- void OnCloseWindow(wxCloseEvent& event);
-
- wxDocument *GetDocument() const { return m_childDocument; }
- wxView *GetView() const { return m_childView; }
- void SetDocument(wxDocument *doc) { m_childDocument = doc; }
- void SetView(wxView *view) { m_childView = view; }
- bool Destroy() { m_childView = (wxView *)NULL; return wxFrame::Destroy(); }
-
-protected:
- wxDocument* m_childDocument;
- wxView* m_childView;
-
-private:
- DECLARE_CLASS(wxDocChildFrame)
- DECLARE_EVENT_TABLE()
- DECLARE_NO_COPY_CLASS(wxDocChildFrame)
-};
-
-// ----------------------------------------------------------------------------
-// A default parent frame
-// ----------------------------------------------------------------------------
-
-class WXDLLEXPORT wxDocParentFrame : public wxFrame
-{
-public:
- wxDocParentFrame();
- wxDocParentFrame(wxDocManager *manager,
- wxFrame *frame,
- wxWindowID id,
- const wxString& title,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize,
- long style = wxDEFAULT_FRAME_STYLE,
- const wxString& name = wxFrameNameStr);
-
- bool Create(wxDocManager *manager,
- wxFrame *frame,
- wxWindowID id,
- const wxString& title,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize,
- long style = wxDEFAULT_FRAME_STYLE,
- const wxString& name = wxFrameNameStr);
-
- // Extend event processing to search the document manager's event table
- virtual bool ProcessEvent(wxEvent& event);
-
- wxDocManager *GetDocumentManager() const { return m_docManager; }
-
- void OnExit(wxCommandEvent& event);
- void OnMRUFile(wxCommandEvent& event);
- void OnCloseWindow(wxCloseEvent& event);
-
-protected:
- wxDocManager *m_docManager;
-
-private:
- typedef wxFrame base_type;
- DECLARE_CLASS(wxDocParentFrame)
- DECLARE_EVENT_TABLE()
- DECLARE_NO_COPY_CLASS(wxDocParentFrame)
-};
-
-// ----------------------------------------------------------------------------
-// Provide simple default printing facilities
-// ----------------------------------------------------------------------------
-
-#if wxUSE_PRINTING_ARCHITECTURE
-class WXDLLEXPORT wxDocPrintout : public wxPrintout
-{
-public:
- wxDocPrintout(wxView *view = (wxView *) NULL, const wxString& title = wxT("Printout"));
- bool OnPrintPage(int page);
- bool HasPage(int page);
- bool OnBeginDocument(int startPage, int endPage);
- void GetPageInfo(int *minPage, int *maxPage, int *selPageFrom, int *selPageTo);
-
- virtual wxView *GetView() { return m_printoutView; }
-
-protected:
- wxView* m_printoutView;
-
-private:
- DECLARE_DYNAMIC_CLASS(wxDocPrintout)
- DECLARE_NO_COPY_CLASS(wxDocPrintout)
-};
-#endif // wxUSE_PRINTING_ARCHITECTURE
-
-// ----------------------------------------------------------------------------
-// File history management
-// ----------------------------------------------------------------------------
-
-class WXDLLEXPORT wxFileHistory : public wxObject
-{
-public:
- wxFileHistory(size_t maxFiles = 9, wxWindowID idBase = wxID_FILE1);
- virtual ~wxFileHistory();
-
- // Operations
- virtual void AddFileToHistory(const wxString& file);
- virtual void RemoveFileFromHistory(size_t i);
- virtual int GetMaxFiles() const { return (int)m_fileMaxFiles; }
- virtual void UseMenu(wxMenu *menu);
-
- // Remove menu from the list (MDI child may be closing)
- virtual void RemoveMenu(wxMenu *menu);
-
-#if wxUSE_CONFIG
- virtual void Load(wxConfigBase& config);
- virtual void Save(wxConfigBase& config);
-#endif // wxUSE_CONFIG
-
- virtual void AddFilesToMenu();
- virtual void AddFilesToMenu(wxMenu* menu); // Single menu
-
- // Accessors
- virtual wxString GetHistoryFile(size_t i) const;
- virtual size_t GetCount() const { return m_fileHistoryN; }
-
- const wxList& GetMenus() const { return m_fileMenus; }
-
-#if wxABI_VERSION >= 20802
- // Set/get base id
- void SetBaseId(wxWindowID baseId) { m_idBase = baseId; }
- wxWindowID GetBaseId() const { return m_idBase; }
-#endif // wxABI 2.8.2+
-
-#if WXWIN_COMPATIBILITY_2_6
- // deprecated, use GetCount() instead
- wxDEPRECATED( size_t GetNoHistoryFiles() const );
-#endif // WXWIN_COMPATIBILITY_2_6
-
-protected:
- // Last n files
- wxChar** m_fileHistory;
- // Number of files saved
- size_t m_fileHistoryN;
- // Menus to maintain (may need several for an MDI app)
- wxList m_fileMenus;
- // Max files to maintain
- size_t m_fileMaxFiles;
-
-private:
- // The ID of the first history menu item (Doesn't have to be wxID_FILE1)
- wxWindowID m_idBase;
-
- DECLARE_DYNAMIC_CLASS(wxFileHistory)
- DECLARE_NO_COPY_CLASS(wxFileHistory)
-};
-
-#if WXWIN_COMPATIBILITY_2_6
-inline size_t wxFileHistory::GetNoHistoryFiles() const
-{
- return m_fileHistoryN;
-}
-#endif // WXWIN_COMPATIBILITY_2_6
-
-#if wxUSE_STD_IOSTREAM
-// For compatibility with existing file formats:
-// converts from/to a stream to/from a temporary file.
-bool WXDLLEXPORT wxTransferFileToStream(const wxString& filename, wxSTD ostream& stream);
-bool WXDLLEXPORT wxTransferStreamToFile(wxSTD istream& stream, const wxString& filename);
-#else
-// For compatibility with existing file formats:
-// converts from/to a stream to/from a temporary file.
-bool WXDLLEXPORT wxTransferFileToStream(const wxString& filename, wxOutputStream& stream);
-bool WXDLLEXPORT wxTransferStreamToFile(wxInputStream& stream, const wxString& filename);
-#endif // wxUSE_STD_IOSTREAM
-
-#endif // wxUSE_DOC_VIEW_ARCHITECTURE
-
-#endif // _WX_DOCH__
diff --git a/Externals/wxWidgets/include/wx/dragimag.h b/Externals/wxWidgets/include/wx/dragimag.h
deleted file mode 100644
index 279cd56837..0000000000
--- a/Externals/wxWidgets/include/wx/dragimag.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-// Name: wx/dragimag.h
-// Purpose: wxDragImage base header
-// Author: Julian Smart
-// Modified by:
-// Created:
-// Copyright: (c) Julian Smart
-// RCS-ID: $Id: dragimag.h 33948 2005-05-04 18:57:50Z JS $
-// Licence: wxWindows Licence
-/////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_DRAGIMAG_H_BASE_
-#define _WX_DRAGIMAG_H_BASE_
-
-#if wxUSE_DRAGIMAGE
-
-class WXDLLEXPORT wxRect;
-class WXDLLEXPORT wxMemoryDC;
-class WXDLLEXPORT wxDC;
-
-#if defined(__WXMSW__)
-# if defined(__WXUNIVERSAL__)
-# include "wx/generic/dragimgg.h"
-# define wxDragImage wxGenericDragImage
-# else
-# include "wx/msw/dragimag.h"
-# endif
-
-#elif defined(__WXMOTIF__)
-# include "wx/generic/dragimgg.h"
-# define wxDragImage wxGenericDragImage
-
-#elif defined(__WXGTK__)
-# include "wx/generic/dragimgg.h"
-# define wxDragImage wxGenericDragImage
-
-#elif defined(__WXX11__)
-# include "wx/generic/dragimgg.h"
-# define wxDragImage wxGenericDragImage
-
-#elif defined(__WXMAC__)
-# include "wx/generic/dragimgg.h"
-# define wxDragImage wxGenericDragImage
-
-#elif defined(__WXPM__)
-# include "wx/generic/dragimgg.h"
-# define wxDragImage wxGenericDragImage
-
-#endif
-
-#endif // wxUSE_DRAGIMAGE
-
-#endif
- // _WX_DRAGIMAG_H_BASE_
diff --git a/Externals/wxWidgets/include/wx/dynarray.h b/Externals/wxWidgets/include/wx/dynarray.h
deleted file mode 100644
index 5dfb8bf269..0000000000
--- a/Externals/wxWidgets/include/wx/dynarray.h
+++ /dev/null
@@ -1,1044 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Name: wx/dynarray.h
-// Purpose: auto-resizable (i.e. dynamic) array support
-// Author: Vadim Zeitlin
-// Modified by:
-// Created: 12.09.97
-// RCS-ID: $Id: dynarray.h 45498 2007-04-16 13:03:05Z VZ $
-// Copyright: (c) 1998 Vadim Zeitlin
-// Licence: wxWindows licence
-///////////////////////////////////////////////////////////////////////////////
-
-#ifndef _DYNARRAY_H
-#define _DYNARRAY_H
-
-#include "wx/defs.h"
-
-#if wxUSE_STL
- #include "wx/beforestd.h"
- #include
- #include
- #include "wx/afterstd.h"
-#endif
-
-/*
- This header defines the dynamic arrays and object arrays (i.e. arrays which
- own their elements). Dynamic means that the arrays grow automatically as
- needed.
-
- These macros are ugly (especially if you look in the sources ;-), but they
- allow us to define "template" classes without actually using templates and so
- this works with all compilers (and may be also much faster to compile even
- with a compiler which does support templates). The arrays defined with these
- macros are type-safe.
-
- Range checking is performed in debug build for both arrays and objarrays but
- not in release build - so using an invalid index will just lead to a crash
- then.
-
- Note about memory usage: arrays never shrink automatically (although you may
- use Shrink() function explicitly), they only grow, so loading 10 millions in
- an array only to delete them 2 lines below might be a bad idea if the array
- object is not going to be destroyed soon. However, as it does free memory
- when destroyed, it is ok if the array is a local variable.
- */
-
-// ----------------------------------------------------------------------------
-// constants
-// ----------------------------------------------------------------------------
-
-/*
- The initial size by which an array grows when an element is added default
- value avoids allocate one or two bytes when the array is created which is
- rather inefficient
-*/
-#define WX_ARRAY_DEFAULT_INITIAL_SIZE (16)
-
-// ----------------------------------------------------------------------------
-// types
-// ----------------------------------------------------------------------------
-
-/*
- Callback compare function for quick sort.
-
- It must return negative value, 0 or positive value if the first item is
- less than, equal to or greater than the second one.
- */
-extern "C"
-{
-typedef int (wxCMPFUNC_CONV *CMPFUNC)(const void* pItem1, const void* pItem2);
-}
-
-// ----------------------------------------------------------------------------
-// Base class managing data having size of type 'long' (not used directly)
-//
-// NB: for efficiency this often used class has no virtual functions (hence no
-// virtual table), even dtor is *not* virtual. If used as expected it
-// won't create any problems because ARRAYs from DEFINE_ARRAY have no dtor
-// at all, so it's not too important if it's not called (this happens when
-// you cast "SomeArray *" as "BaseArray *" and then delete it)
-// ----------------------------------------------------------------------------
-
-#if wxUSE_STL
-
-template
-class WXDLLIMPEXP_BASE wxArray_SortFunction
-{
-public:
- typedef int (wxCMPFUNC_CONV *CMPFUNC)(T* pItem1, T* pItem2);
-
- wxArray_SortFunction(CMPFUNC f) : m_f(f) { }
- bool operator()(const T& i1, const T& i2)
- { return m_f((T*)&i1, (T*)&i2) < 0; }
-private:
- CMPFUNC m_f;
-};
-
-template
-class WXDLLIMPEXP_BASE wxSortedArray_SortFunction
-{
-public:
- typedef F CMPFUNC;
-
- wxSortedArray_SortFunction(CMPFUNC f) : m_f(f) { }
- bool operator()(const T& i1, const T& i2)
- { return m_f(i1, i2) < 0; }
-private:
- CMPFUNC m_f;
-};
-
-#define _WX_DECLARE_BASEARRAY(T, name, classexp) \
- typedef int (wxCMPFUNC_CONV *CMPFUN##name)(T pItem1, T pItem2); \
- typedef wxSortedArray_SortFunction name##_Predicate; \
- _WX_DECLARE_BASEARRAY_2(T, name, name##_Predicate, classexp)
-
-#define _WX_DECLARE_BASEARRAY_2(T, name, predicate, classexp) \
-classexp name : public std::vector \
-{ \
- typedef predicate Predicate; \
- typedef predicate::CMPFUNC SCMPFUNC; \
-public: \
- typedef wxArray_SortFunction::CMPFUNC CMPFUNC; \
-public: \
- void Empty() { clear(); } \
- void Clear() { clear(); } \
- void Alloc(size_t uiSize) { reserve(uiSize); } \
- void Shrink(); \
- \
- size_t GetCount() const { return size(); } \
- void SetCount(size_t n, T v = T()) { resize(n, v); } \
- bool IsEmpty() const { return empty(); } \
- size_t Count() const { return size(); } \
- \
- typedef T base_type; \
- \
-protected: \
- T& Item(size_t uiIndex) const \
- { wxASSERT( uiIndex < size() ); return (T&)operator[](uiIndex); } \
- \
- int Index(T e, bool bFromEnd = false) const; \
- int Index(T lItem, CMPFUNC fnCompare) const; \
- size_t IndexForInsert(T lItem, CMPFUNC fnCompare) const; \
- void Add(T lItem, size_t nInsert = 1) \
- { insert(end(), nInsert, lItem); } \
- size_t Add(T lItem, CMPFUNC fnCompare); \
- void Insert(T lItem, size_t uiIndex, size_t nInsert = 1) \
- { insert(begin() + uiIndex, nInsert, lItem); } \
- void Remove(T lItem); \
- void RemoveAt(size_t uiIndex, size_t nRemove = 1) \
- { erase(begin() + uiIndex, begin() + uiIndex + nRemove); } \
- \
- void Sort(CMPFUNC fCmp) \
- { \
- wxArray_SortFunction p(fCmp); \
- std::sort(begin(), end(), p); \
- } \
-}
-
-#else // if !wxUSE_STL
-
-#define _WX_DECLARE_BASEARRAY(T, name, classexp) \
-classexp name \
-{ \
- typedef CMPFUNC SCMPFUNC; /* for compatibility wuth wxUSE_STL */ \
-public: \
- name(); \
- name(const name& array); \
- name& operator=(const name& src); \
- ~name(); \
- \
- void Empty() { m_nCount = 0; } \
- void Clear(); \
- void Alloc(size_t n) { if ( n > m_nSize ) Realloc(n); } \
- void Shrink(); \
- \
- size_t GetCount() const { return m_nCount; } \
- void SetCount(size_t n, T defval = T()); \
- bool IsEmpty() const { return m_nCount == 0; } \
- size_t Count() const { return m_nCount; } \
- \
- typedef T base_type; \
- \
-protected: \
- T& Item(size_t uiIndex) const \
- { wxASSERT( uiIndex < m_nCount ); return m_pItems[uiIndex]; } \
- T& operator[](size_t uiIndex) const { return Item(uiIndex); } \
- \
- int Index(T lItem, bool bFromEnd = false) const; \
- int Index(T lItem, CMPFUNC fnCompare) const; \
- size_t IndexForInsert(T lItem, CMPFUNC fnCompare) const; \
- void Add(T lItem, size_t nInsert = 1); \
- size_t Add(T lItem, CMPFUNC fnCompare); \
- void Insert(T lItem, size_t uiIndex, size_t nInsert = 1); \
- void Remove(T lItem); \
- void RemoveAt(size_t uiIndex, size_t nRemove = 1); \
- \
- void Sort(CMPFUNC fnCompare); \
- \
- /* *minimal* STL-ish interface, for derived classes */ \
- typedef T value_type; \
- typedef value_type* iterator; \
- typedef const value_type* const_iterator; \
- typedef value_type& reference; \
- typedef const value_type& const_reference; \
- typedef int difference_type; \
- typedef size_t size_type; \
- \
- void assign(const_iterator first, const_iterator last); \
- void assign(size_type n, const_reference v); \
- size_type capacity() const { return m_nSize; } \
- iterator erase(iterator first, iterator last) \
- { \
- size_type idx = first - begin(); \
- RemoveAt(idx, last - first); \
- return begin() + idx; \
- } \
- iterator erase(iterator it) { return erase(it, it + 1); } \
- void insert(iterator it, size_type n, const value_type& v) \
- { Insert(v, it - begin(), n); } \
- iterator insert(iterator it, const value_type& v = value_type()) \
- { \
- size_type idx = it - begin(); \
- Insert(v, idx); \
- return begin() + idx; \
- } \
- void insert(iterator it, const_iterator first, const_iterator last);\
- void pop_back() { RemoveAt(size() - 1); } \
- void push_back(const value_type& v) { Add(v); } \
- void reserve(size_type n) { Alloc(n); } \
- void resize(size_type n, value_type v = value_type()) \
- { SetCount(n, v); } \
- \
- iterator begin() { return m_pItems; } \
- iterator end() { return m_pItems + m_nCount; } \
- const_iterator begin() const { return m_pItems; } \
- const_iterator end() const { return m_pItems + m_nCount; } \
- \
- /* the following functions may be made directly public because */ \
- /* they don't use the type of the elements at all */ \
-public: \
- void clear() { Clear(); } \
- bool empty() const { return IsEmpty(); } \
- size_type max_size() const { return INT_MAX; } \
- size_type size() const { return GetCount(); } \
- \
-private: \
- void Grow(size_t nIncrement = 0); \
- bool Realloc(size_t nSize); \
- \
- size_t m_nSize, \
- m_nCount; \
- \
- T *m_pItems; \
-}
-
-#endif // !wxUSE_STL
-
-// ============================================================================
-// The private helper macros containing the core of the array classes
-// ============================================================================
-
-// Implementation notes:
-//
-// JACS: Salford C++ doesn't like 'var->operator=' syntax, as in:
-// { ((wxBaseArray *)this)->operator=((const wxBaseArray&)src);
-// so using a temporary variable instead.
-//
-// The classes need a (even trivial) ~name() to link under Mac X
-//
-// _WX_ERROR_REMOVE is needed to resolve the name conflict between the wxT()
-// macro and T typedef: we can't use wxT() inside WX_DEFINE_ARRAY!
-
-#define _WX_ERROR_REMOVE wxT("removing inexisting element in wxArray::Remove")
-
-// ----------------------------------------------------------------------------
-// _WX_DEFINE_TYPEARRAY: array for simple types
-// ----------------------------------------------------------------------------
-
-#if wxUSE_STL
-
-#define _WX_DEFINE_TYPEARRAY(T, name, base, classexp) \
-typedef int (CMPFUNC_CONV *CMPFUNC##T)(T *pItem1, T *pItem2); \
-classexp name : public base \
-{ \
-public: \
- T& operator[](size_t uiIndex) const \
- { return (T&)(base::operator[](uiIndex)); } \
- T& Item(size_t uiIndex) const \
- { return (T&)/*const cast*/base::operator[](uiIndex); } \
- T& Last() const \
- { return Item(Count() - 1); } \
- \
- int Index(T e, bool bFromEnd = false) const \
- { return base::Index(e, bFromEnd); } \
- \
- void Add(T lItem, size_t nInsert = 1) \
- { insert(end(), nInsert, lItem); } \
- void Insert(T lItem, size_t uiIndex, size_t nInsert = 1) \
- { insert(begin() + uiIndex, nInsert, lItem); } \
- \
- void RemoveAt(size_t uiIndex, size_t nRemove = 1) \
- { base::RemoveAt(uiIndex, nRemove); } \
- void Remove(T lItem) \
- { int iIndex = Index(lItem); \
- wxCHECK2_MSG( iIndex != wxNOT_FOUND, return, \
- _WX_ERROR_REMOVE); \
- RemoveAt((size_t)iIndex); } \
- \
- void Sort(CMPFUNC##T fCmp) { base::Sort((CMPFUNC)fCmp); } \
-}
-
-#define _WX_DEFINE_TYPEARRAY_PTR(T, name, base, classexp) \
- _WX_DEFINE_TYPEARRAY(T, name, base, classexp)
-
-#else // if !wxUSE_STL
-
-// common declaration used by both _WX_DEFINE_TYPEARRAY and
-// _WX_DEFINE_TYPEARRAY_PTR
-#define _WX_DEFINE_TYPEARRAY_HELPER(T, name, base, classexp, ptrop) \
-wxCOMPILE_TIME_ASSERT2(sizeof(T) <= sizeof(base::base_type), \
- TypeTooBigToBeStoredIn##base, \
- name); \
-typedef int (CMPFUNC_CONV *CMPFUNC##T)(T *pItem1, T *pItem2); \
-classexp name : public base \
-{ \
-public: \
- name() { } \
- ~name() { } \
- \
- name& operator=(const name& src) \
- { base* temp = (base*) this; \
- (*temp) = ((const base&)src); \
- return *this; } \
- \
- T& operator[](size_t uiIndex) const \
- { return (T&)(base::operator[](uiIndex)); } \
- T& Item(size_t uiIndex) const \
- { return (T&)(base::operator[](uiIndex)); } \
- T& Last() const \
- { return (T&)(base::operator[](Count() - 1)); } \
- \
- int Index(T lItem, bool bFromEnd = false) const \
- { return base::Index((base_type)lItem, bFromEnd); } \
- \
- void Add(T lItem, size_t nInsert = 1) \
- { base::Add((base_type)lItem, nInsert); } \
- void Insert(T lItem, size_t uiIndex, size_t nInsert = 1) \
- { base::Insert((base_type)lItem, uiIndex, nInsert) ; } \
- \
- void RemoveAt(size_t uiIndex, size_t nRemove = 1) \
- { base::RemoveAt(uiIndex, nRemove); } \
- void Remove(T lItem) \
- { int iIndex = Index(lItem); \
- wxCHECK2_MSG( iIndex != wxNOT_FOUND, return, \
- _WX_ERROR_REMOVE); \
- base::RemoveAt((size_t)iIndex); } \
- \
- void Sort(CMPFUNC##T fCmp) { base::Sort((CMPFUNC)fCmp); } \
- \
- /* STL-like interface */ \
-private: \
- typedef base::iterator biterator; \
- typedef base::const_iterator bconst_iterator; \
- typedef base::value_type bvalue_type; \
- typedef base::const_reference bconst_reference; \
-public: \
- typedef T value_type; \
- typedef value_type* pointer; \
- typedef const value_type* const_pointer; \
- typedef value_type* iterator; \
- typedef const value_type* const_iterator; \
- typedef value_type& reference; \
- typedef const value_type& const_reference; \
- typedef base::difference_type difference_type; \
- typedef base::size_type size_type; \
- \
- class reverse_iterator \
- { \
- typedef T value_type; \
- typedef value_type& reference; \
- typedef value_type* pointer; \
- typedef reverse_iterator itor; \
- friend inline itor operator+(int o, const itor& it) \
- { return it.m_ptr - o; } \
- friend inline itor operator+(const itor& it, int o) \
- { return it.m_ptr - o; } \
- friend inline itor operator-(const itor& it, int o) \
- { return it.m_ptr + o; } \
- friend inline difference_type operator-(const itor& i1, \
- const itor& i2) \
- { return i1.m_ptr - i2.m_ptr; } \
- \
- public: \
- pointer m_ptr; \
- reverse_iterator() : m_ptr(NULL) { } \
- reverse_iterator(pointer ptr) : m_ptr(ptr) { } \
- reverse_iterator(const itor& it) : m_ptr(it.m_ptr) { } \
- reference operator*() const { return *m_ptr; } \
- ptrop \
- itor& operator++() { --m_ptr; return *this; } \
- const itor operator++(int) \
- { reverse_iterator tmp = *this; --m_ptr; return tmp; } \
- itor& operator--() { ++m_ptr; return *this; } \
- const itor operator--(int) { itor tmp = *this; ++m_ptr; return tmp; }\
- bool operator ==(const itor& it) const { return m_ptr == it.m_ptr; }\
- bool operator !=(const itor& it) const { return m_ptr != it.m_ptr; }\
- }; \
- \
- class const_reverse_iterator \
- { \
- typedef T value_type; \
- typedef const value_type& reference; \
- typedef const value_type* pointer; \
- typedef const_reverse_iterator itor; \
- friend inline itor operator+(int o, const itor& it) \
- { return it.m_ptr - o; } \
- friend inline itor operator+(const itor& it, int o) \
- { return it.m_ptr - o; } \
- friend inline itor operator-(const itor& it, int o) \
- { return it.m_ptr + o; } \
- friend inline difference_type operator-(const itor& i1, \
- const itor& i2) \
- { return i1.m_ptr - i2.m_ptr; } \
- \
- public: \
- pointer m_ptr; \
- const_reverse_iterator() : m_ptr(NULL) { } \
- const_reverse_iterator(pointer ptr) : m_ptr(ptr) { } \
- const_reverse_iterator(const itor& it) : m_ptr(it.m_ptr) { } \
- const_reverse_iterator(const reverse_iterator& it) : m_ptr(it.m_ptr) { }\
- reference operator*() const { return *m_ptr; } \
- ptrop \
- itor& operator++() { --m_ptr; return *this; } \
- const itor operator++(int) \
- { itor tmp = *this; --m_ptr; return tmp; } \
- itor& operator--() { ++m_ptr; return *this; } \
- const itor operator--(int) { itor tmp = *this; ++m_ptr; return tmp; }\
- bool operator ==(const itor& it) const { return m_ptr == it.m_ptr; }\
- bool operator !=(const itor& it) const { return m_ptr != it.m_ptr; }\
- }; \
- \
- name(size_type n, const_reference v) { assign(n, v); } \
- name(const_iterator first, const_iterator last) \
- { assign(first, last); } \
- void assign(const_iterator first, const_iterator last) \
- { base::assign((bconst_iterator)first, (bconst_iterator)last); } \
- void assign(size_type n, const_reference v) \
- { base::assign(n, (bconst_reference)v); } \
- reference back() { return *(end() - 1); } \
- const_reference back() const { return *(end() - 1); } \
- iterator begin() { return (iterator)base::begin(); } \
- const_iterator begin() const { return (const_iterator)base::begin(); }\
- size_type capacity() const { return base::capacity(); } \
- iterator end() { return (iterator)base::end(); } \
- const_iterator end() const { return (const_iterator)base::end(); } \
- iterator erase(iterator first, iterator last) \
- { return (iterator)base::erase((biterator)first, (biterator)last); }\
- iterator erase(iterator it) \
- { return (iterator)base::erase((biterator)it); } \
- reference front() { return *begin(); } \
- const_reference front() const { return *begin(); } \
- void insert(iterator it, size_type n, const_reference v) \
- { base::insert((biterator)it, n, (bconst_reference)v); } \
- iterator insert(iterator it, const_reference v = value_type()) \
- { return (iterator)base::insert((biterator)it, (bconst_reference)v); }\
- void insert(iterator it, const_iterator first, const_iterator last) \
- { base::insert((biterator)it, (bconst_iterator)first, \
- (bconst_iterator)last); } \
- void pop_back() { base::pop_back(); } \
- void push_back(const_reference v) \
- { base::push_back((bconst_reference)v); } \
- reverse_iterator rbegin() { return reverse_iterator(end() - 1); } \
- const_reverse_iterator rbegin() const; \
- reverse_iterator rend() { return reverse_iterator(begin() - 1); } \
- const_reverse_iterator rend() const; \
- void reserve(size_type n) { base::reserve(n); } \
- void resize(size_type n, value_type v = value_type()) \
- { base::resize(n, v); } \
-}
-
-#define _WX_PTROP pointer operator->() const { return m_ptr; }
-#define _WX_PTROP_NONE
-
-#define _WX_DEFINE_TYPEARRAY(T, name, base, classexp) \
- _WX_DEFINE_TYPEARRAY_HELPER(T, name, base, classexp, _WX_PTROP)
-#define _WX_DEFINE_TYPEARRAY_PTR(T, name, base, classexp) \
- _WX_DEFINE_TYPEARRAY_HELPER(T, name, base, classexp, _WX_PTROP_NONE)
-
-#endif // !wxUSE_STL
-
-// ----------------------------------------------------------------------------
-// _WX_DEFINE_SORTED_TYPEARRAY: sorted array for simple data types
-// cannot handle types with size greater than pointer because of sorting
-// ----------------------------------------------------------------------------
-
-#define _WX_DEFINE_SORTED_TYPEARRAY_2(T, name, base, defcomp, classexp, comptype)\
-wxCOMPILE_TIME_ASSERT2(sizeof(T) <= sizeof(base::base_type), \
- TypeTooBigToBeStoredInSorted##base, \
- name); \
-classexp name : public base \
-{ \
- typedef comptype SCMPFUNC; \
-public: \
- name(comptype fn defcomp) { m_fnCompare = fn; } \
- \
- name& operator=(const name& src) \
- { base* temp = (base*) this; \
- (*temp) = ((const base&)src); \
- m_fnCompare = src.m_fnCompare; \
- return *this; } \
- \
- T& operator[](size_t uiIndex) const \
- { return (T&)(base::operator[](uiIndex)); } \
- T& Item(size_t uiIndex) const \
- { return (T&)(base::operator[](uiIndex)); } \
- T& Last() const \
- { return (T&)(base::operator[](size() - 1)); } \
- \
- int Index(T lItem) const \
- { return base::Index(lItem, (CMPFUNC)m_fnCompare); } \
- \
- size_t IndexForInsert(T lItem) const \
- { return base::IndexForInsert(lItem, (CMPFUNC)m_fnCompare); } \
- \
- void AddAt(T item, size_t index) \
- { base::insert(begin() + index, item); } \
- \
- size_t Add(T lItem) \
- { return base::Add(lItem, (CMPFUNC)m_fnCompare); } \
- \
- void RemoveAt(size_t uiIndex, size_t nRemove = 1) \
- { base::erase(begin() + uiIndex, begin() + uiIndex + nRemove); } \
- void Remove(T lItem) \
- { int iIndex = Index(lItem); \
- wxCHECK2_MSG( iIndex != wxNOT_FOUND, return, \
- _WX_ERROR_REMOVE ); \
- base::erase(begin() + iIndex); } \
- \
-private: \
- comptype m_fnCompare; \
-}
-
-
-// ----------------------------------------------------------------------------
-// _WX_DECLARE_OBJARRAY: an array for pointers to type T with owning semantics
-// ----------------------------------------------------------------------------
-
-#define _WX_DECLARE_OBJARRAY(T, name, base, classexp) \
-typedef int (CMPFUNC_CONV *CMPFUNC##T)(T **pItem1, T **pItem2); \
-classexp name : protected base \
-{ \
-typedef int (CMPFUNC_CONV *CMPFUNC##base)(void **pItem1, void **pItem2); \
-typedef base base_array; \
-public: \
- name() { } \
- name(const name& src); \
- name& operator=(const name& src); \
- \
- ~name(); \
- \
- void Alloc(size_t count) { reserve(count); } \
- size_t GetCount() const { return base_array::size(); } \
- size_t size() const { return base_array::size(); } \
- bool IsEmpty() const { return base_array::empty(); } \
- bool empty() const { return base_array::empty(); } \
- size_t Count() const { return base_array::size(); } \
- void Shrink() { base::Shrink(); } \
- \
- T& operator[](size_t uiIndex) const \
- { return *(T*)base::operator[](uiIndex); } \
- T& Item(size_t uiIndex) const \
- { return *(T*)base::operator[](uiIndex); } \
- T& Last() const \
- { return *(T*)(base::operator[](size() - 1)); } \
- \
- int Index(const T& lItem, bool bFromEnd = false) const; \
- \
- void Add(const T& lItem, size_t nInsert = 1); \
- void Add(const T* pItem) \
- { base::push_back((T*)pItem); } \
- void push_back(const T* pItem) \
- { base::push_back((T*)pItem); } \
- void push_back(const T& lItem) \
- { Add(lItem); } \
- \
- void Insert(const T& lItem, size_t uiIndex, size_t nInsert = 1); \
- void Insert(const T* pItem, size_t uiIndex) \
- { base::insert(begin() + uiIndex, (T*)pItem); } \
- \
- void Empty() { DoEmpty(); base::clear(); } \
- void Clear() { DoEmpty(); base::clear(); } \
- \
- T* Detach(size_t uiIndex) \
- { T* p = (T*)base::operator[](uiIndex); \
- base::erase(begin() + uiIndex); return p; } \
- void RemoveAt(size_t uiIndex, size_t nRemove = 1); \
- \
- void Sort(CMPFUNC##T fCmp) { base::Sort((CMPFUNC##base)fCmp); } \
- \
-private: \
- void DoEmpty(); \
- void DoCopy(const name& src); \
-}
-
-// ============================================================================
-// The public macros for declaration and definition of the dynamic arrays
-// ============================================================================
-
-// Please note that for each macro WX_FOO_ARRAY we also have
-// WX_FOO_EXPORTED_ARRAY and WX_FOO_USER_EXPORTED_ARRAY which are exactly the
-// same except that they use an additional __declspec(dllexport) or equivalent
-// under Windows if needed.
-//
-// The first (just EXPORTED) macros do it if wxWidgets was compiled as a DLL
-// and so must be used used inside the library. The second kind (USER_EXPORTED)
-// allow the user code to do it when it wants. This is needed if you have a dll
-// that wants to export a wxArray daubed with your own import/export goo.
-//
-// Finally, you can define the macro below as something special to modify the
-// arrays defined by a simple WX_FOO_ARRAY as well. By default is is empty.
-#define wxARRAY_DEFAULT_EXPORT
-
-// ----------------------------------------------------------------------------
-// WX_DECLARE_BASEARRAY(T, name) declare an array class named "name" containing
-// the elements of type T
-// ----------------------------------------------------------------------------
-
-#define WX_DECLARE_BASEARRAY(T, name) \
- WX_DECLARE_USER_EXPORTED_BASEARRAY(T, name, wxARRAY_DEFAULT_EXPORT)
-
-#define WX_DECLARE_EXPORTED_BASEARRAY(T, name) \
- WX_DECLARE_USER_EXPORTED_BASEARRAY(T, name, WXDLLEXPORT)
-
-#define WX_DECLARE_USER_EXPORTED_BASEARRAY(T, name, expmode) \
- typedef T _wxArray##name; \
- _WX_DECLARE_BASEARRAY(_wxArray##name, name, class expmode)
-
-// ----------------------------------------------------------------------------
-// WX_DEFINE_TYPEARRAY(T, name, base) define an array class named "name" deriving
-// from class "base" containing the elements of type T
-//
-// Note that the class defined has only inline function and doesn't take any
-// space at all so there is no size penalty for defining multiple array classes
-// ----------------------------------------------------------------------------
-
-#define WX_DEFINE_TYPEARRAY(T, name, base) \
- WX_DEFINE_TYPEARRAY_WITH_DECL(T, name, base, class wxARRAY_DEFAULT_EXPORT)
-
-#define WX_DEFINE_TYPEARRAY_PTR(T, name, base) \
- WX_DEFINE_TYPEARRAY_WITH_DECL_PTR(T, name, base, class wxARRAY_DEFAULT_EXPORT)
-
-#define WX_DEFINE_EXPORTED_TYPEARRAY(T, name, base) \
- WX_DEFINE_TYPEARRAY_WITH_DECL(T, name, base, class WXDLLEXPORT)
-
-#define WX_DEFINE_EXPORTED_TYPEARRAY_PTR(T, name, base) \
- WX_DEFINE_TYPEARRAY_WITH_DECL_PTR(T, name, base, class WXDLLEXPORT)
-
-#define WX_DEFINE_USER_EXPORTED_TYPEARRAY(T, name, base, expdecl) \
- WX_DEFINE_TYPEARRAY_WITH_DECL(T, name, base, class expdecl)
-
-#define WX_DEFINE_USER_EXPORTED_TYPEARRAY_PTR(T, name, base, expdecl) \
- WX_DEFINE_TYPEARRAY_WITH_DECL_PTR(T, name, base, class expdecl)
-
-#define WX_DEFINE_TYPEARRAY_WITH_DECL(T, name, base, classdecl) \
- typedef T _wxArray##name; \
- _WX_DEFINE_TYPEARRAY(_wxArray##name, name, base, classdecl)
-
-#define WX_DEFINE_TYPEARRAY_WITH_DECL_PTR(T, name, base, classdecl) \
- typedef T _wxArray##name; \
- _WX_DEFINE_TYPEARRAY_PTR(_wxArray##name, name, base, classdecl)
-
-// ----------------------------------------------------------------------------
-// WX_DEFINE_SORTED_TYPEARRAY: this is the same as the previous macro, but it
-// defines a sorted array.
-//
-// Differences:
-// 1) it must be given a COMPARE function in ctor which takes 2 items of type
-// T* and should return -1, 0 or +1 if the first one is less/greater
-// than/equal to the second one.
-// 2) the Add() method inserts the item in such was that the array is always
-// sorted (it uses the COMPARE function)
-// 3) it has no Sort() method because it's always sorted
-// 4) Index() method is much faster (the sorted arrays use binary search
-// instead of linear one), but Add() is slower.
-// 5) there is no Insert() method because you can't insert an item into the
-// given position in a sorted array but there is IndexForInsert()/AddAt()
-// pair which may be used to optimize a common operation of "insert only if
-// not found"
-//
-// Note that you have to specify the comparison function when creating the
-// objects of this array type. If, as in 99% of cases, the comparison function
-// is the same for all objects of a class, WX_DEFINE_SORTED_TYPEARRAY_CMP below
-// is more convenient.
-//
-// Summary: use this class when the speed of Index() function is important, use
-// the normal arrays otherwise.
-// ----------------------------------------------------------------------------
-
-// we need a macro which expands to nothing to pass correct number of
-// parameters to a nested macro invocation even when we don't have anything to
-// pass it
-#define wxARRAY_EMPTY
-
-#define WX_DEFINE_SORTED_TYPEARRAY(T, name, base) \
- WX_DEFINE_SORTED_USER_EXPORTED_TYPEARRAY(T, name, base, \
- wxARRAY_DEFAULT_EXPORT)
-
-#define WX_DEFINE_SORTED_EXPORTED_TYPEARRAY(T, name, base) \
- WX_DEFINE_SORTED_USER_EXPORTED_TYPEARRAY(T, name, base, WXDLLEXPORT)
-
-#define WX_DEFINE_SORTED_USER_EXPORTED_TYPEARRAY(T, name, base, expmode) \
- typedef T _wxArray##name; \
- typedef int (CMPFUNC_CONV *SCMPFUNC##name)(T pItem1, T pItem2); \
- _WX_DEFINE_SORTED_TYPEARRAY_2(_wxArray##name, name, base, \
- wxARRAY_EMPTY, class expmode, SCMPFUNC##name)
-
-// ----------------------------------------------------------------------------
-// WX_DEFINE_SORTED_TYPEARRAY_CMP: exactly the same as above but the comparison
-// function is provided by this macro and the objects of this class have a
-// default constructor which just uses it.
-//
-// The arguments are: the element type, the comparison function and the array
-// name
-//
-// NB: this is, of course, how WX_DEFINE_SORTED_TYPEARRAY() should have worked
-// from the very beginning - unfortunately I didn't think about this earlier
-// ----------------------------------------------------------------------------
-
-#define WX_DEFINE_SORTED_TYPEARRAY_CMP(T, cmpfunc, name, base) \
- WX_DEFINE_SORTED_USER_EXPORTED_TYPEARRAY_CMP(T, cmpfunc, name, base, \
- wxARRAY_DEFAULT_EXPORT)
-
-#define WX_DEFINE_SORTED_EXPORTED_TYPEARRAY_CMP(T, cmpfunc, name, base) \
- WX_DEFINE_SORTED_USER_EXPORTED_TYPEARRAY_CMP(T, cmpfunc, name, base, \
- WXDLLEXPORT)
-
-#define WX_DEFINE_SORTED_USER_EXPORTED_TYPEARRAY_CMP(T, cmpfunc, name, base, \
- expmode) \
- typedef T _wxArray##name; \
- typedef int (CMPFUNC_CONV *SCMPFUNC##name)(T pItem1, T pItem2); \
- _WX_DEFINE_SORTED_TYPEARRAY_2(_wxArray##name, name, base, = cmpfunc, \
- class expmode, SCMPFUNC##name)
-
-// ----------------------------------------------------------------------------
-// WX_DECLARE_OBJARRAY(T, name): this macro generates a new array class
-// named "name" which owns the objects of type T it contains, i.e. it will
-// delete them when it is destroyed.
-//
-// An element is of type T*, but arguments of type T& are taken (see below!)
-// and T& is returned.
-//
-// Don't use this for simple types such as "int" or "long"!
-//
-// Note on Add/Insert functions:
-// 1) function(T*) gives the object to the array, i.e. it will delete the
-// object when it's removed or in the array's dtor
-// 2) function(T&) will create a copy of the object and work with it
-//
-// Also:
-// 1) Remove() will delete the object after removing it from the array
-// 2) Detach() just removes the object from the array (returning pointer to it)
-//
-// NB1: Base type T should have an accessible copy ctor if Add(T&) is used
-// NB2: Never ever cast a array to it's base type: as dtor is not virtual
-// and so you risk having at least the memory leaks and probably worse
-//
-// Some functions of this class are not inline, so it takes some space to
-// define new class from this template even if you don't use it - which is not
-// the case for the simple (non-object) array classes
-//
-// To use an objarray class you must
-// #include "dynarray.h"
-// WX_DECLARE_OBJARRAY(element_type, list_class_name)
-// #include "arrimpl.cpp"
-// WX_DEFINE_OBJARRAY(list_class_name) // name must be the same as above!
-//
-// This is necessary because at the moment of DEFINE_OBJARRAY class parsing the
-// element_type must be fully defined (i.e. forward declaration is not
-// enough), while WX_DECLARE_OBJARRAY may be done anywhere. The separation of
-// two allows to break cicrcular dependencies with classes which have member
-// variables of objarray type.
-// ----------------------------------------------------------------------------
-
-#define WX_DECLARE_OBJARRAY(T, name) \
- WX_DECLARE_USER_EXPORTED_OBJARRAY(T, name, wxARRAY_DEFAULT_EXPORT)
-
-#define WX_DECLARE_EXPORTED_OBJARRAY(T, name) \
- WX_DECLARE_USER_EXPORTED_OBJARRAY(T, name, WXDLLEXPORT)
-
-#define WX_DECLARE_OBJARRAY_WITH_DECL(T, name, decl) \
- typedef T _wxObjArray##name; \
- _WX_DECLARE_OBJARRAY(_wxObjArray##name, name, wxArrayPtrVoid, decl)
-
-#define WX_DECLARE_USER_EXPORTED_OBJARRAY(T, name, expmode) \
- WX_DECLARE_OBJARRAY_WITH_DECL(T, name, class expmode)
-
-// WX_DEFINE_OBJARRAY is going to be redefined when arrimpl.cpp is included,
-// try to provoke a human-understandable error if it used incorrectly.
-//
-// there is no real need for 3 different macros in the DEFINE case but do it
-// anyhow for consistency
-#define WX_DEFINE_OBJARRAY(name) DidYouIncludeArrimplCpp
-#define WX_DEFINE_EXPORTED_OBJARRAY(name) WX_DEFINE_OBJARRAY(name)
-#define WX_DEFINE_USER_EXPORTED_OBJARRAY(name) WX_DEFINE_OBJARRAY(name)
-
-// ----------------------------------------------------------------------------
-// Some commonly used predefined base arrays
-// ----------------------------------------------------------------------------
-
-WX_DECLARE_USER_EXPORTED_BASEARRAY(const void *, wxBaseArrayPtrVoid,
- WXDLLIMPEXP_BASE);
-WX_DECLARE_USER_EXPORTED_BASEARRAY(char, wxBaseArrayChar, WXDLLIMPEXP_BASE);
-WX_DECLARE_USER_EXPORTED_BASEARRAY(short, wxBaseArrayShort, WXDLLIMPEXP_BASE);
-WX_DECLARE_USER_EXPORTED_BASEARRAY(int, wxBaseArrayInt, WXDLLIMPEXP_BASE);
-WX_DECLARE_USER_EXPORTED_BASEARRAY(long, wxBaseArrayLong, WXDLLIMPEXP_BASE);
-WX_DECLARE_USER_EXPORTED_BASEARRAY(size_t, wxBaseArraySizeT, WXDLLIMPEXP_BASE);
-WX_DECLARE_USER_EXPORTED_BASEARRAY(double, wxBaseArrayDouble, WXDLLIMPEXP_BASE);
-
-// ----------------------------------------------------------------------------
-// Convenience macros to define arrays from base arrays
-// ----------------------------------------------------------------------------
-
-#define WX_DEFINE_ARRAY(T, name) \
- WX_DEFINE_TYPEARRAY(T, name, wxBaseArrayPtrVoid)
-#define WX_DEFINE_ARRAY_PTR(T, name) \
- WX_DEFINE_TYPEARRAY_PTR(T, name, wxBaseArrayPtrVoid)
-#define WX_DEFINE_EXPORTED_ARRAY(T, name) \
- WX_DEFINE_EXPORTED_TYPEARRAY(T, name, wxBaseArrayPtrVoid)
-#define WX_DEFINE_EXPORTED_ARRAY_PTR(T, name) \
- WX_DEFINE_EXPORTED_TYPEARRAY_PTR(T, name, wxBaseArrayPtrVoid)
-#define WX_DEFINE_ARRAY_WITH_DECL_PTR(T, name, decl) \
- WX_DEFINE_TYPEARRAY_WITH_DECL_PTR(T, name, wxBaseArrayPtrVoid, decl)
-#define WX_DEFINE_USER_EXPORTED_ARRAY(T, name, expmode) \
- WX_DEFINE_TYPEARRAY_WITH_DECL(T, name, wxBaseArrayPtrVoid, wxARRAY_EMPTY expmode)
-#define WX_DEFINE_USER_EXPORTED_ARRAY_PTR(T, name, expmode) \
- WX_DEFINE_TYPEARRAY_WITH_DECL_PTR(T, name, wxBaseArrayPtrVoid, wxARRAY_EMPTY expmode)
-
-#define WX_DEFINE_ARRAY_CHAR(T, name) \
- WX_DEFINE_TYPEARRAY_PTR(T, name, wxBaseArrayChar)
-#define WX_DEFINE_EXPORTED_ARRAY_CHAR(T, name) \
- WX_DEFINE_EXPORTED_TYPEARRAY_PTR(T, name, wxBaseArrayChar)
-#define WX_DEFINE_USER_EXPORTED_ARRAY_CHAR(T, name, expmode) \
- WX_DEFINE_TYPEARRAY_WITH_DECL_PTR(T, name, wxBaseArrayChar, wxARRAY_EMPTY expmode)
-
-#define WX_DEFINE_ARRAY_SHORT(T, name) \
- WX_DEFINE_TYPEARRAY_PTR(T, name, wxBaseArrayShort)
-#define WX_DEFINE_EXPORTED_ARRAY_SHORT(T, name) \
- WX_DEFINE_EXPORTED_TYPEARRAY_PTR(T, name, wxBaseArrayShort)
-#define WX_DEFINE_USER_EXPORTED_ARRAY_SHORT(T, name, expmode) \
- WX_DEFINE_TYPEARRAY_WITH_DECL_PTR(T, name, wxBaseArrayShort, wxARRAY_EMPTY expmode)
-
-#define WX_DEFINE_ARRAY_INT(T, name) \
- WX_DEFINE_TYPEARRAY_PTR(T, name, wxBaseArrayInt)
-#define WX_DEFINE_EXPORTED_ARRAY_INT(T, name) \
- WX_DEFINE_EXPORTED_TYPEARRAY_PTR(T, name, wxBaseArrayInt)
-#define WX_DEFINE_USER_EXPORTED_ARRAY_INT(T, name, expmode) \
- WX_DEFINE_TYPEARRAY_WITH_DECL_PTR(T, name, wxBaseArrayInt, wxARRAY_EMPTY expmode)
-
-#define WX_DEFINE_ARRAY_LONG(T, name) \
- WX_DEFINE_TYPEARRAY_PTR(T, name, wxBaseArrayLong)
-#define WX_DEFINE_EXPORTED_ARRAY_LONG(T, name) \
- WX_DEFINE_EXPORTED_TYPEARRAY_PTR(T, name, wxBaseArrayLong)
-#define WX_DEFINE_USER_EXPORTED_ARRAY_LONG(T, name, expmode) \
- WX_DEFINE_TYPEARRAY_WITH_DECL_PTR(T, name, wxBaseArrayLong, wxARRAY_EMPTY expmode)
-
-#define WX_DEFINE_ARRAY_SIZE_T(T, name) \
- WX_DEFINE_TYPEARRAY_PTR(T, name, wxBaseArraySizeT)
-#define WX_DEFINE_EXPORTED_ARRAY_SIZE_T(T, name) \
- WX_DEFINE_EXPORTED_TYPEARRAY_PTR(T, name, wxBaseArraySizeT)
-#define WX_DEFINE_USER_EXPORTED_ARRAY_SIZE_T(T, name, expmode) \
- WX_DEFINE_TYPEARRAY_WITH_DECL_PTR(T, name, wxBaseArraySizeT, wxARRAY_EMPTY expmode)
-
-#define WX_DEFINE_ARRAY_DOUBLE(T, name) \
- WX_DEFINE_TYPEARRAY_PTR(T, name, wxBaseArrayDouble)
-#define WX_DEFINE_EXPORTED_ARRAY_DOUBLE(T, name) \
- WX_DEFINE_EXPORTED_TYPEARRAY_PTR(T, name, wxBaseArrayDouble)
-#define WX_DEFINE_USER_EXPORTED_ARRAY_DOUBLE(T, name, expmode) \
- WX_DEFINE_TYPEARRAY_WITH_DECL_PTR(T, name, wxBaseArrayDouble, wxARRAY_EMPTY expmode)
-
-// ----------------------------------------------------------------------------
-// Convenience macros to define sorted arrays from base arrays
-// ----------------------------------------------------------------------------
-
-#define WX_DEFINE_SORTED_ARRAY(T, name) \
- WX_DEFINE_SORTED_TYPEARRAY(T, name, wxBaseArrayPtrVoid)
-#define WX_DEFINE_SORTED_EXPORTED_ARRAY(T, name) \
- WX_DEFINE_SORTED_EXPORTED_TYPEARRAY(T, name, wxBaseArrayPtrVoid)
-#define WX_DEFINE_SORTED_USER_EXPORTED_ARRAY(T, name, expmode) \
- WX_DEFINE_SORTED_USER_EXPORTED_TYPEARRAY(T, name, wxBaseArrayPtrVoid, wxARRAY_EMPTY expmode)
-
-#define WX_DEFINE_SORTED_ARRAY_CHAR(T, name) \
- WX_DEFINE_SORTED_TYPEARRAY(T, name, wxBaseArrayChar)
-#define WX_DEFINE_SORTED_EXPORTED_ARRAY_CHAR(T, name) \
- WX_DEFINE_SORTED_EXPORTED_TYPEARRAY(T, name, wxBaseArrayChar)
-#define WX_DEFINE_SORTED_USER_EXPORTED_ARRAY_CHAR(T, name, expmode) \
- WX_DEFINE_SORTED_USER_EXPORTED_TYPEARRAY(T, name, wxBaseArrayChar, wxARRAY_EMPTY expmode)
-
-#define WX_DEFINE_SORTED_ARRAY_SHORT(T, name) \
- WX_DEFINE_SORTED_TYPEARRAY(T, name, wxBaseArrayShort)
-#define WX_DEFINE_SORTED_EXPORTED_ARRAY_SHORT(T, name) \
- WX_DEFINE_SORTED_EXPORTED_TYPEARRAY(T, name, wxBaseArrayShort)
-#define WX_DEFINE_SORTED_USER_EXPORTED_ARRAY_SHORT(T, name, expmode) \
- WX_DEFINE_SORTED_USER_EXPORTED_TYPEARRAY(T, name, wxBaseArrayShort, wxARRAY_EMPTY expmode)
-
-#define WX_DEFINE_SORTED_ARRAY_INT(T, name) \
- WX_DEFINE_SORTED_TYPEARRAY(T, name, wxBaseArrayInt)
-#define WX_DEFINE_SORTED_EXPORTED_ARRAY_INT(T, name) \
- WX_DEFINE_SORTED_EXPORTED_TYPEARRAY(T, name, wxBaseArrayInt)
-#define WX_DEFINE_SORTED_USER_EXPORTED_ARRAY_INT(T, name, expmode) \
- WX_DEFINE_SORTED_USER_EXPORTED_TYPEARRAY(T, name, wxBaseArrayInt, expmode)
-
-#define WX_DEFINE_SORTED_ARRAY_LONG(T, name) \
- WX_DEFINE_SORTED_TYPEARRAY(T, name, wxBaseArrayLong)
-#define WX_DEFINE_SORTED_EXPORTED_ARRAY_LONG(T, name) \
- WX_DEFINE_SORTED_EXPORTED_TYPEARRAY(T, name, wxBaseArrayLong)
-#define WX_DEFINE_SORTED_USER_EXPORTED_ARRAY_LONG(T, name, expmode) \
- WX_DEFINE_SORTED_USER_EXPORTED_TYPEARRAY(T, name, wxBaseArrayLong, expmode)
-
-#define WX_DEFINE_SORTED_ARRAY_SIZE_T(T, name) \
- WX_DEFINE_SORTED_TYPEARRAY(T, name, wxBaseArraySizeT)
-#define WX_DEFINE_SORTED_EXPORTED_ARRAY_SIZE_T(T, name) \
- WX_DEFINE_SORTED_EXPORTED_TYPEARRAY(T, name, wxBaseArraySizeT)
-#define WX_DEFINE_SORTED_USER_EXPORTED_ARRAY_SIZE_T(T, name, expmode) \
- WX_DEFINE_SORTED_USER_EXPORTED_TYPEARRAY(T, name, wxBaseArraySizeT, wxARRAY_EMPTY expmode)
-
-// ----------------------------------------------------------------------------
-// Convenience macros to define sorted arrays from base arrays
-// ----------------------------------------------------------------------------
-
-#define WX_DEFINE_SORTED_ARRAY_CMP(T, cmpfunc, name) \
- WX_DEFINE_SORTED_TYPEARRAY_CMP(T, cmpfunc, name, wxBaseArrayPtrVoid)
-#define WX_DEFINE_SORTED_EXPORTED_ARRAY_CMP(T, cmpfunc, name) \
- WX_DEFINE_SORTED_EXPORTED_TYPEARRAY_CMP(T, cmpfunc, name, wxBaseArrayPtrVoid)
-#define WX_DEFINE_SORTED_USER_EXPORTED_ARRAY_CMP(T, cmpfunc, \
- name, expmode) \
- WX_DEFINE_SORTED_USER_EXPORTED_TYPEARRAY_CMP(T, cmpfunc, name, \
- wxBaseArrayPtrVoid, \
- wxARRAY_EMPTY expmode)
-
-#define WX_DEFINE_SORTED_ARRAY_CMP_CHAR(T, cmpfunc, name) \
- WX_DEFINE_SORTED_TYPEARRAY_CMP(T, cmpfunc, name, wxBaseArrayChar)
-#define WX_DEFINE_SORTED_EXPORTED_ARRAY_CMP_CHAR(T, cmpfunc, name) \
- WX_DEFINE_SORTED_EXPORTED_TYPEARRAY_CMP(T, cmpfunc, name, wxBaseArrayChar)
-#define WX_DEFINE_SORTED_USER_EXPORTED_ARRAY_CMP_CHAR(T, cmpfunc, \
- name, expmode) \
- WX_DEFINE_SORTED_USER_EXPORTED_TYPEARRAY_CMP(T, cmpfunc, name, \
- wxBaseArrayChar, \
- wxARRAY_EMPTY expmode)
-
-#define WX_DEFINE_SORTED_ARRAY_CMP_SHORT(T, cmpfunc, name) \
- WX_DEFINE_SORTED_TYPEARRAY_CMP(T, cmpfunc, name, wxBaseArrayShort)
-#define WX_DEFINE_SORTED_EXPORTED_ARRAY_CMP_SHORT(T, cmpfunc, name) \
- WX_DEFINE_SORTED_EXPORTED_TYPEARRAY_CMP(T, cmpfunc, name, wxBaseArrayShort)
-#define WX_DEFINE_SORTED_USER_EXPORTED_ARRAY_CMP_SHORT(T, cmpfunc, \
- name, expmode) \
- WX_DEFINE_SORTED_USER_EXPORTED_TYPEARRAY_CMP(T, cmpfunc, name, \
- wxBaseArrayShort, \
- wxARRAY_EMPTY expmode)
-
-#define WX_DEFINE_SORTED_ARRAY_CMP_INT(T, cmpfunc, name) \
- WX_DEFINE_SORTED_TYPEARRAY_CMP(T, cmpfunc, name, wxBaseArrayInt)
-#define WX_DEFINE_SORTED_EXPORTED_ARRAY_CMP_INT(T, cmpfunc, name) \
- WX_DEFINE_SORTED_EXPORTED_TYPEARRAY_CMP(T, cmpfunc, name, wxBaseArrayInt)
-#define WX_DEFINE_SORTED_USER_EXPORTED_ARRAY_CMP_INT(T, cmpfunc, \
- name, expmode) \
- WX_DEFINE_SORTED_USER_EXPORTED_TYPEARRAY_CMP(T, cmpfunc, name, \
- wxBaseArrayInt, \
- wxARRAY_EMPTY expmode)
-
-#define WX_DEFINE_SORTED_ARRAY_CMP_LONG(T, cmpfunc, name) \
- WX_DEFINE_SORTED_TYPEARRAY_CMP(T, cmpfunc, name, wxBaseArrayLong)
-#define WX_DEFINE_SORTED_EXPORTED_ARRAY_CMP_LONG(T, cmpfunc, name) \
- WX_DEFINE_SORTED_EXPORTED_TYPEARRAY_CMP(T, cmpfunc, name, wxBaseArrayLong)
-#define WX_DEFINE_SORTED_USER_EXPORTED_ARRAY_CMP_LONG(T, cmpfunc, \
- name, expmode) \
- WX_DEFINE_SORTED_USER_EXPORTED_TYPEARRAY_CMP(T, cmpfunc, name, \
- wxBaseArrayLong, \
- wxARRAY_EMPTY expmode)
-
-#define WX_DEFINE_SORTED_ARRAY_CMP_SIZE_T(T, cmpfunc, name) \
- WX_DEFINE_SORTED_TYPEARRAY_CMP(T, cmpfunc, name, wxBaseArraySizeT)
-#define WX_DEFINE_SORTED_EXPORTED_ARRAY_CMP_SIZE_T(T, cmpfunc, name) \
- WX_DEFINE_SORTED_EXPORTED_TYPEARRAY_CMP(T, cmpfunc, name, wxBaseArraySizeT)
-#define WX_DEFINE_SORTED_USER_EXPORTED_ARRAY_CMP_SIZE_T(T, cmpfunc, \
- name, expmode) \
- WX_DEFINE_SORTED_USER_EXPORTED_TYPEARRAY_CMP(T, cmpfunc, name, \
- wxBaseArraySizeT, \
- wxARRAY_EMPTY expmode)
-
-// ----------------------------------------------------------------------------
-// Some commonly used predefined arrays
-// ----------------------------------------------------------------------------
-
-WX_DEFINE_USER_EXPORTED_ARRAY_SHORT(short, wxArrayShort, class WXDLLIMPEXP_BASE);
-WX_DEFINE_USER_EXPORTED_ARRAY_INT(int, wxArrayInt, class WXDLLIMPEXP_BASE);
-WX_DEFINE_USER_EXPORTED_ARRAY_DOUBLE(double, wxArrayDouble, class WXDLLIMPEXP_BASE);
-WX_DEFINE_USER_EXPORTED_ARRAY_LONG(long, wxArrayLong, class WXDLLIMPEXP_BASE);
-WX_DEFINE_USER_EXPORTED_ARRAY_PTR(void *, wxArrayPtrVoid, class WXDLLIMPEXP_BASE);
-
-// -----------------------------------------------------------------------------
-// convenience macros
-// -----------------------------------------------------------------------------
-
-// prepend all element of one array to another one; e.g. if first array contains
-// elements X,Y,Z and the second contains A,B,C (in those orders), then the
-// first array will be result as A,B,C,X,Y,Z
-#define WX_PREPEND_ARRAY(array, other) \
- { \
- size_t wxAAcnt = (other).size(); \
- (array).Alloc(wxAAcnt); \
- for ( size_t wxAAn = 0; wxAAn < wxAAcnt; wxAAn++ ) \
- { \
- (array).Insert((other)[wxAAn], wxAAn); \
- } \
- }
-
-// append all element of one array to another one
-#define WX_APPEND_ARRAY(array, other) \
- { \
- size_t wxAAcnt = (other).size(); \
- (array).Alloc(wxAAcnt); \
- for ( size_t wxAAn = 0; wxAAn < wxAAcnt; wxAAn++ ) \
- { \
- (array).push_back((other)[wxAAn]); \
- } \
- }
-
-// delete all array elements
-//
-// NB: the class declaration of the array elements must be visible from the
-// place where you use this macro, otherwise the proper destructor may not
-// be called (a decent compiler should give a warning about it, but don't
-// count on it)!
-#define WX_CLEAR_ARRAY(array) \
- { \
- size_t wxAAcnt = (array).size(); \
- for ( size_t wxAAn = 0; wxAAn < wxAAcnt; wxAAn++ ) \
- { \
- delete (array)[wxAAn]; \
- } \
- \
- (array).clear(); \
- }
-
-#endif // _DYNARRAY_H
diff --git a/Externals/wxWidgets/include/wx/dynlib.h b/Externals/wxWidgets/include/wx/dynlib.h
deleted file mode 100644
index 3552bdcaaf..0000000000
--- a/Externals/wxWidgets/include/wx/dynlib.h
+++ /dev/null
@@ -1,359 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-// Name: wx/dynlib.h
-// Purpose: Dynamic library loading classes
-// Author: Guilhem Lavaux, Vadim Zeitlin, Vaclav Slavik
-// Modified by:
-// Created: 20/07/98
-// RCS-ID: $Id: dynlib.h 58750 2009-02-08 10:01:03Z VZ $
-// Copyright: (c) 1998 Guilhem Lavaux
-// Licence: wxWindows licence
-/////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_DYNLIB_H__
-#define _WX_DYNLIB_H__
-
-#include "wx/defs.h"
-
-#if wxUSE_DYNLIB_CLASS
-
-#include "wx/string.h"
-#include "wx/dynarray.h"
-
-#if defined(__OS2__) || defined(__EMX__)
-#include "wx/os2/private.h"
-#endif
-
-#ifdef __WXMSW__
-#include "wx/msw/private.h"
-#endif
-
-// note that we have our own dlerror() implementation under Darwin
-#if (defined(HAVE_DLERROR) && !defined(__EMX__)) || defined(__DARWIN__)
- #define wxHAVE_DYNLIB_ERROR
-#endif
-
-class WXDLLIMPEXP_FWD_BASE wxDynamicLibraryDetailsCreator;
-
-// ----------------------------------------------------------------------------
-// conditional compilation
-// ----------------------------------------------------------------------------
-
-// Note: __OS2__/EMX has to be tested first, since we want to use
-// native version, even if configure detected presence of DLOPEN.
-#if defined(__OS2__) || defined(__EMX__) || defined(__WINDOWS__)
- typedef HMODULE wxDllType;
-#elif defined(__DARWIN__)
- // Don't include dlfcn.h on Darwin, we may be using our own replacements.
- typedef void *wxDllType;
-#elif defined(HAVE_DLOPEN)
- #include
- typedef void *wxDllType;
-#elif defined(HAVE_SHL_LOAD)
- #include
- typedef shl_t wxDllType;
-#elif defined(__WXMAC__)
- #include
- typedef CFragConnectionID wxDllType;
-#else
- #error "Dynamic Loading classes can't be compiled on this platform, sorry."
-#endif
-
-// ----------------------------------------------------------------------------
-// constants
-// ----------------------------------------------------------------------------
-
-enum wxDLFlags
-{
- wxDL_LAZY = 0x00000001, // resolve undefined symbols at first use
- // (only works on some Unix versions)
- wxDL_NOW = 0x00000002, // resolve undefined symbols on load
- // (default, always the case under Win32)
- wxDL_GLOBAL = 0x00000004, // export extern symbols to subsequently
- // loaded libs.
- wxDL_VERBATIM = 0x00000008, // attempt to load the supplied library
- // name without appending the usual dll
- // filename extension.
- wxDL_NOSHARE = 0x00000010, // load new DLL, don't reuse already loaded
- // (only for wxPluginManager)
-
- wxDL_QUIET = 0x00000020, // don't log an error if failed to load
-
-#if wxABI_VERSION >= 20810
- // this flag is dangerous, for internal use of wxMSW only, don't use at all
- // and especially don't use directly, use wxLoadedDLL instead if you really
- // do need it
- wxDL_GET_LOADED = 0x00000040, // Win32 only: return handle of already
- // loaded DLL or NULL otherwise; Unload()
- // should not be called so don't forget to
- // Detach() if you use this function
-#endif // wx 2.8.10+
-
- wxDL_DEFAULT = wxDL_NOW // default flags correspond to Win32
-};
-
-enum wxDynamicLibraryCategory
-{
- wxDL_LIBRARY, // standard library
- wxDL_MODULE // loadable module/plugin
-};
-
-enum wxPluginCategory
-{
- wxDL_PLUGIN_GUI, // plugin that uses GUI classes
- wxDL_PLUGIN_BASE // wxBase-only plugin
-};
-
-// ----------------------------------------------------------------------------
-// macros
-// ----------------------------------------------------------------------------
-
-// when loading a function from a DLL you always have to cast the returned
-// "void *" pointer to the correct type and, even more annoyingly, you have to
-// repeat this type twice if you want to declare and define a function pointer
-// all in one line
-//
-// this macro makes this slightly less painful by allowing you to specify the
-// type only once, as the first parameter, and creating a variable of this type
-// called "pfn" initialized with the "name" from the "dynlib"
-#define wxDYNLIB_FUNCTION(type, name, dynlib) \
- type pfn ## name = (type)(dynlib).GetSymbol(_T(#name))
-
-// ----------------------------------------------------------------------------
-// wxDynamicLibraryDetails: contains details about a loaded wxDynamicLibrary
-// ----------------------------------------------------------------------------
-
-class WXDLLIMPEXP_BASE wxDynamicLibraryDetails
-{
-public:
- // ctor, normally never used as these objects are only created by
- // wxDynamicLibrary::ListLoaded()
- wxDynamicLibraryDetails() { m_address = NULL; m_length = 0; }
-
- // get the (base) name
- wxString GetName() const { return m_name; }
-
- // get the full path of this object
- wxString GetPath() const { return m_path; }
-
- // get the load address and the extent, return true if this information is
- // available
- bool GetAddress(void **addr, size_t *len) const
- {
- if ( !m_address )
- return false;
-
- if ( addr )
- *addr = m_address;
- if ( len )
- *len = m_length;
-
- return true;
- }
-
- // return the version of the DLL (may be empty if no version info)
- wxString GetVersion() const
- {
- return m_version;
- }
-
-private:
- wxString m_name,
- m_path,
- m_version;
-
- void *m_address;
- size_t m_length;
-
- friend class wxDynamicLibraryDetailsCreator;
-};
-
-WX_DECLARE_USER_EXPORTED_OBJARRAY(wxDynamicLibraryDetails,
- wxDynamicLibraryDetailsArray,
- WXDLLIMPEXP_BASE);
-
-// ----------------------------------------------------------------------------
-// wxDynamicLibrary: represents a handle to a DLL/shared object
-// ----------------------------------------------------------------------------
-
-class WXDLLIMPEXP_BASE wxDynamicLibrary
-{
-public:
- // return a valid handle for the main program itself or NULL if back
- // linking is not supported by the current platform (e.g. Win32)
- static wxDllType GetProgramHandle();
-
- // return the platform standard DLL extension (with leading dot)
- static const wxChar *GetDllExt() { return ms_dllext; }
-
- wxDynamicLibrary() : m_handle(0) { }
- wxDynamicLibrary(const wxString& libname, int flags = wxDL_DEFAULT)
- : m_handle(0)
- {
- Load(libname, flags);
- }
-
- // NOTE: this class is (deliberately) not virtual, do not attempt
- // to use it polymorphically.
- ~wxDynamicLibrary() { Unload(); }
-
- // return true if the library was loaded successfully
- bool IsLoaded() const { return m_handle != 0; }
-
- // load the library with the given name (full or not), return true if ok
- bool Load(const wxString& libname, int flags = wxDL_DEFAULT);
-
- // raw function for loading dynamic libs: always behaves as if
- // wxDL_VERBATIM were specified and doesn't log error message if the
- // library couldn't be loaded but simply returns NULL
- static wxDllType RawLoad(const wxString& libname, int flags = wxDL_DEFAULT);
-
- // detach the library object from its handle, i.e. prevent the object from
- // unloading the library in its dtor -- the caller is now responsible for
- // doing this
- wxDllType Detach() { wxDllType h = m_handle; m_handle = 0; return h; }
-
- // unload the given library handle (presumably returned by Detach() before)
- static void Unload(wxDllType handle);
-
- // unload the library, also done automatically in dtor
- void Unload() { if ( IsLoaded() ) { Unload(m_handle); m_handle = 0; } }
-
- // Return the raw handle from dlopen and friends.
- wxDllType GetLibHandle() const { return m_handle; }
-
- // check if the given symbol is present in the library, useful to verify if
- // a loadable module is our plugin, for example, without provoking error
- // messages from GetSymbol()
- bool HasSymbol(const wxString& name) const
- {
- bool ok;
- DoGetSymbol(name, &ok);
- return ok;
- }
-
- // resolve a symbol in a loaded DLL, such as a variable or function name.
- // 'name' is the (possibly mangled) name of the symbol. (use extern "C" to
- // export unmangled names)
- //
- // Since it is perfectly valid for the returned symbol to actually be NULL,
- // that is not always indication of an error. Pass and test the parameter
- // 'success' for a true indication of success or failure to load the
- // symbol.
- //
- // Returns a pointer to the symbol on success, or NULL if an error occurred
- // or the symbol wasn't found.
- void *GetSymbol(const wxString& name, bool *success = NULL) const;
-
- // low-level version of GetSymbol()
- static void *RawGetSymbol(wxDllType handle, const wxString& name);
- void *RawGetSymbol(const wxString& name) const
- {
-#if defined (__WXPM__) || defined(__EMX__)
- return GetSymbol(name);
-#else
- return RawGetSymbol(m_handle, name);
-#endif
- }
-
-#ifdef __WXMSW__
- // this function is useful for loading functions from the standard Windows
- // DLLs: such functions have an 'A' (in ANSI build) or 'W' (in Unicode, or
- // wide character build) suffix if they take string parameters
- static void *RawGetSymbolAorW(wxDllType handle, const wxString& name)
- {
- return RawGetSymbol
- (
- handle,
- name +
-#if wxUSE_UNICODE
- L'W'
-#else
- 'A'
-#endif
- );
- }
-
- void *GetSymbolAorW(const wxString& name) const
- {
- return RawGetSymbolAorW(m_handle, name);
- }
-#endif // __WXMSW__
-
- // return all modules/shared libraries in the address space of this process
- //
- // returns an empty array if not implemented or an error occurred
- static wxDynamicLibraryDetailsArray ListLoaded();
-
- // return platform-specific name of dynamic library with proper extension
- // and prefix (e.g. "foo.dll" on Windows or "libfoo.so" on Linux)
- static wxString CanonicalizeName(const wxString& name,
- wxDynamicLibraryCategory cat = wxDL_LIBRARY);
-
- // return name of wxWidgets plugin (adds compiler and version info
- // to the filename):
- static wxString
- CanonicalizePluginName(const wxString& name,
- wxPluginCategory cat = wxDL_PLUGIN_GUI);
-
- // return plugin directory on platforms where it makes sense and empty
- // string on others:
- static wxString GetPluginsDirectory();
-
-
-protected:
- // common part of GetSymbol() and HasSymbol()
- void *DoGetSymbol(const wxString& name, bool *success = 0) const;
-
-#ifdef wxHAVE_DYNLIB_ERROR
- // log the error after a dlxxx() function failure
- static void Error();
-#endif // wxHAVE_DYNLIB_ERROR
-
-
- // platform specific shared lib suffix.
- static const wxChar *ms_dllext;
-
- // the handle to DLL or NULL
- wxDllType m_handle;
-
- // no copy ctor/assignment operators (or we'd try to unload the library
- // twice)
- DECLARE_NO_COPY_CLASS(wxDynamicLibrary)
-};
-
-#if defined(__WXMSW__) && wxABI_VERSION >= 20810
-
-// ----------------------------------------------------------------------------
-// wxLoadedDLL is a MSW-only internal helper class allowing to dynamically bind
-// to a DLL already loaded into the project address space
-// ----------------------------------------------------------------------------
-
-class wxLoadedDLL : public wxDynamicLibrary
-{
-public:
- wxLoadedDLL(const wxString& dllname)
- : wxDynamicLibrary(dllname, wxDL_GET_LOADED | wxDL_VERBATIM | wxDL_QUIET)
- {
- }
-
- ~wxLoadedDLL()
- {
- Detach();
- }
-};
-
-#endif // __WXMSW__
-
-// ----------------------------------------------------------------------------
-// Interesting defines
-// ----------------------------------------------------------------------------
-
-#define WXDLL_ENTRY_FUNCTION() \
-extern "C" WXEXPORT const wxClassInfo *wxGetClassFirst(); \
-const wxClassInfo *wxGetClassFirst() { \
- return wxClassInfo::GetFirst(); \
-}
-
-#endif // wxUSE_DYNLIB_CLASS
-
-#endif // _WX_DYNLIB_H__
diff --git a/Externals/wxWidgets/include/wx/dynload.h b/Externals/wxWidgets/include/wx/dynload.h
deleted file mode 100644
index 68c63c1eb8..0000000000
--- a/Externals/wxWidgets/include/wx/dynload.h
+++ /dev/null
@@ -1,153 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-// Name: dynload.h
-// Purpose: Dynamic loading framework
-// Author: Ron Lee, David Falkinder, Vadim Zeitlin and a cast of 1000's
-// (derived in part from dynlib.cpp (c) 1998 Guilhem Lavaux)
-// Modified by:
-// Created: 03/12/01
-// RCS-ID: $Id: dynload.h 53135 2008-04-12 02:31:04Z VZ $
-// Copyright: (c) 2001 Ron Lee
-// Licence: wxWindows licence
-/////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_DYNAMICLOADER_H__
-#define _WX_DYNAMICLOADER_H__
-
-// ----------------------------------------------------------------------------
-// headers
-// ----------------------------------------------------------------------------
-
-#include "wx/defs.h"
-
-#if wxUSE_DYNAMIC_LOADER
-
-#include "wx/dynlib.h"
-#include "wx/hashmap.h"
-#include "wx/module.h"
-
-class WXDLLIMPEXP_FWD_BASE wxPluginLibrary;
-
-
-WX_DECLARE_STRING_HASH_MAP_WITH_DECL(wxPluginLibrary *, wxDLManifest,
- class WXDLLIMPEXP_BASE);
-typedef wxDLManifest wxDLImports;
-
-// ---------------------------------------------------------------------------
-// wxPluginLibrary
-// ---------------------------------------------------------------------------
-
-// NOTE: Do not attempt to use a base class pointer to this class.
-// wxDL is not virtual and we deliberately hide some of it's
-// methods here.
-//
-// Unless you know exacty why you need to, you probably shouldn't
-// instantiate this class directly anyway, use wxPluginManager
-// instead.
-
-class WXDLLIMPEXP_BASE wxPluginLibrary : public wxDynamicLibrary
-{
-public:
-
- static wxDLImports* ms_classes; // Static hash of all imported classes.
-
- wxPluginLibrary( const wxString &libname, int flags = wxDL_DEFAULT );
- ~wxPluginLibrary();
-
- wxPluginLibrary *RefLib();
- bool UnrefLib();
-
- // These two are called by the PluginSentinel on (PLUGGABLE) object
- // creation/destruction. There is usually no reason for the user to
- // call them directly. We have to separate this from the link count,
- // since the two are not interchangeable.
-
- // FIXME: for even better debugging PluginSentinel should register
- // the name of the class created too, then we can state
- // exactly which object was not destroyed which may be
- // difficult to find otherwise. Also this code should
- // probably only be active in DEBUG mode, but let's just
- // get it right first.
-
- void RefObj() { ++m_objcount; }
- void UnrefObj()
- {
- wxASSERT_MSG( m_objcount > 0, _T("Too many objects deleted??") );
- --m_objcount;
- }
-
- // Override/hide some base class methods
-
- bool IsLoaded() const { return m_linkcount > 0; }
- void Unload() { UnrefLib(); }
-
-private:
-
- wxClassInfo *m_before; // sm_first before loading this lib
- wxClassInfo *m_after; // ..and after.
-
- size_t m_linkcount; // Ref count of library link calls
- size_t m_objcount; // ..and (pluggable) object instantiations.
- wxModuleList m_wxmodules; // any wxModules that we initialised.
-
- void UpdateClasses(); // Update ms_classes
- void RestoreClasses(); // Removes this library from ms_classes
- void RegisterModules(); // Init any wxModules in the lib.
- void UnregisterModules(); // Cleanup any wxModules we installed.
-
- DECLARE_NO_COPY_CLASS(wxPluginLibrary)
-};
-
-
-class WXDLLIMPEXP_BASE wxPluginManager
-{
-public:
-
- // Static accessors.
-
- static wxPluginLibrary *LoadLibrary( const wxString &libname,
- int flags = wxDL_DEFAULT );
- static bool UnloadLibrary(const wxString &libname);
-
- // Instance methods.
-
- wxPluginManager() : m_entry(NULL) {}
- wxPluginManager(const wxString &libname, int flags = wxDL_DEFAULT)
- {
- Load(libname, flags);
- }
- ~wxPluginManager() { if ( IsLoaded() ) Unload(); }
-
- bool Load(const wxString &libname, int flags = wxDL_DEFAULT);
- void Unload();
-
- bool IsLoaded() const { return m_entry && m_entry->IsLoaded(); }
- void *GetSymbol(const wxString &symbol, bool *success = 0)
- {
- return m_entry->GetSymbol( symbol, success );
- }
-
- static void CreateManifest() { ms_manifest = new wxDLManifest(wxKEY_STRING); }
- static void ClearManifest() { delete ms_manifest; ms_manifest = NULL; }
-
-private:
- // return the pointer to the entry for the library with given name in
- // ms_manifest or NULL if none
- static wxPluginLibrary *FindByName(const wxString& name)
- {
- const wxDLManifest::iterator i = ms_manifest->find(name);
-
- return i == ms_manifest->end() ? NULL : i->second;
- }
-
- static wxDLManifest* ms_manifest; // Static hash of loaded libs.
- wxPluginLibrary* m_entry; // Cache our entry in the manifest.
-
- // We could allow this class to be copied if we really
- // wanted to, but not without modification.
- DECLARE_NO_COPY_CLASS(wxPluginManager)
-};
-
-
-#endif // wxUSE_DYNAMIC_LOADER
-#endif // _WX_DYNAMICLOADER_H__
-
diff --git a/Externals/wxWidgets/include/wx/effects.h b/Externals/wxWidgets/include/wx/effects.h
deleted file mode 100644
index b04a3ba635..0000000000
--- a/Externals/wxWidgets/include/wx/effects.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-// Name: wx/effects.h
-// Purpose: wxEffects class
-// Draws 3D effects.
-// Author: Julian Smart et al
-// Modified by:
-// Created: 25/4/2000
-// RCS-ID: $Id: effects.h 39109 2006-05-08 11:31:03Z ABX $
-// Copyright: (c) Julian Smart
-// Licence: wxWindows licence
-/////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_EFFECTS_H_
-#define _WX_EFFECTS_H_
-
-/*
- * wxEffects: various 3D effects
- */
-
-#include "wx/object.h"
-#include "wx/colour.h"
-#include "wx/gdicmn.h"
-#include "wx/dc.h"
-
-class WXDLLEXPORT wxEffects: public wxObject
-{
-DECLARE_CLASS(wxEffects)
-
-public:
- // Assume system colours
- wxEffects() ;
- // Going from lightest to darkest
- wxEffects(const wxColour& highlightColour, const wxColour& lightShadow,
- const wxColour& faceColour, const wxColour& mediumShadow,
- const wxColour& darkShadow) ;
-
- // Accessors
- wxColour GetHighlightColour() const { return m_highlightColour; }
- wxColour GetLightShadow() const { return m_lightShadow; }
- wxColour GetFaceColour() const { return m_faceColour; }
- wxColour GetMediumShadow() const { return m_mediumShadow; }
- wxColour GetDarkShadow() const { return m_darkShadow; }
-
- void SetHighlightColour(const wxColour& c) { m_highlightColour = c; }
- void SetLightShadow(const wxColour& c) { m_lightShadow = c; }
- void SetFaceColour(const wxColour& c) { m_faceColour = c; }
- void SetMediumShadow(const wxColour& c) { m_mediumShadow = c; }
- void SetDarkShadow(const wxColour& c) { m_darkShadow = c; }
-
- void Set(const wxColour& highlightColour, const wxColour& lightShadow,
- const wxColour& faceColour, const wxColour& mediumShadow,
- const wxColour& darkShadow)
- {
- SetHighlightColour(highlightColour);
- SetLightShadow(lightShadow);
- SetFaceColour(faceColour);
- SetMediumShadow(mediumShadow);
- SetDarkShadow(darkShadow);
- }
-
- // Draw a sunken edge
- void DrawSunkenEdge(wxDC& dc, const wxRect& rect, int borderSize = 1);
-
- // Tile a bitmap
- bool TileBitmap(const wxRect& rect, wxDC& dc, const wxBitmap& bitmap);
-
-protected:
- wxColour m_highlightColour; // Usually white
- wxColour m_lightShadow; // Usually light grey
- wxColour m_faceColour; // Usually grey
- wxColour m_mediumShadow; // Usually dark grey
- wxColour m_darkShadow; // Usually black
-};
-
-#endif
diff --git a/Externals/wxWidgets/include/wx/encconv.h b/Externals/wxWidgets/include/wx/encconv.h
deleted file mode 100644
index 6a54439eeb..0000000000
--- a/Externals/wxWidgets/include/wx/encconv.h
+++ /dev/null
@@ -1,159 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-// Name: wx/encconv.h
-// Purpose: wxEncodingConverter class for converting between different
-// font encodings
-// Author: Vaclav Slavik
-// Copyright: (c) 1999 Vaclav Slavik
-// Licence: wxWindows licence
-/////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_ENCCONV_H_
-#define _WX_ENCCONV_H_
-
-#include "wx/defs.h"
-
-#include "wx/object.h"
-#include "wx/fontenc.h"
-#include "wx/dynarray.h"
-
-// ----------------------------------------------------------------------------
-// constants
-// ----------------------------------------------------------------------------
-
-enum
-{
- wxCONVERT_STRICT,
- wxCONVERT_SUBSTITUTE
-};
-
-
-enum
-{
- wxPLATFORM_CURRENT = -1,
-
- wxPLATFORM_UNIX = 0,
- wxPLATFORM_WINDOWS,
- wxPLATFORM_OS2,
- wxPLATFORM_MAC
-};
-
-// ----------------------------------------------------------------------------
-// types
-// ----------------------------------------------------------------------------
-
-WX_DEFINE_ARRAY_INT(wxFontEncoding, wxFontEncodingArray);
-
-//--------------------------------------------------------------------------------
-// wxEncodingConverter
-// This class is capable of converting strings between any two
-// 8bit encodings/charsets. It can also convert from/to Unicode
-//--------------------------------------------------------------------------------
-
-class WXDLLIMPEXP_BASE wxEncodingConverter : public wxObject
-{
- public:
-
- wxEncodingConverter();
- virtual ~wxEncodingConverter() { if (m_Table) delete[] m_Table; }
-
- // Initialize conversion. Both output or input encoding may
- // be wxFONTENCODING_UNICODE, but only if wxUSE_WCHAR_T is set to 1.
- //
- // All subsequent calls to Convert() will interpret it's argument
- // as a string in input_enc encoding and will output string in
- // output_enc encoding.
- //
- // You must call this method before calling Convert. You may call
- // it more than once in order to switch to another conversion
- //
- // Method affects behaviour of Convert() in case input character
- // cannot be converted because it does not exist in output encoding:
- // wxCONVERT_STRICT --
- // follow behaviour of GNU Recode - just copy unconvertable
- // characters to output and don't change them (it's integer
- // value will stay the same)
- // wxCONVERT_SUBSTITUTE --
- // try some (lossy) substitutions - e.g. replace
- // unconvertable latin capitals with acute by ordinary
- // capitals, replace en-dash or em-dash by '-' etc.
- // both modes gurantee that output string will have same length
- // as input string
- //
- // Returns false if given conversion is impossible, true otherwise
- // (conversion may be impossible either if you try to convert
- // to Unicode with non-Unicode build of wxWidgets or if input
- // or output encoding is not supported.)
- bool Init(wxFontEncoding input_enc, wxFontEncoding output_enc, int method = wxCONVERT_STRICT);
-
- // Convert input string according to settings passed to Init.
- // Note that you must call Init before using Convert!
- bool Convert(const char* input, char* output) const;
- bool Convert(char* str) const { return Convert(str, str); }
- wxString Convert(const wxString& input) const;
-
-#if wxUSE_WCHAR_T
- bool Convert(const char* input, wchar_t* output) const;
- bool Convert(const wchar_t* input, char* output) const;
- bool Convert(const wchar_t* input, wchar_t* output) const;
- bool Convert(wchar_t* str) const { return Convert(str, str); }
-#endif
- // Return equivalent(s) for given font that are used
- // under given platform. wxPLATFORM_CURRENT means the plaform
- // this binary was compiled for
- //
- // Examples:
- // current platform enc returned value
- // -----------------------------------------------------
- // unix CP1250 {ISO8859_2}
- // unix ISO8859_2 {}
- // windows ISO8859_2 {CP1250}
- //
- // Equivalence is defined in terms of convertibility:
- // 2 encodings are equivalent if you can convert text between
- // then without loosing information (it may - and will - happen
- // that you loose special chars like quotation marks or em-dashes
- // but you shouldn't loose any diacritics and language-specific
- // characters when converting between equivalent encodings).
- //
- // Convert() method is not limited to converting between
- // equivalent encodings, it can convert between arbitrary
- // two encodings!
- //
- // Remember that this function does _NOT_ check for presence of
- // fonts in system. It only tells you what are most suitable
- // encodings. (It usually returns only one encoding)
- //
- // Note that argument enc itself may be present in returned array!
- // (so that you can -- as a side effect -- detect whether the
- // encoding is native for this platform or not)
- static wxFontEncodingArray GetPlatformEquivalents(wxFontEncoding enc, int platform = wxPLATFORM_CURRENT);
-
- // Similar to GetPlatformEquivalent, but this one will return ALL
- // equivalent encodings, regardless the platform, including itself.
- static wxFontEncodingArray GetAllEquivalents(wxFontEncoding enc);
-
- // Return true if [any text in] one multibyte encoding can be
- // converted to another one losslessly.
- //
- // Do not call this with wxFONTENCODING_UNICODE, it doesn't make
- // sense (always works in one sense and always depends on the text
- // to convert in the other)
- static bool CanConvert(wxFontEncoding encIn, wxFontEncoding encOut)
- {
- return GetAllEquivalents(encIn).Index(encOut) != wxNOT_FOUND;
- }
-
- private:
-
-#if wxUSE_WCHAR_T
- wchar_t *m_Table;
-#else
- char *m_Table;
-#endif
- bool m_UnicodeInput, m_UnicodeOutput;
- bool m_JustCopy;
-
- DECLARE_NO_COPY_CLASS(wxEncodingConverter)
-};
-
-#endif // _WX_ENCCONV_H_
diff --git a/Externals/wxWidgets/include/wx/encinfo.h b/Externals/wxWidgets/include/wx/encinfo.h
deleted file mode 100644
index 99dbddb81d..0000000000
--- a/Externals/wxWidgets/include/wx/encinfo.h
+++ /dev/null
@@ -1,74 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Name: wx/encinfo.h
-// Purpose: declares wxNativeEncodingInfo struct
-// Author: Vadim Zeitlin
-// Modified by:
-// Created: 19.09.2003 (extracted from wx/fontenc.h)
-// RCS-ID: $Id: encinfo.h 40865 2006-08-27 09:42:42Z VS $
-// Copyright: (c) 2003 Vadim Zeitlin
-// Licence: wxWindows licence
-///////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_ENCINFO_H_
-#define _WX_ENCINFO_H_
-
-#include "wx/string.h"
-
-// ----------------------------------------------------------------------------
-// wxNativeEncodingInfo contains all encoding parameters for this platform
-// ----------------------------------------------------------------------------
-
-// This private structure specifies all the parameters needed to create a font
-// with the given encoding on this platform.
-//
-// Under X, it contains the last 2 elements of the font specifications
-// (registry and encoding).
-//
-// Under Windows, it contains a number which is one of predefined CHARSET_XXX
-// values.
-//
-// Under all platforms it also contains a facename string which should be
-// used, if not empty, to create fonts in this encoding (this is the only way
-// to create a font of non-standard encoding (like KOI8) under Windows - the
-// facename specifies the encoding then)
-
-struct WXDLLEXPORT wxNativeEncodingInfo
-{
- wxString facename; // may be empty meaning "any"
-#ifndef __WXPALMOS__
- wxFontEncoding encoding; // so that we know what this struct represents
-
-#if defined(__WXMSW__) || \
- defined(__WXPM__) || \
- defined(__WXMAC__) || \
- defined(__WXCOCOA__) // FIXME: __WXCOCOA__
-
- wxNativeEncodingInfo()
- : facename()
- , encoding(wxFONTENCODING_SYSTEM)
- , charset(0) /* ANSI_CHARSET */
- { }
-
- int charset;
-#elif defined(_WX_X_FONTLIKE)
- wxString xregistry,
- xencoding;
-#elif defined(__WXGTK20__)
- // No way to specify this in Pango as this
- // seems to be handled internally.
-#elif defined(__WXMGL__)
- int mglEncoding;
-#elif defined(__WXDFB__)
- // DirectFB uses UTF-8 internally, doesn't use font encodings
-#else
- #error "Unsupported toolkit"
-#endif
-#endif // !__WXPALMOS__
- // this struct is saved in config by wxFontMapper, so it should know to
- // serialise itself (implemented in platform-specific code)
- bool FromString(const wxString& s);
- wxString ToString() const;
-};
-
-#endif // _WX_ENCINFO_H_
-
diff --git a/Externals/wxWidgets/include/wx/event.h b/Externals/wxWidgets/include/wx/event.h
deleted file mode 100644
index 26fab62c9f..0000000000
--- a/Externals/wxWidgets/include/wx/event.h
+++ /dev/null
@@ -1,3116 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-// Name: wx/event.h
-// Purpose: Event classes
-// Author: Julian Smart
-// Modified by:
-// Created: 01/02/97
-// RCS-ID: $Id: event.h 53135 2008-04-12 02:31:04Z VZ $
-// Copyright: (c) wxWidgets team
-// Licence: wxWindows licence
-/////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_EVENT_H__
-#define _WX_EVENT_H__
-
-#include "wx/defs.h"
-#include "wx/cpp.h"
-#include "wx/object.h"
-#include "wx/clntdata.h"
-
-#if wxUSE_GUI
- #include "wx/gdicmn.h"
- #include "wx/cursor.h"
-#endif
-
-#include "wx/thread.h"
-
-#include "wx/dynarray.h"
-
-// ----------------------------------------------------------------------------
-// forward declarations
-// ----------------------------------------------------------------------------
-
-class WXDLLIMPEXP_FWD_BASE wxList;
-
-#if wxUSE_GUI
- class WXDLLIMPEXP_FWD_CORE wxDC;
- class WXDLLIMPEXP_FWD_CORE wxMenu;
- class WXDLLIMPEXP_FWD_CORE wxWindow;
- class WXDLLIMPEXP_FWD_CORE wxWindowBase;
-#endif // wxUSE_GUI
-
-class WXDLLIMPEXP_FWD_BASE wxEvtHandler;
-
-// ----------------------------------------------------------------------------
-// Event types
-// ----------------------------------------------------------------------------
-
-typedef int wxEventType;
-
-// this is used to make the event table entry type safe, so that for an event
-// handler only a function with proper parameter list can be given.
-#define wxStaticCastEvent(type, val) wx_static_cast(type, val)
-
-// in previous versions of wxWidgets the event types used to be constants
-// which created difficulties with custom/user event types definition
-//
-// starting from wxWidgets 2.4 the event types are now dynamically assigned
-// using wxNewEventType() which solves this problem, however at price of
-// several incompatibilities:
-//
-// a) event table macros declaration changed, it now uses wxEventTableEntry
-// ctor instead of initialisation from an agregate - the macro
-// DECLARE_EVENT_TABLE_ENTRY may be used to write code which can compile
-// with all versions of wxWidgets
-//
-// b) event types can't be used as switch() cases as they're not really
-// constant any more - there is no magic solution here, you just have to
-// change the switch()es to if()s
-//
-// if these are real problems for you, define WXWIN_COMPATIBILITY_EVENT_TYPES
-// as 1 to get 100% old behaviour, however you won't be able to use the
-// libraries using the new dynamic event type allocation in such case, so avoid
-// it if possible.
-#ifndef WXWIN_COMPATIBILITY_EVENT_TYPES
- #define WXWIN_COMPATIBILITY_EVENT_TYPES 0
-#endif
-
-#if WXWIN_COMPATIBILITY_EVENT_TYPES
-
-#define DECLARE_EVENT_TABLE_ENTRY(type, winid, idLast, fn, obj) \
- { type, winid, idLast, fn, obj }
-
-#define BEGIN_DECLARE_EVENT_TYPES() enum {
-#define END_DECLARE_EVENT_TYPES() };
-#define DECLARE_EVENT_TYPE(name, value) name = wxEVT_FIRST + value,
-#define DECLARE_LOCAL_EVENT_TYPE(name, value) name = wxEVT_USER_FIRST + value,
-#define DECLARE_EXPORTED_EVENT_TYPE(expdecl, name, value) \
- DECLARE_LOCAL_EVENT_TYPE(name, value)
-#define DEFINE_EVENT_TYPE(name)
-#define DEFINE_LOCAL_EVENT_TYPE(name)
-
-
-#else // !WXWIN_COMPATIBILITY_EVENT_TYPES
-
-#define DECLARE_EVENT_TABLE_ENTRY(type, winid, idLast, fn, obj) \
- wxEventTableEntry(type, winid, idLast, fn, obj)
-
-#define BEGIN_DECLARE_EVENT_TYPES()
-#define END_DECLARE_EVENT_TYPES()
-#define DECLARE_EXPORTED_EVENT_TYPE(expdecl, name, value) \
- extern expdecl const wxEventType name;
-#define DECLARE_EVENT_TYPE(name, value) \
- DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_CORE, name, value)
-#define DECLARE_LOCAL_EVENT_TYPE(name, value) \
- DECLARE_EXPORTED_EVENT_TYPE(wxEMPTY_PARAMETER_VALUE, name, value)
-#define DEFINE_EVENT_TYPE(name) const wxEventType name = wxNewEventType();
-#define DEFINE_LOCAL_EVENT_TYPE(name) DEFINE_EVENT_TYPE(name)
-
-// generate a new unique event type
-extern WXDLLIMPEXP_BASE wxEventType wxNewEventType();
-
-#endif // WXWIN_COMPATIBILITY_EVENT_TYPES/!WXWIN_COMPATIBILITY_EVENT_TYPES
-
-BEGIN_DECLARE_EVENT_TYPES()
-
-#if WXWIN_COMPATIBILITY_EVENT_TYPES
- wxEVT_NULL = 0,
- wxEVT_FIRST = 10000,
- wxEVT_USER_FIRST = wxEVT_FIRST + 2000,
-#else // !WXWIN_COMPATIBILITY_EVENT_TYPES
- // it is important to still have these as constants to avoid
- // initialization order related problems
- DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_BASE, wxEVT_NULL, 0)
- DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_BASE, wxEVT_FIRST, 10000)
- DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_BASE, wxEVT_USER_FIRST, wxEVT_FIRST + 2000)
-#endif // WXWIN_COMPATIBILITY_EVENT_TYPES/!WXWIN_COMPATIBILITY_EVENT_TYPES
-
- DECLARE_EVENT_TYPE(wxEVT_COMMAND_BUTTON_CLICKED, 1)
- DECLARE_EVENT_TYPE(wxEVT_COMMAND_CHECKBOX_CLICKED, 2)
- DECLARE_EVENT_TYPE(wxEVT_COMMAND_CHOICE_SELECTED, 3)
- DECLARE_EVENT_TYPE(wxEVT_COMMAND_LISTBOX_SELECTED, 4)
- DECLARE_EVENT_TYPE(wxEVT_COMMAND_LISTBOX_DOUBLECLICKED, 5)
- DECLARE_EVENT_TYPE(wxEVT_COMMAND_CHECKLISTBOX_TOGGLED, 6)
- // now they are in wx/textctrl.h
-#if WXWIN_COMPATIBILITY_EVENT_TYPES
- DECLARE_EVENT_TYPE(wxEVT_COMMAND_TEXT_UPDATED, 7)
- DECLARE_EVENT_TYPE(wxEVT_COMMAND_TEXT_ENTER, 8)
- DECLARE_EVENT_TYPE(wxEVT_COMMAND_TEXT_URL, 13)
- DECLARE_EVENT_TYPE(wxEVT_COMMAND_TEXT_MAXLEN, 14)
-#endif // WXWIN_COMPATIBILITY_EVENT_TYPES
- DECLARE_EVENT_TYPE(wxEVT_COMMAND_MENU_SELECTED, 9)
- DECLARE_EVENT_TYPE(wxEVT_COMMAND_SLIDER_UPDATED, 10)
- DECLARE_EVENT_TYPE(wxEVT_COMMAND_RADIOBOX_SELECTED, 11)
- DECLARE_EVENT_TYPE(wxEVT_COMMAND_RADIOBUTTON_SELECTED, 12)
-
- // wxEVT_COMMAND_SCROLLBAR_UPDATED is now obsolete since we use
- // wxEVT_SCROLL... events
-
- DECLARE_EVENT_TYPE(wxEVT_COMMAND_SCROLLBAR_UPDATED, 13)
- DECLARE_EVENT_TYPE(wxEVT_COMMAND_VLBOX_SELECTED, 14)
- DECLARE_EVENT_TYPE(wxEVT_COMMAND_COMBOBOX_SELECTED, 15)
- DECLARE_EVENT_TYPE(wxEVT_COMMAND_TOOL_RCLICKED, 16)
- DECLARE_EVENT_TYPE(wxEVT_COMMAND_TOOL_ENTER, 17)
- DECLARE_EVENT_TYPE(wxEVT_COMMAND_SPINCTRL_UPDATED, 18)
-
- // Sockets and timers send events, too
- DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_BASE, wxEVT_SOCKET, 50)
- DECLARE_EVENT_TYPE(wxEVT_TIMER , 80)
-
- // Mouse event types
- DECLARE_EVENT_TYPE(wxEVT_LEFT_DOWN, 100)
- DECLARE_EVENT_TYPE(wxEVT_LEFT_UP, 101)
- DECLARE_EVENT_TYPE(wxEVT_MIDDLE_DOWN, 102)
- DECLARE_EVENT_TYPE(wxEVT_MIDDLE_UP, 103)
- DECLARE_EVENT_TYPE(wxEVT_RIGHT_DOWN, 104)
- DECLARE_EVENT_TYPE(wxEVT_RIGHT_UP, 105)
- DECLARE_EVENT_TYPE(wxEVT_MOTION, 106)
- DECLARE_EVENT_TYPE(wxEVT_ENTER_WINDOW, 107)
- DECLARE_EVENT_TYPE(wxEVT_LEAVE_WINDOW, 108)
- DECLARE_EVENT_TYPE(wxEVT_LEFT_DCLICK, 109)
- DECLARE_EVENT_TYPE(wxEVT_MIDDLE_DCLICK, 110)
- DECLARE_EVENT_TYPE(wxEVT_RIGHT_DCLICK, 111)
- DECLARE_EVENT_TYPE(wxEVT_SET_FOCUS, 112)
- DECLARE_EVENT_TYPE(wxEVT_KILL_FOCUS, 113)
- DECLARE_EVENT_TYPE(wxEVT_CHILD_FOCUS, 114)
- DECLARE_EVENT_TYPE(wxEVT_MOUSEWHEEL, 115)
-
- // Non-client mouse events
- DECLARE_EVENT_TYPE(wxEVT_NC_LEFT_DOWN, 200)
- DECLARE_EVENT_TYPE(wxEVT_NC_LEFT_UP, 201)
- DECLARE_EVENT_TYPE(wxEVT_NC_MIDDLE_DOWN, 202)
- DECLARE_EVENT_TYPE(wxEVT_NC_MIDDLE_UP, 203)
- DECLARE_EVENT_TYPE(wxEVT_NC_RIGHT_DOWN, 204)
- DECLARE_EVENT_TYPE(wxEVT_NC_RIGHT_UP, 205)
- DECLARE_EVENT_TYPE(wxEVT_NC_MOTION, 206)
- DECLARE_EVENT_TYPE(wxEVT_NC_ENTER_WINDOW, 207)
- DECLARE_EVENT_TYPE(wxEVT_NC_LEAVE_WINDOW, 208)
- DECLARE_EVENT_TYPE(wxEVT_NC_LEFT_DCLICK, 209)
- DECLARE_EVENT_TYPE(wxEVT_NC_MIDDLE_DCLICK, 210)
- DECLARE_EVENT_TYPE(wxEVT_NC_RIGHT_DCLICK, 211)
-
- // Character input event type
- DECLARE_EVENT_TYPE(wxEVT_CHAR, 212)
- DECLARE_EVENT_TYPE(wxEVT_CHAR_HOOK, 213)
- DECLARE_EVENT_TYPE(wxEVT_NAVIGATION_KEY, 214)
- DECLARE_EVENT_TYPE(wxEVT_KEY_DOWN, 215)
- DECLARE_EVENT_TYPE(wxEVT_KEY_UP, 216)
-#if wxUSE_HOTKEY
- DECLARE_EVENT_TYPE(wxEVT_HOTKEY, 217)
-#endif
- // Set cursor event
- DECLARE_EVENT_TYPE(wxEVT_SET_CURSOR, 230)
-
- // wxScrollBar and wxSlider event identifiers
- DECLARE_EVENT_TYPE(wxEVT_SCROLL_TOP, 300)
- DECLARE_EVENT_TYPE(wxEVT_SCROLL_BOTTOM, 301)
- DECLARE_EVENT_TYPE(wxEVT_SCROLL_LINEUP, 302)
- DECLARE_EVENT_TYPE(wxEVT_SCROLL_LINEDOWN, 303)
- DECLARE_EVENT_TYPE(wxEVT_SCROLL_PAGEUP, 304)
- DECLARE_EVENT_TYPE(wxEVT_SCROLL_PAGEDOWN, 305)
- DECLARE_EVENT_TYPE(wxEVT_SCROLL_THUMBTRACK, 306)
- DECLARE_EVENT_TYPE(wxEVT_SCROLL_THUMBRELEASE, 307)
- DECLARE_EVENT_TYPE(wxEVT_SCROLL_CHANGED, 308)
-
- // Scroll events from wxWindow
- DECLARE_EVENT_TYPE(wxEVT_SCROLLWIN_TOP, 320)
- DECLARE_EVENT_TYPE(wxEVT_SCROLLWIN_BOTTOM, 321)
- DECLARE_EVENT_TYPE(wxEVT_SCROLLWIN_LINEUP, 322)
- DECLARE_EVENT_TYPE(wxEVT_SCROLLWIN_LINEDOWN, 323)
- DECLARE_EVENT_TYPE(wxEVT_SCROLLWIN_PAGEUP, 324)
- DECLARE_EVENT_TYPE(wxEVT_SCROLLWIN_PAGEDOWN, 325)
- DECLARE_EVENT_TYPE(wxEVT_SCROLLWIN_THUMBTRACK, 326)
- DECLARE_EVENT_TYPE(wxEVT_SCROLLWIN_THUMBRELEASE, 327)
-
- // System events
- DECLARE_EVENT_TYPE(wxEVT_SIZE, 400)
- DECLARE_EVENT_TYPE(wxEVT_MOVE, 401)
- DECLARE_EVENT_TYPE(wxEVT_CLOSE_WINDOW, 402)
- DECLARE_EVENT_TYPE(wxEVT_END_SESSION, 403)
- DECLARE_EVENT_TYPE(wxEVT_QUERY_END_SESSION, 404)
- DECLARE_EVENT_TYPE(wxEVT_ACTIVATE_APP, 405)
- // 406..408 are power events
- DECLARE_EVENT_TYPE(wxEVT_ACTIVATE, 409)
- DECLARE_EVENT_TYPE(wxEVT_CREATE, 410)
- DECLARE_EVENT_TYPE(wxEVT_DESTROY, 411)
- DECLARE_EVENT_TYPE(wxEVT_SHOW, 412)
- DECLARE_EVENT_TYPE(wxEVT_ICONIZE, 413)
- DECLARE_EVENT_TYPE(wxEVT_MAXIMIZE, 414)
- DECLARE_EVENT_TYPE(wxEVT_MOUSE_CAPTURE_CHANGED, 415)
- DECLARE_EVENT_TYPE(wxEVT_MOUSE_CAPTURE_LOST, 416)
- DECLARE_EVENT_TYPE(wxEVT_PAINT, 417)
- DECLARE_EVENT_TYPE(wxEVT_ERASE_BACKGROUND, 418)
- DECLARE_EVENT_TYPE(wxEVT_NC_PAINT, 419)
- DECLARE_EVENT_TYPE(wxEVT_PAINT_ICON, 420)
- DECLARE_EVENT_TYPE(wxEVT_MENU_OPEN, 421)
- DECLARE_EVENT_TYPE(wxEVT_MENU_CLOSE, 422)
- DECLARE_EVENT_TYPE(wxEVT_MENU_HIGHLIGHT, 423)
- DECLARE_EVENT_TYPE(wxEVT_CONTEXT_MENU, 424)
- DECLARE_EVENT_TYPE(wxEVT_SYS_COLOUR_CHANGED, 425)
- DECLARE_EVENT_TYPE(wxEVT_DISPLAY_CHANGED, 426)
- DECLARE_EVENT_TYPE(wxEVT_SETTING_CHANGED, 427)
- DECLARE_EVENT_TYPE(wxEVT_QUERY_NEW_PALETTE, 428)
- DECLARE_EVENT_TYPE(wxEVT_PALETTE_CHANGED, 429)
- DECLARE_EVENT_TYPE(wxEVT_JOY_BUTTON_DOWN, 430)
- DECLARE_EVENT_TYPE(wxEVT_JOY_BUTTON_UP, 431)
- DECLARE_EVENT_TYPE(wxEVT_JOY_MOVE, 432)
- DECLARE_EVENT_TYPE(wxEVT_JOY_ZMOVE, 433)
- DECLARE_EVENT_TYPE(wxEVT_DROP_FILES, 434)
- DECLARE_EVENT_TYPE(wxEVT_DRAW_ITEM, 435)
- DECLARE_EVENT_TYPE(wxEVT_MEASURE_ITEM, 436)
- DECLARE_EVENT_TYPE(wxEVT_COMPARE_ITEM, 437)
- DECLARE_EVENT_TYPE(wxEVT_INIT_DIALOG, 438)
- DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_BASE, wxEVT_IDLE, 439)
- DECLARE_EVENT_TYPE(wxEVT_UPDATE_UI, 440)
- DECLARE_EVENT_TYPE(wxEVT_SIZING, 441)
- DECLARE_EVENT_TYPE(wxEVT_MOVING, 442)
- DECLARE_EVENT_TYPE(wxEVT_HIBERNATE, 443)
- // more power events follow -- see wx/power.h
-
- // Clipboard events
- DECLARE_EVENT_TYPE(wxEVT_COMMAND_TEXT_COPY, 444)
- DECLARE_EVENT_TYPE(wxEVT_COMMAND_TEXT_CUT, 445)
- DECLARE_EVENT_TYPE(wxEVT_COMMAND_TEXT_PASTE, 446)
-
- // Generic command events
- // Note: a click is a higher-level event than button down/up
- DECLARE_EVENT_TYPE(wxEVT_COMMAND_LEFT_CLICK, 500)
- DECLARE_EVENT_TYPE(wxEVT_COMMAND_LEFT_DCLICK, 501)
- DECLARE_EVENT_TYPE(wxEVT_COMMAND_RIGHT_CLICK, 502)
- DECLARE_EVENT_TYPE(wxEVT_COMMAND_RIGHT_DCLICK, 503)
- DECLARE_EVENT_TYPE(wxEVT_COMMAND_SET_FOCUS, 504)
- DECLARE_EVENT_TYPE(wxEVT_COMMAND_KILL_FOCUS, 505)
- DECLARE_EVENT_TYPE(wxEVT_COMMAND_ENTER, 506)
-
- // Help events
- DECLARE_EVENT_TYPE(wxEVT_HELP, 1050)
- DECLARE_EVENT_TYPE(wxEVT_DETAILED_HELP, 1051)
-
-END_DECLARE_EVENT_TYPES()
-
-// these 2 events are the same
-#define wxEVT_COMMAND_TOOL_CLICKED wxEVT_COMMAND_MENU_SELECTED
-
-// ----------------------------------------------------------------------------
-// Compatibility
-// ----------------------------------------------------------------------------
-
-// this event is also used by wxComboBox and wxSpinCtrl which don't include
-// wx/textctrl.h in all ports [yet], so declare it here as well
-//
-// still, any new code using it should include wx/textctrl.h explicitly
-#if !WXWIN_COMPATIBILITY_EVENT_TYPES
- extern const wxEventType WXDLLIMPEXP_CORE wxEVT_COMMAND_TEXT_UPDATED;
-#endif
-
-// the predefined constants for the number of times we propagate event
-// upwards window child-parent chain
-enum Propagation_state
-{
- // don't propagate it at all
- wxEVENT_PROPAGATE_NONE = 0,
-
- // propagate it until it is processed
- wxEVENT_PROPAGATE_MAX = INT_MAX
-};
-
-/*
- * wxWidgets events, covering all interesting things that might happen
- * (button clicking, resizing, setting text in widgets, etc.).
- *
- * For each completely new event type, derive a new event class.
- * An event CLASS represents a C++ class defining a range of similar event TYPES;
- * examples are canvas events, panel item command events.
- * An event TYPE is a unique identifier for a particular system event,
- * such as a button press or a listbox deselection.
- *
- */
-
-class WXDLLIMPEXP_BASE wxEvent : public wxObject
-{
-private:
- wxEvent& operator=(const wxEvent&);
-
-protected:
- wxEvent(const wxEvent&); // for implementing Clone()
-
-public:
- wxEvent(int winid = 0, wxEventType commandType = wxEVT_NULL );
-
- void SetEventType(wxEventType typ) { m_eventType = typ; }
- wxEventType GetEventType() const { return m_eventType; }
- wxObject *GetEventObject() const { return m_eventObject; }
- void SetEventObject(wxObject *obj) { m_eventObject = obj; }
- long GetTimestamp() const { return m_timeStamp; }
- void SetTimestamp(long ts = 0) { m_timeStamp = ts; }
- int GetId() const { return m_id; }
- void SetId(int Id) { m_id = Id; }
-
- // Can instruct event processor that we wish to ignore this event
- // (treat as if the event table entry had not been found): this must be done
- // to allow the event processing by the base classes (calling event.Skip()
- // is the analog of calling the base class version of a virtual function)
- void Skip(bool skip = true) { m_skipped = skip; }
- bool GetSkipped() const { return m_skipped; }
-
- // this function is used to create a copy of the event polymorphically and
- // all derived classes must implement it because otherwise wxPostEvent()
- // for them wouldn't work (it needs to do a copy of the event)
- virtual wxEvent *Clone() const = 0;
-
- // Implementation only: this test is explicitly anti OO and this function
- // exists only for optimization purposes.
- bool IsCommandEvent() const { return m_isCommandEvent; }
-
- // Determine if this event should be propagating to the parent window.
- bool ShouldPropagate() const
- { return m_propagationLevel != wxEVENT_PROPAGATE_NONE; }
-
- // Stop an event from propagating to its parent window, returns the old
- // propagation level value
- int StopPropagation()
- {
- int propagationLevel = m_propagationLevel;
- m_propagationLevel = wxEVENT_PROPAGATE_NONE;
- return propagationLevel;
- }
-
- // Resume the event propagation by restoring the propagation level
- // (returned by StopPropagation())
- void ResumePropagation(int propagationLevel)
- {
- m_propagationLevel = propagationLevel;
- }
-
-#if WXWIN_COMPATIBILITY_2_4
-public:
-#else
-protected:
-#endif
- wxObject* m_eventObject;
- wxEventType m_eventType;
- long m_timeStamp;
- int m_id;
-
-public:
- // m_callbackUserData is for internal usage only
- wxObject* m_callbackUserData;
-
-protected:
- // the propagation level: while it is positive, we propagate the event to
- // the parent window (if any)
- //
- // this one doesn't have to be public, we don't have to worry about
- // backwards compatibility as it is new
- int m_propagationLevel;
-
-#if WXWIN_COMPATIBILITY_2_4
-public:
-#else
-protected:
-#endif
- bool m_skipped;
- bool m_isCommandEvent;
-
-private:
- // it needs to access our m_propagationLevel
- friend class WXDLLIMPEXP_FWD_BASE wxPropagateOnce;
-
- DECLARE_ABSTRACT_CLASS(wxEvent)
-};
-
-/*
- * Helper class to temporarily change an event not to propagate.
- */
-class WXDLLIMPEXP_BASE wxPropagationDisabler
-{
-public:
- wxPropagationDisabler(wxEvent& event) : m_event(event)
- {
- m_propagationLevelOld = m_event.StopPropagation();
- }
-
- ~wxPropagationDisabler()
- {
- m_event.ResumePropagation(m_propagationLevelOld);
- }
-
-private:
- wxEvent& m_event;
- int m_propagationLevelOld;
-
- DECLARE_NO_COPY_CLASS(wxPropagationDisabler)
-};
-
-/*
- * Another one to temporarily lower propagation level.
- */
-class WXDLLIMPEXP_BASE wxPropagateOnce
-{
-public:
- wxPropagateOnce(wxEvent& event) : m_event(event)
- {
- wxASSERT_MSG( m_event.m_propagationLevel > 0,
- _T("shouldn't be used unless ShouldPropagate()!") );
-
- m_event.m_propagationLevel--;
- }
-
- ~wxPropagateOnce()
- {
- m_event.m_propagationLevel++;
- }
-
-private:
- wxEvent& m_event;
-
- DECLARE_NO_COPY_CLASS(wxPropagateOnce)
-};
-
-#if wxUSE_GUI
-
-
-// Item or menu event class
-/*
- wxEVT_COMMAND_BUTTON_CLICKED
- wxEVT_COMMAND_CHECKBOX_CLICKED
- wxEVT_COMMAND_CHOICE_SELECTED
- wxEVT_COMMAND_LISTBOX_SELECTED
- wxEVT_COMMAND_LISTBOX_DOUBLECLICKED
- wxEVT_COMMAND_TEXT_UPDATED
- wxEVT_COMMAND_TEXT_ENTER
- wxEVT_COMMAND_MENU_SELECTED
- wxEVT_COMMAND_SLIDER_UPDATED
- wxEVT_COMMAND_RADIOBOX_SELECTED
- wxEVT_COMMAND_RADIOBUTTON_SELECTED
- wxEVT_COMMAND_SCROLLBAR_UPDATED
- wxEVT_COMMAND_VLBOX_SELECTED
- wxEVT_COMMAND_COMBOBOX_SELECTED
- wxEVT_COMMAND_TOGGLEBUTTON_CLICKED
-*/
-
-#if WXWIN_COMPATIBILITY_2_4
-// Backwards compatibility for wxCommandEvent::m_commandString, will lead to compilation errors in some cases of usage
-class WXDLLIMPEXP_CORE wxCommandEvent;
-
-class WXDLLIMPEXP_CORE wxCommandEventStringHelper
-{
-public:
- wxCommandEventStringHelper(wxCommandEvent * evt)
- : m_evt(evt)
- { }
-
- void operator=(const wxString &str);
- operator wxString();
- const wxChar* c_str() const;
-
-private:
- wxCommandEvent* m_evt;
-};
-#endif
-
-class WXDLLIMPEXP_CORE wxCommandEvent : public wxEvent
-{
-public:
- wxCommandEvent(wxEventType commandType = wxEVT_NULL, int winid = 0);
-
- wxCommandEvent(const wxCommandEvent& event)
- : wxEvent(event),
-#if WXWIN_COMPATIBILITY_2_4
- m_commandString(this),
-#endif
- m_cmdString(event.m_cmdString),
- m_commandInt(event.m_commandInt),
- m_extraLong(event.m_extraLong),
- m_clientData(event.m_clientData),
- m_clientObject(event.m_clientObject)
- { }
-
- // Set/Get client data from controls
- void SetClientData(void* clientData) { m_clientData = clientData; }
- void *GetClientData() const { return m_clientData; }
-
- // Set/Get client object from controls
- void SetClientObject(wxClientData* clientObject) { m_clientObject = clientObject; }
- wxClientData *GetClientObject() const { return m_clientObject; }
-
- // Get listbox selection if single-choice
- int GetSelection() const { return m_commandInt; }
-
- // Set/Get listbox/choice selection string
- void SetString(const wxString& s) { m_cmdString = s; }
- wxString GetString() const;
-
- // Get checkbox value
- bool IsChecked() const { return m_commandInt != 0; }
-
- // true if the listbox event was a selection.
- bool IsSelection() const { return (m_extraLong != 0); }
-
- void SetExtraLong(long extraLong) { m_extraLong = extraLong; }
- long GetExtraLong() const { return m_extraLong; }
-
- void SetInt(int i) { m_commandInt = i; }
- int GetInt() const { return m_commandInt; }
-
- virtual wxEvent *Clone() const { return new wxCommandEvent(*this); }
-
-#if WXWIN_COMPATIBILITY_2_4
-public:
- wxCommandEventStringHelper m_commandString;
-#else
-protected:
-#endif
- wxString m_cmdString; // String event argument
- int m_commandInt;
- long m_extraLong; // Additional information (e.g. select/deselect)
- void* m_clientData; // Arbitrary client data
- wxClientData* m_clientObject; // Arbitrary client object
-
-private:
- DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxCommandEvent)
-};
-
-#if WXWIN_COMPATIBILITY_2_4
-inline void wxCommandEventStringHelper::operator=(const wxString &str)
-{
- m_evt->SetString(str);
-}
-
-inline wxCommandEventStringHelper::operator wxString()
-{
- return m_evt->GetString();
-}
-
-inline const wxChar* wxCommandEventStringHelper::c_str() const
-{
- return m_evt->GetString().c_str();
-}
-#endif
-
-// this class adds a possibility to react (from the user) code to a control
-// notification: allow or veto the operation being reported.
-class WXDLLIMPEXP_CORE wxNotifyEvent : public wxCommandEvent
-{
-public:
- wxNotifyEvent(wxEventType commandType = wxEVT_NULL, int winid = 0)
- : wxCommandEvent(commandType, winid)
- { m_bAllow = true; }
-
- wxNotifyEvent(const wxNotifyEvent& event)
- : wxCommandEvent(event)
- { m_bAllow = event.m_bAllow; }
-
- // veto the operation (usually it's allowed by default)
- void Veto() { m_bAllow = false; }
-
- // allow the operation if it was disabled by default
- void Allow() { m_bAllow = true; }
-
- // for implementation code only: is the operation allowed?
- bool IsAllowed() const { return m_bAllow; }
-
- virtual wxEvent *Clone() const { return new wxNotifyEvent(*this); }
-
-private:
- bool m_bAllow;
-
-private:
- DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxNotifyEvent)
-};
-
-// Scroll event class, derived form wxCommandEvent. wxScrollEvents are
-// sent by wxSlider and wxScrollBar.
-/*
- wxEVT_SCROLL_TOP
- wxEVT_SCROLL_BOTTOM
- wxEVT_SCROLL_LINEUP
- wxEVT_SCROLL_LINEDOWN
- wxEVT_SCROLL_PAGEUP
- wxEVT_SCROLL_PAGEDOWN
- wxEVT_SCROLL_THUMBTRACK
- wxEVT_SCROLL_THUMBRELEASE
- wxEVT_SCROLL_CHANGED
-*/
-
-class WXDLLIMPEXP_CORE wxScrollEvent : public wxCommandEvent
-{
-public:
- wxScrollEvent(wxEventType commandType = wxEVT_NULL,
- int winid = 0, int pos = 0, int orient = 0);
-
- int GetOrientation() const { return (int) m_extraLong; }
- int GetPosition() const { return m_commandInt; }
- void SetOrientation(int orient) { m_extraLong = (long) orient; }
- void SetPosition(int pos) { m_commandInt = pos; }
-
- virtual wxEvent *Clone() const { return new wxScrollEvent(*this); }
-
-private:
- DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxScrollEvent)
-};
-
-// ScrollWin event class, derived fom wxEvent. wxScrollWinEvents
-// are sent by wxWindow.
-/*
- wxEVT_SCROLLWIN_TOP
- wxEVT_SCROLLWIN_BOTTOM
- wxEVT_SCROLLWIN_LINEUP
- wxEVT_SCROLLWIN_LINEDOWN
- wxEVT_SCROLLWIN_PAGEUP
- wxEVT_SCROLLWIN_PAGEDOWN
- wxEVT_SCROLLWIN_THUMBTRACK
- wxEVT_SCROLLWIN_THUMBRELEASE
-*/
-
-class WXDLLIMPEXP_CORE wxScrollWinEvent : public wxEvent
-{
-public:
- wxScrollWinEvent(wxEventType commandType = wxEVT_NULL,
- int pos = 0, int orient = 0);
- wxScrollWinEvent(const wxScrollWinEvent & event) : wxEvent(event)
- { m_commandInt = event.m_commandInt;
- m_extraLong = event.m_extraLong; }
-
- int GetOrientation() const { return (int) m_extraLong; }
- int GetPosition() const { return m_commandInt; }
- void SetOrientation(int orient) { m_extraLong = (long) orient; }
- void SetPosition(int pos) { m_commandInt = pos; }
-
- virtual wxEvent *Clone() const { return new wxScrollWinEvent(*this); }
-
-#if WXWIN_COMPATIBILITY_2_4
-public:
-#else
-protected:
-#endif
- int m_commandInt;
- long m_extraLong;
-
-private:
- DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxScrollWinEvent)
-};
-
-// Mouse event class
-
-/*
- wxEVT_LEFT_DOWN
- wxEVT_LEFT_UP
- wxEVT_MIDDLE_DOWN
- wxEVT_MIDDLE_UP
- wxEVT_RIGHT_DOWN
- wxEVT_RIGHT_UP
- wxEVT_MOTION
- wxEVT_ENTER_WINDOW
- wxEVT_LEAVE_WINDOW
- wxEVT_LEFT_DCLICK
- wxEVT_MIDDLE_DCLICK
- wxEVT_RIGHT_DCLICK
- wxEVT_NC_LEFT_DOWN
- wxEVT_NC_LEFT_UP,
- wxEVT_NC_MIDDLE_DOWN,
- wxEVT_NC_MIDDLE_UP,
- wxEVT_NC_RIGHT_DOWN,
- wxEVT_NC_RIGHT_UP,
- wxEVT_NC_MOTION,
- wxEVT_NC_ENTER_WINDOW,
- wxEVT_NC_LEAVE_WINDOW,
- wxEVT_NC_LEFT_DCLICK,
- wxEVT_NC_MIDDLE_DCLICK,
- wxEVT_NC_RIGHT_DCLICK,
-*/
-
-// the symbolic names for the mouse buttons
-enum
-{
- wxMOUSE_BTN_ANY = -1,
- wxMOUSE_BTN_NONE = 0,
- wxMOUSE_BTN_LEFT = 1,
- wxMOUSE_BTN_MIDDLE = 2,
- wxMOUSE_BTN_RIGHT = 3
-};
-
-class WXDLLIMPEXP_CORE wxMouseEvent : public wxEvent
-{
-public:
- wxMouseEvent(wxEventType mouseType = wxEVT_NULL);
- wxMouseEvent(const wxMouseEvent& event) : wxEvent(event)
- { Assign(event); }
-
- // Was it a button event? (*doesn't* mean: is any button *down*?)
- bool IsButton() const { return Button(wxMOUSE_BTN_ANY); }
-
- // Was it a down event from this (or any) button?
- bool ButtonDown(int but = wxMOUSE_BTN_ANY) const;
-
- // Was it a dclick event from this (or any) button?
- bool ButtonDClick(int but = wxMOUSE_BTN_ANY) const;
-
- // Was it a up event from this (or any) button?
- bool ButtonUp(int but = wxMOUSE_BTN_ANY) const;
-
- // Was the given button?
- bool Button(int but) const;
-
- // Was the given button in Down state?
- bool ButtonIsDown(int but) const;
-
- // Get the button which is changing state (wxMOUSE_BTN_NONE if none)
- int GetButton() const;
-
- // Find state of shift/control keys
- bool ControlDown() const { return m_controlDown; }
- bool MetaDown() const { return m_metaDown; }
- bool AltDown() const { return m_altDown; }
- bool ShiftDown() const { return m_shiftDown; }
- bool CmdDown() const
- {
-#if defined(__WXMAC__) || defined(__WXCOCOA__)
- return MetaDown();
-#else
- return ControlDown();
-#endif
- }
-
- // Find which event was just generated
- bool LeftDown() const { return (m_eventType == wxEVT_LEFT_DOWN); }
- bool MiddleDown() const { return (m_eventType == wxEVT_MIDDLE_DOWN); }
- bool RightDown() const { return (m_eventType == wxEVT_RIGHT_DOWN); }
-
- bool LeftUp() const { return (m_eventType == wxEVT_LEFT_UP); }
- bool MiddleUp() const { return (m_eventType == wxEVT_MIDDLE_UP); }
- bool RightUp() const { return (m_eventType == wxEVT_RIGHT_UP); }
-
- bool LeftDClick() const { return (m_eventType == wxEVT_LEFT_DCLICK); }
- bool MiddleDClick() const { return (m_eventType == wxEVT_MIDDLE_DCLICK); }
- bool RightDClick() const { return (m_eventType == wxEVT_RIGHT_DCLICK); }
-
- // Find the current state of the mouse buttons (regardless
- // of current event type)
- bool LeftIsDown() const { return m_leftDown; }
- bool MiddleIsDown() const { return m_middleDown; }
- bool RightIsDown() const { return m_rightDown; }
-
- // True if a button is down and the mouse is moving
- bool Dragging() const
- {
- return (m_eventType == wxEVT_MOTION) && ButtonIsDown(wxMOUSE_BTN_ANY);
- }
-
- // True if the mouse is moving, and no button is down
- bool Moving() const
- {
- return (m_eventType == wxEVT_MOTION) && !ButtonIsDown(wxMOUSE_BTN_ANY);
- }
-
- // True if the mouse is just entering the window
- bool Entering() const { return (m_eventType == wxEVT_ENTER_WINDOW); }
-
- // True if the mouse is just leaving the window
- bool Leaving() const { return (m_eventType == wxEVT_LEAVE_WINDOW); }
-
- // Find the position of the event
- void GetPosition(wxCoord *xpos, wxCoord *ypos) const
- {
- if (xpos)
- *xpos = m_x;
- if (ypos)
- *ypos = m_y;
- }
-
- void GetPosition(long *xpos, long *ypos) const
- {
- if (xpos)
- *xpos = (long)m_x;
- if (ypos)
- *ypos = (long)m_y;
- }
-
- // Find the position of the event
- wxPoint GetPosition() const { return wxPoint(m_x, m_y); }
-
- // Find the logical position of the event given the DC
- wxPoint GetLogicalPosition(const wxDC& dc) const;
-
- // Get X position
- wxCoord GetX() const { return m_x; }
-
- // Get Y position
- wxCoord GetY() const { return m_y; }
-
- // Get wheel rotation, positive or negative indicates direction of
- // rotation. Current devices all send an event when rotation is equal to
- // +/-WheelDelta, but this allows for finer resolution devices to be
- // created in the future. Because of this you shouldn't assume that one
- // event is equal to 1 line or whatever, but you should be able to either
- // do partial line scrolling or wait until +/-WheelDelta rotation values
- // have been accumulated before scrolling.
- int GetWheelRotation() const { return m_wheelRotation; }
-
- // Get wheel delta, normally 120. This is the threshold for action to be
- // taken, and one such action (for example, scrolling one increment)
- // should occur for each delta.
- int GetWheelDelta() const { return m_wheelDelta; }
-
- // Returns the configured number of lines (or whatever) to be scrolled per
- // wheel action. Defaults to one.
- int GetLinesPerAction() const { return m_linesPerAction; }
-
- // Is the system set to do page scrolling?
- bool IsPageScroll() const { return ((unsigned int)m_linesPerAction == UINT_MAX); }
-
- virtual wxEvent *Clone() const { return new wxMouseEvent(*this); }
-
- wxMouseEvent& operator=(const wxMouseEvent& event) { Assign(event); return *this; }
-
-public:
- wxCoord m_x, m_y;
-
- bool m_leftDown;
- bool m_middleDown;
- bool m_rightDown;
-
- bool m_controlDown;
- bool m_shiftDown;
- bool m_altDown;
- bool m_metaDown;
-
- int m_wheelRotation;
- int m_wheelDelta;
- int m_linesPerAction;
-
-protected:
- void Assign(const wxMouseEvent& evt);
-
-private:
- DECLARE_DYNAMIC_CLASS(wxMouseEvent)
-};
-
-// Cursor set event
-
-/*
- wxEVT_SET_CURSOR
- */
-
-class WXDLLIMPEXP_CORE wxSetCursorEvent : public wxEvent
-{
-public:
- wxSetCursorEvent(wxCoord x = 0, wxCoord y = 0)
- : wxEvent(0, wxEVT_SET_CURSOR),
- m_x(x), m_y(y), m_cursor()
- { }
-
- wxSetCursorEvent(const wxSetCursorEvent & event)
- : wxEvent(event),
- m_x(event.m_x),
- m_y(event.m_y),
- m_cursor(event.m_cursor)
- { }
-
- wxCoord GetX() const { return m_x; }
- wxCoord GetY() const { return m_y; }
-
- void SetCursor(const wxCursor& cursor) { m_cursor = cursor; }
- const wxCursor& GetCursor() const { return m_cursor; }
- bool HasCursor() const { return m_cursor.Ok(); }
-
- virtual wxEvent *Clone() const { return new wxSetCursorEvent(*this); }
-
-private:
- wxCoord m_x, m_y;
- wxCursor m_cursor;
-
-private:
- DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxSetCursorEvent)
-};
-
-// Keyboard input event class
-
-/*
- wxEVT_CHAR
- wxEVT_CHAR_HOOK
- wxEVT_KEY_DOWN
- wxEVT_KEY_UP
- wxEVT_HOTKEY
- */
-
-class WXDLLIMPEXP_CORE wxKeyEvent : public wxEvent
-{
-public:
- wxKeyEvent(wxEventType keyType = wxEVT_NULL);
- wxKeyEvent(const wxKeyEvent& evt);
-
- // can be used check if the key event has exactly the given modifiers:
- // "GetModifiers() = wxMOD_CONTROL" is easier to write than "ControlDown()
- // && !MetaDown() && !AltDown() && !ShiftDown()"
- int GetModifiers() const
- {
- return (m_controlDown ? wxMOD_CONTROL : 0) |
- (m_shiftDown ? wxMOD_SHIFT : 0) |
- (m_metaDown ? wxMOD_META : 0) |
- (m_altDown ? wxMOD_ALT : 0);
- }
-
- // Find state of shift/control keys
- bool ControlDown() const { return m_controlDown; }
- bool ShiftDown() const { return m_shiftDown; }
- bool MetaDown() const { return m_metaDown; }
- bool AltDown() const { return m_altDown; }
-
- // "Cmd" is a pseudo key which is Control for PC and Unix platforms but
- // Apple ("Command") key under Macs: it makes often sense to use it instead
- // of, say, ControlDown() because Cmd key is used for the same thing under
- // Mac as Ctrl elsewhere (but Ctrl still exists, just not used for this
- // purpose under Mac)
- bool CmdDown() const
- {
-#if defined(__WXMAC__) || defined(__WXCOCOA__)
- return MetaDown();
-#else
- return ControlDown();
-#endif
- }
-
- // exclude MetaDown() from HasModifiers() because NumLock under X is often
- // configured as mod2 modifier, yet the key events even when it is pressed
- // should be processed normally, not like Ctrl- or Alt-key
- bool HasModifiers() const { return ControlDown() || AltDown(); }
-
- // get the key code: an ASCII7 char or an element of wxKeyCode enum
- int GetKeyCode() const { return (int)m_keyCode; }
-
-#if wxUSE_UNICODE
- // get the Unicode character corresponding to this key
- wxChar GetUnicodeKey() const { return m_uniChar; }
-#endif // wxUSE_UNICODE
-
- // get the raw key code (platform-dependent)
- wxUint32 GetRawKeyCode() const { return m_rawCode; }
-
- // get the raw key flags (platform-dependent)
- wxUint32 GetRawKeyFlags() const { return m_rawFlags; }
-
- // Find the position of the event
- void GetPosition(wxCoord *xpos, wxCoord *ypos) const
- {
- if (xpos) *xpos = m_x;
- if (ypos) *ypos = m_y;
- }
-
- void GetPosition(long *xpos, long *ypos) const
- {
- if (xpos) *xpos = (long)m_x;
- if (ypos) *ypos = (long)m_y;
- }
-
- wxPoint GetPosition() const
- { return wxPoint(m_x, m_y); }
-
- // Get X position
- wxCoord GetX() const { return m_x; }
-
- // Get Y position
- wxCoord GetY() const { return m_y; }
-
-#if WXWIN_COMPATIBILITY_2_6
- // deprecated, Use GetKeyCode instead.
- wxDEPRECATED( long KeyCode() const );
-#endif // WXWIN_COMPATIBILITY_2_6
-
- virtual wxEvent *Clone() const { return new wxKeyEvent(*this); }
-
- // we do need to copy wxKeyEvent sometimes (in wxTreeCtrl code, for
- // example)
- wxKeyEvent& operator=(const wxKeyEvent& evt)
- {
- m_x = evt.m_x;
- m_y = evt.m_y;
-
- m_keyCode = evt.m_keyCode;
-
- m_controlDown = evt.m_controlDown;
- m_shiftDown = evt.m_shiftDown;
- m_altDown = evt.m_altDown;
- m_metaDown = evt.m_metaDown;
- m_scanCode = evt.m_scanCode;
- m_rawCode = evt.m_rawCode;
- m_rawFlags = evt.m_rawFlags;
-#if wxUSE_UNICODE
- m_uniChar = evt.m_uniChar;
-#endif
-
- return *this;
- }
-
-public:
- wxCoord m_x, m_y;
-
- long m_keyCode;
-
- // TODO: replace those with a single m_modifiers bitmask of wxMOD_XXX?
- bool m_controlDown;
- bool m_shiftDown;
- bool m_altDown;
- bool m_metaDown;
-
- // FIXME: what is this for? relation to m_rawXXX?
- bool m_scanCode;
-
-#if wxUSE_UNICODE
- // This contains the full Unicode character
- // in a character events in Unicode mode
- wxChar m_uniChar;
-#endif
-
- // these fields contain the platform-specific information about
- // key that was pressed
- wxUint32 m_rawCode;
- wxUint32 m_rawFlags;
-
-private:
- DECLARE_DYNAMIC_CLASS(wxKeyEvent)
-};
-
-// Size event class
-/*
- wxEVT_SIZE
- */
-
-class WXDLLIMPEXP_CORE wxSizeEvent : public wxEvent
-{
-public:
- wxSizeEvent() : wxEvent(0, wxEVT_SIZE)
- { }
- wxSizeEvent(const wxSize& sz, int winid = 0)
- : wxEvent(winid, wxEVT_SIZE),
- m_size(sz)
- { }
- wxSizeEvent(const wxSizeEvent & event)
- : wxEvent(event),
- m_size(event.m_size), m_rect(event.m_rect)
- { }
- wxSizeEvent(const wxRect& rect, int id = 0)
- : m_size(rect.GetSize()), m_rect(rect)
- { m_eventType = wxEVT_SIZING; m_id = id; }
-
- wxSize GetSize() const { return m_size; }
- wxRect GetRect() const { return m_rect; }
- void SetRect(const wxRect& rect) { m_rect = rect; }
-
- virtual wxEvent *Clone() const { return new wxSizeEvent(*this); }
-
-public:
- // For internal usage only. Will be converted to protected members.
- wxSize m_size;
- wxRect m_rect; // Used for wxEVT_SIZING
-
-private:
- DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxSizeEvent)
-};
-
-// Move event class
-
-/*
- wxEVT_MOVE
- */
-
-class WXDLLIMPEXP_CORE wxMoveEvent : public wxEvent
-{
-public:
- wxMoveEvent()
- : wxEvent(0, wxEVT_MOVE)
- { }
- wxMoveEvent(const wxPoint& pos, int winid = 0)
- : wxEvent(winid, wxEVT_MOVE),
- m_pos(pos)
- { }
- wxMoveEvent(const wxMoveEvent& event)
- : wxEvent(event),
- m_pos(event.m_pos)
- { }
- wxMoveEvent(const wxRect& rect, int id = 0)
- : m_pos(rect.GetPosition()), m_rect(rect)
- { m_eventType = wxEVT_MOVING; m_id = id; }
-
- wxPoint GetPosition() const { return m_pos; }
- void SetPosition(const wxPoint& pos) { m_pos = pos; }
- wxRect GetRect() const { return m_rect; }
- void SetRect(const wxRect& rect) { m_rect = rect; }
-
- virtual wxEvent *Clone() const { return new wxMoveEvent(*this); }
-
-#if WXWIN_COMPATIBILITY_2_4
-public:
-#else
-protected:
-#endif
- wxPoint m_pos;
- wxRect m_rect;
-
-private:
- DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxMoveEvent)
-};
-
-// Paint event class
-/*
- wxEVT_PAINT
- wxEVT_NC_PAINT
- wxEVT_PAINT_ICON
- */
-
-#if defined(__WXDEBUG__) && (defined(__WXMSW__) || defined(__WXPM__))
- // see comments in src/msw|os2/dcclient.cpp where g_isPainting is defined
- extern WXDLLIMPEXP_CORE int g_isPainting;
-#endif // debug
-
-class WXDLLIMPEXP_CORE wxPaintEvent : public wxEvent
-{
-public:
- wxPaintEvent(int Id = 0)
- : wxEvent(Id, wxEVT_PAINT)
- {
-#if defined(__WXDEBUG__) && (defined(__WXMSW__) || defined(__WXPM__))
- // set the internal flag for the duration of processing of WM_PAINT
- g_isPainting++;
-#endif // debug
- }
-
- // default copy ctor and dtor are normally fine, we only need them to keep
- // g_isPainting updated in debug build
-#if defined(__WXDEBUG__) && (defined(__WXMSW__) || defined(__WXPM__))
- wxPaintEvent(const wxPaintEvent& event)
- : wxEvent(event)
- {
- g_isPainting++;
- }
-
- virtual ~wxPaintEvent()
- {
- g_isPainting--;
- }
-#endif // debug
-
- virtual wxEvent *Clone() const { return new wxPaintEvent(*this); }
-
-private:
- DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxPaintEvent)
-};
-
-class WXDLLIMPEXP_CORE wxNcPaintEvent : public wxEvent
-{
-public:
- wxNcPaintEvent(int winid = 0)
- : wxEvent(winid, wxEVT_NC_PAINT)
- { }
-
- virtual wxEvent *Clone() const { return new wxNcPaintEvent(*this); }
-
-private:
- DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxNcPaintEvent)
-};
-
-// Erase background event class
-/*
- wxEVT_ERASE_BACKGROUND
- */
-
-class WXDLLIMPEXP_CORE wxEraseEvent : public wxEvent
-{
-public:
- wxEraseEvent(int Id = 0, wxDC *dc = (wxDC *) NULL)
- : wxEvent(Id, wxEVT_ERASE_BACKGROUND),
- m_dc(dc)
- { }
-
- wxEraseEvent(const wxEraseEvent& event)
- : wxEvent(event),
- m_dc(event.m_dc)
- { }
-
- wxDC *GetDC() const { return m_dc; }
-
- virtual wxEvent *Clone() const { return new wxEraseEvent(*this); }
-
-#if WXWIN_COMPATIBILITY_2_4
-public:
-#else
-protected:
-#endif
- wxDC *m_dc;
-
-private:
- DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxEraseEvent)
-};
-
-// Focus event class
-/*
- wxEVT_SET_FOCUS
- wxEVT_KILL_FOCUS
- */
-
-class WXDLLIMPEXP_CORE wxFocusEvent : public wxEvent
-{
-public:
- wxFocusEvent(wxEventType type = wxEVT_NULL, int winid = 0)
- : wxEvent(winid, type)
- { m_win = NULL; }
-
- wxFocusEvent(const wxFocusEvent& event)
- : wxEvent(event)
- { m_win = event.m_win; }
-
- // The window associated with this event is the window which had focus
- // before for SET event and the window which will have focus for the KILL
- // one. NB: it may be NULL in both cases!
- wxWindow *GetWindow() const { return m_win; }
- void SetWindow(wxWindow *win) { m_win = win; }
-
- virtual wxEvent *Clone() const { return new wxFocusEvent(*this); }
-
-private:
- wxWindow *m_win;
-
-private:
- DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxFocusEvent)
-};
-
-// wxChildFocusEvent notifies the parent that a child has got the focus: unlike
-// wxFocusEvent it is propagated upwards the window chain
-class WXDLLIMPEXP_CORE wxChildFocusEvent : public wxCommandEvent
-{
-public:
- wxChildFocusEvent(wxWindow *win = NULL);
-
- wxWindow *GetWindow() const { return (wxWindow *)GetEventObject(); }
-
- virtual wxEvent *Clone() const { return new wxChildFocusEvent(*this); }
-
-private:
- DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxChildFocusEvent)
-};
-
-// Activate event class
-/*
- wxEVT_ACTIVATE
- wxEVT_ACTIVATE_APP
- wxEVT_HIBERNATE
- */
-
-class WXDLLIMPEXP_CORE wxActivateEvent : public wxEvent
-{
-public:
- wxActivateEvent(wxEventType type = wxEVT_NULL, bool active = true, int Id = 0)
- : wxEvent(Id, type)
- { m_active = active; }
- wxActivateEvent(const wxActivateEvent& event)
- : wxEvent(event)
- { m_active = event.m_active; }
-
- bool GetActive() const { return m_active; }
-
- virtual wxEvent *Clone() const { return new wxActivateEvent(*this); }
-
-private:
- bool m_active;
-
-private:
- DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxActivateEvent)
-};
-
-// InitDialog event class
-/*
- wxEVT_INIT_DIALOG
- */
-
-class WXDLLIMPEXP_CORE wxInitDialogEvent : public wxEvent
-{
-public:
- wxInitDialogEvent(int Id = 0)
- : wxEvent(Id, wxEVT_INIT_DIALOG)
- { }
-
- virtual wxEvent *Clone() const { return new wxInitDialogEvent(*this); }
-
-private:
- DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxInitDialogEvent)
-};
-
-// Miscellaneous menu event class
-/*
- wxEVT_MENU_OPEN,
- wxEVT_MENU_CLOSE,
- wxEVT_MENU_HIGHLIGHT,
-*/
-
-class WXDLLIMPEXP_CORE wxMenuEvent : public wxEvent
-{
-public:
- wxMenuEvent(wxEventType type = wxEVT_NULL, int winid = 0, wxMenu* menu = NULL)
- : wxEvent(winid, type)
- { m_menuId = winid; m_menu = menu; }
- wxMenuEvent(const wxMenuEvent & event)
- : wxEvent(event)
- { m_menuId = event.m_menuId; m_menu = event.m_menu; }
-
- // only for wxEVT_MENU_HIGHLIGHT
- int GetMenuId() const { return m_menuId; }
-
- // only for wxEVT_MENU_OPEN/CLOSE
- bool IsPopup() const { return m_menuId == wxID_ANY; }
-
- // only for wxEVT_MENU_OPEN/CLOSE
- wxMenu* GetMenu() const { return m_menu; }
-
- virtual wxEvent *Clone() const { return new wxMenuEvent(*this); }
-
-private:
- int m_menuId;
- wxMenu* m_menu;
-
- DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxMenuEvent)
-};
-
-// Window close or session close event class
-/*
- wxEVT_CLOSE_WINDOW,
- wxEVT_END_SESSION,
- wxEVT_QUERY_END_SESSION
- */
-
-class WXDLLIMPEXP_CORE wxCloseEvent : public wxEvent
-{
-public:
- wxCloseEvent(wxEventType type = wxEVT_NULL, int winid = 0)
- : wxEvent(winid, type),
- m_loggingOff(true),
- m_veto(false), // should be false by default
- m_canVeto(true) {}
-
- wxCloseEvent(const wxCloseEvent & event)
- : wxEvent(event),
- m_loggingOff(event.m_loggingOff),
- m_veto(event.m_veto),
- m_canVeto(event.m_canVeto) {}
-
- void SetLoggingOff(bool logOff) { m_loggingOff = logOff; }
- bool GetLoggingOff() const
- {
- // m_loggingOff flag is only used by wxEVT_[QUERY_]END_SESSION, it
- // doesn't make sense for wxEVT_CLOSE_WINDOW
- wxASSERT_MSG( m_eventType != wxEVT_CLOSE_WINDOW,
- _T("this flag is for end session events only") );
-
- return m_loggingOff;
- }
-
- void Veto(bool veto = true)
- {
- // GetVeto() will return false anyhow...
- wxCHECK_RET( m_canVeto,
- wxT("call to Veto() ignored (can't veto this event)") );
-
- m_veto = veto;
- }
- void SetCanVeto(bool canVeto) { m_canVeto = canVeto; }
- bool CanVeto() const { return m_canVeto; }
- bool GetVeto() const { return m_canVeto && m_veto; }
-
- virtual wxEvent *Clone() const { return new wxCloseEvent(*this); }
-
-protected:
- bool m_loggingOff,
- m_veto,
- m_canVeto;
-
-private:
- DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxCloseEvent)
-};
-
-/*
- wxEVT_SHOW
- */
-
-class WXDLLIMPEXP_CORE wxShowEvent : public wxEvent
-{
-public:
- wxShowEvent(int winid = 0, bool show = false)
- : wxEvent(winid, wxEVT_SHOW)
- { m_show = show; }
- wxShowEvent(const wxShowEvent & event)
- : wxEvent(event)
- { m_show = event.m_show; }
-
- void SetShow(bool show) { m_show = show; }
- bool GetShow() const { return m_show; }
-
- virtual wxEvent *Clone() const { return new wxShowEvent(*this); }
-
-protected:
- bool m_show;
-
-private:
- DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxShowEvent)
-};
-
-/*
- wxEVT_ICONIZE
- */
-
-class WXDLLIMPEXP_CORE wxIconizeEvent : public wxEvent
-{
-public:
- wxIconizeEvent(int winid = 0, bool iconized = true)
- : wxEvent(winid, wxEVT_ICONIZE)
- { m_iconized = iconized; }
- wxIconizeEvent(const wxIconizeEvent & event)
- : wxEvent(event)
- { m_iconized = event.m_iconized; }
-
- // return true if the frame was iconized, false if restored
- bool Iconized() const { return m_iconized; }
-
- virtual wxEvent *Clone() const { return new wxIconizeEvent(*this); }
-
-protected:
- bool m_iconized;
-
-private:
- DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxIconizeEvent)
-};
-/*
- wxEVT_MAXIMIZE
- */
-
-class WXDLLIMPEXP_CORE wxMaximizeEvent : public wxEvent
-{
-public:
- wxMaximizeEvent(int winid = 0)
- : wxEvent(winid, wxEVT_MAXIMIZE)
- { }
-
- virtual wxEvent *Clone() const { return new wxMaximizeEvent(*this); }
-
-private:
- DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxMaximizeEvent)
-};
-
-// Joystick event class
-/*
- wxEVT_JOY_BUTTON_DOWN,
- wxEVT_JOY_BUTTON_UP,
- wxEVT_JOY_MOVE,
- wxEVT_JOY_ZMOVE
-*/
-
-// Which joystick? Same as Windows ids so no conversion necessary.
-enum
-{
- wxJOYSTICK1,
- wxJOYSTICK2
-};
-
-// Which button is down?
-enum
-{
- wxJOY_BUTTON_ANY = -1,
- wxJOY_BUTTON1 = 1,
- wxJOY_BUTTON2 = 2,
- wxJOY_BUTTON3 = 4,
- wxJOY_BUTTON4 = 8
-};
-
-class WXDLLIMPEXP_CORE wxJoystickEvent : public wxEvent
-{
-#if WXWIN_COMPATIBILITY_2_4
-public:
-#else
-protected:
-#endif
- wxPoint m_pos;
- int m_zPosition;
- int m_buttonChange; // Which button changed?
- int m_buttonState; // Which buttons are down?
- int m_joyStick; // Which joystick?
-
-public:
- wxJoystickEvent(wxEventType type = wxEVT_NULL,
- int state = 0,
- int joystick = wxJOYSTICK1,
- int change = 0)
- : wxEvent(0, type),
- m_pos(),
- m_zPosition(0),
- m_buttonChange(change),
- m_buttonState(state),
- m_joyStick(joystick)
- {
- }
- wxJoystickEvent(const wxJoystickEvent & event)
- : wxEvent(event),
- m_pos(event.m_pos),
- m_zPosition(event.m_zPosition),
- m_buttonChange(event.m_buttonChange),
- m_buttonState(event.m_buttonState),
- m_joyStick(event.m_joyStick)
- { }
-
- wxPoint GetPosition() const { return m_pos; }
- int GetZPosition() const { return m_zPosition; }
- int GetButtonState() const { return m_buttonState; }
- int GetButtonChange() const { return m_buttonChange; }
- int GetJoystick() const { return m_joyStick; }
-
- void SetJoystick(int stick) { m_joyStick = stick; }
- void SetButtonState(int state) { m_buttonState = state; }
- void SetButtonChange(int change) { m_buttonChange = change; }
- void SetPosition(const wxPoint& pos) { m_pos = pos; }
- void SetZPosition(int zPos) { m_zPosition = zPos; }
-
- // Was it a button event? (*doesn't* mean: is any button *down*?)
- bool IsButton() const { return ((GetEventType() == wxEVT_JOY_BUTTON_DOWN) ||
- (GetEventType() == wxEVT_JOY_BUTTON_UP)); }
-
- // Was it a move event?
- bool IsMove() const { return (GetEventType() == wxEVT_JOY_MOVE); }
-
- // Was it a zmove event?
- bool IsZMove() const { return (GetEventType() == wxEVT_JOY_ZMOVE); }
-
- // Was it a down event from button 1, 2, 3, 4 or any?
- bool ButtonDown(int but = wxJOY_BUTTON_ANY) const
- { return ((GetEventType() == wxEVT_JOY_BUTTON_DOWN) &&
- ((but == wxJOY_BUTTON_ANY) || (but == m_buttonChange))); }
-
- // Was it a up event from button 1, 2, 3 or any?
- bool ButtonUp(int but = wxJOY_BUTTON_ANY) const
- { return ((GetEventType() == wxEVT_JOY_BUTTON_UP) &&
- ((but == wxJOY_BUTTON_ANY) || (but == m_buttonChange))); }
-
- // Was the given button 1,2,3,4 or any in Down state?
- bool ButtonIsDown(int but = wxJOY_BUTTON_ANY) const
- { return (((but == wxJOY_BUTTON_ANY) && (m_buttonState != 0)) ||
- ((m_buttonState & but) == but)); }
-
- virtual wxEvent *Clone() const { return new wxJoystickEvent(*this); }
-
-private:
- DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxJoystickEvent)
-};
-
-// Drop files event class
-/*
- wxEVT_DROP_FILES
- */
-
-class WXDLLIMPEXP_CORE wxDropFilesEvent : public wxEvent
-{
-public:
- int m_noFiles;
- wxPoint m_pos;
- wxString* m_files;
-
- wxDropFilesEvent(wxEventType type = wxEVT_NULL,
- int noFiles = 0,
- wxString *files = (wxString *) NULL)
- : wxEvent(0, type),
- m_noFiles(noFiles),
- m_pos(),
- m_files(files)
- { }
-
- // we need a copy ctor to avoid deleting m_files pointer twice
- wxDropFilesEvent(const wxDropFilesEvent& other)
- : wxEvent(other),
- m_noFiles(other.m_noFiles),
- m_pos(other.m_pos),
- m_files(NULL)
- {
- m_files = new wxString[m_noFiles];
- for ( int n = 0; n < m_noFiles; n++ )
- {
- m_files[n] = other.m_files[n];
- }
- }
-
- virtual ~wxDropFilesEvent()
- {
- delete [] m_files;
- }
-
- wxPoint GetPosition() const { return m_pos; }
- int GetNumberOfFiles() const { return m_noFiles; }
- wxString *GetFiles() const { return m_files; }
-
- virtual wxEvent *Clone() const { return new wxDropFilesEvent(*this); }
-
-private:
- DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxDropFilesEvent)
-};
-
-// Update UI event
-/*
- wxEVT_UPDATE_UI
- */
-
-// Whether to always send update events to windows, or
-// to only send update events to those with the
-// wxWS_EX_PROCESS_UI_UPDATES style.
-
-enum wxUpdateUIMode
-{
- // Send UI update events to all windows
- wxUPDATE_UI_PROCESS_ALL,
-
- // Send UI update events to windows that have
- // the wxWS_EX_PROCESS_UI_UPDATES flag specified
- wxUPDATE_UI_PROCESS_SPECIFIED
-};
-
-class WXDLLIMPEXP_CORE wxUpdateUIEvent : public wxCommandEvent
-{
-public:
- wxUpdateUIEvent(wxWindowID commandId = 0)
- : wxCommandEvent(wxEVT_UPDATE_UI, commandId)
- {
- m_checked =
- m_enabled =
- m_shown =
- m_setEnabled =
- m_setShown =
- m_setText =
- m_setChecked = false;
- }
- wxUpdateUIEvent(const wxUpdateUIEvent & event)
- : wxCommandEvent(event),
- m_checked(event.m_checked),
- m_enabled(event.m_enabled),
- m_shown(event.m_shown),
- m_setEnabled(event.m_setEnabled),
- m_setShown(event.m_setShown),
- m_setText(event.m_setText),
- m_setChecked(event.m_setChecked),
- m_text(event.m_text)
- { }
-
- bool GetChecked() const { return m_checked; }
- bool GetEnabled() const { return m_enabled; }
- bool GetShown() const { return m_shown; }
- wxString GetText() const { return m_text; }
- bool GetSetText() const { return m_setText; }
- bool GetSetChecked() const { return m_setChecked; }
- bool GetSetEnabled() const { return m_setEnabled; }
- bool GetSetShown() const { return m_setShown; }
-
- void Check(bool check) { m_checked = check; m_setChecked = true; }
- void Enable(bool enable) { m_enabled = enable; m_setEnabled = true; }
- void Show(bool show) { m_shown = show; m_setShown = true; }
- void SetText(const wxString& text) { m_text = text; m_setText = true; }
-
- // Sets the interval between updates in milliseconds.
- // Set to -1 to disable updates, or to 0 to update as frequently as possible.
- static void SetUpdateInterval(long updateInterval) { sm_updateInterval = updateInterval; }
-
- // Returns the current interval between updates in milliseconds
- static long GetUpdateInterval() { return sm_updateInterval; }
-
- // Can we update this window?
- static bool CanUpdate(wxWindowBase *win);
-
- // Reset the update time to provide a delay until the next
- // time we should update
- static void ResetUpdateTime();
-
- // Specify how wxWidgets will send update events: to
- // all windows, or only to those which specify that they
- // will process the events.
- static void SetMode(wxUpdateUIMode mode) { sm_updateMode = mode; }
-
- // Returns the UI update mode
- static wxUpdateUIMode GetMode() { return sm_updateMode; }
-
- virtual wxEvent *Clone() const { return new wxUpdateUIEvent(*this); }
-
-protected:
- bool m_checked;
- bool m_enabled;
- bool m_shown;
- bool m_setEnabled;
- bool m_setShown;
- bool m_setText;
- bool m_setChecked;
- wxString m_text;
-#if wxUSE_LONGLONG
- static wxLongLong sm_lastUpdate;
-#endif
- static long sm_updateInterval;
- static wxUpdateUIMode sm_updateMode;
-
-private:
- DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxUpdateUIEvent)
-};
-
-/*
- wxEVT_SYS_COLOUR_CHANGED
- */
-
-// TODO: shouldn't all events record the window ID?
-class WXDLLIMPEXP_CORE wxSysColourChangedEvent : public wxEvent
-{
-public:
- wxSysColourChangedEvent()
- : wxEvent(0, wxEVT_SYS_COLOUR_CHANGED)
- { }
-
- virtual wxEvent *Clone() const { return new wxSysColourChangedEvent(*this); }
-
-private:
- DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxSysColourChangedEvent)
-};
-
-/*
- wxEVT_MOUSE_CAPTURE_CHANGED
- The window losing the capture receives this message
- (even if it released the capture itself).
- */
-
-class WXDLLIMPEXP_CORE wxMouseCaptureChangedEvent : public wxEvent
-{
-public:
- wxMouseCaptureChangedEvent(wxWindowID winid = 0, wxWindow* gainedCapture = NULL)
- : wxEvent(winid, wxEVT_MOUSE_CAPTURE_CHANGED),
- m_gainedCapture(gainedCapture)
- { }
-
- wxMouseCaptureChangedEvent(const wxMouseCaptureChangedEvent& event)
- : wxEvent(event),
- m_gainedCapture(event.m_gainedCapture)
- { }
-
- virtual wxEvent *Clone() const { return new wxMouseCaptureChangedEvent(*this); }
-
- wxWindow* GetCapturedWindow() const { return m_gainedCapture; }
-
-private:
- wxWindow* m_gainedCapture;
-
- DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxMouseCaptureChangedEvent)
-};
-
-/*
- wxEVT_MOUSE_CAPTURE_LOST
- The window losing the capture receives this message, unless it released it
- it itself or unless wxWindow::CaptureMouse was called on another window
- (and so capture will be restored when the new capturer releases it).
- */
-
-class WXDLLIMPEXP_CORE wxMouseCaptureLostEvent : public wxEvent
-{
-public:
- wxMouseCaptureLostEvent(wxWindowID winid = 0)
- : wxEvent(winid, wxEVT_MOUSE_CAPTURE_LOST)
- {}
-
- wxMouseCaptureLostEvent(const wxMouseCaptureLostEvent& event)
- : wxEvent(event)
- {}
-
- virtual wxEvent *Clone() const { return new wxMouseCaptureLostEvent(*this); }
-
- DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxMouseCaptureLostEvent)
-};
-
-/*
- wxEVT_DISPLAY_CHANGED
- */
-class WXDLLIMPEXP_CORE wxDisplayChangedEvent : public wxEvent
-{
-private:
- DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxDisplayChangedEvent)
-
-public:
- wxDisplayChangedEvent()
- : wxEvent(0, wxEVT_DISPLAY_CHANGED)
- { }
-
- virtual wxEvent *Clone() const { return new wxDisplayChangedEvent(*this); }
-};
-
-/*
- wxEVT_PALETTE_CHANGED
- */
-
-class WXDLLIMPEXP_CORE wxPaletteChangedEvent : public wxEvent
-{
-public:
- wxPaletteChangedEvent(wxWindowID winid = 0)
- : wxEvent(winid, wxEVT_PALETTE_CHANGED),
- m_changedWindow((wxWindow *) NULL)
- { }
-
- wxPaletteChangedEvent(const wxPaletteChangedEvent& event)
- : wxEvent(event),
- m_changedWindow(event.m_changedWindow)
- { }
-
- void SetChangedWindow(wxWindow* win) { m_changedWindow = win; }
- wxWindow* GetChangedWindow() const { return m_changedWindow; }
-
- virtual wxEvent *Clone() const { return new wxPaletteChangedEvent(*this); }
-
-protected:
- wxWindow* m_changedWindow;
-
-private:
- DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxPaletteChangedEvent)
-};
-
-/*
- wxEVT_QUERY_NEW_PALETTE
- Indicates the window is getting keyboard focus and should re-do its palette.
- */
-
-class WXDLLIMPEXP_CORE wxQueryNewPaletteEvent : public wxEvent
-{
-public:
- wxQueryNewPaletteEvent(wxWindowID winid = 0)
- : wxEvent(winid, wxEVT_QUERY_NEW_PALETTE),
- m_paletteRealized(false)
- { }
- wxQueryNewPaletteEvent(const wxQueryNewPaletteEvent & event)
- : wxEvent(event),
- m_paletteRealized(event.m_paletteRealized)
- { }
-
- // App sets this if it changes the palette.
- void SetPaletteRealized(bool realized) { m_paletteRealized = realized; }
- bool GetPaletteRealized() const { return m_paletteRealized; }
-
- virtual wxEvent *Clone() const { return new wxQueryNewPaletteEvent(*this); }
-
-protected:
- bool m_paletteRealized;
-
-private:
- DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxQueryNewPaletteEvent)
-};
-
-/*
- Event generated by dialog navigation keys
- wxEVT_NAVIGATION_KEY
- */
-// NB: don't derive from command event to avoid being propagated to the parent
-class WXDLLIMPEXP_CORE wxNavigationKeyEvent : public wxEvent
-{
-public:
- wxNavigationKeyEvent()
- : wxEvent(0, wxEVT_NAVIGATION_KEY),
- m_flags(IsForward | FromTab), // defaults are for TAB
- m_focus((wxWindow *)NULL)
- {
- m_propagationLevel = wxEVENT_PROPAGATE_NONE;
- }
-
- wxNavigationKeyEvent(const wxNavigationKeyEvent& event)
- : wxEvent(event),
- m_flags(event.m_flags),
- m_focus(event.m_focus)
- { }
-
- // direction: forward (true) or backward (false)
- bool GetDirection() const
- { return (m_flags & IsForward) != 0; }
- void SetDirection(bool bForward)
- { if ( bForward ) m_flags |= IsForward; else m_flags &= ~IsForward; }
-
- // it may be a window change event (MDI, notebook pages...) or a control
- // change event
- bool IsWindowChange() const
- { return (m_flags & WinChange) != 0; }
- void SetWindowChange(bool bIs)
- { if ( bIs ) m_flags |= WinChange; else m_flags &= ~WinChange; }
-
- // Set to true under MSW if the event was generated using the tab key.
- // This is required for proper navogation over radio buttons
- bool IsFromTab() const
- { return (m_flags & FromTab) != 0; }
- void SetFromTab(bool bIs)
- { if ( bIs ) m_flags |= FromTab; else m_flags &= ~FromTab; }
-
- // the child which has the focus currently (may be NULL - use
- // wxWindow::FindFocus then)
- wxWindow* GetCurrentFocus() const { return m_focus; }
- void SetCurrentFocus(wxWindow *win) { m_focus = win; }
-
- // Set flags
- void SetFlags(long flags) { m_flags = flags; }
-
- virtual wxEvent *Clone() const { return new wxNavigationKeyEvent(*this); }
-
- enum
- {
- IsBackward = 0x0000,
- IsForward = 0x0001,
- WinChange = 0x0002,
- FromTab = 0x0004
- };
-
- long m_flags;
- wxWindow *m_focus;
-
-private:
- DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxNavigationKeyEvent)
-};
-
-// Window creation/destruction events: the first is sent as soon as window is
-// created (i.e. the underlying GUI object exists), but when the C++ object is
-// fully initialized (so virtual functions may be called). The second,
-// wxEVT_DESTROY, is sent right before the window is destroyed - again, it's
-// still safe to call virtual functions at this moment
-/*
- wxEVT_CREATE
- wxEVT_DESTROY
- */
-
-class WXDLLIMPEXP_CORE wxWindowCreateEvent : public wxCommandEvent
-{
-public:
- wxWindowCreateEvent(wxWindow *win = NULL);
-
- wxWindow *GetWindow() const { return (wxWindow *)GetEventObject(); }
-
- virtual wxEvent *Clone() const { return new wxWindowCreateEvent(*this); }
-
-private:
- DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxWindowCreateEvent)
-};
-
-class WXDLLIMPEXP_CORE wxWindowDestroyEvent : public wxCommandEvent
-{
-public:
- wxWindowDestroyEvent(wxWindow *win = NULL);
-
- wxWindow *GetWindow() const { return (wxWindow *)GetEventObject(); }
-
- virtual wxEvent *Clone() const { return new wxWindowDestroyEvent(*this); }
-
-private:
- DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxWindowDestroyEvent)
-};
-
-// A help event is sent when the user clicks on a window in context-help mode.
-/*
- wxEVT_HELP
- wxEVT_DETAILED_HELP
-*/
-
-class WXDLLIMPEXP_CORE wxHelpEvent : public wxCommandEvent
-{
-public:
- // how was this help event generated?
- enum Origin
- {
- Origin_Unknown, // unrecognized event source
- Origin_Keyboard, // event generated from F1 key press
- Origin_HelpButton // event from [?] button on the title bar (Windows)
- };
-
- wxHelpEvent(wxEventType type = wxEVT_NULL,
- wxWindowID winid = 0,
- const wxPoint& pt = wxDefaultPosition,
- Origin origin = Origin_Unknown)
- : wxCommandEvent(type, winid),
- m_pos(pt),
- m_origin(GuessOrigin(origin))
- { }
- wxHelpEvent(const wxHelpEvent & event)
- : wxCommandEvent(event),
- m_pos(event.m_pos),
- m_target(event.m_target),
- m_link(event.m_link),
- m_origin(event.m_origin)
- { }
-
- // Position of event (in screen coordinates)
- const wxPoint& GetPosition() const { return m_pos; }
- void SetPosition(const wxPoint& pos) { m_pos = pos; }
-
- // Optional link to further help
- const wxString& GetLink() const { return m_link; }
- void SetLink(const wxString& link) { m_link = link; }
-
- // Optional target to display help in. E.g. a window specification
- const wxString& GetTarget() const { return m_target; }
- void SetTarget(const wxString& target) { m_target = target; }
-
- virtual wxEvent *Clone() const { return new wxHelpEvent(*this); }
-
- // optional indication of the event source
- Origin GetOrigin() const { return m_origin; }
- void SetOrigin(Origin origin) { m_origin = origin; }
-
-protected:
- wxPoint m_pos;
- wxString m_target;
- wxString m_link;
- Origin m_origin;
-
- // we can try to guess the event origin ourselves, even if none is
- // specified in the ctor
- static Origin GuessOrigin(Origin origin);
-
-private:
- DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxHelpEvent)
-};
-
-// A Clipboard Text event is sent when a window intercepts text copy/cut/paste
-// message, i.e. the user has cut/copied/pasted data from/into a text control
-// via ctrl-C/X/V, ctrl/shift-del/insert, a popup menu command, etc.
-// NOTE : under windows these events are *NOT* generated automatically
-// for a Rich Edit text control.
-/*
-wxEVT_COMMAND_TEXT_COPY
-wxEVT_COMMAND_TEXT_CUT
-wxEVT_COMMAND_TEXT_PASTE
-*/
-
-class WXDLLIMPEXP_CORE wxClipboardTextEvent : public wxCommandEvent
-{
-public:
- wxClipboardTextEvent(wxEventType type = wxEVT_NULL,
- wxWindowID winid = 0)
- : wxCommandEvent(type, winid)
- { }
- wxClipboardTextEvent(const wxClipboardTextEvent & event)
- : wxCommandEvent(event)
- { }
-
- virtual wxEvent *Clone() const { return new wxClipboardTextEvent(*this); }
-
-private:
- DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxClipboardTextEvent)
-};
-
-// A Context event is sent when the user right clicks on a window or
-// presses Shift-F10
-// NOTE : Under windows this is a repackaged WM_CONTETXMENU message
-// Under other systems it may have to be generated from a right click event
-/*
- wxEVT_CONTEXT_MENU
-*/
-
-class WXDLLIMPEXP_CORE wxContextMenuEvent : public wxCommandEvent
-{
-public:
- wxContextMenuEvent(wxEventType type = wxEVT_NULL,
- wxWindowID winid = 0,
- const wxPoint& pt = wxDefaultPosition)
- : wxCommandEvent(type, winid),
- m_pos(pt)
- { }
- wxContextMenuEvent(const wxContextMenuEvent & event)
- : wxCommandEvent(event),
- m_pos(event.m_pos)
- { }
-
- // Position of event (in screen coordinates)
- const wxPoint& GetPosition() const { return m_pos; }
- void SetPosition(const wxPoint& pos) { m_pos = pos; }
-
- virtual wxEvent *Clone() const { return new wxContextMenuEvent(*this); }
-
-protected:
- wxPoint m_pos;
-
-private:
- DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxContextMenuEvent)
-};
-
-// Idle event
-/*
- wxEVT_IDLE
- */
-
-// Whether to always send idle events to windows, or
-// to only send update events to those with the
-// wxWS_EX_PROCESS_IDLE style.
-
-enum wxIdleMode
-{
- // Send idle events to all windows
- wxIDLE_PROCESS_ALL,
-
- // Send idle events to windows that have
- // the wxWS_EX_PROCESS_IDLE flag specified
- wxIDLE_PROCESS_SPECIFIED
-};
-
-class WXDLLIMPEXP_CORE wxIdleEvent : public wxEvent
-{
-public:
- wxIdleEvent()
- : wxEvent(0, wxEVT_IDLE),
- m_requestMore(false)
- { }
- wxIdleEvent(const wxIdleEvent & event)
- : wxEvent(event),
- m_requestMore(event.m_requestMore)
- { }
-
- void RequestMore(bool needMore = true) { m_requestMore = needMore; }
- bool MoreRequested() const { return m_requestMore; }
-
- virtual wxEvent *Clone() const { return new wxIdleEvent(*this); }
-
- // Specify how wxWidgets will send idle events: to
- // all windows, or only to those which specify that they
- // will process the events.
- static void SetMode(wxIdleMode mode) { sm_idleMode = mode; }
-
- // Returns the idle event mode
- static wxIdleMode GetMode() { return sm_idleMode; }
-
- // Can we send an idle event?
- static bool CanSend(wxWindow* win);
-
-protected:
- bool m_requestMore;
- static wxIdleMode sm_idleMode;
-
-private:
- DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxIdleEvent)
-};
-
-#endif // wxUSE_GUI
-
-/* TODO
- wxEVT_MOUSE_CAPTURE_CHANGED,
- wxEVT_SETTING_CHANGED, // WM_WININICHANGE (NT) / WM_SETTINGCHANGE (Win95)
-// wxEVT_FONT_CHANGED, // WM_FONTCHANGE: roll into wxEVT_SETTING_CHANGED, but remember to propagate
- // wxEVT_FONT_CHANGED to all other windows (maybe).
- wxEVT_DRAW_ITEM, // Leave these three as virtual functions in wxControl?? Platform-specific.
- wxEVT_MEASURE_ITEM,
- wxEVT_COMPARE_ITEM
-*/
-
-
-// ============================================================================
-// event handler and related classes
-// ============================================================================
-
-// for backwards compatibility and to prevent eVC 4 for ARM from crashing with
-// internal compiler error when compiling wx, we define wxObjectEventFunction
-// as a wxObject method even though it can only be a wxEvtHandler one
-typedef void (wxObject::*wxObjectEventFunction)(wxEvent&);
-
-// we can't have ctors nor base struct in backwards compatibility mode or
-// otherwise we won't be able to initialize the objects with an agregate, so
-// we have to keep both versions
-#if WXWIN_COMPATIBILITY_EVENT_TYPES
-
-struct WXDLLIMPEXP_BASE wxEventTableEntry
-{
- // For some reason, this can't be wxEventType, or VC++ complains.
- int m_eventType; // main event type
- int m_id; // control/menu/toolbar id
- int m_lastId; // used for ranges of ids
- wxObjectEventFunction m_fn; // function to call: not wxEventFunction,
- // because of dependency problems
-
- wxObject* m_callbackUserData;
-};
-
-#else // !WXWIN_COMPATIBILITY_EVENT_TYPES
-
-// struct containing the members common to static and dynamic event tables
-// entries
-struct WXDLLIMPEXP_BASE wxEventTableEntryBase
-{
-private:
- wxEventTableEntryBase& operator=(const wxEventTableEntryBase& event);
-
-public:
- wxEventTableEntryBase(int winid, int idLast,
- wxObjectEventFunction fn, wxObject *data)
- : m_id(winid),
- m_lastId(idLast),
- m_fn(fn),
- m_callbackUserData(data)
- { }
-
- wxEventTableEntryBase(const wxEventTableEntryBase& event)
- : m_id(event.m_id),
- m_lastId(event.m_lastId),
- m_fn(event.m_fn),
- m_callbackUserData(event.m_callbackUserData)
- { }
-
- // the range of ids for this entry: if m_lastId == wxID_ANY, the range
- // consists only of m_id, otherwise it is m_id..m_lastId inclusive
- int m_id,
- m_lastId;
-
- // function to call: not wxEventFunction, because of dependency problems
- wxObjectEventFunction m_fn;
-
- // arbitrary user data asosciated with the callback
- wxObject* m_callbackUserData;
-};
-
-// an entry from a static event table
-struct WXDLLIMPEXP_BASE wxEventTableEntry : public wxEventTableEntryBase
-{
- wxEventTableEntry(const int& evType, int winid, int idLast,
- wxObjectEventFunction fn, wxObject *data)
- : wxEventTableEntryBase(winid, idLast, fn, data),
- m_eventType(evType)
- { }
-
- // the reference to event type: this allows us to not care about the
- // (undefined) order in which the event table entries and the event types
- // are initialized: initially the value of this reference might be
- // invalid, but by the time it is used for the first time, all global
- // objects will have been initialized (including the event type constants)
- // and so it will have the correct value when it is needed
- const int& m_eventType;
-
-private:
- wxEventTableEntry& operator=(const wxEventTableEntry&);
-};
-
-// an entry used in dynamic event table managed by wxEvtHandler::Connect()
-struct WXDLLIMPEXP_BASE wxDynamicEventTableEntry : public wxEventTableEntryBase
-{
- wxDynamicEventTableEntry(int evType, int winid, int idLast,
- wxObjectEventFunction fn, wxObject *data, wxEvtHandler* eventSink)
- : wxEventTableEntryBase(winid, idLast, fn, data),
- m_eventType(evType),
- m_eventSink(eventSink)
- { }
-
- // not a reference here as we can't keep a reference to a temporary int
- // created to wrap the constant value typically passed to Connect() - nor
- // do we need it
- int m_eventType;
-
- // Pointer to object whose function is fn - so we don't assume the
- // EventFunction is always a member of the EventHandler receiving the
- // message
- wxEvtHandler* m_eventSink;
-
- DECLARE_NO_COPY_CLASS(wxDynamicEventTableEntry)
-};
-
-#endif // !WXWIN_COMPATIBILITY_EVENT_TYPES
-
-// ----------------------------------------------------------------------------
-// wxEventTable: an array of event entries terminated with {0, 0, 0, 0, 0}
-// ----------------------------------------------------------------------------
-
-struct WXDLLIMPEXP_BASE wxEventTable
-{
- const wxEventTable *baseTable; // base event table (next in chain)
- const wxEventTableEntry *entries; // bottom of entry array
-};
-
-// ----------------------------------------------------------------------------
-// wxEventHashTable: a helper of wxEvtHandler to speed up wxEventTable lookups.
-// ----------------------------------------------------------------------------
-
-WX_DEFINE_ARRAY_PTR(const wxEventTableEntry*, wxEventTableEntryPointerArray);
-
-class WXDLLIMPEXP_BASE wxEventHashTable
-{
-private:
- // Internal data structs
- struct EventTypeTable
- {
- wxEventType eventType;
- wxEventTableEntryPointerArray eventEntryTable;
- };
- typedef EventTypeTable* EventTypeTablePointer;
-
-public:
- // Constructor, needs the event table it needs to hash later on.
- // Note: hashing of the event table is not done in the constructor as it
- // can be that the event table is not yet full initialize, the hash
- // will gets initialized when handling the first event look-up request.
- wxEventHashTable(const wxEventTable &table);
- // Destructor.
- ~wxEventHashTable();
-
- // Handle the given event, in other words search the event table hash
- // and call self->ProcessEvent() if a match was found.
- bool HandleEvent(wxEvent &event, wxEvtHandler *self);
-
- // Clear table
- void Clear();
-
- // Clear all tables
- static void ClearAll();
- // Rebuild all tables
- static void ReconstructAll();
-
-protected:
- // Init the hash table with the entries of the static event table.
- void InitHashTable();
- // Helper funtion of InitHashTable() to insert 1 entry into the hash table.
- void AddEntry(const wxEventTableEntry &entry);
- // Allocate and init with null pointers the base hash table.
- void AllocEventTypeTable(size_t size);
- // Grow the hash table in size and transfer all items currently
- // in the table to the correct location in the new table.
- void GrowEventTypeTable();
-
-protected:
- const wxEventTable &m_table;
- bool m_rebuildHash;
-
- size_t m_size;
- EventTypeTablePointer *m_eventTypeTable;
-
- static wxEventHashTable* sm_first;
- wxEventHashTable* m_previous;
- wxEventHashTable* m_next;
-
- DECLARE_NO_COPY_CLASS(wxEventHashTable)
-};
-
-// ----------------------------------------------------------------------------
-// wxEvtHandler: the base class for all objects handling wxWidgets events
-// ----------------------------------------------------------------------------
-
-class WXDLLIMPEXP_BASE wxEvtHandler : public wxObject
-{
-public:
- wxEvtHandler();
- virtual ~wxEvtHandler();
-
- wxEvtHandler *GetNextHandler() const { return m_nextHandler; }
- wxEvtHandler *GetPreviousHandler() const { return m_previousHandler; }
- void SetNextHandler(wxEvtHandler *handler) { m_nextHandler = handler; }
- void SetPreviousHandler(wxEvtHandler *handler) { m_previousHandler = handler; }
-
- void SetEvtHandlerEnabled(bool enabled) { m_enabled = enabled; }
- bool GetEvtHandlerEnabled() const { return m_enabled; }
-
- // process an event right now
- virtual bool ProcessEvent(wxEvent& event);
-
- // add an event to be processed later
- void AddPendingEvent(wxEvent& event);
-
- void ProcessPendingEvents();
-
-#if wxUSE_THREADS
- bool ProcessThreadEvent(wxEvent& event);
-#endif
-
- // Dynamic association of a member function handler with the event handler,
- // winid and event type
- void Connect(int winid,
- int lastId,
- int eventType,
- wxObjectEventFunction func,
- wxObject *userData = (wxObject *) NULL,
- wxEvtHandler *eventSink = (wxEvtHandler *) NULL);
-
- // Convenience function: take just one id
- void Connect(int winid,
- int eventType,
- wxObjectEventFunction func,
- wxObject *userData = (wxObject *) NULL,
- wxEvtHandler *eventSink = (wxEvtHandler *) NULL)
- { Connect(winid, wxID_ANY, eventType, func, userData, eventSink); }
-
- // Even more convenient: without id (same as using id of wxID_ANY)
- void Connect(int eventType,
- wxObjectEventFunction func,
- wxObject *userData = (wxObject *) NULL,
- wxEvtHandler *eventSink = (wxEvtHandler *) NULL)
- { Connect(wxID_ANY, wxID_ANY, eventType, func, userData, eventSink); }
-
- bool Disconnect(int winid,
- int lastId,
- wxEventType eventType,
- wxObjectEventFunction func = NULL,
- wxObject *userData = (wxObject *) NULL,
- wxEvtHandler *eventSink = (wxEvtHandler *) NULL);
-
- bool Disconnect(int winid = wxID_ANY,
- wxEventType eventType = wxEVT_NULL,
- wxObjectEventFunction func = NULL,
- wxObject *userData = (wxObject *) NULL,
- wxEvtHandler *eventSink = (wxEvtHandler *) NULL)
- { return Disconnect(winid, wxID_ANY, eventType, func, userData, eventSink); }
-
- bool Disconnect(wxEventType eventType,
- wxObjectEventFunction func,
- wxObject *userData = (wxObject *) NULL,
- wxEvtHandler *eventSink = (wxEvtHandler *) NULL)
- { return Disconnect(wxID_ANY, eventType, func, userData, eventSink); }
-
- wxList* GetDynamicEventTable() const { return m_dynamicEvents ; }
-
- // User data can be associated with each wxEvtHandler
- void SetClientObject( wxClientData *data ) { DoSetClientObject(data); }
- wxClientData *GetClientObject() const { return DoGetClientObject(); }
-
- void SetClientData( void *data ) { DoSetClientData(data); }
- void *GetClientData() const { return DoGetClientData(); }
-
- // check if the given event table entry matches this event and call the
- // handler if it does
- //
- // return true if the event was processed, false otherwise (no match or the
- // handler decided to skip the event)
- static bool ProcessEventIfMatches(const wxEventTableEntryBase& tableEntry,
- wxEvtHandler *handler,
- wxEvent& event);
-
- // implementation from now on
- virtual bool SearchEventTable(wxEventTable& table, wxEvent& event);
- bool SearchDynamicEventTable( wxEvent& event );
-
-#if wxUSE_THREADS
- void ClearEventLocker();
-#endif // wxUSE_THREADS
-
- // Avoid problems at exit by cleaning up static hash table gracefully
- void ClearEventHashTable() { GetEventHashTable().Clear(); }
-
-private:
- static const wxEventTableEntry sm_eventTableEntries[];
-
-protected:
- // hooks for wxWindow used by ProcessEvent()
- // -----------------------------------------
-
- // This one is called before trying our own event table to allow plugging
- // in the validators.
- //
- // NB: This method is intentionally *not* inside wxUSE_VALIDATORS!
- // It is part of wxBase which doesn't use validators and the code
- // is compiled out when building wxBase w/o GUI classes, which affects
- // binary compatibility and wxBase library can't be used by GUI
- // ports.
- virtual bool TryValidator(wxEvent& WXUNUSED(event)) { return false; }
-
- // this one is called after failing to find the event handle in our own
- // table to give a chance to the other windows to process it
- //
- // base class implementation passes the event to wxTheApp
- virtual bool TryParent(wxEvent& event);
-
-
- static const wxEventTable sm_eventTable;
- virtual const wxEventTable *GetEventTable() const;
-
- static wxEventHashTable sm_eventHashTable;
- virtual wxEventHashTable& GetEventHashTable() const;
-
- wxEvtHandler* m_nextHandler;
- wxEvtHandler* m_previousHandler;
- wxList* m_dynamicEvents;
- wxList* m_pendingEvents;
-
-#if wxUSE_THREADS
-#if defined (__VISAGECPP__)
- const wxCriticalSection& Lock() const { return m_eventsLocker; }
- wxCriticalSection& Lock() { return m_eventsLocker; }
-
- wxCriticalSection m_eventsLocker;
-# else
- const wxCriticalSection& Lock() const { return *m_eventsLocker; }
- wxCriticalSection& Lock() { return *m_eventsLocker; }
-
- wxCriticalSection* m_eventsLocker;
-# endif
-#endif
-
- // Is event handler enabled?
- bool m_enabled;
-
-
- // The user data: either an object which will be deleted by the container
- // when it's deleted or some raw pointer which we do nothing with - only
- // one type of data can be used with the given window (i.e. you cannot set
- // the void data and then associate the container with wxClientData or vice
- // versa)
- union
- {
- wxClientData *m_clientObject;
- void *m_clientData;
- };
-
- // what kind of data do we have?
- wxClientDataType m_clientDataType;
-
- // client data accessors
- virtual void DoSetClientObject( wxClientData *data );
- virtual wxClientData *DoGetClientObject() const;
-
- virtual void DoSetClientData( void *data );
- virtual void *DoGetClientData() const;
-
-private:
- DECLARE_DYNAMIC_CLASS_NO_COPY(wxEvtHandler)
-};
-
-// Post a message to the given eventhandler which will be processed during the
-// next event loop iteration
-inline void wxPostEvent(wxEvtHandler *dest, wxEvent& event)
-{
- wxCHECK_RET( dest, wxT("need an object to post event to in wxPostEvent") );
-
- dest->AddPendingEvent(event);
-}
-
-typedef void (wxEvtHandler::*wxEventFunction)(wxEvent&);
-
-#define wxEventHandler(func) \
- (wxObjectEventFunction)wxStaticCastEvent(wxEventFunction, &func)
-
-#if wxUSE_GUI
-
-typedef void (wxEvtHandler::*wxCommandEventFunction)(wxCommandEvent&);
-typedef void (wxEvtHandler::*wxScrollEventFunction)(wxScrollEvent&);
-typedef void (wxEvtHandler::*wxScrollWinEventFunction)(wxScrollWinEvent&);
-typedef void (wxEvtHandler::*wxSizeEventFunction)(wxSizeEvent&);
-typedef void (wxEvtHandler::*wxMoveEventFunction)(wxMoveEvent&);
-typedef void (wxEvtHandler::*wxPaintEventFunction)(wxPaintEvent&);
-typedef void (wxEvtHandler::*wxNcPaintEventFunction)(wxNcPaintEvent&);
-typedef void (wxEvtHandler::*wxEraseEventFunction)(wxEraseEvent&);
-typedef void (wxEvtHandler::*wxMouseEventFunction)(wxMouseEvent&);
-typedef void (wxEvtHandler::*wxCharEventFunction)(wxKeyEvent&);
-typedef void (wxEvtHandler::*wxFocusEventFunction)(wxFocusEvent&);
-typedef void (wxEvtHandler::*wxChildFocusEventFunction)(wxChildFocusEvent&);
-typedef void (wxEvtHandler::*wxActivateEventFunction)(wxActivateEvent&);
-typedef void (wxEvtHandler::*wxMenuEventFunction)(wxMenuEvent&);
-typedef void (wxEvtHandler::*wxJoystickEventFunction)(wxJoystickEvent&);
-typedef void (wxEvtHandler::*wxDropFilesEventFunction)(wxDropFilesEvent&);
-typedef void (wxEvtHandler::*wxInitDialogEventFunction)(wxInitDialogEvent&);
-typedef void (wxEvtHandler::*wxSysColourChangedEventFunction)(wxSysColourChangedEvent&);
-typedef void (wxEvtHandler::*wxDisplayChangedEventFunction)(wxDisplayChangedEvent&);
-typedef void (wxEvtHandler::*wxUpdateUIEventFunction)(wxUpdateUIEvent&);
-typedef void (wxEvtHandler::*wxIdleEventFunction)(wxIdleEvent&);
-typedef void (wxEvtHandler::*wxCloseEventFunction)(wxCloseEvent&);
-typedef void (wxEvtHandler::*wxShowEventFunction)(wxShowEvent&);
-typedef void (wxEvtHandler::*wxIconizeEventFunction)(wxIconizeEvent&);
-typedef void (wxEvtHandler::*wxMaximizeEventFunction)(wxMaximizeEvent&);
-typedef void (wxEvtHandler::*wxNavigationKeyEventFunction)(wxNavigationKeyEvent&);
-typedef void (wxEvtHandler::*wxPaletteChangedEventFunction)(wxPaletteChangedEvent&);
-typedef void (wxEvtHandler::*wxQueryNewPaletteEventFunction)(wxQueryNewPaletteEvent&);
-typedef void (wxEvtHandler::*wxWindowCreateEventFunction)(wxWindowCreateEvent&);
-typedef void (wxEvtHandler::*wxWindowDestroyEventFunction)(wxWindowDestroyEvent&);
-typedef void (wxEvtHandler::*wxSetCursorEventFunction)(wxSetCursorEvent&);
-typedef void (wxEvtHandler::*wxNotifyEventFunction)(wxNotifyEvent&);
-typedef void (wxEvtHandler::*wxHelpEventFunction)(wxHelpEvent&);
-typedef void (wxEvtHandler::*wxContextMenuEventFunction)(wxContextMenuEvent&);
-typedef void (wxEvtHandler::*wxMouseCaptureChangedEventFunction)(wxMouseCaptureChangedEvent&);
-typedef void (wxEvtHandler::*wxMouseCaptureLostEventFunction)(wxMouseCaptureLostEvent&);
-typedef void (wxEvtHandler::*wxClipboardTextEventFunction)(wxClipboardTextEvent&);
-
-// these typedefs don't have the same name structure as the others, keep for
-// backwards compatibility only
-#if WXWIN_COMPATIBILITY_2_4
- typedef wxSysColourChangedEventFunction wxSysColourChangedFunction;
- typedef wxDisplayChangedEventFunction wxDisplayChangedFunction;
-#endif // WXWIN_COMPATIBILITY_2_4
-
-
-#define wxCommandEventHandler(func) \
- (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxCommandEventFunction, &func)
-#define wxScrollEventHandler(func) \
- (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxScrollEventFunction, &func)
-#define wxScrollWinEventHandler(func) \
- (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxScrollWinEventFunction, &func)
-#define wxSizeEventHandler(func) \
- (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxSizeEventFunction, &func)
-#define wxMoveEventHandler(func) \
- (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxMoveEventFunction, &func)
-#define wxPaintEventHandler(func) \
- (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxPaintEventFunction, &func)
-#define wxNcPaintEventHandler(func) \
- (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxNcPaintEventFunction, &func)
-#define wxEraseEventHandler(func) \
- (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxEraseEventFunction, &func)
-#define wxMouseEventHandler(func) \
- (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxMouseEventFunction, &func)
-#define wxCharEventHandler(func) \
- (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxCharEventFunction, &func)
-#define wxKeyEventHandler(func) wxCharEventHandler(func)
-#define wxFocusEventHandler(func) \
- (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxFocusEventFunction, &func)
-#define wxChildFocusEventHandler(func) \
- (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxChildFocusEventFunction, &func)
-#define wxActivateEventHandler(func) \
- (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxActivateEventFunction, &func)
-#define wxMenuEventHandler(func) \
- (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxMenuEventFunction, &func)
-#define wxJoystickEventHandler(func) \
- (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxJoystickEventFunction, &func)
-#define wxDropFilesEventHandler(func) \
- (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxDropFilesEventFunction, &func)
-#define wxInitDialogEventHandler(func) \
- (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxInitDialogEventFunction, &func)
-#define wxSysColourChangedEventHandler(func) \
- (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxSysColourChangedEventFunction, &func)
-#define wxDisplayChangedEventHandler(func) \
- (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxDisplayChangedEventFunction, &func)
-#define wxUpdateUIEventHandler(func) \
- (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxUpdateUIEventFunction, &func)
-#define wxIdleEventHandler(func) \
- (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxIdleEventFunction, &func)
-#define wxCloseEventHandler(func) \
- (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxCloseEventFunction, &func)
-#define wxShowEventHandler(func) \
- (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxShowEventFunction, &func)
-#define wxIconizeEventHandler(func) \
- (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxIconizeEventFunction, &func)
-#define wxMaximizeEventHandler(func) \
- (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxMaximizeEventFunction, &func)
-#define wxNavigationKeyEventHandler(func) \
- (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxNavigationKeyEventFunction, &func)
-#define wxPaletteChangedEventHandler(func) \
- (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxPaletteChangedEventFunction, &func)
-#define wxQueryNewPaletteEventHandler(func) \
- (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxQueryNewPaletteEventFunction, &func)
-#define wxWindowCreateEventHandler(func) \
- (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxWindowCreateEventFunction, &func)
-#define wxWindowDestroyEventHandler(func) \
- (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxWindowDestroyEventFunction, &func)
-#define wxSetCursorEventHandler(func) \
- (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxSetCursorEventFunction, &func)
-#define wxNotifyEventHandler(func) \
- (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxNotifyEventFunction, &func)
-#define wxHelpEventHandler(func) \
- (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxHelpEventFunction, &func)
-#define wxContextMenuEventHandler(func) \
- (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxContextMenuEventFunction, &func)
-#define wxMouseCaptureChangedEventHandler(func) \
- (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxMouseCaptureChangedEventFunction, &func)
-#define wxMouseCaptureLostEventHandler(func) \
- (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxMouseCaptureLostEventFunction, &func)
-#define wxClipboardTextEventHandler(func) \
- (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxClipboardTextEventFunction, &func)
-
-#endif // wxUSE_GUI
-
-// N.B. In GNU-WIN32, you *have* to take the address of a member function
-// (use &) or the compiler crashes...
-
-#define DECLARE_EVENT_TABLE() \
- private: \
- static const wxEventTableEntry sm_eventTableEntries[]; \
- protected: \
- static const wxEventTable sm_eventTable; \
- virtual const wxEventTable* GetEventTable() const; \
- static wxEventHashTable sm_eventHashTable; \
- virtual wxEventHashTable& GetEventHashTable() const;
-
-// N.B.: when building DLL with Borland C++ 5.5 compiler, you must initialize
-// sm_eventTable before using it in GetEventTable() or the compiler gives
-// E2233 (see http://groups.google.com/groups?selm=397dcc8a%241_2%40dnews)
-
-#define BEGIN_EVENT_TABLE(theClass, baseClass) \
- const wxEventTable theClass::sm_eventTable = \
- { &baseClass::sm_eventTable, &theClass::sm_eventTableEntries[0] }; \
- const wxEventTable *theClass::GetEventTable() const \
- { return &theClass::sm_eventTable; } \
- wxEventHashTable theClass::sm_eventHashTable(theClass::sm_eventTable); \
- wxEventHashTable &theClass::GetEventHashTable() const \
- { return theClass::sm_eventHashTable; } \
- const wxEventTableEntry theClass::sm_eventTableEntries[] = { \
-
-#define BEGIN_EVENT_TABLE_TEMPLATE1(theClass, baseClass, T1) \
- template \
- const wxEventTable theClass::sm_eventTable = \
- { &baseClass::sm_eventTable, &theClass::sm_eventTableEntries[0] }; \
- template \
- const wxEventTable *theClass::GetEventTable() const \
- { return &theClass::sm_eventTable; } \
- template \
- wxEventHashTable theClass::sm_eventHashTable(theClass::sm_eventTable); \
- template \
- wxEventHashTable &theClass::GetEventHashTable() const \
- { return theClass::sm_eventHashTable; } \
- template \
- const wxEventTableEntry theClass::sm_eventTableEntries[] = { \
-
-#define BEGIN_EVENT_TABLE_TEMPLATE2(theClass, baseClass, T1, T2) \
- template \
- const wxEventTable theClass::sm_eventTable = \
- { &baseClass::sm_eventTable, &theClass::sm_eventTableEntries[0] }; \
- template \
- const wxEventTable *theClass::GetEventTable() const \
- { return &theClass::sm_eventTable; } \
- template \
- wxEventHashTable theClass::sm_eventHashTable(theClass::sm_eventTable); \
- template \
- wxEventHashTable &theClass::GetEventHashTable() const \
- { return theClass::sm_eventHashTable; } \
- template \
- const wxEventTableEntry theClass::sm_eventTableEntries[] = { \
-
-#define BEGIN_EVENT_TABLE_TEMPLATE3(theClass, baseClass, T1, T2, T3) \
- template \
- const wxEventTable theClass::sm_eventTable = \
- { &baseClass::sm_eventTable, &theClass::sm_eventTableEntries[0] }; \
- template \
- const wxEventTable *theClass::GetEventTable() const \
- { return &theClass::sm_eventTable; } \
- template \
- wxEventHashTable theClass::sm_eventHashTable(theClass::sm_eventTable); \
- template \
- wxEventHashTable &theClass::GetEventHashTable() const \
- { return theClass::sm_eventHashTable; } \
- template \
- const wxEventTableEntry theClass::sm_eventTableEntries[] = { \
-
-#define BEGIN_EVENT_TABLE_TEMPLATE4(theClass, baseClass, T1, T2, T3, T4) \
- template \
- const wxEventTable theClass::sm_eventTable = \
- { &baseClass::sm_eventTable, &theClass::sm_eventTableEntries[0] }; \
- template \
- const wxEventTable *theClass::GetEventTable() const \
- { return &theClass::sm_eventTable; } \
- template \
- wxEventHashTable theClass::sm_eventHashTable(theClass::sm_eventTable); \
- template \
- wxEventHashTable &theClass::GetEventHashTable() const \
- { return theClass::sm_eventHashTable; } \
- template \
- const wxEventTableEntry theClass::sm_eventTableEntries[] = { \
-
-#define BEGIN_EVENT_TABLE_TEMPLATE5(theClass, baseClass, T1, T2, T3, T4, T5) \
- template \
- const wxEventTable theClass::sm_eventTable = \
- { &baseClass::sm_eventTable, &theClass::sm_eventTableEntries[0] }; \
- template \
- const wxEventTable *theClass::GetEventTable() const \
- { return &theClass::sm_eventTable; } \
- template \
- wxEventHashTable theClass::sm_eventHashTable(theClass::sm_eventTable); \
- template \
- wxEventHashTable &theClass::GetEventHashTable() const \
- { return theClass::sm_eventHashTable; } \
- template \
- const wxEventTableEntry theClass::sm_eventTableEntries[] = { \
-
-#define BEGIN_EVENT_TABLE_TEMPLATE7(theClass, baseClass, T1, T2, T3, T4, T5, T6, T7) \
- template \
- const wxEventTable theClass::sm_eventTable = \
- { &baseClass::sm_eventTable, &theClass::sm_eventTableEntries[0] }; \
- template \
- const wxEventTable *theClass::GetEventTable() const \
- { return &theClass::sm_eventTable; } \
- template \
- wxEventHashTable theClass::sm_eventHashTable(theClass::sm_eventTable); \
- template \
- wxEventHashTable &theClass::GetEventHashTable() const \
- { return theClass::sm_eventHashTable; } \
- template \
- const wxEventTableEntry theClass::sm_eventTableEntries[] = { \
-
-#define BEGIN_EVENT_TABLE_TEMPLATE8(theClass, baseClass, T1, T2, T3, T4, T5, T6, T7, T8) \
- template \
- const wxEventTable theClass::sm_eventTable = \
- { &baseClass::sm_eventTable, &theClass::sm_eventTableEntries[0] }; \
- template \
- const wxEventTable *theClass::GetEventTable() const \
- { return &theClass::sm_eventTable; } \
- template \
- wxEventHashTable theClass::sm_eventHashTable(theClass::sm_eventTable); \
- template \
- wxEventHashTable &theClass::GetEventHashTable() const \
- { return theClass::sm_eventHashTable; } \
- template \
- const wxEventTableEntry theClass::sm_eventTableEntries[] = { \
-
-#define END_EVENT_TABLE() DECLARE_EVENT_TABLE_ENTRY( wxEVT_NULL, 0, 0, 0, 0 ) };
-
-/*
- * Event table macros
- */
-
-// helpers for writing shorter code below: declare an event macro taking 2, 1
-// or none ids (the missing ids default to wxID_ANY)
-//
-// macro arguments:
-// - evt one of wxEVT_XXX constants
-// - id1, id2 ids of the first/last id
-// - fn the function (should be cast to the right type)
-#define wx__DECLARE_EVT2(evt, id1, id2, fn) \
- DECLARE_EVENT_TABLE_ENTRY(evt, id1, id2, fn, NULL),
-#define wx__DECLARE_EVT1(evt, id, fn) \
- wx__DECLARE_EVT2(evt, id, wxID_ANY, fn)
-#define wx__DECLARE_EVT0(evt, fn) \
- wx__DECLARE_EVT1(evt, wxID_ANY, fn)
-
-
-// Generic events
-#define EVT_CUSTOM(event, winid, func) \
- wx__DECLARE_EVT1(event, winid, wxEventHandler(func))
-#define EVT_CUSTOM_RANGE(event, id1, id2, func) \
- wx__DECLARE_EVT2(event, id1, id2, wxEventHandler(func))
-
-// EVT_COMMAND
-#define EVT_COMMAND(winid, event, func) \
- wx__DECLARE_EVT1(event, winid, wxCommandEventHandler(func))
-#define EVT_COMMAND_RANGE(id1, id2, event, func) \
- wx__DECLARE_EVT2(event, id1, id2, wxCommandEventHandler(func))
-
-#define EVT_NOTIFY(event, winid, func) \
- wx__DECLARE_EVT1(event, winid, wxNotifyEventHandler(func))
-#define EVT_NOTIFY_RANGE(event, id1, id2, func) \
- wx__DECLARE_EVT2(event, id1, id2, wxNotifyEventHandler(func))
-
-// Miscellaneous
-#define EVT_SIZE(func) wx__DECLARE_EVT0(wxEVT_SIZE, wxSizeEventHandler(func))
-#define EVT_SIZING(func) wx__DECLARE_EVT0(wxEVT_SIZING, wxSizeEventHandler(func))
-#define EVT_MOVE(func) wx__DECLARE_EVT0(wxEVT_MOVE, wxMoveEventHandler(func))
-#define EVT_MOVING(func) wx__DECLARE_EVT0(wxEVT_MOVING, wxMoveEventHandler(func))
-#define EVT_CLOSE(func) wx__DECLARE_EVT0(wxEVT_CLOSE_WINDOW, wxCloseEventHandler(func))
-#define EVT_END_SESSION(func) wx__DECLARE_EVT0(wxEVT_END_SESSION, wxCloseEventHandler(func))
-#define EVT_QUERY_END_SESSION(func) wx__DECLARE_EVT0(wxEVT_QUERY_END_SESSION, wxCloseEventHandler(func))
-#define EVT_PAINT(func) wx__DECLARE_EVT0(wxEVT_PAINT, wxPaintEventHandler(func))
-#define EVT_NC_PAINT(func) wx__DECLARE_EVT0(wxEVT_NC_PAINT, wxNcPaintEventHandler(func))
-#define EVT_ERASE_BACKGROUND(func) wx__DECLARE_EVT0(wxEVT_ERASE_BACKGROUND, wxEraseEventHandler(func))
-#define EVT_CHAR(func) wx__DECLARE_EVT0(wxEVT_CHAR, wxCharEventHandler(func))
-#define EVT_KEY_DOWN(func) wx__DECLARE_EVT0(wxEVT_KEY_DOWN, wxKeyEventHandler(func))
-#define EVT_KEY_UP(func) wx__DECLARE_EVT0(wxEVT_KEY_UP, wxKeyEventHandler(func))
-#if wxUSE_HOTKEY
-#define EVT_HOTKEY(winid, func) wx__DECLARE_EVT1(wxEVT_HOTKEY, winid, wxCharEventHandler(func))
-#endif
-#define EVT_CHAR_HOOK(func) wx__DECLARE_EVT0(wxEVT_CHAR_HOOK, wxCharEventHandler(func))
-#define EVT_MENU_OPEN(func) wx__DECLARE_EVT0(wxEVT_MENU_OPEN, wxMenuEventHandler(func))
-#define EVT_MENU_CLOSE(func) wx__DECLARE_EVT0(wxEVT_MENU_CLOSE, wxMenuEventHandler(func))
-#define EVT_MENU_HIGHLIGHT(winid, func) wx__DECLARE_EVT1(wxEVT_MENU_HIGHLIGHT, winid, wxMenuEventHandler(func))
-#define EVT_MENU_HIGHLIGHT_ALL(func) wx__DECLARE_EVT0(wxEVT_MENU_HIGHLIGHT, wxMenuEventHandler(func))
-#define EVT_SET_FOCUS(func) wx__DECLARE_EVT0(wxEVT_SET_FOCUS, wxFocusEventHandler(func))
-#define EVT_KILL_FOCUS(func) wx__DECLARE_EVT0(wxEVT_KILL_FOCUS, wxFocusEventHandler(func))
-#define EVT_CHILD_FOCUS(func) wx__DECLARE_EVT0(wxEVT_CHILD_FOCUS, wxChildFocusEventHandler(func))
-#define EVT_ACTIVATE(func) wx__DECLARE_EVT0(wxEVT_ACTIVATE, wxActivateEventHandler(func))
-#define EVT_ACTIVATE_APP(func) wx__DECLARE_EVT0(wxEVT_ACTIVATE_APP, wxActivateEventHandler(func))
-#define EVT_HIBERNATE(func) wx__DECLARE_EVT0(wxEVT_HIBERNATE, wxActivateEventHandler(func))
-#define EVT_END_SESSION(func) wx__DECLARE_EVT0(wxEVT_END_SESSION, wxCloseEventHandler(func))
-#define EVT_QUERY_END_SESSION(func) wx__DECLARE_EVT0(wxEVT_QUERY_END_SESSION, wxCloseEventHandler(func))
-#define EVT_DROP_FILES(func) wx__DECLARE_EVT0(wxEVT_DROP_FILES, wxDropFilesEventHandler(func))
-#define EVT_INIT_DIALOG(func) wx__DECLARE_EVT0(wxEVT_INIT_DIALOG, wxInitDialogEventHandler(func))
-#define EVT_SYS_COLOUR_CHANGED(func) wx__DECLARE_EVT0(wxEVT_SYS_COLOUR_CHANGED, wxSysColourChangedEventHandler(func))
-#define EVT_DISPLAY_CHANGED(func) wx__DECLARE_EVT0(wxEVT_DISPLAY_CHANGED, wxDisplayChangedEventHandler(func))
-#define EVT_SHOW(func) wx__DECLARE_EVT0(wxEVT_SHOW, wxShowEventHandler(func))
-#define EVT_MAXIMIZE(func) wx__DECLARE_EVT0(wxEVT_MAXIMIZE, wxMaximizeEventHandler(func))
-#define EVT_ICONIZE(func) wx__DECLARE_EVT0(wxEVT_ICONIZE, wxIconizeEventHandler(func))
-#define EVT_NAVIGATION_KEY(func) wx__DECLARE_EVT0(wxEVT_NAVIGATION_KEY, wxNavigationKeyEventHandler(func))
-#define EVT_PALETTE_CHANGED(func) wx__DECLARE_EVT0(wxEVT_PALETTE_CHANGED, wxPaletteChangedEventHandler(func))
-#define EVT_QUERY_NEW_PALETTE(func) wx__DECLARE_EVT0(wxEVT_QUERY_NEW_PALETTE, wxQueryNewPaletteEventHandler(func))
-#define EVT_WINDOW_CREATE(func) wx__DECLARE_EVT0(wxEVT_CREATE, wxWindowCreateEventHandler(func))
-#define EVT_WINDOW_DESTROY(func) wx__DECLARE_EVT0(wxEVT_DESTROY, wxWindowDestroyEventHandler(func))
-#define EVT_SET_CURSOR(func) wx__DECLARE_EVT0(wxEVT_SET_CURSOR, wxSetCursorEventHandler(func))
-#define EVT_MOUSE_CAPTURE_CHANGED(func) wx__DECLARE_EVT0(wxEVT_MOUSE_CAPTURE_CHANGED, wxMouseCaptureChangedEventHandler(func))
-#define EVT_MOUSE_CAPTURE_LOST(func) wx__DECLARE_EVT0(wxEVT_MOUSE_CAPTURE_LOST, wxMouseCaptureLostEventHandler(func))
-
-// Mouse events
-#define EVT_LEFT_DOWN(func) wx__DECLARE_EVT0(wxEVT_LEFT_DOWN, wxMouseEventHandler(func))
-#define EVT_LEFT_UP(func) wx__DECLARE_EVT0(wxEVT_LEFT_UP, wxMouseEventHandler(func))
-#define EVT_MIDDLE_DOWN(func) wx__DECLARE_EVT0(wxEVT_MIDDLE_DOWN, wxMouseEventHandler(func))
-#define EVT_MIDDLE_UP(func) wx__DECLARE_EVT0(wxEVT_MIDDLE_UP, wxMouseEventHandler(func))
-#define EVT_RIGHT_DOWN(func) wx__DECLARE_EVT0(wxEVT_RIGHT_DOWN, wxMouseEventHandler(func))
-#define EVT_RIGHT_UP(func) wx__DECLARE_EVT0(wxEVT_RIGHT_UP, wxMouseEventHandler(func))
-#define EVT_MOTION(func) wx__DECLARE_EVT0(wxEVT_MOTION, wxMouseEventHandler(func))
-#define EVT_LEFT_DCLICK(func) wx__DECLARE_EVT0(wxEVT_LEFT_DCLICK, wxMouseEventHandler(func))
-#define EVT_MIDDLE_DCLICK(func) wx__DECLARE_EVT0(wxEVT_MIDDLE_DCLICK, wxMouseEventHandler(func))
-#define EVT_RIGHT_DCLICK(func) wx__DECLARE_EVT0(wxEVT_RIGHT_DCLICK, wxMouseEventHandler(func))
-#define EVT_LEAVE_WINDOW(func) wx__DECLARE_EVT0(wxEVT_LEAVE_WINDOW, wxMouseEventHandler(func))
-#define EVT_ENTER_WINDOW(func) wx__DECLARE_EVT0(wxEVT_ENTER_WINDOW, wxMouseEventHandler(func))
-#define EVT_MOUSEWHEEL(func) wx__DECLARE_EVT0(wxEVT_MOUSEWHEEL, wxMouseEventHandler(func))
-
-// All mouse events
-#define EVT_MOUSE_EVENTS(func) \
- EVT_LEFT_DOWN(func) \
- EVT_LEFT_UP(func) \
- EVT_MIDDLE_DOWN(func) \
- EVT_MIDDLE_UP(func) \
- EVT_RIGHT_DOWN(func) \
- EVT_RIGHT_UP(func) \
- EVT_MOTION(func) \
- EVT_LEFT_DCLICK(func) \
- EVT_MIDDLE_DCLICK(func) \
- EVT_RIGHT_DCLICK(func) \
- EVT_LEAVE_WINDOW(func) \
- EVT_ENTER_WINDOW(func) \
- EVT_MOUSEWHEEL(func)
-
-// Scrolling from wxWindow (sent to wxScrolledWindow)
-#define EVT_SCROLLWIN_TOP(func) wx__DECLARE_EVT0(wxEVT_SCROLLWIN_TOP, wxScrollWinEventHandler(func))
-#define EVT_SCROLLWIN_BOTTOM(func) wx__DECLARE_EVT0(wxEVT_SCROLLWIN_BOTTOM, wxScrollWinEventHandler(func))
-#define EVT_SCROLLWIN_LINEUP(func) wx__DECLARE_EVT0(wxEVT_SCROLLWIN_LINEUP, wxScrollWinEventHandler(func))
-#define EVT_SCROLLWIN_LINEDOWN(func) wx__DECLARE_EVT0(wxEVT_SCROLLWIN_LINEDOWN, wxScrollWinEventHandler(func))
-#define EVT_SCROLLWIN_PAGEUP(func) wx__DECLARE_EVT0(wxEVT_SCROLLWIN_PAGEUP, wxScrollWinEventHandler(func))
-#define EVT_SCROLLWIN_PAGEDOWN(func) wx__DECLARE_EVT0(wxEVT_SCROLLWIN_PAGEDOWN, wxScrollWinEventHandler(func))
-#define EVT_SCROLLWIN_THUMBTRACK(func) wx__DECLARE_EVT0(wxEVT_SCROLLWIN_THUMBTRACK, wxScrollWinEventHandler(func))
-#define EVT_SCROLLWIN_THUMBRELEASE(func) wx__DECLARE_EVT0(wxEVT_SCROLLWIN_THUMBRELEASE, wxScrollWinEventHandler(func))
-
-#define EVT_SCROLLWIN(func) \
- EVT_SCROLLWIN_TOP(func) \
- EVT_SCROLLWIN_BOTTOM(func) \
- EVT_SCROLLWIN_LINEUP(func) \
- EVT_SCROLLWIN_LINEDOWN(func) \
- EVT_SCROLLWIN_PAGEUP(func) \
- EVT_SCROLLWIN_PAGEDOWN(func) \
- EVT_SCROLLWIN_THUMBTRACK(func) \
- EVT_SCROLLWIN_THUMBRELEASE(func)
-
-// Scrolling from wxSlider and wxScrollBar
-#define EVT_SCROLL_TOP(func) wx__DECLARE_EVT0(wxEVT_SCROLL_TOP, wxScrollEventHandler(func))
-#define EVT_SCROLL_BOTTOM(func) wx__DECLARE_EVT0(wxEVT_SCROLL_BOTTOM, wxScrollEventHandler(func))
-#define EVT_SCROLL_LINEUP(func) wx__DECLARE_EVT0(wxEVT_SCROLL_LINEUP, wxScrollEventHandler(func))
-#define EVT_SCROLL_LINEDOWN(func) wx__DECLARE_EVT0(wxEVT_SCROLL_LINEDOWN, wxScrollEventHandler(func))
-#define EVT_SCROLL_PAGEUP(func) wx__DECLARE_EVT0(wxEVT_SCROLL_PAGEUP, wxScrollEventHandler(func))
-#define EVT_SCROLL_PAGEDOWN(func) wx__DECLARE_EVT0(wxEVT_SCROLL_PAGEDOWN, wxScrollEventHandler(func))
-#define EVT_SCROLL_THUMBTRACK(func) wx__DECLARE_EVT0(wxEVT_SCROLL_THUMBTRACK, wxScrollEventHandler(func))
-#define EVT_SCROLL_THUMBRELEASE(func) wx__DECLARE_EVT0(wxEVT_SCROLL_THUMBRELEASE, wxScrollEventHandler(func))
-#define EVT_SCROLL_CHANGED(func) wx__DECLARE_EVT0(wxEVT_SCROLL_CHANGED, wxScrollEventHandler(func))
-
-#define EVT_SCROLL(func) \
- EVT_SCROLL_TOP(func) \
- EVT_SCROLL_BOTTOM(func) \
- EVT_SCROLL_LINEUP(func) \
- EVT_SCROLL_LINEDOWN(func) \
- EVT_SCROLL_PAGEUP(func) \
- EVT_SCROLL_PAGEDOWN(func) \
- EVT_SCROLL_THUMBTRACK(func) \
- EVT_SCROLL_THUMBRELEASE(func) \
- EVT_SCROLL_CHANGED(func)
-
-// Scrolling from wxSlider and wxScrollBar, with an id
-#define EVT_COMMAND_SCROLL_TOP(winid, func) wx__DECLARE_EVT1(wxEVT_SCROLL_TOP, winid, wxScrollEventHandler(func))
-#define EVT_COMMAND_SCROLL_BOTTOM(winid, func) wx__DECLARE_EVT1(wxEVT_SCROLL_BOTTOM, winid, wxScrollEventHandler(func))
-#define EVT_COMMAND_SCROLL_LINEUP(winid, func) wx__DECLARE_EVT1(wxEVT_SCROLL_LINEUP, winid, wxScrollEventHandler(func))
-#define EVT_COMMAND_SCROLL_LINEDOWN(winid, func) wx__DECLARE_EVT1(wxEVT_SCROLL_LINEDOWN, winid, wxScrollEventHandler(func))
-#define EVT_COMMAND_SCROLL_PAGEUP(winid, func) wx__DECLARE_EVT1(wxEVT_SCROLL_PAGEUP, winid, wxScrollEventHandler(func))
-#define EVT_COMMAND_SCROLL_PAGEDOWN(winid, func) wx__DECLARE_EVT1(wxEVT_SCROLL_PAGEDOWN, winid, wxScrollEventHandler(func))
-#define EVT_COMMAND_SCROLL_THUMBTRACK(winid, func) wx__DECLARE_EVT1(wxEVT_SCROLL_THUMBTRACK, winid, wxScrollEventHandler(func))
-#define EVT_COMMAND_SCROLL_THUMBRELEASE(winid, func) wx__DECLARE_EVT1(wxEVT_SCROLL_THUMBRELEASE, winid, wxScrollEventHandler(func))
-#define EVT_COMMAND_SCROLL_CHANGED(winid, func) wx__DECLARE_EVT1(wxEVT_SCROLL_CHANGED, winid, wxScrollEventHandler(func))
-
-#define EVT_COMMAND_SCROLL(winid, func) \
- EVT_COMMAND_SCROLL_TOP(winid, func) \
- EVT_COMMAND_SCROLL_BOTTOM(winid, func) \
- EVT_COMMAND_SCROLL_LINEUP(winid, func) \
- EVT_COMMAND_SCROLL_LINEDOWN(winid, func) \
- EVT_COMMAND_SCROLL_PAGEUP(winid, func) \
- EVT_COMMAND_SCROLL_PAGEDOWN(winid, func) \
- EVT_COMMAND_SCROLL_THUMBTRACK(winid, func) \
- EVT_COMMAND_SCROLL_THUMBRELEASE(winid, func) \
- EVT_COMMAND_SCROLL_CHANGED(winid, func)
-
-#if WXWIN_COMPATIBILITY_2_6
- // compatibility macros for the old name, deprecated in 2.8
- #define wxEVT_SCROLL_ENDSCROLL wxEVT_SCROLL_CHANGED
- #define EVT_COMMAND_SCROLL_ENDSCROLL EVT_COMMAND_SCROLL_CHANGED
- #define EVT_SCROLL_ENDSCROLL EVT_SCROLL_CHANGED
-#endif // WXWIN_COMPATIBILITY_2_6
-
-// Convenience macros for commonly-used commands
-#define EVT_CHECKBOX(winid, func) wx__DECLARE_EVT1(wxEVT_COMMAND_CHECKBOX_CLICKED, winid, wxCommandEventHandler(func))
-#define EVT_CHOICE(winid, func) wx__DECLARE_EVT1(wxEVT_COMMAND_CHOICE_SELECTED, winid, wxCommandEventHandler(func))
-#define EVT_LISTBOX(winid, func) wx__DECLARE_EVT1(wxEVT_COMMAND_LISTBOX_SELECTED, winid, wxCommandEventHandler(func))
-#define EVT_LISTBOX_DCLICK(winid, func) wx__DECLARE_EVT1(wxEVT_COMMAND_LISTBOX_DOUBLECLICKED, winid, wxCommandEventHandler(func))
-#define EVT_MENU(winid, func) wx__DECLARE_EVT1(wxEVT_COMMAND_MENU_SELECTED, winid, wxCommandEventHandler(func))
-#define EVT_MENU_RANGE(id1, id2, func) wx__DECLARE_EVT2(wxEVT_COMMAND_MENU_SELECTED, id1, id2, wxCommandEventHandler(func))
-#if defined(__SMARTPHONE__)
-# define EVT_BUTTON(winid, func) EVT_MENU(winid, func)
-#else
-# define EVT_BUTTON(winid, func) wx__DECLARE_EVT1(wxEVT_COMMAND_BUTTON_CLICKED, winid, wxCommandEventHandler(func))
-#endif
-#define EVT_SLIDER(winid, func) wx__DECLARE_EVT1(wxEVT_COMMAND_SLIDER_UPDATED, winid, wxCommandEventHandler(func))
-#define EVT_RADIOBOX(winid, func) wx__DECLARE_EVT1(wxEVT_COMMAND_RADIOBOX_SELECTED, winid, wxCommandEventHandler(func))
-#define EVT_RADIOBUTTON(winid, func) wx__DECLARE_EVT1(wxEVT_COMMAND_RADIOBUTTON_SELECTED, winid, wxCommandEventHandler(func))
-// EVT_SCROLLBAR is now obsolete since we use EVT_COMMAND_SCROLL... events
-#define EVT_SCROLLBAR(winid, func) wx__DECLARE_EVT1(wxEVT_COMMAND_SCROLLBAR_UPDATED, winid, wxCommandEventHandler(func))
-#define EVT_VLBOX(winid, func) wx__DECLARE_EVT1(wxEVT_COMMAND_VLBOX_SELECTED, winid, wxCommandEventHandler(func))
-#define EVT_COMBOBOX(winid, func) wx__DECLARE_EVT1(wxEVT_COMMAND_COMBOBOX_SELECTED, winid, wxCommandEventHandler(func))
-#define EVT_TOOL(winid, func) wx__DECLARE_EVT1(wxEVT_COMMAND_TOOL_CLICKED, winid, wxCommandEventHandler(func))
-#define EVT_TOOL_RANGE(id1, id2, func) wx__DECLARE_EVT2(wxEVT_COMMAND_TOOL_CLICKED, id1, id2, wxCommandEventHandler(func))
-#define EVT_TOOL_RCLICKED(winid, func) wx__DECLARE_EVT1(wxEVT_COMMAND_TOOL_RCLICKED, winid, wxCommandEventHandler(func))
-#define EVT_TOOL_RCLICKED_RANGE(id1, id2, func) wx__DECLARE_EVT2(wxEVT_COMMAND_TOOL_RCLICKED, id1, id2, wxCommandEventHandler(func))
-#define EVT_TOOL_ENTER(winid, func) wx__DECLARE_EVT1(wxEVT_COMMAND_TOOL_ENTER, winid, wxCommandEventHandler(func))
-#define EVT_CHECKLISTBOX(winid, func) wx__DECLARE_EVT1(wxEVT_COMMAND_CHECKLISTBOX_TOGGLED, winid, wxCommandEventHandler(func))
-
-// Generic command events
-#define EVT_COMMAND_LEFT_CLICK(winid, func) wx__DECLARE_EVT1(wxEVT_COMMAND_LEFT_CLICK, winid, wxCommandEventHandler(func))
-#define EVT_COMMAND_LEFT_DCLICK(winid, func) wx__DECLARE_EVT1(wxEVT_COMMAND_LEFT_DCLICK, winid, wxCommandEventHandler(func))
-#define EVT_COMMAND_RIGHT_CLICK(winid, func) wx__DECLARE_EVT1(wxEVT_COMMAND_RIGHT_CLICK, winid, wxCommandEventHandler(func))
-#define EVT_COMMAND_RIGHT_DCLICK(winid, func) wx__DECLARE_EVT1(wxEVT_COMMAND_RIGHT_DCLICK, winid, wxCommandEventHandler(func))
-#define EVT_COMMAND_SET_FOCUS(winid, func) wx__DECLARE_EVT1(wxEVT_COMMAND_SET_FOCUS, winid, wxCommandEventHandler(func))
-#define EVT_COMMAND_KILL_FOCUS(winid, func) wx__DECLARE_EVT1(wxEVT_COMMAND_KILL_FOCUS, winid, wxCommandEventHandler(func))
-#define EVT_COMMAND_ENTER(winid, func) wx__DECLARE_EVT1(wxEVT_COMMAND_ENTER, winid, wxCommandEventHandler(func))
-
-// Joystick events
-
-#define EVT_JOY_BUTTON_DOWN(func) wx__DECLARE_EVT0(wxEVT_JOY_BUTTON_DOWN, wxJoystickEventHandler(func))
-#define EVT_JOY_BUTTON_UP(func) wx__DECLARE_EVT0(wxEVT_JOY_BUTTON_UP, wxJoystickEventHandler(func))
-#define EVT_JOY_MOVE(func) wx__DECLARE_EVT0(wxEVT_JOY_MOVE, wxJoystickEventHandler(func))
-#define EVT_JOY_ZMOVE(func) wx__DECLARE_EVT0(wxEVT_JOY_ZMOVE, wxJoystickEventHandler(func))
-
-// These are obsolete, see _BUTTON_ events
-#if WXWIN_COMPATIBILITY_2_4
- #define EVT_JOY_DOWN(func) EVT_JOY_BUTTON_DOWN(func)
- #define EVT_JOY_UP(func) EVT_JOY_BUTTON_UP(func)
-#endif // WXWIN_COMPATIBILITY_2_4
-
-// All joystick events
-#define EVT_JOYSTICK_EVENTS(func) \
- EVT_JOY_BUTTON_DOWN(func) \
- EVT_JOY_BUTTON_UP(func) \
- EVT_JOY_MOVE(func) \
- EVT_JOY_ZMOVE(func)
-
-// Idle event
-#define EVT_IDLE(func) wx__DECLARE_EVT0(wxEVT_IDLE, wxIdleEventHandler(func))
-
-// Update UI event
-#define EVT_UPDATE_UI(winid, func) wx__DECLARE_EVT1(wxEVT_UPDATE_UI, winid, wxUpdateUIEventHandler(func))
-#define EVT_UPDATE_UI_RANGE(id1, id2, func) wx__DECLARE_EVT2(wxEVT_UPDATE_UI, id1, id2, wxUpdateUIEventHandler(func))
-
-// Help events
-#define EVT_HELP(winid, func) wx__DECLARE_EVT1(wxEVT_HELP, winid, wxHelpEventHandler(func))
-#define EVT_HELP_RANGE(id1, id2, func) wx__DECLARE_EVT2(wxEVT_HELP, id1, id2, wxHelpEventHandler(func))
-#define EVT_DETAILED_HELP(winid, func) wx__DECLARE_EVT1(wxEVT_DETAILED_HELP, winid, wxHelpEventHandler(func))
-#define EVT_DETAILED_HELP_RANGE(id1, id2, func) wx__DECLARE_EVT2(wxEVT_DETAILED_HELP, id1, id2, wxHelpEventHandler(func))
-
-// Context Menu Events
-#define EVT_CONTEXT_MENU(func) wx__DECLARE_EVT0(wxEVT_CONTEXT_MENU, wxContextMenuEventHandler(func))
-#define EVT_COMMAND_CONTEXT_MENU(winid, func) wx__DECLARE_EVT1(wxEVT_CONTEXT_MENU, winid, wxContextMenuEventHandler(func))
-
-// Clipboard text Events
-#define EVT_TEXT_CUT(winid, func) wx__DECLARE_EVT1(wxEVT_COMMAND_TEXT_CUT, winid, wxClipboardTextEventHandler(func))
-#define EVT_TEXT_COPY(winid, func) wx__DECLARE_EVT1(wxEVT_COMMAND_TEXT_COPY, winid, wxClipboardTextEventHandler(func))
-#define EVT_TEXT_PASTE(winid, func) wx__DECLARE_EVT1(wxEVT_COMMAND_TEXT_PASTE, winid, wxClipboardTextEventHandler(func))
-
-// ----------------------------------------------------------------------------
-// Global data
-// ----------------------------------------------------------------------------
-
-// for pending event processing - notice that there is intentionally no
-// WXDLLEXPORT here
-extern WXDLLIMPEXP_BASE wxList *wxPendingEvents;
-#if wxUSE_THREADS
- extern WXDLLIMPEXP_BASE wxCriticalSection *wxPendingEventsLocker;
-#endif
-
-// ----------------------------------------------------------------------------
-// Helper functions
-// ----------------------------------------------------------------------------
-
-#if wxUSE_GUI
-
-// Find a window with the focus, that is also a descendant of the given window.
-// This is used to determine the window to initially send commands to.
-WXDLLIMPEXP_CORE wxWindow* wxFindFocusDescendant(wxWindow* ancestor);
-
-#endif // wxUSE_GUI
-
-#endif // _WX_EVENT_H__
diff --git a/Externals/wxWidgets/include/wx/evtloop.h b/Externals/wxWidgets/include/wx/evtloop.h
deleted file mode 100644
index 51b58eb55e..0000000000
--- a/Externals/wxWidgets/include/wx/evtloop.h
+++ /dev/null
@@ -1,229 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Name: wx/evtloop.h
-// Purpose: declares wxEventLoop class
-// Author: Vadim Zeitlin
-// Modified by:
-// Created: 01.06.01
-// RCS-ID: $Id: evtloop.h 53607 2008-05-16 15:21:40Z SN $
-// Copyright: (c) 2001 Vadim Zeitlin
-// Licence: wxWindows licence
-///////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_EVTLOOP_H_
-#define _WX_EVTLOOP_H_
-
-#include "wx/utils.h"
-
-class WXDLLIMPEXP_FWD_CORE wxEventLoop;
-
-// ----------------------------------------------------------------------------
-// wxEventLoop: a GUI event loop
-// ----------------------------------------------------------------------------
-
-class WXDLLEXPORT wxEventLoopBase
-{
-public:
- // trivial, but needed (because of wxEventLoopBase) ctor
- wxEventLoopBase() { }
-
- // dtor
- virtual ~wxEventLoopBase() { }
-
- // start the event loop, return the exit code when it is finished
- virtual int Run() = 0;
-
- // exit from the loop with the given exit code
- virtual void Exit(int rc = 0) = 0;
-
- // return true if any events are available
- virtual bool Pending() const = 0;
-
- // dispatch a single event, return false if we should exit from the loop
- virtual bool Dispatch() = 0;
-
- // return currently active (running) event loop, may be NULL
- static wxEventLoop *GetActive() { return ms_activeLoop; }
-
- // set currently active (running) event loop
- static void SetActive(wxEventLoop* loop) { ms_activeLoop = loop; }
-
- // is this event loop running now?
- //
- // notice that even if this event loop hasn't terminated yet but has just
- // spawned a nested (e.g. modal) event loop, this would return false
- bool IsRunning() const;
-
-protected:
- // this function should be called before the event loop terminates, whether
- // this happens normally (because of Exit() call) or abnormally (because of
- // an exception thrown from inside the loop)
- virtual void OnExit() { }
-
-
- // the pointer to currently active loop
- static wxEventLoop *ms_activeLoop;
-
- DECLARE_NO_COPY_CLASS(wxEventLoopBase)
-};
-
-#if defined(__WXMSW__) || defined(__WXMAC__) || defined(__WXDFB__)
-
-// this class can be used to implement a standard event loop logic using
-// Pending() and Dispatch()
-//
-// it also handles idle processing automatically
-class WXDLLEXPORT wxEventLoopManual : public wxEventLoopBase
-{
-public:
- wxEventLoopManual();
-
- // enters a loop calling OnNextIteration(), Pending() and Dispatch() and
- // terminating when Exit() is called
- virtual int Run();
-
- // sets the "should exit" flag and wakes up the loop so that it terminates
- // soon
- virtual void Exit(int rc = 0);
-
-protected:
- // implement this to wake up the loop: usually done by posting a dummy event
- // to it (called from Exit())
- virtual void WakeUp() = 0;
-
- // may be overridden to perform some action at the start of each new event
- // loop iteration
- virtual void OnNextIteration() { }
-
-
- // the loop exit code
- int m_exitcode;
-
- // should we exit the loop?
- bool m_shouldExit;
-};
-
-#endif // platforms using "manual" loop
-
-// we're moving away from old m_impl wxEventLoop model as otherwise the user
-// code doesn't have access to platform-specific wxEventLoop methods and this
-// can sometimes be very useful (e.g. under MSW this is necessary for
-// integration with MFC) but currently this is done for MSW only, other ports
-// should follow a.s.a.p.
-#if defined(__WXPALMOS__)
- #include "wx/palmos/evtloop.h"
-#elif defined(__WXMSW__)
- #include "wx/msw/evtloop.h"
-#elif defined(__WXMAC__)
- #include "wx/mac/evtloop.h"
-#elif defined(__WXDFB__)
- #include "wx/dfb/evtloop.h"
-#else // other platform
-
-class WXDLLEXPORT wxEventLoopImpl;
-
-class WXDLLEXPORT wxEventLoop : public wxEventLoopBase
-{
-public:
- wxEventLoop() { m_impl = NULL; }
- virtual ~wxEventLoop();
-
- virtual int Run();
- virtual void Exit(int rc = 0);
- virtual bool Pending() const;
- virtual bool Dispatch();
-
-protected:
- // the pointer to the port specific implementation class
- wxEventLoopImpl *m_impl;
-
- DECLARE_NO_COPY_CLASS(wxEventLoop)
-};
-
-#endif // platforms
-
-inline bool wxEventLoopBase::IsRunning() const { return GetActive() == this; }
-
-// ----------------------------------------------------------------------------
-// wxModalEventLoop
-// ----------------------------------------------------------------------------
-
-// this is a naive generic implementation which uses wxWindowDisabler to
-// implement modality, we will surely need platform-specific implementations
-// too, this generic implementation is here only temporarily to see how it
-// works
-class WXDLLEXPORT wxModalEventLoop : public wxEventLoop
-{
-public:
- wxModalEventLoop(wxWindow *winModal)
- {
- m_windowDisabler = new wxWindowDisabler(winModal);
- }
-
-protected:
- virtual void OnExit()
- {
- delete m_windowDisabler;
- m_windowDisabler = NULL;
-
- wxEventLoop::OnExit();
- }
-
-private:
- wxWindowDisabler *m_windowDisabler;
-};
-
-// ----------------------------------------------------------------------------
-// wxEventLoopActivator: helper class for wxEventLoop implementations
-// ----------------------------------------------------------------------------
-
-// this object sets the wxEventLoop given to the ctor as the currently active
-// one and unsets it in its dtor, this is especially useful in presence of
-// exceptions but is more tidy even when we don't use them
-class wxEventLoopActivator
-{
-public:
- wxEventLoopActivator(wxEventLoop *evtLoop)
- {
- m_evtLoopOld = wxEventLoop::GetActive();
- wxEventLoop::SetActive(evtLoop);
- }
-
- ~wxEventLoopActivator()
- {
- // restore the previously active event loop
- wxEventLoop::SetActive(m_evtLoopOld);
- }
-
-private:
- wxEventLoop *m_evtLoopOld;
-};
-
-#if wxABI_VERSION >= 20808
-class wxEventLoopGuarantor
-{
-public:
- wxEventLoopGuarantor()
- {
- m_evtLoopNew = NULL;
- if (!wxEventLoop::GetActive())
- {
- m_evtLoopNew = new wxEventLoop;
- wxEventLoop::SetActive(m_evtLoopNew);
- }
- }
-
- ~wxEventLoopGuarantor()
- {
- if (m_evtLoopNew)
- {
- wxEventLoop::SetActive(NULL);
- delete m_evtLoopNew;
- }
- }
-
-private:
- wxEventLoop *m_evtLoopNew;
-};
-#endif // wxABI_VERSION >= 20805
-
-#endif // _WX_EVTLOOP_H_
diff --git a/Externals/wxWidgets/include/wx/except.h b/Externals/wxWidgets/include/wx/except.h
deleted file mode 100644
index 9276db65ba..0000000000
--- a/Externals/wxWidgets/include/wx/except.h
+++ /dev/null
@@ -1,30 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Name: wx/except.h
-// Purpose: C++ exception related stuff
-// Author: Vadim Zeitlin
-// Modified by:
-// Created: 17.09.2003
-// RCS-ID: $Id: except.h 27408 2004-05-23 20:53:33Z JS $
-// Copyright: (c) 2003 Vadim Zeitlin
-// Licence: wxWindows licence
-///////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_EXCEPT_H_
-#define _WX_EXCEPT_H_
-
-#include "wx/defs.h"
-
-// ----------------------------------------------------------------------------
-// macros working whether wxUSE_EXCEPTIONS is 0 or 1
-// ----------------------------------------------------------------------------
-
-#if wxUSE_EXCEPTIONS
- #define wxTRY try
- #define wxCATCH_ALL(code) catch ( ... ) { code }
-#else // !wxUSE_EXCEPTIONS
- #define wxTRY
- #define wxCATCH_ALL(code)
-#endif // wxUSE_EXCEPTIONS/!wxUSE_EXCEPTIONS
-
-#endif // _WX_EXCEPT_H_
-
diff --git a/Externals/wxWidgets/include/wx/fdrepdlg.h b/Externals/wxWidgets/include/wx/fdrepdlg.h
deleted file mode 100644
index 43e8c4cef4..0000000000
--- a/Externals/wxWidgets/include/wx/fdrepdlg.h
+++ /dev/null
@@ -1,195 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-// Name: wx/fdrepdlg.h
-// Purpose: wxFindReplaceDialog class
-// Author: Markus Greither and Vadim Zeitlin
-// Modified by:
-// Created: 23/03/2001
-// RCS-ID:
-// Copyright: (c) Markus Greither
-// Licence: wxWindows licence
-/////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_FINDREPLACEDLG_H_
-#define _WX_FINDREPLACEDLG_H_
-
-#include "wx/defs.h"
-
-#if wxUSE_FINDREPLDLG
-
-#include "wx/dialog.h"
-
-class WXDLLIMPEXP_FWD_CORE wxFindDialogEvent;
-class WXDLLIMPEXP_FWD_CORE wxFindReplaceDialog;
-class WXDLLIMPEXP_FWD_CORE wxFindReplaceData;
-class WXDLLIMPEXP_FWD_CORE wxFindReplaceDialogImpl;
-
-// ----------------------------------------------------------------------------
-// Flags for wxFindReplaceData.Flags
-// ----------------------------------------------------------------------------
-
-// flages used by wxFindDialogEvent::GetFlags()
-enum wxFindReplaceFlags
-{
- // downward search/replace selected (otherwise - upwards)
- wxFR_DOWN = 1,
-
- // whole word search/replace selected
- wxFR_WHOLEWORD = 2,
-
- // case sensitive search/replace selected (otherwise - case insensitive)
- wxFR_MATCHCASE = 4
-};
-
-// these flags can be specified in wxFindReplaceDialog ctor or Create()
-enum wxFindReplaceDialogStyles
-{
- // replace dialog (otherwise find dialog)
- wxFR_REPLACEDIALOG = 1,
-
- // don't allow changing the search direction
- wxFR_NOUPDOWN = 2,
-
- // don't allow case sensitive searching
- wxFR_NOMATCHCASE = 4,
-
- // don't allow whole word searching
- wxFR_NOWHOLEWORD = 8
-};
-
-// ----------------------------------------------------------------------------
-// wxFindReplaceData: holds Setup Data/Feedback Data for wxFindReplaceDialog
-// ----------------------------------------------------------------------------
-
-class WXDLLEXPORT wxFindReplaceData : public wxObject
-{
-public:
- wxFindReplaceData() { Init(); }
- wxFindReplaceData(wxUint32 flags) { Init(); SetFlags(flags); }
-
- // accessors
- const wxString& GetFindString() { return m_FindWhat; }
- const wxString& GetReplaceString() { return m_ReplaceWith; }
-
- int GetFlags() const { return m_Flags; }
-
- // setters: may only be called before showing the dialog, no effect later
- void SetFlags(wxUint32 flags) { m_Flags = flags; }
-
- void SetFindString(const wxString& str) { m_FindWhat = str; }
- void SetReplaceString(const wxString& str) { m_ReplaceWith = str; }
-
-protected:
- void Init();
-
-private:
- wxUint32 m_Flags;
- wxString m_FindWhat,
- m_ReplaceWith;
-
- friend class wxFindReplaceDialogBase;
-};
-
-// ----------------------------------------------------------------------------
-// wxFindReplaceDialogBase
-// ----------------------------------------------------------------------------
-
-class WXDLLEXPORT wxFindReplaceDialogBase : public wxDialog
-{
-public:
- // ctors and such
- wxFindReplaceDialogBase() { m_FindReplaceData = NULL; }
- wxFindReplaceDialogBase(wxWindow * WXUNUSED(parent),
- wxFindReplaceData *data,
- const wxString& WXUNUSED(title),
- int WXUNUSED(style) = 0)
- {
- m_FindReplaceData = data;
- }
-
- virtual ~wxFindReplaceDialogBase();
-
- // find dialog data access
- const wxFindReplaceData *GetData() const { return m_FindReplaceData; }
- void SetData(wxFindReplaceData *data) { m_FindReplaceData = data; }
-
- // implementation only, don't use
- void Send(wxFindDialogEvent& event);
-
-protected:
- wxFindReplaceData *m_FindReplaceData;
-
- // the last string we searched for
- wxString m_lastSearch;
-
- DECLARE_NO_COPY_CLASS(wxFindReplaceDialogBase)
-};
-
-// include wxFindReplaceDialog declaration
-#if defined(__WXMSW__) && !defined(__WXUNIVERSAL__) && !defined(__WXWINCE__)
- #include "wx/msw/fdrepdlg.h"
-#else
- #define wxGenericFindReplaceDialog wxFindReplaceDialog
-
- #include "wx/generic/fdrepdlg.h"
-#endif
-
-// ----------------------------------------------------------------------------
-// wxFindReplaceDialog events
-// ----------------------------------------------------------------------------
-
-class WXDLLEXPORT wxFindDialogEvent : public wxCommandEvent
-{
-public:
- wxFindDialogEvent(wxEventType commandType = wxEVT_NULL, int id = 0)
- : wxCommandEvent(commandType, id) { }
-
- int GetFlags() const { return GetInt(); }
- wxString GetFindString() const { return GetString(); }
- const wxString& GetReplaceString() const { return m_strReplace; }
-
- wxFindReplaceDialog *GetDialog() const
- { return wxStaticCast(GetEventObject(), wxFindReplaceDialog); }
-
- // implementation only
- void SetFlags(int flags) { SetInt(flags); }
- void SetFindString(const wxString& str) { SetString(str); }
- void SetReplaceString(const wxString& str) { m_strReplace = str; }
-
-private:
- wxString m_strReplace;
-
- DECLARE_DYNAMIC_CLASS_NO_COPY(wxFindDialogEvent)
-};
-
-BEGIN_DECLARE_EVENT_TYPES()
- DECLARE_EVENT_TYPE(wxEVT_COMMAND_FIND, 510)
- DECLARE_EVENT_TYPE(wxEVT_COMMAND_FIND_NEXT, 511)
- DECLARE_EVENT_TYPE(wxEVT_COMMAND_FIND_REPLACE, 512)
- DECLARE_EVENT_TYPE(wxEVT_COMMAND_FIND_REPLACE_ALL, 513)
- DECLARE_EVENT_TYPE(wxEVT_COMMAND_FIND_CLOSE, 514)
-END_DECLARE_EVENT_TYPES()
-
-typedef void (wxEvtHandler::*wxFindDialogEventFunction)(wxFindDialogEvent&);
-
-#define wxFindDialogEventHandler(func) \
- (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxFindDialogEventFunction, &func)
-
-#define EVT_FIND(id, fn) \
- wx__DECLARE_EVT1(wxEVT_COMMAND_FIND, id, wxFindDialogEventHandler(fn))
-
-#define EVT_FIND_NEXT(id, fn) \
- wx__DECLARE_EVT1(wxEVT_COMMAND_FIND_NEXT, id, wxFindDialogEventHandler(fn))
-
-#define EVT_FIND_REPLACE(id, fn) \
- wx__DECLARE_EVT1(wxEVT_COMMAND_FIND_REPLACE, id, wxFindDialogEventHandler(fn))
-
-#define EVT_FIND_REPLACE_ALL(id, fn) \
- wx__DECLARE_EVT1(wxEVT_COMMAND_FIND_REPLACE_ALL, id, wxFindDialogEventHandler(fn))
-
-#define EVT_FIND_CLOSE(id, fn) \
- wx__DECLARE_EVT1(wxEVT_COMMAND_FIND_CLOSE, id, wxFindDialogEventHandler(fn))
-
-#endif // wxUSE_FINDREPLDLG
-
-#endif
- // _WX_FDREPDLG_H
diff --git a/Externals/wxWidgets/include/wx/features.h b/Externals/wxWidgets/include/wx/features.h
deleted file mode 100644
index e9c0554955..0000000000
--- a/Externals/wxWidgets/include/wx/features.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/**
-* Name: wx/features.h
-* Purpose: test macros for the features which might be available in some
-* wxWidgets ports but not others
-* Author: Vadim Zeitlin
-* Modified by: Ryan Norton (Converted to C)
-* Created: 18.03.02
-* RCS-ID: $Id: features.h 40865 2006-08-27 09:42:42Z VS $
-* Copyright: (c) 2002 Vadim Zeitlin
-* Licence: wxWindows licence
-*/
-
-/* THIS IS A C FILE, DON'T USE C++ FEATURES (IN PARTICULAR COMMENTS) IN IT */
-
-#ifndef _WX_FEATURES_H_
-#define _WX_FEATURES_H_
-
-/* radio menu items are currently not implemented in wxMotif, use this
- symbol (kept for compatibility from the time when they were not implemented
- under other platforms as well) to test for this */
-#if !defined(__WXMOTIF__)
- #define wxHAS_RADIO_MENU_ITEMS
-#else
- #undef wxHAS_RADIO_MENU_ITEMS
-#endif
-
-/* the raw keyboard codes are generated under wxGTK and wxMSW only */
-#if defined(__WXGTK__) || defined(__WXMSW__) || defined(__WXMAC__) \
- || defined(__WXDFB__)
- #define wxHAS_RAW_KEY_CODES
-#else
- #undef wxHAS_RAW_KEY_CODES
-#endif
-
-/* taskbar is implemented in the major ports */
-#if defined(__WXMSW__) || defined(__WXCOCOA__) \
- || defined(__WXGTK__) || defined(__WXMOTIF__) || defined(__WXX11__) \
- || defined(__WXMAC_OSX__) || defined(__WXCOCOA__)
- #define wxHAS_TASK_BAR_ICON
-#else
- #undef wxHAS_TASK_BAR_ICON
-#endif
-
-/* wxIconLocation appeared in the middle of 2.5.0 so it's handy to have a */
-/* separate define for it */
-#define wxHAS_ICON_LOCATION
-
-/* same for wxCrashReport */
-#ifdef __WXMSW__
- #define wxHAS_CRASH_REPORT
-#else
- #undef wxHAS_CRASH_REPORT
-#endif
-
-/* wxRE_ADVANCED is not always available, depending on regex library used
- * (it's unavailable only if compiling via configure against system library) */
-#ifndef WX_NO_REGEX_ADVANCED
- #define wxHAS_REGEX_ADVANCED
-#else
- #undef wxHAS_REGEX_ADVANCED
-#endif
-
-#endif /* _WX_FEATURES_H_ */
-
diff --git a/Externals/wxWidgets/include/wx/ffile.h b/Externals/wxWidgets/include/wx/ffile.h
deleted file mode 100644
index c3dda75d4e..0000000000
--- a/Externals/wxWidgets/include/wx/ffile.h
+++ /dev/null
@@ -1,115 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-// Name: wx/ffile.h
-// Purpose: wxFFile - encapsulates "FILE *" stream
-// Author: Vadim Zeitlin
-// Modified by:
-// Created: 14.07.99
-// RCS-ID: $Id: ffile.h 38570 2006-04-05 14:37:47Z VZ $
-// Copyright: (c) 1998 Vadim Zeitlin
-// Licence: wxWindows licence
-/////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_FFILE_H_
-#define _WX_FFILE_H_
-
-#include "wx/defs.h" // for wxUSE_FFILE
-
-#if wxUSE_FFILE
-
-#include "wx/string.h"
-#include "wx/filefn.h"
-#include "wx/convauto.h"
-
-#include
-
-// ----------------------------------------------------------------------------
-// class wxFFile: standard C stream library IO
-//
-// NB: for space efficiency this class has no virtual functions, including
-// dtor which is _not_ virtual, so it shouldn't be used as a base class.
-// ----------------------------------------------------------------------------
-
-class WXDLLIMPEXP_BASE wxFFile
-{
-public:
- // ctors
- // -----
- // def ctor
- wxFFile() { m_fp = NULL; }
- // open specified file (may fail, use IsOpened())
- wxFFile(const wxChar *filename, const wxChar *mode = _T("r"));
- // attach to (already opened) file
- wxFFile(FILE *lfp) { m_fp = lfp; }
-
- // open/close
- // open a file (existing or not - the mode controls what happens)
- bool Open(const wxChar *filename, const wxChar *mode = _T("r"));
- // closes the opened file (this is a NOP if not opened)
- bool Close();
-
- // assign an existing file descriptor and get it back from wxFFile object
- void Attach(FILE *lfp, const wxString& name = wxEmptyString)
- { Close(); m_fp = lfp; m_name = name; }
- void Detach() { m_fp = NULL; }
- FILE *fp() const { return m_fp; }
-
- // read/write (unbuffered)
- // read all data from the file into a string (useful for text files)
- bool ReadAll(wxString *str, const wxMBConv& conv = wxConvAuto());
- // returns number of bytes read - use Eof() and Error() to see if an error
- // occurred or not
- size_t Read(void *pBuf, size_t nCount);
- // returns the number of bytes written
- size_t Write(const void *pBuf, size_t nCount);
- // returns true on success
- bool Write(const wxString& s, const wxMBConv& conv = wxConvAuto())
- {
- const wxWX2MBbuf buf = s.mb_str(conv);
- size_t size = strlen(buf);
- return Write((const char *)buf, size) == size;
- }
- // flush data not yet written
- bool Flush();
-
- // file pointer operations (return ofsInvalid on failure)
- // move ptr ofs bytes related to start/current pos/end of file
- bool Seek(wxFileOffset ofs, wxSeekMode mode = wxFromStart);
- // move ptr to ofs bytes before the end
- bool SeekEnd(wxFileOffset ofs = 0) { return Seek(ofs, wxFromEnd); }
- // get current position in the file
- wxFileOffset Tell() const;
- // get current file length
- wxFileOffset Length() const;
-
- // simple accessors: note that Eof() and Error() may only be called if
- // IsOpened()!
- // is file opened?
- bool IsOpened() const { return m_fp != NULL; }
- // is end of file reached?
- bool Eof() const { return feof(m_fp) != 0; }
- // has an error occurred?
- bool Error() const { return ferror(m_fp) != 0; }
- // get the file name
- const wxString& GetName() const { return m_name; }
- // type such as disk or pipe
- wxFileKind GetKind() const { return wxGetFileKind(m_fp); }
-
- // dtor closes the file if opened
- ~wxFFile() { Close(); }
-
-private:
- // copy ctor and assignment operator are private because it doesn't make
- // sense to copy files this way: attempt to do it will provoke a compile-time
- // error.
- wxFFile(const wxFFile&);
- wxFFile& operator=(const wxFFile&);
-
- FILE *m_fp; // IO stream or NULL if not opened
-
- wxString m_name; // the name of the file (for diagnostic messages)
-};
-
-#endif // wxUSE_FFILE
-
-#endif // _WX_FFILE_H_
-
diff --git a/Externals/wxWidgets/include/wx/file.h b/Externals/wxWidgets/include/wx/file.h
deleted file mode 100644
index 1691dc0c4d..0000000000
--- a/Externals/wxWidgets/include/wx/file.h
+++ /dev/null
@@ -1,201 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-// Name: file.h
-// Purpose: wxFile - encapsulates low-level "file descriptor"
-// wxTempFile - safely replace the old file
-// Author: Vadim Zeitlin
-// Modified by:
-// Created: 29/01/98
-// RCS-ID: $Id: file.h 46331 2007-06-05 13:16:11Z JS $
-// Copyright: (c) 1998 Vadim Zeitlin
-// Licence: wxWindows licence
-/////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_FILEH__
-#define _WX_FILEH__
-
-#include "wx/defs.h"
-
-#if wxUSE_FILE
-
-#include "wx/string.h"
-#include "wx/filefn.h"
-#include "wx/strconv.h"
-
-// ----------------------------------------------------------------------------
-// constants
-// ----------------------------------------------------------------------------
-
-// we redefine these constants here because S_IREAD &c are _not_ standard
-// however, we do assume that the values correspond to the Unix umask bits
-#define wxS_IRUSR 00400
-#define wxS_IWUSR 00200
-#define wxS_IXUSR 00100
-
-#define wxS_IRGRP 00040
-#define wxS_IWGRP 00020
-#define wxS_IXGRP 00010
-
-#define wxS_IROTH 00004
-#define wxS_IWOTH 00002
-#define wxS_IXOTH 00001
-
-// default mode for the new files: corresponds to umask 022
-#define wxS_DEFAULT (wxS_IRUSR | wxS_IWUSR | wxS_IRGRP | wxS_IWGRP |\
- wxS_IROTH | wxS_IWOTH)
-
-// ----------------------------------------------------------------------------
-// class wxFile: raw file IO
-//
-// NB: for space efficiency this class has no virtual functions, including
-// dtor which is _not_ virtual, so it shouldn't be used as a base class.
-// ----------------------------------------------------------------------------
-
-class WXDLLIMPEXP_BASE wxFile
-{
-public:
- // more file constants
- // -------------------
- // opening mode
- enum OpenMode { read, write, read_write, write_append, write_excl };
- // standard values for file descriptor
- enum { fd_invalid = -1, fd_stdin, fd_stdout, fd_stderr };
-
- // static functions
- // ----------------
- // check whether a regular file by this name exists
- static bool Exists(const wxChar *name);
- // check whether we can access the given file in given mode
- // (only read and write make sense here)
- static bool Access(const wxChar *name, OpenMode mode);
-
- // ctors
- // -----
- // def ctor
- wxFile() { m_fd = fd_invalid; m_error = false; }
- // open specified file (may fail, use IsOpened())
- wxFile(const wxChar *szFileName, OpenMode mode = read);
- // attach to (already opened) file
- wxFile(int lfd) { m_fd = lfd; m_error = false; }
-
- // open/close
- // create a new file (with the default value of bOverwrite, it will fail if
- // the file already exists, otherwise it will overwrite it and succeed)
- bool Create(const wxChar *szFileName, bool bOverwrite = false,
- int access = wxS_DEFAULT);
- bool Open(const wxChar *szFileName, OpenMode mode = read,
- int access = wxS_DEFAULT);
- bool Close(); // Close is a NOP if not opened
-
- // assign an existing file descriptor and get it back from wxFile object
- void Attach(int lfd) { Close(); m_fd = lfd; m_error = false; }
- void Detach() { m_fd = fd_invalid; }
- int fd() const { return m_fd; }
-
- // read/write (unbuffered)
- // returns number of bytes read or wxInvalidOffset on error
- ssize_t Read(void *pBuf, size_t nCount);
- // returns the number of bytes written
- size_t Write(const void *pBuf, size_t nCount);
- // returns true on success
- bool Write(const wxString& s, const wxMBConv& conv = wxConvUTF8)
- {
- const wxWX2MBbuf buf = s.mb_str(conv);
- if (!buf)
- return false;
- size_t size = strlen(buf);
- return Write((const char *) buf, size) == size;
- }
- // flush data not yet written
- bool Flush();
-
- // file pointer operations (return wxInvalidOffset on failure)
- // move ptr ofs bytes related to start/current offset/end of file
- wxFileOffset Seek(wxFileOffset ofs, wxSeekMode mode = wxFromStart);
- // move ptr to ofs bytes before the end
- wxFileOffset SeekEnd(wxFileOffset ofs = 0) { return Seek(ofs, wxFromEnd); }
- // get current offset
- wxFileOffset Tell() const;
- // get current file length
- wxFileOffset Length() const;
-
- // simple accessors
- // is file opened?
- bool IsOpened() const { return m_fd != fd_invalid; }
- // is end of file reached?
- bool Eof() const;
- // has an error occurred?
- bool Error() const { return m_error; }
- // type such as disk or pipe
- wxFileKind GetKind() const { return wxGetFileKind(m_fd); }
-
- // dtor closes the file if opened
- ~wxFile() { Close(); }
-
-private:
- // copy ctor and assignment operator are private because
- // it doesn't make sense to copy files this way:
- // attempt to do it will provoke a compile-time error.
- wxFile(const wxFile&);
- wxFile& operator=(const wxFile&);
-
- int m_fd; // file descriptor or INVALID_FD if not opened
- bool m_error; // error memory
-};
-
-// ----------------------------------------------------------------------------
-// class wxTempFile: if you want to replace another file, create an instance
-// of wxTempFile passing the name of the file to be replaced to the ctor. Then
-// you can write to wxTempFile and call Commit() function to replace the old
-// file (and close this one) or call Discard() to cancel the modification. If
-// you call neither of them, dtor will call Discard().
-// ----------------------------------------------------------------------------
-
-class WXDLLIMPEXP_BASE wxTempFile
-{
-public:
- // ctors
- // default
- wxTempFile() { }
- // associates the temp file with the file to be replaced and opens it
- wxTempFile(const wxString& strName);
-
- // open the temp file (strName is the name of file to be replaced)
- bool Open(const wxString& strName);
-
- // is the file opened?
- bool IsOpened() const { return m_file.IsOpened(); }
- // get current file length
- wxFileOffset Length() const { return m_file.Length(); }
- // move ptr ofs bytes related to start/current offset/end of file
- wxFileOffset Seek(wxFileOffset ofs, wxSeekMode mode = wxFromStart)
- { return m_file.Seek(ofs, mode); }
- // get current offset
- wxFileOffset Tell() const { return m_file.Tell(); }
-
- // I/O (both functions return true on success, false on failure)
- bool Write(const void *p, size_t n) { return m_file.Write(p, n) == n; }
- bool Write(const wxString& str, const wxMBConv& conv = wxConvUTF8)
- { return m_file.Write(str, conv); }
-
- // different ways to close the file
- // validate changes and delete the old file of name m_strName
- bool Commit();
- // discard changes
- void Discard();
-
- // dtor calls Discard() if file is still opened
- ~wxTempFile();
-
-private:
- // no copy ctor/assignment operator
- wxTempFile(const wxTempFile&);
- wxTempFile& operator=(const wxTempFile&);
-
- wxString m_strName, // name of the file to replace in Commit()
- m_strTemp; // temporary file name
- wxFile m_file; // the temporary file
-};
-
-#endif // wxUSE_FILE
-
-#endif // _WX_FILEH__
diff --git a/Externals/wxWidgets/include/wx/fileconf.h b/Externals/wxWidgets/include/wx/fileconf.h
deleted file mode 100644
index 0a76ab4c8a..0000000000
--- a/Externals/wxWidgets/include/wx/fileconf.h
+++ /dev/null
@@ -1,246 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Name: wx/fileconf.h
-// Purpose: wxFileConfig derivation of wxConfigBase
-// Author: Vadim Zeitlin
-// Modified by:
-// Created: 07.04.98 (adapted from appconf.cpp)
-// RCS-ID: $Id: fileconf.h 50711 2007-12-15 02:57:58Z VZ $
-// Copyright: (c) 1997 Karsten Ballueder & Vadim Zeitlin
-// Ballueder@usa.net
-// Licence: wxWindows licence
-///////////////////////////////////////////////////////////////////////////////
-
-#ifndef _FILECONF_H
-#define _FILECONF_H
-
-#include "wx/defs.h"
-
-#if wxUSE_CONFIG
-
-#include "wx/textfile.h"
-#include "wx/string.h"
-#include "wx/confbase.h"
-
-// ----------------------------------------------------------------------------
-// wxFileConfig
-// ----------------------------------------------------------------------------
-
-/*
- wxFileConfig derives from base Config and implements file based config class,
- i.e. it uses ASCII disk files to store the information. These files are
- alternatively called INI, .conf or .rc in the documentation. They are
- organized in groups or sections, which can nest (i.e. a group contains
- subgroups, which contain their own subgroups &c). Each group has some
- number of entries, which are "key = value" pairs. More precisely, the format
- is:
-
- # comments are allowed after either ';' or '#' (Win/UNIX standard)
-
- # blank lines (as above) are ignored
-
- # global entries are members of special (no name) top group
- written_for = Windows
- platform = Linux
-
- # the start of the group 'Foo'
- [Foo] # may put comments like this also
- # following 3 lines are entries
- key = value
- another_key = " strings with spaces in the beginning should be quoted, \
- otherwise the spaces are lost"
- last_key = but you don't have to put " normally (nor quote them, like here)
-
- # subgroup of the group 'Foo'
- # (order is not important, only the name is: separator is '/', as in paths)
- [Foo/Bar]
- # entries prefixed with "!" are immutable, i.e. can't be changed if they are
- # set in the system-wide config file
- !special_key = value
- bar_entry = whatever
-
- [Foo/Bar/Fubar] # depth is (theoretically :-) unlimited
- # may have the same name as key in another section
- bar_entry = whatever not
-
- You have {read/write/delete}Entry functions (guess what they do) and also
- setCurrentPath to select current group. enum{Subgroups/Entries} allow you
- to get all entries in the config file (in the current group). Finally,
- flush() writes immediately all changed entries to disk (otherwise it would
- be done automatically in dtor)
-
- wxFileConfig manages not less than 2 config files for each program: global
- and local (or system and user if you prefer). Entries are read from both of
- them and the local entries override the global ones unless the latter is
- immutable (prefixed with '!') in which case a warning message is generated
- and local value is ignored. Of course, the changes are always written to local
- file only.
-
- The names of these files can be specified in a number of ways. First of all,
- you can use the standard convention: using the ctor which takes 'strAppName'
- parameter will probably be sufficient for 90% of cases. If, for whatever
- reason you wish to use the files with some other names, you can always use the
- second ctor.
-
- wxFileConfig also may automatically expand the values of environment variables
- in the entries it reads: for example, if you have an entry
- score_file = $HOME/.score
- a call to Read(&str, "score_file") will return a complete path to .score file
- unless the expansion was previously disabled with SetExpandEnvVars(false) call
- (it's on by default, the current status can be retrieved with
- IsExpandingEnvVars function).
-*/
-class WXDLLIMPEXP_FWD_BASE wxFileConfigGroup;
-class WXDLLIMPEXP_FWD_BASE wxFileConfigEntry;
-class WXDLLIMPEXP_FWD_BASE wxFileConfigLineList;
-
-#if wxUSE_STREAMS
-class WXDLLIMPEXP_FWD_BASE wxInputStream;
-class WXDLLIMPEXP_FWD_BASE wxOutputStream;
-#endif // wxUSE_STREAMS
-
-class WXDLLIMPEXP_BASE wxFileConfig : public wxConfigBase
-{
-public:
- // construct the "standard" full name for global (system-wide) and
- // local (user-specific) config files from the base file name.
- //
- // the following are the filenames returned by this functions:
- // global local
- // Unix /etc/file.ext ~/.file
- // Win %windir%\file.ext %USERPROFILE%\file.ext
- //
- // where file is the basename of szFile, ext is its extension
- // or .conf (Unix) or .ini (Win) if it has none
- static wxString GetGlobalFileName(const wxChar *szFile);
- static wxString GetLocalFileName(const wxChar *szFile);
-
- // ctor & dtor
- // New constructor: one size fits all. Specify wxCONFIG_USE_LOCAL_FILE or
- // wxCONFIG_USE_GLOBAL_FILE to say which files should be used.
- wxFileConfig(const wxString& appName = wxEmptyString,
- const wxString& vendorName = wxEmptyString,
- const wxString& localFilename = wxEmptyString,
- const wxString& globalFilename = wxEmptyString,
- long style = wxCONFIG_USE_LOCAL_FILE | wxCONFIG_USE_GLOBAL_FILE,
- const wxMBConv& conv = wxConvAuto());
-
-#if wxUSE_STREAMS
- // ctor that takes an input stream.
- wxFileConfig(wxInputStream &inStream, const wxMBConv& conv = wxConvAuto());
-#endif // wxUSE_STREAMS
-
- // dtor will save unsaved data
- virtual ~wxFileConfig();
-
- // under Unix, set the umask to be used for the file creation, do nothing
- // under other systems
-#ifdef __UNIX__
- void SetUmask(int mode) { m_umask = mode; }
-#else // !__UNIX__
- void SetUmask(int WXUNUSED(mode)) { }
-#endif // __UNIX__/!__UNIX__
-
- // implement inherited pure virtual functions
- virtual void SetPath(const wxString& strPath);
- virtual const wxString& GetPath() const { return m_strPath; }
-
- virtual bool GetFirstGroup(wxString& str, long& lIndex) const;
- virtual bool GetNextGroup (wxString& str, long& lIndex) const;
- virtual bool GetFirstEntry(wxString& str, long& lIndex) const;
- virtual bool GetNextEntry (wxString& str, long& lIndex) const;
-
- virtual size_t GetNumberOfEntries(bool bRecursive = false) const;
- virtual size_t GetNumberOfGroups(bool bRecursive = false) const;
-
- virtual bool HasGroup(const wxString& strName) const;
- virtual bool HasEntry(const wxString& strName) const;
-
- virtual bool Flush(bool bCurrentOnly = false);
-
- virtual bool RenameEntry(const wxString& oldName, const wxString& newName);
- virtual bool RenameGroup(const wxString& oldName, const wxString& newName);
-
- virtual bool DeleteEntry(const wxString& key, bool bGroupIfEmptyAlso = true);
- virtual bool DeleteGroup(const wxString& szKey);
- virtual bool DeleteAll();
-
- // additional, wxFileConfig-specific, functionality
-#if wxUSE_STREAMS
- // save the entire config file text to the given stream, note that the text
- // won't be saved again in dtor when Flush() is called if you use this method
- // as it won't be "changed" any more
- virtual bool Save(wxOutputStream& os, const wxMBConv& conv = wxConvAuto());
-#endif // wxUSE_STREAMS
-
-public:
- // functions to work with this list
- wxFileConfigLineList *LineListAppend(const wxString& str);
- wxFileConfigLineList *LineListInsert(const wxString& str,
- wxFileConfigLineList *pLine); // NULL => Prepend()
- void LineListRemove(wxFileConfigLineList *pLine);
- bool LineListIsEmpty();
-
-protected:
- virtual bool DoReadString(const wxString& key, wxString *pStr) const;
- virtual bool DoReadLong(const wxString& key, long *pl) const;
-
- virtual bool DoWriteString(const wxString& key, const wxString& szValue);
- virtual bool DoWriteLong(const wxString& key, long lValue);
-
-private:
- // GetXXXFileName helpers: return ('/' terminated) directory names
- static wxString GetGlobalDir();
- static wxString GetLocalDir();
-
- // common part of all ctors (assumes that m_str{Local|Global}File are already
- // initialized
- void Init();
-
- // common part of from dtor and DeleteAll
- void CleanUp();
-
- // parse the whole file
- void Parse(const wxTextBuffer& buffer, bool bLocal);
-
- // the same as SetPath("/")
- void SetRootPath();
-
- // real SetPath() implementation, returns true if path could be set or false
- // if path doesn't exist and createMissingComponents == false
- bool DoSetPath(const wxString& strPath, bool createMissingComponents);
-
- // set/test the dirty flag
- void SetDirty() { m_isDirty = true; }
- void ResetDirty() { m_isDirty = false; }
- bool IsDirty() const { return m_isDirty; }
-
-
- // member variables
- // ----------------
- wxFileConfigLineList *m_linesHead, // head of the linked list
- *m_linesTail; // tail
-
- wxString m_strLocalFile, // local file name passed to ctor
- m_strGlobalFile; // global
- wxString m_strPath; // current path (not '/' terminated)
-
- wxFileConfigGroup *m_pRootGroup, // the top (unnamed) group
- *m_pCurrentGroup; // the current group
-
- wxMBConv *m_conv;
-
-#ifdef __UNIX__
- int m_umask; // the umask to use for file creation
-#endif // __UNIX__
-
- bool m_isDirty; // if true, we have unsaved changes
-
- DECLARE_NO_COPY_CLASS(wxFileConfig)
-};
-
-#endif
- // wxUSE_CONFIG
-
-#endif
- //_FILECONF_H
-
diff --git a/Externals/wxWidgets/include/wx/filedlg.h b/Externals/wxWidgets/include/wx/filedlg.h
deleted file mode 100644
index 8f3fc48d59..0000000000
--- a/Externals/wxWidgets/include/wx/filedlg.h
+++ /dev/null
@@ -1,226 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-// Name: wx/filedlg.h
-// Purpose: wxFileDialog base header
-// Author: Robert Roebling
-// Modified by:
-// Created: 8/17/99
-// Copyright: (c) Robert Roebling
-// RCS-ID: $Id: filedlg.h 44027 2006-12-21 19:26:48Z VZ $
-// Licence: wxWindows licence
-/////////////////////////////////////////////////////////////////////////////
-
-#ifndef _WX_FILEDLG_H_BASE_
-#define _WX_FILEDLG_H_BASE_
-
-#include "wx/defs.h"
-
-#if wxUSE_FILEDLG
-
-#include "wx/dialog.h"
-#include "wx/arrstr.h"
-
-//----------------------------------------------------------------------------
-// wxFileDialog data
-//----------------------------------------------------------------------------
-
-/*
- The flags below must coexist with the following flags in m_windowStyle
- #define wxCAPTION 0x20000000
- #define wxMAXIMIZE 0x00002000
- #define wxCLOSE_BOX 0x00001000
- #define wxSYSTEM_MENU 0x00000800
- wxBORDER_NONE = 0x00200000
- #define wxRESIZE_BORDER 0x00000040
-*/
-
-enum
-{
- wxFD_OPEN = 0x0001,
- wxFD_SAVE = 0x0002,
- wxFD_OVERWRITE_PROMPT = 0x0004,
- wxFD_FILE_MUST_EXIST = 0x0010,
- wxFD_MULTIPLE = 0x0020,
- wxFD_CHANGE_DIR = 0x0080,
- wxFD_PREVIEW = 0x0100
-};
-
-#if WXWIN_COMPATIBILITY_2_6
-enum
-{
- wxOPEN = wxFD_OPEN,
- wxSAVE = wxFD_SAVE,
- wxOVERWRITE_PROMPT = wxFD_OVERWRITE_PROMPT,
-#if WXWIN_COMPATIBILITY_2_4
- wxHIDE_READONLY = 0x0008,
-#endif
- wxFILE_MUST_EXIST = wxFD_FILE_MUST_EXIST,
- wxMULTIPLE = wxFD_MULTIPLE,
- wxCHANGE_DIR = wxFD_CHANGE_DIR
-};
-#endif
-
-#define wxFD_DEFAULT_STYLE wxFD_OPEN
-
-extern WXDLLEXPORT_DATA(const wxChar) wxFileDialogNameStr[];
-extern WXDLLEXPORT_DATA(const wxChar) wxFileSelectorPromptStr[];
-extern WXDLLEXPORT_DATA(const wxChar) wxFileSelectorDefaultWildcardStr[];
-
-//----------------------------------------------------------------------------
-// wxFileDialogBase
-//----------------------------------------------------------------------------
-
-class WXDLLEXPORT wxFileDialogBase: public wxDialog
-{
-public:
- wxFileDialogBase () { Init(); }
-
- wxFileDialogBase(wxWindow *parent,
- const wxString& message = wxFileSelectorPromptStr,
- const wxString& defaultDir = wxEmptyString,
- const wxString& defaultFile = wxEmptyString,
- const wxString& wildCard = wxFileSelectorDefaultWildcardStr,
- long style = wxFD_DEFAULT_STYLE,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& sz = wxDefaultSize,
- const wxString& name = wxFileDialogNameStr)
- {
- Init();
- Create(parent, message, defaultDir, defaultFile, wildCard, style, pos, sz, name);
- }
-
- bool Create(wxWindow *parent,
- const wxString& message = wxFileSelectorPromptStr,
- const wxString& defaultDir = wxEmptyString,
- const wxString& defaultFile = wxEmptyString,
- const wxString& wildCard = wxFileSelectorDefaultWildcardStr,
- long style = wxFD_DEFAULT_STYLE,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& sz = wxDefaultSize,
- const wxString& name = wxFileDialogNameStr);
-
- bool HasFdFlag(int flag) const { return HasFlag(flag); }
-
- virtual void SetMessage(const wxString& message) { m_message = message; }
- virtual void SetPath(const wxString& path) { m_path = path; }
- virtual void SetDirectory(const wxString& dir) { m_dir = dir; }
- virtual void SetFilename(const wxString& name) { m_fileName = name; }
- virtual void SetWildcard(const wxString& wildCard) { m_wildCard = wildCard; }
- virtual void SetFilterIndex(int filterIndex) { m_filterIndex = filterIndex; }
-
- virtual wxString GetMessage() const { return m_message; }
- virtual wxString GetPath() const { return m_path; }
- virtual void GetPaths(wxArrayString& paths) const { paths.Empty(); paths.Add(m_path); }
- virtual wxString GetDirectory() const { return m_dir; }
- virtual wxString GetFilename() const { return m_fileName; }
- virtual void GetFilenames(wxArrayString& files) const { files.Empty(); files.Add(m_fileName); }
- virtual wxString GetWildcard() const { return m_wildCard; }
- virtual int GetFilterIndex() const { return m_filterIndex; }
-
- // Utility functions
-
-#if WXWIN_COMPATIBILITY_2_4
- // Parses the wildCard, returning the number of filters.
- // Returns 0 if none or if there's a problem,
- // The arrays will contain an equal number of items found before the error.
- // wildCard is in the form:
- // "All files (*)|*|Image Files (*.jpeg *.png)|*.jpg;*.png"
- wxDEPRECATED( static int ParseWildcard(const wxString& wildCard,
- wxArrayString& descriptions,
- wxArrayString& filters) );
-#endif // WXWIN_COMPATIBILITY_2_4
-
-#if WXWIN_COMPATIBILITY_2_6
-
- wxDEPRECATED( long GetStyle() const );
- wxDEPRECATED( void SetStyle(long style) );
-
-#endif // WXWIN_COMPATIBILITY_2_6
-
-
- // Append first extension to filePath from a ';' separated extensionList
- // if filePath = "path/foo.bar" just return it as is
- // if filePath = "foo[.]" and extensionList = "*.jpg;*.png" return "foo.jpg"
- // if the extension is "*.j?g" (has wildcards) or "jpg" then return filePath
- static wxString AppendExtension(const wxString &filePath,
- const wxString &extensionList);
-
-protected:
- wxString m_message;
- wxString m_dir;
- wxString m_path; // Full path
- wxString m_fileName;
- wxString m_wildCard;
- int m_filterIndex;
-
-private:
- void Init();
- DECLARE_DYNAMIC_CLASS(wxFileDialogBase)
- DECLARE_NO_COPY_CLASS(wxFileDialogBase)
-};
-
-//----------------------------------------------------------------------------
-// wxFileDialog convenience functions
-//----------------------------------------------------------------------------
-
-// File selector - backward compatibility
-WXDLLEXPORT wxString
-wxFileSelector(const wxChar *message = wxFileSelectorPromptStr,
- const wxChar *default_path = NULL,
- const wxChar *default_filename = NULL,
- const wxChar *default_extension = NULL,
- const wxChar *wildcard = wxFileSelectorDefaultWildcardStr,
- int flags = 0,
- wxWindow *parent = NULL,
- int x = wxDefaultCoord, int y = wxDefaultCoord);
-
-// An extended version of wxFileSelector
-WXDLLEXPORT wxString
-wxFileSelectorEx(const wxChar *message = wxFileSelectorPromptStr,
- const wxChar *default_path = NULL,
- const wxChar *default_filename = NULL,
- int *indexDefaultExtension = NULL,
- const wxChar *wildcard = wxFileSelectorDefaultWildcardStr,
- int flags = 0,
- wxWindow *parent = NULL,
- int x = wxDefaultCoord, int y = wxDefaultCoord);
-
-// Ask for filename to load
-WXDLLEXPORT wxString
-wxLoadFileSelector(const wxChar *what,
- const wxChar *extension,
- const wxChar *default_name = (const wxChar *)NULL,
- wxWindow *parent = (wxWindow *) NULL);
-
-// Ask for filename to save
-WXDLLEXPORT wxString
-wxSaveFileSelector(const wxChar *what,
- const wxChar *extension,
- const wxChar *default_name = (const wxChar *) NULL,
- wxWindow *parent = (wxWindow *) NULL);
-
-
-#if defined (__WXUNIVERSAL__)
-#define wxUSE_GENERIC_FILEDIALOG
-#include "wx/generic/filedlgg.h"
-#elif defined(__WXMSW__)
-#include "wx/msw/filedlg.h"
-#elif defined(__WXMOTIF__)
-#include "wx/motif/filedlg.h"
-#elif defined(__WXGTK24__)
-#include "wx/gtk/filedlg.h" // GTK+ > 2.4 has native version
-#elif defined(__WXGTK20__)
-#define wxUSE_GENERIC_FILEDIALOG
-#include "wx/generic/filedlgg.h"
-#elif defined(__WXGTK__)
-#include "wx/gtk1/filedlg.h"
-#elif defined(__WXMAC__)
-#include "wx/mac/filedlg.h"
-#elif defined(__WXCOCOA__)
-#include "wx/cocoa/filedlg.h"
-#elif defined(__WXPM__)
-#include "wx/os2/filedlg.h"
-#endif
-
-#endif // wxUSE_FILEDLG
-
-#endif // _WX_FILEDLG_H_BASE_
diff --git a/Externals/wxWidgets/include/wx/filefn.h b/Externals/wxWidgets/include/wx/filefn.h
deleted file mode 100644
index 56c01c7bc4..0000000000
--- a/Externals/wxWidgets/include/wx/filefn.h
+++ /dev/null
@@ -1,741 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-// Name: wx/filefn.h
-// Purpose: File- and directory-related functions
-// Author: Julian Smart
-// Modified by:
-// Created: 29/01/98
-// RCS-ID: $Id: filefn.h 53877 2008-05-31 12:43:44Z SN $
-// Copyright: (c) 1998 Julian Smart
-// Licence: wxWindows licence
-/////////////////////////////////////////////////////////////////////////////
-
-#ifndef _FILEFN_H_
-#define _FILEFN_H_
-
-#include "wx/list.h"
-#include "wx/arrstr.h"
-
-#ifdef __WXWINCE__
- #include "wx/msw/wince/time.h"
- #include "wx/msw/private.h"
-#else
- #include
-#endif
-
-#ifdef __WXWINCE__
-// Nothing
-#elif !defined(__MWERKS__)
- #include
- #include
-#else
- #ifdef __MACH__
- #include
- #include
- #include
- #include
- #else
- #include
- #include
- #include
- #endif
-#endif
-
-#ifdef __OS2__
-// need to check for __OS2__ first since currently both
-// __OS2__ and __UNIX__ are defined.
- #include
- #include "wx/os2/private.h"
- #ifdef __WATCOMC__
- #include
- #endif
- #include
- #ifdef __EMX__
- #include
- #endif
-#elif defined(__UNIX__)
- #include
- #include
-#endif
-
-#if defined(__WINDOWS__) && !defined(__WXMICROWIN__)
-#if !defined( __GNUWIN32__ ) && !defined( __MWERKS__ ) && !defined(__SALFORDC__) && !defined(__WXWINCE__) && !defined(__CYGWIN__)
- #include
- #include
- #include
-#endif // __WINDOWS__
-#endif // native Win compiler
-
-#if defined(__DOS__)
- #ifdef __WATCOMC__
- #include
- #include
- #include
- #endif
- #ifdef __DJGPP__
- #include
- #include
- #endif
-#endif
-
-#ifdef __BORLANDC__ // Please someone tell me which version of Borland needs
- // this (3.1 I believe) and how to test for it.
- // If this works for Borland 4.0 as well, then no worries.
- #include
-#endif
-
-#ifdef __SALFORDC__
- #include
- #include
-#endif
-
-#ifndef __WXWINCE__
- #include