diff options
21 files changed, 2195 insertions, 723 deletions
diff --git a/indra/llwindow/llopenglview-objc.h b/indra/llwindow/llopenglview-objc.h index 8abe81ce9e..6b055bc665 100644 --- a/indra/llwindow/llopenglview-objc.h +++ b/indra/llwindow/llopenglview-objc.h @@ -69,4 +69,9 @@  - (void) registerMouseExitCallback:(VoidCallback)callback;  - (void) registerDeltaUpdateCallback:(MouseCallback)callback; -@end
\ No newline at end of file +@end + +void setLLNSWindowRef(LLNSWindow* window); +void setLLOpenGLViewRef(LLOpenGLView* view); +LLNSWindow* winRef; +LLOpenGLView* glviewRef; diff --git a/indra/llwindow/llopenglview-objc.mm b/indra/llwindow/llopenglview-objc.mm index a96c4cf82c..7c148f4acd 100644 --- a/indra/llwindow/llopenglview-objc.mm +++ b/indra/llwindow/llopenglview-objc.mm @@ -19,9 +19,12 @@  - (void)windowResized:(NSNotification *)notification;  { -	NSSize size = [[self window] frame].size; -	 -	mResizeCallback(size.width, size.height); +	if (mResizeCallback != nil) +	{ +		NSSize size = [[self window] frame].size; +		 +		mResizeCallback(size.width, size.height); +	}  }  - (void)dealloc @@ -194,23 +197,29 @@  }  - (void) keyDown:(NSEvent *)theEvent { -	mKeyDownCallback([theEvent keyCode], [theEvent modifierFlags]); -	 -	NSString *chars = [theEvent charactersIgnoringModifiers]; -	for (uint i = 0; i < [chars length]; i++) +	if (mKeyDownCallback != nil && mUnicodeCallback != nil)  	{ -		mUnicodeCallback([chars characterAtIndex:i], [theEvent modifierFlags]); -	} -	 -	// The viewer expects return to be submitted separately as a unicode character. -	if ([theEvent keyCode] == 3 || [theEvent keyCode] == 13) -	{ -		mUnicodeCallback([theEvent keyCode], [theEvent modifierFlags]); +		mKeyDownCallback([theEvent keyCode], [theEvent modifierFlags]); +		 +		NSString *chars = [theEvent charactersIgnoringModifiers]; +		for (uint i = 0; i < [chars length]; i++) +		{ +			mUnicodeCallback([chars characterAtIndex:i], [theEvent modifierFlags]); +		} +		 +		// The viewer expects return to be submitted separately as a unicode character. +		if ([theEvent keyCode] == 3 || [theEvent keyCode] == 13) +		{ +			mUnicodeCallback([theEvent keyCode], [theEvent modifierFlags]); +		}  	}  }  - (void) keyUp:(NSEvent *)theEvent { -	mKeyUpCallback([theEvent keyCode], [theEvent modifierFlags]); +	if (mKeyUpCallback != nil) +	{ +		mKeyUpCallback([theEvent keyCode], [theEvent modifierFlags]); +	}  }  - (void)flagsChanged:(NSEvent *)theEvent { @@ -219,41 +228,59 @@  - (void) mouseDown:(NSEvent *)theEvent  { -	if ([theEvent clickCount] == 2) +	if (mMouseDoubleClickCallback != nil && mMouseDownCallback != nil)  	{ -		mMouseDoubleClickCallback(mMousePos, [theEvent modifierFlags]); -	} else if ([theEvent clickCount] == 1) { -		mMouseDownCallback(mMousePos, [theEvent modifierFlags]); +		if ([theEvent clickCount] == 2) +		{ +			mMouseDoubleClickCallback(mMousePos, [theEvent modifierFlags]); +		} else if ([theEvent clickCount] == 1) { +			mMouseDownCallback(mMousePos, [theEvent modifierFlags]); +		}  	}  }  - (void) mouseUp:(NSEvent *)theEvent  { -	mMouseUpCallback(mMousePos, [theEvent modifierFlags]); +	if (mMouseUpCallback != nil) +	{ +		mMouseUpCallback(mMousePos, [theEvent modifierFlags]); +	}  }  - (void) rightMouseDown:(NSEvent *)theEvent  { -	mRightMouseDownCallback(mMousePos, [theEvent modifierFlags]); +	if (mRightMouseDownCallback != nil) +	{ +		mRightMouseDownCallback(mMousePos, [theEvent modifierFlags]); +	}  }  - (void) rightMouseUp:(NSEvent *)theEvent  { -	mRightMouseUpCallback(mMousePos, [theEvent modifierFlags]); +	if (mRightMouseUpCallback != nil) +	{ +		mRightMouseUpCallback(mMousePos, [theEvent modifierFlags]); +	}  }  - (void)mouseMoved:(NSEvent *)theEvent { -	float mouseDeltas[2] = { -		[theEvent deltaX], -		[theEvent deltaZ] -	}; -	 -	mDeltaUpdateCallback(mouseDeltas, 0); -	 -	NSPoint mPoint = [theEvent locationInWindow]; -	mMousePos[0] = mPoint.x; -	mMousePos[1] = mPoint.y; -	mMouseMovedCallback(mMousePos, 0); +	if (mDeltaUpdateCallback != nil && mMouseMovedCallback != nil) +	{ +		float mouseDeltas[2] = { +			[theEvent deltaX], +			[theEvent deltaZ] +		}; +		 +		mDeltaUpdateCallback(mouseDeltas, 0); +		 +		NSPoint mPoint = [theEvent locationInWindow]; +		mMousePos[0] = mPoint.x; +		mMousePos[1] = mPoint.y; +		if (mMouseMovedCallback != nil) +		{ +			mMouseMovedCallback(mMousePos, 0); +		} +	}  }  // NSWindow doesn't trigger mouseMoved when the mouse is being clicked and dragged. @@ -261,27 +288,36 @@  - (void) mouseDragged:(NSEvent *)theEvent  { -	float mouseDeltas[2] = { -		[theEvent deltaX], -		[theEvent deltaZ] -	}; -	 -	mDeltaUpdateCallback(mouseDeltas, 0); -	 -	NSPoint mPoint = [theEvent locationInWindow]; -	mMousePos[0] = mPoint.x; -	mMousePos[1] = mPoint.y; -	mMouseMovedCallback(mMousePos, 0); +	if (mDeltaUpdateCallback != nil && mMouseMovedCallback != nil) +	{ +		float mouseDeltas[2] = { +			[theEvent deltaX], +			[theEvent deltaZ] +		}; +		 +		mDeltaUpdateCallback(mouseDeltas, 0); +		 +		NSPoint mPoint = [theEvent locationInWindow]; +		mMousePos[0] = mPoint.x; +		mMousePos[1] = mPoint.y; +		mMouseMovedCallback(mMousePos, 0); +	}  }  - (void) scrollWheel:(NSEvent *)theEvent  { -	mScrollWhellCallback(-[theEvent deltaY]); +	if (mScrollWhellCallback != nil) +	{ +		mScrollWhellCallback(-[theEvent deltaY]); +	}  }  - (void) mouseExited:(NSEvent *)theEvent  { -	mMouseExitCallback(); +	if (mMouseExitCallback != nil) +	{ +		mMouseExitCallback(); +	}  }  - (void) registerKeyDownCallback:(KeyCallback)callback @@ -349,4 +385,14 @@  	mDeltaUpdateCallback = callback;  } -@end
\ No newline at end of file +@end + +void setLLNSWindowRef(LLNSWindow* window) +{ +	winRef = window; +} + +void setLLOpenGLViewRef(LLOpenGLView* view) +{ +	glviewRef = view; +} diff --git a/indra/llwindow/llwindowmacosx-objc.h b/indra/llwindow/llwindowmacosx-objc.h index 47ae13cb25..abaeda1f91 100644 --- a/indra/llwindow/llwindowmacosx-objc.h +++ b/indra/llwindow/llwindowmacosx-objc.h @@ -57,7 +57,7 @@ NSWindowRef createNSWindow(int x, int y, int width, int height);  #include <OpenGL/OpenGL.h>  GLViewRef createOpenGLView(NSWindowRef window);  void glSwapBuffers(void* context); -CGLContextObj getCGLContextObj(NSWindowRef window); +CGLContextObj getCGLContextObj(GLViewRef view);  void getContentViewBounds(NSWindowRef window, float* bounds);  void getWindowSize(NSWindowRef window, float* size);  void setWindowSize(NSWindowRef window, int width, int height); @@ -80,5 +80,7 @@ void registerMouseMovedCallback(NSWindowRef window, MouseCallback callback);  void registerScrollCallback(NSWindowRef window, ScrollWheelCallback callback);  void registerMouseExitCallback(NSWindowRef window, VoidCallback callback);  void registerDeltaUpdateCallback(NSWindowRef window, MouseCallback callback); +NSWindowRef getMainAppWindow(); +GLViewRef getGLView(NSWindowRef window);  unsigned int getModifiers(); diff --git a/indra/llwindow/llwindowmacosx-objc.mm b/indra/llwindow/llwindowmacosx-objc.mm index 03c0f55883..07efc25ea6 100644 --- a/indra/llwindow/llwindowmacosx-objc.mm +++ b/indra/llwindow/llwindowmacosx-objc.mm @@ -54,10 +54,10 @@ void setupCocoa()  		//   http://developer.apple.com/samplecode/CarbonCocoa_PictureCursor/index.html  		//	Needed for Carbon based applications which call into Cocoa -		NSApplicationLoad(); +		// NSApplicationLoad();  		//	Must first call [[[NSWindow alloc] init] release] to get the NSWindow machinery set up so that NSCursor can use a window to cache the cursor image -		[[[NSWindow alloc] init] release]; +		//[[[NSWindow alloc] init] release];  		[pool release]; @@ -188,10 +188,9 @@ void glSwapBuffers(void* context)  	[(NSOpenGLContext*)context flushBuffer];  } -CGLContextObj getCGLContextObj(NSWindowRef window) +CGLContextObj getCGLContextObj(GLViewRef view)  { -	LLOpenGLView *glview = [(LLNSWindow*)window contentView]; -	return [glview getCGLContextObj]; +	return [(LLOpenGLView *)view getCGLContextObj];  }  CGLPixelFormatObj* getCGLPixelFormatObj(NSWindowRef window) @@ -331,6 +330,16 @@ void registerDeltaUpdateCallback(NSWindowRef window, MouseCallback callback)  	[(LLNSWindow*)window registerDeltaUpdateCallback:callback];  } +NSWindowRef getMainAppWindow() +{ +	return winRef; +} + +GLViewRef getGLView(NSWindowRef window) +{ +	return glviewRef; +} +  unsigned int getModifiers()  {  	return [NSEvent modifierFlags]; diff --git a/indra/llwindow/llwindowmacosx.cpp b/indra/llwindow/llwindowmacosx.cpp index 1fb8bea802..a616b2df2d 100644 --- a/indra/llwindow/llwindowmacosx.cpp +++ b/indra/llwindow/llwindowmacosx.cpp @@ -38,7 +38,6 @@  #include "lldir.h"  #include "indra_constants.h" -#include <Carbon/Carbon.h>  #include <OpenGL/OpenGL.h>  extern BOOL gDebugWindowProc; @@ -342,7 +341,7 @@ BOOL LLWindowMacOSX::createContext(int x, int y, int width, int height, int bits  	if (mWindow == NULL)  	{  		LL_INFOS("Window") << "Creating window..." << LL_ENDL; -		mWindow = createNSWindow(x, y, width, height); +		mWindow = getMainAppWindow();  		LL_INFOS("Window") << "Registering key callbacks..." << LL_ENDL;  		registerKeyDownCallback(mWindow, callKeyDown);  		registerKeyUpCallback(mWindow, callKeyUp); @@ -361,9 +360,11 @@ BOOL LLWindowMacOSX::createContext(int x, int y, int width, int height, int bits  	if(mContext == NULL)  	{  		LL_INFOS("Window") << "Creating GL view..." << LL_ENDL; +		// Our OpenGL view is already defined within SecondLife.xib. +		// Get the view instead.  		mGLView = createOpenGLView(mWindow);  		registerResizeEventCallback(mGLView, callResize); -		mContext = getCGLContextObj(mWindow); +		mContext = getCGLContextObj(mGLView);  		// Since we just created the context, it needs to be set up.  		glNeedsInit = TRUE;  	} @@ -577,132 +578,6 @@ void LLWindowMacOSX::gatherInput()  		stopDockTileBounce();  	} -	EventRecord evt; -	while(WaitNextEvent(everyEvent, &evt, 0, NULL)) -	{ -		//			printf("WaitNextEvent returned true, event is %d.\n", evt.what); -		switch(evt.what) -		{ -			case mouseDown: -			{ -				short part; -				WindowRef window; -				long selectResult; -				part = FindWindow(evt.where, &window); -				switch ( part ) -				{ -					case inMenuBar: -						selectResult = MenuSelect(evt.where); -						 -						HiliteMenu(0); -						break; -				} -			} -				break; -				 -			case kHighLevelEvent: -				AEProcessAppleEvent (&evt); -				break; -				 -			case updateEvt: -				// We shouldn't be getting these regularly (since our window will be buffered), but we need to handle them correctly... -				BeginUpdate((WindowRef)evt.message); -				EndUpdate((WindowRef)evt.message); -				break; -				 -		} -	} -	/* -	U32 event = getLatestEvent(mWindow); -	switch (event) { -		case 0: -			// Nothing's happened since our last handled event. -			break; -			 -		case 1: -		{ -			gKeyboard->handleKeyDown(getKeyDown(mWindow), getModifiers(mWindow)); -			mCallbacks->handleUnicodeChar(getLastCharacter(mWindow), gKeyboard->currentMask(FALSE)); // currentMask has the appropriately translated modifiers. -			mLastModifiers = gKeyboard->currentMask(FALSE); -		} -			break; -			 -		case 2: -			gKeyboard->handleKeyUp(getKeyUp(mWindow), getModifiers(mWindow)); -			mLastModifiers = gKeyboard->currentMask(FALSE); -			break; -			 -		case 3: -			break; -			 -		case 4: -		{ -			LLCoordScreen	inCoords; -			LLCoordGL		outCoords; -			float*			mouseCoords = getMouseDown(mWindow); -			inCoords.mX = llround(mouseCoords[0]); -			inCoords.mY = llround(mouseCoords[1]); -			convertCoords(inCoords, &outCoords); -			mCallbacks->handleMouseDown(this, outCoords, getModifiers(mWindow)); -			mLastModifiers = gKeyboard->currentMask(FALSE); -		} -			break; -		case 5: -		{ -			LLCoordScreen	inCoords; -			LLCoordGL		outCoords; -			float*			mouseCoords = getMouseUp(mWindow); -			inCoords.mX = llround(mouseCoords[0]); -			inCoords.mY = llround(mouseCoords[1]); -			convertCoords(inCoords, &outCoords); -			mCallbacks->handleMouseUp(this, outCoords, getModifiers(mWindow)); -			mLastModifiers = gKeyboard->currentMask(FALSE); -		} -			break; -		case 6: -		{ -			LLCoordScreen	inCoords; -			LLCoordGL		outCoords; -			float*			mouseCoords = getRightMouseDown(mWindow); -			inCoords.mX = llround(mouseCoords[0]); -			inCoords.mY = llround(mouseCoords[1]); -			convertCoords(inCoords, &outCoords); -			mCallbacks->handleRightMouseDown(this, outCoords, getModifiers(mWindow)); -			mLastModifiers = gKeyboard->currentMask(FALSE); -		} -			break; -		case 7: -		{ -			LLCoordScreen	inCoords; -			LLCoordGL		outCoords; -			float*			mouseCoords = getRightMouseDown(mWindow); -			inCoords.mX = llround(mouseCoords[0]); -			inCoords.mY = llround(mouseCoords[1]); -			convertCoords(inCoords, &outCoords); -			mCallbacks->handleRightMouseDown(this, outCoords, getModifiers(mWindow)); -			mLastModifiers = gKeyboard->currentMask(FALSE); -		} -			break; -		case 8: // Double click -		{ -			LLCoordScreen	inCoords; -			LLCoordGL		outCoords; -			float*			mouseCoords = getRightMouseDown(mWindow); -			inCoords.mX = llround(mouseCoords[0]); -			inCoords.mY = llround(mouseCoords[1]); -			convertCoords(inCoords, &outCoords); -			mCallbacks->handleDoubleClick(this, outCoords, getModifiers(mWindow)); -			mLastModifiers = gKeyboard->currentMask(FALSE); -		} -			break; -		case 10: // Text input (for IMEs) -			 -			break; -		default: -			break; -			 -	}*/ -	  	updateCursor();  } diff --git a/indra/llwindow/llwindowmacosx.h b/indra/llwindow/llwindowmacosx.h index a821dcabd8..487af7658f 100644 --- a/indra/llwindow/llwindowmacosx.h +++ b/indra/llwindow/llwindowmacosx.h @@ -33,8 +33,6 @@  #include "lltimer.h" -//#include <Carbon/Carbon.h> -//#include <AGL/agl.h>  #include <ApplicationServices/ApplicationServices.h>  #include <OpenGL/OpenGL.h> diff --git a/indra/media_plugins/webkit/mac_volume_catcher.cpp b/indra/media_plugins/webkit/mac_volume_catcher.cpp index 8a06bb8487..2f3f2211a3 100644 --- a/indra/media_plugins/webkit/mac_volume_catcher.cpp +++ b/indra/media_plugins/webkit/mac_volume_catcher.cpp @@ -35,7 +35,6 @@  #include "volume_catcher.h" -#include <Carbon/Carbon.h>  #include <QuickTime/QuickTime.h>  #include <AudioUnit/AudioUnit.h> diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index dff2c04fbc..73f5ecc38c 100755 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -1231,6 +1231,10 @@ source_group("CMake Rules" FILES ViewerInstall.cmake)  if (DARWIN)    LIST(APPEND viewer_SOURCE_FILES llappviewermacosx.cpp) +  LIST(APPEND viewer_SOURCE_FILES llappviewermacosx-objc.h) +  LIST(APPEND viewer_SOURCE_FILES llappviewermacosx-objc.mm) +  LIST(APPEND viewer_SOURCE_FILES llappviewermacosx-delegate.h) +  LIST(APPEND viewer_SOURCE_FILES llappviewermacosx-delegate.mm)    find_library(AGL_LIBRARY AGL)    find_library(APPKIT_LIBRARY AppKit) @@ -1251,7 +1255,7 @@ if (DARWIN)      macview.r      gpu_table.txt      Info-SecondLife.plist -    SecondLife.nib/ +    SecondLife.xib/      # CMake doesn't seem to support Xcode language variants well just yet      English.lproj/InfoPlist.strings      English.lproj/language.txt diff --git a/indra/newview/Info-SecondLife.plist b/indra/newview/Info-SecondLife.plist index f7b11b217c..5db52f040f 100644 --- a/indra/newview/Info-SecondLife.plist +++ b/indra/newview/Info-SecondLife.plist @@ -61,6 +61,10 @@  	</array>  	<key>CFBundleVersion</key>  	<string>2.1.0.13828</string> +	<key>NSPrincipalClass</key> +	<string>NSApplication</string> +	<key>NSMainNibFile</key> +	<string>SecondLife</string>  	<key>CSResourcesFileMapped</key>  	<true/>  </dict> diff --git a/indra/newview/SecondLife.nib/classes.nib b/indra/newview/SecondLife.nib/classes.nib deleted file mode 100644 index ea58db1189..0000000000 --- a/indra/newview/SecondLife.nib/classes.nib +++ /dev/null @@ -1,4 +0,0 @@ -{ -IBClasses = (); -IBVersion = 1; -} diff --git a/indra/newview/SecondLife.nib/info.nib b/indra/newview/SecondLife.nib/info.nib deleted file mode 100644 index 1b531de104..0000000000 --- a/indra/newview/SecondLife.nib/info.nib +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> -<plist version="1.0"> -<dict> -	<key>IBDocumentLocation</key> -	<string>85 13 356 240 0 0 1280 1002 </string> -	<key>IBEditorPositions</key> -	<dict> -		<key>29</key> -		<string>27 314 247 44 0 0 1280 1002 </string> -	</dict> -	<key>IBFramework Version</key> -	<string>362.0</string> -	<key>IBOpenObjects</key> -	<array> -		<integer>191</integer> -	</array> -	<key>IBSystem Version</key> -	<string>7D24</string> -	<key>targetFramework</key> -	<string>IBCarbonFramework</string> -</dict> -</plist> diff --git a/indra/newview/SecondLife.nib/objects.xib b/indra/newview/SecondLife.nib/objects.xib deleted file mode 100644 index b7ff30f2b2..0000000000 --- a/indra/newview/SecondLife.nib/objects.xib +++ /dev/null @@ -1,259 +0,0 @@ -<?xml version="1.0" standalone="yes"?> -<object class="NSIBObjectData"> -  <string name="targetFramework">IBCarbonFramework</string> -  <object name="rootObject" class="NSCustomObject" id="1"> -    <string name="customClass">NSApplication</string> -  </object> -  <array count="31" name="allObjects"> -    <object class="IBCarbonMenu" id="29"> -      <string name="title">SecondLife</string> -      <array count="4" name="items"> -        <object class="IBCarbonMenuItem" id="182"> -          <string name="title">Second Life</string> -          <object name="submenu" class="IBCarbonMenu" id="181"> -            <string name="title">Second Life</string> -            <array count="1" name="items"> -              <object class="IBCarbonMenuItem" id="183"> -                <boolean name="disabled">TRUE</boolean> -                <boolean name="updateSingleItem">TRUE</boolean> -                <string name="title">About Second Life</string> -                <int name="keyEquivalentModifier">0</int> -                <ostype name="command">abou</ostype> -              </object> -            </array> -            <string name="name">_NSAppleMenu</string> -          </object> -        </object> -        <object class="IBCarbonMenuItem" id="127"> -          <string name="title">File</string> -          <object name="submenu" class="IBCarbonMenu" id="131"> -            <string name="title">File</string> -          </object> -        </object> -        <object class="IBCarbonMenuItem" id="152"> -          <string name="title">Edit</string> -          <object name="submenu" class="IBCarbonMenu" id="147"> -            <string name="title">Edit</string> -            <array count="10" name="items"> -              <object class="IBCarbonMenuItem" id="141"> -                <boolean name="updateSingleItem">TRUE</boolean> -                <string name="title">Undo</string> -                <string name="keyEquivalent">z</string> -                <ostype name="command">undo</ostype> -              </object> -              <object class="IBCarbonMenuItem" id="146"> -                <boolean name="updateSingleItem">TRUE</boolean> -                <string name="title">Redo</string> -                <string name="keyEquivalent">Z</string> -                <ostype name="command">redo</ostype> -              </object> -              <object class="IBCarbonMenuItem" id="142"> -                <boolean name="separator">TRUE</boolean> -              </object> -              <object class="IBCarbonMenuItem" id="143"> -                <boolean name="updateSingleItem">TRUE</boolean> -                <string name="title">Cut</string> -                <string name="keyEquivalent">x</string> -                <ostype name="command">cut </ostype> -              </object> -              <object class="IBCarbonMenuItem" id="149"> -                <boolean name="updateSingleItem">TRUE</boolean> -                <string name="title">Copy</string> -                <string name="keyEquivalent">c</string> -                <ostype name="command">copy</ostype> -              </object> -              <object class="IBCarbonMenuItem" id="144"> -                <boolean name="updateSingleItem">TRUE</boolean> -                <string name="title">Paste</string> -                <string name="keyEquivalent">v</string> -                <ostype name="command">past</ostype> -              </object> -              <object class="IBCarbonMenuItem" id="151"> -                <boolean name="updateSingleItem">TRUE</boolean> -                <string name="title">Delete</string> -                <ostype name="command">clea</ostype> -              </object> -              <object class="IBCarbonMenuItem" id="148"> -                <boolean name="updateSingleItem">TRUE</boolean> -                <string name="title">Select All</string> -                <string name="keyEquivalent">a</string> -                <ostype name="command">sall</ostype> -              </object> -              <object class="IBCarbonMenuItem" id="188"> -                <boolean name="separator">TRUE</boolean> -              </object> -              <object class="IBCarbonMenuItem" id="187"> -                <boolean name="updateSingleItem">TRUE</boolean> -                <string name="title">Special Characters…</string> -                <ostype name="command">chrp</ostype> -              </object> -            </array> -          </object> -        </object> -        <object class="IBCarbonMenuItem" id="153"> -          <string name="title">Window</string> -          <object name="submenu" class="IBCarbonMenu" id="154"> -            <string name="title">Window</string> -            <array count="6" name="items"> -              <object class="IBCarbonMenuItem" id="155"> -                <boolean name="dynamic">TRUE</boolean> -                <boolean name="updateSingleItem">TRUE</boolean> -                <string name="title">Minimize Window</string> -                <string name="keyEquivalent">m</string> -                <ostype name="command">mini</ostype> -              </object> -              <object class="IBCarbonMenuItem" id="184"> -                <boolean name="dynamic">TRUE</boolean> -                <boolean name="updateSingleItem">TRUE</boolean> -                <string name="title">Minimize All Windows</string> -                <string name="keyEquivalent">m</string> -                <int name="keyEquivalentModifier">1572864</int> -                <ostype name="command">mina</ostype> -              </object> -              <object class="IBCarbonMenuItem" id="186"> -                <boolean name="updateSingleItem">TRUE</boolean> -                <string name="title">Zoom</string> -                <ostype name="command">zoom</ostype> -              </object> -              <object class="IBCarbonMenuItem" id="156"> -                <boolean name="separator">TRUE</boolean> -              </object> -              <object class="IBCarbonMenuItem" id="157"> -                <boolean name="dynamic">TRUE</boolean> -                <boolean name="updateSingleItem">TRUE</boolean> -                <string name="title">Bring All to Front</string> -                <ostype name="command">bfrt</ostype> -              </object> -              <object class="IBCarbonMenuItem" id="185"> -                <boolean name="dynamic">TRUE</boolean> -                <boolean name="updateSingleItem">TRUE</boolean> -                <string name="title">Arrange in Front</string> -                <int name="keyEquivalentModifier">1572864</int> -                <ostype name="command">frnt</ostype> -              </object> -            </array> -            <string name="name">_NSWindowsMenu</string> -          </object> -        </object> -      </array> -      <string name="name">_NSMainMenu</string> -    </object> -    <reference idRef="127"/> -    <reference idRef="131"/> -    <reference idRef="141"/> -    <reference idRef="142"/> -    <reference idRef="143"/> -    <reference idRef="144"/> -    <reference idRef="146"/> -    <reference idRef="147"/> -    <reference idRef="148"/> -    <reference idRef="149"/> -    <reference idRef="151"/> -    <reference idRef="152"/> -    <reference idRef="153"/> -    <reference idRef="154"/> -    <reference idRef="155"/> -    <reference idRef="156"/> -    <reference idRef="157"/> -    <reference idRef="181"/> -    <reference idRef="182"/> -    <reference idRef="183"/> -    <reference idRef="184"/> -    <reference idRef="185"/> -    <reference idRef="186"/> -    <reference idRef="187"/> -    <reference idRef="188"/> -    <object class="IBCarbonRootControl" id="190"> -      <string name="bounds">0 0 482 694 </string> -      <string name="viewFrame">0 0 694 482 </string> -      <array count="2" name="subviews"> -        <object class="IBCarbonButton" id="192"> -          <string name="bounds">442 604 462 674 </string> -          <string name="viewFrame">604 442 70 20 </string> -          <string name="title">OK</string> -          <ostype name="command">ok  </ostype> -          <object name="layoutInfo" class="IBCarbonHILayoutInfo"> -            <int name="bindingBottomKind">2</int> -            <int name="bindingRightKind">2</int> -          </object> -          <int name="buttonType">1</int> -        </object> -        <object class="IBCarbonScrollView" id="201"> -          <string name="bounds">20 20 422 674 </string> -          <string name="viewFrame">20 20 654 402 </string> -          <array count="1" name="subviews"> -            <object class="IBCarbonTextView" id="200"> -              <string name="bounds">20 20 422 659 </string> -              <string name="viewFrame">0 0 639 402 </string> -              <ostype name="controlSignature">text</ostype> -              <int name="fontStyle">5</int> -              <boolean name="readOnly">TRUE</boolean> -            </object> -          </array> -          <boolean name="scrollHorizontally">FALSE</boolean> -        </object> -      </array> -    </object> -    <object class="IBCarbonWindow" id="191"> -      <string name="windowRect">84 72 566 766 </string> -      <string name="title">Release Notes</string> -      <reference name="rootControl" idRef="190"/> -      <boolean name="receiveUpdates">FALSE</boolean> -      <boolean name="hasCloseBox">FALSE</boolean> -      <boolean name="hasCollapseBox">FALSE</boolean> -      <boolean name="hasHorizontalZoom">FALSE</boolean> -      <boolean name="isResizable">FALSE</boolean> -      <boolean name="hasVerticalZoom">FALSE</boolean> -      <boolean name="liveResize">TRUE</boolean> -      <boolean name="compositing">TRUE</boolean> -      <int name="carbonWindowClass">4</int> -      <int name="windowPosition">1</int> -      <boolean name="isConstrained">FALSE</boolean> -    </object> -    <reference idRef="192"/> -    <reference idRef="200"/> -    <reference idRef="201"/> -  </array> -  <array count="31" name="allParents"> -    <reference idRef="1"/> -    <reference idRef="29"/> -    <reference idRef="127"/> -    <reference idRef="147"/> -    <reference idRef="147"/> -    <reference idRef="147"/> -    <reference idRef="147"/> -    <reference idRef="147"/> -    <reference idRef="152"/> -    <reference idRef="147"/> -    <reference idRef="147"/> -    <reference idRef="147"/> -    <reference idRef="29"/> -    <reference idRef="29"/> -    <reference idRef="153"/> -    <reference idRef="154"/> -    <reference idRef="154"/> -    <reference idRef="154"/> -    <reference idRef="182"/> -    <reference idRef="29"/> -    <reference idRef="181"/> -    <reference idRef="154"/> -    <reference idRef="154"/> -    <reference idRef="154"/> -    <reference idRef="147"/> -    <reference idRef="147"/> -    <reference idRef="191"/> -    <reference idRef="1"/> -    <reference idRef="190"/> -    <reference idRef="201"/> -    <reference idRef="190"/> -  </array> -  <dictionary count="3" name="nameTable"> -    <string>Files Owner</string> -    <reference idRef="1"/> -    <string>MenuBar</string> -    <reference idRef="29"/> -    <string>Release Notes</string> -    <reference idRef="191"/> -  </dictionary> -  <unsigned_int name="nextObjectID">202</unsigned_int> -</object> diff --git a/indra/newview/SecondLife.xib b/indra/newview/SecondLife.xib new file mode 100644 index 0000000000..2fc83bd009 --- /dev/null +++ b/indra/newview/SecondLife.xib @@ -0,0 +1,1848 @@ +<?xml version="1.0" encoding="UTF-8"?> +<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="8.00"> +	<data> +		<int key="IBDocument.SystemTarget">1060</int> +		<string key="IBDocument.SystemVersion">12C60</string> +		<string key="IBDocument.InterfaceBuilderVersion">2844</string> +		<string key="IBDocument.AppKitVersion">1187.34</string> +		<string key="IBDocument.HIToolboxVersion">625.00</string> +		<object class="NSMutableDictionary" key="IBDocument.PluginVersions"> +			<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string> +			<string key="NS.object.0">2844</string> +		</object> +		<array key="IBDocument.IntegratedClassDependencies"> +			<string>NSCustomObject</string> +			<string>NSMenu</string> +			<string>NSMenuItem</string> +			<string>NSView</string> +			<string>NSWindowTemplate</string> +		</array> +		<array key="IBDocument.PluginDependencies"> +			<string>com.apple.InterfaceBuilder.CocoaPlugin</string> +		</array> +		<object class="NSMutableDictionary" key="IBDocument.Metadata"> +			<string key="NS.key.0">PluginDependencyRecalculationVersion</string> +			<integer value="1" key="NS.object.0"/> +		</object> +		<array class="NSMutableArray" key="IBDocument.RootObjects" id="1048"> +			<object class="NSCustomObject" id="1021"> +				<string key="NSClassName">NSApplication</string> +			</object> +			<object class="NSCustomObject" id="1014"> +				<string key="NSClassName">FirstResponder</string> +			</object> +			<object class="NSCustomObject" id="1050"> +				<string key="NSClassName">NSApplication</string> +			</object> +			<object class="NSMenu" id="649796088"> +				<string key="NSTitle">Main Menu</string> +				<array class="NSMutableArray" key="NSMenuItems"> +					<object class="NSMenuItem" id="694149608"> +						<reference key="NSMenu" ref="649796088"/> +						<string key="NSTitle">Second Life</string> +						<string key="NSKeyEquiv"/> +						<int key="NSMnemonicLoc">2147483647</int> +						<object class="NSCustomResource" key="NSOnImage" id="353210768"> +							<string key="NSClassName">NSImage</string> +							<string key="NSResourceName">NSMenuCheckmark</string> +						</object> +						<object class="NSCustomResource" key="NSMixedImage" id="549394948"> +							<string key="NSClassName">NSImage</string> +							<string key="NSResourceName">NSMenuMixedState</string> +						</object> +						<string key="NSAction">submenuAction:</string> +						<object class="NSMenu" key="NSSubmenu" id="110575045"> +							<string key="NSTitle">Second Life</string> +							<array class="NSMutableArray" key="NSMenuItems"> +								<object class="NSMenuItem" id="238522557"> +									<reference key="NSMenu" ref="110575045"/> +									<string key="NSTitle">About Second Life</string> +									<string key="NSKeyEquiv"/> +									<int key="NSMnemonicLoc">2147483647</int> +									<reference key="NSOnImage" ref="353210768"/> +									<reference key="NSMixedImage" ref="549394948"/> +								</object> +								<object class="NSMenuItem" id="304266470"> +									<reference key="NSMenu" ref="110575045"/> +									<bool key="NSIsDisabled">YES</bool> +									<bool key="NSIsSeparator">YES</bool> +									<string key="NSTitle"/> +									<string key="NSKeyEquiv"/> +									<int key="NSMnemonicLoc">2147483647</int> +									<reference key="NSOnImage" ref="353210768"/> +									<reference key="NSMixedImage" ref="549394948"/> +								</object> +								<object class="NSMenuItem" id="609285721"> +									<reference key="NSMenu" ref="110575045"/> +									<string key="NSTitle">Preferences…</string> +									<string key="NSKeyEquiv">,</string> +									<int key="NSKeyEquivModMask">1048576</int> +									<int key="NSMnemonicLoc">2147483647</int> +									<reference key="NSOnImage" ref="353210768"/> +									<reference key="NSMixedImage" ref="549394948"/> +								</object> +								<object class="NSMenuItem" id="481834944"> +									<reference key="NSMenu" ref="110575045"/> +									<bool key="NSIsDisabled">YES</bool> +									<bool key="NSIsSeparator">YES</bool> +									<string key="NSTitle"/> +									<string key="NSKeyEquiv"/> +									<int key="NSMnemonicLoc">2147483647</int> +									<reference key="NSOnImage" ref="353210768"/> +									<reference key="NSMixedImage" ref="549394948"/> +								</object> +								<object class="NSMenuItem" id="1046388886"> +									<reference key="NSMenu" ref="110575045"/> +									<string key="NSTitle">Services</string> +									<string key="NSKeyEquiv"/> +									<int key="NSMnemonicLoc">2147483647</int> +									<reference key="NSOnImage" ref="353210768"/> +									<reference key="NSMixedImage" ref="549394948"/> +									<string key="NSAction">submenuAction:</string> +									<object class="NSMenu" key="NSSubmenu" id="752062318"> +										<string key="NSTitle">Services</string> +										<array class="NSMutableArray" key="NSMenuItems"/> +										<string key="NSName">_NSServicesMenu</string> +									</object> +								</object> +								<object class="NSMenuItem" id="646227648"> +									<reference key="NSMenu" ref="110575045"/> +									<bool key="NSIsDisabled">YES</bool> +									<bool key="NSIsSeparator">YES</bool> +									<string key="NSTitle"/> +									<string key="NSKeyEquiv"/> +									<int key="NSMnemonicLoc">2147483647</int> +									<reference key="NSOnImage" ref="353210768"/> +									<reference key="NSMixedImage" ref="549394948"/> +								</object> +								<object class="NSMenuItem" id="755159360"> +									<reference key="NSMenu" ref="110575045"/> +									<string key="NSTitle">Hide NewApplication</string> +									<string key="NSKeyEquiv">h</string> +									<int key="NSKeyEquivModMask">1048576</int> +									<int key="NSMnemonicLoc">2147483647</int> +									<reference key="NSOnImage" ref="353210768"/> +									<reference key="NSMixedImage" ref="549394948"/> +								</object> +								<object class="NSMenuItem" id="342932134"> +									<reference key="NSMenu" ref="110575045"/> +									<string key="NSTitle">Hide Others</string> +									<string key="NSKeyEquiv">h</string> +									<int key="NSKeyEquivModMask">1572864</int> +									<int key="NSMnemonicLoc">2147483647</int> +									<reference key="NSOnImage" ref="353210768"/> +									<reference key="NSMixedImage" ref="549394948"/> +								</object> +								<object class="NSMenuItem" id="908899353"> +									<reference key="NSMenu" ref="110575045"/> +									<string key="NSTitle">Show All</string> +									<string key="NSKeyEquiv"/> +									<int key="NSMnemonicLoc">2147483647</int> +									<reference key="NSOnImage" ref="353210768"/> +									<reference key="NSMixedImage" ref="549394948"/> +								</object> +								<object class="NSMenuItem" id="1056857174"> +									<reference key="NSMenu" ref="110575045"/> +									<bool key="NSIsDisabled">YES</bool> +									<bool key="NSIsSeparator">YES</bool> +									<string key="NSTitle"/> +									<string key="NSKeyEquiv"/> +									<int key="NSMnemonicLoc">2147483647</int> +									<reference key="NSOnImage" ref="353210768"/> +									<reference key="NSMixedImage" ref="549394948"/> +								</object> +								<object class="NSMenuItem" id="632727374"> +									<reference key="NSMenu" ref="110575045"/> +									<string key="NSTitle">Quit NewApplication</string> +									<string key="NSKeyEquiv">q</string> +									<int key="NSKeyEquivModMask">1048576</int> +									<int key="NSMnemonicLoc">2147483647</int> +									<reference key="NSOnImage" ref="353210768"/> +									<reference key="NSMixedImage" ref="549394948"/> +								</object> +							</array> +							<string key="NSName">_NSAppleMenu</string> +						</object> +					</object> +					<object class="NSMenuItem" id="379814623"> +						<reference key="NSMenu" ref="649796088"/> +						<string key="NSTitle">File</string> +						<string key="NSKeyEquiv"/> +						<int key="NSMnemonicLoc">2147483647</int> +						<reference key="NSOnImage" ref="353210768"/> +						<reference key="NSMixedImage" ref="549394948"/> +						<string key="NSAction">submenuAction:</string> +						<object class="NSMenu" key="NSSubmenu" id="720053764"> +							<string key="NSTitle">File</string> +							<array class="NSMutableArray" key="NSMenuItems"> +								<object class="NSMenuItem" id="705341025"> +									<reference key="NSMenu" ref="720053764"/> +									<string key="NSTitle">New</string> +									<string key="NSKeyEquiv">n</string> +									<int key="NSKeyEquivModMask">1048576</int> +									<int key="NSMnemonicLoc">2147483647</int> +									<reference key="NSOnImage" ref="353210768"/> +									<reference key="NSMixedImage" ref="549394948"/> +								</object> +								<object class="NSMenuItem" id="722745758"> +									<reference key="NSMenu" ref="720053764"/> +									<string key="NSTitle">Open…</string> +									<string key="NSKeyEquiv">o</string> +									<int key="NSKeyEquivModMask">1048576</int> +									<int key="NSMnemonicLoc">2147483647</int> +									<reference key="NSOnImage" ref="353210768"/> +									<reference key="NSMixedImage" ref="549394948"/> +								</object> +								<object class="NSMenuItem" id="1025936716"> +									<reference key="NSMenu" ref="720053764"/> +									<string key="NSTitle">Open Recent</string> +									<string key="NSKeyEquiv"/> +									<int key="NSMnemonicLoc">2147483647</int> +									<reference key="NSOnImage" ref="353210768"/> +									<reference key="NSMixedImage" ref="549394948"/> +									<string key="NSAction">submenuAction:</string> +									<object class="NSMenu" key="NSSubmenu" id="1065607017"> +										<string key="NSTitle">Open Recent</string> +										<array class="NSMutableArray" key="NSMenuItems"> +											<object class="NSMenuItem" id="759406840"> +												<reference key="NSMenu" ref="1065607017"/> +												<string key="NSTitle">Clear Menu</string> +												<string key="NSKeyEquiv"/> +												<int key="NSMnemonicLoc">2147483647</int> +												<reference key="NSOnImage" ref="353210768"/> +												<reference key="NSMixedImage" ref="549394948"/> +											</object> +										</array> +										<string key="NSName">_NSRecentDocumentsMenu</string> +									</object> +								</object> +								<object class="NSMenuItem" id="425164168"> +									<reference key="NSMenu" ref="720053764"/> +									<bool key="NSIsDisabled">YES</bool> +									<bool key="NSIsSeparator">YES</bool> +									<string key="NSTitle"/> +									<string key="NSKeyEquiv"/> +									<int key="NSMnemonicLoc">2147483647</int> +									<reference key="NSOnImage" ref="353210768"/> +									<reference key="NSMixedImage" ref="549394948"/> +								</object> +								<object class="NSMenuItem" id="776162233"> +									<reference key="NSMenu" ref="720053764"/> +									<string key="NSTitle">Close</string> +									<string key="NSKeyEquiv">w</string> +									<int key="NSKeyEquivModMask">1048576</int> +									<int key="NSMnemonicLoc">2147483647</int> +									<reference key="NSOnImage" ref="353210768"/> +									<reference key="NSMixedImage" ref="549394948"/> +								</object> +								<object class="NSMenuItem" id="1023925487"> +									<reference key="NSMenu" ref="720053764"/> +									<string key="NSTitle">Save…</string> +									<string key="NSKeyEquiv">s</string> +									<int key="NSKeyEquivModMask">1048576</int> +									<int key="NSMnemonicLoc">2147483647</int> +									<reference key="NSOnImage" ref="353210768"/> +									<reference key="NSMixedImage" ref="549394948"/> +								</object> +								<object class="NSMenuItem" id="579971712"> +									<reference key="NSMenu" ref="720053764"/> +									<string key="NSTitle">Revert to Saved</string> +									<string key="NSKeyEquiv"/> +									<int key="NSMnemonicLoc">2147483647</int> +									<reference key="NSOnImage" ref="353210768"/> +									<reference key="NSMixedImage" ref="549394948"/> +								</object> +								<object class="NSMenuItem" id="1010469920"> +									<reference key="NSMenu" ref="720053764"/> +									<bool key="NSIsDisabled">YES</bool> +									<bool key="NSIsSeparator">YES</bool> +									<string key="NSTitle"/> +									<string key="NSKeyEquiv"/> +									<int key="NSMnemonicLoc">2147483647</int> +									<reference key="NSOnImage" ref="353210768"/> +									<reference key="NSMixedImage" ref="549394948"/> +								</object> +								<object class="NSMenuItem" id="294629803"> +									<reference key="NSMenu" ref="720053764"/> +									<string key="NSTitle">Page Setup...</string> +									<string key="NSKeyEquiv">P</string> +									<int key="NSKeyEquivModMask">1179648</int> +									<int key="NSMnemonicLoc">2147483647</int> +									<reference key="NSOnImage" ref="353210768"/> +									<reference key="NSMixedImage" ref="549394948"/> +									<string key="NSToolTip"/> +								</object> +								<object class="NSMenuItem" id="49223823"> +									<reference key="NSMenu" ref="720053764"/> +									<string key="NSTitle">Print…</string> +									<string key="NSKeyEquiv">p</string> +									<int key="NSKeyEquivModMask">1048576</int> +									<int key="NSMnemonicLoc">2147483647</int> +									<reference key="NSOnImage" ref="353210768"/> +									<reference key="NSMixedImage" ref="549394948"/> +								</object> +							</array> +						</object> +					</object> +					<object class="NSMenuItem" id="725688984"> +						<reference key="NSMenu" ref="649796088"/> +						<string key="NSTitle">Edit</string> +						<string key="NSKeyEquiv"/> +						<int key="NSMnemonicLoc">2147483647</int> +						<reference key="NSOnImage" ref="353210768"/> +						<reference key="NSMixedImage" ref="549394948"/> +						<string key="NSAction">submenuAction:</string> +						<object class="NSMenu" key="NSSubmenu" id="701759256"> +							<string key="NSTitle">Edit</string> +							<array class="NSMutableArray" key="NSMenuItems"> +								<object class="NSMenuItem" id="521487141"> +									<reference key="NSMenu" ref="701759256"/> +									<string key="NSTitle">Undo</string> +									<string key="NSKeyEquiv">z</string> +									<int key="NSKeyEquivModMask">1048576</int> +									<int key="NSMnemonicLoc">2147483647</int> +									<reference key="NSOnImage" ref="353210768"/> +									<reference key="NSMixedImage" ref="549394948"/> +								</object> +								<object class="NSMenuItem" id="668936019"> +									<reference key="NSMenu" ref="701759256"/> +									<string key="NSTitle">Redo</string> +									<string key="NSKeyEquiv">Z</string> +									<int key="NSKeyEquivModMask">1048576</int> +									<int key="NSMnemonicLoc">2147483647</int> +									<reference key="NSOnImage" ref="353210768"/> +									<reference key="NSMixedImage" ref="549394948"/> +								</object> +								<object class="NSMenuItem" id="383018193"> +									<reference key="NSMenu" ref="701759256"/> +									<bool key="NSIsDisabled">YES</bool> +									<bool key="NSIsSeparator">YES</bool> +									<string key="NSTitle"/> +									<string key="NSKeyEquiv"/> +									<int key="NSMnemonicLoc">2147483647</int> +									<reference key="NSOnImage" ref="353210768"/> +									<reference key="NSMixedImage" ref="549394948"/> +								</object> +								<object class="NSMenuItem" id="984623395"> +									<reference key="NSMenu" ref="701759256"/> +									<string key="NSTitle">Cut</string> +									<string key="NSKeyEquiv">x</string> +									<int key="NSKeyEquivModMask">1048576</int> +									<int key="NSMnemonicLoc">2147483647</int> +									<reference key="NSOnImage" ref="353210768"/> +									<reference key="NSMixedImage" ref="549394948"/> +								</object> +								<object class="NSMenuItem" id="656529582"> +									<reference key="NSMenu" ref="701759256"/> +									<string key="NSTitle">Copy</string> +									<string key="NSKeyEquiv">c</string> +									<int key="NSKeyEquivModMask">1048576</int> +									<int key="NSMnemonicLoc">2147483647</int> +									<reference key="NSOnImage" ref="353210768"/> +									<reference key="NSMixedImage" ref="549394948"/> +								</object> +								<object class="NSMenuItem" id="1032676691"> +									<reference key="NSMenu" ref="701759256"/> +									<string key="NSTitle">Paste</string> +									<string key="NSKeyEquiv">v</string> +									<int key="NSKeyEquivModMask">1048576</int> +									<int key="NSMnemonicLoc">2147483647</int> +									<reference key="NSOnImage" ref="353210768"/> +									<reference key="NSMixedImage" ref="549394948"/> +								</object> +								<object class="NSMenuItem" id="808171693"> +									<reference key="NSMenu" ref="701759256"/> +									<string key="NSTitle">Paste and Match Style</string> +									<string key="NSKeyEquiv">V</string> +									<int key="NSKeyEquivModMask">1572864</int> +									<int key="NSMnemonicLoc">2147483647</int> +									<reference key="NSOnImage" ref="353210768"/> +									<reference key="NSMixedImage" ref="549394948"/> +								</object> +								<object class="NSMenuItem" id="919614590"> +									<reference key="NSMenu" ref="701759256"/> +									<string key="NSTitle">Delete</string> +									<string key="NSKeyEquiv"/> +									<int key="NSMnemonicLoc">2147483647</int> +									<reference key="NSOnImage" ref="353210768"/> +									<reference key="NSMixedImage" ref="549394948"/> +								</object> +								<object class="NSMenuItem" id="538907583"> +									<reference key="NSMenu" ref="701759256"/> +									<string key="NSTitle">Select All</string> +									<string key="NSKeyEquiv">a</string> +									<int key="NSKeyEquivModMask">1048576</int> +									<int key="NSMnemonicLoc">2147483647</int> +									<reference key="NSOnImage" ref="353210768"/> +									<reference key="NSMixedImage" ref="549394948"/> +								</object> +								<object class="NSMenuItem" id="189573236"> +									<reference key="NSMenu" ref="701759256"/> +									<bool key="NSIsDisabled">YES</bool> +									<bool key="NSIsSeparator">YES</bool> +									<string key="NSTitle"/> +									<string key="NSKeyEquiv"/> +									<int key="NSMnemonicLoc">2147483647</int> +									<reference key="NSOnImage" ref="353210768"/> +									<reference key="NSMixedImage" ref="549394948"/> +								</object> +								<object class="NSMenuItem" id="345821971"> +									<reference key="NSMenu" ref="701759256"/> +									<string key="NSTitle">Find</string> +									<string key="NSKeyEquiv"/> +									<int key="NSMnemonicLoc">2147483647</int> +									<reference key="NSOnImage" ref="353210768"/> +									<reference key="NSMixedImage" ref="549394948"/> +									<string key="NSAction">submenuAction:</string> +									<object class="NSMenu" key="NSSubmenu" id="907032324"> +										<string key="NSTitle">Find</string> +										<array class="NSMutableArray" key="NSMenuItems"> +											<object class="NSMenuItem" id="500637754"> +												<reference key="NSMenu" ref="907032324"/> +												<string key="NSTitle">Find…</string> +												<string key="NSKeyEquiv">f</string> +												<int key="NSKeyEquivModMask">1048576</int> +												<int key="NSMnemonicLoc">2147483647</int> +												<reference key="NSOnImage" ref="353210768"/> +												<reference key="NSMixedImage" ref="549394948"/> +												<int key="NSTag">1</int> +											</object> +											<object class="NSMenuItem" id="365968879"> +												<reference key="NSMenu" ref="907032324"/> +												<string key="NSTitle">Find and Replace…</string> +												<string key="NSKeyEquiv">f</string> +												<int key="NSKeyEquivModMask">1572864</int> +												<int key="NSMnemonicLoc">2147483647</int> +												<reference key="NSOnImage" ref="353210768"/> +												<reference key="NSMixedImage" ref="549394948"/> +												<int key="NSTag">12</int> +											</object> +											<object class="NSMenuItem" id="710145723"> +												<reference key="NSMenu" ref="907032324"/> +												<string key="NSTitle">Find Next</string> +												<string key="NSKeyEquiv">g</string> +												<int key="NSKeyEquivModMask">1048576</int> +												<int key="NSMnemonicLoc">2147483647</int> +												<reference key="NSOnImage" ref="353210768"/> +												<reference key="NSMixedImage" ref="549394948"/> +												<int key="NSTag">2</int> +											</object> +											<object class="NSMenuItem" id="226219456"> +												<reference key="NSMenu" ref="907032324"/> +												<string key="NSTitle">Find Previous</string> +												<string key="NSKeyEquiv">G</string> +												<int key="NSKeyEquivModMask">1048576</int> +												<int key="NSMnemonicLoc">2147483647</int> +												<reference key="NSOnImage" ref="353210768"/> +												<reference key="NSMixedImage" ref="549394948"/> +												<int key="NSTag">3</int> +											</object> +											<object class="NSMenuItem" id="56753965"> +												<reference key="NSMenu" ref="907032324"/> +												<string key="NSTitle">Use Selection for Find</string> +												<string key="NSKeyEquiv">e</string> +												<int key="NSKeyEquivModMask">1048576</int> +												<int key="NSMnemonicLoc">2147483647</int> +												<reference key="NSOnImage" ref="353210768"/> +												<reference key="NSMixedImage" ref="549394948"/> +												<int key="NSTag">7</int> +											</object> +											<object class="NSMenuItem" id="712516604"> +												<reference key="NSMenu" ref="907032324"/> +												<string key="NSTitle">Jump to Selection</string> +												<string key="NSKeyEquiv">j</string> +												<int key="NSKeyEquivModMask">1048576</int> +												<int key="NSMnemonicLoc">2147483647</int> +												<reference key="NSOnImage" ref="353210768"/> +												<reference key="NSMixedImage" ref="549394948"/> +											</object> +										</array> +									</object> +								</object> +								<object class="NSMenuItem" id="904504334"> +									<reference key="NSMenu" ref="701759256"/> +									<string key="NSTitle">Spelling and Grammar</string> +									<string key="NSKeyEquiv"/> +									<int key="NSMnemonicLoc">2147483647</int> +									<reference key="NSOnImage" ref="353210768"/> +									<reference key="NSMixedImage" ref="549394948"/> +									<string key="NSAction">submenuAction:</string> +									<object class="NSMenu" key="NSSubmenu" id="752506228"> +										<string key="NSTitle">Spelling</string> +										<array class="NSMutableArray" key="NSMenuItems"> +											<object class="NSMenuItem" id="184017712"> +												<reference key="NSMenu" ref="752506228"/> +												<string key="NSTitle">Show Spelling and Grammar</string> +												<string key="NSKeyEquiv">:</string> +												<int key="NSKeyEquivModMask">1048576</int> +												<int key="NSMnemonicLoc">2147483647</int> +												<reference key="NSOnImage" ref="353210768"/> +												<reference key="NSMixedImage" ref="549394948"/> +											</object> +											<object class="NSMenuItem" id="21600483"> +												<reference key="NSMenu" ref="752506228"/> +												<string key="NSTitle">Check Document Now</string> +												<string key="NSKeyEquiv">;</string> +												<int key="NSKeyEquivModMask">1048576</int> +												<int key="NSMnemonicLoc">2147483647</int> +												<reference key="NSOnImage" ref="353210768"/> +												<reference key="NSMixedImage" ref="549394948"/> +											</object> +											<object class="NSMenuItem" id="601403410"> +												<reference key="NSMenu" ref="752506228"/> +												<bool key="NSIsDisabled">YES</bool> +												<bool key="NSIsSeparator">YES</bool> +												<string key="NSTitle"/> +												<string key="NSKeyEquiv"/> +												<int key="NSMnemonicLoc">2147483647</int> +												<reference key="NSOnImage" ref="353210768"/> +												<reference key="NSMixedImage" ref="549394948"/> +											</object> +											<object class="NSMenuItem" id="553169338"> +												<reference key="NSMenu" ref="752506228"/> +												<string key="NSTitle">Check Spelling While Typing</string> +												<string key="NSKeyEquiv"/> +												<int key="NSMnemonicLoc">2147483647</int> +												<reference key="NSOnImage" ref="353210768"/> +												<reference key="NSMixedImage" ref="549394948"/> +											</object> +											<object class="NSMenuItem" id="544362921"> +												<reference key="NSMenu" ref="752506228"/> +												<string key="NSTitle">Check Grammar With Spelling</string> +												<string key="NSKeyEquiv"/> +												<int key="NSMnemonicLoc">2147483647</int> +												<reference key="NSOnImage" ref="353210768"/> +												<reference key="NSMixedImage" ref="549394948"/> +											</object> +											<object class="NSMenuItem" id="801119463"> +												<reference key="NSMenu" ref="752506228"/> +												<string key="NSTitle">Correct Spelling Automatically</string> +												<string key="NSKeyEquiv"/> +												<int key="NSMnemonicLoc">2147483647</int> +												<reference key="NSOnImage" ref="353210768"/> +												<reference key="NSMixedImage" ref="549394948"/> +											</object> +										</array> +									</object> +								</object> +								<object class="NSMenuItem" id="733935158"> +									<reference key="NSMenu" ref="701759256"/> +									<string key="NSTitle">Substitutions</string> +									<string key="NSKeyEquiv"/> +									<int key="NSMnemonicLoc">2147483647</int> +									<reference key="NSOnImage" ref="353210768"/> +									<reference key="NSMixedImage" ref="549394948"/> +									<string key="NSAction">submenuAction:</string> +									<object class="NSMenu" key="NSSubmenu" id="598912068"> +										<string key="NSTitle">Substitutions</string> +										<array class="NSMutableArray" key="NSMenuItems"> +											<object class="NSMenuItem" id="48614235"> +												<reference key="NSMenu" ref="598912068"/> +												<string key="NSTitle">Show Substitutions</string> +												<string key="NSKeyEquiv"/> +												<int key="NSMnemonicLoc">2147483647</int> +												<reference key="NSOnImage" ref="353210768"/> +												<reference key="NSMixedImage" ref="549394948"/> +											</object> +											<object class="NSMenuItem" id="671306806"> +												<reference key="NSMenu" ref="598912068"/> +												<bool key="NSIsDisabled">YES</bool> +												<bool key="NSIsSeparator">YES</bool> +												<string key="NSTitle"/> +												<string key="NSKeyEquiv"/> +												<int key="NSMnemonicLoc">2147483647</int> +												<reference key="NSOnImage" ref="353210768"/> +												<reference key="NSMixedImage" ref="549394948"/> +											</object> +											<object class="NSMenuItem" id="486300146"> +												<reference key="NSMenu" ref="598912068"/> +												<string key="NSTitle">Smart Copy/Paste</string> +												<string key="NSKeyEquiv"/> +												<int key="NSMnemonicLoc">2147483647</int> +												<reference key="NSOnImage" ref="353210768"/> +												<reference key="NSMixedImage" ref="549394948"/> +											</object> +											<object class="NSMenuItem" id="209508969"> +												<reference key="NSMenu" ref="598912068"/> +												<string key="NSTitle">Smart Quotes</string> +												<string key="NSKeyEquiv"/> +												<int key="NSMnemonicLoc">2147483647</int> +												<reference key="NSOnImage" ref="353210768"/> +												<reference key="NSMixedImage" ref="549394948"/> +											</object> +											<object class="NSMenuItem" id="744245411"> +												<reference key="NSMenu" ref="598912068"/> +												<string key="NSTitle">Smart Dashes</string> +												<string key="NSKeyEquiv"/> +												<int key="NSMnemonicLoc">2147483647</int> +												<reference key="NSOnImage" ref="353210768"/> +												<reference key="NSMixedImage" ref="549394948"/> +											</object> +											<object class="NSMenuItem" id="297725902"> +												<reference key="NSMenu" ref="598912068"/> +												<string key="NSTitle">Smart Links</string> +												<string key="NSKeyEquiv"/> +												<int key="NSMnemonicLoc">2147483647</int> +												<reference key="NSOnImage" ref="353210768"/> +												<reference key="NSMixedImage" ref="549394948"/> +											</object> +											<object class="NSMenuItem" id="693876809"> +												<reference key="NSMenu" ref="598912068"/> +												<string key="NSTitle">Data Detectors</string> +												<string key="NSKeyEquiv"/> +												<int key="NSMnemonicLoc">2147483647</int> +												<reference key="NSOnImage" ref="353210768"/> +												<reference key="NSMixedImage" ref="549394948"/> +											</object> +											<object class="NSMenuItem" id="166923016"> +												<reference key="NSMenu" ref="598912068"/> +												<string key="NSTitle">Text Replacement</string> +												<string key="NSKeyEquiv"/> +												<int key="NSMnemonicLoc">2147483647</int> +												<reference key="NSOnImage" ref="353210768"/> +												<reference key="NSMixedImage" ref="549394948"/> +											</object> +										</array> +									</object> +								</object> +								<object class="NSMenuItem" id="146086820"> +									<reference key="NSMenu" ref="701759256"/> +									<string key="NSTitle">Transformations</string> +									<string key="NSKeyEquiv"/> +									<int key="NSMnemonicLoc">2147483647</int> +									<reference key="NSOnImage" ref="353210768"/> +									<reference key="NSMixedImage" ref="549394948"/> +									<string key="NSAction">submenuAction:</string> +									<object class="NSMenu" key="NSSubmenu" id="139936407"> +										<string key="NSTitle">Transformations</string> +										<array class="NSMutableArray" key="NSMenuItems"> +											<object class="NSMenuItem" id="765834084"> +												<reference key="NSMenu" ref="139936407"/> +												<string key="NSTitle">Make Upper Case</string> +												<string key="NSKeyEquiv"/> +												<int key="NSMnemonicLoc">2147483647</int> +												<reference key="NSOnImage" ref="353210768"/> +												<reference key="NSMixedImage" ref="549394948"/> +											</object> +											<object class="NSMenuItem" id="287915663"> +												<reference key="NSMenu" ref="139936407"/> +												<string key="NSTitle">Make Lower Case</string> +												<string key="NSKeyEquiv"/> +												<int key="NSMnemonicLoc">2147483647</int> +												<reference key="NSOnImage" ref="353210768"/> +												<reference key="NSMixedImage" ref="549394948"/> +											</object> +											<object class="NSMenuItem" id="473368487"> +												<reference key="NSMenu" ref="139936407"/> +												<string key="NSTitle">Capitalize</string> +												<string key="NSKeyEquiv"/> +												<int key="NSMnemonicLoc">2147483647</int> +												<reference key="NSOnImage" ref="353210768"/> +												<reference key="NSMixedImage" ref="549394948"/> +											</object> +										</array> +									</object> +								</object> +								<object class="NSMenuItem" id="14778224"> +									<reference key="NSMenu" ref="701759256"/> +									<string key="NSTitle">Speech</string> +									<string key="NSKeyEquiv"/> +									<int key="NSMnemonicLoc">2147483647</int> +									<reference key="NSOnImage" ref="353210768"/> +									<reference key="NSMixedImage" ref="549394948"/> +									<string key="NSAction">submenuAction:</string> +									<object class="NSMenu" key="NSSubmenu" id="667491561"> +										<string key="NSTitle">Speech</string> +										<array class="NSMutableArray" key="NSMenuItems"> +											<object class="NSMenuItem" id="874008672"> +												<reference key="NSMenu" ref="667491561"/> +												<string key="NSTitle">Start Speaking</string> +												<string key="NSKeyEquiv"/> +												<int key="NSMnemonicLoc">2147483647</int> +												<reference key="NSOnImage" ref="353210768"/> +												<reference key="NSMixedImage" ref="549394948"/> +											</object> +											<object class="NSMenuItem" id="464437401"> +												<reference key="NSMenu" ref="667491561"/> +												<string key="NSTitle">Stop Speaking</string> +												<string key="NSKeyEquiv"/> +												<int key="NSMnemonicLoc">2147483647</int> +												<reference key="NSOnImage" ref="353210768"/> +												<reference key="NSMixedImage" ref="549394948"/> +											</object> +										</array> +									</object> +								</object> +							</array> +						</object> +					</object> +					<object class="NSMenuItem" id="713487014"> +						<reference key="NSMenu" ref="649796088"/> +						<string key="NSTitle">Window</string> +						<string key="NSKeyEquiv"/> +						<int key="NSMnemonicLoc">2147483647</int> +						<reference key="NSOnImage" ref="353210768"/> +						<reference key="NSMixedImage" ref="549394948"/> +						<string key="NSAction">submenuAction:</string> +						<object class="NSMenu" key="NSSubmenu" id="835318025"> +							<string key="NSTitle">Window</string> +							<array class="NSMutableArray" key="NSMenuItems"> +								<object class="NSMenuItem" id="1011231497"> +									<reference key="NSMenu" ref="835318025"/> +									<string key="NSTitle">Minimize</string> +									<string key="NSKeyEquiv">m</string> +									<int key="NSKeyEquivModMask">1048576</int> +									<int key="NSMnemonicLoc">2147483647</int> +									<reference key="NSOnImage" ref="353210768"/> +									<reference key="NSMixedImage" ref="549394948"/> +								</object> +								<object class="NSMenuItem" id="575023229"> +									<reference key="NSMenu" ref="835318025"/> +									<string key="NSTitle">Zoom</string> +									<string key="NSKeyEquiv"/> +									<int key="NSMnemonicLoc">2147483647</int> +									<reference key="NSOnImage" ref="353210768"/> +									<reference key="NSMixedImage" ref="549394948"/> +								</object> +								<object class="NSMenuItem" id="86356408"> +									<reference key="NSMenu" ref="835318025"/> +									<string key="NSTitle">Enter Full Screen</string> +									<string key="NSKeyEquiv">f</string> +									<int key="NSKeyEquivModMask">1310720</int> +									<int key="NSMnemonicLoc">2147483647</int> +									<reference key="NSOnImage" ref="353210768"/> +									<reference key="NSMixedImage" ref="549394948"/> +								</object> +								<object class="NSMenuItem" id="299356726"> +									<reference key="NSMenu" ref="835318025"/> +									<bool key="NSIsDisabled">YES</bool> +									<bool key="NSIsSeparator">YES</bool> +									<string key="NSTitle"/> +									<string key="NSKeyEquiv"/> +									<int key="NSMnemonicLoc">2147483647</int> +									<reference key="NSOnImage" ref="353210768"/> +									<reference key="NSMixedImage" ref="549394948"/> +								</object> +								<object class="NSMenuItem" id="625202149"> +									<reference key="NSMenu" ref="835318025"/> +									<string key="NSTitle">Bring All to Front</string> +									<string key="NSKeyEquiv"/> +									<int key="NSMnemonicLoc">2147483647</int> +									<reference key="NSOnImage" ref="353210768"/> +									<reference key="NSMixedImage" ref="549394948"/> +								</object> +							</array> +							<string key="NSName">_NSWindowsMenu</string> +						</object> +					</object> +					<object class="NSMenuItem" id="391199113"> +						<reference key="NSMenu" ref="649796088"/> +						<string key="NSTitle">Help</string> +						<string key="NSKeyEquiv"/> +						<int key="NSMnemonicLoc">2147483647</int> +						<reference key="NSOnImage" ref="353210768"/> +						<reference key="NSMixedImage" ref="549394948"/> +						<string key="NSAction">submenuAction:</string> +						<object class="NSMenu" key="NSSubmenu" id="374024848"> +							<string key="NSTitle">Help</string> +							<array class="NSMutableArray" key="NSMenuItems"> +								<object class="NSMenuItem" id="238773614"> +									<reference key="NSMenu" ref="374024848"/> +									<string key="NSTitle">NewApplication Help</string> +									<string key="NSKeyEquiv">?</string> +									<int key="NSKeyEquivModMask">1048576</int> +									<int key="NSMnemonicLoc">2147483647</int> +									<reference key="NSOnImage" ref="353210768"/> +									<reference key="NSMixedImage" ref="549394948"/> +								</object> +							</array> +							<string key="NSName">_NSHelpMenu</string> +						</object> +					</object> +				</array> +				<string key="NSName">_NSMainMenu</string> +			</object> +			<object class="NSCustomObject" id="756173070"> +				<string key="NSClassName">LLAppDelegate</string> +			</object> +			<object class="NSWindowTemplate" id="110292814"> +				<int key="NSWindowStyleMask">15</int> +				<int key="NSWindowBacking">2</int> +				<string key="NSWindowRect">{{196, 240}, {1024, 768}}</string> +				<int key="NSWTFlags">74974208</int> +				<string key="NSWindowTitle">Second Life</string> +				<string key="NSWindowClass">LLNSWindow</string> +				<nil key="NSViewClass"/> +				<nil key="NSUserInterfaceItemIdentifier"/> +				<string key="NSWindowContentMinSize">{1024, 768}</string> +				<object class="NSView" key="NSWindowView" id="305280978"> +					<reference key="NSNextResponder"/> +					<int key="NSvFlags">256</int> +					<array class="NSMutableArray" key="NSSubviews"/> +					<string key="NSFrameSize">{1024, 768}</string> +					<reference key="NSSuperview"/> +					<reference key="NSWindow"/> +					<reference key="NSNextKeyView"/> +					<string key="NSReuseIdentifierKey">_NS:20</string> +				</object> +				<string key="NSScreenRect">{{0, 0}, {1920, 1178}}</string> +				<string key="NSMinSize">{1024, 790}</string> +				<string key="NSMaxSize">{10000000000000, 10000000000000}</string> +				<int key="NSWindowCollectionBehavior">128</int> +				<bool key="NSWindowIsRestorable">YES</bool> +			</object> +		</array> +		<object class="IBObjectContainer" key="IBDocument.Objects"> +			<array class="NSMutableArray" key="connectionRecords"> +				<object class="IBConnectionRecord"> +					<object class="IBActionConnection" key="connection"> +						<string key="label">terminate:</string> +						<reference key="source" ref="1050"/> +						<reference key="destination" ref="632727374"/> +					</object> +					<int key="connectionID">823</int> +				</object> +				<object class="IBConnectionRecord"> +					<object class="IBActionConnection" key="connection"> +						<string key="label">orderFrontStandardAboutPanel:</string> +						<reference key="source" ref="1021"/> +						<reference key="destination" ref="238522557"/> +					</object> +					<int key="connectionID">142</int> +				</object> +				<object class="IBConnectionRecord"> +					<object class="IBOutletConnection" key="connection"> +						<string key="label">delegate</string> +						<reference key="source" ref="1021"/> +						<reference key="destination" ref="756173070"/> +					</object> +					<int key="connectionID">845</int> +				</object> +				<object class="IBConnectionRecord"> +					<object class="IBActionConnection" key="connection"> +						<string key="label">performMiniaturize:</string> +						<reference key="source" ref="1014"/> +						<reference key="destination" ref="1011231497"/> +					</object> +					<int key="connectionID">37</int> +				</object> +				<object class="IBConnectionRecord"> +					<object class="IBActionConnection" key="connection"> +						<string key="label">arrangeInFront:</string> +						<reference key="source" ref="1014"/> +						<reference key="destination" ref="625202149"/> +					</object> +					<int key="connectionID">39</int> +				</object> +				<object class="IBConnectionRecord"> +					<object class="IBActionConnection" key="connection"> +						<string key="label">print:</string> +						<reference key="source" ref="1014"/> +						<reference key="destination" ref="49223823"/> +					</object> +					<int key="connectionID">86</int> +				</object> +				<object class="IBConnectionRecord"> +					<object class="IBActionConnection" key="connection"> +						<string key="label">runPageLayout:</string> +						<reference key="source" ref="1014"/> +						<reference key="destination" ref="294629803"/> +					</object> +					<int key="connectionID">87</int> +				</object> +				<object class="IBConnectionRecord"> +					<object class="IBActionConnection" key="connection"> +						<string key="label">clearRecentDocuments:</string> +						<reference key="source" ref="1014"/> +						<reference key="destination" ref="759406840"/> +					</object> +					<int key="connectionID">127</int> +				</object> +				<object class="IBConnectionRecord"> +					<object class="IBActionConnection" key="connection"> +						<string key="label">performClose:</string> +						<reference key="source" ref="1014"/> +						<reference key="destination" ref="776162233"/> +					</object> +					<int key="connectionID">193</int> +				</object> +				<object class="IBConnectionRecord"> +					<object class="IBActionConnection" key="connection"> +						<string key="label">performZoom:</string> +						<reference key="source" ref="1014"/> +						<reference key="destination" ref="575023229"/> +					</object> +					<int key="connectionID">240</int> +				</object> +				<object class="IBConnectionRecord"> +					<object class="IBActionConnection" key="connection"> +						<string key="label">showHelp:</string> +						<reference key="source" ref="1014"/> +						<reference key="destination" ref="238773614"/> +					</object> +					<int key="connectionID">360</int> +				</object> +				<object class="IBConnectionRecord"> +					<object class="IBActionConnection" key="connection"> +						<string key="label">saveDocument:</string> +						<reference key="source" ref="1014"/> +						<reference key="destination" ref="1023925487"/> +					</object> +					<int key="connectionID">362</int> +				</object> +				<object class="IBConnectionRecord"> +					<object class="IBActionConnection" key="connection"> +						<string key="label">revertDocumentToSaved:</string> +						<reference key="source" ref="1014"/> +						<reference key="destination" ref="579971712"/> +					</object> +					<int key="connectionID">364</int> +				</object> +				<object class="IBConnectionRecord"> +					<object class="IBActionConnection" key="connection"> +						<string key="label">hide:</string> +						<reference key="source" ref="1014"/> +						<reference key="destination" ref="755159360"/> +					</object> +					<int key="connectionID">369</int> +				</object> +				<object class="IBConnectionRecord"> +					<object class="IBActionConnection" key="connection"> +						<string key="label">hideOtherApplications:</string> +						<reference key="source" ref="1014"/> +						<reference key="destination" ref="342932134"/> +					</object> +					<int key="connectionID">370</int> +				</object> +				<object class="IBConnectionRecord"> +					<object class="IBActionConnection" key="connection"> +						<string key="label">unhideAllApplications:</string> +						<reference key="source" ref="1014"/> +						<reference key="destination" ref="908899353"/> +					</object> +					<int key="connectionID">372</int> +				</object> +				<object class="IBConnectionRecord"> +					<object class="IBActionConnection" key="connection"> +						<string key="label">cut:</string> +						<reference key="source" ref="1014"/> +						<reference key="destination" ref="984623395"/> +					</object> +					<int key="connectionID">768</int> +				</object> +				<object class="IBConnectionRecord"> +					<object class="IBActionConnection" key="connection"> +						<string key="label">paste:</string> +						<reference key="source" ref="1014"/> +						<reference key="destination" ref="1032676691"/> +					</object> +					<int key="connectionID">769</int> +				</object> +				<object class="IBConnectionRecord"> +					<object class="IBActionConnection" key="connection"> +						<string key="label">toggleSmartInsertDelete:</string> +						<reference key="source" ref="1014"/> +						<reference key="destination" ref="486300146"/> +					</object> +					<int key="connectionID">770</int> +				</object> +				<object class="IBConnectionRecord"> +					<object class="IBActionConnection" key="connection"> +						<string key="label">toggleAutomaticDashSubstitution:</string> +						<reference key="source" ref="1014"/> +						<reference key="destination" ref="744245411"/> +					</object> +					<int key="connectionID">773</int> +				</object> +				<object class="IBConnectionRecord"> +					<object class="IBActionConnection" key="connection"> +						<string key="label">toggleContinuousSpellChecking:</string> +						<reference key="source" ref="1014"/> +						<reference key="destination" ref="553169338"/> +					</object> +					<int key="connectionID">774</int> +				</object> +				<object class="IBConnectionRecord"> +					<object class="IBActionConnection" key="connection"> +						<string key="label">toggleAutomaticDataDetection:</string> +						<reference key="source" ref="1014"/> +						<reference key="destination" ref="693876809"/> +					</object> +					<int key="connectionID">775</int> +				</object> +				<object class="IBConnectionRecord"> +					<object class="IBActionConnection" key="connection"> +						<string key="label">undo:</string> +						<reference key="source" ref="1014"/> +						<reference key="destination" ref="521487141"/> +					</object> +					<int key="connectionID">776</int> +				</object> +				<object class="IBConnectionRecord"> +					<object class="IBActionConnection" key="connection"> +						<string key="label">startSpeaking:</string> +						<reference key="source" ref="1014"/> +						<reference key="destination" ref="874008672"/> +					</object> +					<int key="connectionID">778</int> +				</object> +				<object class="IBConnectionRecord"> +					<object class="IBActionConnection" key="connection"> +						<string key="label">showGuessPanel:</string> +						<reference key="source" ref="1014"/> +						<reference key="destination" ref="184017712"/> +					</object> +					<int key="connectionID">779</int> +				</object> +				<object class="IBConnectionRecord"> +					<object class="IBActionConnection" key="connection"> +						<string key="label">checkSpelling:</string> +						<reference key="source" ref="1014"/> +						<reference key="destination" ref="21600483"/> +					</object> +					<int key="connectionID">780</int> +				</object> +				<object class="IBConnectionRecord"> +					<object class="IBActionConnection" key="connection"> +						<string key="label">copy:</string> +						<reference key="source" ref="1014"/> +						<reference key="destination" ref="656529582"/> +					</object> +					<int key="connectionID">782</int> +				</object> +				<object class="IBConnectionRecord"> +					<object class="IBActionConnection" key="connection"> +						<string key="label">delete:</string> +						<reference key="source" ref="1014"/> +						<reference key="destination" ref="919614590"/> +					</object> +					<int key="connectionID">783</int> +				</object> +				<object class="IBConnectionRecord"> +					<object class="IBActionConnection" key="connection"> +						<string key="label">selectAll:</string> +						<reference key="source" ref="1014"/> +						<reference key="destination" ref="538907583"/> +					</object> +					<int key="connectionID">785</int> +				</object> +				<object class="IBConnectionRecord"> +					<object class="IBActionConnection" key="connection"> +						<string key="label">stopSpeaking:</string> +						<reference key="source" ref="1014"/> +						<reference key="destination" ref="464437401"/> +					</object> +					<int key="connectionID">786</int> +				</object> +				<object class="IBConnectionRecord"> +					<object class="IBActionConnection" key="connection"> +						<string key="label">orderFrontSubstitutionsPanel:</string> +						<reference key="source" ref="1014"/> +						<reference key="destination" ref="48614235"/> +					</object> +					<int key="connectionID">787</int> +				</object> +				<object class="IBConnectionRecord"> +					<object class="IBActionConnection" key="connection"> +						<string key="label">toggleAutomaticTextReplacement:</string> +						<reference key="source" ref="1014"/> +						<reference key="destination" ref="166923016"/> +					</object> +					<int key="connectionID">788</int> +				</object> +				<object class="IBConnectionRecord"> +					<object class="IBActionConnection" key="connection"> +						<string key="label">toggleAutomaticSpellingCorrection:</string> +						<reference key="source" ref="1014"/> +						<reference key="destination" ref="801119463"/> +					</object> +					<int key="connectionID">790</int> +				</object> +				<object class="IBConnectionRecord"> +					<object class="IBActionConnection" key="connection"> +						<string key="label">toggleFullScreen:</string> +						<reference key="source" ref="1014"/> +						<reference key="destination" ref="86356408"/> +					</object> +					<int key="connectionID">842</int> +				</object> +				<object class="IBConnectionRecord"> +					<object class="IBOutletConnection" key="connection"> +						<string key="label">window</string> +						<reference key="source" ref="756173070"/> +						<reference key="destination" ref="110292814"/> +					</object> +					<int key="connectionID">850</int> +				</object> +			</array> +			<object class="IBMutableOrderedSet" key="objectRecords"> +				<array key="orderedObjects"> +					<object class="IBObjectRecord"> +						<int key="objectID">0</int> +						<array key="object" id="0"/> +						<reference key="children" ref="1048"/> +						<nil key="parent"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">-2</int> +						<reference key="object" ref="1021"/> +						<reference key="parent" ref="0"/> +						<string key="objectName">File's Owner</string> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">-1</int> +						<reference key="object" ref="1014"/> +						<reference key="parent" ref="0"/> +						<string key="objectName">First Responder</string> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">-3</int> +						<reference key="object" ref="1050"/> +						<reference key="parent" ref="0"/> +						<string key="objectName">Application</string> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">29</int> +						<reference key="object" ref="649796088"/> +						<array class="NSMutableArray" key="children"> +							<reference ref="713487014"/> +							<reference ref="694149608"/> +							<reference ref="391199113"/> +							<reference ref="379814623"/> +							<reference ref="725688984"/> +						</array> +						<reference key="parent" ref="0"/> +						<string key="objectName">Main Menu</string> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">19</int> +						<reference key="object" ref="713487014"/> +						<array class="NSMutableArray" key="children"> +							<reference ref="835318025"/> +						</array> +						<reference key="parent" ref="649796088"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">56</int> +						<reference key="object" ref="694149608"/> +						<array class="NSMutableArray" key="children"> +							<reference ref="110575045"/> +						</array> +						<reference key="parent" ref="649796088"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">103</int> +						<reference key="object" ref="391199113"/> +						<array class="NSMutableArray" key="children"> +							<reference ref="374024848"/> +						</array> +						<reference key="parent" ref="649796088"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">83</int> +						<reference key="object" ref="379814623"/> +						<array class="NSMutableArray" key="children"> +							<reference ref="720053764"/> +						</array> +						<reference key="parent" ref="649796088"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">81</int> +						<reference key="object" ref="720053764"/> +						<array class="NSMutableArray" key="children"> +							<reference ref="1023925487"/> +							<reference ref="49223823"/> +							<reference ref="722745758"/> +							<reference ref="705341025"/> +							<reference ref="1025936716"/> +							<reference ref="294629803"/> +							<reference ref="776162233"/> +							<reference ref="425164168"/> +							<reference ref="579971712"/> +							<reference ref="1010469920"/> +						</array> +						<reference key="parent" ref="379814623"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">75</int> +						<reference key="object" ref="1023925487"/> +						<reference key="parent" ref="720053764"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">78</int> +						<reference key="object" ref="49223823"/> +						<reference key="parent" ref="720053764"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">72</int> +						<reference key="object" ref="722745758"/> +						<reference key="parent" ref="720053764"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">82</int> +						<reference key="object" ref="705341025"/> +						<reference key="parent" ref="720053764"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">124</int> +						<reference key="object" ref="1025936716"/> +						<array class="NSMutableArray" key="children"> +							<reference ref="1065607017"/> +						</array> +						<reference key="parent" ref="720053764"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">77</int> +						<reference key="object" ref="294629803"/> +						<reference key="parent" ref="720053764"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">73</int> +						<reference key="object" ref="776162233"/> +						<reference key="parent" ref="720053764"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">79</int> +						<reference key="object" ref="425164168"/> +						<reference key="parent" ref="720053764"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">112</int> +						<reference key="object" ref="579971712"/> +						<reference key="parent" ref="720053764"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">74</int> +						<reference key="object" ref="1010469920"/> +						<reference key="parent" ref="720053764"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">125</int> +						<reference key="object" ref="1065607017"/> +						<array class="NSMutableArray" key="children"> +							<reference ref="759406840"/> +						</array> +						<reference key="parent" ref="1025936716"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">126</int> +						<reference key="object" ref="759406840"/> +						<reference key="parent" ref="1065607017"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">106</int> +						<reference key="object" ref="374024848"/> +						<array class="NSMutableArray" key="children"> +							<reference ref="238773614"/> +						</array> +						<reference key="parent" ref="391199113"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">111</int> +						<reference key="object" ref="238773614"/> +						<reference key="parent" ref="374024848"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">57</int> +						<reference key="object" ref="110575045"/> +						<array class="NSMutableArray" key="children"> +							<reference ref="238522557"/> +							<reference ref="755159360"/> +							<reference ref="908899353"/> +							<reference ref="632727374"/> +							<reference ref="646227648"/> +							<reference ref="609285721"/> +							<reference ref="481834944"/> +							<reference ref="304266470"/> +							<reference ref="1046388886"/> +							<reference ref="1056857174"/> +							<reference ref="342932134"/> +						</array> +						<reference key="parent" ref="694149608"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">58</int> +						<reference key="object" ref="238522557"/> +						<reference key="parent" ref="110575045"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">134</int> +						<reference key="object" ref="755159360"/> +						<reference key="parent" ref="110575045"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">150</int> +						<reference key="object" ref="908899353"/> +						<reference key="parent" ref="110575045"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">136</int> +						<reference key="object" ref="632727374"/> +						<reference key="parent" ref="110575045"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">144</int> +						<reference key="object" ref="646227648"/> +						<reference key="parent" ref="110575045"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">129</int> +						<reference key="object" ref="609285721"/> +						<reference key="parent" ref="110575045"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">143</int> +						<reference key="object" ref="481834944"/> +						<reference key="parent" ref="110575045"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">236</int> +						<reference key="object" ref="304266470"/> +						<reference key="parent" ref="110575045"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">131</int> +						<reference key="object" ref="1046388886"/> +						<array class="NSMutableArray" key="children"> +							<reference ref="752062318"/> +						</array> +						<reference key="parent" ref="110575045"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">149</int> +						<reference key="object" ref="1056857174"/> +						<reference key="parent" ref="110575045"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">145</int> +						<reference key="object" ref="342932134"/> +						<reference key="parent" ref="110575045"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">130</int> +						<reference key="object" ref="752062318"/> +						<reference key="parent" ref="1046388886"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">24</int> +						<reference key="object" ref="835318025"/> +						<array class="NSMutableArray" key="children"> +							<reference ref="299356726"/> +							<reference ref="625202149"/> +							<reference ref="575023229"/> +							<reference ref="1011231497"/> +							<reference ref="86356408"/> +						</array> +						<reference key="parent" ref="713487014"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">92</int> +						<reference key="object" ref="299356726"/> +						<reference key="parent" ref="835318025"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">5</int> +						<reference key="object" ref="625202149"/> +						<reference key="parent" ref="835318025"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">239</int> +						<reference key="object" ref="575023229"/> +						<reference key="parent" ref="835318025"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">23</int> +						<reference key="object" ref="1011231497"/> +						<reference key="parent" ref="835318025"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">711</int> +						<reference key="object" ref="725688984"/> +						<array class="NSMutableArray" key="children"> +							<reference ref="701759256"/> +						</array> +						<reference key="parent" ref="649796088"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">712</int> +						<reference key="object" ref="701759256"/> +						<array class="NSMutableArray" key="children"> +							<reference ref="521487141"/> +							<reference ref="668936019"/> +							<reference ref="383018193"/> +							<reference ref="984623395"/> +							<reference ref="656529582"/> +							<reference ref="1032676691"/> +							<reference ref="808171693"/> +							<reference ref="919614590"/> +							<reference ref="538907583"/> +							<reference ref="189573236"/> +							<reference ref="345821971"/> +							<reference ref="904504334"/> +							<reference ref="733935158"/> +							<reference ref="146086820"/> +							<reference ref="14778224"/> +						</array> +						<reference key="parent" ref="725688984"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">713</int> +						<reference key="object" ref="521487141"/> +						<reference key="parent" ref="701759256"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">714</int> +						<reference key="object" ref="668936019"/> +						<reference key="parent" ref="701759256"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">715</int> +						<reference key="object" ref="383018193"/> +						<reference key="parent" ref="701759256"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">716</int> +						<reference key="object" ref="984623395"/> +						<reference key="parent" ref="701759256"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">717</int> +						<reference key="object" ref="656529582"/> +						<reference key="parent" ref="701759256"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">718</int> +						<reference key="object" ref="1032676691"/> +						<reference key="parent" ref="701759256"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">719</int> +						<reference key="object" ref="808171693"/> +						<reference key="parent" ref="701759256"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">720</int> +						<reference key="object" ref="919614590"/> +						<reference key="parent" ref="701759256"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">721</int> +						<reference key="object" ref="538907583"/> +						<reference key="parent" ref="701759256"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">722</int> +						<reference key="object" ref="189573236"/> +						<reference key="parent" ref="701759256"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">723</int> +						<reference key="object" ref="345821971"/> +						<array class="NSMutableArray" key="children"> +							<reference ref="907032324"/> +						</array> +						<reference key="parent" ref="701759256"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">724</int> +						<reference key="object" ref="904504334"/> +						<array class="NSMutableArray" key="children"> +							<reference ref="752506228"/> +						</array> +						<reference key="parent" ref="701759256"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">725</int> +						<reference key="object" ref="733935158"/> +						<array class="NSMutableArray" key="children"> +							<reference ref="598912068"/> +						</array> +						<reference key="parent" ref="701759256"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">726</int> +						<reference key="object" ref="146086820"/> +						<array class="NSMutableArray" key="children"> +							<reference ref="139936407"/> +						</array> +						<reference key="parent" ref="701759256"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">727</int> +						<reference key="object" ref="14778224"/> +						<array class="NSMutableArray" key="children"> +							<reference ref="667491561"/> +						</array> +						<reference key="parent" ref="701759256"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">738</int> +						<reference key="object" ref="667491561"/> +						<array class="NSMutableArray" key="children"> +							<reference ref="874008672"/> +							<reference ref="464437401"/> +						</array> +						<reference key="parent" ref="14778224"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">739</int> +						<reference key="object" ref="874008672"/> +						<reference key="parent" ref="667491561"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">740</int> +						<reference key="object" ref="464437401"/> +						<reference key="parent" ref="667491561"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">741</int> +						<reference key="object" ref="139936407"/> +						<array class="NSMutableArray" key="children"> +							<reference ref="765834084"/> +							<reference ref="287915663"/> +							<reference ref="473368487"/> +						</array> +						<reference key="parent" ref="146086820"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">742</int> +						<reference key="object" ref="765834084"/> +						<reference key="parent" ref="139936407"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">743</int> +						<reference key="object" ref="287915663"/> +						<reference key="parent" ref="139936407"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">744</int> +						<reference key="object" ref="473368487"/> +						<reference key="parent" ref="139936407"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">745</int> +						<reference key="object" ref="598912068"/> +						<array class="NSMutableArray" key="children"> +							<reference ref="48614235"/> +							<reference ref="671306806"/> +							<reference ref="486300146"/> +							<reference ref="209508969"/> +							<reference ref="744245411"/> +							<reference ref="297725902"/> +							<reference ref="693876809"/> +							<reference ref="166923016"/> +						</array> +						<reference key="parent" ref="733935158"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">746</int> +						<reference key="object" ref="48614235"/> +						<reference key="parent" ref="598912068"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">747</int> +						<reference key="object" ref="671306806"/> +						<reference key="parent" ref="598912068"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">748</int> +						<reference key="object" ref="486300146"/> +						<reference key="parent" ref="598912068"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">749</int> +						<reference key="object" ref="209508969"/> +						<reference key="parent" ref="598912068"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">750</int> +						<reference key="object" ref="744245411"/> +						<reference key="parent" ref="598912068"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">751</int> +						<reference key="object" ref="297725902"/> +						<reference key="parent" ref="598912068"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">752</int> +						<reference key="object" ref="693876809"/> +						<reference key="parent" ref="598912068"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">753</int> +						<reference key="object" ref="166923016"/> +						<reference key="parent" ref="598912068"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">754</int> +						<reference key="object" ref="752506228"/> +						<array class="NSMutableArray" key="children"> +							<reference ref="184017712"/> +							<reference ref="21600483"/> +							<reference ref="601403410"/> +							<reference ref="553169338"/> +							<reference ref="544362921"/> +							<reference ref="801119463"/> +						</array> +						<reference key="parent" ref="904504334"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">755</int> +						<reference key="object" ref="184017712"/> +						<reference key="parent" ref="752506228"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">756</int> +						<reference key="object" ref="21600483"/> +						<reference key="parent" ref="752506228"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">757</int> +						<reference key="object" ref="601403410"/> +						<reference key="parent" ref="752506228"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">758</int> +						<reference key="object" ref="553169338"/> +						<reference key="parent" ref="752506228"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">759</int> +						<reference key="object" ref="544362921"/> +						<reference key="parent" ref="752506228"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">760</int> +						<reference key="object" ref="801119463"/> +						<reference key="parent" ref="752506228"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">761</int> +						<reference key="object" ref="907032324"/> +						<array class="NSMutableArray" key="children"> +							<reference ref="500637754"/> +							<reference ref="710145723"/> +							<reference ref="226219456"/> +							<reference ref="56753965"/> +							<reference ref="712516604"/> +							<reference ref="365968879"/> +						</array> +						<reference key="parent" ref="345821971"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">762</int> +						<reference key="object" ref="500637754"/> +						<reference key="parent" ref="907032324"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">763</int> +						<reference key="object" ref="710145723"/> +						<reference key="parent" ref="907032324"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">764</int> +						<reference key="object" ref="226219456"/> +						<reference key="parent" ref="907032324"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">765</int> +						<reference key="object" ref="56753965"/> +						<reference key="parent" ref="907032324"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">766</int> +						<reference key="object" ref="712516604"/> +						<reference key="parent" ref="907032324"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">821</int> +						<reference key="object" ref="365968879"/> +						<reference key="parent" ref="907032324"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">824</int> +						<reference key="object" ref="756173070"/> +						<reference key="parent" ref="0"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">841</int> +						<reference key="object" ref="86356408"/> +						<reference key="parent" ref="835318025"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">828</int> +						<reference key="object" ref="110292814"/> +						<array class="NSMutableArray" key="children"> +							<reference ref="305280978"/> +						</array> +						<reference key="parent" ref="0"/> +					</object> +					<object class="IBObjectRecord"> +						<int key="objectID">829</int> +						<reference key="object" ref="305280978"/> +						<array class="NSMutableArray" key="children"/> +						<reference key="parent" ref="110292814"/> +					</object> +				</array> +			</object> +			<dictionary class="NSMutableDictionary" key="flattenedProperties"> +				<string key="-1.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="-2.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="-3.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="103.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="106.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="111.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="112.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="124.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="125.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="126.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="129.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="130.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="131.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="134.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="136.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="143.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="144.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="145.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="149.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="150.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="19.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="23.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="236.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="239.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="24.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="29.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="5.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="56.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="57.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="58.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="711.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="712.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="713.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="714.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="715.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="716.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="717.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="718.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="719.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="72.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="720.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="721.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="722.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="723.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="724.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="725.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="726.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="727.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="73.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="738.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="739.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="74.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="740.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="741.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="742.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="743.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="744.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="745.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="746.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="747.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="748.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="749.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="75.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="750.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="751.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="752.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="753.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="754.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="755.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="756.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="757.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="758.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="759.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="760.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="761.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="762.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="763.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="764.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="765.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="766.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="77.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="78.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="79.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="81.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="82.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="821.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="824.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<boolean value="YES" key="828.IBNSWindowAutoPositionCentersHorizontal"/> +				<boolean value="YES" key="828.IBNSWindowAutoPositionCentersVertical"/> +				<string key="828.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<boolean value="YES" key="828.NSWindowTemplate.visibleAtLaunch"/> +				<string key="829.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="83.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="841.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +				<string key="92.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> +			</dictionary> +			<dictionary class="NSMutableDictionary" key="unlocalizedProperties"/> +			<nil key="activeLocalization"/> +			<dictionary class="NSMutableDictionary" key="localizations"/> +			<nil key="sourceID"/> +			<int key="maxID">852</int> +		</object> +		<object class="IBClassDescriber" key="IBDocument.Classes"> +			<array class="NSMutableArray" key="referencedPartialClassDescriptions"> +				<object class="IBPartialClassDescription"> +					<string key="className">LLAppDelegate</string> +					<string key="superclassName">NSObject</string> +					<dictionary class="NSMutableDictionary" key="outlets"> +						<string key="glview">LLOpenGLView</string> +						<string key="window">LLNSWindow</string> +					</dictionary> +					<dictionary class="NSMutableDictionary" key="toOneOutletInfosByName"> +						<object class="IBToOneOutletInfo" key="glview"> +							<string key="name">glview</string> +							<string key="candidateClassName">LLOpenGLView</string> +						</object> +						<object class="IBToOneOutletInfo" key="window"> +							<string key="name">window</string> +							<string key="candidateClassName">LLNSWindow</string> +						</object> +					</dictionary> +					<object class="IBClassDescriptionSource" key="sourceIdentifier"> +						<string key="majorKey">IBProjectSource</string> +						<string key="minorKey">./Classes/LLAppDelegate.h</string> +					</object> +				</object> +				<object class="IBPartialClassDescription"> +					<string key="className">LLNSWindow</string> +					<string key="superclassName">NSWindow</string> +					<object class="IBClassDescriptionSource" key="sourceIdentifier"> +						<string key="majorKey">IBProjectSource</string> +						<string key="minorKey">./Classes/LLNSWindow.h</string> +					</object> +				</object> +				<object class="IBPartialClassDescription"> +					<string key="className">LLOpenGLView</string> +					<string key="superclassName">NSOpenGLView</string> +					<object class="IBClassDescriptionSource" key="sourceIdentifier"> +						<string key="majorKey">IBProjectSource</string> +						<string key="minorKey">./Classes/LLOpenGLView.h</string> +					</object> +				</object> +			</array> +		</object> +		<int key="IBDocument.localizationMode">0</int> +		<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string> +		<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencies"> +			<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string> +			<real value="1060" key="NS.object.0"/> +		</object> +		<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool> +		<int key="IBDocument.defaultPropertyAccessControl">3</int> +		<dictionary class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes"> +			<string key="NSMenuCheckmark">{11, 11}</string> +			<string key="NSMenuMixedState">{10, 3}</string> +		</dictionary> +		<bool key="IBDocument.UseAutolayout">YES</bool> +	</data> +</archive> diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 30f82926f1..6a87f7306d 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -250,10 +250,6 @@ static LLAppViewerListener sAppViewerListener(LLAppViewer::instance);  //----------------------------------------------------------------------------  // viewer.cpp - these are only used in viewer, should be easily moved. -#if LL_DARWIN -extern void init_apple_menu(const char* product); -#endif // LL_DARWIN -  extern BOOL gRandomizeFramerate;  extern BOOL gPeriodicSlowFrame;  extern BOOL gDebugGL; @@ -1196,43 +1192,56 @@ static LLFastTimer::DeclareTimer FTM_SERVICE_CALLBACK("Callback");  static LLFastTimer::DeclareTimer FTM_AGENT_AUTOPILOT("Autopilot");  static LLFastTimer::DeclareTimer FTM_AGENT_UPDATE("Update"); +LLMemType mt1(LLMemType::MTYPE_MAIN); +  bool LLAppViewer::mainLoop()  { -	LLMemType mt1(LLMemType::MTYPE_MAIN); -	mMainloopTimeout = new LLWatchdogTimeout(); +	if (!mMainLoopInitialized) +	{ +		mMainloopTimeout = new LLWatchdogTimeout(); +		 +		//------------------------------------------- +		// Run main loop until time to quit +		//------------------------------------------- +		 +		// Create IO Pump to use for HTTP Requests. +		gServicePump = new LLPumpIO(gAPRPoolp); +		LLHTTPClient::setPump(*gServicePump); +		LLCurl::setCAFile(gDirUtilp->getCAFile()); +		 +		// Note: this is where gLocalSpeakerMgr and gActiveSpeakerMgr used to be instantiated. +		 +		LLVoiceChannel::initClass(); +		LLVoiceClient::getInstance()->init(gServicePump); +		LLVoiceChannel::setCurrentVoiceChannelChangedCallback(boost::bind(&LLCallFloater::sOnCurrentChannelChanged, _1), true); +		 +		joystick = LLViewerJoystick::getInstance(); +		joystick->setNeedsReset(true); +		 +		 +		// As we do not (yet) send data on the mainloop LLEventPump that varies +		// with each frame, no need to instantiate a new LLSD event object each +		// time. Obviously, if that changes, just instantiate the LLSD at the +		// point of posting. +		mMainLoopInitialized = true; +	} +	LLEventPump& mainloop(LLEventPumps::instance().obtain("mainloop")); +	 +    LLSD newFrame; -	//------------------------------------------- -	// Run main loop until time to quit -	//------------------------------------------- - -	// Create IO Pump to use for HTTP Requests. -	gServicePump = new LLPumpIO(gAPRPoolp); -	LLHTTPClient::setPump(*gServicePump); -	LLCurl::setCAFile(gDirUtilp->getCAFile()); - -	// Note: this is where gLocalSpeakerMgr and gActiveSpeakerMgr used to be instantiated. - -	LLVoiceChannel::initClass(); -	LLVoiceClient::getInstance()->init(gServicePump); -	LLVoiceChannel::setCurrentVoiceChannelChangedCallback(boost::bind(&LLCallFloater::sOnCurrentChannelChanged, _1), true);  	LLTimer frameTimer,idleTimer;  	LLTimer debugTime; -	LLViewerJoystick* joystick(LLViewerJoystick::getInstance()); -	joystick->setNeedsReset(true); - -    LLEventPump& mainloop(LLEventPumps::instance().obtain("mainloop")); -    // As we do not (yet) send data on the mainloop LLEventPump that varies -    // with each frame, no need to instantiate a new LLSD event object each -    // time. Obviously, if that changes, just instantiate the LLSD at the -    // point of posting. -    LLSD newFrame; - +	  	//LLPrivateMemoryPoolTester::getInstance()->run(false) ;  	//LLPrivateMemoryPoolTester::getInstance()->run(true) ;  	//LLPrivateMemoryPoolTester::destroy() ;  	// Handle messages +#ifdef LL_DARWIN +	if (!LLApp::isExiting()) +#else  	while (!LLApp::isExiting()) +#endif  	{  		LLFastTimer::nextFrame(); // Should be outside of any timer instances @@ -1510,34 +1519,37 @@ bool LLAppViewer::mainLoop()  		}  	} -	// Save snapshot for next time, if we made it through initialization -	if (STATE_STARTED == LLStartUp::getStartupState()) +	if (LLApp::isExiting())  	{ -		try +		// Save snapshot for next time, if we made it through initialization +		if (STATE_STARTED == LLStartUp::getStartupState())  		{ -			saveFinalSnapshot(); -		} -		catch(std::bad_alloc) -		{ -			llwarns << "Bad memory allocation when saveFinalSnapshot() is called!" << llendl ; - -			//stop memory leaking simulation -			LLFloaterMemLeak* mem_leak_instance = -				LLFloaterReg::findTypedInstance<LLFloaterMemLeak>("mem_leaking"); -			if(mem_leak_instance) +			try  			{ -				mem_leak_instance->stop() ;				 -			}	 +				saveFinalSnapshot(); +			} +			catch(std::bad_alloc) +			{ +				llwarns << "Bad memory allocation when saveFinalSnapshot() is called!" << llendl ; +				 +				//stop memory leaking simulation +				LLFloaterMemLeak* mem_leak_instance = +				LLFloaterReg::findTypedInstance<LLFloaterMemLeak>("mem_leaking"); +				if(mem_leak_instance) +				{ +					mem_leak_instance->stop() ; +				} +			}  		} +		 +		delete gServicePump; +		 +		destroyMainloopTimeout(); +		 +		llinfos << "Exiting main_loop" << llendflush;  	} -	 -	delete gServicePump; - -	destroyMainloopTimeout(); - -	llinfos << "Exiting main_loop" << llendflush; -	return true; +	return LLApp::isExiting();  }  void LLAppViewer::flushVFSIO() @@ -2618,8 +2630,6 @@ bool LLAppViewer::initConfiguration()  	//}  #if LL_DARWIN -	// Initialize apple menubar and various callbacks -	init_apple_menu(LLTrans::getString("APP_NAME").c_str());  #if __ppc__  	// If the CPU doesn't have Altivec (i.e. it's not at least a G4), don't go any further. diff --git a/indra/newview/llappviewer.h b/indra/newview/llappviewer.h index 7a474f9122..a09bdb2496 100644 --- a/indra/newview/llappviewer.h +++ b/indra/newview/llappviewer.h @@ -41,6 +41,7 @@ class LLImageDecodeThread;  class LLTextureFetch;  class LLWatchdogTimeout;  class LLUpdaterService; +class LLViewerJoystick;  class LLAppViewer : public LLApp  { @@ -250,6 +251,8 @@ private:  	std::string mSerialNumber;  	bool mPurgeCache;      bool mPurgeOnExit; +	bool mMainLoopInitialized; +	LLViewerJoystick* joystick;  	bool mSavedFinalSnapshot;  	bool mSavePerAccountSettings;		// only save per account settings if login succeeded diff --git a/indra/newview/llappviewermacosx-delegate.h b/indra/newview/llappviewermacosx-delegate.h new file mode 100644 index 0000000000..ac234c14be --- /dev/null +++ b/indra/newview/llappviewermacosx-delegate.h @@ -0,0 +1,24 @@ +// +//  LLAppDelegate.h +//  SecondLife +// +//  Created by Geenz on 12/16/12. +// +// + +#import <Cocoa/Cocoa.h> +#import "llopenglview-objc.h" +#include "llappviewermacosx-objc.h" + +@interface LLAppDelegate : NSObject <NSApplicationDelegate> { +	LLNSWindow *window; +	LLOpenGLView *glview; +	NSTimer *frameTimer; +} + +@property (assign) IBOutlet LLNSWindow *window; +@property (assign) IBOutlet LLOpenGLView *glview; + +- (void) mainLoop; + +@end diff --git a/indra/newview/llappviewermacosx-delegate.mm b/indra/newview/llappviewermacosx-delegate.mm new file mode 100644 index 0000000000..80cc1010e9 --- /dev/null +++ b/indra/newview/llappviewermacosx-delegate.mm @@ -0,0 +1,49 @@ +// +//  LLAppDelegate.m +//  SecondLife +// +//  Created by Geenz on 12/16/12. +// +// + +#import "llappviewermacosx-delegate.h" + +@implementation LLAppDelegate + +@synthesize window; +@synthesize glview; + +- (void)dealloc +{ +    [super dealloc]; +} + +- (void) applicationDidFinishLaunching:(NSNotification *)notification +{ +	frameTimer = nil; +	 +	setLLNSWindowRef([self window]); +	setLLOpenGLViewRef([self glview]); +	if (initViewer()) +	{ +		frameTimer = [NSTimer scheduledTimerWithTimeInterval:1.0/60 target:self selector:@selector(mainLoop) userInfo:nil repeats:YES]; +	} else { +		handleQuit(); +	} +} + +- (void) applicationWillTerminate:(NSNotification *)notification +{ +} + +- (void) mainLoop +{ +	bool appExiting = runMainLoop(); +	if (appExiting) +	{ +		[frameTimer release]; +		handleQuit(); +	} +} + +@end diff --git a/indra/newview/llappviewermacosx-objc.h b/indra/newview/llappviewermacosx-objc.h new file mode 100644 index 0000000000..9ece6a1a6a --- /dev/null +++ b/indra/newview/llappviewermacosx-objc.h @@ -0,0 +1,19 @@ +// +//  NSObject_llappviewermacosx_objc.h +//  SecondLife +// +//  Created by Geenz on 12/16/12. +// +// + +#include <boost/tr1/functional.hpp> +typedef std::tr1::function<void()> VoidCallback; +typedef void* ViewerAppRef; + +int createNSApp(int argc, const char **argv); + +bool initViewer(); +void handleQuit(); +bool runMainLoop(); +void initMainLoop(); +void destroyMainLoop();
\ No newline at end of file diff --git a/indra/newview/llappviewermacosx-objc.mm b/indra/newview/llappviewermacosx-objc.mm new file mode 100644 index 0000000000..ca2090b790 --- /dev/null +++ b/indra/newview/llappviewermacosx-objc.mm @@ -0,0 +1,20 @@ +// +//  llappviewermacosx.m +//  SecondLife +// +//  Created by Geenz on 12/12/12. +// +// + +#import <Cocoa/Cocoa.h> +#import <ApplicationServices/ApplicationServices.h> +#include "llappviewermacosx-objc.h" +#import "llappviewermacosx-delegate.h" + +int createNSApp(int argc, const char *argv[]) +{ +	return NSApplicationMain(argc, argv); +} + + + diff --git a/indra/newview/llappviewermacosx.cpp b/indra/newview/llappviewermacosx.cpp index c2916717bd..a1c8b7699d 100644 --- a/indra/newview/llappviewermacosx.cpp +++ b/indra/newview/llappviewermacosx.cpp @@ -31,6 +31,7 @@  #endif  #include "llappviewermacosx.h" +#include "llappviewermacosx-objc.h"  #include "llcommandlineparser.h"  #include "llmemtype.h" @@ -53,7 +54,7 @@ namespace  	int gArgC;  	char** gArgV; -	bool sCrashReporterIsRunning = false; +	LLAppViewerMacOSX* gViewerAppPtr;  	OSErr AEQuitHandler(const AppleEvent *messagein, AppleEvent *reply, long refIn)  	{ @@ -65,55 +66,61 @@ namespace  	}  } -int main( int argc, char **argv )  +bool initViewer()  {  	LLMemType mt1(LLMemType::MTYPE_STARTUP); - -#if LL_SOLARIS && defined(__sparc) -	asm ("ta\t6");		 // NOTE:  Make sure memory alignment is enforced on SPARC -#endif - +	  	// Set the working dir to <bundle>/Contents/Resources  	if (chdir(gDirUtilp->getAppRODataDir().c_str()) == -1)  	{  		llwarns << "Could not change directory to " -				<< gDirUtilp->getAppRODataDir() << ": " << strerror(errno) -				<< llendl; +		<< gDirUtilp->getAppRODataDir() << ": " << strerror(errno) +		<< llendl;  	} - -	LLAppViewerMacOSX* viewer_app_ptr = new LLAppViewerMacOSX(); - -	viewer_app_ptr->setErrorHandler(LLAppViewer::handleViewerCrash); - -	// Store off the command line args for use later. -	gArgC = argc; -	gArgV = argv; -	bool ok = viewer_app_ptr->init(); +	gViewerAppPtr = new LLAppViewerMacOSX(); +	 +	gViewerAppPtr->setErrorHandler(LLAppViewer::handleViewerCrash); +	 +	 +	 +	bool ok = gViewerAppPtr->init();  	if(!ok)  	{  		llwarns << "Application init failed." << llendl; -		return -1;  	} +	 +	return ok; +} -		// Run the application main loop -	if(!LLApp::isQuitting())  +void handleQuit() +{ +	if(!LLApp::isError())  	{ -		viewer_app_ptr->mainLoop(); +		gViewerAppPtr->cleanup();  	} +	 +	delete gViewerAppPtr; +	gViewerAppPtr = NULL; +} -	if (!LLApp::isError()) +bool runMainLoop() +{ +	bool ret = LLApp::isQuitting(); +	if (!ret)  	{ -		// -		// We don't want to do cleanup here if the error handler got called - -		// the assumption is that the error handler is responsible for doing -		// app cleanup if there was a problem. -		// -		viewer_app_ptr->cleanup(); +		ret = gViewerAppPtr->mainLoop();  	} -	delete viewer_app_ptr; -	viewer_app_ptr = NULL; -	return 0; +	 +	return ret; +} + +int main( int argc, char **argv )  +{ +	// Store off the command line args for use later. +	gArgC = argc; +	gArgV = argv; +	return createNSApp(argc, (const char**)argv);  }  LLAppViewerMacOSX::LLAppViewerMacOSX() @@ -258,33 +265,6 @@ bool LLAppViewerMacOSX::restoreErrorTrap()  	return reset_count == 0;  } -static OSStatus CarbonEventHandler(EventHandlerCallRef inHandlerCallRef,  -								   EventRef inEvent,  -								   void* inUserData) -{ -    ProcessSerialNumber psn; -	 -    GetEventParameter(inEvent,  -					  kEventParamProcessID,  -					  typeProcessSerialNumber,  -					  NULL,  -					  sizeof(psn),  -					  NULL,  -					  &psn); -	 -    if( GetEventKind(inEvent) == kEventAppTerminated )  -	{ -		Boolean matching_psn = FALSE;	 -		OSErr os_result = SameProcess(&psn, (ProcessSerialNumber*)inUserData, &matching_psn); -		if(os_result >= 0 && matching_psn) -		{ -			sCrashReporterIsRunning = false; -			QuitApplicationEventLoop(); -		} -    } -    return noErr; -} -  void LLAppViewerMacOSX::handleCrashReporting(bool reportFreeze)  {  	// This used to use fork&exec, but is switched to LSOpenApplication to  @@ -306,72 +286,6 @@ void LLAppViewerMacOSX::handleCrashReporting(bool reportFreeze)  	 	appParams.version = 0;  		appParams.flags = kLSLaunchNoParams | kLSLaunchStartClassic;  		appParams.application = &appRef; -		 -		if(reportFreeze) -		{ -			// Make sure freeze reporting launches the crash logger synchronously, lest  -			// Log files get changed by SL while the logger is running. -		 -			// *NOTE:Mani A better way - make a copy of the data that the crash reporter will send -			// and let SL go about its business. This way makes the mac work like windows and linux -			// and is the smallest patch for the issue.  -			sCrashReporterIsRunning = false; -			ProcessSerialNumber o_psn; - -			static EventHandlerRef sCarbonEventsRef = NULL; -			static const EventTypeSpec kEvents[] =  -			{ -				{ kEventClassApplication, kEventAppTerminated } -			}; -			 -			// Install the handler to detect crash logger termination -			InstallEventHandler(GetApplicationEventTarget(),  -								(EventHandlerUPP) CarbonEventHandler, -								GetEventTypeCount(kEvents), -								kEvents, -								&o_psn, -								&sCarbonEventsRef -								); -			 -			// Remove, temporarily the quit handler - which has *crash* behavior before  -			// the mainloop gets running! -			AERemoveEventHandler(kCoreEventClass,  -								 kAEQuitApplication,  -								 NewAEEventHandlerUPP(AEQuitHandler), -								 false); - -			// Launch the crash reporter. -			os_result = LSOpenApplication(&appParams, &o_psn); -			 -			if(os_result >= 0) -			{	 -				sCrashReporterIsRunning = true; -			} - -			while(sCrashReporterIsRunning) -			{ -				RunApplicationEventLoop(); -			} - -			// Re-install the apps quit handler. -			AEInstallEventHandler(kCoreEventClass,  -								  kAEQuitApplication,  -								  NewAEEventHandlerUPP(AEQuitHandler), -								  0,  -								  false); -			 -			// Remove the crash reporter quit handler. -			RemoveEventHandler(sCarbonEventsRef); -		} -		else -		{ -			appParams.flags |= kLSLaunchAsync; -			clear_signals(); - -			ProcessSerialNumber o_psn; -			os_result = LSOpenApplication(&appParams, &o_psn); -		} -		  	}  } @@ -505,73 +419,3 @@ OSErr AEGURLHandler(const AppleEvent *messagein, AppleEvent *reply, long refIn)  	return(result);  } - -OSStatus simpleDialogHandler(EventHandlerCallRef handler, EventRef event, void *userdata) -{ -	OSStatus result = eventNotHandledErr; -	OSStatus err; -	UInt32 evtClass = GetEventClass(event); -	UInt32 evtKind = GetEventKind(event); -	WindowRef window = (WindowRef)userdata; -	 -	if((evtClass == kEventClassCommand) && (evtKind == kEventCommandProcess)) -	{ -		HICommand cmd; -		err = GetEventParameter(event, kEventParamDirectObject, typeHICommand, NULL, sizeof(cmd), NULL, &cmd); -		 -		if(err == noErr) -		{ -			switch(cmd.commandID) -			{ -				case kHICommandOK: -					QuitAppModalLoopForWindow(window); -					result = noErr; -				break; -				 -				case kHICommandCancel: -					QuitAppModalLoopForWindow(window); -					result = userCanceledErr; -				break; -			} -		} -	} -	 -	return(result); -} - -void init_apple_menu(const char* product) -{ -	// Load up a proper menu bar. -	{ -		OSStatus err; -		IBNibRef nib = NULL; -		// NOTE: DO NOT translate or brand this string.  It's an internal name in the .nib file, and MUST match exactly. -		err = CreateNibReference(CFSTR("SecondLife"), &nib); -		 -		if(err == noErr) -		{ -			// NOTE: DO NOT translate or brand this string.  It's an internal name in the .nib file, and MUST match exactly. -			SetMenuBarFromNib(nib, CFSTR("MenuBar")); -		} - -		if(nib != NULL) -		{ -			DisposeNibReference(nib); -		} -	} -	 -	// Install a handler for 'gurl' AppleEvents.  This is how secondlife:// URLs get passed to the viewer. -	 -	if(AEInstallEventHandler('GURL', 'GURL', NewAEEventHandlerUPP(AEGURLHandler),0, false) != noErr) -	{ -		// Couldn't install AppleEvent handler.  This error shouldn't be fatal. -		llinfos << "Couldn't install 'GURL' AppleEvent handler.  Continuing..." << llendl; -	} - -	// Install a handler for 'quit' AppleEvents.  This makes quitting the application from the dock work. -	if(AEInstallEventHandler(kCoreEventClass, kAEQuitApplication, NewAEEventHandlerUPP(AEQuitHandler),0, false) != noErr) -	{ -		// Couldn't install AppleEvent handler.  This error shouldn't be fatal. -		llinfos << "Couldn't install Quit AppleEvent handler.  Continuing..." << llendl; -	} -} diff --git a/indra/newview/macutil_Prefix.h b/indra/newview/macutil_Prefix.h index b54a764a62..b8df961cac 100644 --- a/indra/newview/macutil_Prefix.h +++ b/indra/newview/macutil_Prefix.h @@ -32,7 +32,6 @@   *   */ -#include <Carbon/Carbon.h>  #include "fix_macros.h"  #undef verify  | 
