diff --git a/Makefile b/Makefile
index 4c8a34b..2ca5f3f 100644
--- a/Makefile
+++ b/Makefile
@@ -90,6 +90,19 @@ COPYDIRS=
# If you have it in a different location, specify that here.
# GSPORT=/Applications/GSport/GSport.app/Contents/MacOS/GSport
+# For a desktop application, it can operate in 640x200 or 320x200
+# resolution. This setting is used to define which horizontal
+# resolution you want to use for a desktop application. Other
+# target types ignore this value.
+# DESKTOP_RES_MODE=640
+
+# For a desktop application, it can support opening and printing
+# files based on paths sent to it by the message center. This
+# option controls if that is or is not supported in the
+# application (note: only the C desktop template supports message
+# center today)
+# MESSAGE_CENTER=0
+
# Add any rules you want to execute before any compiles or assembly
# commands are called here, if any. You can generate .c, .s or .h
# files for example. You can generate data files. Whatever you
diff --git a/make/head.mk b/make/head.mk
index 8b13f3b..1cdcdd6 100644
--- a/make/head.mk
+++ b/make/head.mk
@@ -36,6 +36,9 @@ CHTYP=$(ORCA) chtyp
RM=rm -f
CP=cp
+DESKTOP_RES_MODE=640
+MESSAGE_CENTER=0
+
GSPLUS=/Applications/GSplus.app/Contents/MacOS/gsplus
GSPORT=/Applications/GSport/GSport.app/Contents/MacOS/GSport
diff --git a/make/orca-rez b/make/orca-rez
index ca06346..76ba02e 100755
--- a/make/orca-rez
+++ b/make/orca-rez
@@ -15,7 +15,7 @@ BASENAME=`echo $FILENAME | sed 's/\.rez$//'`
DEPSNAME="${BASENAME}.rez.d"
OBJSNAME="${BASENAME}.r"
-$ORCA --trace-gsos compile $* keep="${OBJSNAME}" "$FILENAME" 2> $ERROUTPUT
+$ORCA --trace-gsos compile "$@" keep="${OBJSNAME}" "$FILENAME" 2> $ERROUTPUT
RESULT=$?
awk '
diff --git a/make/tail.mk b/make/tail.mk
index a3db053..aa87269 100644
--- a/make/tail.mk
+++ b/make/tail.mk
@@ -18,7 +18,14 @@ ifeq ($(TARGETTYPE),shell)
BUILDTARGET=$(PGM)
else ifeq ($(TARGETTYPE),desktop)
FILETYPE=s16
- AUXTYPE=-a 0x0000db03
+ ifeq ($(MESSAGE_CENTER),1)
+ AUXTYPE=-a 0x0000db07
+ else
+ AUXTYPE=-a 0x0000db03
+ endif
+ CFLAGS+=-dMESSAGE_CENTER=$(MESSAGE_CENTER)
+ REZFLAGS+=rez='-d DESKTOP_RES_MODE=$(DESKTOP_RES_MODE)'
+ REZFLAGS+=rez='-d MESSAGE_CENTER=$(MESSAGE_CENTER)'
else ifeq ($(TARGETTYPE),cda)
FILETYPE=cda
DISKIMAGEDEST=System/Desk.Accs
diff --git a/pkg/Templates/Apple IIgs/ORCAC Desktop Application.xctemplate/TemplateInfo.plist b/pkg/Templates/Apple IIgs/ORCAC Desktop Application.xctemplate/TemplateInfo.plist
index 420a8d1..11dd035 100644
--- a/pkg/Templates/Apple IIgs/ORCAC Desktop Application.xctemplate/TemplateInfo.plist
+++ b/pkg/Templates/Apple IIgs/ORCAC Desktop Application.xctemplate/TemplateInfo.plist
@@ -142,7 +142,7 @@
Name
Desktop Resolution
Description
- Specify 640 or 320 pixel desktop enviroment.
+ Specify 640x200 or 320x200 resolution desktop enviroment.
Type
popup
Default
@@ -153,6 +153,18 @@
320
+
+ Identifier
+ MESSAGECENTER
+ Name
+ Message Center
+ Description
+ Specify whether the application will support opening and printing files.
+ Type
+ checkbox
+ Default
+ 0
+
Targets
diff --git a/pkg/Templates/Apple IIgs/ORCAC Desktop Application.xctemplate/main.c b/pkg/Templates/Apple IIgs/ORCAC Desktop Application.xctemplate/main.c
index 88f0c0b..48a2575 100644
--- a/pkg/Templates/Apple IIgs/ORCAC Desktop Application.xctemplate/main.c
+++ b/pkg/Templates/Apple IIgs/ORCAC Desktop Application.xctemplate/main.c
@@ -8,6 +8,7 @@
*/
+
#include
#include
#include
@@ -49,7 +50,6 @@ typedef struct tDocument
GrafPortPtr wPtr;
char documentName[MAX_DOCUMENT_NAME + 1];
BOOLEAN isOnDisk;
- ResultBuf255Hndl fileName;
ResultBuf255Hndl pathName;
PrRecHndl printRecordHandle;
} tDocument;
@@ -80,7 +80,7 @@ const char * resourceString(int resourceId, const char * defaultValue)
HLock(handle);
result = (const char *) (*handle);
}
- return(result);
+ return result;
}
@@ -136,21 +136,69 @@ void drawContents(void)
const char * getUntitledName(void)
{
static int untitledNum = 1;
- static char buffer[MAX_DOCUMENT_NAME];
+ static char buffer[MAX_DOCUMENT_NAME + 1];
const char *untitledFormat = resourceString(UNTITLED_STRING, " Untitled %d ");
- sprintf(buffer, untitledFormat, untitledNum);
+ sprintf(buffer + 1, untitledFormat, untitledNum);
+ buffer[0] = strlen(buffer + 1);
+
freeResourceString(UNTITLED_STRING);
untitledNum++;
- return(buffer);
+ // Returns a Pascal string with a length byte prefix
+ return buffer;
+}
+
+
+const char * documentNameFromGSOSString(ResultBuf255Ptr gsosString)
+{
+ static char buffer[MAX_DOCUMENT_NAME + 1];
+ int nameLen = gsosString->bufString.length;
+
+ strcpy(buffer + 1, " ");
+ nameLen = gsosString->bufString.length;
+ if (nameLen > MAX_DOCUMENT_NAME - 5)
+ nameLen = MAX_DOCUMENT_NAME - 5;
+ strncat(buffer + 1, gsosString->bufString.text, nameLen);
+ strcat(buffer + 1, " ");
+ buffer[0] = strlen(buffer + 1);
+
+ return buffer;
+}
+
+
+const char * documentNameFromPath(wStringPtr pathString)
+{
+ static char buffer[MAX_DOCUMENT_NAME + 1];
+ int nameLen = pathString->length;
+ char * path = pathString->text;
+ int lastSeparator = 0;
+ int offset;
+
+ for (offset = 0; offset < nameLen; offset++) {
+ if ((path[offset] == ':') ||
+ (path[offset] == '/'))
+ lastSeparator = offset + 1;
+ }
+
+ path = &(path[lastSeparator]);
+ nameLen -= lastSeparator;
+
+ strcpy(buffer + 1, " ");
+ if (nameLen > MAX_DOCUMENT_NAME - 5)
+ nameLen = MAX_DOCUMENT_NAME - 5;
+ strncat(buffer + 1, path, nameLen);
+ strcat(buffer + 1, " ");
+ buffer[0] = strlen(buffer + 1);
+
+ return buffer;
}
tDocument * newDocument(const char * windowName)
{
+ // windowName is a Pascal string with a length byte prefix
tDocument * documentPtr;
- int titleLength;
documentPtr = malloc(sizeof(tDocument));
if (documentPtr == NULL) {
@@ -161,20 +209,15 @@ tDocument * newDocument(const char * windowName)
if (toolerror() != 0) {
showErrorAlert(MALLOC_ERROR_STRING, toolerror());
free(documentPtr);
- return(NULL);
+ return NULL;
}
PrDefault(documentPtr->printRecordHandle);
documentPtr->isOnDisk = FALSE;
- documentPtr->fileName = NULL;
documentPtr->pathName = NULL;
- titleLength = strlen(windowName);
- if (titleLength > MAX_DOCUMENT_NAME) {
- titleLength = MAX_DOCUMENT_NAME;
- }
- documentPtr->documentName[0] = titleLength;
- strncpy(&(documentPtr->documentName[1]), windowName, titleLength);
+ documentPtr->documentName[0] = windowName[0];
+ strncpy(documentPtr->documentName + 1, windowName + 1, windowName[0]);
documentPtr->wPtr = NewWindow2(documentPtr->documentName, 0, drawContents, NULL, refIsResource,
WINDOW_RESID, rWindParam1);
@@ -182,7 +225,7 @@ tDocument * newDocument(const char * windowName)
showErrorAlert(NEW_WINDOW_ERROR_STRING, toolerror());
DisposeHandle((Handle)documentPtr->printRecordHandle);
free(documentPtr);
- return(NULL);
+ return NULL;
}
documentPtr->nextDocument = documentList;
@@ -192,7 +235,7 @@ tDocument * newDocument(const char * windowName)
documentList = documentPtr;
- return(documentPtr);
+ return documentPtr;
}
@@ -418,11 +461,7 @@ void closeDocument(GrafPortPtr wPtr)
if (documentPtr == NULL)
return;
-
- if (documentPtr->fileName != NULL) {
- DisposeHandle((Handle) documentPtr->fileName);
- documentPtr->fileName = NULL;
- }
+
if (documentPtr->pathName != NULL) {
DisposeHandle((Handle) documentPtr->pathName);
documentPtr->pathName = NULL;
@@ -501,11 +540,8 @@ void doFileOpen(void)
{
tDocument * documentPtr;
SFTypeList2 fileTypes;
- Handle nameHandle;
- ResultBuf255Ptr namePtr;
- int nameLen;
- char documentName[MAX_DOCUMENT_NAME];
SFReplyRec2 reply;
+ ResultBuf255Hndl nameHandle;
/* By default, we want to open text files only which is what
the following fileTypes request. Customize as necessary. */
@@ -523,22 +559,14 @@ void doFileOpen(void)
}
if (reply.good) {
- nameHandle = (Handle) reply.nameRef;
- HLock(nameHandle);
- namePtr = (ResultBuf255Ptr) (*nameHandle);
- strcpy(documentName, " ");
- nameLen = namePtr->bufString.length;
- if (nameLen > MAX_DOCUMENT_NAME - 5)
- nameLen = MAX_DOCUMENT_NAME - 5;
- strncat(documentName, namePtr->bufString.text, nameLen);
- strcat(documentName, " ");
- HUnlock(nameHandle);
- documentPtr = newDocument(documentName);
+ nameHandle = (ResultBuf255Hndl) reply.nameRef;
+ HLock((Handle) nameHandle);
+ documentPtr = newDocument(documentNameFromGSOSString(*nameHandle));
+ DisposeHandle((Handle) nameHandle);
+
if (documentPtr == NULL) {
- DisposeHandle((Handle) reply.nameRef);
DisposeHandle((Handle) reply.pathRef);
} else {
- documentPtr->fileName = (ResultBuf255Hndl) reply.nameRef;
documentPtr->pathName = (ResultBuf255Hndl) reply.pathRef;
documentPtr->isOnDisk = loadDocument(documentPtr);
@@ -551,10 +579,9 @@ void doFileOpen(void)
void doFileSaveAs(void)
{
- Handle nameHandle;
- ResultBuf255Ptr namePtr;
- int nameLen;
+ ResultBuf255Hndl nameHandle;
SFReplyRec2 reply;
+ const char * documentName;
tDocument * documentPtr = findDocumentFromWindow(FrontWindow());
if (documentPtr == NULL)
@@ -563,9 +590,9 @@ void doFileSaveAs(void)
reply.nameRefDesc = refIsNewHandle;
reply.pathRefDesc = refIsNewHandle;
- if (documentPtr->fileName == NULL)
+ if (documentPtr->pathName == NULL)
SFPutFile2(30, 30, refIsResource, SAVE_FILE_STRING, refIsPointer,
- (Ref) &(documentPtr->fileName), &reply);
+ (Ref) &(documentPtr->pathName), &reply);
else
SFPutFile2(30, 30, refIsResource, SAVE_FILE_STRING, refIsPointer,
(Ref) &((*(documentPtr->pathName))->bufString), &reply);
@@ -576,20 +603,15 @@ void doFileSaveAs(void)
}
if (reply.good) {
- nameHandle = (Handle) reply.nameRef;
- HLock(nameHandle);
- namePtr = (ResultBuf255Ptr) (*nameHandle);
- strcpy(documentPtr->documentName, " ");
- nameLen = namePtr->bufString.length;
- if (nameLen > MAX_DOCUMENT_NAME - 6)
- nameLen = MAX_DOCUMENT_NAME - 6;
- strncat(documentPtr->documentName, namePtr->bufString.text, nameLen);
- strcat(documentPtr->documentName, " ");
- documentPtr->documentName[0] = strlen(documentPtr->documentName) - 1;
- HUnlock(nameHandle);
+ nameHandle = (ResultBuf255Hndl) reply.nameRef;
+ HLock((Handle) nameHandle);
+ documentName = documentNameFromGSOSString(*nameHandle);
+ documentPtr->documentName[0] = documentName[0];
+ strncpy(documentPtr->documentName + 1, documentName + 1, documentName[0]);
+ DisposeHandle((Handle) nameHandle);
+
SetWTitle(documentPtr->documentName, documentPtr->wPtr);
- documentPtr->fileName = (ResultBuf255Hndl) reply.nameRef;
documentPtr->pathName = (ResultBuf255Hndl) reply.pathRef;
documentPtr->isOnDisk = TRUE;
saveDocument(documentPtr);
@@ -788,6 +810,76 @@ void dimMenus(void)
}
+void handleMessages(void)
+{
+#if MESSAGE_CENTER == 1
+ Handle msgHandle;
+ MessageRecGSPtr msgPtr;
+ wStringPtr pathPtr;
+ tDocument * documentPtr;
+ ResultBuf255Ptr resultBufPtr;
+
+ msgHandle = NewHandle(1, userid, 0, NULL);
+ if (toolerror() != 0) {
+ showErrorAlert(MALLOC_ERROR_STRING, toolerror());
+ return;
+ }
+
+ MessageCenter(getMessage, fileInfoTypeGS, msgHandle);
+ if (toolerror() != 0) {
+ DisposeHandle(msgHandle);
+ return;
+ }
+
+ MessageCenter(deleteMessage, fileInfoTypeGS, msgHandle);
+ HLock(msgHandle);
+ msgPtr = (MessageRecGSPtr)(*msgHandle);
+
+ for (pathPtr = msgPtr->fileNames;
+ pathPtr->length != 0;
+ pathPtr = (wStringPtr)(pathPtr->text + pathPtr->length))
+ {
+ documentPtr = newDocument(documentNameFromPath(pathPtr));
+ if (documentPtr == NULL)
+ continue;
+
+ documentPtr->pathName = (ResultBuf255Hndl)NewHandle(pathPtr->length + 4, userid, 0, NULL);
+ if (toolerror() != 0)
+ {
+ showErrorAlert(MALLOC_ERROR_STRING, toolerror());
+ closeDocument(documentPtr->wPtr);
+ continue;
+ }
+ HLock((Handle) documentPtr->pathName);
+ resultBufPtr = *(documentPtr->pathName);
+ resultBufPtr->bufSize = pathPtr->length + 4;
+ resultBufPtr->bufString.length = pathPtr->length;
+ memcpy(resultBufPtr->bufString.text, pathPtr->text, pathPtr->length);
+ HUnlock((Handle) documentPtr->pathName);
+
+ documentPtr->isOnDisk = loadDocument(documentPtr);
+
+ if (!documentPtr->isOnDisk)
+ {
+ closeDocument(documentPtr->wPtr);
+ continue;
+ }
+
+ if (msgPtr->printFlag)
+ {
+ doFilePrint();
+ closeDocument(documentPtr->wPtr);
+ }
+ }
+
+ if (msgPtr->printFlag)
+ doFileQuit();
+
+ DisposeHandle(msgHandle);
+#endif
+}
+
+
void initMenus(void)
{
int height;
@@ -839,7 +931,10 @@ int main(void)
initMenus();
InitCursor();
+ handleMessages();
+
while (!shouldQuit) {
+ HandleDiskInsert(hdiScan | hdiHandle, 0);
dimMenus();
event = TaskMaster(everyEvent, &myEvent);
TOOLFAIL("Unable to handle next event");
diff --git a/pkg/Templates/Apple IIgs/ORCAC Desktop Application.xctemplate/main.h b/pkg/Templates/Apple IIgs/ORCAC Desktop Application.xctemplate/main.h
index ad388e1..982a687 100644
--- a/pkg/Templates/Apple IIgs/ORCAC Desktop Application.xctemplate/main.h
+++ b/pkg/Templates/Apple IIgs/ORCAC Desktop Application.xctemplate/main.h
@@ -74,9 +74,4 @@
#define TOOL_STARTUP 1
-/* By default, thie template builds for 640x200 mode. To build for
- * 320x200 change the following value to 320 */
-#define RES_MODE ___VARIABLE_RESOLUTIONMODE___
-
-
#endif /* defined(_GUARD_PROJECT___PROJECTNAMEASIDENTIFIER____FILE___FILEBASENAMEASIDENTIFIER____) */
diff --git a/pkg/Templates/Apple IIgs/ORCAC Desktop Application.xctemplate/main.rez b/pkg/Templates/Apple IIgs/ORCAC Desktop Application.xctemplate/main.rez
index 6603118..401832a 100644
--- a/pkg/Templates/Apple IIgs/ORCAC Desktop Application.xctemplate/main.rez
+++ b/pkg/Templates/Apple IIgs/ORCAC Desktop Application.xctemplate/main.rez
@@ -25,6 +25,38 @@ resource rVersion (1) {
"Copyright \$A9 ___YEAR___ ___FULLUSERNAME___"
};
+#if MESSAGE_CENTER == 1
+/* Bunde resource */
+resource rBundle (1, preload, nospecialmemory) {
+ nil, /* rIcon ID for application if you wish a custom icon */
+ 1,
+ {
+ {
+ native + LaunchThis,
+ {0}, /* rFinderPath ID for this document */
+ {nil}, /* rIcon ID for large icon for document */
+ {nil}, /* rIcon ID for small icon for document */
+ "", /* String to describe this type of document */
+ },
+ Filetype + AuxType, /* Match field bits */
+ MatchFileType {{$04}}, /* File type to match */
+ MatchAuxType { /* Auxiliary file type to match */
+ {$00000000,$00000000}
+ },
+ empty {},
+ empty {},
+ empty {},
+ empty {},
+ empty {},
+ empty {},
+ empty {},
+ empty {},
+ empty {},
+ empty {}
+ }
+};
+#endif
+
/* Menu bars */
resource rMenuBar (MENU_BAR) {
@@ -237,7 +269,7 @@ resource rPString (HELLO_WORLD_STRING, noCrossBank) {"Hello, world!"};
/* Alert strings */
resource rAlertString (ABOUT_ALERT_STRING) {
"0" /* Custom size */
-#if RES_MODE == 320
+#if DESKTOP_RES_MODE == 320
"\$38\$00" /* Upper Y coordinate at 56 */
"\$10\$00" /* Left X coordinate at 16 */
"\$90\$00" /* Lower Y coorinate at 144 */
@@ -288,7 +320,7 @@ resource rWindParam1 (WINDOW_RESID) {
{0, 0}, /* page ver horiz */
0, /* winfoRefCon */
10, /* wInfoHeight */
-#if RES_MODE == 320
+#if DESKTOP_RES_MODE == 320
{30, 10, 183, 300}, /* wposition */
#else
{30, 10, 183, 602}, /* wposition */
@@ -302,7 +334,7 @@ resource rWindParam1 (WINDOW_RESID) {
/* Controls */
resource rControlTemplate (CONTROL_TEXT_EDIT) {
CONTROL_TEXT_EDIT, /* Application defined ID */
-#if RES_MODE == 320
+#if DESKTOP_RES_MODE == 320
{0,0,165,300}, /* Bounding rectangle */
#else
{0,0,165,620}, /* Bounding rectangle */
@@ -339,7 +371,7 @@ resource rControlTemplate (CONTROL_TEXT_EDIT) {
/* Tools */
resource rToolStartup (TOOL_STARTUP) {
-#if RES_MODE == 320
+#if DESKTOP_RES_MODE == 320
mode320,
#else
mode640,
diff --git a/pkg/Templates/Apple IIgs/ORCAM Desktop Application.xctemplate/TemplateInfo.plist b/pkg/Templates/Apple IIgs/ORCAM Desktop Application.xctemplate/TemplateInfo.plist
index 3211fc9..4df4aac 100644
--- a/pkg/Templates/Apple IIgs/ORCAM Desktop Application.xctemplate/TemplateInfo.plist
+++ b/pkg/Templates/Apple IIgs/ORCAM Desktop Application.xctemplate/TemplateInfo.plist
@@ -136,7 +136,7 @@
Name
Desktop Resolution
Description
- Specify 640 or 320 pixel desktop enviroment.
+ Specify 640x200 or 320x200 resolution desktop enviroment.
Type
popup
Default
diff --git a/pkg/Templates/Apple IIgs/ORCAM Desktop Application.xctemplate/main.rez b/pkg/Templates/Apple IIgs/ORCAM Desktop Application.xctemplate/main.rez
index 4303d39..899d4c2 100644
--- a/pkg/Templates/Apple IIgs/ORCAM Desktop Application.xctemplate/main.rez
+++ b/pkg/Templates/Apple IIgs/ORCAM Desktop Application.xctemplate/main.rez
@@ -35,10 +35,6 @@
#define toolStartup 1
-/* By default, thie template builds for 640x200 mode. To build for
- * 320x200 change the following value to 320 */
-#define RES_MODE ___VARIABLE_RESOLUTIONMODE___
-
resource rVersion (1) {
{
@@ -220,7 +216,7 @@ resource rPString (appleAbout, noCrossBank) {"About ___PROJECTNAME___..."};
resource rAlertString (aboutAlertString) {
"0" /* Custom size */
-#if RES_MODE == 320
+#if DESKTOP_RES_MODE == 320
"\$38\$00" /* Upper Y coordinate at 56 */
"\$10\$00" /* Left X coordinate at 16 */
"\$90\$00" /* Lower Y coorinate at 144 */
@@ -256,7 +252,7 @@ resource rWindParam1 (windowRes) {
{0, 0}, /* page ver horiz */
0, /* winfoRefCon */
10, /* wInfoHeight */
-#if RES_MODE == 320
+#if DESKTOP_RES_MODE == 320
{30, 10, 183, 300}, /* wposition */
#else
{30, 10, 183, 602}, /* wposition */
@@ -268,7 +264,7 @@ resource rWindParam1 (windowRes) {
resource rToolStartup (toolStartup) {
-#if RES_MODE == 320
+#if DESKTOP_RES_MODE == 320
mode320,
#else
mode640,
diff --git a/pkg/createPackage b/pkg/createPackage
index 9a2c0d6..d2760e8 100755
--- a/pkg/createPackage
+++ b/pkg/createPackage
@@ -9,28 +9,42 @@ cp -R pkg/Plug-ins $TMPDIR
PROJECTS=/tmp/projects.$$
cat > $PROJECTS << EOF
-cda:orca:ORCAC Classic Desk Accessory
-cda:orca:ORCAM Classic Desk Accessory
-cdev:orca:ORCAC Control Panel
-cdev:orca:ORCAM Control Panel
-desktop:orca:ORCAC Desktop Application
-desktop:orca:ORCAM Desktop Application
-shell:gno:ORCAC GNO Shell Command
-nda:orca:ORCAC New Desk Accessory
-nda:orca:ORCAM New Desk Accessory
-shell:orca:ORCAC Shell Command
-shell:orca:ORCAM Shell Command
+cda:orca:ORCAC Classic Desk Accessory:0:0
+cda:orca:ORCAM Classic Desk Accessory:0:0
+cdev:orca:ORCAC Control Panel:0:0
+cdev:orca:ORCAM Control Panel:0:0
+desktop:orca:ORCAC Desktop Application:1:1
+desktop:orca:ORCAM Desktop Application:1:0
+shell:gno:ORCAC GNO Shell Command:0:0
+nda:orca:ORCAC New Desk Accessory:0:0
+nda:orca:ORCAM New Desk Accessory:0:0
+shell:orca:ORCAC Shell Command:0:0
+shell:orca:ORCAM Shell Command:0:0
EOF
while read PROJECT
do
- PROJECTTYPE=`echo $PROJECT | awk -F: '{print $1}'`
- SHELLTYPE=`echo $PROJECT | awk -F: '{print $2}'`
- PROJECTNAME=`echo $PROJECT | awk -F: '{print $3}'`
+ PROJECT_TYPE=`echo $PROJECT | awk -F: '{print $1}'`
+ SHELL_TYPE=`echo $PROJECT | awk -F: '{print $2}'`
+ PROJECT_NAME=`echo $PROJECT | awk -F: '{print $3}'`
+ SUPPORTS_RES_MODE=`echo $PROJECT | awk -F: '{print $4}'`
+ SUPPORTS_MESSAGE_CENTER=`echo $PROJECT | awk -F: '{print $5}'`
+
sed "
- /^# TARGETTYPE=${PROJECTTYPE}/s/^# //
- /^# export ORCA=.*\/${SHELLTYPE}$/s/^# //" Makefile > "${TMPDIR}/Templates/Apple IIgs/${PROJECTNAME}.xctemplate/Makefile"
- cp -R make "${TMPDIR}/Templates/Apple IIgs/${PROJECTNAME}.xctemplate/"
+ /^# TARGETTYPE=${PROJECT_TYPE}/s/^# //
+ /^# export ORCA=.*\/${SHELL_TYPE}$/s/^# //" Makefile > "${TMPDIR}/Templates/Apple IIgs/${PROJECT_NAME}.xctemplate/Makefile"
+
+ if [ "$SUPPORTS_RES_MODE" -eq 1 ]
+ then
+ sed -i "" 's/^# DESKTOP_RES_MODE=.*$/DESKTOP_RES_MODE=___VARIABLE_RESOLUTIONMODE___/' "${TMPDIR}/Templates/Apple IIgs/${PROJECT_NAME}.xctemplate/Makefile"
+ fi
+
+ if [ "$SUPPORTS_MESSAGE_CENTER" -eq 1 ]
+ then
+ sed -i "" 's/^# MESSAGE_CENTER=.*$/MESSAGE_CENTER=___VARIABLE_MESSAGECENTER___/' "${TMPDIR}/Templates/Apple IIgs/${PROJECT_NAME}.xctemplate/Makefile"
+ fi
+
+ cp -R make "${TMPDIR}/Templates/Apple IIgs/${PROJECT_NAME}.xctemplate/"
done < $PROJECTS
rm -f $PROJECTS