Merge remote branch 'gui/master'
This commit is contained in:
commit
e1cf3c0458
|
@ -0,0 +1,4 @@
|
|||
.DS_Store
|
||||
build
|
||||
*.pbxuser
|
||||
*.mode1v3
|
|
@ -0,0 +1,43 @@
|
|||
<html>
|
||||
<head>
|
||||
<title>Foo</title>
|
||||
<style type="text/css">
|
||||
body {
|
||||
font-family: "Helvetica Neue", Helvetica, sans-serif;
|
||||
}
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
text-align: center;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
Hop is free software: you can redistribute it and/or modify it
|
||||
under the terms of
|
||||
the <a href="http://localhost:5678/gpl3.html">GNU General Public
|
||||
License</a> as published by the Free Software Foundation, either
|
||||
version 3 of the License, or (at your option) any later version.
|
||||
</p>
|
||||
<p>
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
</p>
|
||||
|
||||
<h4>Developers</h4>
|
||||
<p>
|
||||
The project is currently hosted on github at <a
|
||||
href="http://github.com/tonyg/hop/">http://github.com/tonyg/hop/</a>.
|
||||
Contact details for the author are <a
|
||||
href="http://homepages.kcbbs.gen.nz/tonyg/contact.html">here</a>.
|
||||
</p>
|
||||
|
||||
<h4>Build information</h4>
|
||||
<ul>
|
||||
<li>Build stamp @BUILD_STAMP@</li>
|
||||
<li>@GUI_VERSION@</li>
|
||||
<li>@SERVER_VERSION@</li>
|
||||
</ul>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,2 @@
|
|||
/* Localized versions of Info.plist keys */
|
||||
|
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
@ -0,0 +1,44 @@
|
|||
SERVER_PATH=../server
|
||||
SERVER_BINARY=hop_server.native
|
||||
SERVER_WEB=web
|
||||
APP_NAME="Hop Server"
|
||||
|
||||
RELEASE_RESOURCES=build/Release/$(APP_NAME).app/Contents/Resources
|
||||
DEBUG_RESOURCES=build/Debug/$(APP_NAME).app/Contents/Resources
|
||||
|
||||
BUILD_STAMP:=$(shell date +%Y%m%d-%H%M%S)
|
||||
GUI_VERSION:=Hop OSX GUI revision git-$(shell git branch -v --abbrev=8 | grep '^\*' | awk '{print $$3}')
|
||||
SERVER_VERSION:=Server revision git-$(shell cd $(SERVER_PATH); git branch -v --abbrev=8 | grep '^\*' | awk '{print $$3}')
|
||||
|
||||
release: $(SERVER_PATH)/$(SERVER_BINARY)
|
||||
xcodebuild -configuration Release
|
||||
cp $(SERVER_PATH)/$(SERVER_BINARY) $(RELEASE_RESOURCES)/.
|
||||
sh ./fixup_shlibs.sh $(RELEASE_RESOURCES) $(SERVER_BINARY)
|
||||
cp -rp $(SERVER_PATH)/$(SERVER_WEB) $(RELEASE_RESOURCES)/.
|
||||
sed \
|
||||
-e 's:@BUILD_STAMP@:$(BUILD_STAMP):g' \
|
||||
-e 's:@GUI_VERSION@:$(GUI_VERSION):g' \
|
||||
-e 's:@SERVER_VERSION@:$(SERVER_VERSION):g' \
|
||||
$(RELEASE_RESOURCES)/English.lproj/Credits.html \
|
||||
> $(RELEASE_RESOURCES)/English.lproj/Credits.html.tmp
|
||||
mv \
|
||||
$(RELEASE_RESOURCES)/English.lproj/Credits.html.tmp \
|
||||
$(RELEASE_RESOURCES)/English.lproj/Credits.html
|
||||
|
||||
# /usr/libexec/PlistBuddy \
|
||||
# -c "Set CFBundleShortVersionString $(GUI_VERSION)" \
|
||||
# $(RELEASE_RESOURCES)/../Info.plist
|
||||
# /usr/libexec/PlistBuddy \
|
||||
# -c "Set CFBundleVersion $(SERVER_VERSION)" \
|
||||
# $(RELEASE_RESOURCES)/../Info.plist
|
||||
|
||||
debug: $(SERVER_PATH)/$(SERVER_BINARY)
|
||||
xcodebuild -configuration Debug
|
||||
ln -sf $(CURDIR)/$(SERVER_PATH)/$(SERVER_BINARY) $(DEBUG_RESOURCES)/
|
||||
ln -sf $(CURDIR)/$(SERVER_PATH)/$(SERVER_WEB) $(DEBUG_RESOURCES)/
|
||||
|
||||
$(SERVER_PATH)/$(SERVER_BINARY):
|
||||
make -C $(SERVER_PATH)
|
||||
|
||||
clean:
|
||||
rm -rf build
|
|
@ -0,0 +1,20 @@
|
|||
#!/bin/sh
|
||||
|
||||
RELEASE_RESOURCES="$1"
|
||||
SERVER_BINARY="$2"
|
||||
|
||||
cd "$RELEASE_RESOURCES"
|
||||
|
||||
LIBEV_PATH=$(otool -L "$SERVER_BINARY" | grep 'libev.*dylib' | awk '{print $1}')
|
||||
|
||||
if [ ! -f "$LIBEV_PATH" ];
|
||||
then
|
||||
echo "Not rewriting LIBEV_PATH $LIBEV_PATH"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
LIBEV_LOCAL=$(basename "$LIBEV_PATH")
|
||||
cp $LIBEV_PATH $LIBEV_LOCAL
|
||||
install_name_tool -change "$LIBEV_PATH" @loader_path/"$LIBEV_LOCAL" "$SERVER_BINARY"
|
||||
|
||||
otool -L "$SERVER_BINARY"
|
|
@ -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>NSHumanReadableCopyright</key>
|
||||
<string>Copyright © 2012 Tony Garnock-Jones</string>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>English</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${EXECUTABLE_NAME}</string>
|
||||
<key>CFBundleIconFile</key>
|
||||
<string>Hop.icns</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>org.eighty-twenty.${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>Hop OSX GUI v0.0.1</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>prealpha</string>
|
||||
<key>LSMinimumSystemVersion</key>
|
||||
<string>${MACOSX_DEPLOYMENT_TARGET}</string>
|
||||
<key>NSMainNibFile</key>
|
||||
<string>MainMenu</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
<string>NSApplication</string>
|
||||
</dict>
|
||||
</plist>
|
|
@ -0,0 +1,312 @@
|
|||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 45;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
1DDD58160DA1D0A300B32029 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1DDD58140DA1D0A300B32029 /* MainMenu.xib */; };
|
||||
256AC3DA0F4B6AC300CF3369 /* hopOsxAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 256AC3D90F4B6AC300CF3369 /* hopOsxAppDelegate.m */; };
|
||||
8A3AD61B1550596B0083025A /* Hop.icns in Resources */ = {isa = PBXBuildFile; fileRef = 8A3AD61A1550596B0083025A /* Hop.icns */; };
|
||||
8A78BA7015536F2D0063299E /* Credits.html in Resources */ = {isa = PBXBuildFile; fileRef = 8A78BA6E15536F2D0063299E /* Credits.html */; };
|
||||
8AC89E371550397E00BACB4E /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8AC89E361550397E00BACB4E /* WebKit.framework */; };
|
||||
8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; };
|
||||
8D11072D0486CEB800E47090 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; settings = {ATTRIBUTES = (); }; };
|
||||
8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
089C165DFE840E0CC02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = "<group>"; };
|
||||
1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; };
|
||||
13E42FB307B3F0F600E4EEF1 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = "<absolute>"; };
|
||||
1DDD58150DA1D0A300B32029 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = English.lproj/MainMenu.xib; sourceTree = "<group>"; };
|
||||
256AC3D80F4B6AC300CF3369 /* hopOsxAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hopOsxAppDelegate.h; sourceTree = "<group>"; };
|
||||
256AC3D90F4B6AC300CF3369 /* hopOsxAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = hopOsxAppDelegate.m; sourceTree = "<group>"; };
|
||||
256AC3F00F4B6AF500CF3369 /* hopOsx_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hopOsx_Prefix.pch; sourceTree = "<group>"; };
|
||||
29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
|
||||
29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = "<absolute>"; };
|
||||
29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; };
|
||||
8A3AD61A1550596B0083025A /* Hop.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = Hop.icns; sourceTree = "<group>"; };
|
||||
8A78BA6F15536F2D0063299E /* English */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; name = English; path = English.lproj/Credits.html; sourceTree = "<group>"; };
|
||||
8AC89E361550397E00BACB4E /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = System/Library/Frameworks/WebKit.framework; sourceTree = SDKROOT; };
|
||||
8D1107310486CEB800E47090 /* hopOsx-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "hopOsx-Info.plist"; sourceTree = "<group>"; };
|
||||
8D1107320486CEB800E47090 /* Hop Server.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Hop Server.app"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
8D11072E0486CEB800E47090 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */,
|
||||
8AC89E371550397E00BACB4E /* WebKit.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
080E96DDFE201D6D7F000001 /* Classes */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
256AC3D80F4B6AC300CF3369 /* hopOsxAppDelegate.h */,
|
||||
256AC3D90F4B6AC300CF3369 /* hopOsxAppDelegate.m */,
|
||||
);
|
||||
name = Classes;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */,
|
||||
8AC89E361550397E00BACB4E /* WebKit.framework */,
|
||||
);
|
||||
name = "Linked Frameworks";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
1058C7A2FEA54F0111CA2CBB /* Other Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
29B97324FDCFA39411CA2CEA /* AppKit.framework */,
|
||||
13E42FB307B3F0F600E4EEF1 /* CoreData.framework */,
|
||||
29B97325FDCFA39411CA2CEA /* Foundation.framework */,
|
||||
);
|
||||
name = "Other Frameworks";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
19C28FACFE9D520D11CA2CBB /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
8D1107320486CEB800E47090 /* Hop Server.app */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
29B97314FDCFA39411CA2CEA /* hopOsx */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
080E96DDFE201D6D7F000001 /* Classes */,
|
||||
29B97315FDCFA39411CA2CEA /* Other Sources */,
|
||||
29B97317FDCFA39411CA2CEA /* Resources */,
|
||||
29B97323FDCFA39411CA2CEA /* Frameworks */,
|
||||
19C28FACFE9D520D11CA2CBB /* Products */,
|
||||
);
|
||||
name = hopOsx;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
29B97315FDCFA39411CA2CEA /* Other Sources */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
8A78BA6E15536F2D0063299E /* Credits.html */,
|
||||
256AC3F00F4B6AF500CF3369 /* hopOsx_Prefix.pch */,
|
||||
29B97316FDCFA39411CA2CEA /* main.m */,
|
||||
8A3AD61A1550596B0083025A /* Hop.icns */,
|
||||
);
|
||||
name = "Other Sources";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
29B97317FDCFA39411CA2CEA /* Resources */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
8D1107310486CEB800E47090 /* hopOsx-Info.plist */,
|
||||
089C165CFE840E0CC02AAC07 /* InfoPlist.strings */,
|
||||
1DDD58140DA1D0A300B32029 /* MainMenu.xib */,
|
||||
);
|
||||
name = Resources;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
29B97323FDCFA39411CA2CEA /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */,
|
||||
1058C7A2FEA54F0111CA2CBB /* Other Frameworks */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
8D1107260486CEB800E47090 /* Hop Server */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "Hop Server" */;
|
||||
buildPhases = (
|
||||
8D1107290486CEB800E47090 /* Resources */,
|
||||
8D11072C0486CEB800E47090 /* Sources */,
|
||||
8D11072E0486CEB800E47090 /* Frameworks */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = "Hop Server";
|
||||
productInstallPath = "$(HOME)/Applications";
|
||||
productName = "Hop Server";
|
||||
productReference = 8D1107320486CEB800E47090 /* Hop Server.app */;
|
||||
productType = "com.apple.product-type.application";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
29B97313FDCFA39411CA2CEA /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
ORGANIZATIONNAME = "Tony Garnock-Jones";
|
||||
};
|
||||
buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "hopOsx" */;
|
||||
compatibilityVersion = "Xcode 3.1";
|
||||
developmentRegion = English;
|
||||
hasScannedForEncodings = 1;
|
||||
knownRegions = (
|
||||
English,
|
||||
Japanese,
|
||||
French,
|
||||
German,
|
||||
);
|
||||
mainGroup = 29B97314FDCFA39411CA2CEA /* hopOsx */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
8D1107260486CEB800E47090 /* Hop Server */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
8D1107290486CEB800E47090 /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */,
|
||||
1DDD58160DA1D0A300B32029 /* MainMenu.xib in Resources */,
|
||||
8A3AD61B1550596B0083025A /* Hop.icns in Resources */,
|
||||
8A78BA7015536F2D0063299E /* Credits.html in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
8D11072C0486CEB800E47090 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
8D11072D0486CEB800E47090 /* main.m in Sources */,
|
||||
256AC3DA0F4B6AC300CF3369 /* hopOsxAppDelegate.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXVariantGroup section */
|
||||
089C165CFE840E0CC02AAC07 /* InfoPlist.strings */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
089C165DFE840E0CC02AAC07 /* English */,
|
||||
);
|
||||
name = InfoPlist.strings;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
1DDD58140DA1D0A300B32029 /* MainMenu.xib */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
1DDD58150DA1D0A300B32029 /* English */,
|
||||
);
|
||||
name = MainMenu.xib;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
8A78BA6E15536F2D0063299E /* Credits.html */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
8A78BA6F15536F2D0063299E /* English */,
|
||||
);
|
||||
name = Credits.html;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXVariantGroup section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
C01FCF4B08A954540054247B /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_ENABLE_FIX_AND_CONTINUE = YES;
|
||||
GCC_MODEL_TUNING = G5;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = hopOsx_Prefix.pch;
|
||||
INFOPLIST_FILE = "hopOsx-Info.plist";
|
||||
INSTALL_PATH = "$(HOME)/Applications";
|
||||
PRODUCT_NAME = "Hop Server";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
C01FCF4C08A954540054247B /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
GCC_MODEL_TUNING = G5;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = hopOsx_Prefix.pch;
|
||||
INFOPLIST_FILE = "hopOsx-Info.plist";
|
||||
INSTALL_PATH = "$(HOME)/Applications";
|
||||
PRODUCT_NAME = "Hop Server";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
C01FCF4F08A954540054247B /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
PREBINDING = NO;
|
||||
SDKROOT = macosx10.6;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
C01FCF5008A954540054247B /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
PREBINDING = NO;
|
||||
SDKROOT = macosx10.6;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "Hop Server" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
C01FCF4B08A954540054247B /* Debug */,
|
||||
C01FCF4C08A954540054247B /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
C01FCF4E08A954540054247B /* Build configuration list for PBXProject "hopOsx" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
C01FCF4F08A954540054247B /* Debug */,
|
||||
C01FCF5008A954540054247B /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = 29B97313FDCFA39411CA2CEA /* Project object */;
|
||||
}
|
|
@ -0,0 +1,32 @@
|
|||
// Copyright 2012 Tony Garnock-Jones <tonygarnockjones@gmail.com>.
|
||||
//
|
||||
// This file is part of Hop.
|
||||
//
|
||||
// Hop is free software: you can redistribute it and/or modify it
|
||||
// under the terms of the GNU General Public License as published by the
|
||||
// Free Software Foundation, either version 3 of the License, or (at your
|
||||
// option) any later version.
|
||||
//
|
||||
// Hop is distributed in the hope that it will be useful, but
|
||||
// WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
// General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with Hop. If not, see <http://www.gnu.org/licenses/>.
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#import <WebKit/WebKit.h>
|
||||
|
||||
@interface hopOsxAppDelegate : NSObject <NSApplicationDelegate> {
|
||||
NSWindow *window;
|
||||
WebView *webview;
|
||||
|
||||
NSTask *task;
|
||||
}
|
||||
|
||||
@property (assign) IBOutlet NSWindow *window;
|
||||
@property (assign) IBOutlet WebView *webview;
|
||||
|
||||
@end
|
|
@ -0,0 +1,106 @@
|
|||
// Copyright 2012 Tony Garnock-Jones <tonygarnockjones@gmail.com>.
|
||||
//
|
||||
// This file is part of Hop.
|
||||
//
|
||||
// Hop is free software: you can redistribute it and/or modify it
|
||||
// under the terms of the GNU General Public License as published by the
|
||||
// Free Software Foundation, either version 3 of the License, or (at your
|
||||
// option) any later version.
|
||||
//
|
||||
// Hop is distributed in the hope that it will be useful, but
|
||||
// WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
// General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with Hop. If not, see <http://www.gnu.org/licenses/>.
|
||||
//
|
||||
|
||||
#import "hopOsxAppDelegate.h"
|
||||
#include <sys/stat.h>
|
||||
|
||||
#define HOP_STARTUP_DEADLINE_SECONDS 30
|
||||
|
||||
@implementation hopOsxAppDelegate
|
||||
|
||||
@synthesize window;
|
||||
@synthesize webview;
|
||||
|
||||
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
|
||||
task = [NSTask new];
|
||||
|
||||
[[NSNotificationCenter defaultCenter]
|
||||
addObserver: self
|
||||
selector: @selector(mainWindowClosed:)
|
||||
name: NSWindowWillCloseNotification
|
||||
object: window];
|
||||
|
||||
[[NSNotificationCenter defaultCenter]
|
||||
addObserver: self
|
||||
selector: @selector(taskStatusChanged:)
|
||||
name: NSTaskDidTerminateNotification
|
||||
object: nil];
|
||||
|
||||
NSString *serverBinaryPath = [[NSBundle mainBundle] resourcePath];
|
||||
[task setCurrentDirectoryPath: serverBinaryPath];
|
||||
NSString *serverBinary = [serverBinaryPath stringByAppendingPathComponent: @"hop_server.native"];
|
||||
[task setLaunchPath: serverBinary];
|
||||
|
||||
NSString *readyFile = [NSTemporaryDirectory() stringByAppendingPathComponent: @"hop.ready."];
|
||||
readyFile = [readyFile stringByAppendingFormat: @"%d", getpid()];
|
||||
char const *readyFileUtf8 = [readyFile UTF8String];
|
||||
unlink(readyFileUtf8);
|
||||
|
||||
[task setArguments: [NSArray arrayWithObjects: @"--ready-file", readyFile, nil]];
|
||||
|
||||
@try {
|
||||
[task launch];
|
||||
}
|
||||
@catch (NSException *e) {
|
||||
NSLog(@"Could not launch server %@: %@", serverBinary, [e reason]);
|
||||
[NSApp terminate: self];
|
||||
@throw;
|
||||
}
|
||||
|
||||
int foundReadyFile = 0;
|
||||
time_t startTime = time(NULL);
|
||||
while ([task isRunning] && time(NULL) - startTime < HOP_STARTUP_DEADLINE_SECONDS) {
|
||||
struct stat s;
|
||||
if (lstat(readyFileUtf8, &s) != -1) {
|
||||
foundReadyFile = 1;
|
||||
break;
|
||||
}
|
||||
if (errno != ENOENT) {
|
||||
perror("lstat of readyFileUtf8");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
usleep(100000);
|
||||
}
|
||||
unlink(readyFileUtf8);
|
||||
|
||||
if (!foundReadyFile) {
|
||||
NSLog(@"Server did not start up within %d seconds.", HOP_STARTUP_DEADLINE_SECONDS);
|
||||
[NSApp terminate: self];
|
||||
return;
|
||||
}
|
||||
|
||||
[[webview mainFrame] loadRequest:
|
||||
[NSURLRequest requestWithURL:
|
||||
[NSURL URLWithString: @"http://localhost:5678/"]]];
|
||||
}
|
||||
|
||||
- (void) applicationWillTerminate: (NSNotification *) notification {
|
||||
if ([task isRunning]) {
|
||||
[task terminate];
|
||||
}
|
||||
}
|
||||
|
||||
- (void) taskStatusChanged: (NSNotification *) aNotification {
|
||||
[NSApp terminate: self];
|
||||
}
|
||||
|
||||
- (void) mainWindowClosed: (NSNotification *) aNotification {
|
||||
[NSApp terminate: self];
|
||||
}
|
||||
|
||||
@end
|
|
@ -0,0 +1,7 @@
|
|||
//
|
||||
// Prefix header for all source files of the 'hopOsx' target in the 'hopOsx' project
|
||||
//
|
||||
|
||||
#ifdef __OBJC__
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#endif
|
|
@ -0,0 +1,4 @@
|
|||
all: icon.css
|
||||
|
||||
%.css: %.less
|
||||
recess --compile $< > $@
|
|
@ -0,0 +1,29 @@
|
|||
body {
|
||||
background: #004400;
|
||||
}
|
||||
|
||||
.icon {
|
||||
width: 492px;
|
||||
height: 492px;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
font-family: "Helvetica Neue";
|
||||
font-size: 240px;
|
||||
line-height: 446px;
|
||||
color: #ffffff;
|
||||
text-align: center;
|
||||
text-shadow: 0 5px 10px black;
|
||||
background-color: #58a258;
|
||||
background-image: linear-gradient(top, #74c474, #2f6f2f);
|
||||
background-image: -ms-linear-gradient(top, #74c474, #2f6f2f);
|
||||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#74c474), to(#2f6f2f));
|
||||
background-image: -webkit-linear-gradient(top, #74c474, #2f6f2f);
|
||||
background-image: -o-linear-gradient(top, #74c474, #2f6f2f);
|
||||
background-image: -moz-linear-gradient(top, #74c474, #2f6f2f);
|
||||
background-repeat: repeat-x;
|
||||
border: solid #285d28 10px;
|
||||
-webkit-border-radius: 80px;
|
||||
-moz-border-radius: 80px;
|
||||
border-radius: 80px;
|
||||
filter: progid:dximagetransform.microsoft.gradient(startColorstr='#74c474', endColorstr='#2f6f2f', GradientType=0);
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
<html>
|
||||
<head>
|
||||
<link rel="stylesheet" type="text/css" href="t.css">
|
||||
</head>
|
||||
<body>
|
||||
<div class="icon">
|
||||
hop
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,49 @@
|
|||
// -*- css -*-
|
||||
|
||||
@textColor: #fff;
|
||||
|
||||
@baseColor: #46a546;
|
||||
|
||||
@startColor: lighten(@baseColor, 15%);
|
||||
@endColor: darken(@baseColor, 15%);
|
||||
|
||||
@borderWidth: 10px;
|
||||
@borderColor: darken(@baseColor, 20%);
|
||||
|
||||
@transparencyColor: #040;
|
||||
|
||||
body {
|
||||
background: @transparencyColor;
|
||||
}
|
||||
|
||||
.icon {
|
||||
width: 512px - @borderWidth * 2;
|
||||
height: 512px - @borderWidth * 2;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
|
||||
border: solid @borderColor @borderWidth;
|
||||
|
||||
font-family: "Helvetica Neue";
|
||||
font-size: 240px;
|
||||
line-height: 466px - @borderWidth * 2;
|
||||
|
||||
color: @textColor;
|
||||
text-shadow: 0px 5px 10px black;
|
||||
text-align: center;
|
||||
|
||||
background-color: mix(@startColor, @endColor, 60%);
|
||||
background-image: -moz-linear-gradient(top, @startColor, @endColor); // FF 3.6+
|
||||
background-image: -ms-linear-gradient(top, @startColor, @endColor); // IE10
|
||||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(@startColor), to(@endColor)); // Safari 4+, Chrome 2+
|
||||
background-image: -webkit-linear-gradient(top, @startColor, @endColor); // Safari 5.1+, Chrome 10+
|
||||
background-image: -o-linear-gradient(top, @startColor, @endColor); // Opera 11.10
|
||||
background-image: linear-gradient(top, @startColor, @endColor); // The standard
|
||||
background-repeat: repeat-x;
|
||||
|
||||
-webkit-border-radius: 80px;
|
||||
-moz-border-radius: 80px;
|
||||
border-radius: 80px;
|
||||
|
||||
filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",@startColor,@endColor)); // IE9 and down
|
||||
}
|
|
@ -0,0 +1,24 @@
|
|||
// Copyright 2012 Tony Garnock-Jones <tonygarnockjones@gmail.com>.
|
||||
//
|
||||
// This file is part of Hop.
|
||||
//
|
||||
// Hop is free software: you can redistribute it and/or modify it
|
||||
// under the terms of the GNU General Public License as published by the
|
||||
// Free Software Foundation, either version 3 of the License, or (at your
|
||||
// option) any later version.
|
||||
//
|
||||
// Hop is distributed in the hope that it will be useful, but
|
||||
// WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
// General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with Hop. If not, see <http://www.gnu.org/licenses/>.
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
return NSApplicationMain(argc, (const char **) argv);
|
||||
}
|
Loading…
Reference in New Issue