├── .gitignore ├── .gitmodules ├── example-Alert ├── Makefile ├── Project.xcconfig ├── addons.make ├── bin │ └── data │ │ ├── .gitkeep │ │ └── ofxbraitsch │ │ ├── fonts │ │ ├── HelveticaNeueLTStd-Md.otf │ │ ├── Roboto-Regular.ttf │ │ └── Verdana.ttf │ │ ├── ofxdatgui │ │ ├── icon-group-closed.png │ │ ├── icon-group-open.png │ │ ├── icon-radio-off.png │ │ ├── icon-radio-on.png │ │ └── picker-rainbow.png │ │ └── ofxmodal │ │ ├── modal-buttonX-hover.png │ │ └── modal-buttonX.png ├── config.make ├── example-Alert.xcodeproj │ ├── project.pbxproj │ └── xcshareddata │ │ └── xcschemes │ │ ├── example-Alert Debug.xcscheme │ │ └── example-Alert Release.xcscheme ├── openFrameworks-Info.plist └── src │ ├── main.cpp │ ├── ofApp.cpp │ └── ofApp.h ├── example-Confirm ├── Makefile ├── Project.xcconfig ├── addons.make ├── bin │ └── data │ │ ├── .gitkeep │ │ └── ofxbraitsch │ │ ├── fonts │ │ ├── HelveticaNeueLTStd-Md.otf │ │ ├── Roboto-Regular.ttf │ │ └── Verdana.ttf │ │ ├── ofxdatgui │ │ ├── icon-group-closed.png │ │ ├── icon-group-open.png │ │ ├── icon-radio-off.png │ │ ├── icon-radio-on.png │ │ └── picker-rainbow.png │ │ └── ofxmodal │ │ ├── modal-buttonX-hover.png │ │ └── modal-buttonX.png ├── config.make ├── example-Confirm.xcodeproj │ ├── project.pbxproj │ └── xcshareddata │ │ └── xcschemes │ │ ├── example-Confirm Debug.xcscheme │ │ └── example-Confirm Release.xcscheme ├── openFrameworks-Info.plist └── src │ ├── main.cpp │ ├── ofApp.cpp │ └── ofApp.h ├── example-Login ├── Makefile ├── Project.xcconfig ├── addons.make ├── bin │ └── data │ │ ├── .gitkeep │ │ └── ofxbraitsch │ │ ├── fonts │ │ ├── HelveticaNeueLTStd-Md.otf │ │ ├── Roboto-Regular.ttf │ │ └── Verdana.ttf │ │ ├── ofxdatgui │ │ ├── icon-group-closed.png │ │ ├── icon-group-open.png │ │ ├── icon-radio-off.png │ │ ├── icon-radio-on.png │ │ └── picker-rainbow.png │ │ └── ofxmodal │ │ ├── modal-buttonX-hover.png │ │ └── modal-buttonX.png ├── config.make ├── example-Login.xcodeproj │ ├── project.pbxproj │ └── xcshareddata │ │ └── xcschemes │ │ ├── example-Login Debug.xcscheme │ │ └── example-Login Release.xcscheme ├── openFrameworks-Info.plist └── src │ ├── ModalLogin.h │ ├── main.cpp │ ├── ofApp.cpp │ └── ofApp.h ├── readme-imgs ├── alert-window.png ├── blank-window.png ├── confirm-window.png ├── login-window-1.png ├── login-window-2.png ├── login-window-3.png ├── login-window-4.png ├── ofxModalAlert.gif └── ofxModalAutoAlert.gif ├── readme.md └── src ├── ofxModal.h ├── ofxModalConfirm.h ├── ofxModalEvent.h ├── ofxModalTheme.h ├── ofxModalWindow.cpp └── ofxModalWindow.h /.gitignore: -------------------------------------------------------------------------------- 1 | comps 2 | example-Confirm/bin/data/ofxdatgui_assets 3 | 4 | ######################### 5 | # openFrameworks patterns 6 | ######################### 7 | 8 | # build files 9 | openFrameworks.a 10 | openFrameworksDebug.a 11 | openFrameworksUniversal.a 12 | libs/openFrameworksCompiled/lib/*/* 13 | !libs/openFrameworksCompiled/lib/*/.gitkeep 14 | 15 | # apothecary 16 | scripts/apothecary/build 17 | 18 | # rule to avoid non-official addons going into git 19 | # see addons/.gitignore 20 | addons/* 21 | 22 | # rule to avoid non-official apps going into git 23 | # see apps/.gitignore 24 | apps/* 25 | 26 | # also, see examples/.gitignore 27 | 28 | ######################### 29 | # general 30 | ######################### 31 | 32 | [Bb]uild/ 33 | [Oo]bj/ 34 | *.o 35 | examples/**/[Dd]ebug*/ 36 | examples/**/[Rr]elease*/ 37 | *.mode* 38 | *.app/ 39 | *.pyc 40 | .svn/ 41 | *.log 42 | *.cpp.eep 43 | *.cpp.elf 44 | *.cpp.hex 45 | 46 | ######################### 47 | # IDE 48 | ######################### 49 | 50 | # XCode 51 | *.pbxuser 52 | *.perspective 53 | *.perspectivev3 54 | *.mode1v3 55 | *.mode2v3 56 | # XCode 4 57 | xcuserdata 58 | *.xcworkspace 59 | 60 | # Code::Blocks 61 | *.depend 62 | *.layout 63 | 64 | # Visual Studio 65 | *.sdf 66 | *.opensdf 67 | *.suo 68 | *.pdb 69 | *.ilk 70 | *.aps 71 | ipch/ 72 | 73 | # Eclipse 74 | .metadata 75 | local.properties 76 | .externalToolBuilders 77 | 78 | ######################### 79 | # operating system 80 | ######################### 81 | 82 | # Linux 83 | *~ 84 | # KDE 85 | .directory 86 | .AppleDouble 87 | 88 | # OSX 89 | .DS_Store 90 | *.swp 91 | *~.nib 92 | # Thumbnails 93 | ._* 94 | 95 | # Windows 96 | # Windows image file caches 97 | Thumbs.db 98 | # Folder config file 99 | Desktop.ini 100 | 101 | # Android 102 | .csettings 103 | /libs/openFrameworksCompiled/project/android/paths.make 104 | 105 | # Android Studio 106 | *.iml 107 | 108 | ######################### 109 | # miscellaneous 110 | ######################### 111 | 112 | .mailmap -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "modules/ofxParagraph"] 2 | path = modules/ofxParagraph 3 | url = git@github.com:braitsch/ofxParagraph.git 4 | [submodule "modules/ofxDatGui"] 5 | path = modules/ofxDatGui 6 | url = git@github.com:braitsch/ofxDatGui.git 7 | -------------------------------------------------------------------------------- /example-Alert/Makefile: -------------------------------------------------------------------------------- 1 | # Attempt to load a config.make file. 2 | # If none is found, project defaults in config.project.make will be used. 3 | ifneq ($(wildcard config.make),) 4 | include config.make 5 | endif 6 | 7 | # make sure the the OF_ROOT location is defined 8 | ifndef OF_ROOT 9 | OF_ROOT=$(realpath ../../..) 10 | endif 11 | 12 | # call the project makefile! 13 | include $(OF_ROOT)/libs/openFrameworksCompiled/project/makefileCommon/compile.project.mk 14 | -------------------------------------------------------------------------------- /example-Alert/Project.xcconfig: -------------------------------------------------------------------------------- 1 | //THE PATH TO THE ROOT OF OUR OF PATH RELATIVE TO THIS PROJECT. 2 | //THIS NEEDS TO BE DEFINED BEFORE CoreOF.xcconfig IS INCLUDED 3 | OF_PATH = ../../.. 4 | 5 | //THIS HAS ALL THE HEADER AND LIBS FOR OF CORE 6 | #include "../../../libs/openFrameworksCompiled/project/osx/CoreOF.xcconfig" 7 | 8 | //ICONS - NEW IN 0072 9 | ICON_NAME_DEBUG = icon-debug.icns 10 | ICON_NAME_RELEASE = icon.icns 11 | ICON_FILE_PATH = $(OF_PATH)/libs/openFrameworksCompiled/project/osx/ 12 | 13 | //IF YOU WANT AN APP TO HAVE A CUSTOM ICON - PUT THEM IN YOUR DATA FOLDER AND CHANGE ICON_FILE_PATH to: 14 | //ICON_FILE_PATH = bin/data/ 15 | 16 | OTHER_LDFLAGS = $(OF_CORE_LIBS) $(OF_CORE_FRAMEWORKS) 17 | HEADER_SEARCH_PATHS = $(OF_CORE_HEADERS) 18 | -------------------------------------------------------------------------------- /example-Alert/addons.make: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/braitsch/ofxModal/71bfaa283407bbe58b921fd581d8665f21cf5eb8/example-Alert/addons.make -------------------------------------------------------------------------------- /example-Alert/bin/data/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/braitsch/ofxModal/71bfaa283407bbe58b921fd581d8665f21cf5eb8/example-Alert/bin/data/.gitkeep -------------------------------------------------------------------------------- /example-Alert/bin/data/ofxbraitsch/fonts/HelveticaNeueLTStd-Md.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/braitsch/ofxModal/71bfaa283407bbe58b921fd581d8665f21cf5eb8/example-Alert/bin/data/ofxbraitsch/fonts/HelveticaNeueLTStd-Md.otf -------------------------------------------------------------------------------- /example-Alert/bin/data/ofxbraitsch/fonts/Roboto-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/braitsch/ofxModal/71bfaa283407bbe58b921fd581d8665f21cf5eb8/example-Alert/bin/data/ofxbraitsch/fonts/Roboto-Regular.ttf -------------------------------------------------------------------------------- /example-Alert/bin/data/ofxbraitsch/fonts/Verdana.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/braitsch/ofxModal/71bfaa283407bbe58b921fd581d8665f21cf5eb8/example-Alert/bin/data/ofxbraitsch/fonts/Verdana.ttf -------------------------------------------------------------------------------- /example-Alert/bin/data/ofxbraitsch/ofxdatgui/icon-group-closed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/braitsch/ofxModal/71bfaa283407bbe58b921fd581d8665f21cf5eb8/example-Alert/bin/data/ofxbraitsch/ofxdatgui/icon-group-closed.png -------------------------------------------------------------------------------- /example-Alert/bin/data/ofxbraitsch/ofxdatgui/icon-group-open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/braitsch/ofxModal/71bfaa283407bbe58b921fd581d8665f21cf5eb8/example-Alert/bin/data/ofxbraitsch/ofxdatgui/icon-group-open.png -------------------------------------------------------------------------------- /example-Alert/bin/data/ofxbraitsch/ofxdatgui/icon-radio-off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/braitsch/ofxModal/71bfaa283407bbe58b921fd581d8665f21cf5eb8/example-Alert/bin/data/ofxbraitsch/ofxdatgui/icon-radio-off.png -------------------------------------------------------------------------------- /example-Alert/bin/data/ofxbraitsch/ofxdatgui/icon-radio-on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/braitsch/ofxModal/71bfaa283407bbe58b921fd581d8665f21cf5eb8/example-Alert/bin/data/ofxbraitsch/ofxdatgui/icon-radio-on.png -------------------------------------------------------------------------------- /example-Alert/bin/data/ofxbraitsch/ofxdatgui/picker-rainbow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/braitsch/ofxModal/71bfaa283407bbe58b921fd581d8665f21cf5eb8/example-Alert/bin/data/ofxbraitsch/ofxdatgui/picker-rainbow.png -------------------------------------------------------------------------------- /example-Alert/bin/data/ofxbraitsch/ofxmodal/modal-buttonX-hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/braitsch/ofxModal/71bfaa283407bbe58b921fd581d8665f21cf5eb8/example-Alert/bin/data/ofxbraitsch/ofxmodal/modal-buttonX-hover.png -------------------------------------------------------------------------------- /example-Alert/bin/data/ofxbraitsch/ofxmodal/modal-buttonX.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/braitsch/ofxModal/71bfaa283407bbe58b921fd581d8665f21cf5eb8/example-Alert/bin/data/ofxbraitsch/ofxmodal/modal-buttonX.png -------------------------------------------------------------------------------- /example-Alert/config.make: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # CONFIGURE PROJECT MAKEFILE (optional) 3 | # This file is where we make project specific configurations. 4 | ################################################################################ 5 | 6 | ################################################################################ 7 | # OF ROOT 8 | # The location of your root openFrameworks installation 9 | # (default) OF_ROOT = ../../.. 10 | ################################################################################ 11 | # OF_ROOT = ../../.. 12 | 13 | ################################################################################ 14 | # PROJECT ROOT 15 | # The location of the project - a starting place for searching for files 16 | # (default) PROJECT_ROOT = . (this directory) 17 | # 18 | ################################################################################ 19 | # PROJECT_ROOT = . 20 | 21 | ################################################################################ 22 | # PROJECT SPECIFIC CHECKS 23 | # This is a project defined section to create internal makefile flags to 24 | # conditionally enable or disable the addition of various features within 25 | # this makefile. For instance, if you want to make changes based on whether 26 | # GTK is installed, one might test that here and create a variable to check. 27 | ################################################################################ 28 | # None 29 | 30 | ################################################################################ 31 | # PROJECT EXTERNAL SOURCE PATHS 32 | # These are fully qualified paths that are not within the PROJECT_ROOT folder. 33 | # Like source folders in the PROJECT_ROOT, these paths are subject to 34 | # exlclusion via the PROJECT_EXLCUSIONS list. 35 | # 36 | # (default) PROJECT_EXTERNAL_SOURCE_PATHS = (blank) 37 | # 38 | # Note: Leave a leading space when adding list items with the += operator 39 | ################################################################################ 40 | # PROJECT_EXTERNAL_SOURCE_PATHS = 41 | 42 | ################################################################################ 43 | # PROJECT EXCLUSIONS 44 | # These makefiles assume that all folders in your current project directory 45 | # and any listed in the PROJECT_EXTERNAL_SOURCH_PATHS are are valid locations 46 | # to look for source code. The any folders or files that match any of the 47 | # items in the PROJECT_EXCLUSIONS list below will be ignored. 48 | # 49 | # Each item in the PROJECT_EXCLUSIONS list will be treated as a complete 50 | # string unless teh user adds a wildcard (%) operator to match subdirectories. 51 | # GNU make only allows one wildcard for matching. The second wildcard (%) is 52 | # treated literally. 53 | # 54 | # (default) PROJECT_EXCLUSIONS = (blank) 55 | # 56 | # Will automatically exclude the following: 57 | # 58 | # $(PROJECT_ROOT)/bin% 59 | # $(PROJECT_ROOT)/obj% 60 | # $(PROJECT_ROOT)/%.xcodeproj 61 | # 62 | # Note: Leave a leading space when adding list items with the += operator 63 | ################################################################################ 64 | # PROJECT_EXCLUSIONS = 65 | 66 | ################################################################################ 67 | # PROJECT LINKER FLAGS 68 | # These flags will be sent to the linker when compiling the executable. 69 | # 70 | # (default) PROJECT_LDFLAGS = -Wl,-rpath=./libs 71 | # 72 | # Note: Leave a leading space when adding list items with the += operator 73 | ################################################################################ 74 | 75 | # Currently, shared libraries that are needed are copied to the 76 | # $(PROJECT_ROOT)/bin/libs directory. The following LDFLAGS tell the linker to 77 | # add a runtime path to search for those shared libraries, since they aren't 78 | # incorporated directly into the final executable application binary. 79 | # TODO: should this be a default setting? 80 | # PROJECT_LDFLAGS=-Wl,-rpath=./libs 81 | 82 | ################################################################################ 83 | # PROJECT DEFINES 84 | # Create a space-delimited list of DEFINES. The list will be converted into 85 | # CFLAGS with the "-D" flag later in the makefile. 86 | # 87 | # (default) PROJECT_DEFINES = (blank) 88 | # 89 | # Note: Leave a leading space when adding list items with the += operator 90 | ################################################################################ 91 | # PROJECT_DEFINES = 92 | 93 | ################################################################################ 94 | # PROJECT CFLAGS 95 | # This is a list of fully qualified CFLAGS required when compiling for this 96 | # project. These CFLAGS will be used IN ADDITION TO the PLATFORM_CFLAGS 97 | # defined in your platform specific core configuration files. These flags are 98 | # presented to the compiler BEFORE the PROJECT_OPTIMIZATION_CFLAGS below. 99 | # 100 | # (default) PROJECT_CFLAGS = (blank) 101 | # 102 | # Note: Before adding PROJECT_CFLAGS, note that the PLATFORM_CFLAGS defined in 103 | # your platform specific configuration file will be applied by default and 104 | # further flags here may not be needed. 105 | # 106 | # Note: Leave a leading space when adding list items with the += operator 107 | ################################################################################ 108 | # PROJECT_CFLAGS = 109 | 110 | ################################################################################ 111 | # PROJECT OPTIMIZATION CFLAGS 112 | # These are lists of CFLAGS that are target-specific. While any flags could 113 | # be conditionally added, they are usually limited to optimization flags. 114 | # These flags are added BEFORE the PROJECT_CFLAGS. 115 | # 116 | # PROJECT_OPTIMIZATION_CFLAGS_RELEASE flags are only applied to RELEASE targets. 117 | # 118 | # (default) PROJECT_OPTIMIZATION_CFLAGS_RELEASE = (blank) 119 | # 120 | # PROJECT_OPTIMIZATION_CFLAGS_DEBUG flags are only applied to DEBUG targets. 121 | # 122 | # (default) PROJECT_OPTIMIZATION_CFLAGS_DEBUG = (blank) 123 | # 124 | # Note: Before adding PROJECT_OPTIMIZATION_CFLAGS, please note that the 125 | # PLATFORM_OPTIMIZATION_CFLAGS defined in your platform specific configuration 126 | # file will be applied by default and further optimization flags here may not 127 | # be needed. 128 | # 129 | # Note: Leave a leading space when adding list items with the += operator 130 | ################################################################################ 131 | # PROJECT_OPTIMIZATION_CFLAGS_RELEASE = 132 | # PROJECT_OPTIMIZATION_CFLAGS_DEBUG = 133 | 134 | ################################################################################ 135 | # PROJECT COMPILERS 136 | # Custom compilers can be set for CC and CXX 137 | # (default) PROJECT_CXX = (blank) 138 | # (default) PROJECT_CC = (blank) 139 | # Note: Leave a leading space when adding list items with the += operator 140 | ################################################################################ 141 | # PROJECT_CXX = 142 | # PROJECT_CC = 143 | -------------------------------------------------------------------------------- /example-Alert/example-Alert.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 8A97FA391C70202200D50644 /* ofxModalWindow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A97FA371C70202200D50644 /* ofxModalWindow.cpp */; }; 11 | 8AC1B2901C6F9D6200A36246 /* ofxDatGuiComponent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8AC1B2821C6F9D6200A36246 /* ofxDatGuiComponent.cpp */; }; 12 | 8AC1B2911C6F9D6200A36246 /* ofxSmartFont.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8AC1B2891C6F9D6200A36246 /* ofxSmartFont.cpp */; }; 13 | 8AC1B2921C6F9D6200A36246 /* ofxDatGui.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8AC1B28B1C6F9D6200A36246 /* ofxDatGui.cpp */; }; 14 | 8AC1B2961C6F9D7B00A36246 /* ofxParagraph.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8AC1B2941C6F9D7B00A36246 /* ofxParagraph.cpp */; }; 15 | E4328149138ABC9F0047C5CB /* openFrameworksDebug.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E4328148138ABC890047C5CB /* openFrameworksDebug.a */; }; 16 | E4B69E200A3A1BDC003C02F2 /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E4B69E1D0A3A1BDC003C02F2 /* main.cpp */; }; 17 | E4B69E210A3A1BDC003C02F2 /* ofApp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E4B69E1E0A3A1BDC003C02F2 /* ofApp.cpp */; }; 18 | /* End PBXBuildFile section */ 19 | 20 | /* Begin PBXContainerItemProxy section */ 21 | E4328147138ABC890047C5CB /* PBXContainerItemProxy */ = { 22 | isa = PBXContainerItemProxy; 23 | containerPortal = E4328143138ABC890047C5CB /* openFrameworksLib.xcodeproj */; 24 | proxyType = 2; 25 | remoteGlobalIDString = E4B27C1510CBEB8E00536013; 26 | remoteInfo = openFrameworks; 27 | }; 28 | E4EEB9AB138B136A00A80321 /* PBXContainerItemProxy */ = { 29 | isa = PBXContainerItemProxy; 30 | containerPortal = E4328143138ABC890047C5CB /* openFrameworksLib.xcodeproj */; 31 | proxyType = 1; 32 | remoteGlobalIDString = E4B27C1410CBEB8E00536013; 33 | remoteInfo = openFrameworks; 34 | }; 35 | /* End PBXContainerItemProxy section */ 36 | 37 | /* Begin PBXCopyFilesBuildPhase section */ 38 | E4C2427710CC5ABF004149E2 /* CopyFiles */ = { 39 | isa = PBXCopyFilesBuildPhase; 40 | buildActionMask = 2147483647; 41 | dstPath = ""; 42 | dstSubfolderSpec = 10; 43 | files = ( 44 | ); 45 | runOnlyForDeploymentPostprocessing = 0; 46 | }; 47 | /* End PBXCopyFilesBuildPhase section */ 48 | 49 | /* Begin PBXFileReference section */ 50 | 8A97FA331C70202200D50644 /* ofxModal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxModal.h; sourceTree = ""; }; 51 | 8A97FA341C70202200D50644 /* ofxModalConfirm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxModalConfirm.h; sourceTree = ""; }; 52 | 8A97FA351C70202200D50644 /* ofxModalEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxModalEvent.h; sourceTree = ""; }; 53 | 8A97FA361C70202200D50644 /* ofxModalTheme.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxModalTheme.h; sourceTree = ""; }; 54 | 8A97FA371C70202200D50644 /* ofxModalWindow.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ofxModalWindow.cpp; sourceTree = ""; }; 55 | 8A97FA381C70202200D50644 /* ofxModalWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxModalWindow.h; sourceTree = ""; }; 56 | 8AC1B2741C6F9D6200A36246 /* ofxDatGui2dPad.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxDatGui2dPad.h; sourceTree = ""; }; 57 | 8AC1B2751C6F9D6200A36246 /* ofxDatGuiButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxDatGuiButton.h; sourceTree = ""; }; 58 | 8AC1B2761C6F9D6200A36246 /* ofxDatGuiColorPicker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxDatGuiColorPicker.h; sourceTree = ""; }; 59 | 8AC1B2771C6F9D6200A36246 /* ofxDatGuiControls.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxDatGuiControls.h; sourceTree = ""; }; 60 | 8AC1B2781C6F9D6200A36246 /* ofxDatGuiFRM.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxDatGuiFRM.h; sourceTree = ""; }; 61 | 8AC1B2791C6F9D6200A36246 /* ofxDatGuiGroups.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxDatGuiGroups.h; sourceTree = ""; }; 62 | 8AC1B27A1C6F9D6200A36246 /* ofxDatGuiLabel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxDatGuiLabel.h; sourceTree = ""; }; 63 | 8AC1B27B1C6F9D6200A36246 /* ofxDatGuiMatrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxDatGuiMatrix.h; sourceTree = ""; }; 64 | 8AC1B27C1C6F9D6200A36246 /* ofxDatGuiScrollView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxDatGuiScrollView.h; sourceTree = ""; }; 65 | 8AC1B27D1C6F9D6200A36246 /* ofxDatGuiSlider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxDatGuiSlider.h; sourceTree = ""; }; 66 | 8AC1B27E1C6F9D6200A36246 /* ofxDatGuiTextInput.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxDatGuiTextInput.h; sourceTree = ""; }; 67 | 8AC1B27F1C6F9D6200A36246 /* ofxDatGuiTextInputField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxDatGuiTextInputField.h; sourceTree = ""; }; 68 | 8AC1B2801C6F9D6200A36246 /* ofxDatGuiTimeGraph.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxDatGuiTimeGraph.h; sourceTree = ""; }; 69 | 8AC1B2821C6F9D6200A36246 /* ofxDatGuiComponent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ofxDatGuiComponent.cpp; sourceTree = ""; }; 70 | 8AC1B2831C6F9D6200A36246 /* ofxDatGuiComponent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxDatGuiComponent.h; sourceTree = ""; }; 71 | 8AC1B2841C6F9D6200A36246 /* ofxDatGuiConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxDatGuiConstants.h; sourceTree = ""; }; 72 | 8AC1B2851C6F9D6200A36246 /* ofxDatGuiEvents.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxDatGuiEvents.h; sourceTree = ""; }; 73 | 8AC1B2861C6F9D6200A36246 /* ofxDatGuiIntObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxDatGuiIntObject.h; sourceTree = ""; }; 74 | 8AC1B2891C6F9D6200A36246 /* ofxSmartFont.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ofxSmartFont.cpp; sourceTree = ""; }; 75 | 8AC1B28A1C6F9D6200A36246 /* ofxSmartFont.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxSmartFont.h; sourceTree = ""; }; 76 | 8AC1B28B1C6F9D6200A36246 /* ofxDatGui.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ofxDatGui.cpp; sourceTree = ""; }; 77 | 8AC1B28C1C6F9D6200A36246 /* ofxDatGui.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxDatGui.h; sourceTree = ""; }; 78 | 8AC1B28E1C6F9D6200A36246 /* ofxDatGuiTheme.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxDatGuiTheme.h; sourceTree = ""; }; 79 | 8AC1B28F1C6F9D6200A36246 /* ofxDatGuiThemes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxDatGuiThemes.h; sourceTree = ""; }; 80 | 8AC1B2941C6F9D7B00A36246 /* ofxParagraph.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ofxParagraph.cpp; sourceTree = ""; }; 81 | 8AC1B2951C6F9D7B00A36246 /* ofxParagraph.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxParagraph.h; sourceTree = ""; }; 82 | E4328143138ABC890047C5CB /* openFrameworksLib.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = openFrameworksLib.xcodeproj; path = ../../../libs/openFrameworksCompiled/project/osx/openFrameworksLib.xcodeproj; sourceTree = SOURCE_ROOT; }; 83 | E4B69B5B0A3A1756003C02F2 /* example-AlertDebug.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "example-AlertDebug.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 84 | E4B69E1D0A3A1BDC003C02F2 /* main.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = main.cpp; path = src/main.cpp; sourceTree = SOURCE_ROOT; }; 85 | E4B69E1E0A3A1BDC003C02F2 /* ofApp.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 30; name = ofApp.cpp; path = src/ofApp.cpp; sourceTree = SOURCE_ROOT; }; 86 | E4B69E1F0A3A1BDC003C02F2 /* ofApp.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ofApp.h; path = src/ofApp.h; sourceTree = SOURCE_ROOT; }; 87 | E4B6FCAD0C3E899E008CF71C /* openFrameworks-Info.plist */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.xml; path = "openFrameworks-Info.plist"; sourceTree = ""; }; 88 | E4EB691F138AFCF100A09F29 /* CoreOF.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = CoreOF.xcconfig; path = ../../../libs/openFrameworksCompiled/project/osx/CoreOF.xcconfig; sourceTree = SOURCE_ROOT; }; 89 | E4EB6923138AFD0F00A09F29 /* Project.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Project.xcconfig; sourceTree = ""; }; 90 | /* End PBXFileReference section */ 91 | 92 | /* Begin PBXFrameworksBuildPhase section */ 93 | E4B69B590A3A1756003C02F2 /* Frameworks */ = { 94 | isa = PBXFrameworksBuildPhase; 95 | buildActionMask = 2147483647; 96 | files = ( 97 | E4328149138ABC9F0047C5CB /* openFrameworksDebug.a in Frameworks */, 98 | ); 99 | runOnlyForDeploymentPostprocessing = 0; 100 | }; 101 | /* End PBXFrameworksBuildPhase section */ 102 | 103 | /* Begin PBXGroup section */ 104 | 8A97FA321C70202200D50644 /* ofxModal */ = { 105 | isa = PBXGroup; 106 | children = ( 107 | 8A97FA331C70202200D50644 /* ofxModal.h */, 108 | 8A97FA341C70202200D50644 /* ofxModalConfirm.h */, 109 | 8A97FA351C70202200D50644 /* ofxModalEvent.h */, 110 | 8A97FA361C70202200D50644 /* ofxModalTheme.h */, 111 | 8A97FA371C70202200D50644 /* ofxModalWindow.cpp */, 112 | 8A97FA381C70202200D50644 /* ofxModalWindow.h */, 113 | ); 114 | name = ofxModal; 115 | path = ../src; 116 | sourceTree = ""; 117 | }; 118 | 8AC1B2721C6F9D6200A36246 /* ofxDatGui */ = { 119 | isa = PBXGroup; 120 | children = ( 121 | 8AC1B2731C6F9D6200A36246 /* components */, 122 | 8AC1B2811C6F9D6200A36246 /* core */, 123 | 8AC1B2871C6F9D6200A36246 /* libs */, 124 | 8AC1B28B1C6F9D6200A36246 /* ofxDatGui.cpp */, 125 | 8AC1B28C1C6F9D6200A36246 /* ofxDatGui.h */, 126 | 8AC1B28D1C6F9D6200A36246 /* themes */, 127 | ); 128 | name = ofxDatGui; 129 | path = ../../ofxDatGui/src; 130 | sourceTree = ""; 131 | }; 132 | 8AC1B2731C6F9D6200A36246 /* components */ = { 133 | isa = PBXGroup; 134 | children = ( 135 | 8AC1B2741C6F9D6200A36246 /* ofxDatGui2dPad.h */, 136 | 8AC1B2751C6F9D6200A36246 /* ofxDatGuiButton.h */, 137 | 8AC1B2761C6F9D6200A36246 /* ofxDatGuiColorPicker.h */, 138 | 8AC1B2771C6F9D6200A36246 /* ofxDatGuiControls.h */, 139 | 8AC1B2781C6F9D6200A36246 /* ofxDatGuiFRM.h */, 140 | 8AC1B2791C6F9D6200A36246 /* ofxDatGuiGroups.h */, 141 | 8AC1B27A1C6F9D6200A36246 /* ofxDatGuiLabel.h */, 142 | 8AC1B27B1C6F9D6200A36246 /* ofxDatGuiMatrix.h */, 143 | 8AC1B27C1C6F9D6200A36246 /* ofxDatGuiScrollView.h */, 144 | 8AC1B27D1C6F9D6200A36246 /* ofxDatGuiSlider.h */, 145 | 8AC1B27E1C6F9D6200A36246 /* ofxDatGuiTextInput.h */, 146 | 8AC1B27F1C6F9D6200A36246 /* ofxDatGuiTextInputField.h */, 147 | 8AC1B2801C6F9D6200A36246 /* ofxDatGuiTimeGraph.h */, 148 | ); 149 | path = components; 150 | sourceTree = ""; 151 | }; 152 | 8AC1B2811C6F9D6200A36246 /* core */ = { 153 | isa = PBXGroup; 154 | children = ( 155 | 8AC1B2821C6F9D6200A36246 /* ofxDatGuiComponent.cpp */, 156 | 8AC1B2831C6F9D6200A36246 /* ofxDatGuiComponent.h */, 157 | 8AC1B2841C6F9D6200A36246 /* ofxDatGuiConstants.h */, 158 | 8AC1B2851C6F9D6200A36246 /* ofxDatGuiEvents.h */, 159 | 8AC1B2861C6F9D6200A36246 /* ofxDatGuiIntObject.h */, 160 | ); 161 | path = core; 162 | sourceTree = ""; 163 | }; 164 | 8AC1B2871C6F9D6200A36246 /* libs */ = { 165 | isa = PBXGroup; 166 | children = ( 167 | 8AC1B2881C6F9D6200A36246 /* ofxSmartFont */, 168 | ); 169 | path = libs; 170 | sourceTree = ""; 171 | }; 172 | 8AC1B2881C6F9D6200A36246 /* ofxSmartFont */ = { 173 | isa = PBXGroup; 174 | children = ( 175 | 8AC1B2891C6F9D6200A36246 /* ofxSmartFont.cpp */, 176 | 8AC1B28A1C6F9D6200A36246 /* ofxSmartFont.h */, 177 | ); 178 | path = ofxSmartFont; 179 | sourceTree = ""; 180 | }; 181 | 8AC1B28D1C6F9D6200A36246 /* themes */ = { 182 | isa = PBXGroup; 183 | children = ( 184 | 8AC1B28E1C6F9D6200A36246 /* ofxDatGuiTheme.h */, 185 | 8AC1B28F1C6F9D6200A36246 /* ofxDatGuiThemes.h */, 186 | ); 187 | path = themes; 188 | sourceTree = ""; 189 | }; 190 | 8AC1B2931C6F9D7B00A36246 /* ofxParagraph */ = { 191 | isa = PBXGroup; 192 | children = ( 193 | 8AC1B2941C6F9D7B00A36246 /* ofxParagraph.cpp */, 194 | 8AC1B2951C6F9D7B00A36246 /* ofxParagraph.h */, 195 | ); 196 | name = ofxParagraph; 197 | path = ../../ofxParagraph/src; 198 | sourceTree = ""; 199 | }; 200 | BB4B014C10F69532006C3DED /* addons */ = { 201 | isa = PBXGroup; 202 | children = ( 203 | 8A97FA321C70202200D50644 /* ofxModal */, 204 | 8AC1B2721C6F9D6200A36246 /* ofxDatGui */, 205 | 8AC1B2931C6F9D7B00A36246 /* ofxParagraph */, 206 | ); 207 | name = addons; 208 | sourceTree = ""; 209 | }; 210 | E4328144138ABC890047C5CB /* Products */ = { 211 | isa = PBXGroup; 212 | children = ( 213 | E4328148138ABC890047C5CB /* openFrameworksDebug.a */, 214 | ); 215 | name = Products; 216 | sourceTree = ""; 217 | }; 218 | E4B69B4A0A3A1720003C02F2 = { 219 | isa = PBXGroup; 220 | children = ( 221 | E4B6FCAD0C3E899E008CF71C /* openFrameworks-Info.plist */, 222 | E4EB6923138AFD0F00A09F29 /* Project.xcconfig */, 223 | E4B69E1C0A3A1BDC003C02F2 /* src */, 224 | E4EEC9E9138DF44700A80321 /* openFrameworks */, 225 | BB4B014C10F69532006C3DED /* addons */, 226 | E4B69B5B0A3A1756003C02F2 /* example-AlertDebug.app */, 227 | ); 228 | sourceTree = ""; 229 | }; 230 | E4B69E1C0A3A1BDC003C02F2 /* src */ = { 231 | isa = PBXGroup; 232 | children = ( 233 | E4B69E1D0A3A1BDC003C02F2 /* main.cpp */, 234 | E4B69E1E0A3A1BDC003C02F2 /* ofApp.cpp */, 235 | E4B69E1F0A3A1BDC003C02F2 /* ofApp.h */, 236 | ); 237 | path = src; 238 | sourceTree = SOURCE_ROOT; 239 | }; 240 | E4EEC9E9138DF44700A80321 /* openFrameworks */ = { 241 | isa = PBXGroup; 242 | children = ( 243 | E4EB691F138AFCF100A09F29 /* CoreOF.xcconfig */, 244 | E4328143138ABC890047C5CB /* openFrameworksLib.xcodeproj */, 245 | ); 246 | name = openFrameworks; 247 | sourceTree = ""; 248 | }; 249 | /* End PBXGroup section */ 250 | 251 | /* Begin PBXNativeTarget section */ 252 | E4B69B5A0A3A1756003C02F2 /* example-Alert */ = { 253 | isa = PBXNativeTarget; 254 | buildConfigurationList = E4B69B5F0A3A1757003C02F2 /* Build configuration list for PBXNativeTarget "example-Alert" */; 255 | buildPhases = ( 256 | E4B69B580A3A1756003C02F2 /* Sources */, 257 | E4B69B590A3A1756003C02F2 /* Frameworks */, 258 | E4B6FFFD0C3F9AB9008CF71C /* ShellScript */, 259 | E4C2427710CC5ABF004149E2 /* CopyFiles */, 260 | ); 261 | buildRules = ( 262 | ); 263 | dependencies = ( 264 | E4EEB9AC138B136A00A80321 /* PBXTargetDependency */, 265 | ); 266 | name = "example-Alert"; 267 | productName = myOFApp; 268 | productReference = E4B69B5B0A3A1756003C02F2 /* example-AlertDebug.app */; 269 | productType = "com.apple.product-type.application"; 270 | }; 271 | /* End PBXNativeTarget section */ 272 | 273 | /* Begin PBXProject section */ 274 | E4B69B4C0A3A1720003C02F2 /* Project object */ = { 275 | isa = PBXProject; 276 | attributes = { 277 | LastUpgradeCheck = 0600; 278 | }; 279 | buildConfigurationList = E4B69B4D0A3A1720003C02F2 /* Build configuration list for PBXProject "example-Alert" */; 280 | compatibilityVersion = "Xcode 3.2"; 281 | developmentRegion = English; 282 | hasScannedForEncodings = 0; 283 | knownRegions = ( 284 | English, 285 | Japanese, 286 | French, 287 | German, 288 | ); 289 | mainGroup = E4B69B4A0A3A1720003C02F2; 290 | productRefGroup = E4B69B4A0A3A1720003C02F2; 291 | projectDirPath = ""; 292 | projectReferences = ( 293 | { 294 | ProductGroup = E4328144138ABC890047C5CB /* Products */; 295 | ProjectRef = E4328143138ABC890047C5CB /* openFrameworksLib.xcodeproj */; 296 | }, 297 | ); 298 | projectRoot = ""; 299 | targets = ( 300 | E4B69B5A0A3A1756003C02F2 /* example-Alert */, 301 | ); 302 | }; 303 | /* End PBXProject section */ 304 | 305 | /* Begin PBXReferenceProxy section */ 306 | E4328148138ABC890047C5CB /* openFrameworksDebug.a */ = { 307 | isa = PBXReferenceProxy; 308 | fileType = archive.ar; 309 | path = openFrameworksDebug.a; 310 | remoteRef = E4328147138ABC890047C5CB /* PBXContainerItemProxy */; 311 | sourceTree = BUILT_PRODUCTS_DIR; 312 | }; 313 | /* End PBXReferenceProxy section */ 314 | 315 | /* Begin PBXShellScriptBuildPhase section */ 316 | E4B6FFFD0C3F9AB9008CF71C /* ShellScript */ = { 317 | isa = PBXShellScriptBuildPhase; 318 | buildActionMask = 2147483647; 319 | files = ( 320 | ); 321 | inputPaths = ( 322 | ); 323 | outputPaths = ( 324 | ); 325 | runOnlyForDeploymentPostprocessing = 0; 326 | shellPath = /bin/sh; 327 | shellScript = "rsync -aved ../../../libs/fmodex/lib/osx/libfmodex.dylib \"$TARGET_BUILD_DIR/$PRODUCT_NAME.app/Contents/MacOS/\"; install_name_tool -change ./libfmodex.dylib @executable_path/libfmodex.dylib \"$TARGET_BUILD_DIR/$PRODUCT_NAME.app/Contents/MacOS/$PRODUCT_NAME\";\nmkdir -p \"$TARGET_BUILD_DIR/$PRODUCT_NAME.app/Contents/Resources/\"\nrsync -aved \"$ICON_FILE\" \"$TARGET_BUILD_DIR/$PRODUCT_NAME.app/Contents/Resources/\"\nrsync -aved ../../../libs/glut/lib/osx/GLUT.framework \"$TARGET_BUILD_DIR/$PRODUCT_NAME.app/Contents/Frameworks/\"\n"; 328 | }; 329 | /* End PBXShellScriptBuildPhase section */ 330 | 331 | /* Begin PBXSourcesBuildPhase section */ 332 | E4B69B580A3A1756003C02F2 /* Sources */ = { 333 | isa = PBXSourcesBuildPhase; 334 | buildActionMask = 2147483647; 335 | files = ( 336 | 8AC1B2961C6F9D7B00A36246 /* ofxParagraph.cpp in Sources */, 337 | 8AC1B2901C6F9D6200A36246 /* ofxDatGuiComponent.cpp in Sources */, 338 | E4B69E200A3A1BDC003C02F2 /* main.cpp in Sources */, 339 | 8A97FA391C70202200D50644 /* ofxModalWindow.cpp in Sources */, 340 | 8AC1B2911C6F9D6200A36246 /* ofxSmartFont.cpp in Sources */, 341 | E4B69E210A3A1BDC003C02F2 /* ofApp.cpp in Sources */, 342 | 8AC1B2921C6F9D6200A36246 /* ofxDatGui.cpp in Sources */, 343 | ); 344 | runOnlyForDeploymentPostprocessing = 0; 345 | }; 346 | /* End PBXSourcesBuildPhase section */ 347 | 348 | /* Begin PBXTargetDependency section */ 349 | E4EEB9AC138B136A00A80321 /* PBXTargetDependency */ = { 350 | isa = PBXTargetDependency; 351 | name = openFrameworks; 352 | targetProxy = E4EEB9AB138B136A00A80321 /* PBXContainerItemProxy */; 353 | }; 354 | /* End PBXTargetDependency section */ 355 | 356 | /* Begin XCBuildConfiguration section */ 357 | E4B69B4E0A3A1720003C02F2 /* Debug */ = { 358 | isa = XCBuildConfiguration; 359 | baseConfigurationReference = E4EB6923138AFD0F00A09F29 /* Project.xcconfig */; 360 | buildSettings = { 361 | CONFIGURATION_BUILD_DIR = "$(SRCROOT)/bin/"; 362 | COPY_PHASE_STRIP = NO; 363 | DEAD_CODE_STRIPPING = YES; 364 | GCC_AUTO_VECTORIZATION = YES; 365 | GCC_ENABLE_SSE3_EXTENSIONS = YES; 366 | GCC_ENABLE_SUPPLEMENTAL_SSE3_INSTRUCTIONS = YES; 367 | GCC_INLINES_ARE_PRIVATE_EXTERN = NO; 368 | GCC_OPTIMIZATION_LEVEL = 0; 369 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 370 | GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = YES; 371 | GCC_WARN_ABOUT_INVALID_OFFSETOF_MACRO = NO; 372 | GCC_WARN_ALLOW_INCOMPLETE_PROTOCOL = NO; 373 | GCC_WARN_UNINITIALIZED_AUTOS = NO; 374 | GCC_WARN_UNUSED_VALUE = NO; 375 | GCC_WARN_UNUSED_VARIABLE = NO; 376 | MACOSX_DEPLOYMENT_TARGET = 10.8; 377 | ONLY_ACTIVE_ARCH = YES; 378 | OTHER_CPLUSPLUSFLAGS = ( 379 | "-D__MACOSX_CORE__", 380 | "-mtune=native", 381 | ); 382 | SDKROOT = macosx; 383 | }; 384 | name = Debug; 385 | }; 386 | E4B69B4F0A3A1720003C02F2 /* Release */ = { 387 | isa = XCBuildConfiguration; 388 | baseConfigurationReference = E4EB6923138AFD0F00A09F29 /* Project.xcconfig */; 389 | buildSettings = { 390 | CONFIGURATION_BUILD_DIR = "$(SRCROOT)/bin/"; 391 | COPY_PHASE_STRIP = YES; 392 | DEAD_CODE_STRIPPING = YES; 393 | GCC_AUTO_VECTORIZATION = YES; 394 | GCC_ENABLE_SSE3_EXTENSIONS = YES; 395 | GCC_ENABLE_SUPPLEMENTAL_SSE3_INSTRUCTIONS = YES; 396 | GCC_INLINES_ARE_PRIVATE_EXTERN = NO; 397 | GCC_OPTIMIZATION_LEVEL = 3; 398 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 399 | GCC_UNROLL_LOOPS = YES; 400 | GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = YES; 401 | GCC_WARN_ABOUT_INVALID_OFFSETOF_MACRO = NO; 402 | GCC_WARN_ALLOW_INCOMPLETE_PROTOCOL = NO; 403 | GCC_WARN_UNINITIALIZED_AUTOS = NO; 404 | GCC_WARN_UNUSED_VALUE = NO; 405 | GCC_WARN_UNUSED_VARIABLE = NO; 406 | MACOSX_DEPLOYMENT_TARGET = 10.8; 407 | OTHER_CPLUSPLUSFLAGS = ( 408 | "-D__MACOSX_CORE__", 409 | "-mtune=native", 410 | ); 411 | SDKROOT = macosx; 412 | }; 413 | name = Release; 414 | }; 415 | E4B69B600A3A1757003C02F2 /* Debug */ = { 416 | isa = XCBuildConfiguration; 417 | baseConfigurationReference = E4EB6923138AFD0F00A09F29 /* Project.xcconfig */; 418 | buildSettings = { 419 | COMBINE_HIDPI_IMAGES = YES; 420 | COPY_PHASE_STRIP = NO; 421 | FRAMEWORK_SEARCH_PATHS = ( 422 | "$(inherited)", 423 | "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", 424 | ); 425 | FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/../../../libs/glut/lib/osx\""; 426 | GCC_DYNAMIC_NO_PIC = NO; 427 | GCC_GENERATE_DEBUGGING_SYMBOLS = YES; 428 | GCC_MODEL_TUNING = NONE; 429 | ICON = "$(ICON_NAME_DEBUG)"; 430 | ICON_FILE = "$(ICON_FILE_PATH)$(ICON)"; 431 | INFOPLIST_FILE = "openFrameworks-Info.plist"; 432 | INSTALL_PATH = "$(HOME)/Applications"; 433 | LIBRARY_SEARCH_PATHS = "$(inherited)"; 434 | PRODUCT_NAME = "$(TARGET_NAME)Debug"; 435 | WRAPPER_EXTENSION = app; 436 | }; 437 | name = Debug; 438 | }; 439 | E4B69B610A3A1757003C02F2 /* Release */ = { 440 | isa = XCBuildConfiguration; 441 | baseConfigurationReference = E4EB6923138AFD0F00A09F29 /* Project.xcconfig */; 442 | buildSettings = { 443 | COMBINE_HIDPI_IMAGES = YES; 444 | COPY_PHASE_STRIP = YES; 445 | FRAMEWORK_SEARCH_PATHS = ( 446 | "$(inherited)", 447 | "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", 448 | ); 449 | FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/../../../libs/glut/lib/osx\""; 450 | GCC_GENERATE_DEBUGGING_SYMBOLS = YES; 451 | GCC_MODEL_TUNING = NONE; 452 | ICON = "$(ICON_NAME_RELEASE)"; 453 | ICON_FILE = "$(ICON_FILE_PATH)$(ICON)"; 454 | INFOPLIST_FILE = "openFrameworks-Info.plist"; 455 | INSTALL_PATH = "$(HOME)/Applications"; 456 | LIBRARY_SEARCH_PATHS = "$(inherited)"; 457 | PRODUCT_NAME = "$(TARGET_NAME)"; 458 | WRAPPER_EXTENSION = app; 459 | baseConfigurationReference = E4EB6923138AFD0F00A09F29; 460 | }; 461 | name = Release; 462 | }; 463 | /* End XCBuildConfiguration section */ 464 | 465 | /* Begin XCConfigurationList section */ 466 | E4B69B4D0A3A1720003C02F2 /* Build configuration list for PBXProject "example-Alert" */ = { 467 | isa = XCConfigurationList; 468 | buildConfigurations = ( 469 | E4B69B4E0A3A1720003C02F2 /* Debug */, 470 | E4B69B4F0A3A1720003C02F2 /* Release */, 471 | ); 472 | defaultConfigurationIsVisible = 0; 473 | defaultConfigurationName = Release; 474 | }; 475 | E4B69B5F0A3A1757003C02F2 /* Build configuration list for PBXNativeTarget "example-Alert" */ = { 476 | isa = XCConfigurationList; 477 | buildConfigurations = ( 478 | E4B69B600A3A1757003C02F2 /* Debug */, 479 | E4B69B610A3A1757003C02F2 /* Release */, 480 | ); 481 | defaultConfigurationIsVisible = 0; 482 | defaultConfigurationName = Release; 483 | }; 484 | /* End XCConfigurationList section */ 485 | }; 486 | rootObject = E4B69B4C0A3A1720003C02F2 /* Project object */; 487 | } 488 | -------------------------------------------------------------------------------- /example-Alert/example-Alert.xcodeproj/xcshareddata/xcschemes/example-Alert Debug.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 39 | 40 | 41 | 42 | 51 | 52 | 58 | 59 | 60 | 61 | 62 | 63 | 69 | 70 | 76 | 77 | 78 | 79 | 81 | 82 | 85 | 86 | 87 | -------------------------------------------------------------------------------- /example-Alert/example-Alert.xcodeproj/xcshareddata/xcschemes/example-Alert Release.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 39 | 40 | 41 | 42 | 51 | 52 | 58 | 59 | 60 | 61 | 62 | 63 | 69 | 70 | 76 | 77 | 78 | 79 | 81 | 82 | 85 | 86 | 87 | -------------------------------------------------------------------------------- /example-Alert/openFrameworks-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | cc.openFrameworks.ofapp 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundlePackageType 14 | APPL 15 | CFBundleSignature 16 | ???? 17 | CFBundleVersion 18 | 1.0 19 | CFBundleIconFile 20 | ${ICON} 21 | NSHighResolutionCapable 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /example-Alert/src/main.cpp: -------------------------------------------------------------------------------- 1 | #include "ofMain.h" 2 | #include "ofApp.h" 3 | 4 | int main( ) 5 | { 6 | ofSetupOpenGL(1920, 1080, OF_WINDOW); 7 | ofRunApp(new ofApp()); 8 | } 9 | -------------------------------------------------------------------------------- /example-Alert/src/ofApp.cpp: -------------------------------------------------------------------------------- 1 | #include "ofApp.h" 2 | 3 | void ofApp::setup() 4 | { 5 | ofSetWindowShape(1920, 1080); 6 | ofSetWindowPosition(ofGetScreenWidth()/2 - ofGetWidth()/2, 0); 7 | 8 | mAlert = make_shared(); 9 | mAlert->addListener(this, &ofApp::onModalEvent); 10 | 11 | mShowAlert = new ofxDatGuiButton("show alert"); 12 | mShowAlert->setLabelAlignment(ofxDatGuiAlignment::CENTER); 13 | mShowAlert->setPosition(ofGetWidth()/2 - mShowAlert->getWidth()/2, 450); 14 | mShowAlert->onButtonEvent(this, &ofApp::onButtonEvent); 15 | } 16 | 17 | void ofApp::update() 18 | { 19 | mShowAlert->update(); 20 | } 21 | 22 | void ofApp::draw() 23 | { 24 | mShowAlert->draw(); 25 | } 26 | 27 | void ofApp::onButtonEvent(ofxDatGuiButtonEvent e) 28 | { 29 | if (e.target == mShowAlert) mAlert->alert("It's time to go outside."); 30 | } 31 | 32 | void ofApp::onModalEvent(ofxModalEvent e) 33 | { 34 | if (e.type == ofxModalEvent::CONFIRM){ 35 | cout << "confirm button was selected" << endl; 36 | } 37 | } 38 | 39 | -------------------------------------------------------------------------------- /example-Alert/src/ofApp.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "ofMain.h" 4 | #include "ofxModal.h" 5 | 6 | class ofApp : public ofBaseApp{ 7 | 8 | public: 9 | void setup(); 10 | void update(); 11 | void draw(); 12 | 13 | shared_ptr mAlert; 14 | void onModalEvent(ofxModalEvent e); 15 | 16 | ofxDatGuiButton* mShowAlert; 17 | void onButtonEvent(ofxDatGuiButtonEvent e); 18 | }; 19 | -------------------------------------------------------------------------------- /example-Confirm/Makefile: -------------------------------------------------------------------------------- 1 | # Attempt to load a config.make file. 2 | # If none is found, project defaults in config.project.make will be used. 3 | ifneq ($(wildcard config.make),) 4 | include config.make 5 | endif 6 | 7 | # make sure the the OF_ROOT location is defined 8 | ifndef OF_ROOT 9 | OF_ROOT=$(realpath ../../..) 10 | endif 11 | 12 | # call the project makefile! 13 | include $(OF_ROOT)/libs/openFrameworksCompiled/project/makefileCommon/compile.project.mk 14 | -------------------------------------------------------------------------------- /example-Confirm/Project.xcconfig: -------------------------------------------------------------------------------- 1 | //THE PATH TO THE ROOT OF OUR OF PATH RELATIVE TO THIS PROJECT. 2 | //THIS NEEDS TO BE DEFINED BEFORE CoreOF.xcconfig IS INCLUDED 3 | OF_PATH = ../../.. 4 | 5 | //THIS HAS ALL THE HEADER AND LIBS FOR OF CORE 6 | #include "../../../libs/openFrameworksCompiled/project/osx/CoreOF.xcconfig" 7 | 8 | //ICONS - NEW IN 0072 9 | ICON_NAME_DEBUG = icon-debug.icns 10 | ICON_NAME_RELEASE = icon.icns 11 | ICON_FILE_PATH = $(OF_PATH)/libs/openFrameworksCompiled/project/osx/ 12 | 13 | //IF YOU WANT AN APP TO HAVE A CUSTOM ICON - PUT THEM IN YOUR DATA FOLDER AND CHANGE ICON_FILE_PATH to: 14 | //ICON_FILE_PATH = bin/data/ 15 | 16 | OTHER_LDFLAGS = $(OF_CORE_LIBS) $(OF_CORE_FRAMEWORKS) 17 | HEADER_SEARCH_PATHS = $(OF_CORE_HEADERS) 18 | -------------------------------------------------------------------------------- /example-Confirm/addons.make: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/braitsch/ofxModal/71bfaa283407bbe58b921fd581d8665f21cf5eb8/example-Confirm/addons.make -------------------------------------------------------------------------------- /example-Confirm/bin/data/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/braitsch/ofxModal/71bfaa283407bbe58b921fd581d8665f21cf5eb8/example-Confirm/bin/data/.gitkeep -------------------------------------------------------------------------------- /example-Confirm/bin/data/ofxbraitsch/fonts/HelveticaNeueLTStd-Md.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/braitsch/ofxModal/71bfaa283407bbe58b921fd581d8665f21cf5eb8/example-Confirm/bin/data/ofxbraitsch/fonts/HelveticaNeueLTStd-Md.otf -------------------------------------------------------------------------------- /example-Confirm/bin/data/ofxbraitsch/fonts/Roboto-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/braitsch/ofxModal/71bfaa283407bbe58b921fd581d8665f21cf5eb8/example-Confirm/bin/data/ofxbraitsch/fonts/Roboto-Regular.ttf -------------------------------------------------------------------------------- /example-Confirm/bin/data/ofxbraitsch/fonts/Verdana.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/braitsch/ofxModal/71bfaa283407bbe58b921fd581d8665f21cf5eb8/example-Confirm/bin/data/ofxbraitsch/fonts/Verdana.ttf -------------------------------------------------------------------------------- /example-Confirm/bin/data/ofxbraitsch/ofxdatgui/icon-group-closed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/braitsch/ofxModal/71bfaa283407bbe58b921fd581d8665f21cf5eb8/example-Confirm/bin/data/ofxbraitsch/ofxdatgui/icon-group-closed.png -------------------------------------------------------------------------------- /example-Confirm/bin/data/ofxbraitsch/ofxdatgui/icon-group-open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/braitsch/ofxModal/71bfaa283407bbe58b921fd581d8665f21cf5eb8/example-Confirm/bin/data/ofxbraitsch/ofxdatgui/icon-group-open.png -------------------------------------------------------------------------------- /example-Confirm/bin/data/ofxbraitsch/ofxdatgui/icon-radio-off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/braitsch/ofxModal/71bfaa283407bbe58b921fd581d8665f21cf5eb8/example-Confirm/bin/data/ofxbraitsch/ofxdatgui/icon-radio-off.png -------------------------------------------------------------------------------- /example-Confirm/bin/data/ofxbraitsch/ofxdatgui/icon-radio-on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/braitsch/ofxModal/71bfaa283407bbe58b921fd581d8665f21cf5eb8/example-Confirm/bin/data/ofxbraitsch/ofxdatgui/icon-radio-on.png -------------------------------------------------------------------------------- /example-Confirm/bin/data/ofxbraitsch/ofxdatgui/picker-rainbow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/braitsch/ofxModal/71bfaa283407bbe58b921fd581d8665f21cf5eb8/example-Confirm/bin/data/ofxbraitsch/ofxdatgui/picker-rainbow.png -------------------------------------------------------------------------------- /example-Confirm/bin/data/ofxbraitsch/ofxmodal/modal-buttonX-hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/braitsch/ofxModal/71bfaa283407bbe58b921fd581d8665f21cf5eb8/example-Confirm/bin/data/ofxbraitsch/ofxmodal/modal-buttonX-hover.png -------------------------------------------------------------------------------- /example-Confirm/bin/data/ofxbraitsch/ofxmodal/modal-buttonX.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/braitsch/ofxModal/71bfaa283407bbe58b921fd581d8665f21cf5eb8/example-Confirm/bin/data/ofxbraitsch/ofxmodal/modal-buttonX.png -------------------------------------------------------------------------------- /example-Confirm/config.make: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # CONFIGURE PROJECT MAKEFILE (optional) 3 | # This file is where we make project specific configurations. 4 | ################################################################################ 5 | 6 | ################################################################################ 7 | # OF ROOT 8 | # The location of your root openFrameworks installation 9 | # (default) OF_ROOT = ../../.. 10 | ################################################################################ 11 | # OF_ROOT = ../../.. 12 | 13 | ################################################################################ 14 | # PROJECT ROOT 15 | # The location of the project - a starting place for searching for files 16 | # (default) PROJECT_ROOT = . (this directory) 17 | # 18 | ################################################################################ 19 | # PROJECT_ROOT = . 20 | 21 | ################################################################################ 22 | # PROJECT SPECIFIC CHECKS 23 | # This is a project defined section to create internal makefile flags to 24 | # conditionally enable or disable the addition of various features within 25 | # this makefile. For instance, if you want to make changes based on whether 26 | # GTK is installed, one might test that here and create a variable to check. 27 | ################################################################################ 28 | # None 29 | 30 | ################################################################################ 31 | # PROJECT EXTERNAL SOURCE PATHS 32 | # These are fully qualified paths that are not within the PROJECT_ROOT folder. 33 | # Like source folders in the PROJECT_ROOT, these paths are subject to 34 | # exlclusion via the PROJECT_EXLCUSIONS list. 35 | # 36 | # (default) PROJECT_EXTERNAL_SOURCE_PATHS = (blank) 37 | # 38 | # Note: Leave a leading space when adding list items with the += operator 39 | ################################################################################ 40 | # PROJECT_EXTERNAL_SOURCE_PATHS = 41 | 42 | ################################################################################ 43 | # PROJECT EXCLUSIONS 44 | # These makefiles assume that all folders in your current project directory 45 | # and any listed in the PROJECT_EXTERNAL_SOURCH_PATHS are are valid locations 46 | # to look for source code. The any folders or files that match any of the 47 | # items in the PROJECT_EXCLUSIONS list below will be ignored. 48 | # 49 | # Each item in the PROJECT_EXCLUSIONS list will be treated as a complete 50 | # string unless teh user adds a wildcard (%) operator to match subdirectories. 51 | # GNU make only allows one wildcard for matching. The second wildcard (%) is 52 | # treated literally. 53 | # 54 | # (default) PROJECT_EXCLUSIONS = (blank) 55 | # 56 | # Will automatically exclude the following: 57 | # 58 | # $(PROJECT_ROOT)/bin% 59 | # $(PROJECT_ROOT)/obj% 60 | # $(PROJECT_ROOT)/%.xcodeproj 61 | # 62 | # Note: Leave a leading space when adding list items with the += operator 63 | ################################################################################ 64 | # PROJECT_EXCLUSIONS = 65 | 66 | ################################################################################ 67 | # PROJECT LINKER FLAGS 68 | # These flags will be sent to the linker when compiling the executable. 69 | # 70 | # (default) PROJECT_LDFLAGS = -Wl,-rpath=./libs 71 | # 72 | # Note: Leave a leading space when adding list items with the += operator 73 | ################################################################################ 74 | 75 | # Currently, shared libraries that are needed are copied to the 76 | # $(PROJECT_ROOT)/bin/libs directory. The following LDFLAGS tell the linker to 77 | # add a runtime path to search for those shared libraries, since they aren't 78 | # incorporated directly into the final executable application binary. 79 | # TODO: should this be a default setting? 80 | # PROJECT_LDFLAGS=-Wl,-rpath=./libs 81 | 82 | ################################################################################ 83 | # PROJECT DEFINES 84 | # Create a space-delimited list of DEFINES. The list will be converted into 85 | # CFLAGS with the "-D" flag later in the makefile. 86 | # 87 | # (default) PROJECT_DEFINES = (blank) 88 | # 89 | # Note: Leave a leading space when adding list items with the += operator 90 | ################################################################################ 91 | # PROJECT_DEFINES = 92 | 93 | ################################################################################ 94 | # PROJECT CFLAGS 95 | # This is a list of fully qualified CFLAGS required when compiling for this 96 | # project. These CFLAGS will be used IN ADDITION TO the PLATFORM_CFLAGS 97 | # defined in your platform specific core configuration files. These flags are 98 | # presented to the compiler BEFORE the PROJECT_OPTIMIZATION_CFLAGS below. 99 | # 100 | # (default) PROJECT_CFLAGS = (blank) 101 | # 102 | # Note: Before adding PROJECT_CFLAGS, note that the PLATFORM_CFLAGS defined in 103 | # your platform specific configuration file will be applied by default and 104 | # further flags here may not be needed. 105 | # 106 | # Note: Leave a leading space when adding list items with the += operator 107 | ################################################################################ 108 | # PROJECT_CFLAGS = 109 | 110 | ################################################################################ 111 | # PROJECT OPTIMIZATION CFLAGS 112 | # These are lists of CFLAGS that are target-specific. While any flags could 113 | # be conditionally added, they are usually limited to optimization flags. 114 | # These flags are added BEFORE the PROJECT_CFLAGS. 115 | # 116 | # PROJECT_OPTIMIZATION_CFLAGS_RELEASE flags are only applied to RELEASE targets. 117 | # 118 | # (default) PROJECT_OPTIMIZATION_CFLAGS_RELEASE = (blank) 119 | # 120 | # PROJECT_OPTIMIZATION_CFLAGS_DEBUG flags are only applied to DEBUG targets. 121 | # 122 | # (default) PROJECT_OPTIMIZATION_CFLAGS_DEBUG = (blank) 123 | # 124 | # Note: Before adding PROJECT_OPTIMIZATION_CFLAGS, please note that the 125 | # PLATFORM_OPTIMIZATION_CFLAGS defined in your platform specific configuration 126 | # file will be applied by default and further optimization flags here may not 127 | # be needed. 128 | # 129 | # Note: Leave a leading space when adding list items with the += operator 130 | ################################################################################ 131 | # PROJECT_OPTIMIZATION_CFLAGS_RELEASE = 132 | # PROJECT_OPTIMIZATION_CFLAGS_DEBUG = 133 | 134 | ################################################################################ 135 | # PROJECT COMPILERS 136 | # Custom compilers can be set for CC and CXX 137 | # (default) PROJECT_CXX = (blank) 138 | # (default) PROJECT_CC = (blank) 139 | # Note: Leave a leading space when adding list items with the += operator 140 | ################################################################################ 141 | # PROJECT_CXX = 142 | # PROJECT_CC = 143 | -------------------------------------------------------------------------------- /example-Confirm/example-Confirm.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 8A46BB581C6EC9D800D48129 /* ofxDatGuiComponent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A46BB4A1C6EC9D800D48129 /* ofxDatGuiComponent.cpp */; }; 11 | 8A46BB591C6EC9D800D48129 /* ofxSmartFont.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A46BB511C6EC9D800D48129 /* ofxSmartFont.cpp */; }; 12 | 8A46BB5A1C6EC9D800D48129 /* ofxDatGui.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A46BB531C6EC9D800D48129 /* ofxDatGui.cpp */; }; 13 | 8A837D931C3F37730050A182 /* ofxParagraph.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A837D911C3F37730050A182 /* ofxParagraph.cpp */; }; 14 | 8A97FA271C701FD400D50644 /* ofxModalWindow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A97FA251C701FD400D50644 /* ofxModalWindow.cpp */; }; 15 | E4328149138ABC9F0047C5CB /* openFrameworksDebug.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E4328148138ABC890047C5CB /* openFrameworksDebug.a */; }; 16 | E4B69E200A3A1BDC003C02F2 /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E4B69E1D0A3A1BDC003C02F2 /* main.cpp */; }; 17 | E4B69E210A3A1BDC003C02F2 /* ofApp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E4B69E1E0A3A1BDC003C02F2 /* ofApp.cpp */; }; 18 | /* End PBXBuildFile section */ 19 | 20 | /* Begin PBXContainerItemProxy section */ 21 | E4328147138ABC890047C5CB /* PBXContainerItemProxy */ = { 22 | isa = PBXContainerItemProxy; 23 | containerPortal = E4328143138ABC890047C5CB /* openFrameworksLib.xcodeproj */; 24 | proxyType = 2; 25 | remoteGlobalIDString = E4B27C1510CBEB8E00536013; 26 | remoteInfo = openFrameworks; 27 | }; 28 | E4EEB9AB138B136A00A80321 /* PBXContainerItemProxy */ = { 29 | isa = PBXContainerItemProxy; 30 | containerPortal = E4328143138ABC890047C5CB /* openFrameworksLib.xcodeproj */; 31 | proxyType = 1; 32 | remoteGlobalIDString = E4B27C1410CBEB8E00536013; 33 | remoteInfo = openFrameworks; 34 | }; 35 | /* End PBXContainerItemProxy section */ 36 | 37 | /* Begin PBXCopyFilesBuildPhase section */ 38 | E4C2427710CC5ABF004149E2 /* CopyFiles */ = { 39 | isa = PBXCopyFilesBuildPhase; 40 | buildActionMask = 2147483647; 41 | dstPath = ""; 42 | dstSubfolderSpec = 10; 43 | files = ( 44 | ); 45 | runOnlyForDeploymentPostprocessing = 0; 46 | }; 47 | /* End PBXCopyFilesBuildPhase section */ 48 | 49 | /* Begin PBXFileReference section */ 50 | 8A46BB3C1C6EC9D800D48129 /* ofxDatGui2dPad.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxDatGui2dPad.h; sourceTree = ""; }; 51 | 8A46BB3D1C6EC9D800D48129 /* ofxDatGuiButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxDatGuiButton.h; sourceTree = ""; }; 52 | 8A46BB3E1C6EC9D800D48129 /* ofxDatGuiColorPicker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxDatGuiColorPicker.h; sourceTree = ""; }; 53 | 8A46BB3F1C6EC9D800D48129 /* ofxDatGuiControls.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxDatGuiControls.h; sourceTree = ""; }; 54 | 8A46BB401C6EC9D800D48129 /* ofxDatGuiFRM.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxDatGuiFRM.h; sourceTree = ""; }; 55 | 8A46BB411C6EC9D800D48129 /* ofxDatGuiGroups.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxDatGuiGroups.h; sourceTree = ""; }; 56 | 8A46BB421C6EC9D800D48129 /* ofxDatGuiLabel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxDatGuiLabel.h; sourceTree = ""; }; 57 | 8A46BB431C6EC9D800D48129 /* ofxDatGuiMatrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxDatGuiMatrix.h; sourceTree = ""; }; 58 | 8A46BB441C6EC9D800D48129 /* ofxDatGuiScrollView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxDatGuiScrollView.h; sourceTree = ""; }; 59 | 8A46BB451C6EC9D800D48129 /* ofxDatGuiSlider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxDatGuiSlider.h; sourceTree = ""; }; 60 | 8A46BB461C6EC9D800D48129 /* ofxDatGuiTextInput.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxDatGuiTextInput.h; sourceTree = ""; }; 61 | 8A46BB471C6EC9D800D48129 /* ofxDatGuiTextInputField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxDatGuiTextInputField.h; sourceTree = ""; }; 62 | 8A46BB481C6EC9D800D48129 /* ofxDatGuiTimeGraph.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxDatGuiTimeGraph.h; sourceTree = ""; }; 63 | 8A46BB4A1C6EC9D800D48129 /* ofxDatGuiComponent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ofxDatGuiComponent.cpp; sourceTree = ""; }; 64 | 8A46BB4B1C6EC9D800D48129 /* ofxDatGuiComponent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxDatGuiComponent.h; sourceTree = ""; }; 65 | 8A46BB4C1C6EC9D800D48129 /* ofxDatGuiConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxDatGuiConstants.h; sourceTree = ""; }; 66 | 8A46BB4D1C6EC9D800D48129 /* ofxDatGuiEvents.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxDatGuiEvents.h; sourceTree = ""; }; 67 | 8A46BB4E1C6EC9D800D48129 /* ofxDatGuiIntObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxDatGuiIntObject.h; sourceTree = ""; }; 68 | 8A46BB511C6EC9D800D48129 /* ofxSmartFont.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ofxSmartFont.cpp; sourceTree = ""; }; 69 | 8A46BB521C6EC9D800D48129 /* ofxSmartFont.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxSmartFont.h; sourceTree = ""; }; 70 | 8A46BB531C6EC9D800D48129 /* ofxDatGui.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ofxDatGui.cpp; sourceTree = ""; }; 71 | 8A46BB541C6EC9D800D48129 /* ofxDatGui.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxDatGui.h; sourceTree = ""; }; 72 | 8A46BB561C6EC9D800D48129 /* ofxDatGuiTheme.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxDatGuiTheme.h; sourceTree = ""; }; 73 | 8A46BB571C6EC9D800D48129 /* ofxDatGuiThemes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxDatGuiThemes.h; sourceTree = ""; }; 74 | 8A837D911C3F37730050A182 /* ofxParagraph.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ofxParagraph.cpp; sourceTree = ""; }; 75 | 8A837D921C3F37730050A182 /* ofxParagraph.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxParagraph.h; sourceTree = ""; }; 76 | 8A97FA211C701FD400D50644 /* ofxModal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxModal.h; sourceTree = ""; }; 77 | 8A97FA221C701FD400D50644 /* ofxModalConfirm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxModalConfirm.h; sourceTree = ""; }; 78 | 8A97FA231C701FD400D50644 /* ofxModalEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxModalEvent.h; sourceTree = ""; }; 79 | 8A97FA241C701FD400D50644 /* ofxModalTheme.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxModalTheme.h; sourceTree = ""; }; 80 | 8A97FA251C701FD400D50644 /* ofxModalWindow.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ofxModalWindow.cpp; sourceTree = ""; }; 81 | 8A97FA261C701FD400D50644 /* ofxModalWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxModalWindow.h; sourceTree = ""; }; 82 | E4328143138ABC890047C5CB /* openFrameworksLib.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = openFrameworksLib.xcodeproj; path = ../../../libs/openFrameworksCompiled/project/osx/openFrameworksLib.xcodeproj; sourceTree = SOURCE_ROOT; }; 83 | E4B69B5B0A3A1756003C02F2 /* example-ConfirmDebug.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "example-ConfirmDebug.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 84 | E4B69E1D0A3A1BDC003C02F2 /* main.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = main.cpp; path = src/main.cpp; sourceTree = SOURCE_ROOT; }; 85 | E4B69E1E0A3A1BDC003C02F2 /* ofApp.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 30; name = ofApp.cpp; path = src/ofApp.cpp; sourceTree = SOURCE_ROOT; }; 86 | E4B69E1F0A3A1BDC003C02F2 /* ofApp.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ofApp.h; path = src/ofApp.h; sourceTree = SOURCE_ROOT; }; 87 | E4B6FCAD0C3E899E008CF71C /* openFrameworks-Info.plist */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.xml; path = "openFrameworks-Info.plist"; sourceTree = ""; }; 88 | E4EB691F138AFCF100A09F29 /* CoreOF.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = CoreOF.xcconfig; path = ../../../libs/openFrameworksCompiled/project/osx/CoreOF.xcconfig; sourceTree = SOURCE_ROOT; }; 89 | E4EB6923138AFD0F00A09F29 /* Project.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Project.xcconfig; sourceTree = ""; }; 90 | /* End PBXFileReference section */ 91 | 92 | /* Begin PBXFrameworksBuildPhase section */ 93 | E4B69B590A3A1756003C02F2 /* Frameworks */ = { 94 | isa = PBXFrameworksBuildPhase; 95 | buildActionMask = 2147483647; 96 | files = ( 97 | E4328149138ABC9F0047C5CB /* openFrameworksDebug.a in Frameworks */, 98 | ); 99 | runOnlyForDeploymentPostprocessing = 0; 100 | }; 101 | /* End PBXFrameworksBuildPhase section */ 102 | 103 | /* Begin PBXGroup section */ 104 | 8A46BB3A1C6EC9D800D48129 /* ofxDatGui */ = { 105 | isa = PBXGroup; 106 | children = ( 107 | 8A46BB531C6EC9D800D48129 /* ofxDatGui.cpp */, 108 | 8A46BB541C6EC9D800D48129 /* ofxDatGui.h */, 109 | 8A46BB491C6EC9D800D48129 /* core */, 110 | 8A46BB4F1C6EC9D800D48129 /* libs */, 111 | 8A46BB551C6EC9D800D48129 /* themes */, 112 | 8A46BB3B1C6EC9D800D48129 /* components */, 113 | ); 114 | name = ofxDatGui; 115 | path = ../modules/ofxDatGui/src; 116 | sourceTree = ""; 117 | }; 118 | 8A46BB3B1C6EC9D800D48129 /* components */ = { 119 | isa = PBXGroup; 120 | children = ( 121 | 8A46BB3C1C6EC9D800D48129 /* ofxDatGui2dPad.h */, 122 | 8A46BB3D1C6EC9D800D48129 /* ofxDatGuiButton.h */, 123 | 8A46BB3E1C6EC9D800D48129 /* ofxDatGuiColorPicker.h */, 124 | 8A46BB3F1C6EC9D800D48129 /* ofxDatGuiControls.h */, 125 | 8A46BB401C6EC9D800D48129 /* ofxDatGuiFRM.h */, 126 | 8A46BB411C6EC9D800D48129 /* ofxDatGuiGroups.h */, 127 | 8A46BB421C6EC9D800D48129 /* ofxDatGuiLabel.h */, 128 | 8A46BB431C6EC9D800D48129 /* ofxDatGuiMatrix.h */, 129 | 8A46BB441C6EC9D800D48129 /* ofxDatGuiScrollView.h */, 130 | 8A46BB451C6EC9D800D48129 /* ofxDatGuiSlider.h */, 131 | 8A46BB461C6EC9D800D48129 /* ofxDatGuiTextInput.h */, 132 | 8A46BB471C6EC9D800D48129 /* ofxDatGuiTextInputField.h */, 133 | 8A46BB481C6EC9D800D48129 /* ofxDatGuiTimeGraph.h */, 134 | ); 135 | path = components; 136 | sourceTree = ""; 137 | }; 138 | 8A46BB491C6EC9D800D48129 /* core */ = { 139 | isa = PBXGroup; 140 | children = ( 141 | 8A46BB4A1C6EC9D800D48129 /* ofxDatGuiComponent.cpp */, 142 | 8A46BB4B1C6EC9D800D48129 /* ofxDatGuiComponent.h */, 143 | 8A46BB4C1C6EC9D800D48129 /* ofxDatGuiConstants.h */, 144 | 8A46BB4D1C6EC9D800D48129 /* ofxDatGuiEvents.h */, 145 | 8A46BB4E1C6EC9D800D48129 /* ofxDatGuiIntObject.h */, 146 | ); 147 | path = core; 148 | sourceTree = ""; 149 | }; 150 | 8A46BB4F1C6EC9D800D48129 /* libs */ = { 151 | isa = PBXGroup; 152 | children = ( 153 | 8A46BB501C6EC9D800D48129 /* ofxSmartFont */, 154 | ); 155 | path = libs; 156 | sourceTree = ""; 157 | }; 158 | 8A46BB501C6EC9D800D48129 /* ofxSmartFont */ = { 159 | isa = PBXGroup; 160 | children = ( 161 | 8A46BB511C6EC9D800D48129 /* ofxSmartFont.cpp */, 162 | 8A46BB521C6EC9D800D48129 /* ofxSmartFont.h */, 163 | ); 164 | path = ofxSmartFont; 165 | sourceTree = ""; 166 | }; 167 | 8A46BB551C6EC9D800D48129 /* themes */ = { 168 | isa = PBXGroup; 169 | children = ( 170 | 8A46BB561C6EC9D800D48129 /* ofxDatGuiTheme.h */, 171 | 8A46BB571C6EC9D800D48129 /* ofxDatGuiThemes.h */, 172 | ); 173 | path = themes; 174 | sourceTree = ""; 175 | }; 176 | 8A837D901C3F37730050A182 /* ofxParagraph */ = { 177 | isa = PBXGroup; 178 | children = ( 179 | 8A837D911C3F37730050A182 /* ofxParagraph.cpp */, 180 | 8A837D921C3F37730050A182 /* ofxParagraph.h */, 181 | ); 182 | name = ofxParagraph; 183 | path = ../modules/ofxParagraph/src; 184 | sourceTree = ""; 185 | }; 186 | 8A97FA201C701FD400D50644 /* ofxModal */ = { 187 | isa = PBXGroup; 188 | children = ( 189 | 8A97FA211C701FD400D50644 /* ofxModal.h */, 190 | 8A97FA221C701FD400D50644 /* ofxModalConfirm.h */, 191 | 8A97FA231C701FD400D50644 /* ofxModalEvent.h */, 192 | 8A97FA241C701FD400D50644 /* ofxModalTheme.h */, 193 | 8A97FA251C701FD400D50644 /* ofxModalWindow.cpp */, 194 | 8A97FA261C701FD400D50644 /* ofxModalWindow.h */, 195 | ); 196 | name = ofxModal; 197 | path = ../src; 198 | sourceTree = ""; 199 | }; 200 | BB4B014C10F69532006C3DED /* addons */ = { 201 | isa = PBXGroup; 202 | children = ( 203 | 8A97FA201C701FD400D50644 /* ofxModal */, 204 | 8A46BB3A1C6EC9D800D48129 /* ofxDatGui */, 205 | 8A837D901C3F37730050A182 /* ofxParagraph */, 206 | ); 207 | name = addons; 208 | sourceTree = ""; 209 | }; 210 | E4328144138ABC890047C5CB /* Products */ = { 211 | isa = PBXGroup; 212 | children = ( 213 | E4328148138ABC890047C5CB /* openFrameworksDebug.a */, 214 | ); 215 | name = Products; 216 | sourceTree = ""; 217 | }; 218 | E4B69B4A0A3A1720003C02F2 = { 219 | isa = PBXGroup; 220 | children = ( 221 | E4B6FCAD0C3E899E008CF71C /* openFrameworks-Info.plist */, 222 | E4EB6923138AFD0F00A09F29 /* Project.xcconfig */, 223 | E4B69E1C0A3A1BDC003C02F2 /* src */, 224 | E4EEC9E9138DF44700A80321 /* openFrameworks */, 225 | BB4B014C10F69532006C3DED /* addons */, 226 | E4B69B5B0A3A1756003C02F2 /* example-ConfirmDebug.app */, 227 | ); 228 | sourceTree = ""; 229 | }; 230 | E4B69E1C0A3A1BDC003C02F2 /* src */ = { 231 | isa = PBXGroup; 232 | children = ( 233 | E4B69E1D0A3A1BDC003C02F2 /* main.cpp */, 234 | E4B69E1E0A3A1BDC003C02F2 /* ofApp.cpp */, 235 | E4B69E1F0A3A1BDC003C02F2 /* ofApp.h */, 236 | ); 237 | path = src; 238 | sourceTree = SOURCE_ROOT; 239 | }; 240 | E4EEC9E9138DF44700A80321 /* openFrameworks */ = { 241 | isa = PBXGroup; 242 | children = ( 243 | E4EB691F138AFCF100A09F29 /* CoreOF.xcconfig */, 244 | E4328143138ABC890047C5CB /* openFrameworksLib.xcodeproj */, 245 | ); 246 | name = openFrameworks; 247 | sourceTree = ""; 248 | }; 249 | /* End PBXGroup section */ 250 | 251 | /* Begin PBXNativeTarget section */ 252 | E4B69B5A0A3A1756003C02F2 /* example-Confirm */ = { 253 | isa = PBXNativeTarget; 254 | buildConfigurationList = E4B69B5F0A3A1757003C02F2 /* Build configuration list for PBXNativeTarget "example-Confirm" */; 255 | buildPhases = ( 256 | E4B69B580A3A1756003C02F2 /* Sources */, 257 | E4B69B590A3A1756003C02F2 /* Frameworks */, 258 | E4B6FFFD0C3F9AB9008CF71C /* ShellScript */, 259 | E4C2427710CC5ABF004149E2 /* CopyFiles */, 260 | ); 261 | buildRules = ( 262 | ); 263 | dependencies = ( 264 | E4EEB9AC138B136A00A80321 /* PBXTargetDependency */, 265 | ); 266 | name = "example-Confirm"; 267 | productName = myOFApp; 268 | productReference = E4B69B5B0A3A1756003C02F2 /* example-ConfirmDebug.app */; 269 | productType = "com.apple.product-type.application"; 270 | }; 271 | /* End PBXNativeTarget section */ 272 | 273 | /* Begin PBXProject section */ 274 | E4B69B4C0A3A1720003C02F2 /* Project object */ = { 275 | isa = PBXProject; 276 | attributes = { 277 | LastUpgradeCheck = 0600; 278 | }; 279 | buildConfigurationList = E4B69B4D0A3A1720003C02F2 /* Build configuration list for PBXProject "example-Confirm" */; 280 | compatibilityVersion = "Xcode 3.2"; 281 | developmentRegion = English; 282 | hasScannedForEncodings = 0; 283 | knownRegions = ( 284 | English, 285 | Japanese, 286 | French, 287 | German, 288 | ); 289 | mainGroup = E4B69B4A0A3A1720003C02F2; 290 | productRefGroup = E4B69B4A0A3A1720003C02F2; 291 | projectDirPath = ""; 292 | projectReferences = ( 293 | { 294 | ProductGroup = E4328144138ABC890047C5CB /* Products */; 295 | ProjectRef = E4328143138ABC890047C5CB /* openFrameworksLib.xcodeproj */; 296 | }, 297 | ); 298 | projectRoot = ""; 299 | targets = ( 300 | E4B69B5A0A3A1756003C02F2 /* example-Confirm */, 301 | ); 302 | }; 303 | /* End PBXProject section */ 304 | 305 | /* Begin PBXReferenceProxy section */ 306 | E4328148138ABC890047C5CB /* openFrameworksDebug.a */ = { 307 | isa = PBXReferenceProxy; 308 | fileType = archive.ar; 309 | path = openFrameworksDebug.a; 310 | remoteRef = E4328147138ABC890047C5CB /* PBXContainerItemProxy */; 311 | sourceTree = BUILT_PRODUCTS_DIR; 312 | }; 313 | /* End PBXReferenceProxy section */ 314 | 315 | /* Begin PBXShellScriptBuildPhase section */ 316 | E4B6FFFD0C3F9AB9008CF71C /* ShellScript */ = { 317 | isa = PBXShellScriptBuildPhase; 318 | buildActionMask = 2147483647; 319 | files = ( 320 | ); 321 | inputPaths = ( 322 | ); 323 | outputPaths = ( 324 | ); 325 | runOnlyForDeploymentPostprocessing = 0; 326 | shellPath = /bin/sh; 327 | shellScript = "rsync -aved ../../../libs/fmodex/lib/osx/libfmodex.dylib \"$TARGET_BUILD_DIR/$PRODUCT_NAME.app/Contents/MacOS/\"; install_name_tool -change ./libfmodex.dylib @executable_path/libfmodex.dylib \"$TARGET_BUILD_DIR/$PRODUCT_NAME.app/Contents/MacOS/$PRODUCT_NAME\";\nmkdir -p \"$TARGET_BUILD_DIR/$PRODUCT_NAME.app/Contents/Resources/\"\nrsync -aved \"$ICON_FILE\" \"$TARGET_BUILD_DIR/$PRODUCT_NAME.app/Contents/Resources/\"\nrsync -aved ../../../libs/glut/lib/osx/GLUT.framework \"$TARGET_BUILD_DIR/$PRODUCT_NAME.app/Contents/Frameworks/\"\n"; 328 | }; 329 | /* End PBXShellScriptBuildPhase section */ 330 | 331 | /* Begin PBXSourcesBuildPhase section */ 332 | E4B69B580A3A1756003C02F2 /* Sources */ = { 333 | isa = PBXSourcesBuildPhase; 334 | buildActionMask = 2147483647; 335 | files = ( 336 | 8A837D931C3F37730050A182 /* ofxParagraph.cpp in Sources */, 337 | E4B69E200A3A1BDC003C02F2 /* main.cpp in Sources */, 338 | E4B69E210A3A1BDC003C02F2 /* ofApp.cpp in Sources */, 339 | 8A97FA271C701FD400D50644 /* ofxModalWindow.cpp in Sources */, 340 | 8A46BB5A1C6EC9D800D48129 /* ofxDatGui.cpp in Sources */, 341 | 8A46BB591C6EC9D800D48129 /* ofxSmartFont.cpp in Sources */, 342 | 8A46BB581C6EC9D800D48129 /* ofxDatGuiComponent.cpp in Sources */, 343 | ); 344 | runOnlyForDeploymentPostprocessing = 0; 345 | }; 346 | /* End PBXSourcesBuildPhase section */ 347 | 348 | /* Begin PBXTargetDependency section */ 349 | E4EEB9AC138B136A00A80321 /* PBXTargetDependency */ = { 350 | isa = PBXTargetDependency; 351 | name = openFrameworks; 352 | targetProxy = E4EEB9AB138B136A00A80321 /* PBXContainerItemProxy */; 353 | }; 354 | /* End PBXTargetDependency section */ 355 | 356 | /* Begin XCBuildConfiguration section */ 357 | E4B69B4E0A3A1720003C02F2 /* Debug */ = { 358 | isa = XCBuildConfiguration; 359 | baseConfigurationReference = E4EB6923138AFD0F00A09F29 /* Project.xcconfig */; 360 | buildSettings = { 361 | CONFIGURATION_BUILD_DIR = "$(SRCROOT)/bin/"; 362 | COPY_PHASE_STRIP = NO; 363 | DEAD_CODE_STRIPPING = YES; 364 | GCC_AUTO_VECTORIZATION = YES; 365 | GCC_ENABLE_SSE3_EXTENSIONS = YES; 366 | GCC_ENABLE_SUPPLEMENTAL_SSE3_INSTRUCTIONS = YES; 367 | GCC_INLINES_ARE_PRIVATE_EXTERN = NO; 368 | GCC_OPTIMIZATION_LEVEL = 0; 369 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 370 | GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = YES; 371 | GCC_WARN_ABOUT_INVALID_OFFSETOF_MACRO = NO; 372 | GCC_WARN_ALLOW_INCOMPLETE_PROTOCOL = NO; 373 | GCC_WARN_UNINITIALIZED_AUTOS = NO; 374 | GCC_WARN_UNUSED_VALUE = NO; 375 | GCC_WARN_UNUSED_VARIABLE = NO; 376 | MACOSX_DEPLOYMENT_TARGET = 10.8; 377 | ONLY_ACTIVE_ARCH = YES; 378 | OTHER_CPLUSPLUSFLAGS = ( 379 | "-D__MACOSX_CORE__", 380 | "-mtune=native", 381 | ); 382 | SDKROOT = macosx; 383 | }; 384 | name = Debug; 385 | }; 386 | E4B69B4F0A3A1720003C02F2 /* Release */ = { 387 | isa = XCBuildConfiguration; 388 | baseConfigurationReference = E4EB6923138AFD0F00A09F29 /* Project.xcconfig */; 389 | buildSettings = { 390 | CONFIGURATION_BUILD_DIR = "$(SRCROOT)/bin/"; 391 | COPY_PHASE_STRIP = YES; 392 | DEAD_CODE_STRIPPING = YES; 393 | GCC_AUTO_VECTORIZATION = YES; 394 | GCC_ENABLE_SSE3_EXTENSIONS = YES; 395 | GCC_ENABLE_SUPPLEMENTAL_SSE3_INSTRUCTIONS = YES; 396 | GCC_INLINES_ARE_PRIVATE_EXTERN = NO; 397 | GCC_OPTIMIZATION_LEVEL = 3; 398 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 399 | GCC_UNROLL_LOOPS = YES; 400 | GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = YES; 401 | GCC_WARN_ABOUT_INVALID_OFFSETOF_MACRO = NO; 402 | GCC_WARN_ALLOW_INCOMPLETE_PROTOCOL = NO; 403 | GCC_WARN_UNINITIALIZED_AUTOS = NO; 404 | GCC_WARN_UNUSED_VALUE = NO; 405 | GCC_WARN_UNUSED_VARIABLE = NO; 406 | MACOSX_DEPLOYMENT_TARGET = 10.8; 407 | OTHER_CPLUSPLUSFLAGS = ( 408 | "-D__MACOSX_CORE__", 409 | "-mtune=native", 410 | ); 411 | SDKROOT = macosx; 412 | }; 413 | name = Release; 414 | }; 415 | E4B69B600A3A1757003C02F2 /* Debug */ = { 416 | isa = XCBuildConfiguration; 417 | baseConfigurationReference = E4EB6923138AFD0F00A09F29 /* Project.xcconfig */; 418 | buildSettings = { 419 | COMBINE_HIDPI_IMAGES = YES; 420 | COPY_PHASE_STRIP = NO; 421 | FRAMEWORK_SEARCH_PATHS = ( 422 | "$(inherited)", 423 | "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", 424 | ); 425 | FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/../../../libs/glut/lib/osx\""; 426 | GCC_DYNAMIC_NO_PIC = NO; 427 | GCC_GENERATE_DEBUGGING_SYMBOLS = YES; 428 | GCC_MODEL_TUNING = NONE; 429 | ICON = "$(ICON_NAME_DEBUG)"; 430 | ICON_FILE = "$(ICON_FILE_PATH)$(ICON)"; 431 | INFOPLIST_FILE = "openFrameworks-Info.plist"; 432 | INSTALL_PATH = "$(HOME)/Applications"; 433 | LIBRARY_SEARCH_PATHS = "$(inherited)"; 434 | PRODUCT_NAME = "$(TARGET_NAME)Debug"; 435 | WRAPPER_EXTENSION = app; 436 | }; 437 | name = Debug; 438 | }; 439 | E4B69B610A3A1757003C02F2 /* Release */ = { 440 | isa = XCBuildConfiguration; 441 | baseConfigurationReference = E4EB6923138AFD0F00A09F29 /* Project.xcconfig */; 442 | buildSettings = { 443 | COMBINE_HIDPI_IMAGES = YES; 444 | COPY_PHASE_STRIP = YES; 445 | FRAMEWORK_SEARCH_PATHS = ( 446 | "$(inherited)", 447 | "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", 448 | ); 449 | FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/../../../libs/glut/lib/osx\""; 450 | GCC_GENERATE_DEBUGGING_SYMBOLS = YES; 451 | GCC_MODEL_TUNING = NONE; 452 | ICON = "$(ICON_NAME_RELEASE)"; 453 | ICON_FILE = "$(ICON_FILE_PATH)$(ICON)"; 454 | INFOPLIST_FILE = "openFrameworks-Info.plist"; 455 | INSTALL_PATH = "$(HOME)/Applications"; 456 | LIBRARY_SEARCH_PATHS = "$(inherited)"; 457 | PRODUCT_NAME = "$(TARGET_NAME)"; 458 | WRAPPER_EXTENSION = app; 459 | baseConfigurationReference = E4EB6923138AFD0F00A09F29; 460 | }; 461 | name = Release; 462 | }; 463 | /* End XCBuildConfiguration section */ 464 | 465 | /* Begin XCConfigurationList section */ 466 | E4B69B4D0A3A1720003C02F2 /* Build configuration list for PBXProject "example-Confirm" */ = { 467 | isa = XCConfigurationList; 468 | buildConfigurations = ( 469 | E4B69B4E0A3A1720003C02F2 /* Debug */, 470 | E4B69B4F0A3A1720003C02F2 /* Release */, 471 | ); 472 | defaultConfigurationIsVisible = 0; 473 | defaultConfigurationName = Release; 474 | }; 475 | E4B69B5F0A3A1757003C02F2 /* Build configuration list for PBXNativeTarget "example-Confirm" */ = { 476 | isa = XCConfigurationList; 477 | buildConfigurations = ( 478 | E4B69B600A3A1757003C02F2 /* Debug */, 479 | E4B69B610A3A1757003C02F2 /* Release */, 480 | ); 481 | defaultConfigurationIsVisible = 0; 482 | defaultConfigurationName = Release; 483 | }; 484 | /* End XCConfigurationList section */ 485 | }; 486 | rootObject = E4B69B4C0A3A1720003C02F2 /* Project object */; 487 | } 488 | -------------------------------------------------------------------------------- /example-Confirm/example-Confirm.xcodeproj/xcshareddata/xcschemes/example-Confirm Debug.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 39 | 40 | 41 | 42 | 51 | 52 | 58 | 59 | 60 | 61 | 62 | 63 | 69 | 70 | 76 | 77 | 78 | 79 | 81 | 82 | 85 | 86 | 87 | -------------------------------------------------------------------------------- /example-Confirm/example-Confirm.xcodeproj/xcshareddata/xcschemes/example-Confirm Release.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 39 | 40 | 41 | 42 | 51 | 52 | 58 | 59 | 60 | 61 | 62 | 63 | 69 | 70 | 76 | 77 | 78 | 79 | 81 | 82 | 85 | 86 | 87 | -------------------------------------------------------------------------------- /example-Confirm/openFrameworks-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | cc.openFrameworks.ofapp 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundlePackageType 14 | APPL 15 | CFBundleSignature 16 | ???? 17 | CFBundleVersion 18 | 1.0 19 | CFBundleIconFile 20 | ${ICON} 21 | NSHighResolutionCapable 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /example-Confirm/src/main.cpp: -------------------------------------------------------------------------------- 1 | #include "ofMain.h" 2 | #include "ofApp.h" 3 | 4 | int main( ) 5 | { 6 | ofSetupOpenGL(1920, 1080, OF_WINDOW); 7 | ofRunApp(new ofApp()); 8 | } 9 | -------------------------------------------------------------------------------- /example-Confirm/src/ofApp.cpp: -------------------------------------------------------------------------------- 1 | #include "ofApp.h" 2 | 3 | void ofApp::setup() 4 | { 5 | ofSetWindowPosition(ofGetScreenWidth()/2 - ofGetWidth()/2, 0); 6 | 7 | // listen for events // 8 | confirm.addListener(this, &ofApp::onModalEvent); 9 | // confirm.setButtonLabel("ok"); 10 | 11 | // set a message and and show the modal // 12 | confirm.setMessage("press 'h' to hide this window, press 's' to show it."); 13 | confirm.show(); 14 | } 15 | 16 | void ofApp::keyPressed(int key) 17 | { 18 | if (key == 's'){ 19 | confirm.show(); 20 | } else if (key == 'h'){ 21 | confirm.hide(); 22 | } 23 | } 24 | 25 | void ofApp::onModalEvent(ofxModalEvent e) 26 | { 27 | if (e.type == ofxModalEvent::SHOWN){ 28 | cout << "modal window is open" << endl; 29 | } else if (e.type == ofxModalEvent::HIDDEN){ 30 | cout << "modal window is closed" << endl; 31 | } else if (e.type == ofxModalEvent::CANCEL){ 32 | cout << "cancel button was selected" << endl; 33 | } else if (e.type == ofxModalEvent::CONFIRM){ 34 | cout << "confirm button was selected" << endl; 35 | } 36 | } 37 | 38 | -------------------------------------------------------------------------------- /example-Confirm/src/ofApp.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "ofMain.h" 4 | #include "ofxModal.h" 5 | 6 | class ofApp : public ofBaseApp{ 7 | 8 | public: 9 | 10 | void setup(); 11 | void keyPressed(int key); 12 | 13 | ofxModalConfirm confirm; 14 | void onModalEvent(ofxModalEvent e); 15 | 16 | }; 17 | -------------------------------------------------------------------------------- /example-Login/Makefile: -------------------------------------------------------------------------------- 1 | # Attempt to load a config.make file. 2 | # If none is found, project defaults in config.project.make will be used. 3 | ifneq ($(wildcard config.make),) 4 | include config.make 5 | endif 6 | 7 | # make sure the the OF_ROOT location is defined 8 | ifndef OF_ROOT 9 | OF_ROOT=$(realpath ../../..) 10 | endif 11 | 12 | # call the project makefile! 13 | include $(OF_ROOT)/libs/openFrameworksCompiled/project/makefileCommon/compile.project.mk 14 | -------------------------------------------------------------------------------- /example-Login/Project.xcconfig: -------------------------------------------------------------------------------- 1 | //THE PATH TO THE ROOT OF OUR OF PATH RELATIVE TO THIS PROJECT. 2 | //THIS NEEDS TO BE DEFINED BEFORE CoreOF.xcconfig IS INCLUDED 3 | OF_PATH = ../../.. 4 | 5 | //THIS HAS ALL THE HEADER AND LIBS FOR OF CORE 6 | #include "../../../libs/openFrameworksCompiled/project/osx/CoreOF.xcconfig" 7 | 8 | //ICONS - NEW IN 0072 9 | ICON_NAME_DEBUG = icon-debug.icns 10 | ICON_NAME_RELEASE = icon.icns 11 | ICON_FILE_PATH = $(OF_PATH)/libs/openFrameworksCompiled/project/osx/ 12 | 13 | //IF YOU WANT AN APP TO HAVE A CUSTOM ICON - PUT THEM IN YOUR DATA FOLDER AND CHANGE ICON_FILE_PATH to: 14 | //ICON_FILE_PATH = bin/data/ 15 | 16 | OTHER_LDFLAGS = $(OF_CORE_LIBS) $(OF_CORE_FRAMEWORKS) 17 | HEADER_SEARCH_PATHS = $(OF_CORE_HEADERS) 18 | -------------------------------------------------------------------------------- /example-Login/addons.make: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/braitsch/ofxModal/71bfaa283407bbe58b921fd581d8665f21cf5eb8/example-Login/addons.make -------------------------------------------------------------------------------- /example-Login/bin/data/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/braitsch/ofxModal/71bfaa283407bbe58b921fd581d8665f21cf5eb8/example-Login/bin/data/.gitkeep -------------------------------------------------------------------------------- /example-Login/bin/data/ofxbraitsch/fonts/HelveticaNeueLTStd-Md.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/braitsch/ofxModal/71bfaa283407bbe58b921fd581d8665f21cf5eb8/example-Login/bin/data/ofxbraitsch/fonts/HelveticaNeueLTStd-Md.otf -------------------------------------------------------------------------------- /example-Login/bin/data/ofxbraitsch/fonts/Roboto-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/braitsch/ofxModal/71bfaa283407bbe58b921fd581d8665f21cf5eb8/example-Login/bin/data/ofxbraitsch/fonts/Roboto-Regular.ttf -------------------------------------------------------------------------------- /example-Login/bin/data/ofxbraitsch/fonts/Verdana.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/braitsch/ofxModal/71bfaa283407bbe58b921fd581d8665f21cf5eb8/example-Login/bin/data/ofxbraitsch/fonts/Verdana.ttf -------------------------------------------------------------------------------- /example-Login/bin/data/ofxbraitsch/ofxdatgui/icon-group-closed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/braitsch/ofxModal/71bfaa283407bbe58b921fd581d8665f21cf5eb8/example-Login/bin/data/ofxbraitsch/ofxdatgui/icon-group-closed.png -------------------------------------------------------------------------------- /example-Login/bin/data/ofxbraitsch/ofxdatgui/icon-group-open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/braitsch/ofxModal/71bfaa283407bbe58b921fd581d8665f21cf5eb8/example-Login/bin/data/ofxbraitsch/ofxdatgui/icon-group-open.png -------------------------------------------------------------------------------- /example-Login/bin/data/ofxbraitsch/ofxdatgui/icon-radio-off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/braitsch/ofxModal/71bfaa283407bbe58b921fd581d8665f21cf5eb8/example-Login/bin/data/ofxbraitsch/ofxdatgui/icon-radio-off.png -------------------------------------------------------------------------------- /example-Login/bin/data/ofxbraitsch/ofxdatgui/icon-radio-on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/braitsch/ofxModal/71bfaa283407bbe58b921fd581d8665f21cf5eb8/example-Login/bin/data/ofxbraitsch/ofxdatgui/icon-radio-on.png -------------------------------------------------------------------------------- /example-Login/bin/data/ofxbraitsch/ofxdatgui/picker-rainbow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/braitsch/ofxModal/71bfaa283407bbe58b921fd581d8665f21cf5eb8/example-Login/bin/data/ofxbraitsch/ofxdatgui/picker-rainbow.png -------------------------------------------------------------------------------- /example-Login/bin/data/ofxbraitsch/ofxmodal/modal-buttonX-hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/braitsch/ofxModal/71bfaa283407bbe58b921fd581d8665f21cf5eb8/example-Login/bin/data/ofxbraitsch/ofxmodal/modal-buttonX-hover.png -------------------------------------------------------------------------------- /example-Login/bin/data/ofxbraitsch/ofxmodal/modal-buttonX.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/braitsch/ofxModal/71bfaa283407bbe58b921fd581d8665f21cf5eb8/example-Login/bin/data/ofxbraitsch/ofxmodal/modal-buttonX.png -------------------------------------------------------------------------------- /example-Login/config.make: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # CONFIGURE PROJECT MAKEFILE (optional) 3 | # This file is where we make project specific configurations. 4 | ################################################################################ 5 | 6 | ################################################################################ 7 | # OF ROOT 8 | # The location of your root openFrameworks installation 9 | # (default) OF_ROOT = ../../.. 10 | ################################################################################ 11 | # OF_ROOT = ../../.. 12 | 13 | ################################################################################ 14 | # PROJECT ROOT 15 | # The location of the project - a starting place for searching for files 16 | # (default) PROJECT_ROOT = . (this directory) 17 | # 18 | ################################################################################ 19 | # PROJECT_ROOT = . 20 | 21 | ################################################################################ 22 | # PROJECT SPECIFIC CHECKS 23 | # This is a project defined section to create internal makefile flags to 24 | # conditionally enable or disable the addition of various features within 25 | # this makefile. For instance, if you want to make changes based on whether 26 | # GTK is installed, one might test that here and create a variable to check. 27 | ################################################################################ 28 | # None 29 | 30 | ################################################################################ 31 | # PROJECT EXTERNAL SOURCE PATHS 32 | # These are fully qualified paths that are not within the PROJECT_ROOT folder. 33 | # Like source folders in the PROJECT_ROOT, these paths are subject to 34 | # exlclusion via the PROJECT_EXLCUSIONS list. 35 | # 36 | # (default) PROJECT_EXTERNAL_SOURCE_PATHS = (blank) 37 | # 38 | # Note: Leave a leading space when adding list items with the += operator 39 | ################################################################################ 40 | # PROJECT_EXTERNAL_SOURCE_PATHS = 41 | 42 | ################################################################################ 43 | # PROJECT EXCLUSIONS 44 | # These makefiles assume that all folders in your current project directory 45 | # and any listed in the PROJECT_EXTERNAL_SOURCH_PATHS are are valid locations 46 | # to look for source code. The any folders or files that match any of the 47 | # items in the PROJECT_EXCLUSIONS list below will be ignored. 48 | # 49 | # Each item in the PROJECT_EXCLUSIONS list will be treated as a complete 50 | # string unless teh user adds a wildcard (%) operator to match subdirectories. 51 | # GNU make only allows one wildcard for matching. The second wildcard (%) is 52 | # treated literally. 53 | # 54 | # (default) PROJECT_EXCLUSIONS = (blank) 55 | # 56 | # Will automatically exclude the following: 57 | # 58 | # $(PROJECT_ROOT)/bin% 59 | # $(PROJECT_ROOT)/obj% 60 | # $(PROJECT_ROOT)/%.xcodeproj 61 | # 62 | # Note: Leave a leading space when adding list items with the += operator 63 | ################################################################################ 64 | # PROJECT_EXCLUSIONS = 65 | 66 | ################################################################################ 67 | # PROJECT LINKER FLAGS 68 | # These flags will be sent to the linker when compiling the executable. 69 | # 70 | # (default) PROJECT_LDFLAGS = -Wl,-rpath=./libs 71 | # 72 | # Note: Leave a leading space when adding list items with the += operator 73 | ################################################################################ 74 | 75 | # Currently, shared libraries that are needed are copied to the 76 | # $(PROJECT_ROOT)/bin/libs directory. The following LDFLAGS tell the linker to 77 | # add a runtime path to search for those shared libraries, since they aren't 78 | # incorporated directly into the final executable application binary. 79 | # TODO: should this be a default setting? 80 | # PROJECT_LDFLAGS=-Wl,-rpath=./libs 81 | 82 | ################################################################################ 83 | # PROJECT DEFINES 84 | # Create a space-delimited list of DEFINES. The list will be converted into 85 | # CFLAGS with the "-D" flag later in the makefile. 86 | # 87 | # (default) PROJECT_DEFINES = (blank) 88 | # 89 | # Note: Leave a leading space when adding list items with the += operator 90 | ################################################################################ 91 | # PROJECT_DEFINES = 92 | 93 | ################################################################################ 94 | # PROJECT CFLAGS 95 | # This is a list of fully qualified CFLAGS required when compiling for this 96 | # project. These CFLAGS will be used IN ADDITION TO the PLATFORM_CFLAGS 97 | # defined in your platform specific core configuration files. These flags are 98 | # presented to the compiler BEFORE the PROJECT_OPTIMIZATION_CFLAGS below. 99 | # 100 | # (default) PROJECT_CFLAGS = (blank) 101 | # 102 | # Note: Before adding PROJECT_CFLAGS, note that the PLATFORM_CFLAGS defined in 103 | # your platform specific configuration file will be applied by default and 104 | # further flags here may not be needed. 105 | # 106 | # Note: Leave a leading space when adding list items with the += operator 107 | ################################################################################ 108 | # PROJECT_CFLAGS = 109 | 110 | ################################################################################ 111 | # PROJECT OPTIMIZATION CFLAGS 112 | # These are lists of CFLAGS that are target-specific. While any flags could 113 | # be conditionally added, they are usually limited to optimization flags. 114 | # These flags are added BEFORE the PROJECT_CFLAGS. 115 | # 116 | # PROJECT_OPTIMIZATION_CFLAGS_RELEASE flags are only applied to RELEASE targets. 117 | # 118 | # (default) PROJECT_OPTIMIZATION_CFLAGS_RELEASE = (blank) 119 | # 120 | # PROJECT_OPTIMIZATION_CFLAGS_DEBUG flags are only applied to DEBUG targets. 121 | # 122 | # (default) PROJECT_OPTIMIZATION_CFLAGS_DEBUG = (blank) 123 | # 124 | # Note: Before adding PROJECT_OPTIMIZATION_CFLAGS, please note that the 125 | # PLATFORM_OPTIMIZATION_CFLAGS defined in your platform specific configuration 126 | # file will be applied by default and further optimization flags here may not 127 | # be needed. 128 | # 129 | # Note: Leave a leading space when adding list items with the += operator 130 | ################################################################################ 131 | # PROJECT_OPTIMIZATION_CFLAGS_RELEASE = 132 | # PROJECT_OPTIMIZATION_CFLAGS_DEBUG = 133 | 134 | ################################################################################ 135 | # PROJECT COMPILERS 136 | # Custom compilers can be set for CC and CXX 137 | # (default) PROJECT_CXX = (blank) 138 | # (default) PROJECT_CC = (blank) 139 | # Note: Leave a leading space when adding list items with the += operator 140 | ################################################################################ 141 | # PROJECT_CXX = 142 | # PROJECT_CC = 143 | -------------------------------------------------------------------------------- /example-Login/example-Login.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 8A8A29AF1C724D5300268543 /* ofxDatGuiComponent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A8A29A11C724D5300268543 /* ofxDatGuiComponent.cpp */; }; 11 | 8A8A29B01C724D5300268543 /* ofxSmartFont.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A8A29A81C724D5300268543 /* ofxSmartFont.cpp */; }; 12 | 8A8A29B11C724D5300268543 /* ofxDatGui.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A8A29AA1C724D5300268543 /* ofxDatGui.cpp */; }; 13 | 8A8A29E01C724D6A00268543 /* ofxParagraph.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A8A29DE1C724D6A00268543 /* ofxParagraph.cpp */; }; 14 | 8A8A29E81C724D7500268543 /* ofxModalWindow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A8A29E61C724D7500268543 /* ofxModalWindow.cpp */; }; 15 | E4328149138ABC9F0047C5CB /* openFrameworksDebug.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E4328148138ABC890047C5CB /* openFrameworksDebug.a */; }; 16 | E4B69E200A3A1BDC003C02F2 /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E4B69E1D0A3A1BDC003C02F2 /* main.cpp */; }; 17 | E4B69E210A3A1BDC003C02F2 /* ofApp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E4B69E1E0A3A1BDC003C02F2 /* ofApp.cpp */; }; 18 | /* End PBXBuildFile section */ 19 | 20 | /* Begin PBXContainerItemProxy section */ 21 | E4328147138ABC890047C5CB /* PBXContainerItemProxy */ = { 22 | isa = PBXContainerItemProxy; 23 | containerPortal = E4328143138ABC890047C5CB /* openFrameworksLib.xcodeproj */; 24 | proxyType = 2; 25 | remoteGlobalIDString = E4B27C1510CBEB8E00536013; 26 | remoteInfo = openFrameworks; 27 | }; 28 | E4EEB9AB138B136A00A80321 /* PBXContainerItemProxy */ = { 29 | isa = PBXContainerItemProxy; 30 | containerPortal = E4328143138ABC890047C5CB /* openFrameworksLib.xcodeproj */; 31 | proxyType = 1; 32 | remoteGlobalIDString = E4B27C1410CBEB8E00536013; 33 | remoteInfo = openFrameworks; 34 | }; 35 | /* End PBXContainerItemProxy section */ 36 | 37 | /* Begin PBXCopyFilesBuildPhase section */ 38 | E4C2427710CC5ABF004149E2 /* CopyFiles */ = { 39 | isa = PBXCopyFilesBuildPhase; 40 | buildActionMask = 2147483647; 41 | dstPath = ""; 42 | dstSubfolderSpec = 10; 43 | files = ( 44 | ); 45 | runOnlyForDeploymentPostprocessing = 0; 46 | }; 47 | /* End PBXCopyFilesBuildPhase section */ 48 | 49 | /* Begin PBXFileReference section */ 50 | 8A8A29931C724D5300268543 /* ofxDatGui2dPad.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxDatGui2dPad.h; sourceTree = ""; }; 51 | 8A8A29941C724D5300268543 /* ofxDatGuiButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxDatGuiButton.h; sourceTree = ""; }; 52 | 8A8A29951C724D5300268543 /* ofxDatGuiColorPicker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxDatGuiColorPicker.h; sourceTree = ""; }; 53 | 8A8A29961C724D5300268543 /* ofxDatGuiControls.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxDatGuiControls.h; sourceTree = ""; }; 54 | 8A8A29971C724D5300268543 /* ofxDatGuiFRM.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxDatGuiFRM.h; sourceTree = ""; }; 55 | 8A8A29981C724D5300268543 /* ofxDatGuiGroups.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxDatGuiGroups.h; sourceTree = ""; }; 56 | 8A8A29991C724D5300268543 /* ofxDatGuiLabel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxDatGuiLabel.h; sourceTree = ""; }; 57 | 8A8A299A1C724D5300268543 /* ofxDatGuiMatrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxDatGuiMatrix.h; sourceTree = ""; }; 58 | 8A8A299B1C724D5300268543 /* ofxDatGuiScrollView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxDatGuiScrollView.h; sourceTree = ""; }; 59 | 8A8A299C1C724D5300268543 /* ofxDatGuiSlider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxDatGuiSlider.h; sourceTree = ""; }; 60 | 8A8A299D1C724D5300268543 /* ofxDatGuiTextInput.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxDatGuiTextInput.h; sourceTree = ""; }; 61 | 8A8A299E1C724D5300268543 /* ofxDatGuiTextInputField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxDatGuiTextInputField.h; sourceTree = ""; }; 62 | 8A8A299F1C724D5300268543 /* ofxDatGuiTimeGraph.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxDatGuiTimeGraph.h; sourceTree = ""; }; 63 | 8A8A29A11C724D5300268543 /* ofxDatGuiComponent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ofxDatGuiComponent.cpp; sourceTree = ""; }; 64 | 8A8A29A21C724D5300268543 /* ofxDatGuiComponent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxDatGuiComponent.h; sourceTree = ""; }; 65 | 8A8A29A31C724D5300268543 /* ofxDatGuiConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxDatGuiConstants.h; sourceTree = ""; }; 66 | 8A8A29A41C724D5300268543 /* ofxDatGuiEvents.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxDatGuiEvents.h; sourceTree = ""; }; 67 | 8A8A29A51C724D5300268543 /* ofxDatGuiIntObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxDatGuiIntObject.h; sourceTree = ""; }; 68 | 8A8A29A81C724D5300268543 /* ofxSmartFont.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ofxSmartFont.cpp; sourceTree = ""; }; 69 | 8A8A29A91C724D5300268543 /* ofxSmartFont.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxSmartFont.h; sourceTree = ""; }; 70 | 8A8A29AA1C724D5300268543 /* ofxDatGui.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ofxDatGui.cpp; sourceTree = ""; }; 71 | 8A8A29AB1C724D5300268543 /* ofxDatGui.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxDatGui.h; sourceTree = ""; }; 72 | 8A8A29AD1C724D5300268543 /* ofxDatGuiTheme.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxDatGuiTheme.h; sourceTree = ""; }; 73 | 8A8A29AE1C724D5300268543 /* ofxDatGuiThemes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxDatGuiThemes.h; sourceTree = ""; }; 74 | 8A8A29DE1C724D6A00268543 /* ofxParagraph.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ofxParagraph.cpp; sourceTree = ""; }; 75 | 8A8A29DF1C724D6A00268543 /* ofxParagraph.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxParagraph.h; sourceTree = ""; }; 76 | 8A8A29E21C724D7500268543 /* ofxModal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxModal.h; sourceTree = ""; }; 77 | 8A8A29E31C724D7500268543 /* ofxModalConfirm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxModalConfirm.h; sourceTree = ""; }; 78 | 8A8A29E41C724D7500268543 /* ofxModalEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxModalEvent.h; sourceTree = ""; }; 79 | 8A8A29E51C724D7500268543 /* ofxModalTheme.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxModalTheme.h; sourceTree = ""; }; 80 | 8A8A29E61C724D7500268543 /* ofxModalWindow.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ofxModalWindow.cpp; sourceTree = ""; }; 81 | 8A8A29E71C724D7500268543 /* ofxModalWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxModalWindow.h; sourceTree = ""; }; 82 | 8A8A29ED1C72581200268543 /* ModalLogin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ModalLogin.h; sourceTree = ""; }; 83 | E4328143138ABC890047C5CB /* openFrameworksLib.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = openFrameworksLib.xcodeproj; path = ../../../libs/openFrameworksCompiled/project/osx/openFrameworksLib.xcodeproj; sourceTree = SOURCE_ROOT; }; 84 | E4B69B5B0A3A1756003C02F2 /* example-LoginDebug.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "example-LoginDebug.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 85 | E4B69E1D0A3A1BDC003C02F2 /* main.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = main.cpp; path = src/main.cpp; sourceTree = SOURCE_ROOT; }; 86 | E4B69E1E0A3A1BDC003C02F2 /* ofApp.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 30; name = ofApp.cpp; path = src/ofApp.cpp; sourceTree = SOURCE_ROOT; }; 87 | E4B69E1F0A3A1BDC003C02F2 /* ofApp.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ofApp.h; path = src/ofApp.h; sourceTree = SOURCE_ROOT; }; 88 | E4B6FCAD0C3E899E008CF71C /* openFrameworks-Info.plist */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.xml; path = "openFrameworks-Info.plist"; sourceTree = ""; }; 89 | E4EB691F138AFCF100A09F29 /* CoreOF.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = CoreOF.xcconfig; path = ../../../libs/openFrameworksCompiled/project/osx/CoreOF.xcconfig; sourceTree = SOURCE_ROOT; }; 90 | E4EB6923138AFD0F00A09F29 /* Project.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Project.xcconfig; sourceTree = ""; }; 91 | /* End PBXFileReference section */ 92 | 93 | /* Begin PBXFrameworksBuildPhase section */ 94 | E4B69B590A3A1756003C02F2 /* Frameworks */ = { 95 | isa = PBXFrameworksBuildPhase; 96 | buildActionMask = 2147483647; 97 | files = ( 98 | E4328149138ABC9F0047C5CB /* openFrameworksDebug.a in Frameworks */, 99 | ); 100 | runOnlyForDeploymentPostprocessing = 0; 101 | }; 102 | /* End PBXFrameworksBuildPhase section */ 103 | 104 | /* Begin PBXGroup section */ 105 | 8A8A29911C724D5300268543 /* ofxDatGui */ = { 106 | isa = PBXGroup; 107 | children = ( 108 | 8A8A29921C724D5300268543 /* components */, 109 | 8A8A29A01C724D5300268543 /* core */, 110 | 8A8A29A61C724D5300268543 /* libs */, 111 | 8A8A29AA1C724D5300268543 /* ofxDatGui.cpp */, 112 | 8A8A29AB1C724D5300268543 /* ofxDatGui.h */, 113 | 8A8A29AC1C724D5300268543 /* themes */, 114 | ); 115 | name = ofxDatGui; 116 | path = ../modules/ofxDatGui/src; 117 | sourceTree = ""; 118 | }; 119 | 8A8A29921C724D5300268543 /* components */ = { 120 | isa = PBXGroup; 121 | children = ( 122 | 8A8A29931C724D5300268543 /* ofxDatGui2dPad.h */, 123 | 8A8A29941C724D5300268543 /* ofxDatGuiButton.h */, 124 | 8A8A29951C724D5300268543 /* ofxDatGuiColorPicker.h */, 125 | 8A8A29961C724D5300268543 /* ofxDatGuiControls.h */, 126 | 8A8A29971C724D5300268543 /* ofxDatGuiFRM.h */, 127 | 8A8A29981C724D5300268543 /* ofxDatGuiGroups.h */, 128 | 8A8A29991C724D5300268543 /* ofxDatGuiLabel.h */, 129 | 8A8A299A1C724D5300268543 /* ofxDatGuiMatrix.h */, 130 | 8A8A299B1C724D5300268543 /* ofxDatGuiScrollView.h */, 131 | 8A8A299C1C724D5300268543 /* ofxDatGuiSlider.h */, 132 | 8A8A299D1C724D5300268543 /* ofxDatGuiTextInput.h */, 133 | 8A8A299E1C724D5300268543 /* ofxDatGuiTextInputField.h */, 134 | 8A8A299F1C724D5300268543 /* ofxDatGuiTimeGraph.h */, 135 | ); 136 | path = components; 137 | sourceTree = ""; 138 | }; 139 | 8A8A29A01C724D5300268543 /* core */ = { 140 | isa = PBXGroup; 141 | children = ( 142 | 8A8A29A11C724D5300268543 /* ofxDatGuiComponent.cpp */, 143 | 8A8A29A21C724D5300268543 /* ofxDatGuiComponent.h */, 144 | 8A8A29A31C724D5300268543 /* ofxDatGuiConstants.h */, 145 | 8A8A29A41C724D5300268543 /* ofxDatGuiEvents.h */, 146 | 8A8A29A51C724D5300268543 /* ofxDatGuiIntObject.h */, 147 | ); 148 | path = core; 149 | sourceTree = ""; 150 | }; 151 | 8A8A29A61C724D5300268543 /* libs */ = { 152 | isa = PBXGroup; 153 | children = ( 154 | 8A8A29A71C724D5300268543 /* ofxSmartFont */, 155 | ); 156 | path = libs; 157 | sourceTree = ""; 158 | }; 159 | 8A8A29A71C724D5300268543 /* ofxSmartFont */ = { 160 | isa = PBXGroup; 161 | children = ( 162 | 8A8A29A81C724D5300268543 /* ofxSmartFont.cpp */, 163 | 8A8A29A91C724D5300268543 /* ofxSmartFont.h */, 164 | ); 165 | path = ofxSmartFont; 166 | sourceTree = ""; 167 | }; 168 | 8A8A29AC1C724D5300268543 /* themes */ = { 169 | isa = PBXGroup; 170 | children = ( 171 | 8A8A29AD1C724D5300268543 /* ofxDatGuiTheme.h */, 172 | 8A8A29AE1C724D5300268543 /* ofxDatGuiThemes.h */, 173 | ); 174 | path = themes; 175 | sourceTree = ""; 176 | }; 177 | 8A8A29DD1C724D6A00268543 /* ofxParagraph */ = { 178 | isa = PBXGroup; 179 | children = ( 180 | 8A8A29DE1C724D6A00268543 /* ofxParagraph.cpp */, 181 | 8A8A29DF1C724D6A00268543 /* ofxParagraph.h */, 182 | ); 183 | name = ofxParagraph; 184 | path = ../modules/ofxParagraph/src; 185 | sourceTree = ""; 186 | }; 187 | 8A8A29E11C724D7500268543 /* ofxModal */ = { 188 | isa = PBXGroup; 189 | children = ( 190 | 8A8A29E21C724D7500268543 /* ofxModal.h */, 191 | 8A8A29E31C724D7500268543 /* ofxModalConfirm.h */, 192 | 8A8A29E41C724D7500268543 /* ofxModalEvent.h */, 193 | 8A8A29E51C724D7500268543 /* ofxModalTheme.h */, 194 | 8A8A29E61C724D7500268543 /* ofxModalWindow.cpp */, 195 | 8A8A29E71C724D7500268543 /* ofxModalWindow.h */, 196 | ); 197 | name = ofxModal; 198 | path = ../src; 199 | sourceTree = ""; 200 | }; 201 | BB4B014C10F69532006C3DED /* addons */ = { 202 | isa = PBXGroup; 203 | children = ( 204 | 8A8A29E11C724D7500268543 /* ofxModal */, 205 | 8A8A29DD1C724D6A00268543 /* ofxParagraph */, 206 | 8A8A29911C724D5300268543 /* ofxDatGui */, 207 | ); 208 | name = addons; 209 | sourceTree = ""; 210 | }; 211 | E4328144138ABC890047C5CB /* Products */ = { 212 | isa = PBXGroup; 213 | children = ( 214 | E4328148138ABC890047C5CB /* openFrameworksDebug.a */, 215 | ); 216 | name = Products; 217 | sourceTree = ""; 218 | }; 219 | E4B69B4A0A3A1720003C02F2 = { 220 | isa = PBXGroup; 221 | children = ( 222 | E4B6FCAD0C3E899E008CF71C /* openFrameworks-Info.plist */, 223 | E4EB6923138AFD0F00A09F29 /* Project.xcconfig */, 224 | E4B69E1C0A3A1BDC003C02F2 /* src */, 225 | E4EEC9E9138DF44700A80321 /* openFrameworks */, 226 | BB4B014C10F69532006C3DED /* addons */, 227 | E4B69B5B0A3A1756003C02F2 /* example-LoginDebug.app */, 228 | ); 229 | sourceTree = ""; 230 | }; 231 | E4B69E1C0A3A1BDC003C02F2 /* src */ = { 232 | isa = PBXGroup; 233 | children = ( 234 | E4B69E1D0A3A1BDC003C02F2 /* main.cpp */, 235 | E4B69E1E0A3A1BDC003C02F2 /* ofApp.cpp */, 236 | E4B69E1F0A3A1BDC003C02F2 /* ofApp.h */, 237 | 8A8A29ED1C72581200268543 /* ModalLogin.h */, 238 | ); 239 | path = src; 240 | sourceTree = SOURCE_ROOT; 241 | }; 242 | E4EEC9E9138DF44700A80321 /* openFrameworks */ = { 243 | isa = PBXGroup; 244 | children = ( 245 | E4EB691F138AFCF100A09F29 /* CoreOF.xcconfig */, 246 | E4328143138ABC890047C5CB /* openFrameworksLib.xcodeproj */, 247 | ); 248 | name = openFrameworks; 249 | sourceTree = ""; 250 | }; 251 | /* End PBXGroup section */ 252 | 253 | /* Begin PBXNativeTarget section */ 254 | E4B69B5A0A3A1756003C02F2 /* example-Login */ = { 255 | isa = PBXNativeTarget; 256 | buildConfigurationList = E4B69B5F0A3A1757003C02F2 /* Build configuration list for PBXNativeTarget "example-Login" */; 257 | buildPhases = ( 258 | E4B69B580A3A1756003C02F2 /* Sources */, 259 | E4B69B590A3A1756003C02F2 /* Frameworks */, 260 | E4B6FFFD0C3F9AB9008CF71C /* ShellScript */, 261 | E4C2427710CC5ABF004149E2 /* CopyFiles */, 262 | ); 263 | buildRules = ( 264 | ); 265 | dependencies = ( 266 | E4EEB9AC138B136A00A80321 /* PBXTargetDependency */, 267 | ); 268 | name = "example-Login"; 269 | productName = myOFApp; 270 | productReference = E4B69B5B0A3A1756003C02F2 /* example-LoginDebug.app */; 271 | productType = "com.apple.product-type.application"; 272 | }; 273 | /* End PBXNativeTarget section */ 274 | 275 | /* Begin PBXProject section */ 276 | E4B69B4C0A3A1720003C02F2 /* Project object */ = { 277 | isa = PBXProject; 278 | attributes = { 279 | LastUpgradeCheck = 0600; 280 | }; 281 | buildConfigurationList = E4B69B4D0A3A1720003C02F2 /* Build configuration list for PBXProject "example-Login" */; 282 | compatibilityVersion = "Xcode 3.2"; 283 | developmentRegion = English; 284 | hasScannedForEncodings = 0; 285 | knownRegions = ( 286 | English, 287 | Japanese, 288 | French, 289 | German, 290 | ); 291 | mainGroup = E4B69B4A0A3A1720003C02F2; 292 | productRefGroup = E4B69B4A0A3A1720003C02F2; 293 | projectDirPath = ""; 294 | projectReferences = ( 295 | { 296 | ProductGroup = E4328144138ABC890047C5CB /* Products */; 297 | ProjectRef = E4328143138ABC890047C5CB /* openFrameworksLib.xcodeproj */; 298 | }, 299 | ); 300 | projectRoot = ""; 301 | targets = ( 302 | E4B69B5A0A3A1756003C02F2 /* example-Login */, 303 | ); 304 | }; 305 | /* End PBXProject section */ 306 | 307 | /* Begin PBXReferenceProxy section */ 308 | E4328148138ABC890047C5CB /* openFrameworksDebug.a */ = { 309 | isa = PBXReferenceProxy; 310 | fileType = archive.ar; 311 | path = openFrameworksDebug.a; 312 | remoteRef = E4328147138ABC890047C5CB /* PBXContainerItemProxy */; 313 | sourceTree = BUILT_PRODUCTS_DIR; 314 | }; 315 | /* End PBXReferenceProxy section */ 316 | 317 | /* Begin PBXShellScriptBuildPhase section */ 318 | E4B6FFFD0C3F9AB9008CF71C /* ShellScript */ = { 319 | isa = PBXShellScriptBuildPhase; 320 | buildActionMask = 2147483647; 321 | files = ( 322 | ); 323 | inputPaths = ( 324 | ); 325 | outputPaths = ( 326 | ); 327 | runOnlyForDeploymentPostprocessing = 0; 328 | shellPath = /bin/sh; 329 | shellScript = "rsync -aved ../../../libs/fmodex/lib/osx/libfmodex.dylib \"$TARGET_BUILD_DIR/$PRODUCT_NAME.app/Contents/MacOS/\"; install_name_tool -change ./libfmodex.dylib @executable_path/libfmodex.dylib \"$TARGET_BUILD_DIR/$PRODUCT_NAME.app/Contents/MacOS/$PRODUCT_NAME\";\nmkdir -p \"$TARGET_BUILD_DIR/$PRODUCT_NAME.app/Contents/Resources/\"\nrsync -aved \"$ICON_FILE\" \"$TARGET_BUILD_DIR/$PRODUCT_NAME.app/Contents/Resources/\"\nrsync -aved ../../../libs/glut/lib/osx/GLUT.framework \"$TARGET_BUILD_DIR/$PRODUCT_NAME.app/Contents/Frameworks/\"\n"; 330 | }; 331 | /* End PBXShellScriptBuildPhase section */ 332 | 333 | /* Begin PBXSourcesBuildPhase section */ 334 | E4B69B580A3A1756003C02F2 /* Sources */ = { 335 | isa = PBXSourcesBuildPhase; 336 | buildActionMask = 2147483647; 337 | files = ( 338 | 8A8A29E01C724D6A00268543 /* ofxParagraph.cpp in Sources */, 339 | 8A8A29B11C724D5300268543 /* ofxDatGui.cpp in Sources */, 340 | 8A8A29B01C724D5300268543 /* ofxSmartFont.cpp in Sources */, 341 | 8A8A29E81C724D7500268543 /* ofxModalWindow.cpp in Sources */, 342 | E4B69E200A3A1BDC003C02F2 /* main.cpp in Sources */, 343 | E4B69E210A3A1BDC003C02F2 /* ofApp.cpp in Sources */, 344 | 8A8A29AF1C724D5300268543 /* ofxDatGuiComponent.cpp in Sources */, 345 | ); 346 | runOnlyForDeploymentPostprocessing = 0; 347 | }; 348 | /* End PBXSourcesBuildPhase section */ 349 | 350 | /* Begin PBXTargetDependency section */ 351 | E4EEB9AC138B136A00A80321 /* PBXTargetDependency */ = { 352 | isa = PBXTargetDependency; 353 | name = openFrameworks; 354 | targetProxy = E4EEB9AB138B136A00A80321 /* PBXContainerItemProxy */; 355 | }; 356 | /* End PBXTargetDependency section */ 357 | 358 | /* Begin XCBuildConfiguration section */ 359 | E4B69B4E0A3A1720003C02F2 /* Debug */ = { 360 | isa = XCBuildConfiguration; 361 | baseConfigurationReference = E4EB6923138AFD0F00A09F29 /* Project.xcconfig */; 362 | buildSettings = { 363 | CONFIGURATION_BUILD_DIR = "$(SRCROOT)/bin/"; 364 | COPY_PHASE_STRIP = NO; 365 | DEAD_CODE_STRIPPING = YES; 366 | GCC_AUTO_VECTORIZATION = YES; 367 | GCC_ENABLE_SSE3_EXTENSIONS = YES; 368 | GCC_ENABLE_SUPPLEMENTAL_SSE3_INSTRUCTIONS = YES; 369 | GCC_INLINES_ARE_PRIVATE_EXTERN = NO; 370 | GCC_OPTIMIZATION_LEVEL = 0; 371 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 372 | GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = YES; 373 | GCC_WARN_ABOUT_INVALID_OFFSETOF_MACRO = NO; 374 | GCC_WARN_ALLOW_INCOMPLETE_PROTOCOL = NO; 375 | GCC_WARN_UNINITIALIZED_AUTOS = NO; 376 | GCC_WARN_UNUSED_VALUE = NO; 377 | GCC_WARN_UNUSED_VARIABLE = NO; 378 | MACOSX_DEPLOYMENT_TARGET = 10.8; 379 | ONLY_ACTIVE_ARCH = YES; 380 | OTHER_CPLUSPLUSFLAGS = ( 381 | "-D__MACOSX_CORE__", 382 | "-mtune=native", 383 | ); 384 | SDKROOT = macosx; 385 | }; 386 | name = Debug; 387 | }; 388 | E4B69B4F0A3A1720003C02F2 /* Release */ = { 389 | isa = XCBuildConfiguration; 390 | baseConfigurationReference = E4EB6923138AFD0F00A09F29 /* Project.xcconfig */; 391 | buildSettings = { 392 | CONFIGURATION_BUILD_DIR = "$(SRCROOT)/bin/"; 393 | COPY_PHASE_STRIP = YES; 394 | DEAD_CODE_STRIPPING = YES; 395 | GCC_AUTO_VECTORIZATION = YES; 396 | GCC_ENABLE_SSE3_EXTENSIONS = YES; 397 | GCC_ENABLE_SUPPLEMENTAL_SSE3_INSTRUCTIONS = YES; 398 | GCC_INLINES_ARE_PRIVATE_EXTERN = NO; 399 | GCC_OPTIMIZATION_LEVEL = 3; 400 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 401 | GCC_UNROLL_LOOPS = YES; 402 | GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = YES; 403 | GCC_WARN_ABOUT_INVALID_OFFSETOF_MACRO = NO; 404 | GCC_WARN_ALLOW_INCOMPLETE_PROTOCOL = NO; 405 | GCC_WARN_UNINITIALIZED_AUTOS = NO; 406 | GCC_WARN_UNUSED_VALUE = NO; 407 | GCC_WARN_UNUSED_VARIABLE = NO; 408 | MACOSX_DEPLOYMENT_TARGET = 10.8; 409 | OTHER_CPLUSPLUSFLAGS = ( 410 | "-D__MACOSX_CORE__", 411 | "-mtune=native", 412 | ); 413 | SDKROOT = macosx; 414 | }; 415 | name = Release; 416 | }; 417 | E4B69B600A3A1757003C02F2 /* Debug */ = { 418 | isa = XCBuildConfiguration; 419 | baseConfigurationReference = E4EB6923138AFD0F00A09F29 /* Project.xcconfig */; 420 | buildSettings = { 421 | COMBINE_HIDPI_IMAGES = YES; 422 | COPY_PHASE_STRIP = NO; 423 | FRAMEWORK_SEARCH_PATHS = ( 424 | "$(inherited)", 425 | "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", 426 | ); 427 | FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/../../../libs/glut/lib/osx\""; 428 | GCC_DYNAMIC_NO_PIC = NO; 429 | GCC_GENERATE_DEBUGGING_SYMBOLS = YES; 430 | GCC_MODEL_TUNING = NONE; 431 | ICON = "$(ICON_NAME_DEBUG)"; 432 | ICON_FILE = "$(ICON_FILE_PATH)$(ICON)"; 433 | INFOPLIST_FILE = "openFrameworks-Info.plist"; 434 | INSTALL_PATH = "$(HOME)/Applications"; 435 | LIBRARY_SEARCH_PATHS = "$(inherited)"; 436 | PRODUCT_NAME = "$(TARGET_NAME)Debug"; 437 | WRAPPER_EXTENSION = app; 438 | }; 439 | name = Debug; 440 | }; 441 | E4B69B610A3A1757003C02F2 /* Release */ = { 442 | isa = XCBuildConfiguration; 443 | baseConfigurationReference = E4EB6923138AFD0F00A09F29 /* Project.xcconfig */; 444 | buildSettings = { 445 | COMBINE_HIDPI_IMAGES = YES; 446 | COPY_PHASE_STRIP = YES; 447 | FRAMEWORK_SEARCH_PATHS = ( 448 | "$(inherited)", 449 | "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", 450 | ); 451 | FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/../../../libs/glut/lib/osx\""; 452 | GCC_GENERATE_DEBUGGING_SYMBOLS = YES; 453 | GCC_MODEL_TUNING = NONE; 454 | ICON = "$(ICON_NAME_RELEASE)"; 455 | ICON_FILE = "$(ICON_FILE_PATH)$(ICON)"; 456 | INFOPLIST_FILE = "openFrameworks-Info.plist"; 457 | INSTALL_PATH = "$(HOME)/Applications"; 458 | LIBRARY_SEARCH_PATHS = "$(inherited)"; 459 | PRODUCT_NAME = "$(TARGET_NAME)"; 460 | WRAPPER_EXTENSION = app; 461 | baseConfigurationReference = E4EB6923138AFD0F00A09F29; 462 | }; 463 | name = Release; 464 | }; 465 | /* End XCBuildConfiguration section */ 466 | 467 | /* Begin XCConfigurationList section */ 468 | E4B69B4D0A3A1720003C02F2 /* Build configuration list for PBXProject "example-Login" */ = { 469 | isa = XCConfigurationList; 470 | buildConfigurations = ( 471 | E4B69B4E0A3A1720003C02F2 /* Debug */, 472 | E4B69B4F0A3A1720003C02F2 /* Release */, 473 | ); 474 | defaultConfigurationIsVisible = 0; 475 | defaultConfigurationName = Release; 476 | }; 477 | E4B69B5F0A3A1757003C02F2 /* Build configuration list for PBXNativeTarget "example-Login" */ = { 478 | isa = XCConfigurationList; 479 | buildConfigurations = ( 480 | E4B69B600A3A1757003C02F2 /* Debug */, 481 | E4B69B610A3A1757003C02F2 /* Release */, 482 | ); 483 | defaultConfigurationIsVisible = 0; 484 | defaultConfigurationName = Release; 485 | }; 486 | /* End XCConfigurationList section */ 487 | }; 488 | rootObject = E4B69B4C0A3A1720003C02F2 /* Project object */; 489 | } 490 | -------------------------------------------------------------------------------- /example-Login/example-Login.xcodeproj/xcshareddata/xcschemes/example-Login Debug.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 39 | 40 | 41 | 42 | 51 | 52 | 58 | 59 | 60 | 61 | 62 | 63 | 69 | 70 | 76 | 77 | 78 | 79 | 81 | 82 | 85 | 86 | 87 | -------------------------------------------------------------------------------- /example-Login/example-Login.xcodeproj/xcshareddata/xcschemes/example-Login Release.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 39 | 40 | 41 | 42 | 51 | 52 | 58 | 59 | 60 | 61 | 62 | 63 | 69 | 70 | 76 | 77 | 78 | 79 | 81 | 82 | 85 | 86 | 87 | -------------------------------------------------------------------------------- /example-Login/openFrameworks-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | cc.openFrameworks.ofapp 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundlePackageType 14 | APPL 15 | CFBundleSignature 16 | ???? 17 | CFBundleVersion 18 | 1.0 19 | CFBundleIconFile 20 | ${ICON} 21 | NSHighResolutionCapable 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /example-Login/src/ModalLogin.h: -------------------------------------------------------------------------------- 1 | // 2 | // ModalForm.h 3 | // example-Custom 4 | // 5 | // Created by Stephen Braitsch on 2/13/16. 6 | // 7 | // 8 | 9 | #pragma once 10 | #include "ofxModal.h" 11 | 12 | class ModalLogin : public ofxModalWindow{ 13 | 14 | public: 15 | 16 | ModalLogin(){ 17 | setTitle("Login"); 18 | addComponent(new ofxDatGuiTextInput("username", "username"))->setTheme(&guiTheme); 19 | addComponent(new ofxDatGuiTextInput("password", "password"))->setTheme(&guiTheme); 20 | addButton("Cancel"); 21 | getButton(0)->setLabel("Submit"); 22 | getButton(0)->setLabelColor(mTheme->color.button.darkblue.label); 23 | getButton(0)->setBackgroundColors(mTheme->color.button.darkblue.background, 24 | mTheme->color.button.darkblue.backgroundOnMouseOver, mTheme->color.button.darkblue.backgroundOnMouseDown); 25 | getButton(0)->setBorder(mTheme->color.button.darkblue.border, 1); 26 | autoSize(); 27 | } 28 | 29 | private: 30 | 31 | ofxDatGuiThemeCharcoal guiTheme; 32 | 33 | }; -------------------------------------------------------------------------------- /example-Login/src/main.cpp: -------------------------------------------------------------------------------- 1 | #include "ofMain.h" 2 | #include "ofApp.h" 3 | 4 | int main( ) 5 | { 6 | ofSetupOpenGL(1920, 1080, OF_WINDOW); 7 | ofRunApp(new ofApp()); 8 | } 9 | -------------------------------------------------------------------------------- /example-Login/src/ofApp.cpp: -------------------------------------------------------------------------------- 1 | #include "ofApp.h" 2 | 3 | void ofApp::setup() 4 | { 5 | ofSetWindowPosition(ofGetScreenWidth()/2 - ofGetWidth()/2, 0); 6 | 7 | // create a global application alert // 8 | mAlert = make_shared(); 9 | 10 | // listen for events & show the window // 11 | mLogin.addListener(this, &ofApp::onLoginEvent); 12 | mLogin.setAlert(mAlert); 13 | mLogin.show(); 14 | } 15 | 16 | void ofApp::keyPressed(int key) 17 | { 18 | if (key == 'm'){ 19 | mLogin.show(); 20 | } else if (key == 'h'){ 21 | mLogin.hide(); 22 | } 23 | } 24 | 25 | void ofApp::onLoginEvent(ofxModalEvent e) 26 | { 27 | if (e.type == ofxModalEvent::CANCEL){ 28 | cout << "cancel button was selected" << endl; 29 | } else if (e.type == ofxModalEvent::CONFIRM){ 30 | // check for valid login data here // 31 | cout << "confirm button was selected" << endl; 32 | // show an alert if login was successful // 33 | mLogin.alert("LOGIN SUCCESSFUL!"); 34 | } 35 | } 36 | 37 | -------------------------------------------------------------------------------- /example-Login/src/ofApp.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "ofMain.h" 4 | #include "ModalLogin.h" 5 | 6 | class ofApp : public ofBaseApp{ 7 | 8 | public: 9 | 10 | void setup(); 11 | void keyPressed(int key); 12 | 13 | ModalLogin mLogin; 14 | shared_ptr mAlert; 15 | void onLoginEvent(ofxModalEvent e); 16 | 17 | }; 18 | -------------------------------------------------------------------------------- /readme-imgs/alert-window.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/braitsch/ofxModal/71bfaa283407bbe58b921fd581d8665f21cf5eb8/readme-imgs/alert-window.png -------------------------------------------------------------------------------- /readme-imgs/blank-window.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/braitsch/ofxModal/71bfaa283407bbe58b921fd581d8665f21cf5eb8/readme-imgs/blank-window.png -------------------------------------------------------------------------------- /readme-imgs/confirm-window.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/braitsch/ofxModal/71bfaa283407bbe58b921fd581d8665f21cf5eb8/readme-imgs/confirm-window.png -------------------------------------------------------------------------------- /readme-imgs/login-window-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/braitsch/ofxModal/71bfaa283407bbe58b921fd581d8665f21cf5eb8/readme-imgs/login-window-1.png -------------------------------------------------------------------------------- /readme-imgs/login-window-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/braitsch/ofxModal/71bfaa283407bbe58b921fd581d8665f21cf5eb8/readme-imgs/login-window-2.png -------------------------------------------------------------------------------- /readme-imgs/login-window-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/braitsch/ofxModal/71bfaa283407bbe58b921fd581d8665f21cf5eb8/readme-imgs/login-window-3.png -------------------------------------------------------------------------------- /readme-imgs/login-window-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/braitsch/ofxModal/71bfaa283407bbe58b921fd581d8665f21cf5eb8/readme-imgs/login-window-4.png -------------------------------------------------------------------------------- /readme-imgs/ofxModalAlert.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/braitsch/ofxModal/71bfaa283407bbe58b921fd581d8665f21cf5eb8/readme-imgs/ofxModalAlert.gif -------------------------------------------------------------------------------- /readme-imgs/ofxModalAutoAlert.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/braitsch/ofxModal/71bfaa283407bbe58b921fd581d8665f21cf5eb8/readme-imgs/ofxModalAutoAlert.gif -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | ##ofxModal 2 | 3 | A flexible and extensible kit of Modal windows for [openFrameworks](http://openframeworks.cc/). 4 | 5 | ![modalLogin](./readme-imgs/login-window-4.png) 6 | 7 | ## Installation 8 | 9 | ofxModal is built on top of [ofxDatGui](https://github.com/braitsch/ofxDatGui) and [ofxParagraph](https://github.com/braitsch/ofxParagraph) which requires you to clone the repository recursively if you do not already have these addons installed. 10 | 11 | git clone --recursive git@github.com:braitsch/ofxModal.git 12 | 13 | 14 | Once you've created a project copy the **ofxbraitsch** directory in the root of this repository to your project's bin/data directory. This directory contains the fonts & icons used by ofxModal & ofxDatGui. 15 | 16 | ## Alerts 17 | Displaying an Alert is as simple as: 18 | 19 | ofxModalAlert myAlert; 20 | myAlert.alert("It's time to go outside."); 21 | 22 | ![ofxModalConfirm](./readme-imgs/alert-window.png) 23 | 24 | However it's a good idea to create a single application Alert that can be shared across multiple modal windows. The following example creates a [custom modal window](#custom-modal) of type LoginModal and assigns an alert to it that displays the result of a login attempt. 25 | 26 | LoginModal login; 27 | shared_ptr myAlert = make_shared(); 28 | login.setAlert(myAlert); 29 | login.addListener(this, &ofApp::onLoginEvent); 30 | login.show(); 31 | 32 | void onLoginEvent(ofxModalEvent e) 33 | { 34 | if (e.type == ofxModalEvent::CONFIRM){ 35 | // query your custom modal for valid user data // 36 | if (login.hasValidUserData()){ 37 | login.alert("login successful!"); 38 | } else{ 39 | login.alert("error! invalid credentials"); 40 | } 41 | } 42 | } 43 | 44 | This will queue the Alert to show **after** your custom modal window has closed. 45 | 46 | ## Confirms 47 | Confirm windows are similar to Alerts except that they also give you a cancel button and can be closed by clicking the modal backdrop. 48 | 49 | ofxModalConfirm confirm; 50 | confirm.addListener(this, &ofApp::onModalEvent); 51 | confirm.setMessage("Are you sure you really want to do this?"); 52 | confirm.show(); 53 | 54 | void onModalEvent(ofxModalEvent e) 55 | { 56 | if (e.type == ofxModalEvent::CANCEL){ 57 | cout << "cancel button was selected" << endl; 58 | } else if (e.type == ofxModalEvent::CONFIRM){ 59 | cout << "confirm button was selected" << endl; 60 | } 61 | } 62 | 63 | ![ofxModalConfirm](./readme-imgs/confirm-window.png) 64 | 65 | ## Custom Modals 66 | 67 | Custom modals extend ofxModalWindow which gives you a window with a title, space for components and a close button. 68 | 69 | ![ofxModalWindow](./readme-imgs/blank-window.png) 70 | 71 | To add components simply pass an **ofxDatGui** component to the ``addComponent`` method. 72 | 73 | class LoginModal : public ofxModalWindow 74 | { 75 | public: 76 | LoginModal(){ 77 | setTitle("Login"); 78 | addComponent(new ofxDatGuiTextInput("username", "username")); 79 | addComponent(new ofxDatGuiTextInput("password", "password")); 80 | } 81 | }; 82 | 83 | ![modalLogin](./readme-imgs/login-window-1.png) 84 | 85 | The window will autosize to the fit the components as you add them however you can override this by explicity setting the height via ``myModal.setHeight();`` 86 | 87 | ## Footer Buttons 88 | 89 | You can add additional buttons to the footer via: 90 | 91 | myModal.addButton("Cancel"); 92 | 93 | Buttons are appended to the left of the button before it. 94 | 95 | ![modalLogin](./readme-imgs/login-window-2.png) 96 | 97 | When you add a button you get back a pointer to the **ofxDatGuiButton** that was created which you can style via the [ofxDatGui API](http://braitsch.github.io/ofxDatGui/index.html#api). 98 | 99 | However you can also retrieve a button by its zero-based index numbered from right to left. 100 | 101 | ofxDatGuiButton* closeButton = myModal.getButton(0); 102 | closeButton->setLabel("submit"); 103 | closeButton->setLabelColor(ofColor::fromHex(0xffffff)); 104 | closeButton->setBackgroundColors( 105 | ofColor::fromHex(0x337ab7), // normal // 106 | ofColor::fromHex(0x286090), // on mouse over // 107 | ofColor::fromHex(0x1f4c73) // on mouse down // 108 | closeButton->setBorder(ofColor::fromHex(0x1f4c73), 1); 109 | 110 | ![modalLogin](./readme-imgs/login-window-3.png) 111 | 112 | ## Events 113 | 114 | ofxModalWindows dispatch four events: 115 | 116 | ofxModalEvent::SHOWN 117 | ofxModalEvent::HIDDEN 118 | ofxModalEvent::CANCEL 119 | ofxModalEvent::CONFIRM 120 | 121 | myModal.addListener(this, &ofApp::onModalEvent); 122 | 123 | void ofApp::onModalEvent(ofxModalEvent e) 124 | { 125 | if (e.type == ofxModalEvent::SHOWN){ 126 | // dispatched when the window has finished animating in // 127 | } else if (e.type == ofxModalEvent::HIDDEN){ 128 | // dispatched when the window has finished animating out // 129 | } else if (e.type == ofxModalEvent::CONFIRM){ 130 | // dispatched when the button at index 0 is selected // 131 | } else if (e.type == ofxModalEvent::CANCEL){ 132 | // dispatched when the button at index 1 is selected // 133 | } 134 | } 135 | 136 | You can of course bind your own handlers to any component just as you would working with **ofxDatGui**. 137 | 138 | ofxDatGuiButton* submitButton = myModal.getButton(0); 139 | ofxDatGuiButton* cancelButton = myModal.getButton(1); 140 | submitButton->onButtonEvent(this, &ofApp::onButtonEvent); 141 | cancelButton->onButtonEvent(this, &ofApp::onButtonEvent); 142 | 143 | void ofApp::onButtonEvent(ofxDatGuiButtonEvent e) 144 | { 145 | if (e.target == submitButton){ 146 | cout << "submit button was clicked" << endl; 147 | } else if (e.target == cancelButton){ 148 | cout << "cancel button was clicked" << endl; 149 | } 150 | } 151 | 152 | ## Customization 153 | 154 | All ofxDatGui components can be styled by either calling a specific [styling method](http://braitsch.github.io/ofxDatGui/index.html#api) or by applying an [ofxDatGuiTheme](http://braitsch.github.io/ofxDatGui/themes.html). 155 | 156 | ofxDatGuiThemeCharcoal guiTheme; 157 | addComponent(new ofxDatGuiTextInput("username", "username"))->setTheme(&guiTheme); 158 | addComponent(new ofxDatGuiTextInput("password", "password"))->setTheme(&guiTheme); 159 | // resize the components to fit the width of the modal window // 160 | autoSize(); 161 | 162 | ![modalLogin](./readme-imgs/login-window-4.png) 163 | 164 | Modal windows themselves can be customized by editing or extending [ofxModalTheme](https://github.com/braitsch/ofxModal/blob/master/src/ofxModalTheme.h). 165 | 166 | ## Cancelization 167 | 168 | All modals with the exception of Alerts can be closed by clicking the "X" in the top right corner or the backdrop behind the modal. You can disable this and "lock" the window onscreen by calling ``setCancelable(false)``. This will also hide any footer buttons that have their label set to "cancel". 169 | 170 | ## API Summary 171 | 172 | // public methods // 173 | void show(); 174 | void hide(); 175 | void alert(string message); 176 | void setWidth(int width); 177 | void setHeight(int height); 178 | void setTitle(string text); 179 | void setMessage(string text); 180 | void setMessageAlignment(ofxParagraph::Alignment align); 181 | void setButtonLabel(string label, int buttonIndex = 0); 182 | void setAlert(shared_ptr alert); 183 | void setCancelable(bool cancelable); 184 | void setTheme(shared_ptr theme); 185 | 186 | // protected methods // 187 | void addButton(string label); 188 | ofxDatGuiButton* getButton(int index); 189 | ofxDatGuiComponent* addComponent(ofxDatGuiComponent* component); 190 | void autoSize(); 191 | -------------------------------------------------------------------------------- /src/ofxModal.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2016 Stephen Braitsch [http://braitsch.io] 3 | 4 | Permission is hereby granted, free of charge, to any person obtaining a copy 5 | of this software and associated documentation files (the "Software"), to deal 6 | in the Software without restriction, including without limitation the rights 7 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | copies of the Software, and to permit persons to whom the Software is 9 | furnished to do so, subject to the following conditions: 10 | 11 | The above copyright notice and this permission notice shall be included in all 12 | copies or substantial portions of the Software. 13 | 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 17 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 19 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 20 | SOFTWARE. 21 | */ 22 | 23 | #pragma once 24 | #include "ofxModalConfirm.h" 25 | 26 | class ofxModal { 27 | 28 | public: 29 | 30 | static bool visible() 31 | { 32 | return ofxModalWindow::visible(); 33 | } 34 | 35 | }; 36 | -------------------------------------------------------------------------------- /src/ofxModalConfirm.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2016 Stephen Braitsch [http://braitsch.io] 3 | 4 | Permission is hereby granted, free of charge, to any person obtaining a copy 5 | of this software and associated documentation files (the "Software"), to deal 6 | in the Software without restriction, including without limitation the rights 7 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | copies of the Software, and to permit persons to whom the Software is 9 | furnished to do so, subject to the following conditions: 10 | 11 | The above copyright notice and this permission notice shall be included in all 12 | copies or substantial portions of the Software. 13 | 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 17 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 19 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 20 | SOFTWARE. 21 | */ 22 | 23 | #pragma once 24 | #include "ofxModalWindow.h" 25 | 26 | class ofxModalConfirm : public ofxModalWindow { 27 | 28 | public: 29 | 30 | ofxModalConfirm() 31 | { 32 | setTitle("confirm"); 33 | addButton("cancel"); 34 | getButton(0)->setLabel("confirm"); 35 | setTheme(mTheme); 36 | setMessage("This is a confirm message. Stumptown street art photo booth try-hard cold-pressed, pour-over raw denim four loko vinyl. Banjo drinking vinegar tousled, Brooklyn Neutra meggings mlkshk freegan whatever."); 37 | } 38 | 39 | void setTheme(std::shared_ptr theme) 40 | { 41 | ofxModalWindow::setTheme(theme); 42 | getButton(0)->setWidth(theme->layout.button.width); 43 | getButton(0)->setLabelColor(theme->color.button.darkblue.label); 44 | getButton(0)->setBackgroundColors(theme->color.button.darkblue.background, 45 | theme->color.button.darkblue.backgroundOnMouseOver, theme->color.button.darkblue.backgroundOnMouseDown); 46 | getButton(1)->setWidth(theme->layout.button.width); 47 | getButton(1)->setLabelColor(theme->color.button.wireframe.label); 48 | getButton(1)->setBackgroundColors(theme->color.button.wireframe.background, 49 | theme->color.button.wireframe.backgroundOnMouseOver, theme->color.button.wireframe.backgroundOnMouseDown); 50 | if (theme->layout.button.borders) { 51 | getButton(0)->setBorder(theme->color.button.darkblue.border, 1); 52 | getButton(1)->setBorder(theme->color.button.wireframe.border, 1); 53 | } 54 | } 55 | 56 | }; 57 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /src/ofxModalEvent.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2016 Stephen Braitsch [http://braitsch.io] 3 | 4 | Permission is hereby granted, free of charge, to any person obtaining a copy 5 | of this software and associated documentation files (the "Software"), to deal 6 | in the Software without restriction, including without limitation the rights 7 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | copies of the Software, and to permit persons to whom the Software is 9 | furnished to do so, subject to the following conditions: 10 | 11 | The above copyright notice and this permission notice shall be included in all 12 | copies or substantial portions of the Software. 13 | 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 17 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 19 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 20 | SOFTWARE. 21 | */ 22 | 23 | #pragma once 24 | class ofxModalWindow; 25 | 26 | struct ofxModalEvent 27 | { 28 | enum EventType{ 29 | SHOWN, 30 | HIDDEN, 31 | CANCEL, 32 | CONFIRM, 33 | }; 34 | ofxModalEvent(EventType type, ofxModalWindow* target){ 35 | this->type = type; 36 | this->target = target; 37 | } 38 | EventType type; 39 | ofxModalWindow* target; 40 | }; 41 | 42 | -------------------------------------------------------------------------------- /src/ofxModalTheme.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2016 Stephen Braitsch [http://braitsch.io] 3 | 4 | Permission is hereby granted, free of charge, to any person obtaining a copy 5 | of this software and associated documentation files (the "Software"), to deal 6 | in the Software without restriction, including without limitation the rights 7 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | copies of the Software, and to permit persons to whom the Software is 9 | furnished to do so, subject to the following conditions: 10 | 11 | The above copyright notice and this permission notice shall be included in all 12 | copies or substantial portions of the Software. 13 | 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 17 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 19 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 20 | SOFTWARE. 21 | */ 22 | 23 | #pragma once 24 | #include "ofImage.h" 25 | #include "ofColor.h" 26 | #include "ofGraphics.h" 27 | #include "ofxSmartFont.h" 28 | 29 | class ofxModalTheme { 30 | 31 | public: 32 | 33 | ofxModalTheme(){ 34 | buttonX.normal.load("ofxbraitsch/ofxmodal/modal-buttonX.png"); 35 | buttonX.active.load("ofxbraitsch/ofxmodal/modal-buttonX-hover.png"); 36 | fonts.title = ofxSmartFont::add("ofxbraitsch/fonts/HelveticaNeueLTStd-Md.otf", 24, "modal-title"); 37 | fonts.message = ofxSmartFont::add("ofxbraitsch/fonts/Roboto-Regular.ttf", 20, "modal-message"); 38 | } 39 | 40 | /* 41 | default color palette 42 | */ 43 | 44 | struct{ 45 | struct{ 46 | struct{ 47 | ofColor label = ofxDatGuiTheme::hex(0x333333); 48 | ofColor labelOnMouseOver = ofxDatGuiTheme::hex(0x333333); 49 | ofColor labelOnMouseDown = ofxDatGuiTheme::hex(0x333333); 50 | ofColor background = ofxDatGuiTheme::hex(0xffffff); 51 | ofColor backgroundOnMouseOver = ofxDatGuiTheme::hex(0xE6E6E6); 52 | ofColor backgroundOnMouseDown = ofxDatGuiTheme::hex(0xD4D4D4); 53 | ofColor border = ofxDatGuiTheme::hex(0xCCCCCC); 54 | } wireframe; 55 | struct{ 56 | ofColor label = ofxDatGuiTheme::hex(0xffffff); 57 | ofColor labelOnMouseOver = ofxDatGuiTheme::hex(0xffffff); 58 | ofColor labelOnMouseDown = ofxDatGuiTheme::hex(0xffffff); 59 | ofColor background = ofxDatGuiTheme::hex(0x337ab7); 60 | ofColor backgroundOnMouseOver = ofxDatGuiTheme::hex(0x286090); 61 | ofColor backgroundOnMouseDown = ofxDatGuiTheme::hex(0x1f4c73); 62 | ofColor border = ofxDatGuiTheme::hex(0x1f4c73); 63 | } darkblue; 64 | } button; 65 | struct{ 66 | ofColor title = ofxDatGuiTheme::hex(0x111111); 67 | ofColor body = ofxDatGuiTheme::hex(0x777777); 68 | } text; 69 | struct{ 70 | ofColor header = ofxDatGuiTheme::hex(0xFFFFFF); 71 | ofColor body = ofxDatGuiTheme::hex(0xFFFFFF); 72 | ofColor footer = ofxDatGuiTheme::hex(0xF7F7F9); 73 | ofColor hrule = ofxDatGuiTheme::hex(0x333333); 74 | } modal; 75 | struct{ 76 | ofColor background = ofxDatGuiTheme::hex(0x000000); 77 | } window; 78 | } color; 79 | 80 | struct{ 81 | struct{ 82 | float header = 1.0f; 83 | float body = 1.0f; 84 | float footer = 1.0f; 85 | float hrule = 1.0f; 86 | } modal; 87 | struct{ 88 | float background = 0.7f; 89 | } window; 90 | } alpha; 91 | 92 | 93 | /* postioning, width & height */ 94 | 95 | struct{ 96 | struct{ 97 | int width = 160; 98 | int height = 80; 99 | bool borders = true; 100 | } button; 101 | struct { 102 | int width = 800; 103 | int height = 600; 104 | int padding = 30; 105 | int vMargin = 2; 106 | int autoSize = true; 107 | } modal; 108 | struct{ 109 | float wordSpacing = 14.0f; 110 | } text; 111 | } layout; 112 | 113 | struct { 114 | shared_ptr title; 115 | shared_ptr message; 116 | } fonts; 117 | 118 | struct { 119 | float speed = 0.4f; 120 | } animation; 121 | 122 | struct { 123 | int width = 26; 124 | int height = 26; 125 | int hitPadding = 20; 126 | ofImage normal; 127 | ofImage active; 128 | } buttonX; 129 | 130 | 131 | }; 132 | 133 | -------------------------------------------------------------------------------- /src/ofxModalWindow.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2016 Stephen Braitsch [http://braitsch.io] 3 | 4 | Permission is hereby granted, free of charge, to any person obtaining a copy 5 | of this software and associated documentation files (the "Software"), to deal 6 | in the Software without restriction, including without limitation the rights 7 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | copies of the Software, and to permit persons to whom the Software is 9 | furnished to do so, subject to the following conditions: 10 | 11 | The above copyright notice and this permission notice shall be included in all 12 | copies or substantial portions of the Software. 13 | 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 17 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 19 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 20 | SOFTWARE. 21 | */ 22 | 23 | #include "ofxModalWindow.h" 24 | 25 | vector ofxModalWindow::modals; 26 | ofxModalWindow* ofxModalWindow::activeModal = nullptr; 27 | std::shared_ptr ofxModalWindow::mTheme = nullptr; 28 | 29 | /* 30 | pubic methods 31 | */ 32 | 33 | void ofxModalWindow::show() 34 | { 35 | // ensure we never show two at the same time // 36 | if (activeModal == nullptr){ 37 | centerModal(); 38 | mVisible = true; 39 | activeModal = this; 40 | mState = FADING_IN; 41 | mAnimation.nTicks = 0; 42 | mAnimation.percent = 0; 43 | ofAddListener(ofEvents().draw, this, &ofxModalWindow::onDraw, OF_EVENT_ORDER_AFTER_APP + 9999); 44 | ofAddListener(ofEvents().update, this, &ofxModalWindow::onUpdate, OF_EVENT_ORDER_AFTER_APP + 9999); 45 | ofAddListener(ofEvents().mouseMoved, this, &ofxModalWindow::onMouseMove, OF_EVENT_ORDER_AFTER_APP + 9999); 46 | ofAddListener(ofEvents().mousePressed, this, &ofxModalWindow::onMousePress, OF_EVENT_ORDER_AFTER_APP + 9999); 47 | ofAddListener(ofEvents().windowResized, this, &ofxModalWindow::onWindowResize, OF_EVENT_ORDER_AFTER_APP + 9999); 48 | } 49 | } 50 | 51 | void ofxModalWindow::hide() 52 | { 53 | if (mVisible){ 54 | mVisible = false; 55 | mState = FADING_OUT; 56 | mAnimation.nTicks = 0; 57 | mAnimation.percent = 0; 58 | } 59 | } 60 | 61 | void ofxModalWindow::alert(string message) 62 | { 63 | mAlertMessage = message; 64 | } 65 | 66 | void ofxModalWindow::setWidth(int w) 67 | { 68 | mModal.width = w; 69 | mModal.x = ofGetWidth() / 2 - mModal.width / 2; 70 | if (mMessage != nullptr) mMessage->setWidth(mModal.width - (mModal.padding * 2)); 71 | } 72 | 73 | void ofxModalWindow::setHeight(int h) 74 | { 75 | mModal.autoSize = false; 76 | mModal.height.body = h - mModal.height.header - mModal.height.footer; 77 | // establish a minimun body height // 78 | if (mModal.height.body < 200) mModal.height.body = 200; 79 | } 80 | 81 | void ofxModalWindow::setTitle(string text) 82 | { 83 | mTitle.text = ofToUpper(text); 84 | if (mTitle.font != nullptr) mTitle.height = mTitle.font->height(mTitle.text); 85 | } 86 | 87 | void ofxModalWindow::setMessage(string text) 88 | { 89 | // disabled if this modal already has components // 90 | if (mModalComponents.size() == 0){ 91 | if (mMessage == nullptr) mMessage = new ofxParagraph(); 92 | setMessageTheme(); 93 | mMessage->setText(text); 94 | if (mModal.autoSize) mModal.height.body = mMessage->getHeight() + mModal.padding * 2; 95 | } 96 | } 97 | 98 | void ofxModalWindow::setMessageAlignment(ofxParagraph::Alignment align) 99 | { 100 | if (mMessage != nullptr) mMessage->setAlignment(align); 101 | } 102 | 103 | void ofxModalWindow::setButtonLabel(string label, int bIndex) 104 | { 105 | if (bIndex < mFooterButtons.size()){ 106 | mFooterButtons[bIndex]->setLabel(label); 107 | } else{ 108 | cout << "ofxModalWindow::setButtonLabel index " << bIndex << " is out of range" << endl; 109 | } 110 | } 111 | 112 | void ofxModalWindow::setAlert(shared_ptr alert) 113 | { 114 | mAlert = alert; 115 | } 116 | 117 | void ofxModalWindow::setTheme(std::shared_ptr theme) 118 | { 119 | mTheme = theme; 120 | mColor.title = theme->color.text.title; 121 | mColor.header = theme->color.modal.header; 122 | mColor.body = theme->color.modal.body; 123 | mColor.footer = theme->color.modal.footer; 124 | mColor.hrule = theme->color.modal.hrule; 125 | mCloseButton.normal = &theme->buttonX.normal; 126 | mCloseButton.active = &theme->buttonX.active; 127 | mCloseButton.rect.width = theme->buttonX.width; 128 | mCloseButton.rect.height = theme->buttonX.height; 129 | mCloseButton.hitPadding = theme->buttonX.hitPadding; 130 | mAnimation.tTicks = theme->animation.speed * ofGetFrameRate(); 131 | mAnimation.tOpacity = theme->alpha.window.background; 132 | mTitle.font = theme->fonts.title; 133 | mTitle.height = theme->fonts.title->height(mTitle.text); 134 | mModal.height.header = mModal.padding * 2 + mCloseButton.rect.height; 135 | mModal.height.footer = mModal.padding * 3; 136 | mModal.height.body = theme->layout.modal.height - mModal.height.header - mModal.height.footer; 137 | mModal.padding = theme->layout.modal.padding; 138 | mModal.vMargin = theme->layout.modal.vMargin; 139 | mModal.autoSize = theme->layout.modal.autoSize; 140 | setWidth(theme->layout.modal.width); 141 | if (mMessage != nullptr) setMessageTheme(); 142 | for (int i=0; isetWidth(theme->layout.button.width); 144 | mFooterButtons[i]->setLabelColor(theme->color.button.wireframe.label); 145 | mFooterButtons[i]->setBackgroundColors(theme->color.button.wireframe.background, 146 | theme->color.button.wireframe.backgroundOnMouseOver, 147 | theme->color.button.wireframe.backgroundOnMouseDown); 148 | if (theme->layout.button.borders) { 149 | mFooterButtons[i]->setBorder(theme->color.button.wireframe.border, 1); 150 | } 151 | } 152 | } 153 | 154 | void ofxModalWindow::setCancelable(bool cancelable) 155 | { 156 | mCancelable = cancelable; 157 | for (auto btn : mFooterButtons){ 158 | if (ofToLower(btn->getLabel()) == "cancel") btn->setVisible(cancelable); 159 | } 160 | } 161 | 162 | int ofxModalWindow::getWidth() 163 | { 164 | return mModal.width; 165 | } 166 | 167 | int ofxModalWindow::getHeight() 168 | { 169 | return mModal.height.header + mModal.height.body + mModal.height.footer; 170 | } 171 | 172 | int ofxModalWindow::getPadding() 173 | { 174 | return mModal.padding; 175 | } 176 | 177 | bool ofxModalWindow::visible() 178 | { 179 | return activeModal != nullptr; 180 | } 181 | 182 | /* 183 | protected methods 184 | */ 185 | 186 | ofxModalWindow::ofxModalWindow() 187 | { 188 | mAlert = nullptr; 189 | mAlertMessage = ""; 190 | mMessage = nullptr; 191 | mCancelable = true; 192 | mCloseButton.mouseOver = false; 193 | if (mTheme == nullptr) mTheme = std::make_shared(); 194 | setTheme(mTheme); 195 | setTitle("Title"); 196 | addButton("Close"); 197 | setTheme(mTheme); 198 | modals.push_back(this); 199 | } 200 | 201 | void ofxModalWindow::dispatchCallbacks(ofxModalEvent::EventType eType) 202 | { 203 | for(auto e: e_callbacks){ 204 | if (e.eType == eType){ 205 | e.callback(ofxModalEvent(eType, this)); 206 | } 207 | } 208 | for(auto g: g_callbacks) g(ofxModalEvent(eType, this)); 209 | if (eType == ofxModalEvent::HIDDEN){ 210 | if (mAlertMessage != ""){ 211 | if (mAlert != nullptr) mAlert->alert(mAlertMessage); 212 | mAlertMessage = ""; 213 | } 214 | } 215 | } 216 | 217 | /* 218 | private methods 219 | */ 220 | 221 | void ofxModalWindow::onDraw(ofEventArgs &e) 222 | { 223 | ofPushStyle(); 224 | ofFill(); 225 | // draw background blackout // 226 | ofSetColor(0, 0, 0, mAnimation.nOpacity); 227 | ofDrawRectangle(0, 0, ofGetWidth(), ofGetHeight()); 228 | // draw modal header // 229 | ofSetColor(mColor.header); 230 | ofDrawRectangle(mModal.x, mModal.y, mModal.width, mModal.height.header); 231 | // draw modal body // 232 | ofSetColor(mColor.body); 233 | ofDrawRectangle(mModal.x, mModal.y + mModal.height.header, mModal.width, mModal.height.body); 234 | // draw modal header // 235 | ofSetColor(mColor.footer); 236 | ofDrawRectangle(mModal.x, mModal.y + mModal.height.header + mModal.height.body, mModal.width, mModal.height.footer); 237 | // draw title // 238 | ofSetColor(mColor.title); 239 | mTitle.font->draw(mTitle.text, mTitle.x, mTitle.y); 240 | ofDrawLine(mBreak1.p1, mBreak1.p2); 241 | ofDrawLine(mBreak2.p1, mBreak2.p2); 242 | // draw message // 243 | if (mMessage != nullptr) mMessage->draw(); 244 | // draw close button // 245 | if (mCancelable){ 246 | ofSetColor(ofColor::white); 247 | if (mCloseButton.mouseOver == false){ 248 | mCloseButton.normal->draw(mCloseButton.rect); 249 | } else{ 250 | mCloseButton.active->draw(mCloseButton.rect); 251 | } 252 | } 253 | ofPopStyle(); 254 | // draw body components // 255 | for(auto mc:mModalComponents) mc.component->draw(); 256 | // draw footer buttons // 257 | for(auto button:mFooterButtons) button->draw(); 258 | } 259 | 260 | void ofxModalWindow::onUpdate(ofEventArgs &e) 261 | { 262 | if (mState == FADING_IN || mState == FADING_OUT){ 263 | animate(); 264 | } else{ 265 | // update modal components // 266 | for(auto bn:mFooterButtons) bn->update(); 267 | for(auto mc:mModalComponents) mc.component->update(); 268 | } 269 | } 270 | 271 | void ofxModalWindow::onButtonEvent(ofxDatGuiButtonEvent e) 272 | { 273 | hide(); 274 | if (e.target == mFooterButtons[0]){ 275 | dispatchCallbacks(ofxModalEvent::CONFIRM); 276 | } else if (mFooterButtons.size() > 1 && e.target == mFooterButtons[1]){ 277 | dispatchCallbacks(ofxModalEvent::CANCEL); 278 | } 279 | } 280 | 281 | void ofxModalWindow::layout() 282 | { 283 | mTitle.x = mModal.x + mModal.padding; 284 | mTitle.y = mModal.y + mModal.padding + mCloseButton.rect.height/2 + mTitle.height/2; 285 | mBreak1.p1.x = mModal.x; 286 | mBreak1.p1.y = mModal.y + mModal.height.header; 287 | mBreak1.p2.x = mModal.x + mModal.width; 288 | mBreak1.p2.y = mBreak1.p1.y; 289 | mBreak2.p1.x = mBreak1.p1.x; 290 | mBreak2.p1.y = mModal.y + mModal.height.header + mModal.height.body; 291 | mBreak2.p2.x = mBreak1.p2.x; 292 | mBreak2.p2.y = mBreak2.p1.y; 293 | if (mMessage != nullptr) { 294 | mMessage->setPosition(mBreak1.p1.x + mModal.padding, mBreak1.p1.y + mModal.padding + mMessage->getStringHeight()); 295 | } 296 | mCloseButton.rect.x = mModal.x + mModal.width - mModal.padding - mCloseButton.rect.width; 297 | mCloseButton.rect.y = mModal.y + mModal.padding; 298 | mCloseButton.hitRect.x = mCloseButton.rect.x - mCloseButton.hitPadding; 299 | mCloseButton.hitRect.y = mCloseButton.rect.y - mCloseButton.hitPadding; 300 | mCloseButton.hitRect.width = mCloseButton.rect.width + (mCloseButton.hitPadding * 2); 301 | mCloseButton.hitRect.height = mCloseButton.rect.height + (mCloseButton.hitPadding * 2); 302 | for(auto mc:mModalComponents) { 303 | mc.component->setPosition(mModal.x + mModal.padding + mc.x, mModal.y + mModal.height.header + mc.y); 304 | } 305 | for(int i=0; igetWidth(); 308 | int x = mModal.x + mModal.width - mModal.padding - w; 309 | int y = mBreak2.p1.y + mModal.height.footer/2 - mFooterButtons[i]->getHeight()/2; 310 | x -= (w+buttonSpacing) * i; 311 | mFooterButtons[i]->setPosition(x, y); 312 | } 313 | } 314 | 315 | void ofxModalWindow::animate() 316 | { 317 | mAnimation.nTicks++; 318 | if (mState == FADING_IN){ 319 | mAnimation.percent = easeInOutQuad(float(mAnimation.nTicks)/mAnimation.tTicks); 320 | } else if (mState == FADING_OUT) { 321 | mAnimation.percent = 1.0f - easeInOutQuad(float(mAnimation.nTicks)/mAnimation.tTicks); 322 | } 323 | int height = getHeight(); 324 | mAnimation.nOpacity = mAnimation.percent * (mAnimation.tOpacity * 255); 325 | mModal.y = -height + mAnimation.percent * (ofGetHeight()/2 - height/2 + height); 326 | if (mAnimation.nTicks == mAnimation.tTicks){ 327 | if (mState == FADING_IN){ 328 | mState = VISIBLE; 329 | dispatchCallbacks(ofxModalEvent::SHOWN); 330 | } else if (mState == FADING_OUT){ 331 | mState = HIDDEN; 332 | // modal is closed, ok to show another one now // 333 | activeModal = nullptr; 334 | dispatchCallbacks(ofxModalEvent::HIDDEN); 335 | ofRemoveListener(ofEvents().draw, this, &ofxModalWindow::onDraw); 336 | ofRemoveListener(ofEvents().update, this, &ofxModalWindow::onUpdate); 337 | ofRemoveListener(ofEvents().mouseMoved, this, &ofxModalWindow::onMouseMove); 338 | ofRemoveListener(ofEvents().mousePressed, this, &ofxModalWindow::onMousePress); 339 | } 340 | } 341 | // sync modal components as window moves // 342 | layout(); 343 | } 344 | 345 | void ofxModalWindow::centerModal() 346 | { 347 | int height = getHeight(); 348 | mModal.x = ofGetWidth() / 2 - mModal.width / 2; 349 | mModal.y = -height + mAnimation.percent * (ofGetHeight()/2 - height/2 + height); 350 | layout(); 351 | } 352 | 353 | void ofxModalWindow::setMessageTheme() 354 | { 355 | mMessage->setFont(mTheme->fonts.message); 356 | mMessage->setColor(mTheme->color.text.body); 357 | mMessage->setSpacing(mTheme->layout.text.wordSpacing); 358 | mMessage->setWidth(mModal.width - (mModal.padding * 2)); 359 | } 360 | 361 | void ofxModalWindow::onMousePress(ofMouseEventArgs &e) 362 | { 363 | ofPoint mouse = ofPoint(e.x, e.y); 364 | if (mVisible && mCancelable == true){ 365 | if (ofRectangle(mModal.x, mModal.y, mModal.width, getHeight()).inside(mouse) == false) { 366 | hide(); 367 | } else if (mCloseButton.hitRect.inside(mouse)){ 368 | hide(); 369 | } 370 | } 371 | } 372 | 373 | void ofxModalWindow::onMouseMove(ofMouseEventArgs &e) 374 | { 375 | ofPoint mouse = ofPoint(e.x, e.y); 376 | mCloseButton.mouseOver = mCloseButton.hitRect.inside(mouse); 377 | } 378 | 379 | void ofxModalWindow::onWindowResize(ofResizeEventArgs &e) 380 | { 381 | centerModal(); 382 | } 383 | 384 | double ofxModalWindow::easeInOutQuad( double t ) 385 | { 386 | return t < 0.5 ? 2 * t * t : t * (4 - 2 * t) - 1; 387 | } 388 | 389 | 390 | 391 | 392 | -------------------------------------------------------------------------------- /src/ofxModalWindow.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2016 Stephen Braitsch [http://braitsch.io] 3 | 4 | Permission is hereby granted, free of charge, to any person obtaining a copy 5 | of this software and associated documentation files (the "Software"), to deal 6 | in the Software without restriction, including without limitation the rights 7 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | copies of the Software, and to permit persons to whom the Software is 9 | furnished to do so, subject to the following conditions: 10 | 11 | The above copyright notice and this permission notice shall be included in all 12 | copies or substantial portions of the Software. 13 | 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 17 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 19 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 20 | SOFTWARE. 21 | */ 22 | 23 | #pragma once 24 | #include "ofAppRunner.h" 25 | #include "ofxDatGui.h" 26 | #include "ofxParagraph.h" 27 | #include "ofxModalEvent.h" 28 | #include "ofxModalTheme.h" 29 | 30 | class ofxModalAlert; 31 | 32 | class ofxModalWindow { 33 | 34 | public: 35 | 36 | void show(); 37 | void hide(); 38 | void alert(string message); 39 | 40 | void setWidth(int w); 41 | void setHeight(int h); 42 | void setTitle(string text); 43 | void setMessage(string text); 44 | void setMessageAlignment(ofxParagraph::Alignment align); 45 | void setButtonLabel(string label, int bIndex = 0); 46 | void setAlert(shared_ptr alert); 47 | void setCancelable(bool cancelable); 48 | virtual void setTheme(std::shared_ptr theme); 49 | 50 | int getWidth(); 51 | int getHeight(); 52 | int getPadding(); 53 | static bool visible(); 54 | 55 | template 56 | void addListener(T* owner, void (ListenerClass::*listenerMethod)(args)) 57 | { 58 | // cout << "ofxModalWindow :: adding listener" << endl; 59 | using namespace std::placeholders; 60 | g_callbacks.push_back(std::bind(listenerMethod, owner, _1)); 61 | } 62 | 63 | template 64 | void addListener(ofxModalEvent::EventType event, T* owner, void (ListenerClass::*listenerMethod)(args)) 65 | { 66 | // cout << "ofxModalWindow :: adding listener" << endl; 67 | using namespace std::placeholders; 68 | e_callbacks.push_back({event, std::bind(listenerMethod, owner, _1)}); 69 | } 70 | 71 | void removeListener() 72 | { 73 | // cout << "ofxModalWindow :: removing listener" << endl; 74 | g_callbacks.clear(); 75 | } 76 | 77 | void removeListener(ofxModalEvent::EventType event) 78 | { 79 | // cout << "ofxModalWindow :: removing listener" << endl; 80 | for(int i=0; ix = x; 101 | this->y = y; 102 | this->component = c; 103 | } 104 | }; 105 | 106 | template 107 | component* addComponent(component* c, int x = 0, int y = 0, int w = 0) 108 | { 109 | if (y == 0) { 110 | y = mModal.padding; 111 | for(auto mc:mModalComponents) y+= mc.component->getHeight() + mModal.vMargin; 112 | } 113 | mModalComponents.push_back(ModalComponent(c, x, y)); 114 | int maxW = mModal.width-(mModal.padding*2)-x; 115 | if (w > 0 && w < maxW) { 116 | c->setWidth(w, .3); 117 | } else{ 118 | c->setWidth(maxW, .3); 119 | } 120 | if (mModal.autoSize){ 121 | int h = mModal.padding; 122 | for(auto mc:mModalComponents) h+= mc.component->getHeight() + mModal.vMargin; 123 | mModal.height.body = h + mModal.padding; 124 | } 125 | return c; 126 | } 127 | 128 | void autoSize() 129 | { 130 | for(auto mc:mModalComponents) mc.component->setWidth(mModal.width-(mModal.padding*2)-mc.x, .3); 131 | } 132 | 133 | void autoSize(ofxDatGuiComponent* c) 134 | { 135 | for(auto mc:mModalComponents) if (mc.component == c) c->setWidth(mModal.width-(mModal.padding*2)-mc.x, .3); 136 | } 137 | 138 | /* 139 | footer buttons 140 | */ 141 | 142 | ofxDatGuiButton* addButton(string label) 143 | { 144 | ofxDatGuiButton* btn = new ofxDatGuiButton(ofToUpper(label)); 145 | btn->setStripeVisible(false); 146 | btn->setLabelAlignment(ofxDatGuiAlignment::CENTER); 147 | btn->onButtonEvent(this, &ofxModalWindow::onButtonEvent); 148 | btn->setWidth(mTheme->layout.button.width); 149 | btn->setLabelColor(mTheme->color.button.wireframe.label); 150 | btn->setBackgroundColors(mTheme->color.button.wireframe.background, mTheme->color.button.wireframe.backgroundOnMouseOver, mTheme->color.button.wireframe.backgroundOnMouseDown); 151 | btn->setBorder(mTheme->color.button.wireframe.border, 1); 152 | mFooterButtons.push_back(btn); 153 | return btn; 154 | } 155 | 156 | ofxDatGuiButton* getButton(int index) 157 | { 158 | return mFooterButtons[index]; 159 | } 160 | 161 | string mAlertMessage; 162 | shared_ptr mAlert; 163 | static std::shared_ptr mTheme; 164 | 165 | private: 166 | 167 | enum { 168 | HIDDEN, 169 | FADING_IN, 170 | VISIBLE, 171 | FADING_OUT 172 | } mState; 173 | 174 | struct { 175 | ofColor title; 176 | ofColor header; 177 | ofColor body; 178 | ofColor hrule; 179 | ofColor footer; 180 | } mColor; 181 | 182 | struct{ 183 | int x; 184 | int y; 185 | int width; 186 | int padding; 187 | int vMargin; 188 | struct{ 189 | int header; 190 | int body; 191 | int footer; 192 | } height; 193 | bool autoSize; 194 | } mModal; 195 | 196 | struct{ 197 | int nTicks; 198 | int tTicks; 199 | float percent; 200 | float nOpacity; 201 | float tOpacity; 202 | } mAnimation; 203 | 204 | struct{ 205 | int x; 206 | int y; 207 | int height; 208 | string text; 209 | shared_ptr font; 210 | } mTitle; 211 | 212 | struct{ 213 | ofPoint p1; 214 | ofPoint p2; 215 | } mBreak1; 216 | 217 | struct{ 218 | ofPoint p1; 219 | ofPoint p2; 220 | } mBreak2; 221 | 222 | struct { 223 | bool mouseOver; 224 | int hitPadding; 225 | ofImage* normal; 226 | ofImage* active; 227 | ofRectangle rect; 228 | ofRectangle hitRect; 229 | } mCloseButton; 230 | 231 | bool mVisible; 232 | bool mCancelable; 233 | ofxParagraph* mMessage; 234 | vector mModalComponents; 235 | vector mFooterButtons; 236 | 237 | void onDraw(ofEventArgs &e); 238 | void onUpdate(ofEventArgs &e); 239 | inline void layout(); 240 | inline void animate(); 241 | void centerModal(); 242 | void setMessageTheme(); 243 | void onMousePress(ofMouseEventArgs &e); 244 | void onMouseMove(ofMouseEventArgs &e); 245 | void onWindowResize(ofResizeEventArgs &e); 246 | void onButtonEvent(ofxDatGuiButtonEvent e); 247 | void dispatchCallbacks(ofxModalEvent::EventType eType); 248 | 249 | /* 250 | event subscribers 251 | */ 252 | 253 | typedef std::function onModalEventCallback; 254 | struct subscriber{ 255 | ofxModalEvent::EventType eType; 256 | onModalEventCallback callback; 257 | }; 258 | vector e_callbacks; 259 | vector g_callbacks; 260 | 261 | /* 262 | static properties & methods 263 | */ 264 | 265 | static ofxModalWindow* activeModal; 266 | static vector modals; 267 | static inline double easeInOutQuad( double t ); 268 | 269 | }; 270 | 271 | 272 | class ofxModalAlert : public ofxModalWindow { 273 | 274 | public: 275 | 276 | ofxModalAlert() 277 | { 278 | setTitle("alert"); 279 | getButton(0)->setLabel("ok"); 280 | setTheme(mTheme); 281 | setCancelable(false); 282 | setMessage("This is an alert message!"); 283 | } 284 | 285 | void alert(string message) 286 | { 287 | setMessage(message); 288 | ofxModalWindow::show(); 289 | } 290 | 291 | }; 292 | 293 | 294 | --------------------------------------------------------------------------------