mirror of
https://github.com/vcmi/vcmi.git
synced 2025-08-13 19:54:17 +02:00
OS X patch from stopiccot
This commit is contained in:
@@ -188,6 +188,13 @@ int main(int argc, char** argv)
|
|||||||
std::string executablePath = argv[0];
|
std::string executablePath = argv[0];
|
||||||
std::string workDir = executablePath.substr(0, executablePath.rfind('/'));
|
std::string workDir = executablePath.substr(0, executablePath.rfind('/'));
|
||||||
chdir(workDir.c_str());
|
chdir(workDir.c_str());
|
||||||
|
|
||||||
|
FILE* check = fopen("../Data/game_data_prepared", "r");
|
||||||
|
if (check == NULL) {
|
||||||
|
system("open ./vcmibuilder.app");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
fclose(check);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
tlog0 << "Starting... " << std::endl;
|
tlog0 << "Starting... " << std::endl;
|
||||||
|
@@ -76,7 +76,7 @@ elseif(APPLE)
|
|||||||
mkdir -p ${BUNDLE_PATH}/Data/Mods/WoG &&
|
mkdir -p ${BUNDLE_PATH}/Data/Mods/WoG &&
|
||||||
cp -r ${CMAKE_HOME_DIRECTORY}/config ${BUNDLE_PATH}/Data/config &&
|
cp -r ${CMAKE_HOME_DIRECTORY}/config ${BUNDLE_PATH}/Data/config &&
|
||||||
cp -r ${CMAKE_HOME_DIRECTORY}/Mods/vcmi ${BUNDLE_PATH}/Data/Mods/vcmi &&
|
cp -r ${CMAKE_HOME_DIRECTORY}/Mods/vcmi ${BUNDLE_PATH}/Data/Mods/vcmi &&
|
||||||
cp ${CMAKE_HOME_DIRECTORY}/Mods/WoG/filesystem.json ${BUNDLE_PATH}/Data/Mods/WoG/filesystem.json)
|
cp ${CMAKE_HOME_DIRECTORY}/Mods/WoG/mod.json ${BUNDLE_PATH}/Data/Mods/WoG/mod.json)
|
||||||
add_custom_command(TARGET vcmiclient POST_BUILD COMMAND ${MakeVCMIBundle})
|
add_custom_command(TARGET vcmiclient POST_BUILD COMMAND ${MakeVCMIBundle})
|
||||||
else()
|
else()
|
||||||
add_executable(vcmiclient ${client_SRCS})
|
add_executable(vcmiclient ${client_SRCS})
|
||||||
|
BIN
osx-vcmibuilder/innoextract
Executable file
BIN
osx-vcmibuilder/innoextract
Executable file
Binary file not shown.
BIN
osx-vcmibuilder/unshield
Executable file
BIN
osx-vcmibuilder/unshield
Executable file
Binary file not shown.
BIN
osx-vcmibuilder/vcmibuilder.icns
Normal file
BIN
osx-vcmibuilder/vcmibuilder.icns
Normal file
Binary file not shown.
307
osx-vcmibuilder/vcmibuilder.xcodeproj/project.pbxproj
Normal file
307
osx-vcmibuilder/vcmibuilder.xcodeproj/project.pbxproj
Normal file
@@ -0,0 +1,307 @@
|
|||||||
|
// !$*UTF8*$!
|
||||||
|
{
|
||||||
|
archiveVersion = 1;
|
||||||
|
classes = {
|
||||||
|
};
|
||||||
|
objectVersion = 46;
|
||||||
|
objects = {
|
||||||
|
|
||||||
|
/* Begin PBXBuildFile section */
|
||||||
|
A8467DFF16760A4E00A9F095 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A8467DFE16760A4E00A9F095 /* Cocoa.framework */; };
|
||||||
|
A8467E0916760A4E00A9F095 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = A8467E0716760A4E00A9F095 /* InfoPlist.strings */; };
|
||||||
|
A8467E0B16760A4E00A9F095 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = A8467E0A16760A4E00A9F095 /* main.m */; };
|
||||||
|
A8467E1216760A4E00A9F095 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = A8467E1116760A4E00A9F095 /* AppDelegate.m */; };
|
||||||
|
A8467E1516760A4E00A9F095 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = A8467E1316760A4E00A9F095 /* MainMenu.xib */; };
|
||||||
|
A866001516760C5B00DBFB19 /* vcmibuilder.icns in Resources */ = {isa = PBXBuildFile; fileRef = A866001416760C5B00DBFB19 /* vcmibuilder.icns */; };
|
||||||
|
A8F36836167632DC0009832A /* innoextract in Resources */ = {isa = PBXBuildFile; fileRef = A8F36834167632DC0009832A /* innoextract */; };
|
||||||
|
A8F36837167632DC0009832A /* unshield in Resources */ = {isa = PBXBuildFile; fileRef = A8F36835167632DC0009832A /* unshield */; };
|
||||||
|
/* End PBXBuildFile section */
|
||||||
|
|
||||||
|
/* Begin PBXFileReference section */
|
||||||
|
A8467DFA16760A4E00A9F095 /* vcmibuilder.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = vcmibuilder.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
|
A8467DFE16760A4E00A9F095 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; };
|
||||||
|
A8467E0116760A4E00A9F095 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; };
|
||||||
|
A8467E0216760A4E00A9F095 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; };
|
||||||
|
A8467E0316760A4E00A9F095 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
|
||||||
|
A8467E0616760A4E00A9F095 /* vcmibuilder-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "vcmibuilder-Info.plist"; sourceTree = "<group>"; };
|
||||||
|
A8467E0816760A4E00A9F095 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
|
||||||
|
A8467E0A16760A4E00A9F095 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
|
||||||
|
A8467E0C16760A4E00A9F095 /* vcmibuilder-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "vcmibuilder-Prefix.pch"; sourceTree = "<group>"; };
|
||||||
|
A8467E1016760A4E00A9F095 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
|
||||||
|
A8467E1116760A4E00A9F095 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
|
||||||
|
A8467E1416760A4E00A9F095 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/MainMenu.xib; sourceTree = "<group>"; };
|
||||||
|
A866001416760C5B00DBFB19 /* vcmibuilder.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = vcmibuilder.icns; sourceTree = "<group>"; };
|
||||||
|
A8F36834167632DC0009832A /* innoextract */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.executable"; path = innoextract; sourceTree = "<group>"; };
|
||||||
|
A8F36835167632DC0009832A /* unshield */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.executable"; path = unshield; sourceTree = "<group>"; };
|
||||||
|
/* End PBXFileReference section */
|
||||||
|
|
||||||
|
/* Begin PBXFrameworksBuildPhase section */
|
||||||
|
A8467DF716760A4E00A9F095 /* Frameworks */ = {
|
||||||
|
isa = PBXFrameworksBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
A8467DFF16760A4E00A9F095 /* Cocoa.framework in Frameworks */,
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
|
/* End PBXFrameworksBuildPhase section */
|
||||||
|
|
||||||
|
/* Begin PBXGroup section */
|
||||||
|
A8467DEF16760A4E00A9F095 = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
A8F36834167632DC0009832A /* innoextract */,
|
||||||
|
A8F36835167632DC0009832A /* unshield */,
|
||||||
|
A866001416760C5B00DBFB19 /* vcmibuilder.icns */,
|
||||||
|
A8467E0416760A4E00A9F095 /* vcmibuilder */,
|
||||||
|
A8467DFD16760A4E00A9F095 /* Frameworks */,
|
||||||
|
A8467DFB16760A4E00A9F095 /* Products */,
|
||||||
|
);
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
A8467DFB16760A4E00A9F095 /* Products */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
A8467DFA16760A4E00A9F095 /* vcmibuilder.app */,
|
||||||
|
);
|
||||||
|
name = Products;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
A8467DFD16760A4E00A9F095 /* Frameworks */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
A8467DFE16760A4E00A9F095 /* Cocoa.framework */,
|
||||||
|
A8467E0016760A4E00A9F095 /* Other Frameworks */,
|
||||||
|
);
|
||||||
|
name = Frameworks;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
A8467E0016760A4E00A9F095 /* Other Frameworks */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
A8467E0116760A4E00A9F095 /* AppKit.framework */,
|
||||||
|
A8467E0216760A4E00A9F095 /* CoreData.framework */,
|
||||||
|
A8467E0316760A4E00A9F095 /* Foundation.framework */,
|
||||||
|
);
|
||||||
|
name = "Other Frameworks";
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
A8467E0416760A4E00A9F095 /* vcmibuilder */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
A8467E1016760A4E00A9F095 /* AppDelegate.h */,
|
||||||
|
A8467E1116760A4E00A9F095 /* AppDelegate.m */,
|
||||||
|
A8467E1316760A4E00A9F095 /* MainMenu.xib */,
|
||||||
|
A8467E0516760A4E00A9F095 /* Supporting Files */,
|
||||||
|
);
|
||||||
|
path = vcmibuilder;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
A8467E0516760A4E00A9F095 /* Supporting Files */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
A8467E0616760A4E00A9F095 /* vcmibuilder-Info.plist */,
|
||||||
|
A8467E0716760A4E00A9F095 /* InfoPlist.strings */,
|
||||||
|
A8467E0A16760A4E00A9F095 /* main.m */,
|
||||||
|
A8467E0C16760A4E00A9F095 /* vcmibuilder-Prefix.pch */,
|
||||||
|
);
|
||||||
|
name = "Supporting Files";
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
/* End PBXGroup section */
|
||||||
|
|
||||||
|
/* Begin PBXNativeTarget section */
|
||||||
|
A8467DF916760A4E00A9F095 /* vcmibuilder */ = {
|
||||||
|
isa = PBXNativeTarget;
|
||||||
|
buildConfigurationList = A8467E1816760A4E00A9F095 /* Build configuration list for PBXNativeTarget "vcmibuilder" */;
|
||||||
|
buildPhases = (
|
||||||
|
A8467DF616760A4E00A9F095 /* Sources */,
|
||||||
|
A8467DF716760A4E00A9F095 /* Frameworks */,
|
||||||
|
A8467DF816760A4E00A9F095 /* Resources */,
|
||||||
|
);
|
||||||
|
buildRules = (
|
||||||
|
);
|
||||||
|
dependencies = (
|
||||||
|
);
|
||||||
|
name = vcmibuilder;
|
||||||
|
productName = vcmibuilder;
|
||||||
|
productReference = A8467DFA16760A4E00A9F095 /* vcmibuilder.app */;
|
||||||
|
productType = "com.apple.product-type.application";
|
||||||
|
};
|
||||||
|
/* End PBXNativeTarget section */
|
||||||
|
|
||||||
|
/* Begin PBXProject section */
|
||||||
|
A8467DF116760A4E00A9F095 /* Project object */ = {
|
||||||
|
isa = PBXProject;
|
||||||
|
attributes = {
|
||||||
|
LastUpgradeCheck = 0450;
|
||||||
|
ORGANIZATIONNAME = "Alexey Petruchik";
|
||||||
|
};
|
||||||
|
buildConfigurationList = A8467DF416760A4E00A9F095 /* Build configuration list for PBXProject "vcmibuilder" */;
|
||||||
|
compatibilityVersion = "Xcode 3.2";
|
||||||
|
developmentRegion = English;
|
||||||
|
hasScannedForEncodings = 0;
|
||||||
|
knownRegions = (
|
||||||
|
en,
|
||||||
|
);
|
||||||
|
mainGroup = A8467DEF16760A4E00A9F095;
|
||||||
|
productRefGroup = A8467DFB16760A4E00A9F095 /* Products */;
|
||||||
|
projectDirPath = "";
|
||||||
|
projectRoot = "";
|
||||||
|
targets = (
|
||||||
|
A8467DF916760A4E00A9F095 /* vcmibuilder */,
|
||||||
|
);
|
||||||
|
};
|
||||||
|
/* End PBXProject section */
|
||||||
|
|
||||||
|
/* Begin PBXResourcesBuildPhase section */
|
||||||
|
A8467DF816760A4E00A9F095 /* Resources */ = {
|
||||||
|
isa = PBXResourcesBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
A8467E0916760A4E00A9F095 /* InfoPlist.strings in Resources */,
|
||||||
|
A8467E1516760A4E00A9F095 /* MainMenu.xib in Resources */,
|
||||||
|
A866001516760C5B00DBFB19 /* vcmibuilder.icns in Resources */,
|
||||||
|
A8F36836167632DC0009832A /* innoextract in Resources */,
|
||||||
|
A8F36837167632DC0009832A /* unshield in Resources */,
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
|
/* End PBXResourcesBuildPhase section */
|
||||||
|
|
||||||
|
/* Begin PBXSourcesBuildPhase section */
|
||||||
|
A8467DF616760A4E00A9F095 /* Sources */ = {
|
||||||
|
isa = PBXSourcesBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
A8467E0B16760A4E00A9F095 /* main.m in Sources */,
|
||||||
|
A8467E1216760A4E00A9F095 /* AppDelegate.m in Sources */,
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
|
/* End PBXSourcesBuildPhase section */
|
||||||
|
|
||||||
|
/* Begin PBXVariantGroup section */
|
||||||
|
A8467E0716760A4E00A9F095 /* InfoPlist.strings */ = {
|
||||||
|
isa = PBXVariantGroup;
|
||||||
|
children = (
|
||||||
|
A8467E0816760A4E00A9F095 /* en */,
|
||||||
|
);
|
||||||
|
name = InfoPlist.strings;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
A8467E1316760A4E00A9F095 /* MainMenu.xib */ = {
|
||||||
|
isa = PBXVariantGroup;
|
||||||
|
children = (
|
||||||
|
A8467E1416760A4E00A9F095 /* en */,
|
||||||
|
);
|
||||||
|
name = MainMenu.xib;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
/* End PBXVariantGroup section */
|
||||||
|
|
||||||
|
/* Begin XCBuildConfiguration section */
|
||||||
|
A8467E1616760A4E00A9F095 /* Debug */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
buildSettings = {
|
||||||
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||||
|
ARCHS = "$(ARCHS_STANDARD_64_BIT)";
|
||||||
|
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||||
|
CLANG_CXX_LIBRARY = "libc++";
|
||||||
|
CLANG_ENABLE_OBJC_ARC = YES;
|
||||||
|
CLANG_WARN_EMPTY_BODY = YES;
|
||||||
|
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||||
|
COPY_PHASE_STRIP = NO;
|
||||||
|
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||||
|
GCC_DYNAMIC_NO_PIC = NO;
|
||||||
|
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
|
||||||
|
GCC_OPTIMIZATION_LEVEL = 0;
|
||||||
|
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||||
|
"DEBUG=1",
|
||||||
|
"$(inherited)",
|
||||||
|
);
|
||||||
|
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
|
||||||
|
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||||
|
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||||
|
GCC_WARN_INHIBIT_ALL_WARNINGS = NO;
|
||||||
|
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||||
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
|
MACOSX_DEPLOYMENT_TARGET = 10.7;
|
||||||
|
ONLY_ACTIVE_ARCH = YES;
|
||||||
|
SDKROOT = macosx;
|
||||||
|
};
|
||||||
|
name = Debug;
|
||||||
|
};
|
||||||
|
A8467E1716760A4E00A9F095 /* Release */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
buildSettings = {
|
||||||
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||||
|
ARCHS = "$(ARCHS_STANDARD_64_BIT)";
|
||||||
|
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||||
|
CLANG_CXX_LIBRARY = "libc++";
|
||||||
|
CLANG_ENABLE_OBJC_ARC = YES;
|
||||||
|
CLANG_WARN_EMPTY_BODY = YES;
|
||||||
|
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||||
|
COPY_PHASE_STRIP = YES;
|
||||||
|
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||||
|
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||||
|
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
|
||||||
|
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||||
|
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||||
|
GCC_WARN_INHIBIT_ALL_WARNINGS = NO;
|
||||||
|
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||||
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
|
MACOSX_DEPLOYMENT_TARGET = 10.7;
|
||||||
|
SDKROOT = macosx;
|
||||||
|
};
|
||||||
|
name = Release;
|
||||||
|
};
|
||||||
|
A8467E1916760A4E00A9F095 /* Debug */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
buildSettings = {
|
||||||
|
COMBINE_HIDPI_IMAGES = YES;
|
||||||
|
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||||
|
GCC_PREFIX_HEADER = "vcmibuilder/vcmibuilder-Prefix.pch";
|
||||||
|
INFOPLIST_FILE = "vcmibuilder/vcmibuilder-Info.plist";
|
||||||
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
|
WRAPPER_EXTENSION = app;
|
||||||
|
};
|
||||||
|
name = Debug;
|
||||||
|
};
|
||||||
|
A8467E1A16760A4E00A9F095 /* Release */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
buildSettings = {
|
||||||
|
COMBINE_HIDPI_IMAGES = YES;
|
||||||
|
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||||
|
GCC_PREFIX_HEADER = "vcmibuilder/vcmibuilder-Prefix.pch";
|
||||||
|
INFOPLIST_FILE = "vcmibuilder/vcmibuilder-Info.plist";
|
||||||
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
|
WRAPPER_EXTENSION = app;
|
||||||
|
};
|
||||||
|
name = Release;
|
||||||
|
};
|
||||||
|
/* End XCBuildConfiguration section */
|
||||||
|
|
||||||
|
/* Begin XCConfigurationList section */
|
||||||
|
A8467DF416760A4E00A9F095 /* Build configuration list for PBXProject "vcmibuilder" */ = {
|
||||||
|
isa = XCConfigurationList;
|
||||||
|
buildConfigurations = (
|
||||||
|
A8467E1616760A4E00A9F095 /* Debug */,
|
||||||
|
A8467E1716760A4E00A9F095 /* Release */,
|
||||||
|
);
|
||||||
|
defaultConfigurationIsVisible = 0;
|
||||||
|
defaultConfigurationName = Release;
|
||||||
|
};
|
||||||
|
A8467E1816760A4E00A9F095 /* Build configuration list for PBXNativeTarget "vcmibuilder" */ = {
|
||||||
|
isa = XCConfigurationList;
|
||||||
|
buildConfigurations = (
|
||||||
|
A8467E1916760A4E00A9F095 /* Debug */,
|
||||||
|
A8467E1A16760A4E00A9F095 /* Release */,
|
||||||
|
);
|
||||||
|
defaultConfigurationIsVisible = 0;
|
||||||
|
defaultConfigurationName = Release;
|
||||||
|
};
|
||||||
|
/* End XCConfigurationList section */
|
||||||
|
};
|
||||||
|
rootObject = A8467DF116760A4E00A9F095 /* Project object */;
|
||||||
|
}
|
48
osx-vcmibuilder/vcmibuilder/AppDelegate.h
Normal file
48
osx-vcmibuilder/vcmibuilder/AppDelegate.h
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
#import <Cocoa/Cocoa.h>
|
||||||
|
|
||||||
|
@interface AppDelegate : NSObject <NSApplicationDelegate, NSURLDownloadDelegate>
|
||||||
|
{
|
||||||
|
NSString* outputDir;
|
||||||
|
NSString* tempDir;
|
||||||
|
NSString* dataDir;
|
||||||
|
|
||||||
|
NSMutableArray* actions;
|
||||||
|
|
||||||
|
int64_t bytesRecieved;
|
||||||
|
int64_t bytesExpected;
|
||||||
|
|
||||||
|
BOOL installationCompleted;
|
||||||
|
}
|
||||||
|
|
||||||
|
@property (strong) IBOutlet NSWindow *window;
|
||||||
|
@property (weak) IBOutlet NSButton *cd1Button;
|
||||||
|
@property (weak) IBOutlet NSTextField *cd1TextField;
|
||||||
|
@property (weak) IBOutlet NSButton *cd2Button;
|
||||||
|
@property (weak) IBOutlet NSTextField *cd2TextField;
|
||||||
|
@property (weak) IBOutlet NSProgressIndicator *progressIndicator;
|
||||||
|
@property (weak) IBOutlet NSTextField *progressLabel;
|
||||||
|
@property (weak) IBOutlet NSButton *installButton;
|
||||||
|
@property (weak) IBOutlet NSTextField *errorLabel;
|
||||||
|
|
||||||
|
@property (strong) NSURLDownload* download;
|
||||||
|
|
||||||
|
- (IBAction)selectCD1:(id)sender;
|
||||||
|
- (IBAction)selectCD2:(id)sender;
|
||||||
|
- (IBAction)install:(id)sender;
|
||||||
|
|
||||||
|
- (void)selectFile:(NSArray*)fileTypes withTextField:(NSTextField*)textField;
|
||||||
|
- (void)showProgressText:(NSString*)text;
|
||||||
|
- (void)showErrorText:(NSString*)text;
|
||||||
|
- (void)nextAction;
|
||||||
|
- (int)runTask:(NSString*)executable withArgs:(NSArray*)args withWorkingDir:(NSString*)workingDir withPipe:(NSPipe*)pipe;
|
||||||
|
|
||||||
|
- (void)downloadWogArchive;
|
||||||
|
- (void)unzipWogArchive;
|
||||||
|
- (void)extractGameData;
|
||||||
|
- (void)innoexctract;
|
||||||
|
- (NSString*)attachDiskImage:(NSString*)path;
|
||||||
|
- (void)unshield;
|
||||||
|
- (void)detachDiskImage:(NSString*)mountedPath;
|
||||||
|
- (void)extractionCompleted;
|
||||||
|
|
||||||
|
@end
|
310
osx-vcmibuilder/vcmibuilder/AppDelegate.m
Normal file
310
osx-vcmibuilder/vcmibuilder/AppDelegate.m
Normal file
@@ -0,0 +1,310 @@
|
|||||||
|
#import "AppDelegate.h"
|
||||||
|
|
||||||
|
@implementation AppDelegate
|
||||||
|
|
||||||
|
- (void)applicationDidFinishLaunching:(NSNotification*)aNotification
|
||||||
|
{
|
||||||
|
installationCompleted = NO;
|
||||||
|
outputDir = [[[NSBundle mainBundle] bundlePath] stringByAppendingString:@"/../../Data"];
|
||||||
|
tempDir = NSTemporaryDirectory();
|
||||||
|
}
|
||||||
|
|
||||||
|
- (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication*)sender
|
||||||
|
{
|
||||||
|
return YES;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)download:(NSURLDownload*)download didReceiveResponse:(NSURLResponse*)response
|
||||||
|
{
|
||||||
|
self->bytesRecieved = 0;
|
||||||
|
self->bytesExpected = [response expectedContentLength];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)download:(NSURLDownload*)download didReceiveDataOfLength:(NSUInteger)length
|
||||||
|
{
|
||||||
|
self->bytesRecieved += length;
|
||||||
|
[self showProgressText:[NSString stringWithFormat:@"Downloading WoG archive: %3.1f Mb / %3.1f Mb",
|
||||||
|
self->bytesRecieved / 1024.0f / 1024.0f, self->bytesExpected / 1024.0f / 1024.0f]];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)download:(NSURLDownload*)download decideDestinationWithSuggestedFilename:(NSString*)filename
|
||||||
|
{
|
||||||
|
[download setDestination:[tempDir stringByAppendingString:@"/wog.zip"] allowOverwrite:YES];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)downloadDidFinish:(NSURLDownload*)download
|
||||||
|
{
|
||||||
|
[self showProgressText:@"Downloading WoG archive: completed"];
|
||||||
|
[self nextAction];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)download:(NSURLDownload*)download didFailWithError:(NSError*)error
|
||||||
|
{
|
||||||
|
[self showProgressText:@"Downloading WoG archive: failed"];
|
||||||
|
[self showErrorText:[error localizedDescription]];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)nextAction
|
||||||
|
{
|
||||||
|
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
|
||||||
|
SEL sel = NSSelectorFromString(actions[0]);
|
||||||
|
[actions removeObjectAtIndex:0];
|
||||||
|
@try {
|
||||||
|
[self performSelector:sel];
|
||||||
|
}
|
||||||
|
@catch (NSException* e) {
|
||||||
|
[self showErrorText:[e name]];
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
- (int)runTask:(NSString*)executable withArgs:(NSArray*)args withWorkingDir:(NSString*)workingDir withPipe:(NSPipe*)pipe
|
||||||
|
{
|
||||||
|
if (![executable hasPrefix:@"/usr/"]) {
|
||||||
|
executable = [[[NSBundle mainBundle] resourcePath] stringByAppendingString:executable];
|
||||||
|
}
|
||||||
|
|
||||||
|
NSTask* task = [[NSTask alloc] init];
|
||||||
|
[task setLaunchPath:executable];
|
||||||
|
if (workingDir != nil) {
|
||||||
|
[task setCurrentDirectoryPath:workingDir];
|
||||||
|
}
|
||||||
|
if (pipe != nil) {
|
||||||
|
[task setStandardOutput:pipe];
|
||||||
|
}
|
||||||
|
[task setArguments:args];
|
||||||
|
|
||||||
|
[task launch];
|
||||||
|
[task waitUntilExit];
|
||||||
|
|
||||||
|
return [task terminationStatus];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)validateAction
|
||||||
|
{
|
||||||
|
// Before starting anything run validations
|
||||||
|
if (![[NSFileManager defaultManager] fileExistsAtPath:[self.cd1TextField stringValue]]) {
|
||||||
|
return [self showErrorText:@"Please select existing file"];
|
||||||
|
}
|
||||||
|
|
||||||
|
// Show progress controls
|
||||||
|
[self.progressIndicator setHidden:NO];
|
||||||
|
[self.progressIndicator startAnimation:self];
|
||||||
|
[self showProgressText:@"Installing VCMI..."];
|
||||||
|
|
||||||
|
[self nextAction];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)downloadWogArchive
|
||||||
|
{
|
||||||
|
// First of all we need to download WoG archive
|
||||||
|
// Downloading should be done on main thread because of callbacks
|
||||||
|
dispatch_async(dispatch_get_main_queue(), ^{
|
||||||
|
NSURL* url = [NSURL URLWithString:@"http://download.vcmi.eu/WoG/wog.zip"];
|
||||||
|
self.download = [[NSURLDownload alloc] initWithRequest:[NSURLRequest requestWithURL:url] delegate:self];
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)unzipWogArchive
|
||||||
|
{
|
||||||
|
// Then we unzip downloaded WoG archive
|
||||||
|
[self showProgressText:@"Unzipping WoG archive"];
|
||||||
|
if ([self runTask:@"/usr/bin/unzip" withArgs:@[@"-qo", [tempDir stringByAppendingString:@"/wog.zip"], @"-d", outputDir] withWorkingDir:nil withPipe:nil] != 0) {
|
||||||
|
return [self showErrorText:@"Failed to unzip WoG archive"];
|
||||||
|
}
|
||||||
|
|
||||||
|
[self nextAction];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)extractGameData
|
||||||
|
{
|
||||||
|
// Then we extract game data from provided iso files using unshield or from innosetup exe
|
||||||
|
if ([[self.cd1TextField stringValue] hasSuffix:@".exe"]) {
|
||||||
|
[self innoexctract];
|
||||||
|
} else {
|
||||||
|
[self unshield];
|
||||||
|
}
|
||||||
|
|
||||||
|
[self nextAction];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)innoexctract
|
||||||
|
{
|
||||||
|
// Extraction via innoextact is pretty straightforward
|
||||||
|
[self showProgressText:@"Extracting game data using innoextract..."];
|
||||||
|
if ([self runTask:@"/innoextract" withArgs:@[[self.cd1TextField stringValue]] withWorkingDir:tempDir withPipe:nil] != 0) {
|
||||||
|
[self showErrorText:@"Failed to exctract game data using innoextract"];
|
||||||
|
}
|
||||||
|
|
||||||
|
dataDir = [tempDir stringByAppendingString:@"/app"];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (NSString*)attachDiskImage:(NSString*)path
|
||||||
|
{
|
||||||
|
[self showProgressText:[NSString stringWithFormat:@"Mounting image \"%@\"", path]];
|
||||||
|
|
||||||
|
// Run hdiutil to mount specified disk image
|
||||||
|
NSPipe* pipe = [NSPipe pipe];
|
||||||
|
if ([self runTask:@"/usr/bin/hdiutil" withArgs:@[@"attach", path] withWorkingDir:nil withPipe:pipe] != 0) {
|
||||||
|
[NSException raise:[NSString stringWithFormat:@"Failed to mount \"%@\"", path] format:nil];
|
||||||
|
}
|
||||||
|
|
||||||
|
// Capture hdiutil output to get mounted disk image filesystem path
|
||||||
|
NSFileHandle* file = [pipe fileHandleForReading];
|
||||||
|
NSString* output = [[NSString alloc] initWithData:[file readDataToEndOfFile] encoding:NSUTF8StringEncoding];
|
||||||
|
|
||||||
|
NSRegularExpression* regex = [NSRegularExpression regularExpressionWithPattern:@"(/Volumes/.*)$" options:0 error:nil];
|
||||||
|
NSTextCheckingResult* match = [regex firstMatchInString:output options:0 range:NSMakeRange(0, [output length])];
|
||||||
|
|
||||||
|
return [output substringWithRange:[match range]];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)detachDiskImage:(NSString*)mountedPath
|
||||||
|
{
|
||||||
|
if ([self runTask:@"/usr/bin/hdiutil" withArgs:@[@"detach", mountedPath] withWorkingDir:nil withPipe:nil] != 0) {
|
||||||
|
[NSException raise:[NSString stringWithFormat:@"Failed to unmount \"%@\"", mountedPath] format:nil];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)unshield
|
||||||
|
{
|
||||||
|
// In case of iso files we should mount them first
|
||||||
|
// If CD2 is not specified use the same path as for CD1
|
||||||
|
NSString* cd1 = [self attachDiskImage:[self.cd1TextField stringValue]];
|
||||||
|
NSString* cd2 = [[self.cd2TextField stringValue] isEqualToString:@""] ? cd1 : [self attachDiskImage:[self.cd2TextField stringValue]];
|
||||||
|
|
||||||
|
// Extract
|
||||||
|
[self showProgressText:@"Extracting game data using unshield..."];
|
||||||
|
if ([self runTask:@"/unshield" withArgs:@[@"-d", tempDir, @"x", [cd1 stringByAppendingString:@"/_setup/data1.cab"]] withWorkingDir:tempDir withPipe:nil] != 0) {
|
||||||
|
return [self showErrorText:@"Failed to extract game data using unshield"];
|
||||||
|
}
|
||||||
|
|
||||||
|
dataDir = [tempDir stringByAppendingString:@"/Heroes3"];
|
||||||
|
if (![[NSFileManager defaultManager] fileExistsAtPath:dataDir]) {
|
||||||
|
// Some releases have "Program_Files" folder instead of "Heroes3"
|
||||||
|
dataDir = [tempDir stringByAppendingString:@"/Program_Files"];
|
||||||
|
}
|
||||||
|
|
||||||
|
// Unmount CD1. Unmount CD2 if needed
|
||||||
|
[self detachDiskImage:cd1];
|
||||||
|
if (![cd1 isEqualToString:cd2]) {
|
||||||
|
[self detachDiskImage:cd2];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)extractionCompleted
|
||||||
|
{
|
||||||
|
// After game data is extracted we should move it to destination place
|
||||||
|
[self showProgressText:@"Moving items into place"];
|
||||||
|
|
||||||
|
NSFileManager* fileManager = [NSFileManager defaultManager];
|
||||||
|
|
||||||
|
[fileManager moveItemAtPath:[dataDir stringByAppendingString:@"/Data"] toPath:[outputDir stringByAppendingString:@"/Data"] error:nil];
|
||||||
|
[fileManager moveItemAtPath:[dataDir stringByAppendingString:@"/Maps"] toPath:[outputDir stringByAppendingString:@"/Maps"] error:nil];
|
||||||
|
|
||||||
|
if ([fileManager fileExistsAtPath:[dataDir stringByAppendingString:@"/MP3"] isDirectory:nil]) {
|
||||||
|
[fileManager moveItemAtPath:[dataDir stringByAppendingString:@"/MP3"] toPath:[outputDir stringByAppendingString:@"/Mp3"] error:nil];
|
||||||
|
} else {
|
||||||
|
[fileManager moveItemAtPath:[dataDir stringByAppendingString:@"/Mp3"] toPath:[outputDir stringByAppendingString:@"/Mp3"] error:nil];
|
||||||
|
}
|
||||||
|
|
||||||
|
// After everythin is complete we create marker file. VCMI will look for this file to exists on startup and
|
||||||
|
// will run this setup otherwise
|
||||||
|
system([[NSString stringWithFormat:@"touch %@/game_data_prepared", outputDir] UTF8String]);
|
||||||
|
|
||||||
|
[self showProgressText:@"Installation complete"];
|
||||||
|
[self.installButton setTitle:@"Run VCMI"];
|
||||||
|
[self.progressIndicator stopAnimation:self];
|
||||||
|
|
||||||
|
[NSApp requestUserAttention:NSCriticalRequest];
|
||||||
|
|
||||||
|
// Hide all progress related controls
|
||||||
|
[self.progressIndicator setHidden:YES];
|
||||||
|
[self.progressIndicator stopAnimation:self];
|
||||||
|
[self.progressLabel setHidden:YES];
|
||||||
|
|
||||||
|
[self.installButton setEnabled:YES];
|
||||||
|
installationCompleted = YES;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)selectFile:(NSArray*)fileTypes withTextField:(NSTextField*)textField
|
||||||
|
{
|
||||||
|
NSOpenPanel* openPanel = [NSOpenPanel openPanel];
|
||||||
|
[openPanel setCanChooseFiles:YES];
|
||||||
|
[openPanel setAllowedFileTypes:fileTypes];
|
||||||
|
[openPanel setAllowsMultipleSelection:NO];
|
||||||
|
|
||||||
|
if ([openPanel runModal] == NSOKButton) {
|
||||||
|
NSString* path = [[openPanel URL] path];
|
||||||
|
[textField setStringValue:path];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- (IBAction)selectCD1:(id)sender
|
||||||
|
{
|
||||||
|
[self selectFile:@[@"iso", @"exe"] withTextField:self.cd1TextField];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (IBAction)selectCD2:(id)sender
|
||||||
|
{
|
||||||
|
[self selectFile:@[@"iso"] withTextField:self.cd2TextField];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (IBAction)install:(id)sender
|
||||||
|
{
|
||||||
|
if (installationCompleted) {
|
||||||
|
// Run vcmi
|
||||||
|
system([[NSString stringWithFormat:@"open %@/../../..", [[NSBundle mainBundle] bundlePath]] UTF8String]);
|
||||||
|
[NSApp terminate: nil];
|
||||||
|
} else {
|
||||||
|
// Run installation
|
||||||
|
[self.cd1Button setEnabled:NO];
|
||||||
|
[self.cd2Button setEnabled:NO];
|
||||||
|
[self.installButton setEnabled:NO];
|
||||||
|
|
||||||
|
actions = [NSMutableArray arrayWithObjects:
|
||||||
|
@"validateAction",
|
||||||
|
@"downloadWogArchive",
|
||||||
|
@"unzipWogArchive",
|
||||||
|
@"extractGameData",
|
||||||
|
@"extractionCompleted",
|
||||||
|
nil
|
||||||
|
];
|
||||||
|
|
||||||
|
[self nextAction];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)showProgressText:(NSString*)text
|
||||||
|
{
|
||||||
|
// All GUI updates should be done on main thread
|
||||||
|
dispatch_async(dispatch_get_main_queue(), ^{
|
||||||
|
[self.progressLabel setHidden:NO];
|
||||||
|
[self.progressLabel setStringValue:text];
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)showErrorText:(NSString*)text
|
||||||
|
{
|
||||||
|
// All GUI updates should be done on main thread
|
||||||
|
dispatch_async(dispatch_get_main_queue(), ^{
|
||||||
|
// Show error alert
|
||||||
|
NSAlert *alert = [[NSAlert alloc] init];
|
||||||
|
[alert setMessageText:@"Error"];
|
||||||
|
[alert setInformativeText:text];
|
||||||
|
[alert beginSheetModalForWindow:self.window modalDelegate:nil didEndSelector:nil contextInfo:nil];
|
||||||
|
|
||||||
|
// Enable select file buttons again
|
||||||
|
[self.cd1Button setEnabled:YES];
|
||||||
|
[self.cd2Button setEnabled:YES];
|
||||||
|
[self.installButton setEnabled:YES];
|
||||||
|
|
||||||
|
// Hide all progress related controls
|
||||||
|
[self.progressIndicator setHidden:YES];
|
||||||
|
[self.progressIndicator stopAnimation:self];
|
||||||
|
|
||||||
|
[self.progressLabel setHidden:YES];
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
2
osx-vcmibuilder/vcmibuilder/en.lproj/InfoPlist.strings
Normal file
2
osx-vcmibuilder/vcmibuilder/en.lproj/InfoPlist.strings
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
/* Localized versions of Info.plist keys */
|
||||||
|
|
772
osx-vcmibuilder/vcmibuilder/en.lproj/MainMenu.xib
Normal file
772
osx-vcmibuilder/vcmibuilder/en.lproj/MainMenu.xib
Normal file
@@ -0,0 +1,772 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="8.00">
|
||||||
|
<data>
|
||||||
|
<int key="IBDocument.SystemTarget">1070</int>
|
||||||
|
<string key="IBDocument.SystemVersion">11G63</string>
|
||||||
|
<string key="IBDocument.InterfaceBuilderVersion">2844</string>
|
||||||
|
<string key="IBDocument.AppKitVersion">1138.51</string>
|
||||||
|
<string key="IBDocument.HIToolboxVersion">569.00</string>
|
||||||
|
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
|
||||||
|
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string key="NS.object.0">2844</string>
|
||||||
|
</object>
|
||||||
|
<array key="IBDocument.IntegratedClassDependencies">
|
||||||
|
<string>NSButton</string>
|
||||||
|
<string>NSButtonCell</string>
|
||||||
|
<string>NSCustomObject</string>
|
||||||
|
<string>NSMenu</string>
|
||||||
|
<string>NSMenuItem</string>
|
||||||
|
<string>NSProgressIndicator</string>
|
||||||
|
<string>NSTextField</string>
|
||||||
|
<string>NSTextFieldCell</string>
|
||||||
|
<string>NSView</string>
|
||||||
|
<string>NSWindowTemplate</string>
|
||||||
|
</array>
|
||||||
|
<array key="IBDocument.PluginDependencies">
|
||||||
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
</array>
|
||||||
|
<object class="NSMutableDictionary" key="IBDocument.Metadata">
|
||||||
|
<string key="NS.key.0">PluginDependencyRecalculationVersion</string>
|
||||||
|
<integer value="1" key="NS.object.0"/>
|
||||||
|
</object>
|
||||||
|
<array class="NSMutableArray" key="IBDocument.RootObjects" id="1048">
|
||||||
|
<object class="NSCustomObject" id="1021">
|
||||||
|
<string key="NSClassName">NSApplication</string>
|
||||||
|
</object>
|
||||||
|
<object class="NSCustomObject" id="1014">
|
||||||
|
<string key="NSClassName">FirstResponder</string>
|
||||||
|
</object>
|
||||||
|
<object class="NSCustomObject" id="1050">
|
||||||
|
<string key="NSClassName">NSApplication</string>
|
||||||
|
</object>
|
||||||
|
<object class="NSMenu" id="649796088">
|
||||||
|
<string key="NSTitle">AMainMenu</string>
|
||||||
|
<array class="NSMutableArray" key="NSMenuItems">
|
||||||
|
<object class="NSMenuItem" id="694149608">
|
||||||
|
<reference key="NSMenu" ref="649796088"/>
|
||||||
|
<string key="NSTitle">vcmibuilder</string>
|
||||||
|
<string key="NSKeyEquiv"/>
|
||||||
|
<int key="NSKeyEquivModMask">1048576</int>
|
||||||
|
<int key="NSMnemonicLoc">2147483647</int>
|
||||||
|
<object class="NSCustomResource" key="NSOnImage" id="35465992">
|
||||||
|
<string key="NSClassName">NSImage</string>
|
||||||
|
<string key="NSResourceName">NSMenuCheckmark</string>
|
||||||
|
</object>
|
||||||
|
<object class="NSCustomResource" key="NSMixedImage" id="502551668">
|
||||||
|
<string key="NSClassName">NSImage</string>
|
||||||
|
<string key="NSResourceName">NSMenuMixedState</string>
|
||||||
|
</object>
|
||||||
|
<string key="NSAction">submenuAction:</string>
|
||||||
|
<object class="NSMenu" key="NSSubmenu" id="110575045">
|
||||||
|
<string key="NSTitle">vcmibuilder</string>
|
||||||
|
<array class="NSMutableArray" key="NSMenuItems">
|
||||||
|
<object class="NSMenuItem" id="238522557">
|
||||||
|
<reference key="NSMenu" ref="110575045"/>
|
||||||
|
<string key="NSTitle">About vcmibuilder</string>
|
||||||
|
<string key="NSKeyEquiv"/>
|
||||||
|
<int key="NSMnemonicLoc">2147483647</int>
|
||||||
|
<reference key="NSOnImage" ref="35465992"/>
|
||||||
|
<reference key="NSMixedImage" ref="502551668"/>
|
||||||
|
</object>
|
||||||
|
<object class="NSMenuItem" id="1056857174">
|
||||||
|
<reference key="NSMenu" ref="110575045"/>
|
||||||
|
<bool key="NSIsDisabled">YES</bool>
|
||||||
|
<bool key="NSIsSeparator">YES</bool>
|
||||||
|
<string key="NSTitle"/>
|
||||||
|
<string key="NSKeyEquiv"/>
|
||||||
|
<int key="NSKeyEquivModMask">1048576</int>
|
||||||
|
<int key="NSMnemonicLoc">2147483647</int>
|
||||||
|
<reference key="NSOnImage" ref="35465992"/>
|
||||||
|
<reference key="NSMixedImage" ref="502551668"/>
|
||||||
|
</object>
|
||||||
|
<object class="NSMenuItem" id="632727374">
|
||||||
|
<reference key="NSMenu" ref="110575045"/>
|
||||||
|
<string key="NSTitle">Quit vcmibuilder</string>
|
||||||
|
<string key="NSKeyEquiv">q</string>
|
||||||
|
<int key="NSKeyEquivModMask">1048576</int>
|
||||||
|
<int key="NSMnemonicLoc">2147483647</int>
|
||||||
|
<reference key="NSOnImage" ref="35465992"/>
|
||||||
|
<reference key="NSMixedImage" ref="502551668"/>
|
||||||
|
</object>
|
||||||
|
</array>
|
||||||
|
<string key="NSName">_NSAppleMenu</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</array>
|
||||||
|
<string key="NSName">_NSMainMenu</string>
|
||||||
|
</object>
|
||||||
|
<object class="NSWindowTemplate" id="972006081">
|
||||||
|
<int key="NSWindowStyleMask">7</int>
|
||||||
|
<int key="NSWindowBacking">2</int>
|
||||||
|
<string key="NSWindowRect">{{335, 390}, {572, 194}}</string>
|
||||||
|
<int key="NSWTFlags">1954021376</int>
|
||||||
|
<string key="NSWindowTitle">VCMI Install</string>
|
||||||
|
<string key="NSWindowClass">NSWindow</string>
|
||||||
|
<nil key="NSViewClass"/>
|
||||||
|
<nil key="NSUserInterfaceItemIdentifier"/>
|
||||||
|
<string key="NSWindowContentMinSize">{572, 207}</string>
|
||||||
|
<object class="NSView" key="NSWindowView" id="439893737">
|
||||||
|
<reference key="NSNextResponder"/>
|
||||||
|
<int key="NSvFlags">256</int>
|
||||||
|
<array class="NSMutableArray" key="NSSubviews">
|
||||||
|
<object class="NSTextField" id="84390780">
|
||||||
|
<reference key="NSNextResponder" ref="439893737"/>
|
||||||
|
<int key="NSvFlags">12</int>
|
||||||
|
<string key="NSFrame">{{20, 83}, {483, 22}}</string>
|
||||||
|
<reference key="NSSuperview" ref="439893737"/>
|
||||||
|
<reference key="NSWindow"/>
|
||||||
|
<reference key="NSNextKeyView" ref="528248641"/>
|
||||||
|
<string key="NSReuseIdentifierKey">_NS:9</string>
|
||||||
|
<bool key="NSEnabled">YES</bool>
|
||||||
|
<object class="NSTextFieldCell" key="NSCell" id="679319045">
|
||||||
|
<int key="NSCellFlags">-2074083263</int>
|
||||||
|
<int key="NSCellFlags2">272631872</int>
|
||||||
|
<string key="NSContents"/>
|
||||||
|
<object class="NSFont" key="NSSupport" id="745107099">
|
||||||
|
<string key="NSName">LucidaGrande</string>
|
||||||
|
<double key="NSSize">13</double>
|
||||||
|
<int key="NSfFlags">1044</int>
|
||||||
|
</object>
|
||||||
|
<string key="NSPlaceholderString">CD1 ISO disk image or installer executable</string>
|
||||||
|
<string key="NSCellIdentifier">_NS:9</string>
|
||||||
|
<reference key="NSControlView" ref="84390780"/>
|
||||||
|
<bool key="NSDrawsBackground">YES</bool>
|
||||||
|
<object class="NSColor" key="NSBackgroundColor" id="485513480">
|
||||||
|
<int key="NSColorSpace">6</int>
|
||||||
|
<string key="NSCatalogName">System</string>
|
||||||
|
<string key="NSColorName">textBackgroundColor</string>
|
||||||
|
<object class="NSColor" key="NSColor">
|
||||||
|
<int key="NSColorSpace">3</int>
|
||||||
|
<bytes key="NSWhite">MQA</bytes>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="NSColor" key="NSTextColor" id="216028668">
|
||||||
|
<int key="NSColorSpace">6</int>
|
||||||
|
<string key="NSCatalogName">System</string>
|
||||||
|
<string key="NSColorName">textColor</string>
|
||||||
|
<object class="NSColor" key="NSColor" id="167214173">
|
||||||
|
<int key="NSColorSpace">3</int>
|
||||||
|
<bytes key="NSWhite">MAA</bytes>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="NSTextField" id="768593036">
|
||||||
|
<reference key="NSNextResponder" ref="439893737"/>
|
||||||
|
<int key="NSvFlags">12</int>
|
||||||
|
<string key="NSFrame">{{20, 51}, {483, 22}}</string>
|
||||||
|
<reference key="NSSuperview" ref="439893737"/>
|
||||||
|
<reference key="NSWindow"/>
|
||||||
|
<reference key="NSNextKeyView" ref="722999995"/>
|
||||||
|
<string key="NSReuseIdentifierKey">_NS:9</string>
|
||||||
|
<bool key="NSEnabled">YES</bool>
|
||||||
|
<object class="NSTextFieldCell" key="NSCell" id="827292020">
|
||||||
|
<int key="NSCellFlags">-2074083263</int>
|
||||||
|
<int key="NSCellFlags2">272631872</int>
|
||||||
|
<string key="NSContents"/>
|
||||||
|
<reference key="NSSupport" ref="745107099"/>
|
||||||
|
<string key="NSPlaceholderString">CD2 ISO disk image (optional)</string>
|
||||||
|
<string key="NSCellIdentifier">_NS:9</string>
|
||||||
|
<reference key="NSControlView" ref="768593036"/>
|
||||||
|
<bool key="NSDrawsBackground">YES</bool>
|
||||||
|
<reference key="NSBackgroundColor" ref="485513480"/>
|
||||||
|
<reference key="NSTextColor" ref="216028668"/>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="NSTextField" id="977326994">
|
||||||
|
<reference key="NSNextResponder" ref="439893737"/>
|
||||||
|
<int key="NSvFlags">268</int>
|
||||||
|
<string key="NSFrame">{{17, 140}, {538, 34}}</string>
|
||||||
|
<reference key="NSSuperview" ref="439893737"/>
|
||||||
|
<reference key="NSWindow"/>
|
||||||
|
<reference key="NSNextKeyView" ref="84390780"/>
|
||||||
|
<string key="NSReuseIdentifierKey">_NS:1535</string>
|
||||||
|
<bool key="NSEnabled">YES</bool>
|
||||||
|
<object class="NSTextFieldCell" key="NSCell" id="907438656">
|
||||||
|
<int key="NSCellFlags">68157504</int>
|
||||||
|
<int key="NSCellFlags2">272630784</int>
|
||||||
|
<string key="NSContents">In order to complete VCMI installation you need original Heroes III: Shadow of Death
game data. Please select ISO disk image or installer executable and press Install.</string>
|
||||||
|
<reference key="NSSupport" ref="745107099"/>
|
||||||
|
<string key="NSCellIdentifier">_NS:1535</string>
|
||||||
|
<reference key="NSControlView" ref="977326994"/>
|
||||||
|
<object class="NSColor" key="NSBackgroundColor" id="548777339">
|
||||||
|
<int key="NSColorSpace">6</int>
|
||||||
|
<string key="NSCatalogName">System</string>
|
||||||
|
<string key="NSColorName">controlColor</string>
|
||||||
|
<object class="NSColor" key="NSColor">
|
||||||
|
<int key="NSColorSpace">3</int>
|
||||||
|
<bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="NSColor" key="NSTextColor" id="136788794">
|
||||||
|
<int key="NSColorSpace">6</int>
|
||||||
|
<string key="NSCatalogName">System</string>
|
||||||
|
<string key="NSColorName">controlTextColor</string>
|
||||||
|
<reference key="NSColor" ref="167214173"/>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="NSButton" id="528248641">
|
||||||
|
<reference key="NSNextResponder" ref="439893737"/>
|
||||||
|
<int key="NSvFlags">268</int>
|
||||||
|
<string key="NSFrame">{{505, 76}, {53, 32}}</string>
|
||||||
|
<reference key="NSSuperview" ref="439893737"/>
|
||||||
|
<reference key="NSWindow"/>
|
||||||
|
<reference key="NSNextKeyView" ref="768593036"/>
|
||||||
|
<string key="NSReuseIdentifierKey">_NS:9</string>
|
||||||
|
<bool key="NSEnabled">YES</bool>
|
||||||
|
<object class="NSButtonCell" key="NSCell" id="664923606">
|
||||||
|
<int key="NSCellFlags">67108864</int>
|
||||||
|
<int key="NSCellFlags2">134217728</int>
|
||||||
|
<string key="NSContents">...</string>
|
||||||
|
<reference key="NSSupport" ref="745107099"/>
|
||||||
|
<string key="NSCellIdentifier">_NS:9</string>
|
||||||
|
<reference key="NSControlView" ref="528248641"/>
|
||||||
|
<int key="NSButtonFlags">-2038284288</int>
|
||||||
|
<int key="NSButtonFlags2">129</int>
|
||||||
|
<string key="NSAlternateContents"/>
|
||||||
|
<string key="NSKeyEquivalent"/>
|
||||||
|
<int key="NSPeriodicDelay">200</int>
|
||||||
|
<int key="NSPeriodicInterval">25</int>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="NSButton" id="722999995">
|
||||||
|
<reference key="NSNextResponder" ref="439893737"/>
|
||||||
|
<int key="NSvFlags">268</int>
|
||||||
|
<string key="NSFrame">{{505, 44}, {53, 32}}</string>
|
||||||
|
<reference key="NSSuperview" ref="439893737"/>
|
||||||
|
<reference key="NSWindow"/>
|
||||||
|
<reference key="NSNextKeyView" ref="812825571"/>
|
||||||
|
<string key="NSReuseIdentifierKey">_NS:9</string>
|
||||||
|
<bool key="NSEnabled">YES</bool>
|
||||||
|
<object class="NSButtonCell" key="NSCell" id="870085374">
|
||||||
|
<int key="NSCellFlags">67108864</int>
|
||||||
|
<int key="NSCellFlags2">134217728</int>
|
||||||
|
<string key="NSContents">...</string>
|
||||||
|
<reference key="NSSupport" ref="745107099"/>
|
||||||
|
<string key="NSCellIdentifier">_NS:9</string>
|
||||||
|
<reference key="NSControlView" ref="722999995"/>
|
||||||
|
<int key="NSButtonFlags">-2038284288</int>
|
||||||
|
<int key="NSButtonFlags2">129</int>
|
||||||
|
<string key="NSAlternateContents"/>
|
||||||
|
<string key="NSKeyEquivalent"/>
|
||||||
|
<int key="NSPeriodicDelay">200</int>
|
||||||
|
<int key="NSPeriodicInterval">25</int>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="NSButton" id="715543543">
|
||||||
|
<reference key="NSNextResponder" ref="439893737"/>
|
||||||
|
<int key="NSvFlags">268</int>
|
||||||
|
<string key="NSFrame">{{461, 12}, {97, 32}}</string>
|
||||||
|
<reference key="NSSuperview" ref="439893737"/>
|
||||||
|
<reference key="NSWindow"/>
|
||||||
|
<reference key="NSNextKeyView"/>
|
||||||
|
<string key="NSReuseIdentifierKey">_NS:9</string>
|
||||||
|
<bool key="NSEnabled">YES</bool>
|
||||||
|
<object class="NSButtonCell" key="NSCell" id="750074650">
|
||||||
|
<int key="NSCellFlags">67108864</int>
|
||||||
|
<int key="NSCellFlags2">134217728</int>
|
||||||
|
<string key="NSContents">Install</string>
|
||||||
|
<reference key="NSSupport" ref="745107099"/>
|
||||||
|
<string key="NSCellIdentifier">_NS:9</string>
|
||||||
|
<reference key="NSControlView" ref="715543543"/>
|
||||||
|
<int key="NSButtonFlags">-2038284288</int>
|
||||||
|
<int key="NSButtonFlags2">129</int>
|
||||||
|
<string key="NSAlternateContents"/>
|
||||||
|
<string key="NSKeyEquivalent"/>
|
||||||
|
<int key="NSPeriodicDelay">200</int>
|
||||||
|
<int key="NSPeriodicInterval">25</int>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="NSProgressIndicator" id="812825571">
|
||||||
|
<reference key="NSNextResponder" ref="439893737"/>
|
||||||
|
<int key="NSvFlags">-2147483380</int>
|
||||||
|
<string key="NSFrame">{{20, 22}, {16, 16}}</string>
|
||||||
|
<reference key="NSSuperview" ref="439893737"/>
|
||||||
|
<reference key="NSWindow"/>
|
||||||
|
<reference key="NSNextKeyView" ref="231983332"/>
|
||||||
|
<string key="NSReuseIdentifierKey">_NS:945</string>
|
||||||
|
<int key="NSpiFlags">20746</int>
|
||||||
|
<double key="NSMaxValue">100</double>
|
||||||
|
</object>
|
||||||
|
<object class="NSTextField" id="231983332">
|
||||||
|
<reference key="NSNextResponder" ref="439893737"/>
|
||||||
|
<int key="NSvFlags">-2147483380</int>
|
||||||
|
<string key="NSFrame">{{41, 22}, {419, 17}}</string>
|
||||||
|
<reference key="NSSuperview" ref="439893737"/>
|
||||||
|
<reference key="NSWindow"/>
|
||||||
|
<reference key="NSNextKeyView" ref="715543543"/>
|
||||||
|
<string key="NSReuseIdentifierKey">_NS:1535</string>
|
||||||
|
<bool key="NSEnabled">YES</bool>
|
||||||
|
<object class="NSTextFieldCell" key="NSCell" id="101005403">
|
||||||
|
<int key="NSCellFlags">67108928</int>
|
||||||
|
<int key="NSCellFlags2">272631808</int>
|
||||||
|
<string key="NSContents">Label</string>
|
||||||
|
<reference key="NSSupport" ref="745107099"/>
|
||||||
|
<string key="NSCellIdentifier">_NS:1535</string>
|
||||||
|
<reference key="NSControlView" ref="231983332"/>
|
||||||
|
<reference key="NSBackgroundColor" ref="548777339"/>
|
||||||
|
<reference key="NSTextColor" ref="136788794"/>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</array>
|
||||||
|
<string key="NSFrameSize">{572, 194}</string>
|
||||||
|
<reference key="NSSuperview"/>
|
||||||
|
<reference key="NSWindow"/>
|
||||||
|
<reference key="NSNextKeyView" ref="977326994"/>
|
||||||
|
</object>
|
||||||
|
<string key="NSScreenRect">{{0, 0}, {1680, 1028}}</string>
|
||||||
|
<string key="NSMinSize">{572, 229}</string>
|
||||||
|
<string key="NSMaxSize">{10000000000000, 10000000000000}</string>
|
||||||
|
<bool key="NSWindowIsRestorable">YES</bool>
|
||||||
|
</object>
|
||||||
|
<object class="NSCustomObject" id="976324537">
|
||||||
|
<string key="NSClassName">AppDelegate</string>
|
||||||
|
</object>
|
||||||
|
<object class="NSCustomObject" id="755631768">
|
||||||
|
<string key="NSClassName">NSFontManager</string>
|
||||||
|
</object>
|
||||||
|
</array>
|
||||||
|
<object class="IBObjectContainer" key="IBDocument.Objects">
|
||||||
|
<array class="NSMutableArray" key="connectionRecords">
|
||||||
|
<object class="IBConnectionRecord">
|
||||||
|
<object class="IBActionConnection" key="connection">
|
||||||
|
<string key="label">terminate:</string>
|
||||||
|
<reference key="source" ref="1050"/>
|
||||||
|
<reference key="destination" ref="632727374"/>
|
||||||
|
</object>
|
||||||
|
<int key="connectionID">449</int>
|
||||||
|
</object>
|
||||||
|
<object class="IBConnectionRecord">
|
||||||
|
<object class="IBActionConnection" key="connection">
|
||||||
|
<string key="label">orderFrontStandardAboutPanel:</string>
|
||||||
|
<reference key="source" ref="1021"/>
|
||||||
|
<reference key="destination" ref="238522557"/>
|
||||||
|
</object>
|
||||||
|
<int key="connectionID">142</int>
|
||||||
|
</object>
|
||||||
|
<object class="IBConnectionRecord">
|
||||||
|
<object class="IBOutletConnection" key="connection">
|
||||||
|
<string key="label">delegate</string>
|
||||||
|
<reference key="source" ref="1021"/>
|
||||||
|
<reference key="destination" ref="976324537"/>
|
||||||
|
</object>
|
||||||
|
<int key="connectionID">495</int>
|
||||||
|
</object>
|
||||||
|
<object class="IBConnectionRecord">
|
||||||
|
<object class="IBOutletConnection" key="connection">
|
||||||
|
<string key="label">window</string>
|
||||||
|
<reference key="source" ref="976324537"/>
|
||||||
|
<reference key="destination" ref="972006081"/>
|
||||||
|
</object>
|
||||||
|
<int key="connectionID">532</int>
|
||||||
|
</object>
|
||||||
|
<object class="IBConnectionRecord">
|
||||||
|
<object class="IBOutletConnection" key="connection">
|
||||||
|
<string key="label">cd1Button</string>
|
||||||
|
<reference key="source" ref="976324537"/>
|
||||||
|
<reference key="destination" ref="528248641"/>
|
||||||
|
</object>
|
||||||
|
<int key="connectionID">615</int>
|
||||||
|
</object>
|
||||||
|
<object class="IBConnectionRecord">
|
||||||
|
<object class="IBOutletConnection" key="connection">
|
||||||
|
<string key="label">cd2Button</string>
|
||||||
|
<reference key="source" ref="976324537"/>
|
||||||
|
<reference key="destination" ref="722999995"/>
|
||||||
|
</object>
|
||||||
|
<int key="connectionID">616</int>
|
||||||
|
</object>
|
||||||
|
<object class="IBConnectionRecord">
|
||||||
|
<object class="IBOutletConnection" key="connection">
|
||||||
|
<string key="label">cd1TextField</string>
|
||||||
|
<reference key="source" ref="976324537"/>
|
||||||
|
<reference key="destination" ref="84390780"/>
|
||||||
|
</object>
|
||||||
|
<int key="connectionID">617</int>
|
||||||
|
</object>
|
||||||
|
<object class="IBConnectionRecord">
|
||||||
|
<object class="IBOutletConnection" key="connection">
|
||||||
|
<string key="label">cd2TextField</string>
|
||||||
|
<reference key="source" ref="976324537"/>
|
||||||
|
<reference key="destination" ref="768593036"/>
|
||||||
|
</object>
|
||||||
|
<int key="connectionID">618</int>
|
||||||
|
</object>
|
||||||
|
<object class="IBConnectionRecord">
|
||||||
|
<object class="IBActionConnection" key="connection">
|
||||||
|
<string key="label">selectCD1:</string>
|
||||||
|
<reference key="source" ref="976324537"/>
|
||||||
|
<reference key="destination" ref="528248641"/>
|
||||||
|
</object>
|
||||||
|
<int key="connectionID">619</int>
|
||||||
|
</object>
|
||||||
|
<object class="IBConnectionRecord">
|
||||||
|
<object class="IBActionConnection" key="connection">
|
||||||
|
<string key="label">selectCD2:</string>
|
||||||
|
<reference key="source" ref="976324537"/>
|
||||||
|
<reference key="destination" ref="722999995"/>
|
||||||
|
</object>
|
||||||
|
<int key="connectionID">620</int>
|
||||||
|
</object>
|
||||||
|
<object class="IBConnectionRecord">
|
||||||
|
<object class="IBOutletConnection" key="connection">
|
||||||
|
<string key="label">progressLabel</string>
|
||||||
|
<reference key="source" ref="976324537"/>
|
||||||
|
<reference key="destination" ref="231983332"/>
|
||||||
|
</object>
|
||||||
|
<int key="connectionID">622</int>
|
||||||
|
</object>
|
||||||
|
<object class="IBConnectionRecord">
|
||||||
|
<object class="IBOutletConnection" key="connection">
|
||||||
|
<string key="label">progressIndicator</string>
|
||||||
|
<reference key="source" ref="976324537"/>
|
||||||
|
<reference key="destination" ref="812825571"/>
|
||||||
|
</object>
|
||||||
|
<int key="connectionID">623</int>
|
||||||
|
</object>
|
||||||
|
<object class="IBConnectionRecord">
|
||||||
|
<object class="IBOutletConnection" key="connection">
|
||||||
|
<string key="label">installButton</string>
|
||||||
|
<reference key="source" ref="976324537"/>
|
||||||
|
<reference key="destination" ref="715543543"/>
|
||||||
|
</object>
|
||||||
|
<int key="connectionID">624</int>
|
||||||
|
</object>
|
||||||
|
<object class="IBConnectionRecord">
|
||||||
|
<object class="IBActionConnection" key="connection">
|
||||||
|
<string key="label">install:</string>
|
||||||
|
<reference key="source" ref="976324537"/>
|
||||||
|
<reference key="destination" ref="715543543"/>
|
||||||
|
</object>
|
||||||
|
<int key="connectionID">625</int>
|
||||||
|
</object>
|
||||||
|
</array>
|
||||||
|
<object class="IBMutableOrderedSet" key="objectRecords">
|
||||||
|
<array key="orderedObjects">
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">0</int>
|
||||||
|
<array key="object" id="0"/>
|
||||||
|
<reference key="children" ref="1048"/>
|
||||||
|
<nil key="parent"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">-2</int>
|
||||||
|
<reference key="object" ref="1021"/>
|
||||||
|
<reference key="parent" ref="0"/>
|
||||||
|
<string key="objectName">File's Owner</string>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">-1</int>
|
||||||
|
<reference key="object" ref="1014"/>
|
||||||
|
<reference key="parent" ref="0"/>
|
||||||
|
<string key="objectName">First Responder</string>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">-3</int>
|
||||||
|
<reference key="object" ref="1050"/>
|
||||||
|
<reference key="parent" ref="0"/>
|
||||||
|
<string key="objectName">Application</string>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">29</int>
|
||||||
|
<reference key="object" ref="649796088"/>
|
||||||
|
<array class="NSMutableArray" key="children">
|
||||||
|
<reference ref="694149608"/>
|
||||||
|
</array>
|
||||||
|
<reference key="parent" ref="0"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">56</int>
|
||||||
|
<reference key="object" ref="694149608"/>
|
||||||
|
<array class="NSMutableArray" key="children">
|
||||||
|
<reference ref="110575045"/>
|
||||||
|
</array>
|
||||||
|
<reference key="parent" ref="649796088"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">57</int>
|
||||||
|
<reference key="object" ref="110575045"/>
|
||||||
|
<array class="NSMutableArray" key="children">
|
||||||
|
<reference ref="238522557"/>
|
||||||
|
<reference ref="632727374"/>
|
||||||
|
<reference ref="1056857174"/>
|
||||||
|
</array>
|
||||||
|
<reference key="parent" ref="694149608"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">58</int>
|
||||||
|
<reference key="object" ref="238522557"/>
|
||||||
|
<reference key="parent" ref="110575045"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">136</int>
|
||||||
|
<reference key="object" ref="632727374"/>
|
||||||
|
<reference key="parent" ref="110575045"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">149</int>
|
||||||
|
<reference key="object" ref="1056857174"/>
|
||||||
|
<reference key="parent" ref="110575045"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">371</int>
|
||||||
|
<reference key="object" ref="972006081"/>
|
||||||
|
<array class="NSMutableArray" key="children">
|
||||||
|
<reference ref="439893737"/>
|
||||||
|
</array>
|
||||||
|
<reference key="parent" ref="0"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">372</int>
|
||||||
|
<reference key="object" ref="439893737"/>
|
||||||
|
<array class="NSMutableArray" key="children">
|
||||||
|
<reference ref="977326994"/>
|
||||||
|
<reference ref="84390780"/>
|
||||||
|
<reference ref="768593036"/>
|
||||||
|
<reference ref="528248641"/>
|
||||||
|
<reference ref="722999995"/>
|
||||||
|
<reference ref="715543543"/>
|
||||||
|
<reference ref="812825571"/>
|
||||||
|
<reference ref="231983332"/>
|
||||||
|
</array>
|
||||||
|
<reference key="parent" ref="972006081"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">420</int>
|
||||||
|
<reference key="object" ref="755631768"/>
|
||||||
|
<reference key="parent" ref="0"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">494</int>
|
||||||
|
<reference key="object" ref="976324537"/>
|
||||||
|
<reference key="parent" ref="0"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">536</int>
|
||||||
|
<reference key="object" ref="84390780"/>
|
||||||
|
<array class="NSMutableArray" key="children">
|
||||||
|
<reference ref="679319045"/>
|
||||||
|
</array>
|
||||||
|
<reference key="parent" ref="439893737"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">537</int>
|
||||||
|
<reference key="object" ref="679319045"/>
|
||||||
|
<reference key="parent" ref="84390780"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">541</int>
|
||||||
|
<reference key="object" ref="768593036"/>
|
||||||
|
<array class="NSMutableArray" key="children">
|
||||||
|
<reference ref="827292020"/>
|
||||||
|
</array>
|
||||||
|
<reference key="parent" ref="439893737"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">542</int>
|
||||||
|
<reference key="object" ref="827292020"/>
|
||||||
|
<reference key="parent" ref="768593036"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">549</int>
|
||||||
|
<reference key="object" ref="977326994"/>
|
||||||
|
<array class="NSMutableArray" key="children">
|
||||||
|
<reference ref="907438656"/>
|
||||||
|
</array>
|
||||||
|
<reference key="parent" ref="439893737"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">550</int>
|
||||||
|
<reference key="object" ref="907438656"/>
|
||||||
|
<reference key="parent" ref="977326994"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">562</int>
|
||||||
|
<reference key="object" ref="528248641"/>
|
||||||
|
<array class="NSMutableArray" key="children">
|
||||||
|
<reference ref="664923606"/>
|
||||||
|
</array>
|
||||||
|
<reference key="parent" ref="439893737"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">563</int>
|
||||||
|
<reference key="object" ref="664923606"/>
|
||||||
|
<reference key="parent" ref="528248641"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">569</int>
|
||||||
|
<reference key="object" ref="722999995"/>
|
||||||
|
<array class="NSMutableArray" key="children">
|
||||||
|
<reference ref="870085374"/>
|
||||||
|
</array>
|
||||||
|
<reference key="parent" ref="439893737"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">570</int>
|
||||||
|
<reference key="object" ref="870085374"/>
|
||||||
|
<reference key="parent" ref="722999995"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">581</int>
|
||||||
|
<reference key="object" ref="715543543"/>
|
||||||
|
<array class="NSMutableArray" key="children">
|
||||||
|
<reference ref="750074650"/>
|
||||||
|
</array>
|
||||||
|
<reference key="parent" ref="439893737"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">582</int>
|
||||||
|
<reference key="object" ref="750074650"/>
|
||||||
|
<reference key="parent" ref="715543543"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">587</int>
|
||||||
|
<reference key="object" ref="812825571"/>
|
||||||
|
<reference key="parent" ref="439893737"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">593</int>
|
||||||
|
<reference key="object" ref="231983332"/>
|
||||||
|
<array class="NSMutableArray" key="children">
|
||||||
|
<reference ref="101005403"/>
|
||||||
|
</array>
|
||||||
|
<reference key="parent" ref="439893737"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">594</int>
|
||||||
|
<reference key="object" ref="101005403"/>
|
||||||
|
<reference key="parent" ref="231983332"/>
|
||||||
|
</object>
|
||||||
|
</array>
|
||||||
|
</object>
|
||||||
|
<dictionary class="NSMutableDictionary" key="flattenedProperties">
|
||||||
|
<string key="-1.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string key="-2.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string key="-3.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string key="136.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string key="149.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string key="29.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<boolean value="YES" key="371.IBNSWindowAutoPositionCentersHorizontal"/>
|
||||||
|
<boolean value="YES" key="371.IBNSWindowAutoPositionCentersVertical"/>
|
||||||
|
<string key="371.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string key="371.IBWindowTemplateEditedContentRect">{{380, 496}, {480, 360}}</string>
|
||||||
|
<integer value="1" key="371.NSWindowTemplate.visibleAtLaunch"/>
|
||||||
|
<string key="372.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string key="420.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string key="494.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string key="536.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string key="537.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string key="541.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string key="542.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string key="549.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string key="550.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string key="56.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string key="562.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string key="563.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string key="569.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string key="57.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string key="570.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string key="58.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string key="581.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string key="582.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string key="587.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string key="593.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string key="594.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary class="NSMutableDictionary" key="unlocalizedProperties"/>
|
||||||
|
<nil key="activeLocalization"/>
|
||||||
|
<dictionary class="NSMutableDictionary" key="localizations"/>
|
||||||
|
<nil key="sourceID"/>
|
||||||
|
<int key="maxID">730</int>
|
||||||
|
</object>
|
||||||
|
<object class="IBClassDescriber" key="IBDocument.Classes">
|
||||||
|
<array class="NSMutableArray" key="referencedPartialClassDescriptions">
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">AppDelegate</string>
|
||||||
|
<string key="superclassName">NSObject</string>
|
||||||
|
<dictionary class="NSMutableDictionary" key="actions">
|
||||||
|
<string key="install:">id</string>
|
||||||
|
<string key="selectCD1:">id</string>
|
||||||
|
<string key="selectCD2:">id</string>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary class="NSMutableDictionary" key="actionInfosByName">
|
||||||
|
<object class="IBActionInfo" key="install:">
|
||||||
|
<string key="name">install:</string>
|
||||||
|
<string key="candidateClassName">id</string>
|
||||||
|
</object>
|
||||||
|
<object class="IBActionInfo" key="selectCD1:">
|
||||||
|
<string key="name">selectCD1:</string>
|
||||||
|
<string key="candidateClassName">id</string>
|
||||||
|
</object>
|
||||||
|
<object class="IBActionInfo" key="selectCD2:">
|
||||||
|
<string key="name">selectCD2:</string>
|
||||||
|
<string key="candidateClassName">id</string>
|
||||||
|
</object>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary class="NSMutableDictionary" key="outlets">
|
||||||
|
<string key="cd1Button">NSButton</string>
|
||||||
|
<string key="cd1TextField">NSTextField</string>
|
||||||
|
<string key="cd2Button">NSButton</string>
|
||||||
|
<string key="cd2TextField">NSTextField</string>
|
||||||
|
<string key="errorLabel">NSTextField</string>
|
||||||
|
<string key="installButton">NSButton</string>
|
||||||
|
<string key="progressIndicator">NSProgressIndicator</string>
|
||||||
|
<string key="progressLabel">NSTextField</string>
|
||||||
|
<string key="window">NSWindow</string>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
|
||||||
|
<object class="IBToOneOutletInfo" key="cd1Button">
|
||||||
|
<string key="name">cd1Button</string>
|
||||||
|
<string key="candidateClassName">NSButton</string>
|
||||||
|
</object>
|
||||||
|
<object class="IBToOneOutletInfo" key="cd1TextField">
|
||||||
|
<string key="name">cd1TextField</string>
|
||||||
|
<string key="candidateClassName">NSTextField</string>
|
||||||
|
</object>
|
||||||
|
<object class="IBToOneOutletInfo" key="cd2Button">
|
||||||
|
<string key="name">cd2Button</string>
|
||||||
|
<string key="candidateClassName">NSButton</string>
|
||||||
|
</object>
|
||||||
|
<object class="IBToOneOutletInfo" key="cd2TextField">
|
||||||
|
<string key="name">cd2TextField</string>
|
||||||
|
<string key="candidateClassName">NSTextField</string>
|
||||||
|
</object>
|
||||||
|
<object class="IBToOneOutletInfo" key="errorLabel">
|
||||||
|
<string key="name">errorLabel</string>
|
||||||
|
<string key="candidateClassName">NSTextField</string>
|
||||||
|
</object>
|
||||||
|
<object class="IBToOneOutletInfo" key="installButton">
|
||||||
|
<string key="name">installButton</string>
|
||||||
|
<string key="candidateClassName">NSButton</string>
|
||||||
|
</object>
|
||||||
|
<object class="IBToOneOutletInfo" key="progressIndicator">
|
||||||
|
<string key="name">progressIndicator</string>
|
||||||
|
<string key="candidateClassName">NSProgressIndicator</string>
|
||||||
|
</object>
|
||||||
|
<object class="IBToOneOutletInfo" key="progressLabel">
|
||||||
|
<string key="name">progressLabel</string>
|
||||||
|
<string key="candidateClassName">NSTextField</string>
|
||||||
|
</object>
|
||||||
|
<object class="IBToOneOutletInfo" key="window">
|
||||||
|
<string key="name">window</string>
|
||||||
|
<string key="candidateClassName">NSWindow</string>
|
||||||
|
</object>
|
||||||
|
</dictionary>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBProjectSource</string>
|
||||||
|
<string key="minorKey">./Classes/AppDelegate.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</array>
|
||||||
|
</object>
|
||||||
|
<int key="IBDocument.localizationMode">0</int>
|
||||||
|
<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
|
||||||
|
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
|
||||||
|
<int key="IBDocument.defaultPropertyAccessControl">3</int>
|
||||||
|
<dictionary class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes">
|
||||||
|
<string key="NSMenuCheckmark">{11, 11}</string>
|
||||||
|
<string key="NSMenuMixedState">{10, 3}</string>
|
||||||
|
</dictionary>
|
||||||
|
</data>
|
||||||
|
</archive>
|
6
osx-vcmibuilder/vcmibuilder/main.m
Normal file
6
osx-vcmibuilder/vcmibuilder/main.m
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
#import <Cocoa/Cocoa.h>
|
||||||
|
|
||||||
|
int main(int argc, char *argv[])
|
||||||
|
{
|
||||||
|
return NSApplicationMain(argc, (const char **)argv);
|
||||||
|
}
|
34
osx-vcmibuilder/vcmibuilder/vcmibuilder-Info.plist
Normal file
34
osx-vcmibuilder/vcmibuilder/vcmibuilder-Info.plist
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>CFBundleDevelopmentRegion</key>
|
||||||
|
<string>en</string>
|
||||||
|
<key>CFBundleExecutable</key>
|
||||||
|
<string>${EXECUTABLE_NAME}</string>
|
||||||
|
<key>CFBundleIconFile</key>
|
||||||
|
<string>vcmibuilder</string>
|
||||||
|
<key>CFBundleIdentifier</key>
|
||||||
|
<string>com.vcmi.${PRODUCT_NAME:rfc1034identifier}</string>
|
||||||
|
<key>CFBundleInfoDictionaryVersion</key>
|
||||||
|
<string>6.0</string>
|
||||||
|
<key>CFBundleName</key>
|
||||||
|
<string>${PRODUCT_NAME}</string>
|
||||||
|
<key>CFBundlePackageType</key>
|
||||||
|
<string>APPL</string>
|
||||||
|
<key>CFBundleShortVersionString</key>
|
||||||
|
<string>1.0</string>
|
||||||
|
<key>CFBundleSignature</key>
|
||||||
|
<string>????</string>
|
||||||
|
<key>CFBundleVersion</key>
|
||||||
|
<string>1</string>
|
||||||
|
<key>LSMinimumSystemVersion</key>
|
||||||
|
<string>${MACOSX_DEPLOYMENT_TARGET}</string>
|
||||||
|
<key>NSHumanReadableCopyright</key>
|
||||||
|
<string>Copyright © 2012 Alexey Petruchik. All rights reserved.</string>
|
||||||
|
<key>NSMainNibFile</key>
|
||||||
|
<string>MainMenu</string>
|
||||||
|
<key>NSPrincipalClass</key>
|
||||||
|
<string>NSApplication</string>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
7
osx-vcmibuilder/vcmibuilder/vcmibuilder-Prefix.pch
Normal file
7
osx-vcmibuilder/vcmibuilder/vcmibuilder-Prefix.pch
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
//
|
||||||
|
// Prefix header for all source files of the 'vcmibuilder' target in the 'vcmibuilder' project
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifdef __OBJC__
|
||||||
|
#import <Cocoa/Cocoa.h>
|
||||||
|
#endif
|
Reference in New Issue
Block a user