From: znek Date: Tue, 14 Dec 2004 15:50:32 +0000 (+0000) Subject: SOPE:X 2.x X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=74b5e24bd44030a818a30df9570c965cf96963a5;p=sope SOPE:X 2.x git-svn-id: http://svn.opengroupware.org/SOPE/trunk@439 e4a50df8-12e2-0310-a44c-efbce7f8a7e3 --- diff --git a/sopex/README b/sopex/README index c0662072..a8fd4291 100644 --- a/sopex/README +++ b/sopex/README @@ -1,7 +1,7 @@ # $Id: README 1 2004-08-20 11:17:52Z znek $ -SKYRIX Object Publishing Evironment on mac os X +SKYRIX Object Publishing Evironment on Mac OS X =============================================== This directory contains SOPEX, a Mac OS X framework and accompanied diff --git a/sopex/SOPEX/CHANGES b/sopex/SOPEX/CHANGES new file mode 100644 index 00000000..8e828059 --- /dev/null +++ b/sopex/SOPEX/CHANGES @@ -0,0 +1,19 @@ +CHANGES +======= + +CHANGES BETWEEN 1.x and 2.x: +---------------------------- + +SOPE:X 2.x has been redesigned to be single process. SOPE:X 2.x is threaded +now, the main thread being AppKit related and the second thread being +responsible for running NGObjWeb's WORunLoop. + +Because of this, SNS has been removed from SOPE:X. Also, the SOPEXConsole has +been rewritten from using pipes to utilizing a new SOPEXConsoleAppender (and +related formatter). This is limited to NGLogging, however. NGLog() won't +work in this context - however NGLogging is supposed to be the new standard +and is supported throughout SOPE. + +The MainMenu.nib is no longer located in the SOPE:X framework, it's a resource +of the main bundle now. This leads to much easier customization for those who +need it. diff --git a/sopex/SOPEX/ChangeLog b/sopex/SOPEX/ChangeLog index 58b2659a..ff9760af 100644 --- a/sopex/SOPEX/ChangeLog +++ b/sopex/SOPEX/ChangeLog @@ -1,3 +1,51 @@ +2004-11-23 Marcus Mueller + + * v2.0.0 + + * CHANGES: new file providing an overview of the architectural changes + between 1.x and 2.x in form of an overview + + * TODO: new file + + * SOPEXBrowserController.[hm]: new controller responsible for managing + the contents of a WebView. For each "target" window in an application + a new controller is created and assigned. NOTE: there's a major + bug that causes the controller's to be released at the end of a + load. The reason for the bug is still unclear, but it's something + that is caused by WebKit (by its resource loading delegate + mechanism). As long as this isn't fixed, the -release method is + overwritten to do nothing. + + * English.lproj/SOPEXBrowserController.nib: accompanying NIB for the + SOPEXBrowserController + + * SOPEXConsoleAppender.m: new appender for the SOPEXConsole + + * SOPEXConsoleEventFormatter.m: special event formatter, providing + required formatting for the SOPEXConsole + + * SOPEXConsole.[hm]: basically rewritten, doesn't work on file handles + any more but instead uses its own SOPEXConsoleAppender to receive + log output. + + * SOPEXAppController.[hm]: substantially rewritten. SOPEXAppController + only cares for stuff happening on an app level (setup, connecting to + the SOPE thread, notifications). All other stuff (WebKit) is handled + by SOPEXBrowserController now. + + * SOPEX_Prefix.pch: renamed - is common.h now + + * SOPEXSNSController.[hm]: removed, obsoleted due to technical changes + + * SOPEXApplication.[hm]: removed, obsoleted due to technical changes + + * English.lproj/SOPEXMainMenu.nib: removed, this is part of a new + project's template now. + + * *.m: major code cleanup, reformatting. + + * *.h: proper safeguarding headers against double inclusion. + 2004-06-05 Marcus Mueller * v1.0.9 diff --git a/sopex/SOPEX/English.lproj/SOPEXMainMenu.nib/classes.nib b/sopex/SOPEX/English.lproj/SOPEXBrowserController.nib/classes.nib similarity index 64% rename from sopex/SOPEX/English.lproj/SOPEXMainMenu.nib/classes.nib rename to sopex/SOPEX/English.lproj/SOPEXBrowserController.nib/classes.nib index a75fed20..5cd10442 100644 --- a/sopex/SOPEX/English.lproj/SOPEXMainMenu.nib/classes.nib +++ b/sopex/SOPEX/English.lproj/SOPEXBrowserController.nib/classes.nib @@ -6,6 +6,12 @@ LANGUAGE = ObjC; SUPERCLASS = NSObject; }, + { + CLASS = MLHierarchyView; + LANGUAGE = ObjC; + OUTLETS = {delegate = id; target = id; }; + SUPERCLASS = NSControl; + }, {CLASS = NSObject; LANGUAGE = ObjC; }, { ACTIONS = { @@ -51,6 +57,35 @@ }; SUPERCLASS = NSObject; }, + { + ACTIONS = { + back = id; + editInXcode = id; + reload = id; + toggleToolbar = id; + viewApplication = id; + viewHTML = id; + viewHTTP = id; + viewSource = id; + }; + CLASS = SOPEXBrowserController; + LANGUAGE = ObjC; + OUTLETS = { + htmlView = NSTextView; + mainWindow = SOPEXBrowserWindow; + progressIndicator = NSProgressIndicator; + responseHeaderInfoTableView = NSTableView; + statusBarTextField = NSTextField; + tabView = NSTabView; + webView = WebView; + woComponentNameField = NSTextField; + woDefinitionView = NSTextView; + woSourceView = NSTextView; + woxNameField = NSTextField; + woxSourceView = NSTextView; + }; + SUPERCLASS = NSObject; + }, {CLASS = SOPEXBrowserWindow; LANGUAGE = ObjC; SUPERCLASS = NSWindow; }, { CLASS = SOPEXTextView; diff --git a/sopex/SOPEX/English.lproj/SOPEXMainMenu.nib/info.nib b/sopex/SOPEX/English.lproj/SOPEXBrowserController.nib/info.nib similarity index 58% rename from sopex/SOPEX/English.lproj/SOPEXMainMenu.nib/info.nib rename to sopex/SOPEX/English.lproj/SOPEXBrowserController.nib/info.nib index d0eafae8..178fb933 100644 --- a/sopex/SOPEX/English.lproj/SOPEXMainMenu.nib/info.nib +++ b/sopex/SOPEX/English.lproj/SOPEXBrowserController.nib/info.nib @@ -3,21 +3,27 @@ IBDocumentLocation - 22 49 356 241 0 0 1024 746 - IBEditorPositions + 12 144 356 241 0 0 1152 848 + IBFramework Version + 364.0 + IBGroupedObjects - 29 - 25 444 317 44 0 0 1024 746 + 0 + + 411 + 362 + - IBFramework Version - 362.0 + IBLastGroupID + 3 + IBOldestOS + 3 IBOpenObjects - 29 21 IBSystem Version - 7F44 + 7R28 IBUsesTextArchiving diff --git a/sopex/SOPEX/English.lproj/SOPEXBrowserController.nib/keyedobjects.nib b/sopex/SOPEX/English.lproj/SOPEXBrowserController.nib/keyedobjects.nib new file mode 100644 index 00000000..18f27582 --- /dev/null +++ b/sopex/SOPEX/English.lproj/SOPEXBrowserController.nib/keyedobjects.nib @@ -0,0 +1,8100 @@ + + + + + $archiver + NSKeyedArchiver + $objects + + $null + + $class + + CF$UID + 554 + + NSClassesKeys + + CF$UID + 479 + + NSClassesValues + + CF$UID + 480 + + NSConnections + + CF$UID + 405 + + NSFontManager + + CF$UID + 0 + + NSFramework + + CF$UID + 5 + + NSNamesKeys + + CF$UID + 456 + + NSNamesValues + + CF$UID + 457 + + NSNextOid + 453 + NSObjectsKeys + + CF$UID + 453 + + NSObjectsValues + + CF$UID + 455 + + NSOidsKeys + + CF$UID + 481 + + NSOidsValues + + CF$UID + 482 + + NSRoot + + CF$UID + 2 + + NSVisibleWindows + + CF$UID + 7 + + + + $class + + CF$UID + 4 + + NSClassName + + CF$UID + 3 + + + SOPEXBrowserController + + $classes + + NSCustomObject + NSObject + + $classname + NSCustomObject + + + $class + + CF$UID + 6 + + NS.string + IBCocoaFramework + + + $classes + + NSMutableString + NSString + NSObject + + $classname + NSMutableString + + + $class + + CF$UID + 51 + + NS.objects + + + CF$UID + 8 + + + + + $class + + CF$UID + 404 + + NSFrameAutosaveName + + CF$UID + 403 + + NSMaxSize + + CF$UID + 402 + + NSMinSize + + CF$UID + 401 + + NSScreenRect + + CF$UID + 400 + + NSViewClass + + CF$UID + 12 + + NSWTFlags + 1881669632 + NSWindowBacking + 2 + NSWindowClass + + CF$UID + 11 + + NSWindowRect + + CF$UID + 9 + + NSWindowStyleMask + 14 + NSWindowTitle + + CF$UID + 10 + + NSWindowView + + CF$UID + 13 + + + {{508, 182}, {480, 565}} + Window + SOPEXBrowserWindow + + $class + + CF$UID + 6 + + NS.string + View + + + $class + + CF$UID + 85 + + NSFrame + + CF$UID + 399 + + NSNextResponder + + CF$UID + 0 + + NSSubviews + + CF$UID + 14 + + + + $class + + CF$UID + 33 + + NS.objects + + + CF$UID + 15 + + + CF$UID + 379 + + + CF$UID + 383 + + + CF$UID + 388 + + + + + $class + + CF$UID + 378 + + NSFont + + CF$UID + 159 + + NSFrame + + CF$UID + 86 + + NSNextResponder + + CF$UID + 13 + + NSSelectedTabViewItem + + CF$UID + 88 + + NSSubviews + + CF$UID + 16 + + NSSuperview + + CF$UID + 13 + + NSTabViewItems + + CF$UID + 87 + + NSTvFlags + 268435462 + NSvFlags + 18 + + + $class + + CF$UID + 33 + + NS.objects + + + CF$UID + 17 + + + + + $class + + CF$UID + 85 + + NSFrameSize + + CF$UID + 84 + + NSNextResponder + + CF$UID + 15 + + NSSubviews + + CF$UID + 18 + + NSSuperview + + CF$UID + 15 + + + + $class + + CF$UID + 33 + + NS.objects + + + CF$UID + 19 + + + + + $class + + CF$UID + 83 + + FrameName + + CF$UID + 0 + + GroupName + + CF$UID + 0 + + NSDragTypes + + CF$UID + 38 + + NSFrameSize + + CF$UID + 52 + + NSNextKeyView + + CF$UID + 21 + + NSNextResponder + + CF$UID + 17 + + NSSubviews + + CF$UID + 20 + + NSSuperview + + CF$UID + 17 + + NSvFlags + 274 + Preferences + + CF$UID + 53 + + UseBackForwardList + + + + $class + + CF$UID + 33 + + NS.objects + + + CF$UID + 21 + + + + + $class + + CF$UID + 37 + + NSFrameSize + + CF$UID + 36 + + NSNextKeyView + + CF$UID + 23 + + NSNextResponder + + CF$UID + 19 + + NSSubviews + + CF$UID + 22 + + NSSuperview + + CF$UID + 19 + + NSvFlags + 274 + + + $class + + CF$UID + 33 + + NS.objects + + + CF$UID + 23 + + + + + $class + + CF$UID + 35 + + NSContentView + + CF$UID + 25 + + NSFrameSize + + CF$UID + 34 + + NSNextKeyView + + CF$UID + 25 + + NSNextResponder + + CF$UID + 21 + + NSSubviews + + CF$UID + 24 + + NSSuperview + + CF$UID + 21 + + NSsFlags + 0 + NSvFlags + 274 + + + $class + + CF$UID + 33 + + NS.objects + + + CF$UID + 25 + + + + + $class + + CF$UID + 32 + + NSBGColor + + CF$UID + 27 + + NSFrameSize + + CF$UID + 26 + + NSNextResponder + + CF$UID + 23 + + NSSuperview + + CF$UID + 23 + + NScvFlags + 2 + NSvFlags + 256 + + {480, 547} + + $class + + CF$UID + 31 + + NSCatalogName + + CF$UID + 28 + + NSColor + + CF$UID + 30 + + NSColorName + + CF$UID + 29 + + NSColorSpace + 6 + + System + controlBackgroundColor + + $class + + CF$UID + 31 + + NSColorSpace + 3 + NSWhite + + MC42NjY2NjY2OQA= + + + + $classes + + NSColor + NSObject + + $classname + NSColor + + + $classes + + WebClipView + NSClipView + NSView + NSResponder + NSObject + + $classname + WebClipView + + + $classes + + NSMutableArray + NSArray + NSObject + + $classname + NSMutableArray + + {480, 547} + + $classes + + WebDynamicScrollBarsView + WebCoreScrollView + NSScrollView + NSView + NSResponder + NSObject + + $classname + WebDynamicScrollBarsView + + {480, 547} + + $classes + + WebFrameView + NSView + NSResponder + NSObject + + $classname + WebFrameView + + + $class + + CF$UID + 51 + + NS.objects + + + CF$UID + 39 + + + CF$UID + 40 + + + CF$UID + 41 + + + CF$UID + 42 + + + CF$UID + 43 + + + CF$UID + 44 + + + CF$UID + 45 + + + CF$UID + 46 + + + CF$UID + 47 + + + CF$UID + 48 + + + CF$UID + 49 + + + CF$UID + 50 + + + + Apple PICT pasteboard type + dyn.aqr104pxbsb2g23msr731k8puqy81n6xqr2oooooo + Apple Web Archive pasteboard type + NSStringPboardType + NeXT Rich Text Format v1.0 pasteboard type + NSFilenamesPboardType + Apple URL pasteboard type + Apple HTML pasteboard type + public.url + NeXT TIFF v4.0 pasteboard type + WebURLsWithTitlesPboardType + NeXT RTFD pasteboard type + + $classes + + NSMutableSet + NSSet + NSObject + + $classname + NSMutableSet + + {480, 547} + + $class + + CF$UID + 82 + + Identifier + + CF$UID + 54 + + Values + + CF$UID + 55 + + + WebUI + + $class + + CF$UID + 81 + + NS.keys + + + CF$UID + 56 + + + CF$UID + 57 + + + CF$UID + 58 + + + CF$UID + 59 + + + CF$UID + 60 + + + CF$UID + 61 + + + CF$UID + 62 + + + CF$UID + 63 + + + CF$UID + 64 + + + CF$UID + 65 + + + CF$UID + 66 + + + CF$UID + 67 + + + CF$UID + 68 + + + CF$UID + 69 + + + CF$UID + 70 + + + CF$UID + 71 + + + NS.objects + + + CF$UID + 72 + + + CF$UID + 73 + + + CF$UID + 73 + + + CF$UID + 74 + + + CF$UID + 75 + + + CF$UID + 73 + + + CF$UID + 76 + + + CF$UID + 73 + + + CF$UID + 77 + + + CF$UID + 73 + + + CF$UID + 78 + + + CF$UID + 76 + + + CF$UID + 79 + + + CF$UID + 80 + + + CF$UID + 73 + + + CF$UID + 73 + + + + WebUIWebKitFantasyFont + WebUIWebKitAllowAnimatedImageLoopingPreferenceKey + WebUIWebKitJavaEnabled + WebUIWebKitDefaultFontSize + WebUIWebKitMinimumFontSize + WebUIWebKitPluginsEnabled + WebUIWebKitStandardFont + WebUIWebKitJavaScriptEnabled + WebUIWebKitSansSerifFont + WebUIWebKitDisplayImagesKey + WebUIWebKitCursiveFont + WebUIWebKitSerifFont + WebUIWebKitDefaultFixedFontSize + WebUIWebKitFixedFont + WebUIWebKitAllowAnimatedImagesPreferenceKey + WebUIWebKitJavaScriptCanOpenWindowsAutomatically + Papyrus + + 16 + 1 + Times + Helvetica + Apple Chancery + 13 + Courier + + $classes + + NSMutableDictionary + NSDictionary + NSObject + + $classname + NSMutableDictionary + + + $classes + + WebPreferences + NSObject + + $classname + WebPreferences + + + $classes + + WebView + %WebView + NSView + NSResponder + NSObject + + $classname + WebView + + {480, 546} + + $classes + + NSView + NSResponder + NSObject + + $classname + NSView + + {{0, 19}, {480, 546}} + + $class + + CF$UID + 33 + + NS.objects + + + CF$UID + 88 + + + CF$UID + 94 + + + CF$UID + 178 + + + CF$UID + 233 + + + CF$UID + 295 + + + + + $class + + CF$UID + 93 + + NSColor + + CF$UID + 91 + + NSIdentifier + + CF$UID + 89 + + NSLabel + + CF$UID + 90 + + NSTabView + + CF$UID + 15 + + NSView + + CF$UID + 17 + + + application + Application + + $class + + CF$UID + 31 + + NSCatalogName + + CF$UID + 28 + + NSColor + + CF$UID + 30 + + NSColorName + + CF$UID + 92 + + NSColorSpace + 6 + + controlColor + + $classes + + NSTabViewItem + NSObject + + $classname + NSTabViewItem + + + $class + + CF$UID + 93 + + NSColor + + CF$UID + 91 + + NSIdentifier + + CF$UID + 95 + + NSLabel + + CF$UID + 177 + + NSTabView + + CF$UID + 15 + + NSView + + CF$UID + 96 + + + html + + $class + + CF$UID + 85 + + NSFrameSize + + CF$UID + 176 + + NSNextResponder + + CF$UID + 0 + + NSSubviews + + CF$UID + 97 + + + + $class + + CF$UID + 33 + + NS.objects + + + CF$UID + 98 + + + CF$UID + 155 + + + CF$UID + 167 + + + + + $class + + CF$UID + 154 + + NSContentView + + CF$UID + 100 + + NSFrame + + CF$UID + 153 + + NSHScroller + + CF$UID + 150 + + NSNextKeyView + + CF$UID + 100 + + NSNextResponder + + CF$UID + 96 + + NSSubviews + + CF$UID + 99 + + NSSuperview + + CF$UID + 96 + + NSVScroller + + CF$UID + 146 + + NSsFlags + 18 + NSvFlags + 274 + + + $class + + CF$UID + 33 + + NS.objects + + + CF$UID + 100 + + + CF$UID + 146 + + + CF$UID + 150 + + + + + $class + + CF$UID + 145 + + NSBGColor + + CF$UID + 118 + + NSBounds + + CF$UID + 142 + + NSCursor + + CF$UID + 143 + + NSDocView + + CF$UID + 102 + + NSFrame + + CF$UID + 141 + + NSNextKeyView + + CF$UID + 102 + + NSNextResponder + + CF$UID + 98 + + NSSubviews + + CF$UID + 101 + + NSSuperview + + CF$UID + 98 + + NScvFlags + 4 + NSvFlags + 2304 + + + $class + + CF$UID + 33 + + NS.objects + + + CF$UID + 102 + + + + + $class + + CF$UID + 140 + + NSDelegate + + CF$UID + 0 + + NSDragTypes + + CF$UID + 103 + + NSFrame + + CF$UID + 108 + + NSMaxSize + + CF$UID + 139 + + NSNextResponder + + CF$UID + 100 + + NSSharedData + + CF$UID + 117 + + NSSuperview + + CF$UID + 100 + + NSTVFlags + 6 + NSTextContainer + + CF$UID + 109 + + NSvFlags + 2066 + + + $class + + CF$UID + 51 + + NS.objects + + + CF$UID + 104 + + + CF$UID + 39 + + + CF$UID + 42 + + + CF$UID + 43 + + + CF$UID + 105 + + + CF$UID + 46 + + + CF$UID + 44 + + + CF$UID + 48 + + + CF$UID + 50 + + + CF$UID + 106 + + + CF$UID + 107 + + + + Apple PDF pasteboard type + NeXT Encapsulated PostScript v1.2 pasteboard type + CorePasteboardFlavorType 0x6D6F6F76 + NSColor pasteboard type + {{0, 124}, {463, 523}} + + $class + + CF$UID + 116 + + NSLayoutManager + + CF$UID + 110 + + NSTCFlags + 1 + NSTextView + + CF$UID + 102 + + NSWidth + 463 + + + $class + + CF$UID + 115 + + NSDelegate + + CF$UID + 0 + + NSLMFlags + 6 + NSTextContainers + + CF$UID + 114 + + NSTextStorage + + CF$UID + 111 + + + + $class + + CF$UID + 113 + + NSDelegate + + CF$UID + 0 + + NSString + + CF$UID + 112 + + + + $class + + CF$UID + 6 + + NS.string + + + + $classes + + NSTextStorage + NSMutableAttributedString + NSAttributedString + NSObject + + $classname + NSTextStorage + + + $class + + CF$UID + 33 + + NS.objects + + + CF$UID + 109 + + + + + $classes + + NSLayoutManager + NSObject + + $classname + NSLayoutManager + + + $classes + + NSTextContainer + NSObject + + $classname + NSTextContainer + + + $class + + CF$UID + 138 + + NSBackgroundColor + + CF$UID + 118 + + NSDefaultParagraphStyle + + CF$UID + 0 + + NSFlags + 11105 + NSInsertionColor + + CF$UID + 121 + + NSLinkAttributes + + CF$UID + 130 + + NSMarkedAttributes + + CF$UID + 0 + + NSSelectedAttributes + + CF$UID + 122 + + + + $class + + CF$UID + 31 + + NSCatalogName + + CF$UID + 28 + + NSColor + + CF$UID + 120 + + NSColorName + + CF$UID + 119 + + NSColorSpace + 6 + + controlHighlightColor + + $class + + CF$UID + 31 + + NSColorSpace + 3 + NSWhite + + MQA= + + + + $class + + CF$UID + 31 + + NSColorSpace + 3 + NSWhite + + MAA= + + + + $class + + CF$UID + 129 + + NS.keys + + + CF$UID + 123 + + + CF$UID + 124 + + + NS.objects + + + CF$UID + 125 + + + CF$UID + 127 + + + + NSBackgroundColor + NSColor + + $class + + CF$UID + 31 + + NSCatalogName + + CF$UID + 28 + + NSColor + + CF$UID + 30 + + NSColorName + + CF$UID + 126 + + NSColorSpace + 6 + + selectedTextBackgroundColor + + $class + + CF$UID + 31 + + NSCatalogName + + CF$UID + 28 + + NSColor + + CF$UID + 121 + + NSColorName + + CF$UID + 128 + + NSColorSpace + 6 + + selectedTextColor + + $classes + + NSDictionary + NSObject + + $classname + NSDictionary + + + $class + + CF$UID + 129 + + NS.keys + + + CF$UID + 131 + + + CF$UID + 132 + + + CF$UID + 124 + + + NS.objects + + + CF$UID + 133 + + + CF$UID + 134 + + + CF$UID + 137 + + + + NSUnderline + NSCursor + 1 + + $class + + CF$UID + 136 + + NSCursorType + 13 + NSHotSpot + + CF$UID + 135 + + + {8, -8} + + $classes + + NSCursor + NSObject + + $classname + NSCursor + + + $class + + CF$UID + 31 + + NSColorSpace + 1 + NSRGB + + MCAwIDEA + + + + $classes + + NSTextViewSharedData + NSObject + + $classname + NSTextViewSharedData + + {463, 1e+07} + + $classes + + NSTextView + %NSTextView + NSText + NSView + NSResponder + NSObject + + $classname + NSTextView + + {{1, 1}, {463, 523}} + {{0, 124}, {463, 523}} + + $class + + CF$UID + 136 + + NSCursorType + 1 + NSHotSpot + + CF$UID + 144 + + + {4, -5} + + $classes + + NSClipView + NSView + NSResponder + NSObject + + $classname + NSClipView + + + $class + + CF$UID + 149 + + NSAction + + CF$UID + 148 + + NSCurValue + 1 + NSFrame + + CF$UID + 147 + + NSNextResponder + + CF$UID + 98 + + NSSuperview + + CF$UID + 98 + + NSTarget + + CF$UID + 98 + + NSvFlags + 256 + + {{464, 1}, {15, 523}} + _doScroller: + + $classes + + NSScroller + NSControl + NSView + NSResponder + NSObject + + $classname + NSScroller + + + $class + + CF$UID + 149 + + NSAction + + CF$UID + 152 + + NSCurValue + 1 + NSFrame + + CF$UID + 151 + + NSNextResponder + + CF$UID + 98 + + NSPercent + 0.94565218687057495 + NSSuperview + + CF$UID + 98 + + NSTarget + + CF$UID + 98 + + NSsFlags + 1 + NSvFlags + 256 + + {{-100, -100}, {87, 18}} + _doScroller: + {{0, -1}, {480, 525}} + + $classes + + NSScrollView + NSView + NSResponder + NSObject + + $classname + NSScrollView + + + $class + + CF$UID + 166 + + NSCell + + CF$UID + 157 + + NSEnabled + + NSFrame + + CF$UID + 156 + + NSNextResponder + + CF$UID + 96 + + NSSuperview + + CF$UID + 96 + + NSvFlags + 9 + + {{397, 526}, {64, 16}} + + $class + + CF$UID + 165 + + NSAlternateContents + + CF$UID + 163 + + NSAlternateImage + + CF$UID + 162 + + NSButtonFlags + -2038284033 + NSButtonFlags2 + 1 + NSCellFlags + 604110336 + NSCellFlags2 + 134479872 + NSContents + + CF$UID + 158 + + NSControlView + + CF$UID + 155 + + NSKeyEquivalent + + CF$UID + 164 + + NSPeriodicDelay + 200 + NSPeriodicInterval + 25 + NSSupport + + CF$UID + 159 + + + Reformat + + $class + + CF$UID + 161 + + NSName + + CF$UID + 160 + + NSSize + 9 + NSfFlags + 30 + + LucidaGrande + + $classes + + NSFont + NSObject + + $classname + NSFont + + + $class + + CF$UID + 161 + + NSName + + CF$UID + 160 + + NSSize + 9 + NSfFlags + 16 + + + + $class + + CF$UID + 6 + + NS.string + + + + $classes + + NSButtonCell + %NSButtonCell + NSActionCell + NSCell + NSObject + + $classname + NSButtonCell + + + $classes + + NSButton + NSControl + NSView + NSResponder + NSObject + + $classname + NSButton + + + $class + + CF$UID + 175 + + NSCell + + CF$UID + 169 + + NSEnabled + + NSFrame + + CF$UID + 168 + + NSNextResponder + + CF$UID + 96 + + NSSuperview + + CF$UID + 96 + + NSvFlags + 12 + + {{17, 527}, {371, 13}} + + $class + + CF$UID + 174 + + NSBackgroundColor + + CF$UID + 91 + + NSCellFlags + 69336577 + NSCellFlags2 + 4194304 + NSContents + + CF$UID + 170 + + NSControlView + + CF$UID + 167 + + NSSupport + + CF$UID + 171 + + NSTextColor + + CF$UID + 172 + + + HTML Source + + + $class + + CF$UID + 161 + + NSName + + CF$UID + 160 + + NSSize + 10 + NSfFlags + 27 + + + $class + + CF$UID + 31 + + NSCatalogName + + CF$UID + 28 + + NSColor + + CF$UID + 121 + + NSColorName + + CF$UID + 173 + + NSColorSpace + 6 + + controlTextColor + + $classes + + NSTextFieldCell + NSActionCell + NSCell + NSObject + + $classname + NSTextFieldCell + + + $classes + + NSTextField + %NSTextField + NSControl + NSView + NSResponder + NSObject + + $classname + NSTextField + + {480, 546} + HTML + + $class + + CF$UID + 93 + + NSColor + + CF$UID + 91 + + NSIdentifier + + CF$UID + 179 + + NSLabel + + CF$UID + 232 + + NSTabView + + CF$UID + 15 + + NSView + + CF$UID + 180 + + + http + + $class + + CF$UID + 85 + + NSFrameSize + + CF$UID + 231 + + NSNextResponder + + CF$UID + 0 + + NSSubviews + + CF$UID + 181 + + + + $class + + CF$UID + 33 + + NS.objects + + + CF$UID + 182 + + + CF$UID + 227 + + + + + $class + + CF$UID + 154 + + NSContentView + + CF$UID + 184 + + NSFrame + + CF$UID + 226 + + NSHScroller + + CF$UID + 221 + + NSHeaderClipView + + CF$UID + 189 + + NSNextKeyView + + CF$UID + 184 + + NSNextResponder + + CF$UID + 180 + + NSScrollAmts + + QSAAAEEgAABBmAAAQZgAAA== + + NSSubviews + + CF$UID + 183 + + NSSuperview + + CF$UID + 180 + + NSVScroller + + CF$UID + 218 + + NSsFlags + 562 + NSvFlags + 274 + + + $class + + CF$UID + 33 + + NS.objects + + + CF$UID + 184 + + + CF$UID + 218 + + + CF$UID + 221 + + + CF$UID + 189 + + + CF$UID + 192 + + + + + $class + + CF$UID + 145 + + NSBGColor + + CF$UID + 27 + + NSDocView + + CF$UID + 186 + + NSFrame + + CF$UID + 217 + + NSNextKeyView + + CF$UID + 186 + + NSNextResponder + + CF$UID + 182 + + NSSubviews + + CF$UID + 185 + + NSSuperview + + CF$UID + 182 + + NScvFlags + 4 + NSvFlags + 2304 + + + $class + + CF$UID + 33 + + NS.objects + + + CF$UID + 186 + + + + + $class + + CF$UID + 216 + + NSBackgroundColor + + CF$UID + 120 + + NSCornerView + + CF$UID + 192 + + NSEnabled + + NSFrameSize + + CF$UID + 187 + + NSGridColor + + CF$UID + 213 + + NSHeaderView + + CF$UID + 188 + + NSIntercellSpacingHeight + 2 + NSIntercellSpacingWidth + 3 + NSNextResponder + + CF$UID + 184 + + NSRowHeight + 17 + NSSuperview + + CF$UID + 184 + + NSTableColumns + + CF$UID + 195 + + NSTvFlags + -759169024 + + {478, 0} + + $class + + CF$UID + 191 + + NSFrameSize + + CF$UID + 190 + + NSNextResponder + + CF$UID + 189 + + NSSuperview + + CF$UID + 189 + + NSTableView + + CF$UID + 186 + + NSvFlags + 256 + + + $class + + CF$UID + 145 + + NSBGColor + + CF$UID + 27 + + NSDocView + + CF$UID + 188 + + NSFrame + + CF$UID + 225 + + NSNextKeyView + + CF$UID + 188 + + NSNextResponder + + CF$UID + 182 + + NSSubviews + + CF$UID + 224 + + NSSuperview + + CF$UID + 182 + + NScvFlags + 4 + NSvFlags + 2304 + + {478, 17} + + $classes + + NSTableHeaderView + NSView + NSResponder + NSObject + + $classname + NSTableHeaderView + + + $class + + CF$UID + 194 + + NSFrame + + CF$UID + 193 + + NSNextResponder + + CF$UID + 182 + + NSSuperview + + CF$UID + 182 + + NSvFlags + -2147483392 + + {{-32, -34}, {16, 17}} + + $classes + + _NSCornerView + NSView + NSResponder + NSObject + + $classname + _NSCornerView + + + $class + + CF$UID + 33 + + NS.objects + + + CF$UID + 196 + + + CF$UID + 208 + + + + + $class + + CF$UID + 207 + + NSDataCell + + CF$UID + 205 + + NSHeaderCell + + CF$UID + 198 + + NSIdentifier + + CF$UID + 197 + + NSIsResizeable + + NSMaxWidth + 1000 + NSMinWidth + 40 + NSTableView + + CF$UID + 186 + + NSWidth + 164 + + header + + $class + + CF$UID + 204 + + NSBackgroundColor + + CF$UID + 201 + + NSCellFlags + 75628032 + NSCellFlags2 + 0 + NSContents + + CF$UID + 199 + + NSSupport + + CF$UID + 200 + + NSTextColor + + CF$UID + 202 + + + Header + + $class + + CF$UID + 161 + + NSName + + CF$UID + 160 + + NSSize + 11 + NSfFlags + 28 + + + $class + + CF$UID + 31 + + NSColorSpace + 3 + NSWhite + + MC4zMzMzMzI5OQA= + + + + $class + + CF$UID + 31 + + NSCatalogName + + CF$UID + 28 + + NSColor + + CF$UID + 121 + + NSColorName + + CF$UID + 203 + + NSColorSpace + 6 + + headerTextColor + + $classes + + NSTableHeaderCell + NSTextFieldCell + NSActionCell + NSCell + NSObject + + $classname + NSTableHeaderCell + + + $class + + CF$UID + 174 + + NSBackgroundColor + + CF$UID + 120 + + NSCellFlags + 338820672 + NSCellFlags2 + 0 + NSControlView + + CF$UID + 186 + + NSSupport + + CF$UID + 206 + + NSTextColor + + CF$UID + 172 + + + + $class + + CF$UID + 161 + + NSName + + CF$UID + 160 + + NSSize + 13 + NSfFlags + 20 + + + $classes + + NSTableColumn + NSObject + + $classname + NSTableColumn + + + $class + + CF$UID + 207 + + NSDataCell + + CF$UID + 212 + + NSHeaderCell + + CF$UID + 210 + + NSIdentifier + + CF$UID + 209 + + NSIsEditable + + NSIsResizeable + + NSMaxWidth + 1000 + NSMinWidth + 8 + NSTableView + + CF$UID + 186 + + NSWidth + 308.4010009765625 + + value + + $class + + CF$UID + 204 + + NSBackgroundColor + + CF$UID + 201 + + NSCellFlags + 75628032 + NSCellFlags2 + 0 + NSContents + + CF$UID + 211 + + NSSupport + + CF$UID + 200 + + NSTextColor + + CF$UID + 202 + + + Value + + $class + + CF$UID + 174 + + NSBackgroundColor + + CF$UID + 120 + + NSCellFlags + 338820672 + NSCellFlags2 + 0 + NSControlView + + CF$UID + 186 + + NSSupport + + CF$UID + 206 + + NSTextColor + + CF$UID + 172 + + + + $class + + CF$UID + 31 + + NSCatalogName + + CF$UID + 28 + + NSColor + + CF$UID + 215 + + NSColorName + + CF$UID + 214 + + NSColorSpace + 6 + + gridColor + + $class + + CF$UID + 31 + + NSColorSpace + 3 + NSWhite + + MC41AA== + + + + $classes + + NSTableView + %NSTableView + NSControl + NSView + NSResponder + NSObject + + $classname + NSTableView + + {{1, 17}, {478, 507}} + + $class + + CF$UID + 149 + + NSAction + + CF$UID + 220 + + NSFrame + + CF$UID + 219 + + NSNextResponder + + CF$UID + 182 + + NSPercent + 0.41052630543708801 + NSSuperview + + CF$UID + 182 + + NSTarget + + CF$UID + 182 + + NSvFlags + -2147483392 + + {{-30, 17}, {15, 472}} + _doScroller: + + $class + + CF$UID + 149 + + NSAction + + CF$UID + 223 + + NSFrame + + CF$UID + 222 + + NSNextResponder + + CF$UID + 182 + + NSPercent + 0.99047619104385376 + NSSuperview + + CF$UID + 182 + + NSTarget + + CF$UID + 182 + + NSsFlags + 1 + NSvFlags + -2147483392 + + {{1, -30}, {423, 15}} + _doScroller: + + $class + + CF$UID + 33 + + NS.objects + + + CF$UID + 188 + + + + {{1, 0}, {478, 17}} + {{0, -1}, {480, 525}} + + $class + + CF$UID + 175 + + NSCell + + CF$UID + 229 + + NSEnabled + + NSFrame + + CF$UID + 228 + + NSNextResponder + + CF$UID + 180 + + NSSuperview + + CF$UID + 180 + + NSvFlags + 12 + + {{17, 527}, {446, 13}} + + $class + + CF$UID + 174 + + NSBackgroundColor + + CF$UID + 91 + + NSCellFlags + 69336577 + NSCellFlags2 + 4194304 + NSContents + + CF$UID + 230 + + NSControlView + + CF$UID + 227 + + NSSupport + + CF$UID + 171 + + NSTextColor + + CF$UID + 172 + + + HTTP Headers + + {480, 546} + HTTP + + $class + + CF$UID + 93 + + NSColor + + CF$UID + 91 + + NSIdentifier + + CF$UID + 234 + + NSLabel + + CF$UID + 294 + + NSTabView + + CF$UID + 15 + + NSView + + CF$UID + 235 + + + wox + + $class + + CF$UID + 85 + + NSFrameSize + + CF$UID + 293 + + NSNextResponder + + CF$UID + 0 + + NSSubviews + + CF$UID + 236 + + + + $class + + CF$UID + 33 + + NS.objects + + + CF$UID + 237 + + + CF$UID + 272 + + + CF$UID + 276 + + + CF$UID + 281 + + + CF$UID + 288 + + + + + $class + + CF$UID + 154 + + NSContentView + + CF$UID + 239 + + NSFrame + + CF$UID + 271 + + NSHScroller + + CF$UID + 268 + + NSNextKeyView + + CF$UID + 239 + + NSNextResponder + + CF$UID + 235 + + NSSubviews + + CF$UID + 238 + + NSSuperview + + CF$UID + 235 + + NSVScroller + + CF$UID + 265 + + NSsFlags + 18 + NSvFlags + 274 + + + $class + + CF$UID + 33 + + NS.objects + + + CF$UID + 239 + + + CF$UID + 265 + + + CF$UID + 268 + + + + + $class + + CF$UID + 145 + + NSBGColor + + CF$UID + 120 + + NSCursor + + CF$UID + 143 + + NSDocView + + CF$UID + 241 + + NSFrame + + CF$UID + 264 + + NSNextKeyView + + CF$UID + 241 + + NSNextResponder + + CF$UID + 237 + + NSSubviews + + CF$UID + 240 + + NSSuperview + + CF$UID + 237 + + NScvFlags + 4 + NSvFlags + 2304 + + + $class + + CF$UID + 33 + + NS.objects + + + CF$UID + 241 + + + + + $class + + CF$UID + 263 + + NSClassName + + CF$UID + 242 + + NSDelegate + + CF$UID + 0 + + NSFrameSize + + CF$UID + 244 + + NSMaxSize + + CF$UID + 262 + + NSNextResponder + + CF$UID + 239 + + NSOriginalClassName + + CF$UID + 243 + + NSSharedData + + CF$UID + 258 + + NSSuperview + + CF$UID + 239 + + NSTVFlags + 6 + NSTextContainer + + CF$UID + 245 + + NSvFlags + 2066 + + SOPEXTextView + NSTextView + {463, 502} + + $class + + CF$UID + 116 + + NSLayoutManager + + CF$UID + 246 + + NSTCFlags + 1 + NSTextView + + CF$UID + 241 + + NSWidth + 463 + + + $class + + CF$UID + 115 + + NSDelegate + + CF$UID + 0 + + NSLMFlags + 6 + NSTextContainers + + CF$UID + 257 + + NSTextStorage + + CF$UID + 247 + + + + $class + + CF$UID + 113 + + NSAttributes + + CF$UID + 249 + + NSDelegate + + CF$UID + 0 + + NSString + + CF$UID + 248 + + + + $class + + CF$UID + 6 + + NS.string + source + + + $class + + CF$UID + 129 + + NS.keys + + + CF$UID + 250 + + + CF$UID + 251 + + + CF$UID + 252 + + + NS.objects + + + CF$UID + 121 + + + CF$UID + 253 + + + CF$UID + 255 + + + + NSColor + NSParagraphStyle + NSFont + + $class + + CF$UID + 254 + + NSTabStops + + CF$UID + 0 + + + + $classes + + NSMutableParagraphStyle + NSParagraphStyle + NSObject + + $classname + NSMutableParagraphStyle + + + $class + + CF$UID + 161 + + NSName + + CF$UID + 256 + + NSSize + 10 + NSfFlags + 18 + + Monaco + + $class + + CF$UID + 33 + + NS.objects + + + CF$UID + 245 + + + + + $class + + CF$UID + 138 + + NSBackgroundColor + + CF$UID + 120 + + NSDefaultParagraphStyle + + CF$UID + 0 + + NSFlags + 12259 + NSInsertionColor + + CF$UID + 121 + + NSLinkAttributes + + CF$UID + 260 + + NSMarkedAttributes + + CF$UID + 0 + + NSSelectedAttributes + + CF$UID + 259 + + + + $class + + CF$UID + 129 + + NS.keys + + + CF$UID + 123 + + + CF$UID + 124 + + + NS.objects + + + CF$UID + 125 + + + CF$UID + 127 + + + + + $class + + CF$UID + 129 + + NS.keys + + + CF$UID + 131 + + + CF$UID + 132 + + + CF$UID + 124 + + + NS.objects + + + CF$UID + 261 + + + CF$UID + 134 + + + CF$UID + 137 + + + + 1 + {463, 1e+07} + + $classes + + NSClassSwapper + NSObject + + $classname + NSClassSwapper + + {{1, 1}, {463, 502}} + + $class + + CF$UID + 149 + + NSAction + + CF$UID + 267 + + NSCurValue + 1 + NSFrame + + CF$UID + 266 + + NSNextResponder + + CF$UID + 237 + + NSSuperview + + CF$UID + 237 + + NSTarget + + CF$UID + 237 + + NSvFlags + 256 + + {{464, 1}, {15, 502}} + _doScroller: + + $class + + CF$UID + 149 + + NSAction + + CF$UID + 270 + + NSCurValue + 1 + NSFrame + + CF$UID + 269 + + NSNextResponder + + CF$UID + 237 + + NSPercent + 0.94565218687057495 + NSSuperview + + CF$UID + 237 + + NSTarget + + CF$UID + 237 + + NSsFlags + 1 + NSvFlags + 256 + + {{-100, -100}, {87, 18}} + _doScroller: + {{0, 20}, {480, 504}} + + $class + + CF$UID + 175 + + NSCell + + CF$UID + 274 + + NSEnabled + + NSFrame + + CF$UID + 273 + + NSNextResponder + + CF$UID + 235 + + NSSuperview + + CF$UID + 235 + + NSvFlags + 12 + + {{74, 528}, {401, 13}} + + $class + + CF$UID + 174 + + NSBackgroundColor + + CF$UID + 91 + + NSCellFlags + 69336577 + NSCellFlags2 + 4194304 + NSContents + + CF$UID + 275 + + NSControlView + + CF$UID + 272 + + NSSupport + + CF$UID + 171 + + NSTextColor + + CF$UID + 172 + + + WOX Name + + $class + + CF$UID + 175 + + NSCell + + CF$UID + 278 + + NSEnabled + + NSFrame + + CF$UID + 277 + + NSNextResponder + + CF$UID + 235 + + NSSuperview + + CF$UID + 235 + + NSvFlags + 9 + + {{369, 506}, {95, 17}} + + $class + + CF$UID + 174 + + NSBackgroundColor + + CF$UID + 280 + + NSCellFlags + 75628032 + NSCellFlags2 + 71303168 + NSContents + + CF$UID + 279 + + NSControlView + + CF$UID + 276 + + NSDrawsBackground + + NSSupport + + CF$UID + 200 + + NSTextColor + + CF$UID + 172 + + + Validation failed + + + $class + + CF$UID + 31 + + NSColorSpace + 1 + NSRGB + + MSAwLjcxOTk2NzI1IDAuNzQ3Mjk4NDgA + + + + $class + + CF$UID + 175 + + NSCell + + CF$UID + 283 + + NSEnabled + + NSFrame + + CF$UID + 282 + + NSNextResponder + + CF$UID + 235 + + NSSuperview + + CF$UID + 235 + + + {{3, 528}, {74, 13}} + + $class + + CF$UID + 174 + + NSBackgroundColor + + CF$UID + 91 + + NSCellFlags + 67239424 + NSCellFlags2 + 4194304 + NSContents + + CF$UID + 284 + + NSControlView + + CF$UID + 281 + + NSSupport + + CF$UID + 171 + + NSTextColor + + CF$UID + 285 + + + Cursor + + + $class + + CF$UID + 31 + + NSCatalogName + + CF$UID + 28 + + NSColor + + CF$UID + 287 + + NSColorName + + CF$UID + 286 + + NSColorSpace + 6 + + disabledControlTextColor + + $class + + CF$UID + 31 + + NSColorSpace + 3 + NSWhite + + MC4zMzMzMzMzNAA= + + + + $class + + CF$UID + 292 + + NSClassName + + CF$UID + 290 + + NSExtension + + CF$UID + 291 + + NSFrameSize + + CF$UID + 289 + + NSNextResponder + + CF$UID + 235 + + NSSuperview + + CF$UID + 235 + + NSvFlags + 34 + + {480, 19} + MLHierarchyView + NSControl + + $classes + + NSCustomView + NSView + NSResponder + NSObject + + $classname + NSCustomView + + {480, 546} + WOX + + $class + + CF$UID + 93 + + NSColor + + CF$UID + 91 + + NSIdentifier + + CF$UID + 296 + + NSLabel + + CF$UID + 377 + + NSTabView + + CF$UID + 15 + + NSView + + CF$UID + 297 + + + wo + + $class + + CF$UID + 85 + + NSFrameSize + + CF$UID + 376 + + NSNextResponder + + CF$UID + 0 + + NSSubviews + + CF$UID + 298 + + + + $class + + CF$UID + 33 + + NS.objects + + + CF$UID + 299 + + + CF$UID + 303 + + + CF$UID + 366 + + + CF$UID + 371 + + + + + $class + + CF$UID + 175 + + NSCell + + CF$UID + 301 + + NSEnabled + + NSFrame + + CF$UID + 300 + + NSNextResponder + + CF$UID + 297 + + NSSuperview + + CF$UID + 297 + + NSvFlags + 12 + + {{116, 527}, {347, 13}} + + $class + + CF$UID + 174 + + NSBackgroundColor + + CF$UID + 91 + + NSCellFlags + 67239424 + NSCellFlags2 + 4194304 + NSContents + + CF$UID + 163 + + NSControlView + + CF$UID + 299 + + NSPlaceholderString + + CF$UID + 302 + + NSSupport + + CF$UID + 171 + + NSTextColor + + CF$UID + 172 + + + WO Name + + $class + + CF$UID + 365 + + NSFrame + + CF$UID + 364 + + NSNextResponder + + CF$UID + 297 + + NSSubviews + + CF$UID + 304 + + NSSuperview + + CF$UID + 297 + + NSvFlags + 256 + + + $class + + CF$UID + 33 + + NS.objects + + + CF$UID + 305 + + + CF$UID + 338 + + + + + $class + + CF$UID + 292 + + NSClassName + + CF$UID + 337 + + NSFrameSize + + CF$UID + 336 + + NSNextResponder + + CF$UID + 303 + + NSSubviews + + CF$UID + 306 + + NSSuperview + + CF$UID + 303 + + + + $class + + CF$UID + 33 + + NS.objects + + + CF$UID + 307 + + + CF$UID + 334 + + + + + $class + + CF$UID + 154 + + NSContentView + + CF$UID + 309 + + NSFrame + + CF$UID + 333 + + NSHScroller + + CF$UID + 330 + + NSNextKeyView + + CF$UID + 309 + + NSNextResponder + + CF$UID + 305 + + NSSubviews + + CF$UID + 308 + + NSSuperview + + CF$UID + 305 + + NSVScroller + + CF$UID + 327 + + NSsFlags + 18 + NSvFlags + 256 + + + $class + + CF$UID + 33 + + NS.objects + + + CF$UID + 309 + + + CF$UID + 327 + + + CF$UID + 330 + + + + + $class + + CF$UID + 145 + + NSBGColor + + CF$UID + 120 + + NSCursor + + CF$UID + 143 + + NSDocView + + CF$UID + 311 + + NSFrame + + CF$UID + 326 + + NSNextKeyView + + CF$UID + 311 + + NSNextResponder + + CF$UID + 307 + + NSSubviews + + CF$UID + 310 + + NSSuperview + + CF$UID + 307 + + NScvFlags + 4 + NSvFlags + 2304 + + + $class + + CF$UID + 33 + + NS.objects + + + CF$UID + 311 + + + + + $class + + CF$UID + 263 + + NSClassName + + CF$UID + 242 + + NSDelegate + + CF$UID + 0 + + NSDragTypes + + CF$UID + 313 + + NSFrameSize + + CF$UID + 314 + + NSMaxSize + + CF$UID + 325 + + NSNextResponder + + CF$UID + 309 + + NSOriginalClassName + + CF$UID + 312 + + NSSharedData + + CF$UID + 321 + + NSSuperview + + CF$UID + 309 + + NSTVFlags + 6 + NSTextContainer + + CF$UID + 315 + + NSvFlags + 2066 + + NSTextView + + $class + + CF$UID + 51 + + NS.objects + + + CF$UID + 104 + + + CF$UID + 39 + + + CF$UID + 42 + + + CF$UID + 43 + + + CF$UID + 105 + + + CF$UID + 46 + + + CF$UID + 44 + + + CF$UID + 48 + + + CF$UID + 50 + + + CF$UID + 106 + + + CF$UID + 107 + + + + {463, 239} + + $class + + CF$UID + 116 + + NSLayoutManager + + CF$UID + 316 + + NSTCFlags + 1 + NSTextView + + CF$UID + 311 + + NSWidth + 463 + + + $class + + CF$UID + 115 + + NSDelegate + + CF$UID + 0 + + NSLMFlags + 6 + NSTextContainers + + CF$UID + 320 + + NSTextStorage + + CF$UID + 317 + + + + $class + + CF$UID + 113 + + NSAttributes + + CF$UID + 319 + + NSDelegate + + CF$UID + 0 + + NSString + + CF$UID + 318 + + + + $class + + CF$UID + 6 + + NS.string + source + + + $class + + CF$UID + 129 + + NS.keys + + + CF$UID + 252 + + + CF$UID + 251 + + + NS.objects + + + CF$UID + 255 + + + CF$UID + 253 + + + + + $class + + CF$UID + 33 + + NS.objects + + + CF$UID + 315 + + + + + $class + + CF$UID + 138 + + NSBackgroundColor + + CF$UID + 120 + + NSDefaultParagraphStyle + + CF$UID + 0 + + NSFlags + 12259 + NSInsertionColor + + CF$UID + 121 + + NSLinkAttributes + + CF$UID + 323 + + NSMarkedAttributes + + CF$UID + 0 + + NSSelectedAttributes + + CF$UID + 322 + + + + $class + + CF$UID + 129 + + NS.keys + + + CF$UID + 123 + + + CF$UID + 124 + + + NS.objects + + + CF$UID + 125 + + + CF$UID + 127 + + + + + $class + + CF$UID + 129 + + NS.keys + + + CF$UID + 131 + + + CF$UID + 132 + + + CF$UID + 124 + + + NS.objects + + + CF$UID + 324 + + + CF$UID + 134 + + + CF$UID + 137 + + + + 1 + {463, 1e+07} + {{1, 1}, {463, 239}} + + $class + + CF$UID + 149 + + NSAction + + CF$UID + 329 + + NSCurValue + 1 + NSFrame + + CF$UID + 328 + + NSNextResponder + + CF$UID + 307 + + NSSuperview + + CF$UID + 307 + + NSTarget + + CF$UID + 307 + + NSvFlags + 256 + + {{464, 1}, {15, 239}} + _doScroller: + + $class + + CF$UID + 149 + + NSAction + + CF$UID + 332 + + NSCurValue + 1 + NSFrame + + CF$UID + 331 + + NSNextResponder + + CF$UID + 307 + + NSPercent + 0.94565218687057495 + NSSuperview + + CF$UID + 307 + + NSTarget + + CF$UID + 307 + + NSsFlags + 1 + NSvFlags + 256 + + {{-100, -100}, {87, 18}} + _doScroller: + {{0, 39}, {480, 241}} + + $class + + CF$UID + 292 + + NSClassName + + CF$UID + 290 + + NSExtension + + CF$UID + 291 + + NSFrame + + CF$UID + 335 + + NSNextResponder + + CF$UID + 305 + + NSSuperview + + CF$UID + 305 + + NSvFlags + 2 + + {{0, 20}, {480, 19}} + {520, 300} + NSView + + $class + + CF$UID + 154 + + NSContentView + + CF$UID + 340 + + NSFrame + + CF$UID + 363 + + NSHScroller + + CF$UID + 360 + + NSNextKeyView + + CF$UID + 340 + + NSNextResponder + + CF$UID + 303 + + NSSubviews + + CF$UID + 339 + + NSSuperview + + CF$UID + 303 + + NSVScroller + + CF$UID + 357 + + NSsFlags + 18 + NSvFlags + 274 + + + $class + + CF$UID + 33 + + NS.objects + + + CF$UID + 340 + + + CF$UID + 357 + + + CF$UID + 360 + + + + + $class + + CF$UID + 145 + + NSBGColor + + CF$UID + 120 + + NSBounds + + CF$UID + 356 + + NSCursor + + CF$UID + 143 + + NSDocView + + CF$UID + 342 + + NSFrame + + CF$UID + 355 + + NSNextKeyView + + CF$UID + 342 + + NSNextResponder + + CF$UID + 338 + + NSSubviews + + CF$UID + 341 + + NSSuperview + + CF$UID + 338 + + NScvFlags + 4 + NSvFlags + 2304 + + + $class + + CF$UID + 33 + + NS.objects + + + CF$UID + 342 + + + + + $class + + CF$UID + 263 + + NSClassName + + CF$UID + 242 + + NSDelegate + + CF$UID + 0 + + NSFrame + + CF$UID + 344 + + NSMaxSize + + CF$UID + 354 + + NSNextResponder + + CF$UID + 340 + + NSOriginalClassName + + CF$UID + 343 + + NSSharedData + + CF$UID + 350 + + NSSuperview + + CF$UID + 340 + + NSTVFlags + 6 + NSTextContainer + + CF$UID + 345 + + NSvFlags + 2066 + + NSTextView + {{0, 102}, {503, 264}} + + $class + + CF$UID + 116 + + NSLayoutManager + + CF$UID + 346 + + NSTCFlags + 1 + NSTextView + + CF$UID + 342 + + NSWidth + 503 + + + $class + + CF$UID + 115 + + NSDelegate + + CF$UID + 0 + + NSLMFlags + 6 + NSTextContainers + + CF$UID + 349 + + NSTextStorage + + CF$UID + 347 + + + + $class + + CF$UID + 113 + + NSAttributes + + CF$UID + 249 + + NSDelegate + + CF$UID + 0 + + NSString + + CF$UID + 348 + + + + $class + + CF$UID + 6 + + NS.string + definition + + + $class + + CF$UID + 33 + + NS.objects + + + CF$UID + 345 + + + + + $class + + CF$UID + 138 + + NSBackgroundColor + + CF$UID + 120 + + NSDefaultParagraphStyle + + CF$UID + 0 + + NSFlags + 12259 + NSInsertionColor + + CF$UID + 121 + + NSLinkAttributes + + CF$UID + 352 + + NSMarkedAttributes + + CF$UID + 0 + + NSSelectedAttributes + + CF$UID + 351 + + + + $class + + CF$UID + 129 + + NS.keys + + + CF$UID + 123 + + + CF$UID + 124 + + + NS.objects + + + CF$UID + 125 + + + CF$UID + 127 + + + + + $class + + CF$UID + 129 + + NS.keys + + + CF$UID + 131 + + + CF$UID + 132 + + + CF$UID + 124 + + + NS.objects + + + CF$UID + 353 + + + CF$UID + 134 + + + CF$UID + 137 + + + + 1 + {518, 1e+07} + {{1, 1}, {503, 264}} + {{0, 102}, {503, 264}} + + $class + + CF$UID + 149 + + NSAction + + CF$UID + 359 + + NSCurValue + 1 + NSFrame + + CF$UID + 358 + + NSNextResponder + + CF$UID + 338 + + NSSuperview + + CF$UID + 338 + + NSTarget + + CF$UID + 338 + + NSvFlags + 256 + + {{504, 1}, {15, 264}} + _doScroller: + + $class + + CF$UID + 149 + + NSAction + + CF$UID + 362 + + NSCurValue + 1 + NSFrame + + CF$UID + 361 + + NSNextResponder + + CF$UID + 338 + + NSPercent + 0.94565218687057495 + NSSuperview + + CF$UID + 338 + + NSTarget + + CF$UID + 338 + + NSsFlags + 1 + NSvFlags + 256 + + {{-100, -100}, {87, 18}} + _doScroller: + {{0, 309}, {520, 266}} + {{0, -31}, {520, 575}} + + $classes + + NSSplitView + NSView + NSResponder + NSObject + + $classname + NSSplitView + + + $class + + CF$UID + 175 + + NSCell + + CF$UID + 368 + + NSEnabled + + NSFrame + + CF$UID + 367 + + NSNextResponder + + CF$UID + 297 + + NSSuperview + + CF$UID + 297 + + NSvFlags + 9 + + {{336, 506}, {128, 17}} + + $class + + CF$UID + 174 + + NSBackgroundColor + + CF$UID + 370 + + NSCellFlags + 75628032 + NSCellFlags2 + 71303168 + NSContents + + CF$UID + 369 + + NSControlView + + CF$UID + 366 + + NSDrawsBackground + + NSSupport + + CF$UID + 200 + + NSTextColor + + CF$UID + 172 + + + .html Validation failed + + + $class + + CF$UID + 31 + + NSColorSpace + 1 + NSRGB + + MSAwLjcxOTk2NzI1IDAuNzQ3Mjk4NDgA + + + + $class + + CF$UID + 175 + + NSCell + + CF$UID + 373 + + NSEnabled + + NSFrame + + CF$UID + 372 + + NSNextResponder + + CF$UID + 297 + + NSSuperview + + CF$UID + 297 + + NSvFlags + 9 + + {{332, 217}, {128, 17}} + + $class + + CF$UID + 174 + + NSBackgroundColor + + CF$UID + 375 + + NSCellFlags + 75628032 + NSCellFlags2 + 71303168 + NSContents + + CF$UID + 374 + + NSControlView + + CF$UID + 371 + + NSDrawsBackground + + NSSupport + + CF$UID + 200 + + NSTextColor + + CF$UID + 172 + + + .wod Validation failed + + + $class + + CF$UID + 31 + + NSColorSpace + 1 + NSRGB + + MSAwLjcxOTk2NzI1IDAuNzQ3Mjk4NDgA + + + {480, 546} + WO + + $classes + + NSTabView + NSView + NSResponder + NSObject + + $classname + NSTabView + + + $class + + CF$UID + 175 + + NSCell + + CF$UID + 381 + + NSEnabled + + NSFrame + + CF$UID + 380 + + NSNextResponder + + CF$UID + 13 + + NSSuperview + + CF$UID + 13 + + NSvFlags + 34 + + {{3, 4}, {442, 11}} + + $class + + CF$UID + 174 + + NSBackgroundColor + + CF$UID + 91 + + NSCellFlags + 67239424 + NSCellFlags2 + 4194304 + NSContents + + CF$UID + 382 + + NSControlView + + CF$UID + 379 + + NSSupport + + CF$UID + 159 + + NSTextColor + + CF$UID + 172 + + + Status Bar + + + $class + + CF$UID + 387 + + NSDrawMatrix + + CF$UID + 384 + + NSFrame + + CF$UID + 386 + + NSMaxValue + 100 + NSNextResponder + + CF$UID + 13 + + NSSuperview + + CF$UID + 13 + + NSpiFlags + 12554 + NSvFlags + 1057 + + + $class + + CF$UID + 385 + + + + $classes + + NSPSMatrix + NSObject + + $classname + NSPSMatrix + + {{450, 2}, {16, 16}} + + $classes + + NSProgressIndicator + NSView + NSResponder + NSObject + + $classname + NSProgressIndicator + + + $class + + CF$UID + 398 + + NSBorderType + 3 + NSBoxType + 2 + NSFrame + + CF$UID + 392 + + NSNextResponder + + CF$UID + 13 + + NSOffsets + + CF$UID + 393 + + NSSubviews + + CF$UID + 389 + + NSSuperview + + CF$UID + 13 + + NSTitleCell + + CF$UID + 394 + + NSTitlePosition + 0 + NSTransparent + + NSvFlags + 34 + + + $class + + CF$UID + 33 + + NS.objects + + + CF$UID + 390 + + + + + $class + + CF$UID + 85 + + NSFrame + + CF$UID + 391 + + NSNextResponder + + CF$UID + 388 + + NSSuperview + + CF$UID + 388 + + + {{2, 2}, {125, 1}} + {{0, 16}, {480, 5}} + {0, 0} + + $class + + CF$UID + 174 + + NSBackgroundColor + + CF$UID + 396 + + NSCellFlags + 67239424 + NSCellFlags2 + 0 + NSContents + + CF$UID + 395 + + NSSupport + + CF$UID + 206 + + NSTextColor + + CF$UID + 172 + + + Box + + $class + + CF$UID + 31 + + NSCatalogName + + CF$UID + 28 + + NSColor + + CF$UID + 120 + + NSColorName + + CF$UID + 397 + + NSColorSpace + 6 + + textBackgroundColor + + $classes + + NSBox + NSView + NSResponder + NSObject + + $classname + NSBox + + {{1, 9}, {480, 565}} + {{0, 0}, {1152, 848}} + {213, 129} + {3.40282e+38, 3.40282e+38} + MainWindow + + $classes + + NSWindowTemplate + NSObject + + $classname + NSWindowTemplate + + + $class + + CF$UID + 33 + + NS.objects + + + CF$UID + 406 + + + CF$UID + 409 + + + CF$UID + 410 + + + CF$UID + 411 + + + CF$UID + 413 + + + CF$UID + 415 + + + CF$UID + 417 + + + CF$UID + 419 + + + CF$UID + 421 + + + CF$UID + 423 + + + CF$UID + 425 + + + CF$UID + 427 + + + CF$UID + 429 + + + CF$UID + 431 + + + CF$UID + 433 + + + CF$UID + 435 + + + CF$UID + 436 + + + CF$UID + 437 + + + CF$UID + 438 + + + CF$UID + 439 + + + CF$UID + 440 + + + CF$UID + 441 + + + CF$UID + 443 + + + CF$UID + 445 + + + CF$UID + 447 + + + CF$UID + 449 + + + CF$UID + 451 + + + + + $class + + CF$UID + 408 + + NSDestination + + CF$UID + 276 + + NSLabel + + CF$UID + 407 + + NSSource + + CF$UID + 241 + + + statusField + + $classes + + NSNibOutletConnector + NSNibConnector + NSObject + + $classname + NSNibOutletConnector + + + $class + + CF$UID + 408 + + NSDestination + + CF$UID + 366 + + NSLabel + + CF$UID + 407 + + NSSource + + CF$UID + 311 + + + + $class + + CF$UID + 408 + + NSDestination + + CF$UID + 371 + + NSLabel + + CF$UID + 407 + + NSSource + + CF$UID + 342 + + + + $class + + CF$UID + 408 + + NSDestination + + CF$UID + 2 + + NSLabel + + CF$UID + 412 + + NSSource + + CF$UID + 8 + + + delegate + + $class + + CF$UID + 408 + + NSDestination + + CF$UID + 15 + + NSLabel + + CF$UID + 414 + + NSSource + + CF$UID + 2 + + + tabView + + $class + + CF$UID + 408 + + NSDestination + + CF$UID + 379 + + NSLabel + + CF$UID + 416 + + NSSource + + CF$UID + 2 + + + statusBarTextField + + $class + + CF$UID + 408 + + NSDestination + + CF$UID + 383 + + NSLabel + + CF$UID + 418 + + NSSource + + CF$UID + 2 + + + progressIndicator + + $class + + CF$UID + 408 + + NSDestination + + CF$UID + 8 + + NSLabel + + CF$UID + 420 + + NSSource + + CF$UID + 2 + + + mainWindow + + $class + + CF$UID + 408 + + NSDestination + + CF$UID + 19 + + NSLabel + + CF$UID + 422 + + NSSource + + CF$UID + 2 + + + webView + + $class + + CF$UID + 408 + + NSDestination + + CF$UID + 102 + + NSLabel + + CF$UID + 424 + + NSSource + + CF$UID + 2 + + + htmlView + + $class + + CF$UID + 408 + + NSDestination + + CF$UID + 272 + + NSLabel + + CF$UID + 426 + + NSSource + + CF$UID + 2 + + + woxNameField + + $class + + CF$UID + 408 + + NSDestination + + CF$UID + 186 + + NSLabel + + CF$UID + 428 + + NSSource + + CF$UID + 2 + + + responseHeaderInfoTableView + + $class + + CF$UID + 408 + + NSDestination + + CF$UID + 342 + + NSLabel + + CF$UID + 430 + + NSSource + + CF$UID + 2 + + + woDefinitionView + + $class + + CF$UID + 408 + + NSDestination + + CF$UID + 311 + + NSLabel + + CF$UID + 432 + + NSSource + + CF$UID + 2 + + + woSourceView + + $class + + CF$UID + 408 + + NSDestination + + CF$UID + 299 + + NSLabel + + CF$UID + 434 + + NSSource + + CF$UID + 2 + + + woComponentNameField + + $class + + CF$UID + 408 + + NSDestination + + CF$UID + 2 + + NSLabel + + CF$UID + 412 + + NSSource + + CF$UID + 342 + + + + $class + + CF$UID + 408 + + NSDestination + + CF$UID + 2 + + NSLabel + + CF$UID + 412 + + NSSource + + CF$UID + 311 + + + + $class + + CF$UID + 408 + + NSDestination + + CF$UID + 2 + + NSLabel + + CF$UID + 412 + + NSSource + + CF$UID + 102 + + + + $class + + CF$UID + 408 + + NSDestination + + CF$UID + 2 + + NSLabel + + CF$UID + 412 + + NSSource + + CF$UID + 241 + + + + $class + + CF$UID + 408 + + NSDestination + + CF$UID + 2 + + NSLabel + + CF$UID + 412 + + NSSource + + CF$UID + 288 + + + + $class + + CF$UID + 408 + + NSDestination + + CF$UID + 2 + + NSLabel + + CF$UID + 412 + + NSSource + + CF$UID + 334 + + + + $class + + CF$UID + 408 + + NSDestination + + CF$UID + 2 + + NSLabel + + CF$UID + 442 + + NSSource + + CF$UID + 19 + + + downloadDelegate + + $class + + CF$UID + 408 + + NSDestination + + CF$UID + 2 + + NSLabel + + CF$UID + 444 + + NSSource + + CF$UID + 19 + + + frameLoadDelegate + + $class + + CF$UID + 408 + + NSDestination + + CF$UID + 2 + + NSLabel + + CF$UID + 446 + + NSSource + + CF$UID + 19 + + + policyDelegate + + $class + + CF$UID + 408 + + NSDestination + + CF$UID + 2 + + NSLabel + + CF$UID + 448 + + NSSource + + CF$UID + 19 + + + resourceLoadDelegate + + $class + + CF$UID + 408 + + NSDestination + + CF$UID + 2 + + NSLabel + + CF$UID + 450 + + NSSource + + CF$UID + 19 + + + UIDelegate + + $class + + CF$UID + 408 + + NSDestination + + CF$UID + 241 + + NSLabel + + CF$UID + 452 + + NSSource + + CF$UID + 2 + + + woxSourceView + + $class + + CF$UID + 454 + + NS.objects + + + CF$UID + 96 + + + CF$UID + 167 + + + CF$UID + 196 + + + CF$UID + 182 + + + CF$UID + 288 + + + CF$UID + 235 + + + CF$UID + 186 + + + CF$UID + 241 + + + CF$UID + 15 + + + CF$UID + 383 + + + CF$UID + 338 + + + CF$UID + 88 + + + CF$UID + 342 + + + CF$UID + 299 + + + CF$UID + 334 + + + CF$UID + 8 + + + CF$UID + 281 + + + CF$UID + 227 + + + CF$UID + 390 + + + CF$UID + 208 + + + CF$UID + 295 + + + CF$UID + 19 + + + CF$UID + 272 + + + CF$UID + 311 + + + CF$UID + 366 + + + CF$UID + 17 + + + CF$UID + 307 + + + CF$UID + 13 + + + CF$UID + 155 + + + CF$UID + 102 + + + CF$UID + 178 + + + CF$UID + 305 + + + CF$UID + 94 + + + CF$UID + 388 + + + CF$UID + 237 + + + CF$UID + 371 + + + CF$UID + 233 + + + CF$UID + 297 + + + CF$UID + 303 + + + CF$UID + 379 + + + CF$UID + 98 + + + CF$UID + 276 + + + CF$UID + 180 + + + + + $classes + + NSArray + NSObject + + $classname + NSArray + + + $class + + CF$UID + 454 + + NS.objects + + + CF$UID + 94 + + + CF$UID + 96 + + + CF$UID + 186 + + + CF$UID + 180 + + + CF$UID + 235 + + + CF$UID + 233 + + + CF$UID + 182 + + + CF$UID + 237 + + + CF$UID + 13 + + + CF$UID + 13 + + + CF$UID + 303 + + + CF$UID + 15 + + + CF$UID + 338 + + + CF$UID + 297 + + + CF$UID + 305 + + + CF$UID + 2 + + + CF$UID + 235 + + + CF$UID + 180 + + + CF$UID + 388 + + + CF$UID + 186 + + + CF$UID + 15 + + + CF$UID + 17 + + + CF$UID + 235 + + + CF$UID + 307 + + + CF$UID + 297 + + + CF$UID + 88 + + + CF$UID + 305 + + + CF$UID + 8 + + + CF$UID + 96 + + + CF$UID + 98 + + + CF$UID + 15 + + + CF$UID + 303 + + + CF$UID + 15 + + + CF$UID + 13 + + + CF$UID + 235 + + + CF$UID + 297 + + + CF$UID + 15 + + + CF$UID + 295 + + + CF$UID + 297 + + + CF$UID + 13 + + + CF$UID + 96 + + + CF$UID + 235 + + + CF$UID + 178 + + + + + $class + + CF$UID + 454 + + NS.objects + + + CF$UID + 96 + + + CF$UID + 167 + + + CF$UID + 196 + + + CF$UID + 182 + + + CF$UID + 288 + + + CF$UID + 186 + + + CF$UID + 241 + + + CF$UID + 15 + + + CF$UID + 383 + + + CF$UID + 338 + + + CF$UID + 88 + + + CF$UID + 342 + + + CF$UID + 299 + + + CF$UID + 334 + + + CF$UID + 8 + + + CF$UID + 281 + + + CF$UID + 227 + + + CF$UID + 390 + + + CF$UID + 208 + + + CF$UID + 19 + + + CF$UID + 272 + + + CF$UID + 311 + + + CF$UID + 366 + + + CF$UID + 17 + + + CF$UID + 307 + + + CF$UID + 155 + + + CF$UID + 102 + + + CF$UID + 94 + + + CF$UID + 388 + + + CF$UID + 237 + + + CF$UID + 371 + + + CF$UID + 2 + + + CF$UID + 98 + + + CF$UID + 379 + + + CF$UID + 276 + + + + + $class + + CF$UID + 454 + + NS.objects + + + CF$UID + 337 + + + CF$UID + 458 + + + CF$UID + 459 + + + CF$UID + 460 + + + CF$UID + 461 + + + CF$UID + 462 + + + CF$UID + 463 + + + CF$UID + 464 + + + CF$UID + 465 + + + CF$UID + 466 + + + CF$UID + 467 + + + CF$UID + 463 + + + CF$UID + 458 + + + CF$UID + 461 + + + CF$UID + 10 + + + CF$UID + 468 + + + CF$UID + 458 + + + CF$UID + 337 + + + CF$UID + 469 + + + CF$UID + 470 + + + CF$UID + 458 + + + CF$UID + 463 + + + CF$UID + 471 + + + CF$UID + 337 + + + CF$UID + 472 + + + CF$UID + 473 + + + CF$UID + 463 + + + CF$UID + 474 + + + CF$UID + 475 + + + CF$UID + 472 + + + CF$UID + 476 + + + CF$UID + 477 + + + CF$UID + 472 + + + CF$UID + 478 + + + CF$UID + 471 + + + + NSTextField111111 + NSTableColumn + NSScrollView1 + View + NSTableView + NSTextView + NSTabView + 11 + NSScrollView21 + NSTabViewItem + NSTextField1111111 + NSTableColumn1 + WebView + NSTextField1 + NSScrollView2 + NSButton + NSTabViewItem1 + NSBox1 + NSTextField11 + + $class + + CF$UID + 6 + + NS.string + File's Owner + + NSTextField111 + + $class + + CF$UID + 454 + + NS.objects + + + CF$UID + 342 + + + CF$UID + 241 + + + CF$UID + 311 + + + + + $class + + CF$UID + 454 + + NS.objects + + + CF$UID + 242 + + + CF$UID + 242 + + + CF$UID + 242 + + + + + $class + + CF$UID + 454 + + NS.objects + + + CF$UID + 19 + + + CF$UID + 276 + + + CF$UID + 429 + + + CF$UID + 299 + + + CF$UID + 235 + + + CF$UID + 297 + + + CF$UID + 155 + + + CF$UID + 295 + + + CF$UID + 409 + + + CF$UID + 196 + + + CF$UID + 436 + + + CF$UID + 227 + + + CF$UID + 451 + + + CF$UID + 379 + + + CF$UID + 431 + + + CF$UID + 390 + + + CF$UID + 88 + + + CF$UID + 437 + + + CF$UID + 419 + + + CF$UID + 241 + + + CF$UID + 178 + + + CF$UID + 102 + + + CF$UID + 167 + + + CF$UID + 433 + + + CF$UID + 311 + + + CF$UID + 208 + + + CF$UID + 98 + + + CF$UID + 438 + + + CF$UID + 421 + + + CF$UID + 334 + + + CF$UID + 281 + + + CF$UID + 413 + + + CF$UID + 13 + + + CF$UID + 342 + + + CF$UID + 307 + + + CF$UID + 233 + + + CF$UID + 439 + + + CF$UID + 182 + + + CF$UID + 288 + + + CF$UID + 186 + + + CF$UID + 305 + + + CF$UID + 303 + + + CF$UID + 443 + + + CF$UID + 237 + + + CF$UID + 423 + + + CF$UID + 272 + + + CF$UID + 445 + + + CF$UID + 8 + + + CF$UID + 2 + + + CF$UID + 415 + + + CF$UID + 440 + + + CF$UID + 388 + + + CF$UID + 338 + + + CF$UID + 417 + + + CF$UID + 447 + + + CF$UID + 383 + + + CF$UID + 449 + + + CF$UID + 425 + + + CF$UID + 96 + + + CF$UID + 15 + + + CF$UID + 441 + + + CF$UID + 406 + + + CF$UID + 94 + + + CF$UID + 411 + + + CF$UID + 410 + + + CF$UID + 427 + + + CF$UID + 371 + + + CF$UID + 17 + + + CF$UID + 366 + + + CF$UID + 435 + + + CF$UID + 180 + + + + + $class + + CF$UID + 454 + + NS.objects + + + CF$UID + 483 + + + CF$UID + 484 + + + CF$UID + 485 + + + CF$UID + 486 + + + CF$UID + 487 + + + CF$UID + 488 + + + CF$UID + 489 + + + CF$UID + 490 + + + CF$UID + 491 + + + CF$UID + 492 + + + CF$UID + 493 + + + CF$UID + 494 + + + CF$UID + 495 + + + CF$UID + 496 + + + CF$UID + 497 + + + CF$UID + 498 + + + CF$UID + 499 + + + CF$UID + 500 + + + CF$UID + 501 + + + CF$UID + 502 + + + CF$UID + 503 + + + CF$UID + 504 + + + CF$UID + 505 + + + CF$UID + 506 + + + CF$UID + 507 + + + CF$UID + 508 + + + CF$UID + 509 + + + CF$UID + 510 + + + CF$UID + 511 + + + CF$UID + 512 + + + CF$UID + 513 + + + CF$UID + 514 + + + CF$UID + 515 + + + CF$UID + 516 + + + CF$UID + 517 + + + CF$UID + 518 + + + CF$UID + 519 + + + CF$UID + 520 + + + CF$UID + 521 + + + CF$UID + 522 + + + CF$UID + 523 + + + CF$UID + 524 + + + CF$UID + 525 + + + CF$UID + 526 + + + CF$UID + 527 + + + CF$UID + 528 + + + CF$UID + 529 + + + CF$UID + 530 + + + CF$UID + 531 + + + CF$UID + 532 + + + CF$UID + 533 + + + CF$UID + 534 + + + CF$UID + 535 + + + CF$UID + 536 + + + CF$UID + 537 + + + CF$UID + 538 + + + CF$UID + 539 + + + CF$UID + 540 + + + CF$UID + 541 + + + CF$UID + 542 + + + CF$UID + 543 + + + CF$UID + 544 + + + CF$UID + 545 + + + CF$UID + 546 + + + CF$UID + 547 + + + CF$UID + 548 + + + CF$UID + 549 + + + CF$UID + 550 + + + CF$UID + 551 + + + CF$UID + 552 + + + CF$UID + 553 + + + + 305 + 396 + 438 + 361 + 353 + 357 + 341 + 356 + 409 + 343 + 442 + 379 + 452 + 291 + 439 + 315 + 299 + 443 + 431 + 358 + 339 + 334 + 380 + 440 + 363 + 344 + 333 + 444 + 432 + 411 + 426 + 428 + 2 + 364 + 362 + 352 + 445 + 342 + 434 + 345 + 412 + 413 + 448 + 359 + 433 + 360 + 449 + 21 + 1 + 429 + 446 + 316 + 365 + 430 + 450 + 313 + 451 + 435 + 302 + 300 + 447 + 397 + 301 + 427 + 423 + 437 + 422 + 303 + 406 + 441 + 340 + + $classes + + NSIBObjectData + NSObject + + $classname + NSIBObjectData + + + $top + + IB.objectdata + + CF$UID + 1 + + + $version + 100000 + + diff --git a/sopex/SOPEX/English.lproj/SOPEXMainMenu.nib/keyedobjects.nib b/sopex/SOPEX/English.lproj/SOPEXMainMenu.nib/keyedobjects.nib deleted file mode 100644 index 739fcd96..00000000 --- a/sopex/SOPEX/English.lproj/SOPEXMainMenu.nib/keyedobjects.nib +++ /dev/null @@ -1,14476 +0,0 @@ - - - - - $archiver - NSKeyedArchiver - $objects - - $null - - $class - - CF$UID - 983 - - NSClassesKeys - - CF$UID - 782 - - NSClassesValues - - CF$UID - 783 - - NSConnections - - CF$UID - 393 - - NSFontManager - - CF$UID - 0 - - NSFramework - - CF$UID - 6 - - NSNamesKeys - - CF$UID - 742 - - NSNamesValues - - CF$UID - 743 - - NSNextOid - 411 - NSObjectsKeys - - CF$UID - 739 - - NSObjectsValues - - CF$UID - 741 - - NSOidsKeys - - CF$UID - 784 - - NSOidsValues - - CF$UID - 785 - - NSRoot - - CF$UID - 2 - - NSVisibleWindows - - CF$UID - 7 - - - - $class - - CF$UID - 5 - - NSClassName - - CF$UID - 3 - - - - $class - - CF$UID - 4 - - NS.string - NSApplication - - - $classes - - NSMutableString - NSString - NSObject - - $classname - NSMutableString - - - $classes - - NSCustomObject - NSObject - - $classname - NSCustomObject - - - $class - - CF$UID - 4 - - NS.string - IBCocoaFramework - - - $class - - CF$UID - 167 - - NS.objects - - - CF$UID - 8 - - - - - $class - - CF$UID - 392 - - NSFrameAutosaveName - - CF$UID - 391 - - NSMaxSize - - CF$UID - 390 - - NSMinSize - - CF$UID - 389 - - NSScreenRect - - CF$UID - 388 - - NSViewClass - - CF$UID - 12 - - NSWTFlags - 1881669632 - NSWindowBacking - 2 - NSWindowClass - - CF$UID - 11 - - NSWindowRect - - CF$UID - 9 - - NSWindowStyleMask - 14 - NSWindowTitle - - CF$UID - 10 - - NSWindowView - - CF$UID - 13 - - - {{125, 149}, {480, 565}} - Window - SOPEXBrowserWindow - - $class - - CF$UID - 4 - - NS.string - View - - - $class - - CF$UID - 138 - - NSFrame - - CF$UID - 387 - - NSNextResponder - - CF$UID - 0 - - NSSubviews - - CF$UID - 14 - - - - $class - - CF$UID - 61 - - NS.objects - - - CF$UID - 15 - - - CF$UID - 367 - - - CF$UID - 371 - - - CF$UID - 376 - - - - - $class - - CF$UID - 366 - - NSFont - - CF$UID - 253 - - NSFrame - - CF$UID - 139 - - NSNextResponder - - CF$UID - 13 - - NSSelectedTabViewItem - - CF$UID - 363 - - NSSubviews - - CF$UID - 16 - - NSSuperview - - CF$UID - 13 - - NSTabViewItems - - CF$UID - 140 - - NSTvFlags - 268435462 - NSvFlags - 18 - - - $class - - CF$UID - 61 - - NS.objects - - - CF$UID - 17 - - - - - $class - - CF$UID - 138 - - NSFrameSize - - CF$UID - 137 - - NSNextResponder - - CF$UID - 15 - - NSSubviews - - CF$UID - 18 - - NSSuperview - - CF$UID - 15 - - - - $class - - CF$UID - 61 - - NS.objects - - - CF$UID - 19 - - - CF$UID - 37 - - - CF$UID - 126 - - - CF$UID - 132 - - - - - $class - - CF$UID - 36 - - NSCell - - CF$UID - 21 - - NSEnabled - - NSFrame - - CF$UID - 20 - - NSNextResponder - - CF$UID - 17 - - NSSuperview - - CF$UID - 17 - - NSvFlags - 12 - - {{17, 528}, {446, 13}} - - $class - - CF$UID - 35 - - NSBackgroundColor - - CF$UID - 27 - - NSCellFlags - 67239424 - NSCellFlags2 - 4194304 - NSContents - - CF$UID - 22 - - NSControlView - - CF$UID - 19 - - NSPlaceholderString - - CF$UID - 26 - - NSSupport - - CF$UID - 23 - - NSTextColor - - CF$UID - 32 - - - - - $class - - CF$UID - 25 - - NSName - - CF$UID - 24 - - NSSize - 10 - NSfFlags - 27 - - LucidaGrande - - $classes - - NSFont - NSObject - - $classname - NSFont - - WO Name - - $class - - CF$UID - 31 - - NSCatalogName - - CF$UID - 28 - - NSColor - - CF$UID - 30 - - NSColorName - - CF$UID - 29 - - NSColorSpace - 6 - - System - controlColor - - $class - - CF$UID - 31 - - NSColorSpace - 3 - NSWhite - - MC42NjY2NjY2OQA= - - - - $classes - - NSColor - NSObject - - $classname - NSColor - - - $class - - CF$UID - 31 - - NSCatalogName - - CF$UID - 28 - - NSColor - - CF$UID - 34 - - NSColorName - - CF$UID - 33 - - NSColorSpace - 6 - - controlTextColor - - $class - - CF$UID - 31 - - NSColorSpace - 3 - NSWhite - - MAA= - - - - $classes - - NSTextFieldCell - NSActionCell - NSCell - NSObject - - $classname - NSTextFieldCell - - - $classes - - NSTextField - %NSTextField - NSControl - NSView - NSResponder - NSObject - - $classname - NSTextField - - - $class - - CF$UID - 125 - - NSFrameSize - - CF$UID - 124 - - NSNextResponder - - CF$UID - 17 - - NSSubviews - - CF$UID - 38 - - NSSuperview - - CF$UID - 17 - - NSvFlags - 274 - - - $class - - CF$UID - 61 - - NS.objects - - - CF$UID - 39 - - - CF$UID - 97 - - - - - $class - - CF$UID - 96 - - NSContentView - - CF$UID - 41 - - NSFrameSize - - CF$UID - 95 - - NSHScroller - - CF$UID - 92 - - NSNextKeyView - - CF$UID - 41 - - NSNextResponder - - CF$UID - 37 - - NSSubviews - - CF$UID - 40 - - NSSuperview - - CF$UID - 37 - - NSVScroller - - CF$UID - 88 - - NSsFlags - 18 - NSvFlags - 256 - - - $class - - CF$UID - 61 - - NS.objects - - - CF$UID - 41 - - - CF$UID - 88 - - - CF$UID - 92 - - - - - $class - - CF$UID - 87 - - NSBGColor - - CF$UID - 65 - - NSCursor - - CF$UID - 85 - - NSDocView - - CF$UID - 43 - - NSFrame - - CF$UID - 84 - - NSNextKeyView - - CF$UID - 43 - - NSNextResponder - - CF$UID - 39 - - NSSubviews - - CF$UID - 42 - - NSSuperview - - CF$UID - 39 - - NScvFlags - 4 - NSvFlags - 2304 - - - $class - - CF$UID - 61 - - NS.objects - - - CF$UID - 43 - - - - - $class - - CF$UID - 83 - - NSClassName - - CF$UID - 44 - - NSDelegate - - CF$UID - 0 - - NSFrameSize - - CF$UID - 46 - - NSMaxSize - - CF$UID - 82 - - NSNextResponder - - CF$UID - 41 - - NSOriginalClassName - - CF$UID - 45 - - NSSharedData - - CF$UID - 64 - - NSSuperview - - CF$UID - 41 - - NSTVFlags - 6 - NSTextContainer - - CF$UID - 47 - - NSvFlags - 274 - - SOPEXTextView - NSTextView - {463, 248} - - $class - - CF$UID - 63 - - NSLayoutManager - - CF$UID - 48 - - NSTCFlags - 1 - NSTextView - - CF$UID - 43 - - NSWidth - 463 - - - $class - - CF$UID - 62 - - NSDelegate - - CF$UID - 0 - - NSLMFlags - 6 - NSTextContainers - - CF$UID - 60 - - NSTextStorage - - CF$UID - 49 - - - - $class - - CF$UID - 59 - - NSAttributes - - CF$UID - 51 - - NSDelegate - - CF$UID - 0 - - NSString - - CF$UID - 50 - - - - $class - - CF$UID - 4 - - NS.string - source - - - $class - - CF$UID - 58 - - NS.keys - - - CF$UID - 52 - - - CF$UID - 53 - - - NS.objects - - - CF$UID - 54 - - - CF$UID - 56 - - - - NSFont - NSParagraphStyle - - $class - - CF$UID - 25 - - NSName - - CF$UID - 55 - - NSSize - 10 - NSfFlags - 18 - - Monaco - - $class - - CF$UID - 57 - - NSTabStops - - CF$UID - 0 - - - - $classes - - NSMutableParagraphStyle - NSParagraphStyle - NSObject - - $classname - NSMutableParagraphStyle - - - $classes - - NSDictionary - NSObject - - $classname - NSDictionary - - - $classes - - NSTextStorage - NSMutableAttributedString - NSAttributedString - NSObject - - $classname - NSTextStorage - - - $class - - CF$UID - 61 - - NS.objects - - - CF$UID - 47 - - - - - $classes - - NSMutableArray - NSArray - NSObject - - $classname - NSMutableArray - - - $classes - - NSLayoutManager - NSObject - - $classname - NSLayoutManager - - - $classes - - NSTextContainer - NSObject - - $classname - NSTextContainer - - - $class - - CF$UID - 81 - - NSBackgroundColor - - CF$UID - 65 - - NSDefaultParagraphStyle - - CF$UID - 0 - - NSFlags - 12131 - NSInsertionColor - - CF$UID - 34 - - NSLinkAttributes - - CF$UID - 73 - - NSMarkedAttributes - - CF$UID - 0 - - NSSelectedAttributes - - CF$UID - 66 - - - - $class - - CF$UID - 31 - - NSColorSpace - 3 - NSWhite - - MQA= - - - - $class - - CF$UID - 58 - - NS.keys - - - CF$UID - 67 - - - CF$UID - 68 - - - NS.objects - - - CF$UID - 69 - - - CF$UID - 71 - - - - NSBackgroundColor - NSColor - - $class - - CF$UID - 31 - - NSCatalogName - - CF$UID - 28 - - NSColor - - CF$UID - 30 - - NSColorName - - CF$UID - 70 - - NSColorSpace - 6 - - selectedTextBackgroundColor - - $class - - CF$UID - 31 - - NSCatalogName - - CF$UID - 28 - - NSColor - - CF$UID - 34 - - NSColorName - - CF$UID - 72 - - NSColorSpace - 6 - - selectedTextColor - - $class - - CF$UID - 58 - - NS.keys - - - CF$UID - 74 - - - CF$UID - 75 - - - CF$UID - 68 - - - NS.objects - - - CF$UID - 76 - - - CF$UID - 77 - - - CF$UID - 80 - - - - NSUnderline - NSCursor - 1 - - $class - - CF$UID - 79 - - NSCursorType - 13 - NSHotSpot - - CF$UID - 78 - - - {8, -8} - - $classes - - NSCursor - NSObject - - $classname - NSCursor - - - $class - - CF$UID - 31 - - NSColorSpace - 1 - NSRGB - - MCAwIDEA - - - - $classes - - NSTextViewSharedData - NSObject - - $classname - NSTextViewSharedData - - {463, 1e+07} - - $classes - - NSClassSwapper - NSObject - - $classname - NSClassSwapper - - {{1, 1}, {463, 248}} - - $class - - CF$UID - 79 - - NSCursorType - 1 - NSHotSpot - - CF$UID - 86 - - - {4, -5} - - $classes - - NSClipView - NSView - NSResponder - NSObject - - $classname - NSClipView - - - $class - - CF$UID - 91 - - NSAction - - CF$UID - 90 - - NSCurValue - 1 - NSFrame - - CF$UID - 89 - - NSNextResponder - - CF$UID - 39 - - NSSuperview - - CF$UID - 39 - - NSTarget - - CF$UID - 39 - - NSvFlags - 256 - - {{464, 1}, {15, 248}} - _doScroller: - - $classes - - NSScroller - NSControl - NSView - NSResponder - NSObject - - $classname - NSScroller - - - $class - - CF$UID - 91 - - NSAction - - CF$UID - 94 - - NSCurValue - 1 - NSFrame - - CF$UID - 93 - - NSNextResponder - - CF$UID - 39 - - NSPercent - 0.94565218687057495 - NSSuperview - - CF$UID - 39 - - NSTarget - - CF$UID - 39 - - NSsFlags - 1 - NSvFlags - 256 - - {{-100, -100}, {87, 18}} - _doScroller: - {480, 250} - - $classes - - NSScrollView - NSView - NSResponder - NSObject - - $classname - NSScrollView - - - $class - - CF$UID - 96 - - NSContentView - - CF$UID - 99 - - NSFrame - - CF$UID - 123 - - NSHScroller - - CF$UID - 120 - - NSNextKeyView - - CF$UID - 99 - - NSNextResponder - - CF$UID - 37 - - NSSubviews - - CF$UID - 98 - - NSSuperview - - CF$UID - 37 - - NSVScroller - - CF$UID - 117 - - NSsFlags - 18 - NSvFlags - 256 - - - $class - - CF$UID - 61 - - NS.objects - - - CF$UID - 99 - - - CF$UID - 117 - - - CF$UID - 120 - - - - - $class - - CF$UID - 87 - - NSBGColor - - CF$UID - 65 - - NSBounds - - CF$UID - 116 - - NSCursor - - CF$UID - 85 - - NSDocView - - CF$UID - 101 - - NSFrame - - CF$UID - 115 - - NSNextKeyView - - CF$UID - 101 - - NSNextResponder - - CF$UID - 97 - - NSSubviews - - CF$UID - 100 - - NSSuperview - - CF$UID - 97 - - NScvFlags - 4 - NSvFlags - 2304 - - - $class - - CF$UID - 61 - - NS.objects - - - CF$UID - 101 - - - - - $class - - CF$UID - 83 - - NSClassName - - CF$UID - 44 - - NSDelegate - - CF$UID - 0 - - NSFrame - - CF$UID - 103 - - NSMaxSize - - CF$UID - 114 - - NSNextResponder - - CF$UID - 99 - - NSOriginalClassName - - CF$UID - 102 - - NSSharedData - - CF$UID - 110 - - NSSuperview - - CF$UID - 99 - - NSTVFlags - 6 - NSTextContainer - - CF$UID - 104 - - NSvFlags - 274 - - NSTextView - {{0, 102}, {463, 264}} - - $class - - CF$UID - 63 - - NSLayoutManager - - CF$UID - 105 - - NSTCFlags - 1 - NSTextView - - CF$UID - 101 - - NSWidth - 463 - - - $class - - CF$UID - 62 - - NSDelegate - - CF$UID - 0 - - NSLMFlags - 6 - NSTextContainers - - CF$UID - 109 - - NSTextStorage - - CF$UID - 106 - - - - $class - - CF$UID - 59 - - NSAttributes - - CF$UID - 108 - - NSDelegate - - CF$UID - 0 - - NSString - - CF$UID - 107 - - - - $class - - CF$UID - 4 - - NS.string - definition - - - $class - - CF$UID - 58 - - NS.keys - - - CF$UID - 68 - - - CF$UID - 53 - - - CF$UID - 52 - - - NS.objects - - - CF$UID - 34 - - - CF$UID - 56 - - - CF$UID - 54 - - - - - $class - - CF$UID - 61 - - NS.objects - - - CF$UID - 104 - - - - - $class - - CF$UID - 81 - - NSBackgroundColor - - CF$UID - 65 - - NSDefaultParagraphStyle - - CF$UID - 0 - - NSFlags - 12131 - NSInsertionColor - - CF$UID - 34 - - NSLinkAttributes - - CF$UID - 112 - - NSMarkedAttributes - - CF$UID - 0 - - NSSelectedAttributes - - CF$UID - 111 - - - - $class - - CF$UID - 58 - - NS.keys - - - CF$UID - 67 - - - CF$UID - 68 - - - NS.objects - - - CF$UID - 69 - - - CF$UID - 71 - - - - - $class - - CF$UID - 58 - - NS.keys - - - CF$UID - 74 - - - CF$UID - 75 - - - CF$UID - 68 - - - NS.objects - - - CF$UID - 113 - - - CF$UID - 77 - - - CF$UID - 80 - - - - 1 - {463, 1e+07} - {{1, 1}, {463, 264}} - {{0, 102}, {463, 264}} - - $class - - CF$UID - 91 - - NSAction - - CF$UID - 119 - - NSCurValue - 1 - NSFrame - - CF$UID - 118 - - NSNextResponder - - CF$UID - 97 - - NSSuperview - - CF$UID - 97 - - NSTarget - - CF$UID - 97 - - NSvFlags - 256 - - {{464, 1}, {15, 264}} - _doScroller: - - $class - - CF$UID - 91 - - NSAction - - CF$UID - 122 - - NSCurValue - 1 - NSFrame - - CF$UID - 121 - - NSNextResponder - - CF$UID - 97 - - NSPercent - 0.94565218687057495 - NSSuperview - - CF$UID - 97 - - NSTarget - - CF$UID - 97 - - NSsFlags - 1 - NSvFlags - 256 - - {{-100, -100}, {87, 18}} - _doScroller: - {{0, 259}, {480, 266}} - {480, 525} - - $classes - - NSSplitView - NSView - NSResponder - NSObject - - $classname - NSSplitView - - - $class - - CF$UID - 36 - - NSCell - - CF$UID - 128 - - NSEnabled - - NSFrame - - CF$UID - 127 - - NSNextResponder - - CF$UID - 17 - - NSSuperview - - CF$UID - 17 - - NSvFlags - 9 - - {{336, 507}, {128, 17}} - - $class - - CF$UID - 35 - - NSBackgroundColor - - CF$UID - 131 - - NSCellFlags - 75628032 - NSCellFlags2 - 71303168 - NSContents - - CF$UID - 129 - - NSControlView - - CF$UID - 126 - - NSDrawsBackground - - NSSupport - - CF$UID - 130 - - NSTextColor - - CF$UID - 32 - - - .html Validation failed - - - $class - - CF$UID - 25 - - NSName - - CF$UID - 24 - - NSSize - 11 - NSfFlags - 28 - - - $class - - CF$UID - 31 - - NSColorSpace - 1 - NSRGB - - MSAwLjcxOTk2NzI1IDAuNzQ3Mjk4NDgA - - - - $class - - CF$UID - 36 - - NSCell - - CF$UID - 134 - - NSEnabled - - NSFrame - - CF$UID - 133 - - NSNextResponder - - CF$UID - 17 - - NSSuperview - - CF$UID - 17 - - NSvFlags - 1 - - {{342, 248}, {122, 17}} - - $class - - CF$UID - 35 - - NSBackgroundColor - - CF$UID - 136 - - NSCellFlags - 75628032 - NSCellFlags2 - 71303168 - NSContents - - CF$UID - 135 - - NSControlView - - CF$UID - 132 - - NSDrawsBackground - - NSSupport - - CF$UID - 130 - - NSTextColor - - CF$UID - 32 - - - .wod Validation failed - - - $class - - CF$UID - 31 - - NSColorSpace - 1 - NSRGB - - MSAwLjcxOTk2NzI1IDAuNzQ3Mjk4NDgA - - - {480, 547} - - $classes - - NSView - NSResponder - NSObject - - $classname - NSView - - {{0, 18}, {480, 547}} - - $class - - CF$UID - 61 - - NS.objects - - - CF$UID - 141 - - - CF$UID - 203 - - - CF$UID - 264 - - - CF$UID - 318 - - - CF$UID - 363 - - - - - $class - - CF$UID - 202 - - NSColor - - CF$UID - 27 - - NSIdentifier - - CF$UID - 142 - - NSLabel - - CF$UID - 201 - - NSTabView - - CF$UID - 15 - - NSView - - CF$UID - 143 - - - application - - $class - - CF$UID - 138 - - NSFrameSize - - CF$UID - 200 - - NSNextResponder - - CF$UID - 0 - - NSSubviews - - CF$UID - 144 - - - - $class - - CF$UID - 61 - - NS.objects - - - CF$UID - 145 - - - - - $class - - CF$UID - 199 - - FrameName - - CF$UID - 0 - - GroupName - - CF$UID - 0 - - NSDragTypes - - CF$UID - 160 - - NSFrame - - CF$UID - 168 - - NSNextKeyView - - CF$UID - 147 - - NSNextResponder - - CF$UID - 143 - - NSSubviews - - CF$UID - 146 - - NSSuperview - - CF$UID - 143 - - NSvFlags - 274 - Preferences - - CF$UID - 169 - - UseBackForwardList - - - - $class - - CF$UID - 61 - - NS.objects - - - CF$UID - 147 - - - - - $class - - CF$UID - 159 - - NSFrameSize - - CF$UID - 158 - - NSNextKeyView - - CF$UID - 149 - - NSNextResponder - - CF$UID - 145 - - NSSubviews - - CF$UID - 148 - - NSSuperview - - CF$UID - 145 - - NSvFlags - 274 - - - $class - - CF$UID - 61 - - NS.objects - - - CF$UID - 149 - - - - - $class - - CF$UID - 157 - - NSContentView - - CF$UID - 151 - - NSFrameSize - - CF$UID - 156 - - NSNextKeyView - - CF$UID - 151 - - NSNextResponder - - CF$UID - 147 - - NSSubviews - - CF$UID - 150 - - NSSuperview - - CF$UID - 147 - - NSsFlags - 0 - NSvFlags - 274 - - - $class - - CF$UID - 61 - - NS.objects - - - CF$UID - 151 - - - - - $class - - CF$UID - 155 - - NSBGColor - - CF$UID - 153 - - NSFrameSize - - CF$UID - 152 - - NSNextResponder - - CF$UID - 149 - - NSSuperview - - CF$UID - 149 - - NScvFlags - 2 - NSvFlags - 256 - - {480, 547} - - $class - - CF$UID - 31 - - NSCatalogName - - CF$UID - 28 - - NSColor - - CF$UID - 30 - - NSColorName - - CF$UID - 154 - - NSColorSpace - 6 - - controlBackgroundColor - - $classes - - WebClipView - NSClipView - NSView - NSResponder - NSObject - - $classname - WebClipView - - {480, 547} - - $classes - - WebDynamicScrollBarsView - WebCoreScrollView - NSScrollView - NSView - NSResponder - NSObject - - $classname - WebDynamicScrollBarsView - - {480, 547} - - $classes - - WebFrameView - NSView - NSResponder - NSObject - - $classname - WebFrameView - - - $class - - CF$UID - 167 - - NS.objects - - - CF$UID - 161 - - - CF$UID - 162 - - - CF$UID - 163 - - - CF$UID - 164 - - - CF$UID - 165 - - - CF$UID - 166 - - - - NSStringPboardType - Apple URL pasteboard type - dyn.aqr104pxbsb2g23msr731k8puqy81n6xqr2oooooo - NSFilenamesPboardType - public.url - WebURLsWithTitlesPboardType - - $classes - - NSMutableSet - NSSet - NSObject - - $classname - NSMutableSet - - {{0, 1}, {480, 547}} - - $class - - CF$UID - 198 - - Identifier - - CF$UID - 170 - - Values - - CF$UID - 171 - - - WebUI - - $class - - CF$UID - 197 - - NS.keys - - - CF$UID - 172 - - - CF$UID - 173 - - - CF$UID - 174 - - - CF$UID - 175 - - - CF$UID - 176 - - - CF$UID - 177 - - - CF$UID - 178 - - - CF$UID - 179 - - - CF$UID - 180 - - - CF$UID - 181 - - - CF$UID - 182 - - - CF$UID - 183 - - - CF$UID - 184 - - - CF$UID - 185 - - - CF$UID - 186 - - - CF$UID - 187 - - - NS.objects - - - CF$UID - 188 - - - CF$UID - 189 - - - CF$UID - 189 - - - CF$UID - 190 - - - CF$UID - 191 - - - CF$UID - 189 - - - CF$UID - 192 - - - CF$UID - 189 - - - CF$UID - 193 - - - CF$UID - 189 - - - CF$UID - 194 - - - CF$UID - 192 - - - CF$UID - 195 - - - CF$UID - 196 - - - CF$UID - 189 - - - CF$UID - 189 - - - - WebUIWebKitFantasyFont - WebUIWebKitAllowAnimatedImageLoopingPreferenceKey - WebUIWebKitJavaEnabled - WebUIWebKitDefaultFontSize - WebUIWebKitMinimumFontSize - WebUIWebKitPluginsEnabled - WebUIWebKitStandardFont - WebUIWebKitJavaScriptEnabled - WebUIWebKitSansSerifFont - WebUIWebKitDisplayImagesKey - WebUIWebKitCursiveFont - WebUIWebKitSerifFont - WebUIWebKitDefaultFixedFontSize - WebUIWebKitFixedFont - WebUIWebKitAllowAnimatedImagesPreferenceKey - WebUIWebKitJavaScriptCanOpenWindowsAutomatically - Papyrus - - 16 - 1 - Times - Helvetica - Apple Chancery - 13 - Courier - - $classes - - NSMutableDictionary - NSDictionary - NSObject - - $classname - NSMutableDictionary - - - $classes - - WebPreferences - NSObject - - $classname - WebPreferences - - - $classes - - WebView - %WebView - NSView - NSResponder - NSObject - - $classname - WebView - - {480, 547} - Application - - $classes - - NSTabViewItem - NSObject - - $classname - NSTabViewItem - - - $class - - CF$UID - 202 - - NSColor - - CF$UID - 27 - - NSIdentifier - - CF$UID - 204 - - NSLabel - - CF$UID - 263 - - NSTabView - - CF$UID - 15 - - NSView - - CF$UID - 205 - - - html - - $class - - CF$UID - 138 - - NSFrameSize - - CF$UID - 262 - - NSNextResponder - - CF$UID - 0 - - NSSubviews - - CF$UID - 206 - - - - $class - - CF$UID - 61 - - NS.objects - - - CF$UID - 207 - - - CF$UID - 249 - - - CF$UID - 258 - - - - - $class - - CF$UID - 96 - - NSContentView - - CF$UID - 209 - - NSFrameSize - - CF$UID - 248 - - NSHScroller - - CF$UID - 245 - - NSNextKeyView - - CF$UID - 209 - - NSNextResponder - - CF$UID - 205 - - NSSubviews - - CF$UID - 208 - - NSSuperview - - CF$UID - 205 - - NSVScroller - - CF$UID - 242 - - NSsFlags - 18 - NSvFlags - 274 - - - $class - - CF$UID - 61 - - NS.objects - - - CF$UID - 209 - - - CF$UID - 242 - - - CF$UID - 245 - - - - - $class - - CF$UID - 87 - - NSBGColor - - CF$UID - 229 - - NSBounds - - CF$UID - 241 - - NSCursor - - CF$UID - 85 - - NSDocView - - CF$UID - 211 - - NSFrame - - CF$UID - 240 - - NSNextKeyView - - CF$UID - 211 - - NSNextResponder - - CF$UID - 207 - - NSSubviews - - CF$UID - 210 - - NSSuperview - - CF$UID - 207 - - NScvFlags - 4 - NSvFlags - 2304 - - - $class - - CF$UID - 61 - - NS.objects - - - CF$UID - 211 - - - - - $class - - CF$UID - 239 - - NSDelegate - - CF$UID - 0 - - NSDragTypes - - CF$UID - 212 - - NSFrame - - CF$UID - 222 - - NSMaxSize - - CF$UID - 238 - - NSNextResponder - - CF$UID - 209 - - NSSharedData - - CF$UID - 228 - - NSSuperview - - CF$UID - 209 - - NSTVFlags - 6 - NSTextContainer - - CF$UID - 223 - - NSvFlags - 2066 - - - $class - - CF$UID - 167 - - NS.objects - - - CF$UID - 213 - - - CF$UID - 214 - - - CF$UID - 161 - - - CF$UID - 215 - - - CF$UID - 216 - - - CF$UID - 217 - - - CF$UID - 164 - - - CF$UID - 218 - - - CF$UID - 219 - - - CF$UID - 220 - - - CF$UID - 221 - - - - Apple PDF pasteboard type - Apple PICT pasteboard type - NeXT Rich Text Format v1.0 pasteboard type - NeXT Encapsulated PostScript v1.2 pasteboard type - Apple HTML pasteboard type - NeXT TIFF v4.0 pasteboard type - NeXT RTFD pasteboard type - CorePasteboardFlavorType 0x6D6F6F76 - NSColor pasteboard type - {{0, 124}, {463, 523}} - - $class - - CF$UID - 63 - - NSLayoutManager - - CF$UID - 224 - - NSTCFlags - 1 - NSTextView - - CF$UID - 211 - - NSWidth - 463 - - - $class - - CF$UID - 62 - - NSDelegate - - CF$UID - 0 - - NSLMFlags - 6 - NSTextContainers - - CF$UID - 227 - - NSTextStorage - - CF$UID - 225 - - - - $class - - CF$UID - 59 - - NSDelegate - - CF$UID - 0 - - NSString - - CF$UID - 226 - - - - $class - - CF$UID - 4 - - NS.string - - - - $class - - CF$UID - 61 - - NS.objects - - - CF$UID - 223 - - - - - $class - - CF$UID - 81 - - NSBackgroundColor - - CF$UID - 229 - - NSDefaultParagraphStyle - - CF$UID - 0 - - NSFlags - 11105 - NSInsertionColor - - CF$UID - 34 - - NSLinkAttributes - - CF$UID - 234 - - NSMarkedAttributes - - CF$UID - 0 - - NSSelectedAttributes - - CF$UID - 231 - - - - $class - - CF$UID - 31 - - NSCatalogName - - CF$UID - 28 - - NSColor - - CF$UID - 65 - - NSColorName - - CF$UID - 230 - - NSColorSpace - 6 - - controlHighlightColor - - $class - - CF$UID - 58 - - NS.keys - - - CF$UID - 232 - - - CF$UID - 233 - - - NS.objects - - - CF$UID - 69 - - - CF$UID - 71 - - - - NSBackgroundColor - NSColor - - $class - - CF$UID - 58 - - NS.keys - - - CF$UID - 235 - - - CF$UID - 236 - - - CF$UID - 233 - - - NS.objects - - - CF$UID - 237 - - - CF$UID - 77 - - - CF$UID - 80 - - - - NSUnderline - NSCursor - 1 - {463, 1e+07} - - $classes - - NSTextView - %NSTextView - NSText - NSView - NSResponder - NSObject - - $classname - NSTextView - - {{1, 1}, {463, 523}} - {{0, 124}, {463, 523}} - - $class - - CF$UID - 91 - - NSAction - - CF$UID - 244 - - NSCurValue - 1 - NSFrame - - CF$UID - 243 - - NSNextResponder - - CF$UID - 207 - - NSSuperview - - CF$UID - 207 - - NSTarget - - CF$UID - 207 - - NSvFlags - 256 - - {{464, 1}, {15, 523}} - _doScroller: - - $class - - CF$UID - 91 - - NSAction - - CF$UID - 247 - - NSCurValue - 1 - NSFrame - - CF$UID - 246 - - NSNextResponder - - CF$UID - 207 - - NSPercent - 0.94565218687057495 - NSSuperview - - CF$UID - 207 - - NSTarget - - CF$UID - 207 - - NSsFlags - 1 - NSvFlags - 256 - - {{-100, -100}, {87, 18}} - _doScroller: - {480, 525} - - $class - - CF$UID - 257 - - NSCell - - CF$UID - 251 - - NSEnabled - - NSFrame - - CF$UID - 250 - - NSNextResponder - - CF$UID - 205 - - NSSuperview - - CF$UID - 205 - - NSvFlags - 9 - - {{397, 527}, {64, 16}} - - $class - - CF$UID - 256 - - NSAlternateContents - - CF$UID - 22 - - NSAlternateImage - - CF$UID - 254 - - NSButtonFlags - -2038284033 - NSButtonFlags2 - 1 - NSCellFlags - 604110336 - NSCellFlags2 - 134479872 - NSContents - - CF$UID - 252 - - NSControlView - - CF$UID - 249 - - NSKeyEquivalent - - CF$UID - 255 - - NSPeriodicDelay - 200 - NSPeriodicInterval - 25 - NSSupport - - CF$UID - 253 - - - Reformat - - $class - - CF$UID - 25 - - NSName - - CF$UID - 24 - - NSSize - 9 - NSfFlags - 30 - - - $class - - CF$UID - 25 - - NSName - - CF$UID - 24 - - NSSize - 9 - NSfFlags - 16 - - - $class - - CF$UID - 4 - - NS.string - - - - $classes - - NSButtonCell - %NSButtonCell - NSActionCell - NSCell - NSObject - - $classname - NSButtonCell - - - $classes - - NSButton - NSControl - NSView - NSResponder - NSObject - - $classname - NSButton - - - $class - - CF$UID - 36 - - NSCell - - CF$UID - 260 - - NSEnabled - - NSFrame - - CF$UID - 259 - - NSNextResponder - - CF$UID - 205 - - NSSuperview - - CF$UID - 205 - - NSvFlags - 12 - - {{17, 528}, {371, 13}} - - $class - - CF$UID - 35 - - NSBackgroundColor - - CF$UID - 27 - - NSCellFlags - 69336577 - NSCellFlags2 - 4194304 - NSContents - - CF$UID - 261 - - NSControlView - - CF$UID - 258 - - NSSupport - - CF$UID - 23 - - NSTextColor - - CF$UID - 32 - - - HTML Source - - {480, 547} - HTML - - $class - - CF$UID - 202 - - NSColor - - CF$UID - 27 - - NSIdentifier - - CF$UID - 265 - - NSLabel - - CF$UID - 317 - - NSTabView - - CF$UID - 15 - - NSView - - CF$UID - 266 - - - http - - $class - - CF$UID - 138 - - NSFrameSize - - CF$UID - 316 - - NSNextResponder - - CF$UID - 0 - - NSSubviews - - CF$UID - 267 - - - - $class - - CF$UID - 61 - - NS.objects - - - CF$UID - 268 - - - CF$UID - 312 - - - - - $class - - CF$UID - 96 - - NSContentView - - CF$UID - 270 - - NSFrameSize - - CF$UID - 311 - - NSHScroller - - CF$UID - 306 - - NSHeaderClipView - - CF$UID - 275 - - NSNextKeyView - - CF$UID - 270 - - NSNextResponder - - CF$UID - 266 - - NSScrollAmts - - QSAAAEEgAABBmAAAQZgAAA== - - NSSubviews - - CF$UID - 269 - - NSSuperview - - CF$UID - 266 - - NSVScroller - - CF$UID - 303 - - NSsFlags - 562 - NSvFlags - 274 - - - $class - - CF$UID - 61 - - NS.objects - - - CF$UID - 270 - - - CF$UID - 303 - - - CF$UID - 306 - - - CF$UID - 275 - - - CF$UID - 278 - - - - - $class - - CF$UID - 87 - - NSBGColor - - CF$UID - 153 - - NSDocView - - CF$UID - 272 - - NSFrame - - CF$UID - 302 - - NSNextKeyView - - CF$UID - 272 - - NSNextResponder - - CF$UID - 268 - - NSSubviews - - CF$UID - 271 - - NSSuperview - - CF$UID - 268 - - NScvFlags - 4 - NSvFlags - 2304 - - - $class - - CF$UID - 61 - - NS.objects - - - CF$UID - 272 - - - - - $class - - CF$UID - 301 - - NSBackgroundColor - - CF$UID - 65 - - NSCornerView - - CF$UID - 278 - - NSEnabled - - NSFrameSize - - CF$UID - 273 - - NSGridColor - - CF$UID - 298 - - NSHeaderView - - CF$UID - 274 - - NSIntercellSpacingHeight - 2 - NSIntercellSpacingWidth - 3 - NSNextResponder - - CF$UID - 270 - - NSRowHeight - 17 - NSSuperview - - CF$UID - 270 - - NSTableColumns - - CF$UID - 281 - - NSTvFlags - -759169024 - - {478, 0} - - $class - - CF$UID - 277 - - NSFrameSize - - CF$UID - 276 - - NSNextResponder - - CF$UID - 275 - - NSSuperview - - CF$UID - 275 - - NSTableView - - CF$UID - 272 - - NSvFlags - 256 - - - $class - - CF$UID - 87 - - NSBGColor - - CF$UID - 153 - - NSDocView - - CF$UID - 274 - - NSFrame - - CF$UID - 310 - - NSNextKeyView - - CF$UID - 274 - - NSNextResponder - - CF$UID - 268 - - NSSubviews - - CF$UID - 309 - - NSSuperview - - CF$UID - 268 - - NScvFlags - 4 - NSvFlags - 2304 - - {478, 17} - - $classes - - NSTableHeaderView - NSView - NSResponder - NSObject - - $classname - NSTableHeaderView - - - $class - - CF$UID - 280 - - NSFrame - - CF$UID - 279 - - NSNextResponder - - CF$UID - 268 - - NSSuperview - - CF$UID - 268 - - NSvFlags - -2147483392 - - {{-32, -34}, {16, 17}} - - $classes - - _NSCornerView - NSView - NSResponder - NSObject - - $classname - _NSCornerView - - - $class - - CF$UID - 61 - - NS.objects - - - CF$UID - 282 - - - CF$UID - 293 - - - - - $class - - CF$UID - 292 - - NSDataCell - - CF$UID - 290 - - NSHeaderCell - - CF$UID - 284 - - NSIdentifier - - CF$UID - 283 - - NSIsResizeable - - NSMaxWidth - 1000 - NSMinWidth - 40 - NSTableView - - CF$UID - 272 - - NSWidth - 164 - - header - - $class - - CF$UID - 289 - - NSBackgroundColor - - CF$UID - 286 - - NSCellFlags - 75628032 - NSCellFlags2 - 0 - NSContents - - CF$UID - 285 - - NSSupport - - CF$UID - 130 - - NSTextColor - - CF$UID - 287 - - - Header - - $class - - CF$UID - 31 - - NSColorSpace - 3 - NSWhite - - MC4zMzMzMzI5OQA= - - - - $class - - CF$UID - 31 - - NSCatalogName - - CF$UID - 28 - - NSColor - - CF$UID - 34 - - NSColorName - - CF$UID - 288 - - NSColorSpace - 6 - - headerTextColor - - $classes - - NSTableHeaderCell - NSTextFieldCell - NSActionCell - NSCell - NSObject - - $classname - NSTableHeaderCell - - - $class - - CF$UID - 35 - - NSBackgroundColor - - CF$UID - 65 - - NSCellFlags - 338820672 - NSCellFlags2 - 0 - NSControlView - - CF$UID - 272 - - NSSupport - - CF$UID - 291 - - NSTextColor - - CF$UID - 32 - - - - $class - - CF$UID - 25 - - NSName - - CF$UID - 24 - - NSSize - 13 - NSfFlags - 20 - - - $classes - - NSTableColumn - NSObject - - $classname - NSTableColumn - - - $class - - CF$UID - 292 - - NSDataCell - - CF$UID - 297 - - NSHeaderCell - - CF$UID - 295 - - NSIdentifier - - CF$UID - 294 - - NSIsEditable - - NSIsResizeable - - NSMaxWidth - 1000 - NSMinWidth - 8 - NSTableView - - CF$UID - 272 - - NSWidth - 308.4010009765625 - - value - - $class - - CF$UID - 289 - - NSBackgroundColor - - CF$UID - 286 - - NSCellFlags - 75628032 - NSCellFlags2 - 0 - NSContents - - CF$UID - 296 - - NSSupport - - CF$UID - 130 - - NSTextColor - - CF$UID - 287 - - - Value - - $class - - CF$UID - 35 - - NSBackgroundColor - - CF$UID - 65 - - NSCellFlags - 338820672 - NSCellFlags2 - 0 - NSControlView - - CF$UID - 272 - - NSSupport - - CF$UID - 291 - - NSTextColor - - CF$UID - 32 - - - - $class - - CF$UID - 31 - - NSCatalogName - - CF$UID - 28 - - NSColor - - CF$UID - 300 - - NSColorName - - CF$UID - 299 - - NSColorSpace - 6 - - gridColor - - $class - - CF$UID - 31 - - NSColorSpace - 3 - NSWhite - - MC41AA== - - - - $classes - - NSTableView - %NSTableView - NSControl - NSView - NSResponder - NSObject - - $classname - NSTableView - - {{1, 17}, {478, 507}} - - $class - - CF$UID - 91 - - NSAction - - CF$UID - 305 - - NSFrame - - CF$UID - 304 - - NSNextResponder - - CF$UID - 268 - - NSPercent - 0.41052630543708801 - NSSuperview - - CF$UID - 268 - - NSTarget - - CF$UID - 268 - - NSvFlags - -2147483392 - - {{-30, 17}, {15, 472}} - _doScroller: - - $class - - CF$UID - 91 - - NSAction - - CF$UID - 308 - - NSFrame - - CF$UID - 307 - - NSNextResponder - - CF$UID - 268 - - NSPercent - 0.99047619104385376 - NSSuperview - - CF$UID - 268 - - NSTarget - - CF$UID - 268 - - NSsFlags - 1 - NSvFlags - -2147483392 - - {{1, -30}, {423, 15}} - _doScroller: - - $class - - CF$UID - 61 - - NS.objects - - - CF$UID - 274 - - - - {{1, 0}, {478, 17}} - {480, 525} - - $class - - CF$UID - 36 - - NSCell - - CF$UID - 314 - - NSEnabled - - NSFrame - - CF$UID - 313 - - NSNextResponder - - CF$UID - 266 - - NSSuperview - - CF$UID - 266 - - NSvFlags - 12 - - {{17, 528}, {446, 13}} - - $class - - CF$UID - 35 - - NSBackgroundColor - - CF$UID - 27 - - NSCellFlags - 69336577 - NSCellFlags2 - 4194304 - NSContents - - CF$UID - 315 - - NSControlView - - CF$UID - 312 - - NSSupport - - CF$UID - 23 - - NSTextColor - - CF$UID - 32 - - - HTTP Headers - - {480, 547} - HTTP - - $class - - CF$UID - 202 - - NSColor - - CF$UID - 27 - - NSIdentifier - - CF$UID - 319 - - NSLabel - - CF$UID - 362 - - NSTabView - - CF$UID - 15 - - NSView - - CF$UID - 320 - - - wox - - $class - - CF$UID - 138 - - NSFrameSize - - CF$UID - 361 - - NSNextResponder - - CF$UID - 0 - - NSSubviews - - CF$UID - 321 - - - - $class - - CF$UID - 61 - - NS.objects - - - CF$UID - 322 - - - CF$UID - 347 - - - CF$UID - 351 - - - CF$UID - 356 - - - - - $class - - CF$UID - 96 - - NSContentView - - CF$UID - 324 - - NSFrameSize - - CF$UID - 346 - - NSHScroller - - CF$UID - 343 - - NSNextKeyView - - CF$UID - 324 - - NSNextResponder - - CF$UID - 320 - - NSSubviews - - CF$UID - 323 - - NSSuperview - - CF$UID - 320 - - NSVScroller - - CF$UID - 340 - - NSsFlags - 18 - NSvFlags - 274 - - - $class - - CF$UID - 61 - - NS.objects - - - CF$UID - 324 - - - CF$UID - 340 - - - CF$UID - 343 - - - - - $class - - CF$UID - 87 - - NSBGColor - - CF$UID - 65 - - NSCursor - - CF$UID - 85 - - NSDocView - - CF$UID - 326 - - NSFrame - - CF$UID - 339 - - NSNextKeyView - - CF$UID - 326 - - NSNextResponder - - CF$UID - 322 - - NSSubviews - - CF$UID - 325 - - NSSuperview - - CF$UID - 322 - - NScvFlags - 4 - NSvFlags - 2304 - - - $class - - CF$UID - 61 - - NS.objects - - - CF$UID - 326 - - - - - $class - - CF$UID - 83 - - NSClassName - - CF$UID - 44 - - NSDelegate - - CF$UID - 0 - - NSFrameSize - - CF$UID - 328 - - NSMaxSize - - CF$UID - 338 - - NSNextResponder - - CF$UID - 324 - - NSOriginalClassName - - CF$UID - 327 - - NSSharedData - - CF$UID - 334 - - NSSuperview - - CF$UID - 324 - - NSTVFlags - 6 - NSTextContainer - - CF$UID - 329 - - NSvFlags - 2066 - - NSTextView - {463, 523} - - $class - - CF$UID - 63 - - NSLayoutManager - - CF$UID - 330 - - NSTCFlags - 1 - NSTextView - - CF$UID - 326 - - NSWidth - 463 - - - $class - - CF$UID - 62 - - NSDelegate - - CF$UID - 0 - - NSLMFlags - 6 - NSTextContainers - - CF$UID - 333 - - NSTextStorage - - CF$UID - 331 - - - - $class - - CF$UID - 59 - - NSAttributes - - CF$UID - 108 - - NSDelegate - - CF$UID - 0 - - NSString - - CF$UID - 332 - - - - $class - - CF$UID - 4 - - NS.string - source - - - $class - - CF$UID - 61 - - NS.objects - - - CF$UID - 329 - - - - - $class - - CF$UID - 81 - - NSBackgroundColor - - CF$UID - 65 - - NSDefaultParagraphStyle - - CF$UID - 0 - - NSFlags - 12131 - NSInsertionColor - - CF$UID - 34 - - NSLinkAttributes - - CF$UID - 336 - - NSMarkedAttributes - - CF$UID - 0 - - NSSelectedAttributes - - CF$UID - 335 - - - - $class - - CF$UID - 58 - - NS.keys - - - CF$UID - 232 - - - CF$UID - 233 - - - NS.objects - - - CF$UID - 69 - - - CF$UID - 71 - - - - - $class - - CF$UID - 58 - - NS.keys - - - CF$UID - 235 - - - CF$UID - 236 - - - CF$UID - 233 - - - NS.objects - - - CF$UID - 337 - - - CF$UID - 77 - - - CF$UID - 80 - - - - 1 - {463, 1e+07} - {{1, 1}, {463, 523}} - - $class - - CF$UID - 91 - - NSAction - - CF$UID - 342 - - NSCurValue - 1 - NSFrame - - CF$UID - 341 - - NSNextResponder - - CF$UID - 322 - - NSSuperview - - CF$UID - 322 - - NSTarget - - CF$UID - 322 - - NSvFlags - 256 - - {{464, 1}, {15, 523}} - _doScroller: - - $class - - CF$UID - 91 - - NSAction - - CF$UID - 345 - - NSCurValue - 1 - NSFrame - - CF$UID - 344 - - NSNextResponder - - CF$UID - 322 - - NSPercent - 0.94565218687057495 - NSSuperview - - CF$UID - 322 - - NSTarget - - CF$UID - 322 - - NSsFlags - 1 - NSvFlags - 256 - - {{-100, -100}, {87, 18}} - _doScroller: - {480, 525} - - $class - - CF$UID - 36 - - NSCell - - CF$UID - 349 - - NSEnabled - - NSFrame - - CF$UID - 348 - - NSNextResponder - - CF$UID - 320 - - NSSuperview - - CF$UID - 320 - - NSvFlags - 12 - - {{17, 528}, {359, 13}} - - $class - - CF$UID - 35 - - NSBackgroundColor - - CF$UID - 27 - - NSCellFlags - 69336577 - NSCellFlags2 - 4194304 - NSContents - - CF$UID - 350 - - NSControlView - - CF$UID - 347 - - NSSupport - - CF$UID - 23 - - NSTextColor - - CF$UID - 32 - - - WOX Name - - $class - - CF$UID - 257 - - NSCell - - CF$UID - 353 - - NSEnabled - - NSFrame - - CF$UID - 352 - - NSNextResponder - - CF$UID - 320 - - NSSuperview - - CF$UID - 320 - - NSvFlags - 9 - - {{380, 527}, {81, 16}} - - $class - - CF$UID - 256 - - NSAlternateContents - - CF$UID - 22 - - NSAlternateImage - - CF$UID - 254 - - NSButtonFlags - -2038284033 - NSButtonFlags2 - 1 - NSCellFlags - 67239424 - NSCellFlags2 - 134479872 - NSContents - - CF$UID - 354 - - NSControlView - - CF$UID - 351 - - NSKeyEquivalent - - CF$UID - 355 - - NSPeriodicDelay - 200 - NSPeriodicInterval - 25 - NSSupport - - CF$UID - 253 - - - Edit in Xcode - - $class - - CF$UID - 4 - - NS.string - - - - $class - - CF$UID - 36 - - NSCell - - CF$UID - 358 - - NSEnabled - - NSFrame - - CF$UID - 357 - - NSNextResponder - - CF$UID - 320 - - NSSuperview - - CF$UID - 320 - - NSvFlags - 9 - - {{369, 507}, {95, 17}} - - $class - - CF$UID - 35 - - NSBackgroundColor - - CF$UID - 360 - - NSCellFlags - 75628032 - NSCellFlags2 - 71303168 - NSContents - - CF$UID - 359 - - NSControlView - - CF$UID - 356 - - NSDrawsBackground - - NSSupport - - CF$UID - 130 - - NSTextColor - - CF$UID - 32 - - - Validation failed - - - $class - - CF$UID - 31 - - NSColorSpace - 1 - NSRGB - - MSAwLjcxOTk2NzI1IDAuNzQ3Mjk4NDgA - - - {480, 547} - WOX - - $class - - CF$UID - 202 - - NSColor - - CF$UID - 27 - - NSIdentifier - - CF$UID - 364 - - NSLabel - - CF$UID - 365 - - NSTabView - - CF$UID - 15 - - NSView - - CF$UID - 17 - - - wo - WO - - $classes - - NSTabView - NSView - NSResponder - NSObject - - $classname - NSTabView - - - $class - - CF$UID - 36 - - NSCell - - CF$UID - 369 - - NSEnabled - - NSFrame - - CF$UID - 368 - - NSNextResponder - - CF$UID - 13 - - NSSuperview - - CF$UID - 13 - - NSvFlags - 34 - - {{3, 4}, {442, 11}} - - $class - - CF$UID - 35 - - NSBackgroundColor - - CF$UID - 27 - - NSCellFlags - 67239424 - NSCellFlags2 - 4194304 - NSContents - - CF$UID - 370 - - NSControlView - - CF$UID - 367 - - NSSupport - - CF$UID - 253 - - NSTextColor - - CF$UID - 32 - - - Status Bar - - - $class - - CF$UID - 375 - - NSDrawMatrix - - CF$UID - 372 - - NSFrame - - CF$UID - 374 - - NSMaxValue - 100 - NSNextResponder - - CF$UID - 13 - - NSSuperview - - CF$UID - 13 - - NSpiFlags - 12554 - NSvFlags - 1057 - - - $class - - CF$UID - 373 - - - - $classes - - NSPSMatrix - NSObject - - $classname - NSPSMatrix - - {{450, 2}, {16, 16}} - - $classes - - NSProgressIndicator - NSView - NSResponder - NSObject - - $classname - NSProgressIndicator - - - $class - - CF$UID - 386 - - NSBorderType - 3 - NSBoxType - 2 - NSFrame - - CF$UID - 380 - - NSNextResponder - - CF$UID - 13 - - NSOffsets - - CF$UID - 381 - - NSSubviews - - CF$UID - 377 - - NSSuperview - - CF$UID - 13 - - NSTitleCell - - CF$UID - 382 - - NSTitlePosition - 0 - NSTransparent - - NSvFlags - 34 - - - $class - - CF$UID - 61 - - NS.objects - - - CF$UID - 378 - - - - - $class - - CF$UID - 138 - - NSFrame - - CF$UID - 379 - - NSNextResponder - - CF$UID - 376 - - NSSuperview - - CF$UID - 376 - - - {{2, 2}, {125, 1}} - {{0, 16}, {480, 5}} - {0, 0} - - $class - - CF$UID - 35 - - NSBackgroundColor - - CF$UID - 384 - - NSCellFlags - 67239424 - NSCellFlags2 - 0 - NSContents - - CF$UID - 383 - - NSSupport - - CF$UID - 291 - - NSTextColor - - CF$UID - 32 - - - Box - - $class - - CF$UID - 31 - - NSCatalogName - - CF$UID - 28 - - NSColor - - CF$UID - 65 - - NSColorName - - CF$UID - 385 - - NSColorSpace - 6 - - textBackgroundColor - - $classes - - NSBox - NSView - NSResponder - NSObject - - $classname - NSBox - - {{1, 9}, {480, 565}} - {{0, 0}, {1024, 746}} - {213, 129} - {3.40282e+38, 3.40282e+38} - MainWindow - - $classes - - NSWindowTemplate - NSObject - - $classname - NSWindowTemplate - - - $class - - CF$UID - 61 - - NS.objects - - - CF$UID - 394 - - - CF$UID - 408 - - - CF$UID - 412 - - - CF$UID - 418 - - - CF$UID - 423 - - - CF$UID - 429 - - - CF$UID - 433 - - - CF$UID - 438 - - - CF$UID - 442 - - - CF$UID - 446 - - - CF$UID - 451 - - - CF$UID - 456 - - - CF$UID - 462 - - - CF$UID - 467 - - - CF$UID - 472 - - - CF$UID - 477 - - - CF$UID - 482 - - - CF$UID - 487 - - - CF$UID - 492 - - - CF$UID - 497 - - - CF$UID - 502 - - - CF$UID - 506 - - - CF$UID - 510 - - - CF$UID - 514 - - - CF$UID - 520 - - - CF$UID - 524 - - - CF$UID - 528 - - - CF$UID - 532 - - - CF$UID - 537 - - - CF$UID - 542 - - - CF$UID - 544 - - - CF$UID - 545 - - - CF$UID - 551 - - - CF$UID - 556 - - - CF$UID - 560 - - - CF$UID - 565 - - - CF$UID - 567 - - - CF$UID - 569 - - - CF$UID - 571 - - - CF$UID - 573 - - - CF$UID - 575 - - - CF$UID - 577 - - - CF$UID - 579 - - - CF$UID - 581 - - - CF$UID - 583 - - - CF$UID - 585 - - - CF$UID - 587 - - - CF$UID - 592 - - - CF$UID - 596 - - - CF$UID - 598 - - - CF$UID - 600 - - - CF$UID - 602 - - - CF$UID - 607 - - - CF$UID - 609 - - - CF$UID - 610 - - - CF$UID - 612 - - - CF$UID - 616 - - - CF$UID - 621 - - - CF$UID - 623 - - - CF$UID - 625 - - - CF$UID - 627 - - - CF$UID - 629 - - - CF$UID - 631 - - - CF$UID - 633 - - - CF$UID - 635 - - - CF$UID - 637 - - - CF$UID - 641 - - - CF$UID - 646 - - - CF$UID - 650 - - - CF$UID - 654 - - - CF$UID - 655 - - - CF$UID - 656 - - - CF$UID - 657 - - - CF$UID - 659 - - - CF$UID - 660 - - - CF$UID - 662 - - - CF$UID - 673 - - - CF$UID - 734 - - - CF$UID - 736 - - - CF$UID - 738 - - - - - $class - - CF$UID - 407 - - NSLabel - - CF$UID - 406 - - NSSource - - CF$UID - 395 - - - - $class - - CF$UID - 405 - - NSKeyEquiv - - CF$UID - 398 - - NSKeyEquivModMask - 1048576 - NSMenu - - CF$UID - 396 - - NSMixedImage - - CF$UID - 403 - - NSMnemonicLoc - 2147483647 - NSOnImage - - CF$UID - 399 - - NSTitle - - CF$UID - 397 - - - - $class - - CF$UID - 671 - - NSMenuItems - - CF$UID - 729 - - NSName - - CF$UID - 731 - - NSTitle - - CF$UID - 728 - - - Minimize - m - - $class - - CF$UID - 402 - - NSClassName - - CF$UID - 400 - - NSResourceName - - CF$UID - 401 - - - NSImage - NSMenuCheckmark - - $classes - - NSCustomResource - %NSCustomResource - NSObject - - $classname - NSCustomResource - - - $class - - CF$UID - 402 - - NSClassName - - CF$UID - 400 - - NSResourceName - - CF$UID - 404 - - - NSMenuMixedState - - $classes - - NSMenuItem - NSObject - - $classname - NSMenuItem - - - $class - - CF$UID - 4 - - NS.string - performMiniaturize: - - - $classes - - NSNibControlConnector - NSNibConnector - NSObject - - $classname - NSNibControlConnector - - - $class - - CF$UID - 407 - - NSLabel - - CF$UID - 411 - - NSSource - - CF$UID - 409 - - - - $class - - CF$UID - 405 - - NSKeyEquiv - - CF$UID - 22 - - NSKeyEquivModMask - 1048576 - NSMenu - - CF$UID - 396 - - NSMixedImage - - CF$UID - 403 - - NSMnemonicLoc - 2147483647 - NSOnImage - - CF$UID - 399 - - NSTitle - - CF$UID - 410 - - - Bring All to Front - - $class - - CF$UID - 4 - - NS.string - arrangeInFront: - - - $class - - CF$UID - 407 - - NSLabel - - CF$UID - 417 - - NSSource - - CF$UID - 413 - - - - $class - - CF$UID - 405 - - NSKeyEquiv - - CF$UID - 416 - - NSKeyEquivModMask - 1048576 - NSMenu - - CF$UID - 414 - - NSMixedImage - - CF$UID - 403 - - NSMnemonicLoc - 2147483647 - NSOnImage - - CF$UID - 399 - - NSTitle - - CF$UID - 415 - - - - $class - - CF$UID - 671 - - NSMenuItems - - CF$UID - 699 - - NSTitle - - CF$UID - 698 - - - Print… - p - - $class - - CF$UID - 4 - - NS.string - print: - - - $class - - CF$UID - 407 - - NSLabel - - CF$UID - 422 - - NSSource - - CF$UID - 419 - - - - $class - - CF$UID - 405 - - NSKeyEquiv - - CF$UID - 421 - - NSKeyEquivModMask - 1048576 - NSMenu - - CF$UID - 414 - - NSMixedImage - - CF$UID - 403 - - NSMnemonicLoc - 2147483647 - NSOnImage - - CF$UID - 399 - - NSTitle - - CF$UID - 420 - - - Page Setup… - P - - $class - - CF$UID - 4 - - NS.string - runPageLayout: - - - $class - - CF$UID - 407 - - NSDestination - - CF$UID - 2 - - NSLabel - - CF$UID - 428 - - NSSource - - CF$UID - 424 - - - - $class - - CF$UID - 405 - - NSKeyEquiv - - CF$UID - 427 - - NSKeyEquivModMask - 1048576 - NSMenu - - CF$UID - 425 - - NSMixedImage - - CF$UID - 403 - - NSMnemonicLoc - 2147483647 - NSOnImage - - CF$UID - 399 - - NSTitle - - CF$UID - 426 - - - - $class - - CF$UID - 671 - - NSMenuItems - - CF$UID - 679 - - NSName - - CF$UID - 694 - - NSTitle - - CF$UID - 677 - - - Quit %@ - q - - $class - - CF$UID - 4 - - NS.string - terminate: - - - $class - - CF$UID - 407 - - NSDestination - - CF$UID - 2 - - NSLabel - - CF$UID - 432 - - NSSource - - CF$UID - 430 - - - - $class - - CF$UID - 405 - - NSKeyEquiv - - CF$UID - 22 - - NSMenu - - CF$UID - 425 - - NSMixedImage - - CF$UID - 403 - - NSMnemonicLoc - 2147483647 - NSOnImage - - CF$UID - 399 - - NSTitle - - CF$UID - 431 - - - About %@ - - $class - - CF$UID - 4 - - NS.string - orderFrontStandardAboutPanel: - - - $class - - CF$UID - 407 - - NSDestination - - CF$UID - 2 - - NSLabel - - CF$UID - 437 - - NSSource - - CF$UID - 434 - - - - $class - - CF$UID - 405 - - NSKeyEquiv - - CF$UID - 436 - - NSKeyEquivModMask - 1572864 - NSMenu - - CF$UID - 425 - - NSMixedImage - - CF$UID - 403 - - NSMnemonicLoc - 2147483647 - NSOnImage - - CF$UID - 399 - - NSTitle - - CF$UID - 435 - - - Hide Others - h - hideOtherApplications: - - $class - - CF$UID - 407 - - NSDestination - - CF$UID - 2 - - NSLabel - - CF$UID - 441 - - NSSource - - CF$UID - 439 - - - - $class - - CF$UID - 405 - - NSKeyEquiv - - CF$UID - 436 - - NSKeyEquivModMask - 1048576 - NSMenu - - CF$UID - 425 - - NSMixedImage - - CF$UID - 403 - - NSMnemonicLoc - 2147483647 - NSOnImage - - CF$UID - 399 - - NSTitle - - CF$UID - 440 - - - Hide %@ - hide: - - $class - - CF$UID - 407 - - NSDestination - - CF$UID - 2 - - NSLabel - - CF$UID - 445 - - NSSource - - CF$UID - 443 - - - - $class - - CF$UID - 405 - - NSKeyEquiv - - CF$UID - 22 - - NSKeyEquivModMask - 1048576 - NSMenu - - CF$UID - 425 - - NSMixedImage - - CF$UID - 403 - - NSMnemonicLoc - 2147483647 - NSOnImage - - CF$UID - 399 - - NSTitle - - CF$UID - 444 - - - Show All - unhideAllApplications: - - $class - - CF$UID - 407 - - NSLabel - - CF$UID - 450 - - NSSource - - CF$UID - 447 - - - - $class - - CF$UID - 405 - - NSKeyEquiv - - CF$UID - 449 - - NSKeyEquivModMask - 1048576 - NSMenu - - CF$UID - 414 - - NSMixedImage - - CF$UID - 403 - - NSMnemonicLoc - 2147483647 - NSOnImage - - CF$UID - 399 - - NSTitle - - CF$UID - 448 - - - Close - w - performClose: - - $class - - CF$UID - 407 - - NSLabel - - CF$UID - 455 - - NSSource - - CF$UID - 452 - - - - $class - - CF$UID - 405 - - NSKeyEquiv - - CF$UID - 22 - - NSKeyEquivModMask - 1048576 - NSMenu - - CF$UID - 453 - - NSMixedImage - - CF$UID - 403 - - NSMnemonicLoc - 2147483647 - NSOnImage - - CF$UID - 399 - - NSTitle - - CF$UID - 454 - - - - $class - - CF$UID - 671 - - NSMenuItems - - CF$UID - 716 - - NSTitle - - CF$UID - 714 - - - Check Spelling as You Type - toggleContinuousSpellChecking: - - $class - - CF$UID - 407 - - NSLabel - - CF$UID - 461 - - NSSource - - CF$UID - 457 - - - - $class - - CF$UID - 405 - - NSKeyEquiv - - CF$UID - 460 - - NSKeyEquivModMask - 1048576 - NSMenu - - CF$UID - 458 - - NSMixedImage - - CF$UID - 403 - - NSMnemonicLoc - 2147483647 - NSOnImage - - CF$UID - 399 - - NSTitle - - CF$UID - 459 - - - - $class - - CF$UID - 671 - - NSMenuItems - - CF$UID - 705 - - NSTitle - - CF$UID - 704 - - - Undo - z - - $class - - CF$UID - 4 - - NS.string - undo: - - - $class - - CF$UID - 407 - - NSLabel - - CF$UID - 466 - - NSSource - - CF$UID - 463 - - - - $class - - CF$UID - 405 - - NSKeyEquiv - - CF$UID - 465 - - NSKeyEquivModMask - 1048576 - NSMenu - - CF$UID - 458 - - NSMixedImage - - CF$UID - 403 - - NSMnemonicLoc - 2147483647 - NSOnImage - - CF$UID - 399 - - NSTitle - - CF$UID - 464 - - - Copy - c - - $class - - CF$UID - 4 - - NS.string - copy: - - - $class - - CF$UID - 407 - - NSLabel - - CF$UID - 471 - - NSSource - - CF$UID - 468 - - - - $class - - CF$UID - 405 - - NSKeyEquiv - - CF$UID - 470 - - NSKeyEquivModMask - 1048576 - NSMenu - - CF$UID - 453 - - NSMixedImage - - CF$UID - 403 - - NSMnemonicLoc - 2147483647 - NSOnImage - - CF$UID - 399 - - NSTitle - - CF$UID - 469 - - - Check Spelling - ; - - $class - - CF$UID - 4 - - NS.string - checkSpelling: - - - $class - - CF$UID - 407 - - NSLabel - - CF$UID - 476 - - NSSource - - CF$UID - 473 - - - - $class - - CF$UID - 405 - - NSKeyEquiv - - CF$UID - 475 - - NSKeyEquivModMask - 1048576 - NSMenu - - CF$UID - 458 - - NSMixedImage - - CF$UID - 403 - - NSMnemonicLoc - 2147483647 - NSOnImage - - CF$UID - 399 - - NSTitle - - CF$UID - 474 - - - Paste - v - - $class - - CF$UID - 4 - - NS.string - paste: - - - $class - - CF$UID - 407 - - NSLabel - - CF$UID - 481 - - NSSource - - CF$UID - 478 - - - - $class - - CF$UID - 405 - - NSKeyEquiv - - CF$UID - 22 - - NSKeyEquivModMask - 1048576 - NSMenu - - CF$UID - 479 - - NSMixedImage - - CF$UID - 403 - - NSMnemonicLoc - 2147483647 - NSOnImage - - CF$UID - 399 - - NSTitle - - CF$UID - 480 - - - - $class - - CF$UID - 671 - - NSMenuItems - - CF$UID - 720 - - NSTitle - - CF$UID - 718 - - - Stop Speaking - stopSpeaking: - - $class - - CF$UID - 407 - - NSLabel - - CF$UID - 486 - - NSSource - - CF$UID - 483 - - - - $class - - CF$UID - 405 - - NSKeyEquiv - - CF$UID - 485 - - NSKeyEquivModMask - 1048576 - NSMenu - - CF$UID - 458 - - NSMixedImage - - CF$UID - 403 - - NSMnemonicLoc - 2147483647 - NSOnImage - - CF$UID - 399 - - NSTitle - - CF$UID - 484 - - - Cut - x - - $class - - CF$UID - 4 - - NS.string - cut: - - - $class - - CF$UID - 407 - - NSLabel - - CF$UID - 491 - - NSSource - - CF$UID - 488 - - - - $class - - CF$UID - 405 - - NSKeyEquiv - - CF$UID - 490 - - NSKeyEquivModMask - 1048576 - NSMenu - - CF$UID - 453 - - NSMixedImage - - CF$UID - 403 - - NSMnemonicLoc - 2147483647 - NSOnImage - - CF$UID - 399 - - NSTitle - - CF$UID - 489 - - - Spelling… - : - - $class - - CF$UID - 4 - - NS.string - showGuessPanel: - - - $class - - CF$UID - 407 - - NSLabel - - CF$UID - 496 - - NSSource - - CF$UID - 493 - - - - $class - - CF$UID - 405 - - NSKeyEquiv - - CF$UID - 495 - - NSKeyEquivModMask - 1048576 - NSMenu - - CF$UID - 458 - - NSMixedImage - - CF$UID - 403 - - NSMnemonicLoc - 2147483647 - NSOnImage - - CF$UID - 399 - - NSTitle - - CF$UID - 494 - - - Redo - Z - - $class - - CF$UID - 4 - - NS.string - redo: - - - $class - - CF$UID - 407 - - NSLabel - - CF$UID - 501 - - NSSource - - CF$UID - 498 - - - - $class - - CF$UID - 405 - - NSKeyEquiv - - CF$UID - 500 - - NSKeyEquivModMask - 1048576 - NSMenu - - CF$UID - 458 - - NSMixedImage - - CF$UID - 403 - - NSMnemonicLoc - 2147483647 - NSOnImage - - CF$UID - 399 - - NSTitle - - CF$UID - 499 - - - Select All - a - - $class - - CF$UID - 4 - - NS.string - selectAll: - - - $class - - CF$UID - 407 - - NSLabel - - CF$UID - 505 - - NSSource - - CF$UID - 503 - - - - $class - - CF$UID - 405 - - NSKeyEquiv - - CF$UID - 22 - - NSKeyEquivModMask - 1048576 - NSMenu - - CF$UID - 479 - - NSMixedImage - - CF$UID - 403 - - NSMnemonicLoc - 2147483647 - NSOnImage - - CF$UID - 399 - - NSTitle - - CF$UID - 504 - - - Start Speaking - startSpeaking: - - $class - - CF$UID - 407 - - NSLabel - - CF$UID - 509 - - NSSource - - CF$UID - 507 - - - - $class - - CF$UID - 405 - - NSKeyEquiv - - CF$UID - 22 - - NSKeyEquivModMask - 1048576 - NSMenu - - CF$UID - 458 - - NSMixedImage - - CF$UID - 403 - - NSMnemonicLoc - 2147483647 - NSOnImage - - CF$UID - 399 - - NSTitle - - CF$UID - 508 - - - Delete - delete: - - $class - - CF$UID - 407 - - NSLabel - - CF$UID - 513 - - NSSource - - CF$UID - 511 - - - - $class - - CF$UID - 405 - - NSKeyEquiv - - CF$UID - 22 - - NSKeyEquivModMask - 1048576 - NSMenu - - CF$UID - 396 - - NSMixedImage - - CF$UID - 403 - - NSMnemonicLoc - 2147483647 - NSOnImage - - CF$UID - 399 - - NSTitle - - CF$UID - 512 - - - Zoom - performZoom: - - $class - - CF$UID - 407 - - NSLabel - - CF$UID - 519 - - NSSource - - CF$UID - 515 - - - - $class - - CF$UID - 405 - - NSKeyEquiv - - CF$UID - 518 - - NSKeyEquivModMask - 1048576 - NSMenu - - CF$UID - 516 - - NSMixedImage - - CF$UID - 403 - - NSMnemonicLoc - 2147483647 - NSOnImage - - CF$UID - 399 - - NSTag - 1 - NSTitle - - CF$UID - 517 - - - - $class - - CF$UID - 671 - - NSMenuItems - - CF$UID - 712 - - NSTitle - - CF$UID - 711 - - - Find… - f - performFindPanelAction: - - $class - - CF$UID - 407 - - NSLabel - - CF$UID - 519 - - NSSource - - CF$UID - 521 - - - - $class - - CF$UID - 405 - - NSKeyEquiv - - CF$UID - 523 - - NSKeyEquivModMask - 1048576 - NSMenu - - CF$UID - 516 - - NSMixedImage - - CF$UID - 403 - - NSMnemonicLoc - 2147483647 - NSOnImage - - CF$UID - 399 - - NSTag - 2 - NSTitle - - CF$UID - 522 - - - Find Next - g - - $class - - CF$UID - 407 - - NSLabel - - CF$UID - 519 - - NSSource - - CF$UID - 525 - - - - $class - - CF$UID - 405 - - NSKeyEquiv - - CF$UID - 527 - - NSKeyEquivModMask - 1048576 - NSMenu - - CF$UID - 516 - - NSMixedImage - - CF$UID - 403 - - NSMnemonicLoc - 2147483647 - NSOnImage - - CF$UID - 399 - - NSTag - 3 - NSTitle - - CF$UID - 526 - - - Find Previous - G - - $class - - CF$UID - 407 - - NSLabel - - CF$UID - 519 - - NSSource - - CF$UID - 529 - - - - $class - - CF$UID - 405 - - NSKeyEquiv - - CF$UID - 531 - - NSKeyEquivModMask - 1048576 - NSMenu - - CF$UID - 516 - - NSMixedImage - - CF$UID - 403 - - NSMnemonicLoc - 2147483647 - NSOnImage - - CF$UID - 399 - - NSTag - 7 - NSTitle - - CF$UID - 530 - - - Use Selection for Find - e - - $class - - CF$UID - 407 - - NSLabel - - CF$UID - 536 - - NSSource - - CF$UID - 533 - - - - $class - - CF$UID - 405 - - NSKeyEquiv - - CF$UID - 535 - - NSKeyEquivModMask - 1048576 - NSMenu - - CF$UID - 516 - - NSMixedImage - - CF$UID - 403 - - NSMnemonicLoc - 2147483647 - NSOnImage - - CF$UID - 399 - - NSTitle - - CF$UID - 534 - - - Jump to Selection - j - centerSelectionInVisibleArea: - - $class - - CF$UID - 541 - - NSDestination - - CF$UID - 538 - - NSLabel - - CF$UID - 540 - - NSSource - - CF$UID - 2 - - - - $class - - CF$UID - 5 - - NSClassName - - CF$UID - 539 - - - SOPEXAppController - delegate - - $classes - - NSNibOutletConnector - NSNibConnector - NSObject - - $classname - NSNibOutletConnector - - - $class - - CF$UID - 541 - - NSDestination - - CF$UID - 8 - - NSLabel - - CF$UID - 543 - - NSSource - - CF$UID - 538 - - - mainWindow - - $class - - CF$UID - 541 - - NSDestination - - CF$UID - 538 - - NSLabel - - CF$UID - 540 - - NSSource - - CF$UID - 8 - - - - $class - - CF$UID - 407 - - NSDestination - - CF$UID - 538 - - NSLabel - - CF$UID - 550 - - NSSource - - CF$UID - 546 - - - - $class - - CF$UID - 405 - - NSKeyEquiv - - CF$UID - 549 - - NSKeyEquivModMask - 1048576 - NSMenu - - CF$UID - 547 - - NSMixedImage - - CF$UID - 403 - - NSMnemonicLoc - 2147483647 - NSOnImage - - CF$UID - 399 - - NSTitle - - CF$UID - 548 - - - - $class - - CF$UID - 671 - - NSMenuItems - - CF$UID - 667 - - NSTitle - - CF$UID - 665 - - - Show Statistics - S - openStatistics: - - $class - - CF$UID - 407 - - NSDestination - - CF$UID - 538 - - NSLabel - - CF$UID - 555 - - NSSource - - CF$UID - 552 - - - - $class - - CF$UID - 405 - - NSKeyEquiv - - CF$UID - 554 - - NSKeyEquivModMask - 1572864 - NSMenu - - CF$UID - 547 - - NSMixedImage - - CF$UID - 403 - - NSMnemonicLoc - 2147483647 - NSOnImage - - CF$UID - 399 - - NSTitle - - CF$UID - 553 - - - Restart - r - restartDaemonTask: - - $class - - CF$UID - 407 - - NSDestination - - CF$UID - 538 - - NSLabel - - CF$UID - 559 - - NSSource - - CF$UID - 557 - - - - $class - - CF$UID - 405 - - NSKeyEquiv - - CF$UID - 22 - - NSKeyEquivModMask - 1048576 - NSMenu - - CF$UID - 547 - - NSMixedImage - - CF$UID - 403 - - NSMnemonicLoc - 2147483647 - NSOnImage - - CF$UID - 399 - - NSTitle - - CF$UID - 558 - - - Show Console - openConsole: - - $class - - CF$UID - 407 - - NSLabel - - CF$UID - 564 - - NSSource - - CF$UID - 561 - - - - $class - - CF$UID - 405 - - NSKeyEquiv - - CF$UID - 563 - - NSKeyEquivModMask - 1048576 - NSMenu - - CF$UID - 547 - - NSMixedImage - - CF$UID - 403 - - NSMnemonicLoc - 2147483647 - NSOnImage - - CF$UID - 399 - - NSTitle - - CF$UID - 562 - - - Clean Console - k - clear: - - $class - - CF$UID - 541 - - NSDestination - - CF$UID - 430 - - NSLabel - - CF$UID - 566 - - NSSource - - CF$UID - 538 - - - aboutMenuItem - - $class - - CF$UID - 541 - - NSDestination - - CF$UID - 439 - - NSLabel - - CF$UID - 568 - - NSSource - - CF$UID - 538 - - - hideMenuItem - - $class - - CF$UID - 541 - - NSDestination - - CF$UID - 424 - - NSLabel - - CF$UID - 570 - - NSSource - - CF$UID - 538 - - - quitMenuItem - - $class - - CF$UID - 541 - - NSDestination - - CF$UID - 145 - - NSLabel - - CF$UID - 572 - - NSSource - - CF$UID - 538 - - - webView - - $class - - CF$UID - 541 - - NSDestination - - CF$UID - 538 - - NSLabel - - CF$UID - 574 - - NSSource - - CF$UID - 145 - - - downloadDelegate - - $class - - CF$UID - 541 - - NSDestination - - CF$UID - 538 - - NSLabel - - CF$UID - 576 - - NSSource - - CF$UID - 145 - - - frameLoadDelegate - - $class - - CF$UID - 541 - - NSDestination - - CF$UID - 538 - - NSLabel - - CF$UID - 578 - - NSSource - - CF$UID - 145 - - - policyDelegate - - $class - - CF$UID - 541 - - NSDestination - - CF$UID - 538 - - NSLabel - - CF$UID - 580 - - NSSource - - CF$UID - 145 - - - resourceLoadDelegate - - $class - - CF$UID - 541 - - NSDestination - - CF$UID - 538 - - NSLabel - - CF$UID - 582 - - NSSource - - CF$UID - 145 - - - UIDelegate - - $class - - CF$UID - 541 - - NSDestination - - CF$UID - 367 - - NSLabel - - CF$UID - 584 - - NSSource - - CF$UID - 538 - - - statusBarTextField - - $class - - CF$UID - 541 - - NSDestination - - CF$UID - 371 - - NSLabel - - CF$UID - 586 - - NSSource - - CF$UID - 538 - - - progressIndicator - - $class - - CF$UID - 407 - - NSDestination - - CF$UID - 538 - - NSLabel - - CF$UID - 591 - - NSSource - - CF$UID - 588 - - - - $class - - CF$UID - 405 - - NSKeyEquiv - - CF$UID - 590 - - NSKeyEquivModMask - 1048576 - NSMenu - - CF$UID - 589 - - NSMixedImage - - CF$UID - 403 - - NSMnemonicLoc - 2147483647 - NSOnImage - - CF$UID - 399 - - NSState - 1 - NSTitle - - CF$UID - 201 - - - - $class - - CF$UID - 671 - - NSMenuItems - - CF$UID - 724 - - NSTitle - - CF$UID - 722 - - - 1 - viewApplication: - - $class - - CF$UID - 407 - - NSDestination - - CF$UID - 538 - - NSLabel - - CF$UID - 595 - - NSSource - - CF$UID - 593 - - - - $class - - CF$UID - 405 - - NSKeyEquiv - - CF$UID - 22 - - NSKeyEquivModMask - 1048576 - NSMenu - - CF$UID - 547 - - NSMixedImage - - CF$UID - 403 - - NSMnemonicLoc - 2147483647 - NSOnImage - - CF$UID - 399 - - NSTitle - - CF$UID - 594 - - - *debug* Toggle Toolbar - toggleToolbar: - - $class - - CF$UID - 541 - - NSDestination - - CF$UID - 211 - - NSLabel - - CF$UID - 597 - - NSSource - - CF$UID - 538 - - - htmlView - - $class - - CF$UID - 541 - - NSDestination - - CF$UID - 15 - - NSLabel - - CF$UID - 599 - - NSSource - - CF$UID - 538 - - - tabView - - $class - - CF$UID - 541 - - NSDestination - - CF$UID - 588 - - NSLabel - - CF$UID - 601 - - NSSource - - CF$UID - 538 - - - viewApplicationMenuItem - - $class - - CF$UID - 541 - - NSDestination - - CF$UID - 603 - - NSLabel - - CF$UID - 606 - - NSSource - - CF$UID - 538 - - - - $class - - CF$UID - 405 - - NSKeyEquiv - - CF$UID - 605 - - NSKeyEquivModMask - 1048576 - NSMenu - - CF$UID - 589 - - NSMixedImage - - CF$UID - 403 - - NSMnemonicLoc - 2147483647 - NSOnImage - - CF$UID - 399 - - NSTag - 1 - NSTitle - - CF$UID - 604 - - - Source - 2 - viewSourceMenuItem - - $class - - CF$UID - 541 - - NSDestination - - CF$UID - 538 - - NSLabel - - CF$UID - 608 - - NSSource - - CF$UID - 272 - - - dataSource - - $class - - CF$UID - 541 - - NSDestination - - CF$UID - 538 - - NSLabel - - CF$UID - 540 - - NSSource - - CF$UID - 272 - - - - $class - - CF$UID - 541 - - NSDestination - - CF$UID - 272 - - NSLabel - - CF$UID - 611 - - NSSource - - CF$UID - 538 - - - responseHeaderInfoTableView - - $class - - CF$UID - 407 - - NSDestination - - CF$UID - 538 - - NSLabel - - CF$UID - 615 - - NSSource - - CF$UID - 613 - - - - $class - - CF$UID - 405 - - NSKeyEquiv - - CF$UID - 614 - - NSKeyEquivModMask - 1048576 - NSMenu - - CF$UID - 589 - - NSMixedImage - - CF$UID - 403 - - NSMnemonicLoc - 2147483647 - NSOnImage - - CF$UID - 399 - - NSTag - 1 - NSTitle - - CF$UID - 263 - - - 3 - viewHTML: - - $class - - CF$UID - 407 - - NSDestination - - CF$UID - 538 - - NSLabel - - CF$UID - 620 - - NSSource - - CF$UID - 617 - - - - $class - - CF$UID - 405 - - NSKeyEquiv - - CF$UID - 619 - - NSKeyEquivModMask - 1048576 - NSMenu - - CF$UID - 589 - - NSMixedImage - - CF$UID - 403 - - NSMnemonicLoc - 2147483647 - NSOnImage - - CF$UID - 399 - - NSTag - 1 - NSTitle - - CF$UID - 618 - - - HTTP Info - 4 - viewHTTP: - - $class - - CF$UID - 407 - - NSLabel - - CF$UID - 622 - - NSSource - - CF$UID - 603 - - - viewSource: - - $class - - CF$UID - 541 - - NSDestination - - CF$UID - 347 - - NSLabel - - CF$UID - 624 - - NSSource - - CF$UID - 538 - - - woxNameField - - $class - - CF$UID - 541 - - NSDestination - - CF$UID - 326 - - NSLabel - - CF$UID - 626 - - NSSource - - CF$UID - 538 - - - woxSourceView - - $class - - CF$UID - 541 - - NSDestination - - CF$UID - 19 - - NSLabel - - CF$UID - 628 - - NSSource - - CF$UID - 538 - - - woComponentNameField - - $class - - CF$UID - 541 - - NSDestination - - CF$UID - 43 - - NSLabel - - CF$UID - 630 - - NSSource - - CF$UID - 538 - - - woSourceView - - $class - - CF$UID - 541 - - NSDestination - - CF$UID - 101 - - NSLabel - - CF$UID - 632 - - NSSource - - CF$UID - 538 - - - woDefinitionView - - $class - - CF$UID - 541 - - NSDestination - - CF$UID - 613 - - NSLabel - - CF$UID - 634 - - NSSource - - CF$UID - 538 - - - viewHTMLMenuItem - - $class - - CF$UID - 541 - - NSDestination - - CF$UID - 617 - - NSLabel - - CF$UID - 636 - - NSSource - - CF$UID - 538 - - - viewHTTPMenuItem - - $class - - CF$UID - 407 - - NSLabel - - CF$UID - 640 - - NSSource - - CF$UID - 638 - - - - $class - - CF$UID - 405 - - NSKeyEquiv - - CF$UID - 22 - - NSKeyEquivModMask - 1048576 - NSMenu - - CF$UID - 414 - - NSMixedImage - - CF$UID - 403 - - NSMnemonicLoc - 2147483647 - NSOnImage - - CF$UID - 399 - - NSTitle - - CF$UID - 639 - - - Revert to Saved - revertDocumentToSaved: - - $class - - CF$UID - 407 - - NSLabel - - CF$UID - 645 - - NSSource - - CF$UID - 642 - - - - $class - - CF$UID - 405 - - NSKeyEquiv - - CF$UID - 644 - - NSKeyEquivModMask - 1048576 - NSMenu - - CF$UID - 414 - - NSMixedImage - - CF$UID - 403 - - NSMnemonicLoc - 2147483647 - NSOnImage - - CF$UID - 399 - - NSTitle - - CF$UID - 643 - - - Save - s - saveDocument: - - $class - - CF$UID - 407 - - NSDestination - - CF$UID - 538 - - NSLabel - - CF$UID - 649 - - NSSource - - CF$UID - 647 - - - - $class - - CF$UID - 405 - - NSKeyEquiv - - CF$UID - 554 - - NSKeyEquivModMask - 1048576 - NSMenu - - CF$UID - 589 - - NSMixedImage - - CF$UID - 403 - - NSMnemonicLoc - 2147483647 - NSOnImage - - CF$UID - 399 - - NSTitle - - CF$UID - 648 - - - Reload - reload: - - $class - - CF$UID - 407 - - NSDestination - - CF$UID - 538 - - NSLabel - - CF$UID - 653 - - NSSource - - CF$UID - 651 - - - - $class - - CF$UID - 405 - - NSKeyEquiv - - CF$UID - 22 - - NSKeyEquivModMask - 1048576 - NSMenu - - CF$UID - 589 - - NSMixedImage - - CF$UID - 403 - - NSMnemonicLoc - 2147483647 - NSOnImage - - CF$UID - 399 - - NSTitle - - CF$UID - 652 - - - Go Back - back: - - $class - - CF$UID - 541 - - NSDestination - - CF$UID - 538 - - NSLabel - - CF$UID - 540 - - NSSource - - CF$UID - 326 - - - - $class - - CF$UID - 541 - - NSDestination - - CF$UID - 538 - - NSLabel - - CF$UID - 540 - - NSSource - - CF$UID - 43 - - - - $class - - CF$UID - 541 - - NSDestination - - CF$UID - 538 - - NSLabel - - CF$UID - 540 - - NSSource - - CF$UID - 101 - - - - $class - - CF$UID - 407 - - NSDestination - - CF$UID - 538 - - NSLabel - - CF$UID - 658 - - NSSource - - CF$UID - 351 - - - editInXcode: - - $class - - CF$UID - 541 - - NSDestination - - CF$UID - 538 - - NSLabel - - CF$UID - 540 - - NSSource - - CF$UID - 211 - - - - $class - - CF$UID - 541 - - NSDestination - - CF$UID - 356 - - NSLabel - - CF$UID - 661 - - NSSource - - CF$UID - 326 - - - statusField - - $class - - CF$UID - 541 - - NSDestination - - CF$UID - 663 - - NSLabel - - CF$UID - 672 - - NSSource - - CF$UID - 538 - - - - $class - - CF$UID - 405 - - NSAction - - CF$UID - 666 - - NSKeyEquiv - - CF$UID - 22 - - NSKeyEquivModMask - 1048576 - NSMenu - - CF$UID - 664 - - NSMixedImage - - CF$UID - 403 - - NSMnemonicLoc - 2147483647 - NSOnImage - - CF$UID - 399 - - NSSubmenu - - CF$UID - 547 - - NSTitle - - CF$UID - 665 - - - - $class - - CF$UID - 671 - - NSMenuItems - - CF$UID - 675 - - NSName - - CF$UID - 732 - - NSTitle - - CF$UID - 674 - - - Debug - submenuAction: - - $class - - CF$UID - 61 - - NS.objects - - - CF$UID - 552 - - - CF$UID - 668 - - - CF$UID - 546 - - - CF$UID - 557 - - - CF$UID - 669 - - - CF$UID - 561 - - - CF$UID - 670 - - - CF$UID - 593 - - - - - $class - - CF$UID - 405 - - NSIsDisabled - - NSIsSeparator - - NSKeyEquiv - - CF$UID - 22 - - NSKeyEquivModMask - 1048576 - NSMenu - - CF$UID - 547 - - NSMixedImage - - CF$UID - 403 - - NSMnemonicLoc - 2147483647 - NSOnImage - - CF$UID - 399 - - NSTitle - - CF$UID - 22 - - - - $class - - CF$UID - 405 - - NSIsDisabled - - NSIsSeparator - - NSKeyEquiv - - CF$UID - 22 - - NSKeyEquivModMask - 1048576 - NSMenu - - CF$UID - 547 - - NSMixedImage - - CF$UID - 403 - - NSMnemonicLoc - 2147483647 - NSOnImage - - CF$UID - 399 - - NSTitle - - CF$UID - 22 - - - - $class - - CF$UID - 405 - - NSIsDisabled - - NSIsSeparator - - NSKeyEquiv - - CF$UID - 22 - - NSKeyEquivModMask - 1048576 - NSMenu - - CF$UID - 547 - - NSMixedImage - - CF$UID - 403 - - NSMnemonicLoc - 2147483647 - NSOnImage - - CF$UID - 399 - - NSTitle - - CF$UID - 22 - - - - $classes - - NSMenu - NSObject - - $classname - NSMenu - - debugMenuItem - - $class - - CF$UID - 541 - - NSDestination - - CF$UID - 664 - - NSLabel - - CF$UID - 733 - - NSSource - - CF$UID - 538 - - - MainMenu - - $class - - CF$UID - 61 - - NS.objects - - - CF$UID - 676 - - - CF$UID - 695 - - - CF$UID - 701 - - - CF$UID - 663 - - - CF$UID - 721 - - - CF$UID - 726 - - - - - $class - - CF$UID - 405 - - NSAction - - CF$UID - 678 - - NSKeyEquiv - - CF$UID - 22 - - NSKeyEquivModMask - 1048576 - NSMenu - - CF$UID - 664 - - NSMixedImage - - CF$UID - 403 - - NSMnemonicLoc - 2147483647 - NSOnImage - - CF$UID - 399 - - NSSubmenu - - CF$UID - 425 - - NSTitle - - CF$UID - 677 - - - SOPEX - submenuAction: - - $class - - CF$UID - 61 - - NS.objects - - - CF$UID - 430 - - - CF$UID - 680 - - - CF$UID - 681 - - - CF$UID - 684 - - - CF$UID - 685 - - - CF$UID - 692 - - - CF$UID - 439 - - - CF$UID - 434 - - - CF$UID - 443 - - - CF$UID - 693 - - - CF$UID - 424 - - - - - $class - - CF$UID - 405 - - NSIsDisabled - - NSIsSeparator - - NSKeyEquiv - - CF$UID - 22 - - NSKeyEquivModMask - 1048576 - NSMenu - - CF$UID - 425 - - NSMixedImage - - CF$UID - 403 - - NSMnemonicLoc - 2147483647 - NSOnImage - - CF$UID - 399 - - NSTitle - - CF$UID - 22 - - - - $class - - CF$UID - 405 - - NSKeyEquiv - - CF$UID - 683 - - NSKeyEquivModMask - 1048576 - NSMenu - - CF$UID - 425 - - NSMixedImage - - CF$UID - 403 - - NSMnemonicLoc - 2147483647 - NSOnImage - - CF$UID - 399 - - NSTitle - - CF$UID - 682 - - - Preferences… - , - - $class - - CF$UID - 405 - - NSIsDisabled - - NSIsSeparator - - NSKeyEquiv - - CF$UID - 22 - - NSKeyEquivModMask - 1048576 - NSMenu - - CF$UID - 425 - - NSMixedImage - - CF$UID - 403 - - NSMnemonicLoc - 2147483647 - NSOnImage - - CF$UID - 399 - - NSTitle - - CF$UID - 22 - - - - $class - - CF$UID - 405 - - NSAction - - CF$UID - 687 - - NSKeyEquiv - - CF$UID - 22 - - NSKeyEquivModMask - 1048576 - NSMenu - - CF$UID - 425 - - NSMixedImage - - CF$UID - 403 - - NSMnemonicLoc - 2147483647 - NSOnImage - - CF$UID - 399 - - NSSubmenu - - CF$UID - 688 - - NSTitle - - CF$UID - 686 - - - Services - submenuAction: - - $class - - CF$UID - 671 - - NSMenuItems - - CF$UID - 690 - - NSName - - CF$UID - 691 - - NSTitle - - CF$UID - 689 - - - - $class - - CF$UID - 4 - - NS.string - Services - - - $class - - CF$UID - 61 - - NS.objects - - - _NSServicesMenu - - $class - - CF$UID - 405 - - NSIsDisabled - - NSIsSeparator - - NSKeyEquiv - - CF$UID - 22 - - NSKeyEquivModMask - 1048576 - NSMenu - - CF$UID - 425 - - NSMixedImage - - CF$UID - 403 - - NSMnemonicLoc - 2147483647 - NSOnImage - - CF$UID - 399 - - NSTitle - - CF$UID - 22 - - - - $class - - CF$UID - 405 - - NSIsDisabled - - NSIsSeparator - - NSKeyEquiv - - CF$UID - 22 - - NSKeyEquivModMask - 1048576 - NSMenu - - CF$UID - 425 - - NSMixedImage - - CF$UID - 403 - - NSMnemonicLoc - 2147483647 - NSOnImage - - CF$UID - 399 - - NSTitle - - CF$UID - 22 - - - _NSAppleMenu - - $class - - CF$UID - 405 - - NSAction - - CF$UID - 697 - - NSKeyEquiv - - CF$UID - 22 - - NSKeyEquivModMask - 1048576 - NSMenu - - CF$UID - 664 - - NSMixedImage - - CF$UID - 403 - - NSMnemonicLoc - 2147483647 - NSOnImage - - CF$UID - 399 - - NSSubmenu - - CF$UID - 414 - - NSTitle - - CF$UID - 696 - - - File - submenuAction: - - $class - - CF$UID - 4 - - NS.string - File - - - $class - - CF$UID - 61 - - NS.objects - - - CF$UID - 447 - - - CF$UID - 642 - - - CF$UID - 638 - - - CF$UID - 700 - - - CF$UID - 419 - - - CF$UID - 413 - - - - - $class - - CF$UID - 405 - - NSIsDisabled - - NSIsSeparator - - NSKeyEquiv - - CF$UID - 22 - - NSKeyEquivModMask - 1048576 - NSMenu - - CF$UID - 414 - - NSMixedImage - - CF$UID - 403 - - NSMnemonicLoc - 2147483647 - NSOnImage - - CF$UID - 399 - - NSTitle - - CF$UID - 22 - - - - $class - - CF$UID - 405 - - NSAction - - CF$UID - 703 - - NSKeyEquiv - - CF$UID - 22 - - NSKeyEquivModMask - 1048576 - NSMenu - - CF$UID - 664 - - NSMixedImage - - CF$UID - 403 - - NSMnemonicLoc - 2147483647 - NSOnImage - - CF$UID - 399 - - NSSubmenu - - CF$UID - 458 - - NSTitle - - CF$UID - 702 - - - Edit - submenuAction: - - $class - - CF$UID - 4 - - NS.string - Edit - - - $class - - CF$UID - 61 - - NS.objects - - - CF$UID - 457 - - - CF$UID - 493 - - - CF$UID - 706 - - - CF$UID - 483 - - - CF$UID - 463 - - - CF$UID - 473 - - - CF$UID - 507 - - - CF$UID - 498 - - - CF$UID - 707 - - - CF$UID - 708 - - - CF$UID - 713 - - - CF$UID - 717 - - - - - $class - - CF$UID - 405 - - NSIsDisabled - - NSIsSeparator - - NSKeyEquiv - - CF$UID - 22 - - NSKeyEquivModMask - 1048576 - NSMenu - - CF$UID - 458 - - NSMixedImage - - CF$UID - 403 - - NSMnemonicLoc - 2147483647 - NSOnImage - - CF$UID - 399 - - NSTitle - - CF$UID - 22 - - - - $class - - CF$UID - 405 - - NSIsDisabled - - NSIsSeparator - - NSKeyEquiv - - CF$UID - 22 - - NSKeyEquivModMask - 1048576 - NSMenu - - CF$UID - 458 - - NSMixedImage - - CF$UID - 403 - - NSMnemonicLoc - 2147483647 - NSOnImage - - CF$UID - 399 - - NSTitle - - CF$UID - 22 - - - - $class - - CF$UID - 405 - - NSAction - - CF$UID - 710 - - NSKeyEquiv - - CF$UID - 22 - - NSKeyEquivModMask - 1048576 - NSMenu - - CF$UID - 458 - - NSMixedImage - - CF$UID - 403 - - NSMnemonicLoc - 2147483647 - NSOnImage - - CF$UID - 399 - - NSSubmenu - - CF$UID - 516 - - NSTitle - - CF$UID - 709 - - - Find - submenuAction: - - $class - - CF$UID - 4 - - NS.string - Find - - - $class - - CF$UID - 61 - - NS.objects - - - CF$UID - 515 - - - CF$UID - 521 - - - CF$UID - 525 - - - CF$UID - 529 - - - CF$UID - 533 - - - - - $class - - CF$UID - 405 - - NSAction - - CF$UID - 715 - - NSKeyEquiv - - CF$UID - 22 - - NSKeyEquivModMask - 1048576 - NSMenu - - CF$UID - 458 - - NSMixedImage - - CF$UID - 403 - - NSMnemonicLoc - 2147483647 - NSOnImage - - CF$UID - 399 - - NSSubmenu - - CF$UID - 453 - - NSTitle - - CF$UID - 714 - - - Spelling - submenuAction: - - $class - - CF$UID - 61 - - NS.objects - - - CF$UID - 488 - - - CF$UID - 468 - - - CF$UID - 452 - - - - - $class - - CF$UID - 405 - - NSAction - - CF$UID - 719 - - NSKeyEquiv - - CF$UID - 22 - - NSKeyEquivModMask - 1048576 - NSMenu - - CF$UID - 458 - - NSMixedImage - - CF$UID - 403 - - NSMnemonicLoc - 2147483647 - NSOnImage - - CF$UID - 399 - - NSSubmenu - - CF$UID - 479 - - NSTitle - - CF$UID - 718 - - - Speech - submenuAction: - - $class - - CF$UID - 61 - - NS.objects - - - CF$UID - 503 - - - CF$UID - 478 - - - - - $class - - CF$UID - 405 - - NSAction - - CF$UID - 723 - - NSKeyEquiv - - CF$UID - 22 - - NSKeyEquivModMask - 1048576 - NSMenu - - CF$UID - 664 - - NSMixedImage - - CF$UID - 403 - - NSMnemonicLoc - 2147483647 - NSOnImage - - CF$UID - 399 - - NSSubmenu - - CF$UID - 589 - - NSTitle - - CF$UID - 722 - - - View - submenuAction: - - $class - - CF$UID - 61 - - NS.objects - - - CF$UID - 647 - - - CF$UID - 651 - - - CF$UID - 725 - - - CF$UID - 588 - - - CF$UID - 603 - - - CF$UID - 613 - - - CF$UID - 617 - - - - - $class - - CF$UID - 405 - - NSIsDisabled - - NSIsSeparator - - NSKeyEquiv - - CF$UID - 22 - - NSKeyEquivModMask - 1048576 - NSMenu - - CF$UID - 589 - - NSMixedImage - - CF$UID - 403 - - NSMnemonicLoc - 2147483647 - NSOnImage - - CF$UID - 399 - - NSTitle - - CF$UID - 22 - - - - $class - - CF$UID - 405 - - NSAction - - CF$UID - 727 - - NSKeyEquiv - - CF$UID - 22 - - NSKeyEquivModMask - 1048576 - NSMenu - - CF$UID - 664 - - NSMixedImage - - CF$UID - 403 - - NSMnemonicLoc - 2147483647 - NSOnImage - - CF$UID - 399 - - NSSubmenu - - CF$UID - 396 - - NSTitle - - CF$UID - 10 - - - submenuAction: - - $class - - CF$UID - 4 - - NS.string - Window - - - $class - - CF$UID - 61 - - NS.objects - - - CF$UID - 395 - - - CF$UID - 511 - - - CF$UID - 730 - - - CF$UID - 409 - - - - - $class - - CF$UID - 405 - - NSIsDisabled - - NSIsSeparator - - NSKeyEquiv - - CF$UID - 22 - - NSKeyEquivModMask - 1048576 - NSMenu - - CF$UID - 396 - - NSMixedImage - - CF$UID - 403 - - NSMnemonicLoc - 2147483647 - NSOnImage - - CF$UID - 399 - - NSTitle - - CF$UID - 22 - - - _NSWindowsMenu - _NSMainMenu - mainMenu - - $class - - CF$UID - 541 - - NSDestination - - CF$UID - 725 - - NSLabel - - CF$UID - 735 - - NSSource - - CF$UID - 538 - - - viewSeparatorMenuItem - - $class - - CF$UID - 541 - - NSDestination - - CF$UID - 126 - - NSLabel - - CF$UID - 737 - - NSSource - - CF$UID - 43 - - - statusField - - $class - - CF$UID - 541 - - NSDestination - - CF$UID - 132 - - NSLabel - - CF$UID - 737 - - NSSource - - CF$UID - 101 - - - - $class - - CF$UID - 740 - - NS.objects - - - CF$UID - 395 - - - CF$UID - 447 - - - CF$UID - 730 - - - CF$UID - 717 - - - CF$UID - 203 - - - CF$UID - 320 - - - CF$UID - 708 - - - CF$UID - 396 - - - CF$UID - 603 - - - CF$UID - 676 - - - CF$UID - 695 - - - CF$UID - 685 - - - CF$UID - 725 - - - CF$UID - 205 - - - CF$UID - 282 - - - CF$UID - 663 - - - CF$UID - 211 - - - CF$UID - 463 - - - CF$UID - 378 - - - CF$UID - 638 - - - CF$UID - 642 - - - CF$UID - 478 - - - CF$UID - 409 - - - CF$UID - 318 - - - CF$UID - 452 - - - CF$UID - 701 - - - CF$UID - 516 - - - CF$UID - 326 - - - CF$UID - 39 - - - CF$UID - 613 - - - CF$UID - 473 - - - CF$UID - 688 - - - CF$UID - 664 - - - CF$UID - 347 - - - CF$UID - 363 - - - CF$UID - 515 - - - CF$UID - 249 - - - CF$UID - 721 - - - CF$UID - 700 - - - CF$UID - 453 - - - CF$UID - 419 - - - CF$UID - 498 - - - CF$UID - 207 - - - CF$UID - 101 - - - CF$UID - 617 - - - CF$UID - 488 - - - CF$UID - 507 - - - CF$UID - 43 - - - CF$UID - 141 - - - CF$UID - 17 - - - CF$UID - 15 - - - CF$UID - 692 - - - CF$UID - 588 - - - CF$UID - 726 - - - CF$UID - 707 - - - CF$UID - 97 - - - CF$UID - 126 - - - CF$UID - 503 - - - CF$UID - 367 - - - CF$UID - 371 - - - CF$UID - 457 - - - CF$UID - 521 - - - CF$UID - 681 - - - CF$UID - 458 - - - CF$UID - 589 - - - CF$UID - 268 - - - CF$UID - 546 - - - CF$UID - 713 - - - CF$UID - 525 - - - CF$UID - 557 - - - CF$UID - 684 - - - CF$UID - 538 - - - CF$UID - 493 - - - CF$UID - 670 - - - CF$UID - 547 - - - CF$UID - 145 - - - CF$UID - 356 - - - CF$UID - 322 - - - CF$UID - 439 - - - CF$UID - 413 - - - CF$UID - 376 - - - CF$UID - 293 - - - CF$UID - 272 - - - CF$UID - 468 - - - CF$UID - 669 - - - CF$UID - 693 - - - CF$UID - 37 - - - CF$UID - 593 - - - CF$UID - 434 - - - CF$UID - 552 - - - CF$UID - 19 - - - CF$UID - 529 - - - CF$UID - 414 - - - CF$UID - 424 - - - CF$UID - 312 - - - CF$UID - 264 - - - CF$UID - 425 - - - CF$UID - 561 - - - CF$UID - 479 - - - CF$UID - 668 - - - CF$UID - 706 - - - CF$UID - 430 - - - CF$UID - 13 - - - CF$UID - 443 - - - CF$UID - 143 - - - CF$UID - 511 - - - CF$UID - 647 - - - CF$UID - 266 - - - CF$UID - 351 - - - CF$UID - 533 - - - CF$UID - 132 - - - CF$UID - 8 - - - CF$UID - 258 - - - CF$UID - 483 - - - CF$UID - 651 - - - CF$UID - 680 - - - - - $classes - - NSArray - NSObject - - $classname - NSArray - - - $class - - CF$UID - 740 - - NS.objects - - - CF$UID - 396 - - - CF$UID - 414 - - - CF$UID - 396 - - - CF$UID - 458 - - - CF$UID - 15 - - - CF$UID - 318 - - - CF$UID - 458 - - - CF$UID - 726 - - - CF$UID - 589 - - - CF$UID - 664 - - - CF$UID - 664 - - - CF$UID - 425 - - - CF$UID - 589 - - - CF$UID - 203 - - - CF$UID - 272 - - - CF$UID - 664 - - - CF$UID - 207 - - - CF$UID - 458 - - - CF$UID - 376 - - - CF$UID - 414 - - - CF$UID - 414 - - - CF$UID - 479 - - - CF$UID - 396 - - - CF$UID - 15 - - - CF$UID - 453 - - - CF$UID - 664 - - - CF$UID - 708 - - - CF$UID - 322 - - - CF$UID - 37 - - - CF$UID - 589 - - - CF$UID - 458 - - - CF$UID - 685 - - - CF$UID - 2 - - - CF$UID - 320 - - - CF$UID - 15 - - - CF$UID - 516 - - - CF$UID - 205 - - - CF$UID - 664 - - - CF$UID - 414 - - - CF$UID - 713 - - - CF$UID - 414 - - - CF$UID - 458 - - - CF$UID - 205 - - - CF$UID - 97 - - - CF$UID - 589 - - - CF$UID - 453 - - - CF$UID - 458 - - - CF$UID - 39 - - - CF$UID - 15 - - - CF$UID - 363 - - - CF$UID - 13 - - - CF$UID - 425 - - - CF$UID - 589 - - - CF$UID - 664 - - - CF$UID - 458 - - - CF$UID - 37 - - - CF$UID - 17 - - - CF$UID - 479 - - - CF$UID - 13 - - - CF$UID - 13 - - - CF$UID - 458 - - - CF$UID - 516 - - - CF$UID - 425 - - - CF$UID - 701 - - - CF$UID - 721 - - - CF$UID - 266 - - - CF$UID - 547 - - - CF$UID - 458 - - - CF$UID - 516 - - - CF$UID - 547 - - - CF$UID - 425 - - - CF$UID - 2 - - - CF$UID - 458 - - - CF$UID - 547 - - - CF$UID - 663 - - - CF$UID - 143 - - - CF$UID - 320 - - - CF$UID - 320 - - - CF$UID - 425 - - - CF$UID - 414 - - - CF$UID - 13 - - - CF$UID - 272 - - - CF$UID - 268 - - - CF$UID - 453 - - - CF$UID - 547 - - - CF$UID - 425 - - - CF$UID - 17 - - - CF$UID - 547 - - - CF$UID - 425 - - - CF$UID - 547 - - - CF$UID - 17 - - - CF$UID - 516 - - - CF$UID - 695 - - - CF$UID - 425 - - - CF$UID - 266 - - - CF$UID - 15 - - - CF$UID - 676 - - - CF$UID - 547 - - - CF$UID - 717 - - - CF$UID - 547 - - - CF$UID - 458 - - - CF$UID - 425 - - - CF$UID - 8 - - - CF$UID - 425 - - - CF$UID - 141 - - - CF$UID - 396 - - - CF$UID - 589 - - - CF$UID - 264 - - - CF$UID - 320 - - - CF$UID - 516 - - - CF$UID - 17 - - - CF$UID - 2 - - - CF$UID - 205 - - - CF$UID - 458 - - - CF$UID - 589 - - - CF$UID - 425 - - - - - $class - - CF$UID - 740 - - NS.objects - - - CF$UID - 664 - - - CF$UID - 452 - - - CF$UID - 419 - - - CF$UID - 132 - - - CF$UID - 205 - - - CF$UID - 538 - - - CF$UID - 322 - - - CF$UID - 367 - - - CF$UID - 39 - - - CF$UID - 424 - - - CF$UID - 268 - - - CF$UID - 713 - - - CF$UID - 453 - - - CF$UID - 356 - - - CF$UID - 347 - - - CF$UID - 413 - - - CF$UID - 8 - - - CF$UID - 19 - - - CF$UID - 376 - - - CF$UID - 488 - - - CF$UID - 126 - - - CF$UID - 101 - - - CF$UID - 15 - - - CF$UID - 371 - - - CF$UID - 468 - - - CF$UID - 43 - - - CF$UID - 414 - - - CF$UID - 312 - - - CF$UID - 326 - - - CF$UID - 700 - - - CF$UID - 211 - - - CF$UID - 282 - - - CF$UID - 730 - - - CF$UID - 351 - - - CF$UID - 141 - - - CF$UID - 695 - - - CF$UID - 97 - - - CF$UID - 258 - - - CF$UID - 272 - - - CF$UID - 396 - - - CF$UID - 249 - - - CF$UID - 203 - - - CF$UID - 143 - - - CF$UID - 378 - - - CF$UID - 681 - - - CF$UID - 447 - - - CF$UID - 293 - - - CF$UID - 2 - - - CF$UID - 145 - - - CF$UID - 207 - - - CF$UID - 668 - - - CF$UID - 669 - - - - - $class - - CF$UID - 740 - - NS.objects - - - CF$UID - 744 - - - CF$UID - 745 - - - CF$UID - 746 - - - CF$UID - 747 - - - CF$UID - 748 - - - CF$UID - 749 - - - CF$UID - 750 - - - CF$UID - 751 - - - CF$UID - 750 - - - CF$UID - 752 - - - CF$UID - 753 - - - CF$UID - 754 - - - CF$UID - 755 - - - CF$UID - 756 - - - CF$UID - 757 - - - CF$UID - 758 - - - CF$UID - 10 - - - CF$UID - 757 - - - CF$UID - 759 - - - CF$UID - 760 - - - CF$UID - 761 - - - CF$UID - 762 - - - CF$UID - 763 - - - CF$UID - 764 - - - CF$UID - 754 - - - CF$UID - 762 - - - CF$UID - 765 - - - CF$UID - 757 - - - CF$UID - 762 - - - CF$UID - 766 - - - CF$UID - 762 - - - CF$UID - 767 - - - CF$UID - 765 - - - CF$UID - 768 - - - CF$UID - 769 - - - CF$UID - 765 - - - CF$UID - 770 - - - CF$UID - 757 - - - CF$UID - 771 - - - CF$UID - 772 - - - CF$UID - 768 - - - CF$UID - 774 - - - CF$UID - 748 - - - CF$UID - 748 - - - CF$UID - 775 - - - CF$UID - 776 - - - CF$UID - 777 - - - CF$UID - 778 - - - CF$UID - 779 - - - CF$UID - 750 - - - CF$UID - 780 - - - CF$UID - 781 - - - - - $class - - CF$UID - 4 - - NS.string - MainMenu - - NSMenuItem2 - - $class - - CF$UID - 4 - - NS.string - 5 - - NSTextField11 - NSView - AppController - NSScrollView2 - NSTextField111 - 1111 - NSScrollView1 - NSMenuItem - NSMenu - NSTextField1 - NSTextField111111 - - $class - - CF$UID - 4 - - NS.string - 6 - - NSBox1 - NSMenuItem1 - NSTextField1 - NSTextView - NSTabView - 11 - - $class - - CF$UID - 4 - - NS.string - - - - $class - - CF$UID - 4 - - NS.string - 2 - - NSTableColumn - NSButton - NSTabViewItem - NSScrollView21 - NSTableView - - $class - - CF$UID - 773 - - - - $classes - - NSNull - %NSNull - NSObject - - $classname - NSNull - - NSTabViewItem1 - 121 - - $class - - CF$UID - 4 - - NS.string - 1 - - NSTableColumn1 - - $class - - CF$UID - 4 - - NS.string - File's Owner - - WebView - 7 - 71 - - $class - - CF$UID - 740 - - NS.objects - - - CF$UID - 326 - - - CF$UID - 101 - - - CF$UID - 43 - - - - - $class - - CF$UID - 740 - - NS.objects - - - CF$UID - 44 - - - CF$UID - 44 - - - CF$UID - 44 - - - - - $class - - CF$UID - 740 - - NS.objects - - - CF$UID - 429 - - - CF$UID - 264 - - - CF$UID - 43 - - - CF$UID - 511 - - - CF$UID - 633 - - - CF$UID - 409 - - - CF$UID - 588 - - - CF$UID - 515 - - - CF$UID - 545 - - - CF$UID - 19 - - - CF$UID - 529 - - - CF$UID - 552 - - - CF$UID - 483 - - - CF$UID - 692 - - - CF$UID - 126 - - - CF$UID - 434 - - - CF$UID - 638 - - - CF$UID - 502 - - - CF$UID - 451 - - - CF$UID - 596 - - - CF$UID - 701 - - - CF$UID - 211 - - - CF$UID - 326 - - - CF$UID - 8 - - - CF$UID - 472 - - - CF$UID - 378 - - - CF$UID - 544 - - - CF$UID - 482 - - - CF$UID - 598 - - - CF$UID - 651 - - - CF$UID - 473 - - - CF$UID - 734 - - - CF$UID - 493 - - - CF$UID - 524 - - - CF$UID - 680 - - - CF$UID - 673 - - - CF$UID - 569 - - - CF$UID - 479 - - - CF$UID - 356 - - - CF$UID - 546 - - - CF$UID - 600 - - - CF$UID - 684 - - - CF$UID - 363 - - - CF$UID - 635 - - - CF$UID - 143 - - - CF$UID - 556 - - - CF$UID - 272 - - - CF$UID - 101 - - - CF$UID - 2 - - - CF$UID - 424 - - - CF$UID - 266 - - - CF$UID - 561 - - - CF$UID - 565 - - - CF$UID - 602 - - - CF$UID - 571 - - - CF$UID - 688 - - - CF$UID - 670 - - - CF$UID - 637 - - - CF$UID - 312 - - - CF$UID - 668 - - - CF$UID - 487 - - - CF$UID - 503 - - - CF$UID - 457 - - - CF$UID - 607 - - - CF$UID - 447 - - - CF$UID - 641 - - - CF$UID - 573 - - - CF$UID - 537 - - - CF$UID - 37 - - - CF$UID - 575 - - - CF$UID - 268 - - - CF$UID - 589 - - - CF$UID - 609 - - - CF$UID - 646 - - - CF$UID - 320 - - - CF$UID - 603 - - - CF$UID - 533 - - - CF$UID - 141 - - - CF$UID - 438 - - - CF$UID - 592 - - - CF$UID - 577 - - - CF$UID - 700 - - - CF$UID - 676 - - - CF$UID - 443 - - - CF$UID - 205 - - - CF$UID - 610 - - - CF$UID - 547 - - - CF$UID - 367 - - - CF$UID - 433 - - - CF$UID - 650 - - - CF$UID - 532 - - - CF$UID - 13 - - - CF$UID - 446 - - - CF$UID - 654 - - - CF$UID - 97 - - - CF$UID - 419 - - - CF$UID - 612 - - - CF$UID - 413 - - - CF$UID - 507 - - - CF$UID - 693 - - - CF$UID - 17 - - - CF$UID - 467 - - - CF$UID - 725 - - - CF$UID - 462 - - - CF$UID - 412 - - - CF$UID - 655 - - - CF$UID - 498 - - - CF$UID - 376 - - - CF$UID - 39 - - - CF$UID - 616 - - - CF$UID - 456 - - - CF$UID - 662 - - - CF$UID - 708 - - - CF$UID - 521 - - - CF$UID - 656 - - - CF$UID - 621 - - - CF$UID - 506 - - - CF$UID - 593 - - - CF$UID - 452 - - - CF$UID - 663 - - - CF$UID - 713 - - - CF$UID - 657 - - - CF$UID - 551 - - - CF$UID - 623 - - - CF$UID - 642 - - - CF$UID - 145 - - - CF$UID - 293 - - - CF$UID - 282 - - - CF$UID - 557 - - - CF$UID - 659 - - - CF$UID - 15 - - - CF$UID - 347 - - - CF$UID - 625 - - - CF$UID - 717 - - - CF$UID - 249 - - - CF$UID - 613 - - - CF$UID - 510 - - - CF$UID - 442 - - - CF$UID - 408 - - - CF$UID - 660 - - - CF$UID - 695 - - - CF$UID - 560 - - - CF$UID - 738 - - - CF$UID - 567 - - - CF$UID - 414 - - - CF$UID - 425 - - - CF$UID - 579 - - - CF$UID - 706 - - - CF$UID - 520 - - - CF$UID - 395 - - - CF$UID - 351 - - - CF$UID - 707 - - - CF$UID - 538 - - - CF$UID - 492 - - - CF$UID - 581 - - - CF$UID - 478 - - - CF$UID - 203 - - - CF$UID - 721 - - - CF$UID - 730 - - - CF$UID - 516 - - - CF$UID - 322 - - - CF$UID - 525 - - - CF$UID - 207 - - - CF$UID - 430 - - - CF$UID - 627 - - - CF$UID - 583 - - - CF$UID - 458 - - - CF$UID - 726 - - - CF$UID - 453 - - - CF$UID - 664 - - - CF$UID - 439 - - - CF$UID - 468 - - - CF$UID - 736 - - - CF$UID - 681 - - - CF$UID - 132 - - - CF$UID - 629 - - - CF$UID - 418 - - - CF$UID - 514 - - - CF$UID - 497 - - - CF$UID - 585 - - - CF$UID - 528 - - - CF$UID - 258 - - - CF$UID - 477 - - - CF$UID - 371 - - - CF$UID - 669 - - - CF$UID - 647 - - - CF$UID - 463 - - - CF$UID - 685 - - - CF$UID - 542 - - - CF$UID - 631 - - - CF$UID - 394 - - - CF$UID - 587 - - - CF$UID - 318 - - - CF$UID - 617 - - - CF$UID - 488 - - - CF$UID - 423 - - - CF$UID - 396 - - - - - $class - - CF$UID - 740 - - NS.objects - - - CF$UID - 786 - - - CF$UID - 787 - - - CF$UID - 788 - - - CF$UID - 789 - - - CF$UID - 790 - - - CF$UID - 791 - - - CF$UID - 792 - - - CF$UID - 793 - - - CF$UID - 794 - - - CF$UID - 795 - - - CF$UID - 796 - - - CF$UID - 797 - - - CF$UID - 798 - - - CF$UID - 799 - - - CF$UID - 800 - - - CF$UID - 801 - - - CF$UID - 802 - - - CF$UID - 803 - - - CF$UID - 804 - - - CF$UID - 805 - - - CF$UID - 806 - - - CF$UID - 807 - - - CF$UID - 808 - - - CF$UID - 809 - - - CF$UID - 810 - - - CF$UID - 811 - - - CF$UID - 812 - - - CF$UID - 813 - - - CF$UID - 814 - - - CF$UID - 815 - - - CF$UID - 816 - - - CF$UID - 817 - - - CF$UID - 818 - - - CF$UID - 819 - - - CF$UID - 820 - - - CF$UID - 821 - - - CF$UID - 822 - - - CF$UID - 823 - - - CF$UID - 824 - - - CF$UID - 825 - - - CF$UID - 826 - - - CF$UID - 827 - - - CF$UID - 828 - - - CF$UID - 829 - - - CF$UID - 830 - - - CF$UID - 831 - - - CF$UID - 832 - - - CF$UID - 833 - - - CF$UID - 834 - - - CF$UID - 835 - - - CF$UID - 836 - - - CF$UID - 837 - - - CF$UID - 838 - - - CF$UID - 839 - - - CF$UID - 840 - - - CF$UID - 841 - - - CF$UID - 842 - - - CF$UID - 843 - - - CF$UID - 844 - - - CF$UID - 845 - - - CF$UID - 846 - - - CF$UID - 847 - - - CF$UID - 848 - - - CF$UID - 849 - - - CF$UID - 850 - - - CF$UID - 851 - - - CF$UID - 852 - - - CF$UID - 853 - - - CF$UID - 854 - - - CF$UID - 855 - - - CF$UID - 856 - - - CF$UID - 857 - - - CF$UID - 858 - - - CF$UID - 859 - - - CF$UID - 860 - - - CF$UID - 861 - - - CF$UID - 862 - - - CF$UID - 863 - - - CF$UID - 864 - - - CF$UID - 865 - - - CF$UID - 866 - - - CF$UID - 867 - - - CF$UID - 868 - - - CF$UID - 869 - - - CF$UID - 870 - - - CF$UID - 871 - - - CF$UID - 872 - - - CF$UID - 873 - - - CF$UID - 874 - - - CF$UID - 875 - - - CF$UID - 876 - - - CF$UID - 877 - - - CF$UID - 878 - - - CF$UID - 879 - - - CF$UID - 880 - - - CF$UID - 881 - - - CF$UID - 882 - - - CF$UID - 883 - - - CF$UID - 884 - - - CF$UID - 885 - - - CF$UID - 886 - - - CF$UID - 887 - - - CF$UID - 888 - - - CF$UID - 889 - - - CF$UID - 890 - - - CF$UID - 891 - - - CF$UID - 892 - - - CF$UID - 893 - - - CF$UID - 894 - - - CF$UID - 895 - - - CF$UID - 896 - - - CF$UID - 897 - - - CF$UID - 898 - - - CF$UID - 899 - - - CF$UID - 900 - - - CF$UID - 901 - - - CF$UID - 902 - - - CF$UID - 903 - - - CF$UID - 904 - - - CF$UID - 905 - - - CF$UID - 906 - - - CF$UID - 907 - - - CF$UID - 908 - - - CF$UID - 909 - - - CF$UID - 910 - - - CF$UID - 911 - - - CF$UID - 912 - - - CF$UID - 913 - - - CF$UID - 914 - - - CF$UID - 915 - - - CF$UID - 916 - - - CF$UID - 917 - - - CF$UID - 918 - - - CF$UID - 919 - - - CF$UID - 920 - - - CF$UID - 921 - - - CF$UID - 922 - - - CF$UID - 923 - - - CF$UID - 924 - - - CF$UID - 925 - - - CF$UID - 926 - - - CF$UID - 927 - - - CF$UID - 928 - - - CF$UID - 929 - - - CF$UID - 930 - - - CF$UID - 931 - - - CF$UID - 932 - - - CF$UID - 933 - - - CF$UID - 934 - - - CF$UID - 935 - - - CF$UID - 936 - - - CF$UID - 937 - - - CF$UID - 938 - - - CF$UID - 939 - - - CF$UID - 940 - - - CF$UID - 941 - - - CF$UID - 942 - - - CF$UID - 943 - - - CF$UID - 944 - - - CF$UID - 945 - - - CF$UID - 946 - - - CF$UID - 947 - - - CF$UID - 948 - - - CF$UID - 949 - - - CF$UID - 950 - - - CF$UID - 951 - - - CF$UID - 952 - - - CF$UID - 953 - - - CF$UID - 954 - - - CF$UID - 955 - - - CF$UID - 956 - - - CF$UID - 957 - - - CF$UID - 958 - - - CF$UID - 959 - - - CF$UID - 960 - - - CF$UID - 961 - - - CF$UID - 962 - - - CF$UID - 963 - - - CF$UID - 964 - - - CF$UID - 965 - - - CF$UID - 966 - - - CF$UID - 967 - - - CF$UID - 968 - - - CF$UID - 969 - - - CF$UID - 970 - - - CF$UID - 971 - - - CF$UID - 972 - - - CF$UID - 973 - - - CF$UID - 974 - - - CF$UID - 975 - - - CF$UID - 976 - - - CF$UID - 977 - - - CF$UID - 978 - - - CF$UID - 979 - - - CF$UID - 980 - - - CF$UID - 981 - - - CF$UID - 982 - - - - 142 - 339 - 363 - 239 - 376 - 5 - 323 - 209 - 274 - 361 - 221 - 276 - 199 - 144 - 406 - 145 - 382 - 233 - 222 - 335 - 217 - 334 - 358 - 21 - 226 - 315 - 256 - 228 - 336 - 389 - 203 - 401 - 215 - 243 - 236 - 400 - 285 - 212 - 396 - 269 - 337 - 143 - 356 - 377 - 303 - 279 - 345 - 364 - 1 - 136 - 340 - 281 - 283 - 338 - 306 - 130 - 330 - 383 - 379 - 277 - 230 - 196 - 207 - 346 - 73 - 384 - 307 - 254 - 366 - 308 - 342 - 322 - 347 - 387 - 353 - 325 - 210 - 299 - 152 - 332 - 309 - 74 - 56 - 150 - 302 - 349 - 271 - 291 - 146 - 390 - 245 - 2 - 193 - 391 - 365 - 77 - 368 - 78 - 202 - 149 - 357 - 225 - 388 - 224 - 86 - 392 - 198 - 316 - 362 - 369 - 223 - 399 - 218 - 208 - 393 - 370 - 235 - 331 - 219 - 270 - 216 - 394 - 278 - 371 - 381 - 305 - 344 - 343 - 272 - 395 - 300 - 360 - 372 - 211 - 341 - 367 - 240 - 153 - 39 - 397 - 83 - 282 - 410 - 284 - 81 - 57 - 310 - 206 - 242 - 23 - 385 - 214 - 253 - 231 - 311 - 195 - 301 - 324 - 92 - 220 - 359 - 213 - 333 - 58 - 373 - 312 - 205 - 19 - 200 - 29 - 134 - 201 - 409 - 129 - 408 - 374 - 87 - 241 - 232 - 314 - 244 - 380 - 227 - 313 - 280 - 386 - 197 - 131 - 255 - 375 - 37 - 328 - 352 - 348 - 204 - 139 - 24 - - $classes - - NSIBObjectData - NSObject - - $classname - NSIBObjectData - - - $top - - IB.objectdata - - CF$UID - 1 - - - $version - 100000 - - diff --git a/sopex/SOPEX/Info.plist b/sopex/SOPEX/Info.plist index 47bfdb45..7fc489fa 100644 --- a/sopex/SOPEX/Info.plist +++ b/sopex/SOPEX/Info.plist @@ -17,7 +17,7 @@ CFBundleSignature ???? CFBundleVersion - 1.0 + 2.0 NSPrincipalClass diff --git a/sopex/SOPEX/NSBundle+Ext.h b/sopex/SOPEX/NSBundle+Ext.h index 60df947a..1f271cbd 100644 --- a/sopex/SOPEX/NSBundle+Ext.h +++ b/sopex/SOPEX/NSBundle+Ext.h @@ -18,11 +18,11 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -// $Id: NSBundle+Ext.h 1 2004-08-20 11:17:52Z znek $ +// $Id: NSBundle+Ext.h,v 1.1 2004/05/02 16:27:46 znek Exp $ // Created by znek on Sun May 02 2004. -#ifndef __NSBundle_Ext_H_ -#define __NSBundle_Ext_H_ +#ifndef __SOPEX_NSBundle_Ext_H_ +#define __SOPEX_NSBundle_Ext_H_ #import @@ -33,4 +33,4 @@ @end -#endif /* __NSBundle+Ext_H_ */ +#endif /* __SOPEX_NSBundle+Ext_H_ */ diff --git a/sopex/SOPEX/NSBundle+Ext.m b/sopex/SOPEX/NSBundle+Ext.m index 3c7f40c0..7bdb6bc3 100644 --- a/sopex/SOPEX/NSBundle+Ext.m +++ b/sopex/SOPEX/NSBundle+Ext.m @@ -18,7 +18,7 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -// $Id: NSBundle+Ext.m 1 2004-08-20 11:17:52Z znek $ +// $Id: NSBundle+Ext.m,v 1.1 2004/05/02 16:27:46 znek Exp $ // Created by znek on Sun May 02 2004. diff --git a/sopex/SOPEX/NSString+Ext.h b/sopex/SOPEX/NSString+Ext.h index 3b8892ab..5f6ab18b 100644 --- a/sopex/SOPEX/NSString+Ext.h +++ b/sopex/SOPEX/NSString+Ext.h @@ -1,28 +1,26 @@ /* - Copyright (C) 2004 Marcus Mueller + Copyright (C) 2004 Marcus Mueller - This file is part of OGo + This file is part of OpenGroupware.org. - OGo is free software; you can redistribute it and/or modify it under - the terms of the GNU Lesser General Public License as published by the - Free Software Foundation; either version 2, or (at your option) any - later version. + OGo is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by the + Free Software Foundation; either version 2, or (at your option) any + later version. - OGo is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - License for more details. + OGo is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public + License for more details. - You should have received a copy of the GNU Lesser General Public - License along with OGo; see the file COPYING. If not, write to the - Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. - */ -// $Id: NSString+Ext.h 1 2004-08-20 11:17:52Z znek $ -// Created by znek on Mon Mar 22 2004. + You should have received a copy of the GNU Lesser General Public + License along with OGo; see the file COPYING. If not, write to the + Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA + 02111-1307, USA. +*/ -#ifndef __NSString_Ext_H_ -#define __NSString_Ext_H_ +#ifndef __SOPEX_NSString_Ext_H_ +#define __SOPEX_NSString_Ext_H_ #import @@ -33,4 +31,4 @@ @end -#endif /* __NSString_Ext_H_ */ +#endif /* __SOPEX_NSString_Ext_H_ */ diff --git a/sopex/SOPEX/NSString+Ext.m b/sopex/SOPEX/NSString+Ext.m index fc1fa0cb..41548eec 100644 --- a/sopex/SOPEX/NSString+Ext.m +++ b/sopex/SOPEX/NSString+Ext.m @@ -18,7 +18,7 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -// $Id: NSString+Ext.m 1 2004-08-20 11:17:52Z znek $ +// $Id: NSString+Ext.m,v 1.2 2004/05/02 16:27:46 znek Exp $ // Created by znek on Mon Mar 22 2004. #import "NSString+Ext.h" diff --git a/sopex/SOPEX/PROJECTLEAD b/sopex/SOPEX/PROJECTLEAD index 2e60ed5f..77ff621c 100644 --- a/sopex/SOPEX/PROJECTLEAD +++ b/sopex/SOPEX/PROJECTLEAD @@ -1,3 +1,3 @@ -# $Id: PROJECTLEAD 1 2004-08-20 11:17:52Z znek $ +# $Id: PROJECTLEAD,v 1.1 2004/02/16 13:23:55 znek Exp $ PROJECTLEAD=znek@mulle-kybernetik.com diff --git a/sopex/SOPEX/README b/sopex/SOPEX/README index ab3a6187..ccb03531 100644 --- a/sopex/SOPEX/README +++ b/sopex/SOPEX/README @@ -1,4 +1,4 @@ -# $Id: README 1 2004-08-20 11:17:52Z znek $ +# $Id: README,v 1.5 2004/04/09 18:53:02 znek Exp $ ABSTRACT @@ -16,38 +16,15 @@ functional stand-alone HTML applications. PREREQUISITES ============= -SOPEX depends on the following frameworks to be properly installed: - -a) SxXML -b) SxCore -c) SOPE - -Please note that in order for SOPE to run properly you need to have -installed at least one SaxDriver in /Library/SaxDrivers. The SOPE -installer should take care of this, however. +SOPEX depends on SOPE being installed. Please read the accompanied +documentation for details. DEBUGGING ========= -When debugging SOPEX apps in Xcode, you'll pretty soon experience that -gdb doesn't attach to the process you're expecting to ... that is because -gdb attaches itself to the frontmost process which is the application wrapper. -The web application is a process which gets forked off the application -wrapper. So if you want to debug the web process, you have two options: - -a) attach gdb to this process manually (the process's pid is available from the -statistics panel) -b) launch the application from Xcode with the --daemon option set. Something -like this will do the trick (all arguments in a single row): ---daemon -WOProjectDirectory -/Network/Users/znek/Projects/unchecked/znek/MulleCMS2/ -WOCachingEnabled NO --WODebuggingEnabled YES -WODebugComponentLookup YES - -It's totally clear to me that a) and b) aren't perfect. A perfect solution -would probably be to attach gdb on demand (via a menu command). I don't know -if Xcode is scriptable enough to do this. Someone with more knowledge on the -subject please elaborate! +Unlike in 1.x, SOPEX 2.x applications are single process which means you can +debug them using gdb (in Xcode or using the command line) as any other project. USEFUL DEBUGGING DEFAULTS @@ -61,10 +38,6 @@ will work as well. if set, forces the child process to be launched on this specific port. Useful for debugging with tcpdump. --SNSPort : - if set, forces the parent process to listen on this port number for - SNS connections. Useful for debugging with tcpdump. - -SOPEXDebugEnabled : Global debug message trigger. @@ -72,15 +45,6 @@ will work as well. Use this to trigger debug messages in SOPEXWebConnection. -TODO -==== - -- preferences (optional debugging options, etc.) -- session statistics, resource consumption (real mem, virtual mem) -- working auth panel -- SOPEXBrowserWindow: make favIcon work - - Known BUGS ========== diff --git a/sopex/SOPEX/SOPEX.h b/sopex/SOPEX/SOPEX.h index ce5591d1..6e485aab 100644 --- a/sopex/SOPEX/SOPEX.h +++ b/sopex/SOPEX/SOPEX.h @@ -18,7 +18,7 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -// $Id: SOPEX.h 1 2004-08-20 11:17:52Z znek $ +// $Id: SOPEX.h,v 1.3 2004/06/05 21:49:26 znek Exp $ // Created by znek on Fri Feb 13 2004. #ifndef __SOPEX_H_ @@ -26,24 +26,22 @@ #import -#import "SOPEXAppController.h" -#import "SOPEXApplication.h" -#import "SOPEXAuthPanel.h" -#import "SOPEXBrowserWindow.h" -#import "SOPEXConsole.h" -#import "SOPEXConstants.h" -#import "SOPEXContentValidator.h" -#import "SOPEXDocument.h" -#import "SOPEXMain.h" -#import "SOPEXRangeUtilities.h" -#import "SOPEXSNSController.h" -#import "SOPEXSheetRunner.h" -#import "SOPEXStatisticsController.h" -#import "SOPEXTextView.h" -#import "SOPEXToolbarController.h" -#import "SOPEXWODocument.h" -#import "SOPEXWOXDocument.h" -#import "SOPEXWebConnection.h" -#import "SOPEXWebMetaParser.h" +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import #endif /* __SOPEX_H_ */ diff --git a/sopex/SOPEX/SOPEX.xcode/project.pbxproj b/sopex/SOPEX/SOPEX.xcode/project.pbxproj index ac3585b2..3e8224c8 100644 --- a/sopex/SOPEX/SOPEX.xcode/project.pbxproj +++ b/sopex/SOPEX/SOPEX.xcode/project.pbxproj @@ -8,13 +8,8 @@ 014CEA440018CDF011CA2923 = { buildSettings = { COPY_PHASE_STRIP = NO; - DEBUGGING_SYMBOLS = YES; - GCC_DYNAMIC_NO_PIC = NO; - GCC_ENABLE_FIX_AND_CONTINUE = YES; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; GCC_OPTIMIZATION_LEVEL = 0; - OPTIMIZATION_CFLAGS = "-O0"; - ZERO_LINK = YES; }; isa = PBXBuildStyle; name = Development; @@ -22,11 +17,23 @@ 014CEA450018CDF011CA2923 = { buildSettings = { COPY_PHASE_STRIP = YES; + DEPLOYMENT_LOCATION = NO; + DEPLOYMENT_POSTPROCESSING = YES; + DSTROOT = /; + DYLIB_INSTALL_NAME_BASE = "@executable_path/../Frameworks/"; + FRAMEWORK_SEARCH_PATHS = "$(USER_LIBRARY_DIR)/EmbeddedFrameworks"; GCC_ENABLE_FIX_AND_CONTINUE = NO; + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = "APPLE_RUNTIME=1 NeXT_Foundation_LIBRARY=1 COCOA_Foundation_LIBRARY=1 NeXT_RUNTIME=1 COMPILE_AS_FRAMEWORK=1"; + SKIP_INSTALL = YES; + SYMROOT = "$(USER_LIBRARY_DIR)/EmbeddedFrameworks"; + TEMP_DIR = "$(SYMROOT)/$(PROJECT_NAME).build"; + UNSTRIPPED_PRODUCT = NO; ZERO_LINK = NO; }; isa = PBXBuildStyle; - name = Deployment; + name = Wrapper; }; //010 //011 @@ -76,6 +83,8 @@ 0867D691FE84028FC02AAC07 = { children = ( ADDFB3F305DC513A005FB28D, + ADB2D6E407565D8500A22ED7, + ADB2D6E207565D7800A22ED7, ADDFB3FB05DC51F6005FB28D, ADDFB3FD05DC521A005FB28D, ADDFB3F505DC517A005FB28D, @@ -100,10 +109,11 @@ 0867D69AFE84028FC02AAC07 = { children = ( 1058C7B1FEA5585E11CA2CBB, - ADDFB3D305DC50BD005FB28D, - ADDFB3D405DC50BD005FB28D, - ADDFB3D205DC50BD005FB28D, ADDFB3B205DC508E005FB28D, + ADA28BEB07537596009E5623, + ADA28BF10753759F009E5623, + ADA28BEE0753759B009E5623, + ADA28BF4075375A3009E5623, ); isa = PBXGroup; name = Frameworks; @@ -112,7 +122,7 @@ }; 089C1665FE841158C02AAC07 = { children = ( - ADDFB41D05DC532D005FB28D, + AD7FDDFD069EE59A00B1BC36, ADDFB41B05DC532D005FB28D, ADDFB42105DC532D005FB28D, 8DC2EF5A0486A6940098B216, @@ -155,6 +165,8 @@ ADDFB37405DC4E58005FB28D, ADDFB37505DC4E58005FB28D, ); + fileEncoding = 5; + indentWidth = 2; isa = PBXGroup; name = "Misc Debris"; refType = 4; @@ -193,6 +205,8 @@ ADEE3DAB05DCFD0800F523DB, ADEE3D8705DCF8C800F523DB, ); + fileEncoding = 5; + indentWidth = 2; isa = PBXGroup; name = "Other Sources"; refType = 4; @@ -200,9 +214,10 @@ }; 32DBCF5E0370ADEE00C91783 = { fileEncoding = 4; + indentWidth = 2; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; - path = SOPEX_Prefix.pch; + path = common.h; refType = 4; sourceTree = ""; }; @@ -227,15 +242,15 @@ buildRules = ( ); buildSettings = { - CURRENT_PROJECT_VERSION = 1.0.9; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1.0.9; + CURRENT_PROJECT_VERSION = 2.0.0; + DYLIB_COMPATIBILITY_VERSION = 2.0.0; + DYLIB_CURRENT_VERSION = 2.0.0; FRAMEWORK_SEARCH_PATHS = "$(LOCAL_LIBRARY_DIR)/Frameworks"; FRAMEWORK_VERSION = A; GCC_ENABLE_TRIGRAPHS = NO; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = SOPEX_Prefix.pch; + GCC_PREFIX_HEADER = common.h; GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO; GCC_WARN_FOUR_CHARACTER_CONSTANTS = NO; GCC_WARN_UNKNOWN_PRAGMAS = NO; @@ -244,7 +259,8 @@ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; LIBRARY_SEARCH_PATHS = ""; LIBRARY_STYLE = Dynamic; - OTHER_LDFLAGS = "-seg1addr 0xC6FF0000 -sub_umbrella SxCore -sub_umbrella SxXML -sub_umbrella SOPE -headerpad_max_install_names"; + OTHER_CFLAGS = "-DNeXT_RUNTIME=1 -DAPPLE_RUNTIME=1 -DNeXT_Foundation_LIBRARY=1 -DCOCOA_Foundation_LIBRARY=1"; + OTHER_LDFLAGS = "-seg1addr 0xC6FF0000 -headerpad_max_install_names"; PRODUCT_NAME = SOPEX; SECTORDER_FLAGS = ""; WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas"; @@ -253,7 +269,7 @@ dependencies = ( ); isa = PBXNativeTarget; - name = "SOPEX (Umbrella)"; + name = SOPEX; productInstallPath = "$(HOME)/Library/Frameworks"; productName = SOPEX; productReference = 8DC2EF5B0486A6940098B216; @@ -265,7 +281,6 @@ 8DC2EF510486A6940098B216, ADDFB36105DC4D7B005FB28D, ADDFB36305DC4D7B005FB28D, - ADDFB36705DC4D7B005FB28D, ADDFB36905DC4D7B005FB28D, ADDFB36B05DC4D7B005FB28D, ADDFB36D05DC4D7B005FB28D, @@ -274,7 +289,6 @@ ADDFB45305DC5555005FB28D, ADDFB49105DC5A05005FB28D, ADEE3DAD05DCFD0800F523DB, - ADEE3DB105DCFE0600F523DB, AD92104C060F3A01001C0B56, AD3FED13060F53C200A90173, AD3FED17060F554300A90173, @@ -286,6 +300,7 @@ ADB592E8061C598E0094D980, AD81AD030621878E00550A49, ADD5D7C606453B3400CCCB8C, + AD2289EB069EC43900B9E12F, ); isa = PBXHeadersBuildPhase; runOnlyForDeploymentPostprocessing = 0; @@ -310,12 +325,13 @@ ADDFB3FC05DC51F6005FB28D, ADDFB3FE05DC521A005FB28D, ADDFB42305DC532D005FB28D, - ADDFB42405DC532D005FB28D, ADDFB42505DC532D005FB28D, ADDFB42605DC532D005FB28D, AD0A625A05FE1D5F0067C575, AD0A625C05FE20950067C575, AD5C3D2606454EFD00E9BFC5, + AD7FDDFF069EE59A00B1BC36, + ADB2D6E307565D7800A22ED7, ); isa = PBXResourcesBuildPhase; runOnlyForDeploymentPostprocessing = 0; @@ -331,7 +347,6 @@ files = ( ADDFB36205DC4D7B005FB28D, ADDFB36405DC4D7B005FB28D, - ADDFB36805DC4D7B005FB28D, ADDFB36A05DC4D7B005FB28D, ADDFB36C05DC4D7B005FB28D, ADDFB36E05DC4D7B005FB28D, @@ -339,7 +354,6 @@ ADDFB37905DC4E58005FB28D, ADDFB45405DC5555005FB28D, ADEE3D8805DCF8C800F523DB, - ADEE3DB205DCFE0600F523DB, AD92104D060F3A02001C0B56, AD3FED14060F53C200A90173, AD3FED18060F554300A90173, @@ -351,6 +365,9 @@ ADB592E9061C598E0094D980, AD81AD040621878E00550A49, ADD5D7C706453B3400CCCB8C, + AD2289EC069EC43900B9E12F, + ADB2C74B0754D6AD00A22ED7, + ADB2D3630754E31300A22ED7, ); isa = PBXSourcesBuildPhase; runOnlyForDeploymentPostprocessing = 0; @@ -360,9 +377,20 @@ files = ( 8DC2EF570486A6940098B216, ADDFB3B305DC508E005FB28D, - ADDFB3D505DC50BD005FB28D, - ADDFB3D605DC50BD005FB28D, - ADDFB3D705DC50BD005FB28D, + ADA28C0907537617009E5623, + ADA28C0A07537617009E5623, + ADA28C0B07537617009E5623, + ADA28C0C07537617009E5623, + ADA28C0D07537617009E5623, + ADA28C0E07537617009E5623, + ADA28C0F07537617009E5623, + ADA28C1107537617009E5623, + ADA28C1207537617009E5623, + ADA28C1307537617009E5623, + ADA28C1407537617009E5623, + ADA28C1507537617009E5623, + ADA28C1607537617009E5623, + ADA28C1707537617009E5623, ); isa = PBXFrameworksBuildPhase; runOnlyForDeploymentPostprocessing = 0; @@ -474,6 +502,34 @@ settings = { }; }; + AD2289E9069EC43900B9E12F = { + fileEncoding = 4; + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; + path = SOPEXBrowserController.h; + refType = 4; + sourceTree = ""; + }; + AD2289EA069EC43900B9E12F = { + fileEncoding = 4; + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.objc; + path = SOPEXBrowserController.m; + refType = 4; + sourceTree = ""; + }; + AD2289EB069EC43900B9E12F = { + fileRef = AD2289E9069EC43900B9E12F; + isa = PBXBuildFile; + settings = { + }; + }; + AD2289EC069EC43900B9E12F = { + fileRef = AD2289EA069EC43900B9E12F; + isa = PBXBuildFile; + settings = { + }; + }; AD3FED11060F53C200A90173 = { fileEncoding = 4; isa = PBXFileReference; @@ -542,6 +598,8 @@ ADB592E6061C598E0094D980, ADB592E7061C598E0094D980, ); + fileEncoding = 5; + indentWidth = 2; isa = PBXGroup; name = Widgets; refType = 4; @@ -549,6 +607,7 @@ }; AD3FED1E060F556C00A90173 = { children = ( + ADB2C73F0754D68300A22ED7, AD92104A060F3A01001C0B56, AD92104B060F3A01001C0B56, AD3FED11060F53C200A90173, @@ -558,6 +617,8 @@ AD1800B90610B3A800ED723F, AD1800BA0610B3A800ED723F, ); + fileEncoding = 5; + indentWidth = 2; isa = PBXGroup; name = Extensions; refType = 4; @@ -565,14 +626,12 @@ }; AD3FED21060F558A00A90173 = { children = ( - ADEE3DAF05DCFE0600F523DB, - ADEE3DB005DCFE0600F523DB, ADDFB35405DC4D7B005FB28D, ADDFB35505DC4D7B005FB28D, + AD2289E9069EC43900B9E12F, + AD2289EA069EC43900B9E12F, ADDFB35205DC4D7B005FB28D, ADDFB35305DC4D7B005FB28D, - ADDFB35805DC4D7B005FB28D, - ADDFB35905DC4D7B005FB28D, ADDFB35A05DC4D7B005FB28D, ADDFB35B05DC4D7B005FB28D, ADDFB35E05DC4D7B005FB28D, @@ -582,6 +641,8 @@ ADDCA0C90618850C00DEBECD, ADDCA0CA0618850C00DEBECD, ); + fileEncoding = 5; + indentWidth = 2; isa = PBXGroup; name = Controllers; refType = 4; @@ -611,6 +672,30 @@ settings = { }; }; + AD7FDDFD069EE59A00B1BC36 = { + children = ( + AD7FDDFE069EE59A00B1BC36, + ); + isa = PBXVariantGroup; + name = SOPEXBrowserController.nib; + path = ""; + refType = 4; + sourceTree = ""; + }; + AD7FDDFE069EE59A00B1BC36 = { + isa = PBXFileReference; + lastKnownFileType = wrapper.nib; + name = SOPEXBrowserController.nib; + path = English.lproj/SOPEXBrowserController.nib; + refType = 4; + sourceTree = ""; + }; + AD7FDDFF069EE59A00B1BC36 = { + fileRef = AD7FDDFD069EE59A00B1BC36; + isa = PBXBuildFile; + settings = { + }; + }; AD81AD010621878E00550A49 = { fileEncoding = 4; isa = PBXFileReference; @@ -670,6 +755,308 @@ settings = { }; }; + ADA28BEB07537596009E5623 = { + children = ( + ADA28C0507537617009E5623, + ADA28BFA07537617009E5623, + ADA28C0807537617009E5623, + ); + isa = PBXGroup; + name = "sope-xml"; + refType = 4; + sourceTree = ""; + }; + ADA28BEE0753759B009E5623 = { + children = ( + ADA28BFD07537617009E5623, + ADA28C0207537617009E5623, + ADA28C0307537617009E5623, + ADA28C0407537617009E5623, + ADA28C0607537617009E5623, + ADA28C0707537617009E5623, + ); + isa = PBXGroup; + name = "sope-appserver"; + refType = 4; + sourceTree = ""; + }; + ADA28BF10753759F009E5623 = { + children = ( + ADA28BFB07537617009E5623, + ADA28BFC07537617009E5623, + ); + isa = PBXGroup; + name = "sope-core"; + refType = 4; + sourceTree = ""; + }; + ADA28BF4075375A3009E5623 = { + children = ( + ADA28BFE07537617009E5623, + ADA28BFF07537617009E5623, + ADA28C0007537617009E5623, + ); + isa = PBXGroup; + name = "sope-mime"; + refType = 4; + sourceTree = ""; + }; + ADA28BFA07537617009E5623 = { + isa = PBXFileReference; + lastKnownFileType = wrapper.framework; + name = DOM.framework; + path = "$(USER_LIBRARY_DIR)/EmbeddedFrameworks/DOM.framework"; + refType = 0; + sourceTree = ""; + }; + ADA28BFB07537617009E5623 = { + isa = PBXFileReference; + lastKnownFileType = wrapper.framework; + name = EOControl.framework; + path = "$(USER_LIBRARY_DIR)/EmbeddedFrameworks/EOControl.framework"; + refType = 0; + sourceTree = ""; + }; + ADA28BFC07537617009E5623 = { + isa = PBXFileReference; + lastKnownFileType = wrapper.framework; + name = NGExtensions.framework; + path = "$(USER_LIBRARY_DIR)/EmbeddedFrameworks/NGExtensions.framework"; + refType = 0; + sourceTree = ""; + }; + ADA28BFD07537617009E5623 = { + isa = PBXFileReference; + lastKnownFileType = wrapper.framework; + name = NGHttp.framework; + path = "$(USER_LIBRARY_DIR)/EmbeddedFrameworks/NGHttp.framework"; + refType = 0; + sourceTree = ""; + }; + ADA28BFE07537617009E5623 = { + isa = PBXFileReference; + lastKnownFileType = wrapper.framework; + name = NGImap4.framework; + path = "$(USER_LIBRARY_DIR)/EmbeddedFrameworks/NGImap4.framework"; + refType = 0; + sourceTree = ""; + }; + ADA28BFF07537617009E5623 = { + isa = PBXFileReference; + lastKnownFileType = wrapper.framework; + name = NGMail.framework; + path = "$(USER_LIBRARY_DIR)/EmbeddedFrameworks/NGMail.framework"; + refType = 0; + sourceTree = ""; + }; + ADA28C0007537617009E5623 = { + isa = PBXFileReference; + lastKnownFileType = wrapper.framework; + name = NGMime.framework; + path = "$(USER_LIBRARY_DIR)/EmbeddedFrameworks/NGMime.framework"; + refType = 0; + sourceTree = ""; + }; + ADA28C0207537617009E5623 = { + isa = PBXFileReference; + lastKnownFileType = wrapper.framework; + name = NGObjWeb.framework; + path = "$(USER_LIBRARY_DIR)/EmbeddedFrameworks/NGObjWeb.framework"; + refType = 0; + sourceTree = ""; + }; + ADA28C0307537617009E5623 = { + isa = PBXFileReference; + lastKnownFileType = wrapper.framework; + name = NGStreams.framework; + path = "$(USER_LIBRARY_DIR)/EmbeddedFrameworks/NGStreams.framework"; + refType = 0; + sourceTree = ""; + }; + ADA28C0407537617009E5623 = { + isa = PBXFileReference; + lastKnownFileType = wrapper.framework; + name = NGXmlRpc.framework; + path = "$(USER_LIBRARY_DIR)/EmbeddedFrameworks/NGXmlRpc.framework"; + refType = 0; + sourceTree = ""; + }; + ADA28C0507537617009E5623 = { + isa = PBXFileReference; + lastKnownFileType = wrapper.framework; + name = SaxObjC.framework; + path = "$(USER_LIBRARY_DIR)/EmbeddedFrameworks/SaxObjC.framework"; + refType = 0; + sourceTree = ""; + }; + ADA28C0607537617009E5623 = { + isa = PBXFileReference; + lastKnownFileType = wrapper.framework; + name = SoObjects.framework; + path = "$(USER_LIBRARY_DIR)/EmbeddedFrameworks/SoObjects.framework"; + refType = 0; + sourceTree = ""; + }; + ADA28C0707537617009E5623 = { + isa = PBXFileReference; + lastKnownFileType = wrapper.framework; + name = WebDAV.framework; + path = "$(USER_LIBRARY_DIR)/EmbeddedFrameworks/WebDAV.framework"; + refType = 0; + sourceTree = ""; + }; + ADA28C0807537617009E5623 = { + isa = PBXFileReference; + lastKnownFileType = wrapper.framework; + name = XmlRpc.framework; + path = "$(USER_LIBRARY_DIR)/EmbeddedFrameworks/XmlRpc.framework"; + refType = 0; + sourceTree = ""; + }; + ADA28C0907537617009E5623 = { + fileRef = ADA28BFA07537617009E5623; + isa = PBXBuildFile; + settings = { + }; + }; + ADA28C0A07537617009E5623 = { + fileRef = ADA28BFB07537617009E5623; + isa = PBXBuildFile; + settings = { + }; + }; + ADA28C0B07537617009E5623 = { + fileRef = ADA28BFC07537617009E5623; + isa = PBXBuildFile; + settings = { + }; + }; + ADA28C0C07537617009E5623 = { + fileRef = ADA28BFD07537617009E5623; + isa = PBXBuildFile; + settings = { + }; + }; + ADA28C0D07537617009E5623 = { + fileRef = ADA28BFE07537617009E5623; + isa = PBXBuildFile; + settings = { + }; + }; + ADA28C0E07537617009E5623 = { + fileRef = ADA28BFF07537617009E5623; + isa = PBXBuildFile; + settings = { + }; + }; + ADA28C0F07537617009E5623 = { + fileRef = ADA28C0007537617009E5623; + isa = PBXBuildFile; + settings = { + }; + }; + ADA28C1107537617009E5623 = { + fileRef = ADA28C0207537617009E5623; + isa = PBXBuildFile; + settings = { + }; + }; + ADA28C1207537617009E5623 = { + fileRef = ADA28C0307537617009E5623; + isa = PBXBuildFile; + settings = { + }; + }; + ADA28C1307537617009E5623 = { + fileRef = ADA28C0407537617009E5623; + isa = PBXBuildFile; + settings = { + }; + }; + ADA28C1407537617009E5623 = { + fileRef = ADA28C0507537617009E5623; + isa = PBXBuildFile; + settings = { + }; + }; + ADA28C1507537617009E5623 = { + fileRef = ADA28C0607537617009E5623; + isa = PBXBuildFile; + settings = { + }; + }; + ADA28C1607537617009E5623 = { + fileRef = ADA28C0707537617009E5623; + isa = PBXBuildFile; + settings = { + }; + }; + ADA28C1707537617009E5623 = { + fileRef = ADA28C0807537617009E5623; + isa = PBXBuildFile; + settings = { + }; + }; + ADB2C73F0754D68300A22ED7 = { + children = ( + ADB2C7490754D6AD00A22ED7, + ADB2D3610754E31300A22ED7, + ); + isa = PBXGroup; + name = NGLogging; + refType = 4; + sourceTree = ""; + }; + ADB2C7490754D6AD00A22ED7 = { + fileEncoding = 4; + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.objc; + path = SOPEXConsoleAppender.m; + refType = 4; + sourceTree = ""; + }; + ADB2C74B0754D6AD00A22ED7 = { + fileRef = ADB2C7490754D6AD00A22ED7; + isa = PBXBuildFile; + settings = { + }; + }; + ADB2D3610754E31300A22ED7 = { + fileEncoding = 4; + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.objc; + path = SOPEXConsoleEventFormatter.m; + refType = 4; + sourceTree = ""; + }; + ADB2D3630754E31300A22ED7 = { + fileRef = ADB2D3610754E31300A22ED7; + isa = PBXBuildFile; + settings = { + }; + }; + ADB2D6E207565D7800A22ED7 = { + fileEncoding = 4; + isa = PBXFileReference; + lastKnownFileType = text; + path = TODO; + refType = 4; + sourceTree = ""; + }; + ADB2D6E307565D7800A22ED7 = { + fileRef = ADB2D6E207565D7800A22ED7; + isa = PBXBuildFile; + settings = { + }; + }; + ADB2D6E407565D8500A22ED7 = { + fileEncoding = 4; + isa = PBXFileReference; + lastKnownFileType = text; + path = CHANGES; + refType = 4; + sourceTree = ""; + }; ADB592E6061C598E0094D980 = { fileEncoding = 4; isa = PBXFileReference; @@ -806,22 +1193,6 @@ refType = 4; sourceTree = ""; }; - ADDFB35805DC4D7B005FB28D = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = SOPEXSNSController.h; - refType = 4; - sourceTree = ""; - }; - ADDFB35905DC4D7B005FB28D = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.objc; - path = SOPEXSNSController.m; - refType = 4; - sourceTree = ""; - }; ADDFB35A05DC4D7B005FB28D = { fileEncoding = 30; isa = PBXFileReference; @@ -921,21 +1292,6 @@ settings = { }; }; - ADDFB36705DC4D7B005FB28D = { - fileRef = ADDFB35805DC4D7B005FB28D; - isa = PBXBuildFile; - settings = { - ATTRIBUTES = ( - Public, - ); - }; - }; - ADDFB36805DC4D7B005FB28D = { - fileRef = ADDFB35905DC4D7B005FB28D; - isa = PBXBuildFile; - settings = { - }; - }; ADDFB36905DC4D7B005FB28D = { fileRef = ADDFB35A05DC4D7B005FB28D; isa = PBXBuildFile; @@ -1057,48 +1413,6 @@ settings = { }; }; - ADDFB3D205DC50BD005FB28D = { - isa = PBXFileReference; - lastKnownFileType = wrapper.framework; - name = SOPE.framework; - path = /Library/Frameworks/SOPE.framework; - refType = 0; - sourceTree = ""; - }; - ADDFB3D305DC50BD005FB28D = { - isa = PBXFileReference; - lastKnownFileType = wrapper.framework; - name = SxCore.framework; - path = /Library/Frameworks/SxCore.framework; - refType = 0; - sourceTree = ""; - }; - ADDFB3D405DC50BD005FB28D = { - isa = PBXFileReference; - lastKnownFileType = wrapper.framework; - name = SxXML.framework; - path = /Library/Frameworks/SxXML.framework; - refType = 0; - sourceTree = ""; - }; - ADDFB3D505DC50BD005FB28D = { - fileRef = ADDFB3D205DC50BD005FB28D; - isa = PBXBuildFile; - settings = { - }; - }; - ADDFB3D605DC50BD005FB28D = { - fileRef = ADDFB3D305DC50BD005FB28D; - isa = PBXBuildFile; - settings = { - }; - }; - ADDFB3D705DC50BD005FB28D = { - fileRef = ADDFB3D405DC50BD005FB28D; - isa = PBXBuildFile; - settings = { - }; - }; ADDFB3F305DC513A005FB28D = { fileEncoding = 5; isa = PBXFileReference; @@ -1128,12 +1442,15 @@ }; }; ADDFB3F705DC51A0005FB28D = { + explicitFileType = text; fileEncoding = 5; + indentWidth = 8; isa = PBXFileReference; - lastKnownFileType = text; path = ChangeLog; refType = 4; sourceTree = ""; + tabWidth = 8; + usesTabs = 1; }; ADDFB3F805DC51A0005FB28D = { fileRef = ADDFB3F705DC51A0005FB28D; @@ -1201,24 +1518,6 @@ refType = 4; sourceTree = ""; }; - ADDFB41D05DC532D005FB28D = { - children = ( - ADDFB41E05DC532D005FB28D, - ); - isa = PBXVariantGroup; - name = SOPEXMainMenu.nib; - path = ""; - refType = 4; - sourceTree = ""; - }; - ADDFB41E05DC532D005FB28D = { - isa = PBXFileReference; - lastKnownFileType = wrapper.nib; - name = English; - path = English.lproj/SOPEXMainMenu.nib; - refType = 4; - sourceTree = ""; - }; ADDFB41F05DC532D005FB28D = { children = ( ADDFB42005DC532D005FB28D, @@ -1262,12 +1561,6 @@ settings = { }; }; - ADDFB42405DC532D005FB28D = { - fileRef = ADDFB41D05DC532D005FB28D; - isa = PBXBuildFile; - settings = { - }; - }; ADDFB42505DC532D005FB28D = { fileRef = ADDFB41F05DC532D005FB28D; isa = PBXBuildFile; @@ -1364,6 +1657,8 @@ ADDFB45105DC5555005FB28D, ADDFB45205DC5555005FB28D, ); + fileEncoding = 5; + indentWidth = 2; isa = PBXGroup; name = Global; refType = 4; @@ -1386,37 +1681,6 @@ ); }; }; - ADEE3DAF05DCFE0600F523DB = { - fileEncoding = 4; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = SOPEXApplication.h; - refType = 4; - sourceTree = ""; - }; - ADEE3DB005DCFE0600F523DB = { - fileEncoding = 4; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.objc; - path = SOPEXApplication.m; - refType = 4; - sourceTree = ""; - }; - ADEE3DB105DCFE0600F523DB = { - fileRef = ADEE3DAF05DCFE0600F523DB; - isa = PBXBuildFile; - settings = { - ATTRIBUTES = ( - Public, - ); - }; - }; - ADEE3DB205DCFE0600F523DB = { - fileRef = ADEE3DB005DCFE0600F523DB; - isa = PBXBuildFile; - settings = { - }; - }; ADFA08B10614634400E216F9 = { children = ( ADFA08B20614635A00E216F9, @@ -1428,6 +1692,8 @@ AD81AD010621878E00550A49, AD81AD020621878E00550A49, ); + fileEncoding = 5; + indentWidth = 2; isa = PBXGroup; name = Model; refType = 4; diff --git a/sopex/SOPEX/SOPEXAppController.h b/sopex/SOPEX/SOPEXAppController.h index 01e1439c..e339192a 100644 --- a/sopex/SOPEX/SOPEXAppController.h +++ b/sopex/SOPEX/SOPEXAppController.h @@ -1,112 +1,65 @@ /* - Copyright (C) 2000-2003 SKYRIX Software AG + Copyright (C) 2004 Marcus Mueller - This file is part of OGo + This file is part of OpenGroupware.org. - OGo is free software; you can redistribute it and/or modify it under - the terms of the GNU Lesser General Public License as published by the - Free Software Foundation; either version 2, or (at your option) any - later version. + OGo is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by the + Free Software Foundation; either version 2, or (at your option) any + later version. - OGo is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - License for more details. + OGo is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public + License for more details. - You should have received a copy of the GNU Lesser General Public - License along with OGo; see the file COPYING. If not, write to the - Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. - */ -// $Id: SOPEXAppController.h 1 2004-08-20 11:17:52Z znek $ -// Created by znek on Mon Jan 26 2004. + You should have received a copy of the GNU Lesser General Public + License along with OGo; see the file COPYING. If not, write to the + Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA + 02111-1307, USA. +*/ -#ifndef __AppController_H_ -#define __AppController_H_ +#ifndef __SOPEX_SOPEXAppController_H_ +#define __SOPEX_SOPEXAppController_H_ #import -#import "SOPEXDocument.h" -@class SOPEXBrowserWindow; -@class WebView; -@class SOPEXToolbarController; -@class SOPEXWebConnection; @class SOPEXConsole; -@class SOPEXSNSController; @class SOPEXStatisticsController; +@class SOPEXBrowserController; - -@interface SOPEXAppController : NSObject +@interface SOPEXAppController : NSObject { - IBOutlet SOPEXBrowserWindow *mainWindow; - IBOutlet NSMenu *mainMenu; - IBOutlet NSTabView *tabView; - - IBOutlet NSProgressIndicator *progressIndicator; - IBOutlet NSTextField *statusBarTextField; - - IBOutlet WebView *webView; - - IBOutlet NSTextField *woxNameField; - IBOutlet NSTextView *woxSourceView; - IBOutlet NSTextField *woComponentNameField; - IBOutlet NSTextView *woSourceView; - IBOutlet NSTextView *woDefinitionView; - - IBOutlet NSTextView *htmlView; - - IBOutlet NSTableView *responseHeaderInfoTableView; - NSMutableArray *responseHeaderValues; - - IBOutlet NSMenuItem *debugMenuItem; - IBOutlet NSMenuItem *viewSeparatorMenuItem; + IBOutlet NSMenu *mainMenu; - IBOutlet NSMenuItem *viewApplicationMenuItem; - IBOutlet NSMenuItem *viewSourceMenuItem; - IBOutlet NSMenuItem *viewHTMLMenuItem; - IBOutlet NSMenuItem *viewHTTPMenuItem; + IBOutlet NSMenuItem *debugMenuItem; + IBOutlet NSMenuItem *viewSeparatorMenuItem; - IBOutlet NSMenuItem *aboutMenuItem; - IBOutlet NSMenuItem *hideMenuItem; - IBOutlet NSMenuItem *quitMenuItem; + IBOutlet NSMenuItem *viewApplicationMenuItem; + IBOutlet NSMenuItem *viewSourceMenuItem; + IBOutlet NSMenuItem *viewHTMLMenuItem; + IBOutlet NSMenuItem *viewHTTPMenuItem; + IBOutlet NSMenuItem *aboutMenuItem; + IBOutlet NSMenuItem *hideMenuItem; + IBOutlet NSMenuItem *quitMenuItem; - SOPEXWebConnection *connection; - SOPEXToolbarController *toolbarController; - SOPEXSNSController *snsd; - SOPEXConsole *console; - SOPEXStatisticsController *statsController; - NSTask *daemonTask; - - SOPEXDocument *document; + SOPEXConsole *console; + SOPEXStatisticsController *statsController; + SOPEXBrowserController *mainBrowserController; } -- (NSTextView *)document:(SOPEXDocument *)document textViewForType:(NSString *)fileType; - - (BOOL)isInRADMode; -- (IBAction)restartDaemonTask:(id)sender; -- (IBAction)stopDaemonTask:(id)sender; - -/* hook to provide custom launch arguments. remember to call super! */ -- (void)appendToDaemonLaunchArguments:(NSMutableArray *)_args; - -- (IBAction)reload:(id)sender; -- (IBAction)back:(id)sender; -- (IBAction)viewApplication:(id)sender; -- (IBAction)viewSource:(id)sender; -- (IBAction)viewHTML:(id)sender; -- (IBAction)viewHTTP:(id)sender; - -- (IBAction)editInXcode:(id)sender; +/* hook to provide custom launch defaults. remember to call super! */ +- (void)prepareForLaunch; - (IBAction)openConsole:(id)sender; - (IBAction)openStatistics:(id)sender; - (IBAction)clear:(id)sender; -/* debugging */ -- (IBAction)toggleToolbar:(id)sender; +- (SOPEXConsole *)console; @end -#endif /* __AppController_H_ */ +#endif /* __SOPEX_SOPEXAppController_H_ */ diff --git a/sopex/SOPEX/SOPEXAppController.m b/sopex/SOPEX/SOPEXAppController.m index 53efb8cc..cc9f81b3 100644 --- a/sopex/SOPEX/SOPEXAppController.m +++ b/sopex/SOPEX/SOPEXAppController.m @@ -1,967 +1,301 @@ /* - Copyright (C) 2000-2003 SKYRIX Software AG + Copyright (C) 2004 Marcus Mueller - This file is part of OGo + This file is part of OpenGroupware.org. - OGo is free software; you can redistribute it and/or modify it under - the terms of the GNU Lesser General Public License as published by the - Free Software Foundation; either version 2, or (at your option) any - later version. + OGo is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by the + Free Software Foundation; either version 2, or (at your option) any + later version. - OGo is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - License for more details. + OGo is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public + License for more details. - You should have received a copy of the GNU Lesser General Public - License along with OGo; see the file COPYING. If not, write to the - Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. - */ -// $Id: SOPEXAppController.m 1 2004-08-20 11:17:52Z znek $ -// Created by znek on Mon Jan 26 2004. + You should have received a copy of the GNU Lesser General Public + License along with OGo; see the file COPYING. If not, write to the + Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA + 02111-1307, USA. +*/ #import "SOPEXAppController.h" -#import -#import -#import #import #import #import "SOPEXConsole.h" -#import "SOPEXToolbarController.h" -#import "SOPEXWebConnection.h" -#import "SOPEXSNSController.h" #import "SOPEXStatisticsController.h" #import "SOPEXConstants.h" -#import "WebView+Ext.h" -#import "SOPEXBrowserWindow.h" -#import "SOPEXRangeUtilities.h" -#import "SOPEXDocument.h" -#import "SOPEXWOXDocument.h" -#import "SOPEXWODocument.h" -#import "SOPEXSheetRunner.h" +#import "SOPEXWebConnection.h" +#import "SOPEXBrowserController.h" + #define DNC [NSNotificationCenter defaultCenter] #define UD [NSUserDefaults standardUserDefaults] - -#define SNS_CHILD_DEBUG 0 - - @interface SOPEXAppController (PrivateAPI) - (void)_setup; -- (void)_setupDaemonTask; -- (void)_launchDaemonTask; -- (void)setStatus:(NSString *)_msg; -- (void)setStatus:(NSString *)_msg isError:(BOOL)isError; -- (void)flushDocument; -- (void)createDocumentFromResponse; -- (void)_selectTabWithIdentifier:(NSString *)identifier menuItem:(NSMenuItem *)menuItem; +- (void)_launchSOPE; @end @implementation SOPEXAppController -static BOOL debugOn = NO; -static BOOL isInRADMode = YES; - -+ (void)initialize -{ - static BOOL isInitialized = NO; - - if(isInitialized) - return; - - debugOn = [[NSUserDefaults standardUserDefaults] boolForKey:@"SOPEXDebugEnabled"]; - isInitialized = YES; -} - - -#pragma mark - -#pragma mark ### INIT & DEALLOC ### - -- (id)init { - self = [super init]; - if(self) { - NSArray *args; - - // check, if Application has been launched by Finder - args = [[NSProcessInfo processInfo] arguments]; - if([[args lastObject] hasPrefix:@"-psn_"]) - isInRADMode = NO; - } - return self; -} - -- (void)dealloc -{ - [DNC removeObserver:self]; - [self->responseHeaderValues release]; - [self->statsController release]; - [self->snsd release]; - [self->daemonTask release]; - [self->console release]; - [super dealloc]; -} - - -#pragma mark - -#pragma mark ### SETUP ### - - -- (void)awakeFromNib -{ - NSString *appName; +static NGLogger *logger = nil; +static BOOL isInRADMode = YES; + ++ (void)initialize { + NGLoggerManager *lm; + NSArray *args; + static BOOL didInit = NO; + + if(didInit) return; + didInit = YES; + lm = [NGLoggerManager defaultLoggerManager]; + logger = [lm loggerForDefaultKey:@"SOPEXDebugEnabled"]; + + // check, if Application has been launched by Finder + args = [[NSProcessInfo processInfo] arguments]; + if([(NSString *)[args lastObject] hasPrefix:@"-psn_"]) + isInRADMode = NO; + [logger debugWithFormat:@"Is in RAD mode: %@", + isInRADMode ? @"YES" : @"NO"]; +} + +- (void)dealloc { + [DNC removeObserver:self]; + [self->console release]; + [self->statsController release]; + [self->mainBrowserController release]; + [super dealloc]; +} + + +/* SETUP */ + +- (void)awakeFromNib { + NSString *appName, *s; + + // Fix menu items + appName = [[NSProcessInfo processInfo] processName]; + s = [NSString stringWithFormat:[self->aboutMenuItem title], appName]; + [self->aboutMenuItem setTitle:s]; + s = [NSString stringWithFormat:[self->hideMenuItem title], appName]; + [self->hideMenuItem setTitle:s]; + s = [NSString stringWithFormat:[self->quitMenuItem title], appName]; + [self->quitMenuItem setTitle:s]; +} + + +- (void)_setup { + if(![self isInRADMode]) { + NSMenu *viewMenu; + + // remove RAD menuItems + [self->mainMenu removeItem:self->debugMenuItem]; + viewMenu = [self->viewSeparatorMenuItem menu]; + [viewMenu removeItem:self->viewSeparatorMenuItem]; + [viewMenu removeItem:self->viewApplicationMenuItem]; + [viewMenu removeItem:self->viewSourceMenuItem]; + [viewMenu removeItem:self->viewHTMLMenuItem]; + [viewMenu removeItem:self->viewHTTPMenuItem]; + } + + self->console = [[SOPEXConsole alloc] init]; + self->mainBrowserController = [[SOPEXBrowserController alloc] init]; + + [DNC addObserver:self + selector:@selector(sopeDidFinishLaunching:) + name:WOApplicationDidFinishLaunchingNotification + object:nil]; + [DNC addObserver:self + selector:@selector(sopeDidTerminate:) + name:WOApplicationDidTerminateNotification + object:nil]; +} + +- (void)_launchSOPE { + [NSThread detachNewThreadSelector:@selector(runSOPE) + toTarget:self + withObject:nil]; +} + +- (void)runSOPE { + WOApplicationMain(@"Application", 0, NULL); +} + +- (void)prepareForLaunch { + if([self isInRADMode]) { + NSUserDefaults *ud; - [self->webView setGroupName:@"WebUI"]; - - // Fix menu items - appName = [[NSProcessInfo processInfo] processName]; - [self->aboutMenuItem setTitle:[NSString stringWithFormat:[self->aboutMenuItem title], appName]]; - [self->hideMenuItem setTitle:[NSString stringWithFormat:[self->hideMenuItem title], appName]]; - [self->quitMenuItem setTitle:[NSString stringWithFormat:[self->quitMenuItem title], appName]]; - - self->responseHeaderValues = [[NSMutableArray alloc] initWithCapacity:20]; -#if 0 - [DNC addObserver:self selector:@selector(textViewDidChangeSelection:) name:NSTextViewDidChangeSelectionNotification object:nil]; -#endif - [self viewApplication:nil]; -} - - -- (void)_setup -{ - if(! [self isInRADMode]) { - NSMenu *viewMenu; + ud = [NSUserDefaults standardUserDefaults]; - // remove RAD menuItems - [self->mainMenu removeItem:self->debugMenuItem]; - viewMenu = [self->viewSeparatorMenuItem menu]; - [viewMenu removeItem:self->viewSeparatorMenuItem]; - [viewMenu removeItem:self->viewApplicationMenuItem]; - [viewMenu removeItem:self->viewSourceMenuItem]; - [viewMenu removeItem:self->viewHTMLMenuItem]; - [viewMenu removeItem:self->viewHTTPMenuItem]; - } + /* NGLogging */ - self->snsd = [[SOPEXSNSController alloc] init]; - [self->snsd setDelegate:self]; - [self->snsd start]; + [ud setObject:@"SOPEXConsoleAppender" forKey:@"NGLogDefaultAppenderClass"]; + [ud setObject:@"SOPEXConsoleEventFormatter" + forKey:@"NGLogDefaultLogEventFormatterClass"]; - if(debugOn) - NSLog(@"%s snsd's address:%@", __PRETTY_FUNCTION__, [snsd socketAddress]); + /* SOPE options */ - self->console = [[SOPEXConsole alloc] init]; - - self->toolbarController = [[SOPEXToolbarController alloc] initWithIdentifier:@"SOPEXWebUI" target:self]; - - [self _setupDaemonTask]; -} - -- (void)_setupDaemonTask -{ - NSString *daemonPath; - NSMutableArray *args; - NSString *woPort; - - self->daemonTask = [[NSTask alloc] init]; - daemonPath = [[NSBundle mainBundle] executablePath]; - - // prepare the task - [self->daemonTask setLaunchPath:daemonPath]; - [self->daemonTask setStandardInput:[NSPipe new]]; -#if(SNS_CHILD_DEBUG == 0) - [self->daemonTask setStandardOutput:[NSPipe new]]; - [self->daemonTask setStandardError:[NSPipe new]]; -#endif - - // prepare arguments - args = [[NSMutableArray alloc] initWithCapacity:20]; - [args addObject:SOPEXDaemonFlag]; // this triggers 'daemon' mode - [args addObject:@"-WOContactSNS"]; - [args addObject:@"YES"]; - // increase responsiveness in case we terminate by accident - [args addObject:@"-SNSPingInterval"]; - [args addObject:@"10"]; -#if SNS_CHILD_DEBUG -#warning ** ZNeK: Debugging SNS in child - [args addObject:@"-SNSLogActivity"]; - [args addObject:@"YES"]; -#endif - [args addObject:@"-SNSPort"]; - [args addObject:[snsd socketAddress]]; - [args addObject:@"-WOPort"]; - woPort = [UD stringForKey:@"WOPort"]; - if(woPort != nil) - [args addObject:woPort]; - else - [args addObject:@"auto"]; - [self appendToDaemonLaunchArguments:args]; - [self->daemonTask setArguments:args]; - [args release]; -} - -- (void)_launchDaemonTask -{ - if(debugOn) - NSLog(@"%s", __PRETTY_FUNCTION__); - [DNC addObserver:self selector:@selector(daemonTaskDidTerminate:) name:NSTaskDidTerminateNotification object:self->daemonTask]; - -#if(SNS_CHILD_DEBUG == 0) - [self->console setStandardOutput:[self->daemonTask standardOutput] standardError:[self->daemonTask standardError]]; -#endif - - [self->daemonTask launch]; -} - -- (void)appendToDaemonLaunchArguments:(NSMutableArray *)_args { // the next entry works, because executable's cwd is the project directory // (set in project's launch options) - if([self isInRADMode]) { - [_args addObject:@"-WOProjectDirectory"]; - [_args addObject:[[NSFileManager defaultManager] currentDirectoryPath]]; - - // Debugging options - [_args addObject:@"-WOCachingEnabled"]; - [_args addObject:@"NO"]; - [_args addObject:@"-WODebuggingEnabled"]; - [_args addObject:@"YES"]; + [ud setObject:[[NSFileManager defaultManager] currentDirectoryPath] + forKey:@"WOProjectDirectory"]; + + // Debugging options + [ud setBool:NO forKey:@"WOCachingEnabled"]; + [ud setBool:YES forKey:@"WODebuggingEnabled"]; + #if 0 - [_args addObject:@"-WODebugComponentLookup"]; - [_args addObject:@"YES"]; - [_args addObject:@"-WODebugResourceLookup"]; - [_args addObject:@"YES"]; + [ud setBool:YES forKey:@"WODebugComponentLookup"]; + [ud setBool:YES forKey:@"WODebugResourceLookup"]; #endif #if 0 - [_args addObject:@"-WOxComponentElemBuilderDebugEnabled"]; - [_args addObject:@"YES"]; - [_args addObject:@"-WOxElemBuilder_LogAssociationMapping"]; - [_args addObject:@"YES"]; - [_args addObject:@"-WOxElemBuilder_LogAssociationCreation"]; - [_args addObject:@"YES"]; + [ud setBool:YES forKey:@"WOxComponentElemBuilderDebugEnabled"]; + [ud setBool:YES forKey:@"WOxElemBuilder_LogAssociationMapping"]; + [ud setBool:YES forKey:@"WOxElemBuilder_LogAssociationCreation"]; #endif #if 0 #warning ** ZNeK: Profiling information - [_args addObject:@"-WOProfileComponents"]; - [_args addObject:@"YES"]; - [_args addObject:@"-WOProfileElements"]; - [_args addObject:@"YES"]; - [_args addObject:@"-WOProfileHttpAdaptor"]; - [_args addObject:@"YES"]; + [ud setBool:YES forKey:@"WOProfileComponents"]; + [ud setBool:YES forKey:@"WOProfileElements"]; + [ud setBool:YES forKey:@"WOProfileHttpAdaptor"]; #endif - } + } } -#pragma mark - -#pragma mark ### ACCESSORS ### +/* ACCESSORS */ - (BOOL)isInRADMode { - return isInRADMode; -} - - -#pragma mark - -#pragma mark ### ACTIONS ### - - -- (IBAction)restartDaemonTask:(id)sender -{ - [DNC removeObserver:self name:NSTaskDidTerminateNotification object:self->daemonTask]; - - // we're done writing - [[[self->daemonTask standardInput] fileHandleForWriting] closeFile]; - - [self->daemonTask terminate]; - [self->daemonTask waitUntilExit]; - [self->daemonTask release]; - [self _setupDaemonTask]; - [self _launchDaemonTask]; -} - -- (IBAction)stopDaemonTask:(id)sender -{ - if(debugOn) - NSLog(@"%s", __PRETTY_FUNCTION__); - [self->progressIndicator startAnimation:self]; - - // we're done writing - [[[self->daemonTask standardInput] fileHandleForWriting] closeFile]; - - [self->daemonTask terminate]; - [self->daemonTask waitUntilExit]; - [NSApp terminate:self]; -} - -- (IBAction)reload:(id)sender -{ - if(sender == nil) - { - NSURLRequest *rq; - - rq = [NSURLRequest requestWithURL:[self->connection url] cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:10.0]; - if(debugOn) - NSLog(@"%s request: %@", __PRETTY_FUNCTION__, rq); - [[self->webView mainFrame] loadRequest:rq]; - } - else - { - [self->webView reload:self]; - } - [self viewApplication:sender]; -} - -- (IBAction)back:(id)sender -{ - [self->webView goBack]; -} - -- (IBAction)viewApplication:(id)sender -{ - [self _selectTabWithIdentifier:@"application" menuItem:self->viewApplicationMenuItem]; -} - -- (IBAction)viewSource:(id)sender -{ - NSString *componentName; - - componentName = [[self->document path] lastPathComponent]; - if([componentName hasSuffix:@"wo"]) - { - [self->woComponentNameField setStringValue:componentName]; - [self _selectTabWithIdentifier:@"wo" menuItem:self->viewSourceMenuItem]; - } - else - { - [self->woxNameField setStringValue:componentName]; - [self _selectTabWithIdentifier:@"wox" menuItem:self->viewSourceMenuItem]; - } -} - -- (IBAction)viewHTML:(id)sender -{ - WebDataSource *dataSource; - id representation; - NSString *source; - - dataSource = [[self->webView mainFrame] dataSource]; - NSAssert(dataSource != nil, @"dataSource not yet committed?!"); - NSAssert([dataSource isLoading] == NO, @"dataSource not finished loading?!"); - - representation = [dataSource representation]; - - if([representation canProvideDocumentSource]) - source = [representation documentSource]; - else - source = @""; - - [self->htmlView setString:source]; - [self _selectTabWithIdentifier:@"html" menuItem:self->viewHTMLMenuItem]; -} - -- (IBAction)viewHTTP:(id)sender -{ - WebDataSource *dataSource; - NSHTTPURLResponse *response; - NSDictionary *headerFields; - NSArray *headers; - int count, i; - - dataSource = [[self->webView mainFrame] dataSource]; - response = (NSHTTPURLResponse *)[dataSource response]; - - headerFields = [response allHeaderFields]; - headers = [headerFields allKeys]; - count = [headers count]; - - [self->responseHeaderValues removeAllObjects]; - - for(i = 0; i < count; i++) - { - NSString *header, *value; - NSDictionary *headerValueInfo; - - header = [headers objectAtIndex:i]; - value = [headerFields objectForKey:header]; - headerValueInfo = [[NSDictionary alloc] initWithObjectsAndKeys:value, @"value", header, @"header", nil]; - [self->responseHeaderValues addObject:headerValueInfo]; - [headerValueInfo release]; - } - - [self->responseHeaderInfoTableView reloadData]; - [self _selectTabWithIdentifier:@"http" menuItem:self->viewHTTPMenuItem]; -} - -- (void)_selectTabWithIdentifier:(NSString *)identifier menuItem:(NSMenuItem *)menuItem -{ - [self->tabView selectTabViewItemWithIdentifier:identifier]; - if(isInRADMode) - { - [self->viewApplicationMenuItem setState:menuItem == self->viewApplicationMenuItem ? NSOnState : NSOffState]; - [self->viewSourceMenuItem setState:menuItem == self->viewSourceMenuItem ? NSOnState : NSOffState]; - [self->viewHTMLMenuItem setState:menuItem == self->viewHTMLMenuItem ? NSOnState : NSOffState]; - [self->viewHTTPMenuItem setState:menuItem == self->viewHTTPMenuItem ? NSOnState : NSOffState]; - } -} - -- (IBAction)saveDocument:(id)sender -{ - if(self->document != nil) - { - if([self->document hasChanges]) - { - if(![self->document performSave]) - { - NSBeep(); - return; - } - [self->mainWindow setDocumentEdited:NO]; - } - } -} - -- (IBAction)revertDocumentToSaved:(id)sender -{ - [self->document revertChanges]; - [self->mainWindow setDocumentEdited:NO]; -} - -- (IBAction)openConsole:(id)sender -{ -#if(SNS_CHILD_DEBUG == 0) - [self->console orderFront:sender]; -#endif -} - -- (IBAction)openStatistics:(id)sender -{ - [self->statsController orderFront:sender]; -} - -- (IBAction)clear:(id)sender -{ - [self->console clear:sender]; -} - -- (IBAction)toggleToolbar:(id)sender -{ - if([self->mainWindow toolbar] == nil) - [self->toolbarController applyOnWindow:self->mainWindow]; - else - [self->mainWindow setToolbar:nil]; -} - -- (IBAction)editInXcode:(id)sender -{ - NSString *path; - - path = [self->document path]; - - [[NSWorkspace sharedWorkspace] openFile:path withApplication:@"Xcode" andDeactivate:YES]; -} - - -#pragma mark ### VALIDATION ### - - -- (BOOL)validateToolbarItem:(NSToolbarItem *)theItem -{ - return [self validateMenuItem:(id )theItem]; -} - -- (BOOL)validateMenuItem:(id )menuItem -{ - SEL action = [menuItem action]; - -#if 0 - NSLog(@"%s action:%@", __PRETTY_FUNCTION__, NSStringFromSelector(action)); -#endif - if(action == @selector(openStatistics:)) - return self->statsController != nil; - if(action == @selector(clear:)) - return [self->console validateMenuItem:menuItem]; - if(action == @selector(back:)) - return [self->webView canGoBack]; - if(action == @selector(viewHTML:)) - { - WebDataSource *dataSource = [[self->webView mainFrame] dataSource]; - if(dataSource == nil) - return NO; - return [dataSource isLoading] == NO; - } - if(action == @selector(viewSource:)) - return self->document != nil; - if(action == @selector(saveDocument:) || action == @selector(revertDocumentToSaved:)) - if(self->document == nil) - return NO; - else - return [self->document hasChanges]; - - return YES; -} - - -#pragma mark - -#pragma mark ### SOPEXDocumentController PROTOCOL ### - - -- (NSTextView *)document:(SOPEXDocument *)_document textViewForType:(NSString *)_fileType -{ - if([_document isKindOfClass:[SOPEXWODocument class]]) { - if([_fileType isEqualToString:@"html"]) - return self->woSourceView; - return self->woDefinitionView; - } - return self->woxSourceView; -} - -- (void)document:(SOPEXDocument *)document didValidateWithError:(NSError *)error forType:(NSString *)fileType -{ - [self viewSource:self]; -} - - -#pragma mark - -#pragma mark ### NOTIFICATIONS ### - - -- (void)daemonTaskDidTerminate:(NSNotification *)notification -{ - if(debugOn) - NSLog(@"%s", __PRETTY_FUNCTION__); - [self->progressIndicator stopAnimation:self]; + return isInRADMode; } -#pragma mark - -#pragma mark ### APPLICATION DELEGATE ### +/* ACTIONS */ - -- (void)applicationWillFinishLaunching:(NSNotification *)notification -{ -} - -- (void)applicationDidFinishLaunching:(NSNotification *)notification -{ - [self setStatus:nil]; - [self _setup]; - [self _launchDaemonTask]; - if(isInRADMode) - [self openConsole:self]; -} - -- (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)app -{ - return YES; -} - -- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)app -{ - if(! [self windowShouldClose:self->mainWindow]) - return NSTerminateLater; - return NSTerminateNow; +- (IBAction)openConsole:(id)sender { + [self->console orderFront:sender]; } -- (void)applicationWillTerminate:(NSNotification *)aNotification -{ - [self stopDaemonTask:self]; -} - - -#pragma mark - -#pragma mark ### TEXTVIEW DELEGATE ### - -// ZNeK: This is something I'd like to out-source somplace else, but it just doesn't feel right -// to do it at the moment. - -- (void)textViewDidChangeSelection:(NSNotification *)notification -{ - NSTextView *textView = [notification object]; - NSEvent *event; - NSRange selRange; - - selRange = [textView selectedRange]; - event = [NSApp currentEvent]; - - if(([event type] == NSLeftMouseUp) && ([event clickCount] == 2)) - { - NSRange matchRange = SOPEX_findMatchingTagForRangeInString(selRange, [textView string]); - - if(matchRange.location != NSNotFound) - { - selRange = NSUnionRange(selRange, matchRange); - [textView setSelectedRange:selRange affinity:NSSelectionAffinityUpstream stillSelecting:YES]; - [textView scrollRangeToVisible:matchRange]; - } - } -} - - -#pragma mark - -#pragma mark ### PRIVATE API ### - - -- (void)setStatus:(NSString *)_msg -{ - [self setStatus:_msg isError:NO]; -} - -- (void)setStatus:(NSString *)_msg isError:(BOOL)isError -{ - if(_msg == nil) - _msg = @""; - [self->statusBarTextField setStringValue:_msg]; -} - -- (void)flushDocument -{ - [self->document release]; - self->document = nil; - [self->mainWindow setDocumentEdited:NO]; -} - -- (void)createDocumentFromResponse -{ - WebDataSource *dataSource; - NSHTTPURLResponse *response; - NSDictionary *headerFields; - NSString *templatePath; - - dataSource = [[self->webView mainFrame] dataSource]; - response = (NSHTTPURLResponse *)[dataSource response]; - - if([response isKindOfClass:[NSHTTPURLResponse class]]) { - headerFields = [response allHeaderFields]; - // NOTE: WebKit cuddly-capses header keys! - templatePath = [headerFields objectForKey:@"X-Sope-Template-Path"]; - if(templatePath == nil) - return; - - if([templatePath hasSuffix:@"wo"]) - self->document = [[SOPEXWODocument alloc] initWithPath:templatePath controller:self]; - else - self->document = [[SOPEXWOXDocument alloc] initWithPath:templatePath controller:self]; - } -} - - -#pragma mark - -#pragma mark ### SNS CONTROLLER DELEGATE ### - - -- (void)snsController:(SOPEXSNSController *)controller registerInstance:(NSDictionary *)instanceDescription -{ - NGInternetSocketAddress *applicationAddress; - NSString *applicationName, *url; - NSBundle *resourceBundle; - NSString *path; - - applicationName = [instanceDescription objectForKey:SNSApplicationNameKey]; - applicationAddress = [instanceDescription objectForKey:SNSApplicationAddressKey]; - - url = [NSString stringWithFormat:@"http://localhost:%d/%@", [applicationAddress port], applicationName]; - - [self->connection release]; - - // In Rapid Development mode the mainBundle path is the current working directory, - // which is where the source code is located - if(isInRADMode) { - path = [[NSFileManager defaultManager] currentDirectoryPath]; - } - else { - path = [[NSBundle mainBundle] resourcePath]; - } - - // However, SOPE:X applications have a special WebServerResources folder - path = [path stringByAppendingPathComponent:@"WebServerResources"]; - resourceBundle = [[[NSBundle alloc] initWithPath:path] autorelease]; - - self->connection = [(SOPEXWebConnection *)[SOPEXWebConnection alloc] initWithURL:url localResourceBundle:resourceBundle]; - - if(debugOn) - NSLog(@"%s OGo connection: %@", __PRETTY_FUNCTION__, self->connection); - - self->statsController = [[SOPEXStatisticsController alloc] initWithApplicationURL:url]; - - if(debugOn) - NSLog(@"%s instance:%@", __PRETTY_FUNCTION__, instanceDescription); - [self reload:nil]; +- (IBAction)openStatistics:(id)sender { + [self->statsController orderFront:sender]; } -- (void)snsController:(SOPEXSNSController *)controller unregisterInstance:(NSDictionary *)instanceDescription -{ - NSLog(@"%s WARNING!! Child did terminate!", __PRETTY_FUNCTION__); +- (IBAction)clear:(id)sender { + [self->console clear:sender]; } -#pragma mark - -#pragma mark ### WINDOW DELEGATE ### +/* VALIDATION */ - -- (BOOL)windowShouldClose:(id)sender -{ +- (BOOL)validateMenuItem:(id )menuItem { + SEL action = [menuItem action]; + #if 0 - if(debugOn) - NSLog(@"%s sender:%@", __PRETTY_FUNCTION__, sender); + NSLog(@"%s action:%@", __PRETTY_FUNCTION__, NSStringFromSelector(action)); #endif - - if(sender != self->mainWindow) - return YES; - - if(self->document != nil && [self->document hasChanges]) - { - id panel; - int rc; - - panel = NSGetAlertPanel( - NSLocalizedString(@"Do you want to save changes to the source code before closing?", "Title of the alert sheet when window should close but changes are still not saved"), - NSLocalizedString(@"If you don\\u2019t save, your changes will be lost.", "Message of the alert sheet when unsaved changes are about to be lost"), - NSLocalizedString(@"Save", "Default button text for the alert sheet"), - NSLocalizedString(@"Don\\u2019t save", "Alternate button text for the alert sheet"), - NSLocalizedString(@"Cancel", "Other button text for the alert sheet") - ); - - rc = SOPEXRunSheetModalForWindow(panel, self->mainWindow); - NSReleaseAlertPanel(panel); - - // NSAlertOtherReturn == Cancel - // NSAlertAlternateReturn == Don't save - // NSAlertDefaultReturn == Save - - if(rc == NSAlertOtherReturn) - return NO; - if(rc == NSAlertDefaultReturn) - [self saveDocument:self]; - [self flushDocument]; - } - return YES; -} - -- (void)windowWillClose:(NSNotification *)notification -{ -#if 0 - if(debugOn) - NSLog(@"%s notification:%@", __PRETTY_FUNCTION__, notification); -#endif - if([notification object] == self->mainWindow) - [NSApp terminate:self]; -} - - -#pragma mark - -#pragma mark ### TableView DATASOURCE ### - - -- (int)numberOfRowsInTableView:(NSTableView *)_tableView -{ - return [self->responseHeaderValues count]; -} - -- (id)tableView:(NSTableView *)_tableView objectValueForTableColumn:(NSTableColumn *)_tableColumn row:(int)_rowIndex -{ - return [[self->responseHeaderValues objectAtIndex:_rowIndex] objectForKey:[_tableColumn identifier]]; + if(action == @selector(openStatistics:)) + return self->statsController != nil; + if(action == @selector(clear:)) + return [self->console validateMenuItem:menuItem]; + return YES; } -#pragma mark - -#pragma mark ### WebResource Load DELEGATE ### +/* APPLICATION DELEGATE */ - -- (id)webView:(WebView *)_sender - identifierForInitialRequest:(NSURLRequest *)_rq - fromDataSource:(WebDataSource *)_ds -{ - return [[_rq URL] absoluteString]; +- (void)applicationWillFinishLaunching:(NSNotification *)_notif { } -- (NSURLRequest *)webView:(WebView *)_sender - resource:(id)_id - willSendRequest:(NSURLRequest *)_rq - redirectResponse:(NSURLResponse *)redirectResponse - fromDataSource:(WebDataSource *)_ds -{ - /* use that to patch resource requests to local files ;-) */ - NSURL *url, *rurl; - - url = [_rq URL]; - if(debugOn) - NSLog(@"%s: %@ request: %@ url: %@", __PRETTY_FUNCTION__, _id, _rq, url); - - if (![self->connection shouldRewriteRequestURL:url]) - return _rq; - - if ((rurl = [self->connection rewriteRequestURL:url]) == nil) - return _rq; - if ([rurl isEqual:url]) - return _rq; - - return [NSURLRequest requestWithURL:rurl - cachePolicy:NSURLRequestUseProtocolCachePolicy - timeoutInterval:5.0]; +- (void)applicationDidFinishLaunching:(NSNotification *)_notif { + [self _setup]; + [self prepareForLaunch]; + [self _launchSOPE]; + if(isInRADMode) + [self openConsole:self]; } -- (void)webView:(WebView *)_sender resource:(id)_rid - didReceiveContentLength:(unsigned)_length - fromDataSource:(WebDataSource *)_ds -{ - //NSLog(@"%s: %@ len: %d", __PRETTY_FUNCTION__, _rid, _length); +- (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)_a { + return YES; } -- (void)webView:(WebView *)_sender resource:(id)_rid - didFinishLoadingFromDataSource:(WebDataSource *)_ds -{ - NSURLResponse *r = [_ds response]; - - if(debugOn) - { - NSLog(@"%s: %@ ds: %@\n data-len: %i\n response: %@\n type: %@\n enc: %@", - __PRETTY_FUNCTION__, _rid, _ds, - [[_ds data] length], r, [r MIMEType], [r textEncodingName]); - } - [self->connection processResponse:[_ds response] data:[_ds data]]; -} - -- (void)webView:(WebView *)_sender resource:(id)_rid - didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge - fromDataSource:(WebDataSource *)_ds -{ - if(debugOn) - NSLog(@"%s: %@ ds: %@", __PRETTY_FUNCTION__, _rid, _ds); -} - -- (void)webView:(WebView *)_sender - resource:(id)_identifier - didReceiveResponse:(NSURLResponse *)_response - fromDataSource:(WebDataSource *)_ds -{ - if (debugOn) { - NSLog(@"%s: view: %@\n resource: %@\n received: %@\n" - @" datasource: %@\n data-len: %i%s", - __PRETTY_FUNCTION__, - _sender, _identifier, _response, _ds, - [[_ds data] length], [_ds isLoading]?" LOADING":""); - } -} - - -#pragma mark - -#pragma mark ### WebFrame Load DELEGATE ### - - -- (void)webView:(WebView *)sender didStartProvisionalLoadForFrame:(WebFrame *)frame -{ - if(self->document != nil && [self->document hasChanges]) - { - id panel; - int rc; - - panel = NSGetAlertPanel( - NSLocalizedString(@"Do you want to save changes to the source code before proceeding?", "Title of the alert sheet when user wants to proceed but changes are still not saved"), - NSLocalizedString(@"If you don\\u2019t save, your changes will be lost.", "Message of the alert sheet when unsaved changes are about to be lost"), - NSLocalizedString(@"Save", "Default button text for the alert sheet"), - NSLocalizedString(@"Don\\u2019t save", "Alternate button text for the alert sheet"), - NULL); - - rc = SOPEXRunSheetModalForWindow(panel, self->mainWindow); - NSReleaseAlertPanel(panel); - - // NSAlertOtherReturn == Cancel - // NSAlertAlternateReturn == Don't save - // NSAlertDefaultReturn == Save - - if(rc == NSAlertDefaultReturn) - [self saveDocument:self]; - } - [self flushDocument]; - [self->progressIndicator startAnimation:self]; -} - -- (void)webView:(WebView *)sender didReceiveTitle:(NSString *)_title forFrame:(WebFrame *)_frame -{ - [self->mainWindow setTitle:_title]; -} - - -- (void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame -{ - [self->progressIndicator stopAnimation:self]; - +- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)_a { +#warning !! FIXME!! #if 0 -#warning ** setFavIcon enabled ... doesnt really make sense - [self->mainWindow setFavIcon:[sender pageIcon]]; + if(! [self windowShouldClose:self->mainWindow]) + return NSTerminateLater; #endif - [self createDocumentFromResponse]; -} - -- (void)webView:(WebView *)sender didFailLoadWithError:(NSError *)error forFrame:(WebFrame *)frame -{ - [self->progressIndicator stopAnimation:self]; - [self setStatus:[error localizedDescription] isError:YES]; -} - -- (void)webView:(WebView *)sender didFailProvisionalLoadWithError:(NSError *)error forFrame:(WebFrame *)frame -{ - [self webView:sender didFailLoadWithError:error forFrame:frame]; -} - - -#pragma mark - -#pragma mark ### WebView UI DELEGATE ### - - -- (BOOL)webViewIsStatusBarVisible:(WebView *)sender -{ - return YES; -} - -- (void)webView:(WebView *)sender mouseDidMoveOverElement:(NSDictionary *)elementInformation modifierFlags:(unsigned int)modifierFlags -{ - NSURL *url; - -#if 0 - NSLog(@"%s elementInformation:%@", __PRETTY_FUNCTION__, elementInformation); -#endif - - - url = [elementInformation objectForKey:WebElementImageURLKey]; - if(url != nil) - { - NSString *altString; - NSRect imageRect; - NSImage *image; - NSMutableString *status; - - altString = [elementInformation objectForKey:WebElementImageAltStringKey]; - imageRect = [[elementInformation objectForKey:WebElementImageRectKey] rectValue]; - image = [elementInformation objectForKey:WebElementImageKey]; - - status = [NSMutableString string]; - - if(altString == nil) - altString = [url absoluteString]; - - url = [elementInformation objectForKey:WebElementLinkURLKey]; - if(url != nil) - [status appendFormat:@"%@ ", [url absoluteString]]; - - [status appendFormat:@"[%@] (w:%.0f h:%.0f)", altString, imageRect.size.width, imageRect.size.height]; - if(NSEqualSizes([image size], imageRect.size) == NO) - { - NSSize size = [image size]; - [status appendFormat:@" -> scaled from (w:%.0f h:%.0f)!", size.width, size.height]; - } - - [self setStatus:status]; - return; - } - - url = [elementInformation objectForKey:WebElementLinkURLKey]; - if(url != nil) - { - [self setStatus:[url absoluteString]]; - return; - } - - [self setStatus:nil]; + return NSTerminateNow; +} + +- (void)applicationWillTerminate:(NSNotification *)_notif { +} + + +/* WOApplication notifications */ + +- (void)sopeDidFinishLaunching:(NSNotification *)_notif { + /* do this in main thread */ + [self performSelectorOnMainThread:@selector(_connectToSOPE) + withObject:nil + waitUntilDone:NO]; +} + +- (void)_connectToSOPE { + /* create web connection */ + SOPEXWebConnection *conn; + NSString *url, *path; + NSBundle *rsrcBundle; + + /* ZNeK: "localhost" might be wrong as WOPort could be an + NGInternetSocketAddress ... in theory */ + url = [NSString stringWithFormat:@"http://localhost:%d/%@", + [[WOApplication port] intValue], + [[WOApplication application] name]]; + + // In Rapid Development mode the mainBundle path is the current working + // directory, which is where the source code is located + if([self isInRADMode]) { + path = [[NSFileManager defaultManager] currentDirectoryPath]; + } + else { + path = [[NSBundle mainBundle] resourcePath]; + } + + // However, SOPE:X applications have a special WebServerResources folder + path = [path stringByAppendingPathComponent:@"WebServerResources"]; + rsrcBundle = [[[NSBundle alloc] initWithPath:path] autorelease]; + + self->statsController = + [[SOPEXStatisticsController alloc] initWithApplicationURL:url]; + + conn = + [(SOPEXWebConnection *)[SOPEXWebConnection alloc] + initWithURL:url + localResourceBundle:rsrcBundle]; + + [self->mainBrowserController setWebConnection:conn]; + [conn release]; + + if(logger) + [self debugWithFormat:@"Connecting SOPE at %@", url]; + [self->mainBrowserController reload:nil]; + [self->mainBrowserController orderFront:self]; +} + +- (void)sopeDidTerminate:(NSNotification *)_notif { + [self warnWithFormat:@"SOPE did terminate"]; +} + + +/* Logging */ + +- (SOPEXConsole *)console { + return self->console; +} + +- (id)debugLogger { + return logger; } @end diff --git a/sopex/SOPEX/SOPEXApplication.h b/sopex/SOPEX/SOPEXApplication.h deleted file mode 100644 index a40eceec..00000000 --- a/sopex/SOPEX/SOPEXApplication.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - Copyright (C) 2000-2003 SKYRIX Software AG - - This file is part of OGo - - OGo is free software; you can redistribute it and/or modify it under - the terms of the GNU Lesser General Public License as published by the - Free Software Foundation; either version 2, or (at your option) any - later version. - - OGo is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with OGo; see the file COPYING. If not, write to the - Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. - */ -// $Id: SOPEXApplication.h 1 2004-08-20 11:17:52Z znek $ -// Created by znek on Fri Feb 13 2004. - -#ifndef __SOPEXApplication_H_ -#define __SOPEXApplication_H_ - -#import - - -@interface SOPEXApplication : NSApplication -{ -} - -@end - -#endif /* __SOPEXApplication_H_ */ diff --git a/sopex/SOPEX/SOPEXApplication.m b/sopex/SOPEX/SOPEXApplication.m deleted file mode 100644 index 176fca82..00000000 --- a/sopex/SOPEX/SOPEXApplication.m +++ /dev/null @@ -1,34 +0,0 @@ -/* - Copyright (C) 2000-2003 SKYRIX Software AG - - This file is part of OGo - - OGo is free software; you can redistribute it and/or modify it under - the terms of the GNU Lesser General Public License as published by the - Free Software Foundation; either version 2, or (at your option) any - later version. - - OGo is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with OGo; see the file COPYING. If not, write to the - Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. - */ -// $Id: SOPEXApplication.m 1 2004-08-20 11:17:52Z znek $ -// Created by znek on Fri Feb 13 2004. - -#import "SOPEXApplication.h" - -@implementation SOPEXApplication - -- (void)finishLaunching -{ - [NSBundle loadNibNamed:@"SOPEXMainMenu" owner:self]; - [super finishLaunching]; -} - -@end diff --git a/sopex/SOPEX/SOPEXAuthPanel.h b/sopex/SOPEX/SOPEXAuthPanel.h index 33520d79..362845ed 100644 --- a/sopex/SOPEX/SOPEXAuthPanel.h +++ b/sopex/SOPEX/SOPEXAuthPanel.h @@ -1,14 +1,28 @@ -// $Id: SOPEXAuthPanel.h 1 2004-08-20 11:17:52Z znek $ -// -// SOPEXAuthPanel.h SxCallTest -// -// Created by Helge Hess on Sun Jun 30 2002. -// Copyright (c) 2002 SKYRIX Software AG. All rights reserved. +/* + Copyright (C) 2004 Marcus Mueller -#ifndef __SOPEXAuthPanel_H__ -#define __SOPEXAuthPanel_H__ + This file is part of OpenGroupware.org. -#import + OGo is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by the + Free Software Foundation; either version 2, or (at your option) any + later version. + + OGo is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public + License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with OGo; see the file COPYING. If not, write to the + Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA + 02111-1307, USA. +*/ + +#ifndef __SOPEX_SOPEXAuthPanel_H__ +#define __SOPEX_SOPEXAuthPanel_H__ + +#import @interface SOPEXAuthPanel : NSObject { @@ -29,4 +43,4 @@ @end -#endif /* __SOPEXAuthPanel_H__ */ +#endif /* __SOPEX_SOPEXAuthPanel_H__ */ diff --git a/sopex/SOPEX/SOPEXAuthPanel.m b/sopex/SOPEX/SOPEXAuthPanel.m index 6bfe01eb..8b8f428b 100644 --- a/sopex/SOPEX/SOPEXAuthPanel.m +++ b/sopex/SOPEX/SOPEXAuthPanel.m @@ -1,11 +1,25 @@ -// $Id: SOPEXAuthPanel.m 1 2004-08-20 11:17:52Z znek $ -// -// SOPEXAuthPanel.m SxCallTest -// -// Created by Helge Hess on Sun Jun 30 2002. -// Copyright (c) 2002 SKYRIX Software AG. All rights reserved. - -#import "SOPEXAuthPanel.h" +/* + Copyright (C) 2004 Marcus Mueller + + This file is part of OpenGroupware.org. + + OGo is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by the + Free Software Foundation; either version 2, or (at your option) any + later version. + + OGo is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public + License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with OGo; see the file COPYING. If not, write to the + Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA + 02111-1307, USA. +*/ + +#include "SOPEXAuthPanel.h" @implementation SOPEXAuthPanel diff --git a/sopex/SOPEX/SOPEXBrowserController.h b/sopex/SOPEX/SOPEXBrowserController.h new file mode 100644 index 00000000..d5544460 --- /dev/null +++ b/sopex/SOPEX/SOPEXBrowserController.h @@ -0,0 +1,79 @@ +/* + Copyright (C) 2004 Marcus Mueller + + This file is part of OpenGroupware.org. + + OGo is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by the + Free Software Foundation; either version 2, or (at your option) any + later version. + + OGo is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public + License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with OGo; see the file COPYING. If not, write to the + Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA + 02111-1307, USA. +*/ + +#ifndef __SOPEX_SOPEXBrowserController_H_ +#define __SOPEX_SOPEXBrowserController_H_ + +#import +#include /* SOPEXDocumentController */ + +@class SOPEXBrowserWindow; +@class WebView; +@class SOPEXToolbarController; +@class SOPEXWebConnection; + +@interface SOPEXBrowserController : NSObject +{ + IBOutlet SOPEXBrowserWindow *mainWindow; + IBOutlet NSTabView *tabView; + + IBOutlet NSProgressIndicator *progressIndicator; + IBOutlet NSTextField *statusBarTextField; + + IBOutlet WebView *webView; + + IBOutlet NSTextField *woxNameField; + IBOutlet NSTextView *woxSourceView; + IBOutlet NSTextField *woComponentNameField; + IBOutlet NSTextView *woSourceView; + IBOutlet NSTextView *woDefinitionView; + + IBOutlet NSTextView *htmlView; + + IBOutlet NSTableView *responseHeaderInfoTableView; + NSMutableArray *responseHeaderValues; + + SOPEXWebConnection *connection; + SOPEXToolbarController *toolbarController; + + SOPEXDocument *document; +} + +- (NSTextView *)document:(SOPEXDocument *)document textViewForType:(NSString *)fileType; + +- (void)setWebConnection:(SOPEXWebConnection *)_conn; + +- (IBAction)orderFront:(id)sender; +- (IBAction)reload:(id)sender; +- (IBAction)back:(id)sender; +- (IBAction)viewApplication:(id)sender; +- (IBAction)viewSource:(id)sender; +- (IBAction)viewHTML:(id)sender; +- (IBAction)viewHTTP:(id)sender; + +- (IBAction)editInXcode:(id)sender; + + /* debugging */ +- (IBAction)toggleToolbar:(id)sender; + +@end + +#endif /* __SOPEX_SOPEXBrowserController_H_ */ diff --git a/sopex/SOPEX/SOPEXBrowserController.m b/sopex/SOPEX/SOPEXBrowserController.m new file mode 100644 index 00000000..81cc7c8b --- /dev/null +++ b/sopex/SOPEX/SOPEXBrowserController.m @@ -0,0 +1,651 @@ +/* + Copyright (C) 2004 Marcus Mueller + + This file is part of OpenGroupware.org. + + OGo is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by the + Free Software Foundation; either version 2, or (at your option) any + later version. + + OGo is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public + License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with OGo; see the file COPYING. If not, write to the + Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA + 02111-1307, USA. +*/ + +#import "SOPEXBrowserController.h" +#import +#import +#import +#import +#import "SOPEXAppController.h" +#import "SOPEXToolbarController.h" +#import "SOPEXWebConnection.h" +#import "WebView+Ext.h" +#import "SOPEXBrowserWindow.h" +#import "SOPEXDocument.h" +#import "SOPEXWOXDocument.h" +#import "SOPEXWODocument.h" +#import "SOPEXSheetRunner.h" +#include "common.h" + +#define DNC [NSNotificationCenter defaultCenter] +#define UD [NSUserDefaults standardUserDefaults] + + +@interface SOPEXBrowserController (PrivateAPI) +- (void)setStatus:(NSString *)_msg; +- (void)setStatus:(NSString *)_msg isError:(BOOL)isError; +- (void)flushDocument; +- (void)createDocumentFromResponse; +- (void)_selectTabWithIdentifier:(NSString *)identifier; +@end + + +@implementation SOPEXBrowserController + +NSString *SOPEXApplicationTabIdentifier = @"application"; +NSString *SOPEXWOTabIdentifier = @"wo"; +NSString *SOPEXWOXTabIdentifier = @"wox"; +NSString *SOPEXHTMLTabIdentifier = @"html"; +NSString *SOPEXHTTPTabIdentifier = @"http"; + +static NGLogger *logger = nil; + ++ (void)initialize { + NGLoggerManager *lm; + static BOOL didInit = NO; + + if(didInit) return; + didInit = YES; + lm = [NGLoggerManager defaultLoggerManager]; + logger = [lm loggerForDefaultKey:@"SOPEXDebugEnabled"]; +} + + +/* init & dealloc */ + +- (id)init { + self = [super init]; + if(self) { + [NSBundle loadNibNamed:@"SOPEXBrowserController" owner:self]; + NSAssert(self->mainWindow != nil, + @"Problem loading SOPEXBrowserController.nib!"); + } + return self; +} + +- (oneway void)release { +#warning !! FIXME + /* This seems to be triggered by a bug in WebKit by the resource load + delegate, after a successful load - it might be another problem, + though. + */ +#if 0 + [self errorWithFormat:@"%s THIS SHOULD NEVER HAPPEN!!", __PRETTY_FUNCTION__]; +#endif +} + +- (void)dealloc +{ + [self->responseHeaderValues release]; + [self->connection release]; + [self->toolbarController release]; + [self->document release]; + [super dealloc]; +} + + +/* setup */ + +- (void)awakeFromNib { + [self->webView setGroupName:@"WebUI"]; + self->responseHeaderValues = [[NSMutableArray alloc] initWithCapacity:20]; + + self->toolbarController = [[SOPEXToolbarController alloc] + initWithIdentifier:@"SOPEXWebUI" + target:self]; + + [self setStatus:nil]; + [self viewApplication:nil]; +} + + +/* accessors */ + +- (void)setWebConnection:(SOPEXWebConnection *)_conn { + ASSIGN(self->connection, _conn); + if(logger) + [self debugWithFormat:@"%s connection: %@", + __PRETTY_FUNCTION__, + self->connection]; +} + + +/* actions */ + +- (IBAction)orderFront:(id)sender { + [self->mainWindow makeKeyAndOrderFront:sender]; +} + +- (IBAction)reload:(id)sender { + if(sender == nil) { + NSURLRequest *rq; + + rq = [NSURLRequest requestWithURL:[self->connection url] cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:10.0]; + if(logger) + [self debugWithFormat:@"%s request: %@", __PRETTY_FUNCTION__, rq]; + [[self->webView mainFrame] loadRequest:rq]; + } + else { + [self->webView reload:self]; + } + [self viewApplication:sender]; +} + +- (IBAction)back:(id)sender { + [self->webView goBack]; +} + +- (IBAction)viewApplication:(id)sender { + [self _selectTabWithIdentifier:SOPEXApplicationTabIdentifier]; +} + +- (IBAction)viewSource:(id)sender { + NSString *componentName; + + componentName = [[self->document path] lastPathComponent]; + if([componentName hasSuffix:@"wo"]) { + [self->woComponentNameField setStringValue:componentName]; + [self _selectTabWithIdentifier:SOPEXWOTabIdentifier]; + } + else { + [self->woxNameField setStringValue:componentName]; + [self _selectTabWithIdentifier:SOPEXWOXTabIdentifier]; + } +} + +- (IBAction)viewHTML:(id)sender { + WebDataSource *dataSource; + id representation; + NSString *source; + + dataSource = [[self->webView mainFrame] dataSource]; + NSAssert(dataSource != nil, @"dataSource not yet committed?!"); + NSAssert([dataSource isLoading] == NO, @"dataSource not finished loading?!"); + + representation = [dataSource representation]; + + if([representation canProvideDocumentSource]) + source = [representation documentSource]; + else + source = @""; + + [self->htmlView setString:source]; + [self _selectTabWithIdentifier:SOPEXHTMLTabIdentifier]; +} + +- (IBAction)viewHTTP:(id)sender { + WebDataSource *dataSource; + NSHTTPURLResponse *response; + NSDictionary *headerFields; + NSArray *headers; + int count, i; + + dataSource = [[self->webView mainFrame] dataSource]; + response = (NSHTTPURLResponse *)[dataSource response]; + + headerFields = [response allHeaderFields]; + headers = [headerFields allKeys]; + count = [headers count]; + + [self->responseHeaderValues removeAllObjects]; + + for(i = 0; i < count; i++) { + NSString *header, *value; + NSDictionary *headerValueInfo; + + header = [headers objectAtIndex:i]; + value = [headerFields objectForKey:header]; + headerValueInfo = [[NSDictionary alloc] initWithObjectsAndKeys:value, + @"value", header, @"header", nil]; + [self->responseHeaderValues addObject:headerValueInfo]; + [headerValueInfo release]; + } + + [self->responseHeaderInfoTableView reloadData]; + [self _selectTabWithIdentifier:SOPEXHTTPTabIdentifier]; +} + +- (void)_selectTabWithIdentifier:(NSString *)identifier { + [self->tabView selectTabViewItemWithIdentifier:identifier]; +} + +- (IBAction)saveDocument:(id)sender { + if(self->document == nil) + return; + if([self->document hasChanges]) { + if(![self->document performSave]) { + NSBeep(); + return; + } + [self->mainWindow setDocumentEdited:NO]; + } +} + +- (IBAction)revertDocumentToSaved:(id)sender { + [self->document revertChanges]; + [self->mainWindow setDocumentEdited:NO]; +} + +- (IBAction)toggleToolbar:(id)sender { + if([self->mainWindow toolbar] == nil) + [self->toolbarController applyOnWindow:self->mainWindow]; + else + [self->mainWindow setToolbar:nil]; +} + +- (IBAction)editInXcode:(id)sender { + NSString *path; + + path = [self->document path]; + [[NSWorkspace sharedWorkspace] openFile:path withApplication:@"Xcode" andDeactivate:YES]; +} + + +/* menu & toolbar */ + +- (BOOL)validateToolbarItem:(NSToolbarItem *)theItem { + return [self validateMenuItem:(id )theItem]; +} + +- (BOOL)validateMenuItem:(id )_item { + SEL action = [_item action]; + NSString *tabId; + +#if 0 + NSLog(@"%s action:%@", __PRETTY_FUNCTION__, NSStringFromSelector(action)); +#endif + if(action == @selector(back:)) + return [self->webView canGoBack]; + else if(action == @selector(saveDocument:) || + action == @selector(revertDocumentToSaved:)) + { + return self->document == nil ? NO : [self->document hasChanges]; + } + + tabId = [[self->tabView selectedTabViewItem] identifier]; + if(action == @selector(viewApplication:)) { + BOOL isOn = [tabId isEqualToString:SOPEXApplicationTabIdentifier]; + [_item setState:isOn ? NSOnState : NSOffState]; + } + else if(action == @selector(viewSource:)) { + BOOL isOn = ([tabId isEqualToString:SOPEXWOXTabIdentifier] || + [tabId isEqualToString:SOPEXWOTabIdentifier]); + [_item setState:isOn ? NSOnState : NSOffState]; + + return self->document != nil ? YES : NO; + } + else if(action == @selector(viewHTML:)) { + BOOL isOn; + WebDataSource *dataSource; + + isOn = [tabId isEqualToString:SOPEXHTMLTabIdentifier]; + [_item setState:isOn ? NSOnState : NSOffState]; + dataSource = [[self->webView mainFrame] dataSource]; + if(dataSource == nil) + return NO; + return [dataSource isLoading] == NO; + } + else if(action == @selector(viewHTTP:)) { + BOOL isOn = [tabId isEqualToString:SOPEXHTTPTabIdentifier]; + [_item setState:isOn ? NSOnState : NSOffState]; + } + return YES; +} + + +/* SOPEXDocumentController PROTOCOL */ + +- (NSTextView *)document:(SOPEXDocument *)_document + textViewForType:(NSString *)_fileType +{ + if([_document isKindOfClass:[SOPEXWODocument class]]) { + if([_fileType isEqualToString:@"html"]) + return self->woSourceView; + return self->woDefinitionView; + } + return self->woxSourceView; +} + +- (void)document:(SOPEXDocument *)document + didValidateWithError:(NSError *)error + forType:(NSString *)fileType +{ + [self viewSource:self]; +} + + +/* private api */ + +- (void)setStatus:(NSString *)_msg { + [self setStatus:_msg isError:NO]; +} + +- (void)setStatus:(NSString *)_msg isError:(BOOL)isError { + if(_msg == nil) + _msg = @""; + [self->statusBarTextField setStringValue:_msg]; +} + +- (void)flushDocument { + [self->document release]; + self->document = nil; + [self->mainWindow setDocumentEdited:NO]; +} + +- (void)createDocumentFromResponse { + WebDataSource *dataSource; + NSHTTPURLResponse *response; + NSDictionary *headerFields; + NSString *templatePath; + + dataSource = [[self->webView mainFrame] dataSource]; + response = (NSHTTPURLResponse *)[dataSource response]; + + if([response isKindOfClass:[NSHTTPURLResponse class]]) { + headerFields = [response allHeaderFields]; + // NOTE: WebKit cuddly-capses header keys! + templatePath = [headerFields objectForKey:@"X-Sope-Template-Path"]; + if(templatePath == nil) + return; + + if([templatePath hasSuffix:@"wo"]) + self->document = [[SOPEXWODocument alloc] initWithPath:templatePath + controller:self]; + else + self->document = [[SOPEXWOXDocument alloc] initWithPath:templatePath + controller:self]; + } +} + + +/* window delegate */ + + +- (BOOL)windowShouldClose:(id)sender { +#if 0 + if(logger) + [self debugWithFormat:@"%s sender:%@", __PRETTY_FUNCTION__, sender]; +#endif + + if(sender != self->mainWindow) + return YES; + + if(self->document != nil && [self->document hasChanges]) { + id panel; + int rc; + + panel = NSGetAlertPanel( + NSLocalizedString(@"Do you want to save changes to the source code before closing?", "Title of the alert sheet when window should close but changes are still not saved"), + NSLocalizedString(@"If you don\\u2019t save, your changes will be lost.", "Message of the alert sheet when unsaved changes are about to be lost"), + NSLocalizedString(@"Save", "Default button text for the alert sheet"), + NSLocalizedString(@"Don\\u2019t save", "Alternate button text for the alert sheet"), + NSLocalizedString(@"Cancel", "Other button text for the alert sheet") + ); + + rc = SOPEXRunSheetModalForWindow(panel, self->mainWindow); + NSReleaseAlertPanel(panel); + + // NSAlertOtherReturn == Cancel + // NSAlertAlternateReturn == Don't save + // NSAlertDefaultReturn == Save + + if(rc == NSAlertOtherReturn) + return NO; + if(rc == NSAlertDefaultReturn) + [self saveDocument:self]; + [self flushDocument]; + } + return YES; +} + +/* tableview datasource */ + +- (int)numberOfRowsInTableView:(NSTableView *)_tableView { + return [self->responseHeaderValues count]; +} + +- (id)tableView:(NSTableView *)_tableView + objectValueForTableColumn:(NSTableColumn *)_tableColumn + row:(int)_rowIndex +{ + return [[self->responseHeaderValues objectAtIndex:_rowIndex] + objectForKey:[_tableColumn identifier]]; +} + + +/* WebResourceLoadDelegate */ + +- (id)webView:(WebView *)_sender + identifierForInitialRequest:(NSURLRequest *)_rq + fromDataSource:(WebDataSource *)_ds +{ + return [[_rq URL] absoluteString]; +} + +- (NSURLRequest *)webView:(WebView *)_sender + resource:(id)_id + willSendRequest:(NSURLRequest *)_rq + redirectResponse:(NSURLResponse *)redirectResponse + fromDataSource:(WebDataSource *)_ds +{ + /* use that to patch resource requests to local files ;-) */ + NSURL *url, *rurl; + + url = [_rq URL]; + if(logger) + [self debugWithFormat:@"%s: %@ request: %@ url: %@", + __PRETTY_FUNCTION__, + _id, + _rq, + url]; + + if (![self->connection shouldRewriteRequestURL:url]) + return _rq; + + if ((rurl = [self->connection rewriteRequestURL:url]) == nil) + return _rq; + if ([rurl isEqual:url]) + return _rq; + + return [NSURLRequest requestWithURL:rurl + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:5.0]; +} + +- (void)webView:(WebView *)_sender + resource:(id)_rid + didReceiveContentLength:(unsigned)_length + fromDataSource:(WebDataSource *)_ds +{ + //NSLog(@"%s: %@ len: %d", __PRETTY_FUNCTION__, _rid, _length); +} + +- (void)webView:(WebView *)_sender + resource:(id)_rid + didFinishLoadingFromDataSource:(WebDataSource *)_ds +{ + NSURLResponse *r = [_ds response]; + + if(logger) { + [self debugWithFormat:@"%s: %@ ds: %@\n data-len: %i\n response: %@\n " + @"type: %@\n enc: %@", + __PRETTY_FUNCTION__, _rid, _ds, + [[_ds data] length], r, [r MIMEType], + [r textEncodingName]]; + } + [self->connection processResponse:[_ds response] data:[_ds data]]; +} + +- (void)webView:(WebView *)_sender + resource:(id)_rid + didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)_c + fromDataSource:(WebDataSource *)_ds +{ + if(logger) + [self debugWithFormat:@"%s: %@ ds: %@", __PRETTY_FUNCTION__, _rid, _ds]; +} + +- (void)webView:(WebView *)_sender + resource:(id)_identifier + didReceiveResponse:(NSURLResponse *)_response + fromDataSource:(WebDataSource *)_ds +{ + if (logger) { + [self debugWithFormat:@"%s: view: %@\n resource: %@\n received: %@\n" + @" datasource: %@\n data-len: %i%s", + __PRETTY_FUNCTION__, + _sender, _identifier, _response, _ds, + [[_ds data] length], + [_ds isLoading]? " LOADING" : ""]; + } +} + + +/* WebFrameLoadDelegate */ + + +- (void)webView:(WebView *)sender + didStartProvisionalLoadForFrame:(WebFrame *)frame +{ + if(self->document != nil && [self->document hasChanges]) { + id panel; + int rc; + + panel = NSGetAlertPanel( + NSLocalizedString(@"Do you want to save changes to the source code before proceeding?", "Title of the alert sheet when user wants to proceed but changes are still not saved"), + NSLocalizedString(@"If you don\\u2019t save, your changes will be lost.", "Message of the alert sheet when unsaved changes are about to be lost"), + NSLocalizedString(@"Save", "Default button text for the alert sheet"), + NSLocalizedString(@"Don\\u2019t save", "Alternate button text for the alert sheet"), + NULL); + + rc = SOPEXRunSheetModalForWindow(panel, self->mainWindow); + NSReleaseAlertPanel(panel); + + // NSAlertOtherReturn == Cancel + // NSAlertAlternateReturn == Don't save + // NSAlertDefaultReturn == Save + + if(rc == NSAlertDefaultReturn) + [self saveDocument:self]; + } + [self flushDocument]; + [self->progressIndicator startAnimation:self]; +} + +- (void)webView:(WebView *)sender + didReceiveTitle:(NSString *)_title + forFrame:(WebFrame *)_frame +{ + [self->mainWindow setTitle:_title]; +} + + +- (void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame { + [self->progressIndicator stopAnimation:self]; + +#if 0 +#warning ** setFavIcon enabled ... doesnt really make sense + [self->mainWindow setFavIcon:[sender pageIcon]]; +#endif + [self createDocumentFromResponse]; +} + +- (void)webView:(WebView *)sender + didFailLoadWithError:(NSError *)error + forFrame:(WebFrame *)frame +{ + [self->progressIndicator stopAnimation:self]; + [self setStatus:[error localizedDescription] isError:YES]; +} + +- (void)webView:(WebView *)sender + didFailProvisionalLoadWithError:(NSError *)error + forFrame:(WebFrame *)frame +{ + [self webView:sender didFailLoadWithError:error forFrame:frame]; +} + + +/* WebView UI delegate */ + +- (BOOL)webViewIsStatusBarVisible:(WebView *)sender { + return YES; +} + +- (void)webView:(WebView *)sender + mouseDidMoveOverElement:(NSDictionary *)_info + modifierFlags:(unsigned int)_flags +{ + NSURL *url; + +#if 0 + NSLog(@"%s _info:%@", __PRETTY_FUNCTION__, _info); +#endif + + + url = [_info objectForKey:WebElementImageURLKey]; + if(url != nil) { + NSString *altString; + NSRect imageRect; + NSImage *image; + NSMutableString *status; + + altString = [_info objectForKey:WebElementImageAltStringKey]; + imageRect = [[_info objectForKey:WebElementImageRectKey] rectValue]; + image = [_info objectForKey:WebElementImageKey]; + + status = [NSMutableString string]; + + if(altString == nil) + altString = [url absoluteString]; + + url = [_info objectForKey:WebElementLinkURLKey]; + if(url != nil) + [status appendFormat:@"%@ ", [url absoluteString]]; + + [status appendFormat:@"[%@] (w:%.0f h:%.0f)", + altString, + imageRect.size.width, imageRect.size.height]; + if(NSEqualSizes([image size], imageRect.size) == NO) { + NSSize size = [image size]; + [status appendFormat:@" -> scaled from (w:%.0f h:%.0f)!", size.width, size.height]; + } + + [self setStatus:status]; + return; + } + + url = [_info objectForKey:WebElementLinkURLKey]; + if(url != nil) { + [self setStatus:[url absoluteString]]; + return; + } + + [self setStatus:nil]; +} + +/* Logging */ + +- (id)debugLogger { + return logger; +} + +@end diff --git a/sopex/SOPEX/SOPEXBrowserWindow.h b/sopex/SOPEX/SOPEXBrowserWindow.h index 157b3fe3..aec93c48 100644 --- a/sopex/SOPEX/SOPEXBrowserWindow.h +++ b/sopex/SOPEX/SOPEXBrowserWindow.h @@ -18,11 +18,11 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -// $Id: SOPEXBrowserWindow.h 1 2004-08-20 11:17:52Z znek $ +// $Id: SOPEXBrowserWindow.h,v 1.2 2004/03/26 19:05:23 znek Exp $ // Created by znek on Mon Mar 22 2004. -#ifndef __SOPEXBrowserWindow_H_ -#define __SOPEXBrowserWindow_H_ +#ifndef __SOPEX_SOPEXBrowserWindow_H_ +#define __SOPEX_SOPEXBrowserWindow_H_ #import @@ -36,4 +36,4 @@ @end -#endif /* __SOPEXBrowserWindow_H_ */ +#endif /* __SOPEX_SOPEXBrowserWindow_H_ */ diff --git a/sopex/SOPEX/SOPEXBrowserWindow.m b/sopex/SOPEX/SOPEXBrowserWindow.m index 542fbdd2..d6d35259 100644 --- a/sopex/SOPEX/SOPEXBrowserWindow.m +++ b/sopex/SOPEX/SOPEXBrowserWindow.m @@ -18,7 +18,7 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -// $Id: SOPEXBrowserWindow.m 1 2004-08-20 11:17:52Z znek $ +// $Id: SOPEXBrowserWindow.m,v 1.3 2004/05/02 16:27:46 znek Exp $ // Created by znek on Mon Mar 22 2004. diff --git a/sopex/SOPEX/SOPEXConsole.h b/sopex/SOPEX/SOPEXConsole.h index b5115b31..7c6fbc00 100644 --- a/sopex/SOPEX/SOPEXConsole.h +++ b/sopex/SOPEX/SOPEXConsole.h @@ -1,54 +1,48 @@ /* - Copyright (C) 2000-2003 SKYRIX Software AG + Copyright (C) 2004 Marcus Mueller - This file is part of OGo + This file is part of OpenGroupware.org. - OGo is free software; you can redistribute it and/or modify it under - the terms of the GNU Lesser General Public License as published by the - Free Software Foundation; either version 2, or (at your option) any - later version. + OGo is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by the + Free Software Foundation; either version 2, or (at your option) any + later version. - OGo is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - License for more details. + OGo is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public + License for more details. - You should have received a copy of the GNU Lesser General Public - License along with OGo; see the file COPYING. If not, write to the - Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. - */ -// $Id: SOPEXConsole.h 1 2004-08-20 11:17:52Z znek $ -// Created by znek on Mon Jan 26 2004. + You should have received a copy of the GNU Lesser General Public + License along with OGo; see the file COPYING. If not, write to the + Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA + 02111-1307, USA. +*/ -#ifndef __SOPEXConsole_H_ -#define __SOPEXConsole_H_ +#ifndef __SOPEX_SOPEXConsole_H_ +#define __SOPEX_SOPEXConsole_H_ #import @class SOPEXToolbarController; - @interface SOPEXConsole : NSObject { - IBOutlet NSWindow *window; - IBOutlet NSTextView *text; - - SOPEXToolbarController *toolbar; - - NSPipe *stdoutPipe, *stderrPipe; - NSDictionary *stdoutAttributes, *stderrAttributes; + IBOutlet NSWindow *window; + IBOutlet NSTextView *text; + + SOPEXToolbarController *toolbar; + + NSDictionary *stdoutAttributes, *stderrAttributes; } -- (id)initWithStandardOutput:(id)standardOutput standardError:(id)standardError; - -- (void)setStandardOutput:(id)standardOutput standardError:(id)standardError; - - (IBAction)orderFront:(id)sender; - (IBAction)clear:(id)sender; - (BOOL)validateMenuItem:(id )menuItem; +- (void)appendLogEvent:(NGLogEvent *)_event; + @end -#endif /* __SOPEXConsole_H_ */ +#endif /* __SOPEX_SOPEXConsole_H_ */ diff --git a/sopex/SOPEX/SOPEXConsole.m b/sopex/SOPEX/SOPEXConsole.m index 817a1aea..54a01310 100644 --- a/sopex/SOPEX/SOPEXConsole.m +++ b/sopex/SOPEX/SOPEXConsole.m @@ -1,33 +1,27 @@ /* - Copyright (C) 2000-2003 SKYRIX Software AG + Copyright (C) 2004 Marcus Mueller - This file is part of OGo + This file is part of OpenGroupware.org. - OGo is free software; you can redistribute it and/or modify it under - the terms of the GNU Lesser General Public License as published by the - Free Software Foundation; either version 2, or (at your option) any - later version. + OGo is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by the + Free Software Foundation; either version 2, or (at your option) any + later version. - OGo is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - License for more details. + OGo is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public + License for more details. - You should have received a copy of the GNU Lesser General Public - License along with OGo; see the file COPYING. If not, write to the - Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. - */ -// $Id: SOPEXConsole.m 1 2004-08-20 11:17:52Z znek $ -// Created by znek on Mon Jan 26 2004. + You should have received a copy of the GNU Lesser General Public + License along with OGo; see the file COPYING. If not, write to the + Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA + 02111-1307, USA. +*/ +#include "SOPEXConsole.h" -#import "SOPEXConsole.h" -#import "SOPEXToolbarController.h" - - -#define DNC [NSNotificationCenter defaultCenter] - +@class NGLogEvent; @interface SOPEXConsole (PrivateAPI) - (NSFont *)stdoutFont; @@ -35,202 +29,118 @@ - (NSColor *)stdoutFontColor; - (NSColor *)stderrFontColor; -- (void)appendConsoleData:(NSData *)data usingAttributes:(NSDictionary *)attributes; +- (void)appendLogEvent:(NGLogEvent *)_event; @end +#include "SOPEXToolbarController.h" +#include "common.h" @implementation SOPEXConsole -#pragma mark - -#pragma mark ### INIT & DEALLOC ### +static NGLogEventFormatter *eventFormatter = nil; ++ (void)initialize { + static BOOL didInit = NO; + + if(didInit) return; + didInit = YES; + eventFormatter = [[NSClassFromString(@"SOPEXConsoleEventFormatter") alloc] init]; +} -- (id)init -{ - [super init]; - +- (id)init { + self = [super init]; + if(self) { [NSBundle loadNibNamed:@"SOPEXConsole" owner:self]; NSAssert(self->window != nil, @"Problem loading SOPEXConsole.nib!"); - + self->toolbar = [[SOPEXToolbarController alloc] initWithIdentifier:@"SOPEXConsole" target:self]; [self->toolbar applyOnWindow:self->window]; - + self->stdoutAttributes = [[NSDictionary alloc] initWithObjectsAndKeys:[self stdoutFont], NSFontAttributeName, [self stdoutFontColor], NSForegroundColorAttributeName, nil]; self->stderrAttributes = [[NSDictionary alloc] initWithObjectsAndKeys:[self stderrFont], NSFontAttributeName, [self stderrFontColor], NSForegroundColorAttributeName, nil]; - return self; -} - -- (id)initWithStandardOutput:(id)standardOutput standardError:(id)standardError -{ - [self init]; - [self setStandardOutput:standardOutput standardError:standardError]; - return self; + } + return self; } -- (void)dealloc -{ - [DNC removeObserver:self]; - [self->window orderOut:self]; - [self->stdoutPipe release]; - [self->stderrPipe release]; - [self->stdoutAttributes release]; - [self->stderrAttributes release]; - [super dealloc]; +- (void)dealloc { + [self->window orderOut:self]; + [self->stdoutAttributes release]; + [self->stderrAttributes release]; + [super dealloc]; } -#pragma mark - -#pragma mark ### CONSOLE PROPERTIES ### +/* console properties */ - -- (NSFont *)stdoutFont -{ - return [NSFont fontWithName:@"Courier" size:12]; +- (NSFont *)stdoutFont { + return [NSFont fontWithName:@"Courier" size:12]; } - -- (NSFont *)stderrFont -{ - return [NSFont fontWithName:@"Courier" size:12]; +- (NSFont *)stderrFont { + return [NSFont fontWithName:@"Courier" size:12]; } - -- (NSColor *)stdoutFontColor -{ - return [NSColor blackColor]; +- (NSColor *)stdoutFontColor { + return [NSColor blackColor]; } - -- (NSColor *)stderrFontColor -{ - return [NSColor redColor]; +- (NSColor *)stderrFontColor { + return [NSColor redColor]; } -#pragma mark - -#pragma mark ### WINDOW HANDLING & DELEGATE ### - +/* window handling/delegate */ -- (IBAction)orderFront:(id)sender -{ - [self->window makeKeyAndOrderFront:sender]; +- (IBAction)orderFront:(id)sender { + [self->window makeKeyAndOrderFront:sender]; } - -- (void)windowWillClose:(NSNotification *)aNotification -{ +- (void)windowWillClose:(NSNotification *)_notif { } -#pragma mark - -#pragma mark ### ACTIONS ### - - -- (IBAction)clear:(id)sender -{ - NSTextStorage *textStorage; +/* actions */ - textStorage = [self->text textStorage]; - [textStorage beginEditing]; - [textStorage deleteCharactersInRange:NSMakeRange(0, [textStorage length])]; - [textStorage endEditing]; +- (IBAction)clear:(id)sender { + NSTextStorage *storage; + + storage = [self->text textStorage]; + [storage beginEditing]; + [storage deleteCharactersInRange:NSMakeRange(0, [storage length])]; + [storage endEditing]; } -- (BOOL)validateToolbarItem:(NSToolbarItem *)theItem -{ - return [self validateMenuItem:(id )theItem]; +- (BOOL)validateToolbarItem:(NSToolbarItem *)_item { + return [self validateMenuItem:(id )_item]; } -- (BOOL)validateMenuItem:(id )menuItem -{ - SEL action = [menuItem action]; - - if(action == @selector(clear:)) - return [[self->text textStorage] length] > 0; - return YES; +- (BOOL)validateMenuItem:(id )menuItem { + SEL action = [menuItem action]; + + if(action == @selector(clear:)) + return [[self->text textStorage] length] > 0; + return YES; } - -#pragma mark - -#pragma mark ### STDOUT & STDERR ### - - -- (void)setStandardOutput:(id)standardOutput standardError:(id)standardError -{ - if(self->stdoutPipe != nil) - { - [DNC removeObserver:self name:NSFileHandleReadCompletionNotification object:self->stdoutPipe]; - [self->stdoutPipe release]; - } - self->stdoutPipe = [standardOutput retain]; - if(self->stderrPipe != nil) - { - [DNC removeObserver:self name:NSFileHandleReadCompletionNotification object:self->stderrPipe]; - [self->stderrPipe release]; - } - self->stderrPipe = [standardError retain]; - - // register for NSFileHandle notifications - [DNC addObserver:self selector:@selector(readData:) name:NSFileHandleReadCompletionNotification object:[self->stdoutPipe fileHandleForReading]]; - [DNC addObserver:self selector:@selector(readData:) name:NSFileHandleReadCompletionNotification object:[self->stderrPipe fileHandleForReading]]; - - // start reading in background - [[self->stdoutPipe fileHandleForReading] readInBackgroundAndNotify]; - [[self->stderrPipe fileHandleForReading] readInBackgroundAndNotify]; -} - - -#pragma mark - -#pragma mark ### POLLING ### - - -- (void)readData:(NSNotification *)notification -{ - NSData *data; - NSFileHandle *fileHandle; - NSDictionary *attributes; - - fileHandle = [notification object]; - data = [[notification userInfo] objectForKey:NSFileHandleNotificationDataItem]; - - if([data length] == 0) - { - NSLog(@"%s pipe closed the connection!", __PRETTY_FUNCTION__); - return; - } - - [fileHandle readInBackgroundAndNotify]; - - if(fileHandle == [self->stdoutPipe fileHandleForReading]) - attributes = self->stdoutAttributes; - else - attributes = self->stderrAttributes; - - [self appendConsoleData:data usingAttributes:attributes]; -} - -- (void)appendConsoleData:(NSData *)data usingAttributes:(NSDictionary *)attributes -{ - NSTextStorage *textStorage; - NSString *message; - unsigned int location; - - textStorage = [self->text textStorage]; - -// NSLog(@"%s ping ... %@", __PRETTY_FUNCTION__, textStorage); - - message = [[NSString alloc] initWithData:data encoding:NSMacOSRomanStringEncoding]; - - [textStorage beginEditing]; - location = [textStorage length]; - [textStorage replaceCharactersInRange:NSMakeRange(location, 0) withString:message]; - [textStorage setAttributes:attributes range:NSMakeRange(location, [textStorage length] - location)]; - - if([textStorage length] > 50 * 1024) - [textStorage deleteCharactersInRange:NSMakeRange(0, [textStorage length] - 50 * 1024)]; - [textStorage endEditing]; - - [message release]; - - // scroll to bottom if verticalScroller is at bottom - if([[(NSScrollView*)[[self->text superview] superview] verticalScroller] floatValue] == 1.0) - [self->text scrollRangeToVisible:NSMakeRange([textStorage length], 1)]; +- (void)appendLogEvent:(NGLogEvent *)_event { + NSTextStorage *storage; + NSString *msg; + unsigned loc; + + storage = [self->text textStorage]; + msg = [eventFormatter formattedEvent:_event]; + + [storage beginEditing]; + loc = [storage length]; + [storage replaceCharactersInRange:NSMakeRange(loc, 0) withString:msg]; + [storage replaceCharactersInRange:NSMakeRange([storage length], 0) + withString:@"\n"]; + [storage setAttributes:self->stdoutAttributes + range:NSMakeRange(loc, [msg length] + 1)]; + + if([storage length] > 50 * 1024) + [storage deleteCharactersInRange:NSMakeRange(0, [storage length] - 50 * 1024)]; + [storage endEditing]; + + // scroll to bottom if verticalScroller is at bottom + if([[(NSScrollView*)[[self->text superview] superview] verticalScroller] floatValue] == 1.0) + [self->text scrollRangeToVisible:NSMakeRange([storage length], 1)]; } @end diff --git a/sopex/SOPEX/SOPEXConsoleAppender.m b/sopex/SOPEX/SOPEXConsoleAppender.m new file mode 100644 index 00000000..1eddcdb1 --- /dev/null +++ b/sopex/SOPEX/SOPEXConsoleAppender.m @@ -0,0 +1,56 @@ +/* + Copyright (C) 2004 Marcus Mueller + + This file is part of OpenGroupware.org. + + OGo is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by the + Free Software Foundation; either version 2, or (at your option) any + later version. + + OGo is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public + License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with OGo; see the file COPYING. If not, write to the + Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA + 02111-1307, USA. +*/ + +#include + +@interface SOPEXConsoleAppender : NGLogAppender +{ +} + +@end + +#include "SOPEXAppController.h" + +@interface SOPEXAppController (Private) ++ (SOPEXAppController *)sharedAppController; +@end + +#include "SOPEXConsole.h" +#include "common.h" + + +@implementation SOPEXConsoleAppender + +- (void)appendLogEvent:(NGLogEvent *)_event { + SOPEXConsole *console; + + console = [[SOPEXAppController sharedAppController] console]; + [console appendLogEvent:_event]; +} + +@end /* SOPEXConsoleAppender */ + +@implementation SOPEXAppController (Private) ++ (SOPEXAppController *)sharedAppController { + return [NSApp delegate]; +} +@end /* SOPEXAppController */ + diff --git a/sopex/SOPEX/SOPEXConsoleEventFormatter.m b/sopex/SOPEX/SOPEXConsoleEventFormatter.m new file mode 100644 index 00000000..123c714c --- /dev/null +++ b/sopex/SOPEX/SOPEXConsoleEventFormatter.m @@ -0,0 +1,59 @@ +/* + Copyright (C) 2004 Marcus Mueller + + This file is part of OpenGroupware.org. + + OGo is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by the + Free Software Foundation; either version 2, or (at your option) any + later version. + + OGo is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public + License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with OGo; see the file COPYING. If not, write to the + Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA + 02111-1307, USA. +*/ + +#include + +@interface SOPEXConsoleEventFormatter : NGLogEventFormatter +{ + +} + +@end + +#include "common.h" + +@implementation SOPEXConsoleEventFormatter + +static __inline__ unsigned char * levelPrefixForEvent(NGLogEvent *_event) { + switch ([_event level]) { + case NGLogLevelWarn: return "[WARN ] "; + case NGLogLevelError: return "[ERROR] "; + case NGLogLevelFatal: return "[FATAL] "; + default: return ""; + } +} + +- (NSString *)formattedEvent:(NGLogEvent *)_event { + NSMutableString *fe; + NSCalendarDate *date; + + fe = [NSMutableString stringWithCapacity:160]; + /* timestamp, level prefix */ + date = [_event date]; + [fe appendFormat:@"%02i:%02i:%02i %s", + [date hourOfDay], [date minuteOfHour], [date secondOfMinute], + levelPrefixForEvent(_event)]; + /* message */ + [fe appendString:[_event message]]; + return fe; +} + +@end diff --git a/sopex/SOPEX/SOPEXConstants.h b/sopex/SOPEX/SOPEXConstants.h index 473fa585..1df178a2 100644 --- a/sopex/SOPEX/SOPEXConstants.h +++ b/sopex/SOPEX/SOPEXConstants.h @@ -1,28 +1,26 @@ /* - Copyright (C) 2000-2003 SKYRIX Software AG + Copyright (C) 2004 Marcus Mueller - This file is part of OGo + This file is part of OpenGroupware.org. - OGo is free software; you can redistribute it and/or modify it under - the terms of the GNU Lesser General Public License as published by the - Free Software Foundation; either version 2, or (at your option) any - later version. + OGo is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by the + Free Software Foundation; either version 2, or (at your option) any + later version. - OGo is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - License for more details. + OGo is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public + License for more details. - You should have received a copy of the GNU Lesser General Public - License along with OGo; see the file COPYING. If not, write to the - Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. - */ -// $Id: SOPEXConstants.h 1 2004-08-20 11:17:52Z znek $ -// Created by znek on Fri Feb 13 2004. + You should have received a copy of the GNU Lesser General Public + License along with OGo; see the file COPYING. If not, write to the + Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA + 02111-1307, USA. +*/ -#ifndef __SOPEXConstants_H_ -#define __SOPEXConstants_H_ +#ifndef __SOPEX_SOPEXConstants_H_ +#define __SOPEX_SOPEXConstants_H_ #import @@ -30,4 +28,4 @@ extern NSString *SOPEXDaemonFlag; -#endif /* __SOPEXConstants_H_ */ +#endif /* __SOPEX_SOPEXConstants_H_ */ diff --git a/sopex/SOPEX/SOPEXConstants.m b/sopex/SOPEX/SOPEXConstants.m index 6b9ee2b3..d7b80f32 100644 --- a/sopex/SOPEX/SOPEXConstants.m +++ b/sopex/SOPEX/SOPEXConstants.m @@ -1,27 +1,24 @@ /* - Copyright (C) 2000-2003 SKYRIX Software AG + Copyright (C) 2004 Marcus Mueller - This file is part of OGo + This file is part of OpenGroupware.org. - OGo is free software; you can redistribute it and/or modify it under - the terms of the GNU Lesser General Public License as published by the - Free Software Foundation; either version 2, or (at your option) any - later version. + OGo is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by the + Free Software Foundation; either version 2, or (at your option) any + later version. - OGo is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - License for more details. + OGo is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public + License for more details. - You should have received a copy of the GNU Lesser General Public - License along with OGo; see the file COPYING. If not, write to the - Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. - */ -// $Id: SOPEXConstants.m 1 2004-08-20 11:17:52Z znek $ -// Created by znek on Fri Feb 13 2004. - -#import "SOPEXConstants.h" + You should have received a copy of the GNU Lesser General Public + License along with OGo; see the file COPYING. If not, write to the + Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA + 02111-1307, USA. +*/ +#include "SOPEXConstants.h" NSString *SOPEXDaemonFlag = @"--daemon"; diff --git a/sopex/SOPEX/SOPEXContentValidator.h b/sopex/SOPEX/SOPEXContentValidator.h index eb5cd288..c8850f3d 100644 --- a/sopex/SOPEX/SOPEXContentValidator.h +++ b/sopex/SOPEX/SOPEXContentValidator.h @@ -18,7 +18,7 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -// $Id: SOPEXContentValidator.h 1 2004-08-20 11:17:52Z znek $ +// $Id: SOPEXContentValidator.h,v 1.1 2004/04/09 18:53:02 znek Exp $ // Created by znek on Mon Apr 05 2004. #ifndef __SOPEXContentValidator_H_ @@ -26,11 +26,9 @@ #import #import -#import -#import -@interface SOPEXContentValidator : NSObject +@interface SOPEXContentValidator : NSObject { NSMutableArray *warnings; NSMutableArray *errors; diff --git a/sopex/SOPEX/SOPEXContentValidator.m b/sopex/SOPEX/SOPEXContentValidator.m index 6d79a77a..21f9166e 100644 --- a/sopex/SOPEX/SOPEXContentValidator.m +++ b/sopex/SOPEX/SOPEXContentValidator.m @@ -18,7 +18,7 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -// $Id: SOPEXContentValidator.m 1 2004-08-20 11:17:52Z znek $ +// $Id: SOPEXContentValidator.m,v 1.1 2004/04/09 18:53:02 znek Exp $ // Created by znek on Mon Apr 05 2004. @@ -107,15 +107,21 @@ NSString *SOPEXDocumentValidationErrorDomain = @"SOPEXDocumentValidationErrorDom - (NSError *)validateWOHTMLContent:(id)content { - return [self validateContent:content withParserClass:[WOHTMLParser class] selector:@selector(parseHTMLData:)]; + return [self validateContent:content + withParserClass:NSClassFromString(@"WOHTMLParser") + selector:@selector(parseHTMLData:)]; } - (NSError *)validateWODContent:(id)content { - return [self validateContent:content withParserClass:[WODParser class] selector:@selector(parseDeclarationData:)]; + return [self validateContent:content + withParserClass:NSClassFromString(@"WODParser") + selector:@selector(parseDeclarationData:)]; } -- (NSError *)validateContent:(id)content withParserClass:(Class)parserClass selector:(SEL)selector +- (NSError *)validateContent:(id)content + withParserClass:(Class)parserClass + selector:(SEL)selector { NSData *data; id parser; diff --git a/sopex/SOPEX/SOPEXDocument.h b/sopex/SOPEX/SOPEXDocument.h index 47de73c4..81cba7fd 100644 --- a/sopex/SOPEX/SOPEXDocument.h +++ b/sopex/SOPEX/SOPEXDocument.h @@ -18,7 +18,7 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -// $Id: SOPEXDocument.h 1 2004-08-20 11:17:52Z znek $ +// $Id: SOPEXDocument.h,v 1.3 2004/04/09 18:53:02 znek Exp $ // Created by znek on Fri Mar 26 2004. #ifndef __SOPEXDocument_H_ diff --git a/sopex/SOPEX/SOPEXDocument.m b/sopex/SOPEX/SOPEXDocument.m index ae7c6575..aaba702a 100644 --- a/sopex/SOPEX/SOPEXDocument.m +++ b/sopex/SOPEX/SOPEXDocument.m @@ -18,7 +18,7 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -// $Id: SOPEXDocument.m 1 2004-08-20 11:17:52Z znek $ +// $Id: SOPEXDocument.m,v 1.3 2004/04/09 18:53:02 znek Exp $ // Created by znek on Fri Mar 26 2004. @@ -32,33 +32,37 @@ #pragma mark ### INIT & DEALLOC ### -- (id)init -{ - [super init]; - typeTextViewLUT = [[NSMutableDictionary alloc] init]; - undoManagerLUT = [[NSMutableDictionary alloc] init]; - documentEncoding = NSUTF8StringEncoding; +- (id)init { + self = [super init]; + if (self) { + self->typeTextViewLUT = [[NSMutableDictionary alloc] init]; + self->undoManagerLUT = [[NSMutableDictionary alloc] init]; + self->documentEncoding = NSUTF8StringEncoding; + } return self; } -- (id)initWithPath:(NSString *)_path controller:(NSObject *)_controller +- (id)initWithPath:(NSString *)_path + controller:(NSObject *)_controller { - self->controller = _controller; - [self initWithPath:_path]; - [self revertChanges]; + if(self) { + self->controller = _controller; + [self initWithPath:_path]; + [self revertChanges]; + } return self; } -- (id)initWithPath:(NSString *)_path -{ - [self init]; - NSAssert(self->controller != nil, @"controller is not set! This indicates wrong initialization order!"); - self->path = [_path retain]; +- (id)initWithPath:(NSString *)_path { + self = [self init]; + if(self) { + NSAssert(self->controller != nil, @"controller is not set! This indicates wrong initialization order!"); + self->path = [_path retain]; + } return self; } -- (void)dealloc -{ +- (void)dealloc { [self->path release]; [self->typeTextViewLUT release]; [self->undoManagerLUT release]; @@ -70,19 +74,16 @@ #pragma mark ### ACCESSORS ### -- (NSString *)path -{ +- (NSString *)path { return self->path; } -- (NSArray *)fileTypes -{ +- (NSArray *)fileTypes { [NSException raise:NSGenericException format:@"%s SUBCLASS RESPONSIBILITY!", __PRETTY_FUNCTION__]; return nil; } -- (SOPEXTextView *)textViewForFileType:(NSString *)fileType -{ +- (SOPEXTextView *)textViewForFileType:(NSString *)fileType { SOPEXTextView *textView; textView = [self->typeTextViewLUT objectForKey:fileType]; @@ -91,7 +92,6 @@ NSUndoManager *undoManager; textView = [self->controller document:self textViewForType:fileType]; - [textView setDelegate:self]; [self->typeTextViewLUT setObject:textView forKey:fileType]; undoManager = [[NSUndoManager alloc] init]; @@ -101,21 +101,18 @@ return textView; } -- (NSString *)loadRepresentationForFileType:(NSString *)fileType -{ +- (NSString *)loadRepresentationForFileType:(NSString *)fileType { NSData *data; data = [NSData dataWithContentsOfFile:[self fullPathForFileType:fileType]]; return [[[NSString alloc] initWithData:data encoding:self->documentEncoding] autorelease]; } -- (NSString *)fullPathForFileType:(NSString *)fileType -{ +- (NSString *)fullPathForFileType:(NSString *)fileType { return self->path; } -- (NSData *)representationForFileType:(NSString *)fileType -{ +- (NSData *)representationForFileType:(NSString *)fileType { NSTextView *textView; NSData *representation; @@ -124,8 +121,7 @@ return representation; } -- (BOOL)hasChanges -{ +- (BOOL)hasChanges { NSEnumerator *umEnum; NSUndoManager *undoManager; @@ -136,15 +132,13 @@ return NO; } -- (BOOL)performSave -{ +- (BOOL)performSave { NSArray *fileTypes; unsigned i, count; fileTypes = [self fileTypes]; count = [fileTypes count]; - for(i = 0; i < count; i++) - { + for(i = 0; i < count; i++) { NSString *fileType; NSData *representation; @@ -154,8 +148,7 @@ return NO; } - for(i = 0; i < count; i++) - { + for(i = 0; i < count; i++) { NSString *fileType; NSError *status; SOPEXTextView *textView; @@ -174,8 +167,7 @@ return YES; } -- (void)revertChanges -{ +- (void)revertChanges { NSArray *fileTypes; unsigned i, count; @@ -194,8 +186,7 @@ } } -- (NSError *)validateRepresentationForFileType:(NSString *)fileType -{ +- (NSError *)validateRepresentationForFileType:(NSString *)fileType { return nil; } @@ -204,32 +195,27 @@ #pragma mark ### TEXTVIEW DELEGATE ### -- (NSUndoManager *)undoManagerForTextView:(NSTextView *)textView -{ +- (NSUndoManager *)undoManagerForTextView:(NSTextView *)textView { NSString *type; type = [[self->typeTextViewLUT allKeysForObject:textView] lastObject]; return [self->undoManagerLUT objectForKey:type]; } -- (void)textDidChange:(NSNotification *)notification -{ +- (void)textDidChange:(NSNotification *)notification { [self performSelector:@selector(_delayedCheckForDocumentEdited:) withObject:[notification object] afterDelay:0.1]; } -- (void)_delayedCheckForDocumentEdited:(SOPEXTextView *)textView -{ +- (void)_delayedCheckForDocumentEdited:(SOPEXTextView *)textView { [[textView window] setDocumentEdited:[self hasChanges]]; } #if 0 -- (void)textViewWillBecomeFirstResponder:(SOPEXTextView *)textView -{ +- (void)textViewWillBecomeFirstResponder:(SOPEXTextView *)textView { NSLog(@"%s", __PRETTY_FUNCTION__); } -- (void)textViewWillResignFirstResponder:(SOPEXTextView *)textView -{ +- (void)textViewWillResignFirstResponder:(SOPEXTextView *)textView { NSLog(@"%s", __PRETTY_FUNCTION__); } #endif diff --git a/sopex/SOPEX/SOPEXMain.h b/sopex/SOPEX/SOPEXMain.h index a31647ef..289683a5 100644 --- a/sopex/SOPEX/SOPEXMain.h +++ b/sopex/SOPEX/SOPEXMain.h @@ -18,7 +18,7 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -// $Id: SOPEXMain.h 1 2004-08-20 11:17:52Z znek $ +// $Id: SOPEXMain.h,v 1.1 2004/02/16 13:23:55 znek Exp $ // Created by znek on Fri Feb 13 2004. #ifndef __SOPEXMain_H_ diff --git a/sopex/SOPEX/SOPEXMain.m b/sopex/SOPEX/SOPEXMain.m index 0abd835c..3af02e31 100644 --- a/sopex/SOPEX/SOPEXMain.m +++ b/sopex/SOPEX/SOPEXMain.m @@ -18,7 +18,7 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -// $Id: SOPEXMain.m 1 2004-08-20 11:17:52Z znek $ +// $Id: SOPEXMain.m,v 1.3 2004/05/02 16:27:46 znek Exp $ // Created by znek on Fri Feb 13 2004. @@ -27,24 +27,17 @@ #import "SOPEXConstants.h" -int SOPEXMain(NSString *appClassName, int argc, const char *argv[]) -{ +int SOPEXMain(NSString *appClassName, int argc, const char *argv[]) { NSAutoreleasePool *pool; - int status; + NSUserDefaults *ud; + int status; pool = [[NSAutoreleasePool alloc] init]; - - if([[[NSProcessInfo processInfo] arguments] containsObject:SOPEXDaemonFlag]) - { - [[NSUserDefaults standardUserDefaults] - setObject:@".sopex" forKey:@"WOApplicationSuffix"]; - status = WOApplicationMain(appClassName, argc, argv); - } - else - { - status = NSApplicationMain(argc, argv); - } - + ud = [NSUserDefaults standardUserDefaults]; + [ud setObject:@".sopex" forKey:@"WOApplicationSuffix"]; + if(appClassName) + [ud setObject:appClassName forKey:@"SOPEXWOApplicationClass"]; + status = NSApplicationMain(argc, argv); [pool release]; return status; } diff --git a/sopex/SOPEX/SOPEXRangeUtilities.h b/sopex/SOPEX/SOPEXRangeUtilities.h index 425b2b84..587a515f 100644 --- a/sopex/SOPEX/SOPEXRangeUtilities.h +++ b/sopex/SOPEX/SOPEXRangeUtilities.h @@ -18,11 +18,11 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -// $Id: SOPEXRangeUtilities.h 1 2004-08-20 11:17:52Z znek $ +// $Id: SOPEXRangeUtilities.h,v 1.1 2004/03/26 19:05:23 znek Exp $ // Created by znek on Tue Mar 23 2004. -#ifndef __SOPEXRangeUtilities_H_ -#define __SOPEXRangeUtilities_H_ +#ifndef __SOPEX_SOPEXRangeUtilities_H_ +#define __SOPEX_SOPEXRangeUtilities_H_ #import @@ -31,4 +31,4 @@ extern NSRange SOPEX_findMatchingTagForRangeInString(NSRange range, NSString *string); -#endif /* __SOPEXRangeUtilities_H_ */ +#endif /* __SOPEX_SOPEXRangeUtilities_H_ */ diff --git a/sopex/SOPEX/SOPEXRangeUtilities.m b/sopex/SOPEX/SOPEXRangeUtilities.m index d3c7b289..3f82d8ce 100644 --- a/sopex/SOPEX/SOPEXRangeUtilities.m +++ b/sopex/SOPEX/SOPEXRangeUtilities.m @@ -18,7 +18,7 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -// $Id: SOPEXRangeUtilities.m 1 2004-08-20 11:17:52Z znek $ +// $Id: SOPEXRangeUtilities.m,v 1.2 2004/05/02 16:27:46 znek Exp $ // Created by znek on Tue Mar 23 2004. diff --git a/sopex/SOPEX/SOPEXSNSController.h b/sopex/SOPEX/SOPEXSNSController.h deleted file mode 100644 index e58a31b7..00000000 --- a/sopex/SOPEX/SOPEXSNSController.h +++ /dev/null @@ -1,72 +0,0 @@ -/* - Copyright (C) 2000-2003 SKYRIX Software AG - - This file is part of OGo - - OGo is free software; you can redistribute it and/or modify it under - the terms of the GNU Lesser General Public License as published by the - Free Software Foundation; either version 2, or (at your option) any - later version. - - OGo is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with OGo; see the file COPYING. If not, write to the - Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. - */ -// $Id: SOPEXSNSController.h 1 2004-08-20 11:17:52Z znek $ -// Created by znek on Wed Feb 11 2004. - -#ifndef __SOPEXSNSController_H_ -#define __SOPEXSNSController_H_ - -#import - - -@interface SOPEXSNSController : NSObject -{ - NSFileHandle *serverSocket; - NSMutableDictionary *connectionLUT; - id delegate; - struct { - unsigned int respondsToUnregisterInstance: 1; - unsigned int respondsToRegisterInstance: 1; - unsigned int respondsToRegisterSession: 1; - unsigned int respondsToExpireSession: 1; - unsigned int respondsToTerminateSession: 1; - unsigned int respondsToLookupSession: 1; - unsigned int respondsToInstanceIsAlive: 1; - unsigned int RESERVED: 1; - } dflags; -} - -- (void)setDelegate:(id)_delegate; -- (id)delegate; - -- (void)start; -- (void)stop; - -- (NSString *)socketAddress; - -@end - -@interface NSObject (SOPEXSNSControllerDelegate) -- (void)snsController:(SOPEXSNSController *)controller unregisterInstance:(NSDictionary *)instanceDescription; -- (void)snsController:(SOPEXSNSController *)controller registerInstance:(NSDictionary *)instanceDescription; -- (void)snsController:(SOPEXSNSController *)controller instanceIsAlive:(NSDictionary *)instanceDescription; -- (void)snsController:(SOPEXSNSController *)controller instance:(NSDictionary *)instanceDescription sessionDidCreate:(NSString *)sessionID; -- (void)snsController:(SOPEXSNSController *)controller instance:(NSDictionary *)instanceDescription sessionDidTerminate:(NSString *)sessionID; -- (void)snsController:(SOPEXSNSController *)controller instance:(NSDictionary *)instanceDescription sessionDidExpire:(NSString *)sessionID; - -@end - -extern NSString *SNSApplicationNameKey; -extern NSString *SNSApplicationPathKey; -extern NSString *SNSApplicationPIDKey; -extern NSString *SNSApplicationAddressKey; - -#endif /* __SOPEXSNSController_H_ */ diff --git a/sopex/SOPEX/SOPEXSNSController.m b/sopex/SOPEX/SOPEXSNSController.m deleted file mode 100644 index 250f5bb6..00000000 --- a/sopex/SOPEX/SOPEXSNSController.m +++ /dev/null @@ -1,331 +0,0 @@ -/* - Copyright (C) 2000-2003 SKYRIX Software AG - - This file is part of OGo - - OGo is free software; you can redistribute it and/or modify it under - the terms of the GNU Lesser General Public License as published by the - Free Software Foundation; either version 2, or (at your option) any - later version. - - OGo is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with OGo; see the file COPYING. If not, write to the - Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. - */ -// $Id: SOPEXSNSController.m 1 2004-08-20 11:17:52Z znek $ -// Created by znek on Wed Feb 11 2004. - -#import "SOPEXSNSController.h" -#include -#include -#include - - -#define DNC [NSNotificationCenter defaultCenter] -#define UD [NSUserDefaults standardUserDefaults] - - -NSString *SNSApplicationNameKey = @"Name"; -NSString *SNSApplicationPathKey = @"Path"; -NSString *SNSApplicationPIDKey = @"PID"; -NSString *SNSApplicationAddressKey = @"Address"; - - -typedef enum { - SNSUnregisterInstance = 0, - SNSRegisterInstance = 1, - SNSRegisterSession = 2, - SNSExpireSession = 3, - SNSTerminateSession = 4, - SNSLookupSession = 50, - SNSInstanceAlive = 100 -} SNSMessageCode; - - -@interface NSFileHandle (SOPEXSNSControllerPrivate) -- (NSData *)_safeReadDataOfLength:(unsigned int)length; -- (NSData *)_snsGetData; -- (NSString *)_snsGetString; -- (int)_snsGetInt; -@end - -@implementation NSFileHandle (SOPEXSNSControllerPrivate) -- (NSData *)_safeReadDataOfLength:(unsigned int)length -{ - NSMutableData *safeData; - NSData *data; - int stillNeeded; - - data = [self readDataOfLength:length]; - stillNeeded = length - [data length]; - - if(stillNeeded == 0) - return data; - - safeData = [[NSMutableData alloc] initWithData:data]; - while(stillNeeded > 0) - { - data = [self readDataOfLength:stillNeeded]; - [safeData appendData:data]; - stillNeeded -= [data length]; - } - return [safeData autorelease]; -} - -- (NSData *)_snsGetData -{ - NSData *data; - int length; - - // Application Name - data = [self _safeReadDataOfLength:sizeof(int)]; - length = *(int *)[data bytes]; - data = [self _safeReadDataOfLength:length]; - return data; -} -- (NSString *)_snsGetString -{ - NSData *data = [self _snsGetData]; - return [[[NSString alloc] initWithCString:(const char *)[data bytes] length:[data length]] autorelease]; -} -- (int)_snsGetInt -{ - NSData *data; - int integer; - - data = [self _safeReadDataOfLength:sizeof(int)]; - integer = *(int *)[data bytes]; - return integer; -} - -@end - - -@implementation SOPEXSNSController - -#pragma mark - -#pragma mark ### INIT & DEALLOC ### - - -- (id)init -{ - [super init]; - self->connectionLUT = [[NSMutableDictionary alloc] initWithCapacity:1]; - return self; -} - -- (void)dealloc -{ - [self stop]; - [self->connectionLUT release]; - [super dealloc]; -} - - -#pragma mark - -#pragma mark ### DELEGATE ### - - -- (void)setDelegate:(id)_delegate -{ - self->delegate = _delegate; - self->dflags.respondsToUnregisterInstance = [_delegate respondsToSelector:@selector(snsController:unregisterInstance:)]; - self->dflags.respondsToRegisterInstance = [_delegate respondsToSelector:@selector(snsController:registerInstance:)]; - self->dflags.respondsToInstanceIsAlive = [_delegate respondsToSelector:@selector(snsController:instanceIsAlive:)]; - self->dflags.respondsToRegisterSession = [_delegate respondsToSelector:@selector(snsController:instance:sessionDidCreate:)]; - self->dflags.respondsToExpireSession = [_delegate respondsToSelector:@selector(snsController:instance:sessionDidExpire:)]; - self->dflags.respondsToTerminateSession = [_delegate respondsToSelector:@selector(snsController:instance:sessionDidTerminate:)]; -} - -- (id)delegate -{ - return self->delegate; -} - - -#pragma mark - -#pragma mark ### START & STOP ### - - -- (void)start -{ - int sd; - struct sockaddr_in sockaddr; - - // create socket - sd = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP); - NSAssert1(sd >= 0, @"Couldn't create server socket: %s", strerror(errno)); - - memset(&sockaddr, 0, sizeof(struct sockaddr_in)); - sockaddr.sin_family = AF_INET; - sockaddr.sin_addr.s_addr = htonl(INADDR_ANY); - sockaddr.sin_port = [UD integerForKey:@"SNSPort"]; - - // bind - NSAssert1(bind(sd, (struct sockaddr *)&sockaddr, sizeof(sockaddr)) != -1, @"Couldn't bind socket: %s", strerror(errno)); - - // listen with backlog of 5 - NSAssert1(listen(sd, 5) != -1, @"Couldn't listen on socket: %s", strerror(errno)); - - // create NSFileHandle if all is well - self->serverSocket = [[NSFileHandle alloc] initWithFileDescriptor:sd closeOnDealloc:YES]; - - // we're ready to accept connections now - [DNC addObserver:self selector:@selector(acceptConnection:) name:NSFileHandleConnectionAcceptedNotification object:self->serverSocket]; - [self->serverSocket acceptConnectionInBackgroundAndNotify]; -} - -- (void)stop -{ - [DNC removeObserver:self]; - [self->serverSocket release]; - self->serverSocket = nil; -} - - -#pragma mark - -#pragma mark ### ACCESSORS ### - - -- (NSString *)socketAddress -{ - int sockaddrLength; - struct sockaddr_in sockaddr; - - sockaddrLength = sizeof(struct sockaddr_in); - NSAssert1(getsockname([self->serverSocket fileDescriptor], (struct sockaddr *)&sockaddr, &sockaddrLength) != -1, @"Cannot get local port number for socket: %s", strerror(errno)); - return [NSString stringWithFormat:@"localhost:%d", ntohs(sockaddr.sin_port)]; -} - - -#pragma mark - -#pragma mark ### SNSD PROTOCOL ### - - -- (NSDictionary *)_instanceDescriptionForFileHandle:(NSFileHandle *)fileHandle -{ - return [self->connectionLUT objectForKey:[NSNumber numberWithInt:[fileHandle fileDescriptor]]]; -} - -- (void)_unregisterInstance:(NSFileHandle *)fileHandle -{ - if(self->dflags.respondsToUnregisterInstance) - [self->delegate snsController:self unregisterInstance:[self _instanceDescriptionForFileHandle:fileHandle]]; - [self->connectionLUT removeObjectForKey:[NSNumber numberWithInt:[fileHandle fileDescriptor]]]; -} - -- (void)_registerInstance:(NSFileHandle *)fileHandle description:(NSDictionary *)instanceDescription -{ - [self->connectionLUT setObject:instanceDescription forKey:[NSNumber numberWithInt:[fileHandle fileDescriptor]]]; - if(self->dflags.respondsToRegisterInstance) - [self->delegate snsController:self registerInstance:instanceDescription]; -} - - -- (void)acceptConnection:(NSNotification *)notification -{ - NSFileHandle *remote; - - remote = [[notification userInfo] objectForKey:NSFileHandleNotificationFileHandleItem]; - [remote retain]; - - [DNC addObserver:self selector:@selector(availableData:) name:NSFileHandleDataAvailableNotification object:remote]; - [remote waitForDataInBackgroundAndNotify]; - [self->serverSocket acceptConnectionInBackgroundAndNotify]; -} - -- (void)availableData:(NSNotification *)notification -{ - NSFileHandle *remote; - NSData *data; - SNSMessageCode msg; - - remote = [notification object]; - data = [remote readDataOfLength:1]; - if([data length] == 0) - { -#if 1 - NSLog(@"%s remote end did die!", __PRETTY_FUNCTION__); -#endif - [DNC removeObserver:self name:NSFileHandleDataAvailableNotification object:remote]; - [self _unregisterInstance:remote]; - [remote release]; - return; - } - - msg = *(char *)[data bytes]; - if(msg == SNSInstanceAlive) - { - if(self->dflags.respondsToInstanceIsAlive) - [self->delegate snsController:self instanceIsAlive:[self _instanceDescriptionForFileHandle:remote]]; - } - else if(msg == SNSRegisterSession) - { - NSString *sessionID; - - sessionID = [remote _snsGetString]; - if(self->dflags.respondsToRegisterSession) - [self->delegate snsController:self instance:[self _instanceDescriptionForFileHandle:remote] sessionDidCreate:sessionID]; - } - else if(msg == SNSExpireSession) - { - NSString *sessionID; - - sessionID = [remote _snsGetString]; - if(self->dflags.respondsToExpireSession) - [self->delegate snsController:self instance:[self _instanceDescriptionForFileHandle:remote] sessionDidExpire:sessionID]; - } - else if(msg == SNSTerminateSession) - { - NSString *sessionID; - - sessionID = [remote _snsGetString]; - if(self->dflags.respondsToTerminateSession) - [self->delegate snsController:self instance:[self _instanceDescriptionForFileHandle:remote] sessionDidTerminate:sessionID]; - } - else if(msg == SNSRegisterInstance) - { - NSMutableDictionary *instanceDescription; - id tmp, applicationAddress; - int pid; - - instanceDescription = [[NSMutableDictionary alloc] initWithCapacity:3]; - - // Application Name - tmp = [remote _snsGetString]; - [instanceDescription setObject:tmp forKey:SNSApplicationNameKey]; - - // Application Path - tmp = [remote _snsGetString]; - [instanceDescription setObject:tmp forKey:SNSApplicationPathKey]; - - // Application PID - pid = [remote _snsGetInt]; - [instanceDescription setObject:[NSNumber numberWithInt:pid] forKey:SNSApplicationPIDKey]; - - // Application Address - tmp = [remote _snsGetData]; - applicationAddress = [NSUnarchiver unarchiveObjectWithData:tmp]; - [instanceDescription setObject:applicationAddress forKey:SNSApplicationAddressKey]; - - [self _registerInstance:remote description:instanceDescription]; - [instanceDescription release]; - } - else if(msg == SNSUnregisterInstance) - { - [self _unregisterInstance:remote]; - } - else - { - NSLog(@"%s ignoring unknown messageCode:%d Dropping %d bytes.", __PRETTY_FUNCTION__, msg, [[remote availableData] length]); - } - [remote waitForDataInBackgroundAndNotify]; -} - -@end diff --git a/sopex/SOPEX/SOPEXSheetRunner.h b/sopex/SOPEX/SOPEXSheetRunner.h index 585e6a83..14ba2a69 100644 --- a/sopex/SOPEX/SOPEXSheetRunner.h +++ b/sopex/SOPEX/SOPEXSheetRunner.h @@ -18,11 +18,11 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -// $Id: SOPEXSheetRunner.h 1 2004-08-20 11:17:52Z znek $ +// $Id: SOPEXSheetRunner.h,v 1.1 2004/04/01 19:04:36 znek Exp $ // Created by znek on Mon Mar 29 2004. -#ifndef __SOPEXSheetRunner_H_ -#define __SOPEXSheetRunner_H_ +#ifndef __SOPEX_SOPEXSheetRunner_H_ +#define __SOPEX_SOPEXSheetRunner_H_ #import @@ -37,4 +37,4 @@ int SOPEXRunSheetModalForWindow(NSWindow *sheet, NSWindow *window); -#endif /* __SOPEXSheetRunner_H_ */ +#endif /* __SOPEX_SOPEXSheetRunner_H_ */ diff --git a/sopex/SOPEX/SOPEXSheetRunner.m b/sopex/SOPEX/SOPEXSheetRunner.m index 6de58058..b62389d5 100644 --- a/sopex/SOPEX/SOPEXSheetRunner.m +++ b/sopex/SOPEX/SOPEXSheetRunner.m @@ -18,7 +18,7 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -// $Id: SOPEXSheetRunner.m 1 2004-08-20 11:17:52Z znek $ +// $Id: SOPEXSheetRunner.m,v 1.2 2004/05/02 16:27:46 znek Exp $ // Created by znek on Mon Mar 29 2004. diff --git a/sopex/SOPEX/SOPEXStatisticsController.h b/sopex/SOPEX/SOPEXStatisticsController.h index 9d283146..2dfe2cc0 100644 --- a/sopex/SOPEX/SOPEXStatisticsController.h +++ b/sopex/SOPEX/SOPEXStatisticsController.h @@ -18,11 +18,11 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -// $Id: SOPEXStatisticsController.h 1 2004-08-20 11:17:52Z znek $ +// $Id: SOPEXStatisticsController.h,v 1.1 2004/02/16 13:23:55 znek Exp $ // Created by znek on Thu Feb 12 2004. -#ifndef __SOPEXStatisticsController_H_ -#define __SOPEXStatisticsController_H_ +#ifndef __SOPEX_SOPEXStatisticsController_H_ +#define __SOPEX_SOPEXStatisticsController_H_ #import @@ -59,4 +59,4 @@ @end -#endif /* __SOPEXStatisticsController_H_ */ +#endif /* __SOPEX_SOPEXStatisticsController_H_ */ diff --git a/sopex/SOPEX/SOPEXStatisticsController.m b/sopex/SOPEX/SOPEXStatisticsController.m index 97f63980..8aff3534 100644 --- a/sopex/SOPEX/SOPEXStatisticsController.m +++ b/sopex/SOPEX/SOPEXStatisticsController.m @@ -18,7 +18,7 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -// $Id: SOPEXStatisticsController.m 1 2004-08-20 11:17:52Z znek $ +// $Id: SOPEXStatisticsController.m,v 1.2 2004/05/02 16:27:46 znek Exp $ // Created by znek on Thu Feb 12 2004. #import "SOPEXStatisticsController.h" diff --git a/sopex/SOPEX/SOPEXTextView.h b/sopex/SOPEX/SOPEXTextView.h index 8620a52b..1505f910 100644 --- a/sopex/SOPEX/SOPEXTextView.h +++ b/sopex/SOPEX/SOPEXTextView.h @@ -18,11 +18,11 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -// $Id: SOPEXTextView.h 1 2004-08-20 11:17:52Z znek $ +// $Id: SOPEXTextView.h,v 1.1 2004/04/01 19:04:36 znek Exp $ // Created by znek on Thu Apr 01 2004. -#ifndef __SOPEXTextView_H_ -#define __SOPEXTextView_H_ +#ifndef __SOPEX_SOPEXTextView_H_ +#define __SOPEX_SOPEXTextView_H_ #import @@ -44,11 +44,13 @@ @end -#if SOPEXTextViewNotifiesAboutResponderState @interface NSObject (SOPEXTextViewDelegate) +- (BOOL)textView:(SOPEXTextView *)_textView + handleRightClickEvent:(NSEvent *)_event; +#if SOPEXTextViewNotifiesAboutResponderState - (void)textViewWillBecomeFirstResponder:(SOPEXTextView *)textView; - (void)textViewWillResignFirstResponder:(SOPEXTextView *)textView; -@end #endif +@end -#endif /* __SOPEXTextView_H_ */ +#endif /* __SOPEX_SOPEXTextView_H_ */ diff --git a/sopex/SOPEX/SOPEXTextView.m b/sopex/SOPEX/SOPEXTextView.m index 8c1b5212..d41fe6e1 100644 --- a/sopex/SOPEX/SOPEXTextView.m +++ b/sopex/SOPEX/SOPEXTextView.m @@ -18,7 +18,7 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -// $Id: SOPEXTextView.m 1 2004-08-20 11:17:52Z znek $ +// $Id: SOPEXTextView.m,v 1.2 2004/04/09 18:53:02 znek Exp $ // Created by znek on Thu Apr 01 2004. @@ -99,4 +99,22 @@ return yn; } +- (void)mouseDown:(NSEvent *)_event +{ + if([_event modifierFlags] & NSControlKeyMask) { + if([[self delegate] respondsToSelector:@selector(textView:handleRightClickEvent:)]) + if([[self delegate] textView:self handleRightClickEvent:_event]) + return; + } + [super mouseDown:_event]; +} + +- (void)rightMouseDown:(NSEvent *)_event +{ + if([[self delegate] respondsToSelector:@selector(textView:handleRightClickEvent:)]) + if([[self delegate] textView:self handleRightClickEvent:_event]) + return; + [super rightMouseDown:_event]; +} + @end diff --git a/sopex/SOPEX/SOPEXToolbarController.h b/sopex/SOPEX/SOPEXToolbarController.h index 1ada34c4..063a0f37 100644 --- a/sopex/SOPEX/SOPEXToolbarController.h +++ b/sopex/SOPEX/SOPEXToolbarController.h @@ -1,7 +1,7 @@ -// $Id: SOPEXToolbarController.h 1 2004-08-20 11:17:52Z znek $ +// $Id: SOPEXToolbarController.h,v 1.2 2004/03/10 18:38:06 znek Exp $ -#ifndef __SOPEXToolbarController_H__ -#define __SOPEXToolbarController_H__ +#ifndef __SOPEX_SOPEXToolbarController_H__ +#define __SOPEX_SOPEXToolbarController_H__ #import @@ -26,4 +26,4 @@ @end -#endif /* SOPEXToolbarController */ +#endif /* __SOPEX_SOPEXToolbarController_H__ */ diff --git a/sopex/SOPEX/SOPEXToolbarController.m b/sopex/SOPEX/SOPEXToolbarController.m index aeb6e67d..d482bf89 100644 --- a/sopex/SOPEX/SOPEXToolbarController.m +++ b/sopex/SOPEX/SOPEXToolbarController.m @@ -1,4 +1,4 @@ -// $Id: SOPEXToolbarController.m 1 2004-08-20 11:17:52Z znek $ +// $Id: SOPEXToolbarController.m,v 1.3 2004/05/02 16:27:46 znek Exp $ #import "SOPEXToolbarController.h" #import diff --git a/sopex/SOPEX/SOPEXWODocument.h b/sopex/SOPEX/SOPEXWODocument.h index 2c29043f..14615767 100644 --- a/sopex/SOPEX/SOPEXWODocument.h +++ b/sopex/SOPEX/SOPEXWODocument.h @@ -18,7 +18,7 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -// $Id: SOPEXWODocument.h 1 2004-08-20 11:17:52Z znek $ +// $Id: SOPEXWODocument.h,v 1.1 2004/03/26 19:05:23 znek Exp $ // Created by znek on Fri Mar 26 2004. #ifndef __SOPEXWODocument_H_ diff --git a/sopex/SOPEX/SOPEXWODocument.m b/sopex/SOPEX/SOPEXWODocument.m index 5550a144..4c1d77ed 100644 --- a/sopex/SOPEX/SOPEXWODocument.m +++ b/sopex/SOPEX/SOPEXWODocument.m @@ -18,7 +18,7 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -// $Id: SOPEXWODocument.m 1 2004-08-20 11:17:52Z znek $ +// $Id: SOPEXWODocument.m,v 1.3 2004/04/09 18:53:02 znek Exp $ // Created by znek on Fri Mar 26 2004. @@ -71,34 +71,4 @@ return status; } - -#pragma mark - -#pragma mark ### TEXTVIEW DELEGATE ### - - -- (void)textViewDidChangeSelection:(NSNotification *)notification -{ - SOPEXTextView *textView = [notification object]; - NSEvent *event; - NSRange selRange; - - if(textView != [self textViewForFileType:@"html"]) - return; - - selRange = [textView selectedRange]; - event = [NSApp currentEvent]; - - if(([event type] == NSLeftMouseUp) && ([event clickCount] == 2)) - { - NSRange matchRange = SOPEX_findMatchingTagForRangeInString(selRange, [textView string]); - - if(matchRange.location != NSNotFound) - { - selRange = NSUnionRange(selRange, matchRange); - [textView setSelectedRange:selRange affinity:NSSelectionAffinityUpstream stillSelecting:YES]; - [textView scrollRangeToVisible:matchRange]; - } - } -} - @end diff --git a/sopex/SOPEX/SOPEXWOXDocument.h b/sopex/SOPEX/SOPEXWOXDocument.h index 8275deb6..34b3e362 100644 --- a/sopex/SOPEX/SOPEXWOXDocument.h +++ b/sopex/SOPEX/SOPEXWOXDocument.h @@ -18,7 +18,7 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -// $Id: SOPEXWOXDocument.h 1 2004-08-20 11:17:52Z znek $ +// $Id: SOPEXWOXDocument.h,v 1.2 2004/04/09 18:53:02 znek Exp $ // Created by znek on Fri Mar 26 2004. #ifndef __SOPEXWOXDocument_H_ diff --git a/sopex/SOPEX/SOPEXWOXDocument.m b/sopex/SOPEX/SOPEXWOXDocument.m index 5ac4da4f..c3c1bf58 100644 --- a/sopex/SOPEX/SOPEXWOXDocument.m +++ b/sopex/SOPEX/SOPEXWOXDocument.m @@ -18,14 +18,13 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -// $Id: SOPEXWOXDocument.m 1 2004-08-20 11:17:52Z znek $ +// $Id: SOPEXWOXDocument.m,v 1.3 2004/04/09 18:53:02 znek Exp $ // Created by znek on Fri Mar 26 2004. #import "SOPEXWOXDocument.h" #import "SOPEXContentValidator.h" #import "SOPEXTextView.h" -#import "SOPEXRangeUtilities.h" @implementation SOPEXWOXDocument @@ -48,31 +47,4 @@ return [SOPEXContentValidator validateWOXContent:content]; } - -#pragma mark - -#pragma mark ### TEXTVIEW DELEGATE ### - - -- (void)textViewDidChangeSelection:(NSNotification *)notification -{ - NSTextView *textView = [notification object]; - NSEvent *event; - NSRange selRange; - - selRange = [textView selectedRange]; - event = [NSApp currentEvent]; - - if(([event type] == NSLeftMouseUp) && ([event clickCount] == 2)) - { - NSRange matchRange = SOPEX_findMatchingTagForRangeInString(selRange, [textView string]); - - if(matchRange.location != NSNotFound) - { - selRange = NSUnionRange(selRange, matchRange); - [textView setSelectedRange:selRange affinity:NSSelectionAffinityUpstream stillSelecting:YES]; - [textView scrollRangeToVisible:matchRange]; - } - } -} - @end diff --git a/sopex/SOPEX/SOPEXWebConnection.h b/sopex/SOPEX/SOPEXWebConnection.h index 956fd4a7..0a3b58af 100644 --- a/sopex/SOPEX/SOPEXWebConnection.h +++ b/sopex/SOPEX/SOPEXWebConnection.h @@ -1,7 +1,7 @@ -// $Id: SOPEXWebConnection.h 1 2004-08-20 11:17:52Z znek $ +// $Id: SOPEXWebConnection.h,v 1.3 2004/05/02 16:27:46 znek Exp $ -#ifndef __WebKitTest2_SOPEXWebConnection_H__ -#define __WebKitTest2_SOPEXWebConnection_H__ +#ifndef __SOPEX_SOPEXWebConnection_H__ +#define __SOPEX_SOPEXWebConnection_H__ #import @@ -33,4 +33,4 @@ @end -#endif /* __WebKitTest2_SOPEXWebConnection_H__*/ +#endif /* __SOPEX_SOPEXWebConnection_H__*/ diff --git a/sopex/SOPEX/SOPEXWebConnection.m b/sopex/SOPEX/SOPEXWebConnection.m index 378bdc08..d58dc0f6 100644 --- a/sopex/SOPEX/SOPEXWebConnection.m +++ b/sopex/SOPEX/SOPEXWebConnection.m @@ -1,210 +1,227 @@ -// $Id: SOPEXWebConnection.m 1 2004-08-20 11:17:52Z znek $ - -#import "SOPEXWebConnection.h" -#import "SOPEXWebMetaParser.h" -#import "NSString+Ext.h" -#import "NSBundle+Ext.h" +// $Id: SOPEXWebConnection.m,v 1.3 2004/05/02 16:27:46 znek Exp $ +#include "SOPEXWebConnection.h" +#include "SOPEXWebMetaParser.h" +#include "NSString+Ext.h" +#include "NSBundle+Ext.h" +#include "common.h" @implementation SOPEXWebConnection -static BOOL debugOn = NO; +static NGLogger *logger = nil; -+ (void)initialize -{ - static BOOL isInitialized = NO; ++ (void)initialize { + NGLoggerManager *lm; + static BOOL didInit = NO; - if(isInitialized) - return; - - debugOn = [[NSUserDefaults standardUserDefaults] boolForKey:@"SOPEXDebugEnabled"]; - if(debugOn) - debugOn = [[NSUserDefaults standardUserDefaults] boolForKey:@"SOPEXDebugWebConnection"]; - isInitialized = YES; + if(didInit) return; + + didInit = YES; + lm = [NGLoggerManager defaultLoggerManager]; + logger = [lm loggerForDefaultKey:@"SOPEXDebugWebConnection"]; } -- (id)initWithURL:(id)_url localResourceBundle:(NSBundle *)_resourceBundle -{ - if ((self = [super init])) { - if ([_url isKindOfClass:[NSURL class]]) - self->url = [_url copy]; - else - self->url = [[NSURL alloc] initWithString:_url]; - - if(_resourceBundle == nil) - _resourceBundle = [NSBundle mainBundle]; - self->localResourceBundle = [_resourceBundle retain]; - self->resourceCache = [[NSMutableDictionary alloc] init]; - self->appPrefix = [[NSString stringWithFormat:@"/%@", [[self->url path] lastPathComponent]] retain]; - } - return self; +- (id)initWithURL:(id)_url localResourceBundle:(NSBundle *)_resourceBundle { + if ((self = [super init])) { + if ([_url isKindOfClass:[NSURL class]]) + self->url = [_url copy]; + else + self->url = [[NSURL alloc] initWithString:_url]; + + if(_resourceBundle == nil) + _resourceBundle = [NSBundle mainBundle]; + self->localResourceBundle = [_resourceBundle retain]; + self->resourceCache = [[NSMutableDictionary alloc] init]; + self->appPrefix = + [[NSString stringWithFormat:@"/%@", + [[self->url path] lastPathComponent]] retain]; + } + return self; } - (id)init { - return [self initWithURL:nil localResourceBundle:nil]; + return [self initWithURL:nil localResourceBundle:nil]; } - (void)dealloc { - [self->resourceCache release]; - [self->localResourceBundle release]; - [self->url release]; - [self->sessionID release]; - [self->appPrefix release]; - [super dealloc]; + [self->resourceCache release]; + [self->localResourceBundle release]; + [self->url release]; + [self->sessionID release]; + [self->appPrefix release]; + [super dealloc]; } /* accessors */ - (NSURL *)url { - return self->url; + return self->url; } - (NSString *)sessionID { - return self->sessionID; + return self->sessionID; } /* session tracking */ - (void)_useSessionID:(NSString *)_sid { - [self->sessionID autorelease]; - self->sessionID = [_sid copy]; + [self->sessionID autorelease]; + self->sessionID = [_sid copy]; } - (void)handleNoSessionInResponse:(NSURLResponse *)_r { - if(debugOn) - NSLog(@"%s: NO session-id", __PRETTY_FUNCTION__); + if(logger) + [self debugWithFormat:@"%s: NO session-id", __PRETTY_FUNCTION__]; } - (void)handleInitialSessionID:(NSString *)_s inResponse:(NSURLResponse *)_r { - if(debugOn) - NSLog(@"%s: initial sid: %@", __PRETTY_FUNCTION__, _s); - [self _useSessionID:_s]; + if(logger) + [self debugWithFormat:@"%s: initial sid: %@", __PRETTY_FUNCTION__, _s]; + [self _useSessionID:_s]; } - (void)handleChangedSessionID:(NSString *)_s inResponse:(NSURLResponse *)_r { - if(debugOn) - NSLog(@"%s: changed sid: %@", __PRETTY_FUNCTION__, _s); - [self _useSessionID:_s]; + if(logger) + [self debugWithFormat:@"%s: changed sid: %@", __PRETTY_FUNCTION__, _s]; + [self _useSessionID:_s]; } - (void)processSessionID:(NSString *)_sid ofResponse:(NSURLResponse *)_r { - if (_sid) { - if (self->sessionID && ![self->sessionID isEqualToString:_sid]) - [self handleChangedSessionID:_sid inResponse:_r]; - else if (self->sessionID == nil) - [self handleInitialSessionID:_sid inResponse:_r]; - } - else { - [self handleNoSessionInResponse:_r]; - } + if (_sid) { + if (self->sessionID && ![self->sessionID isEqualToString:_sid]) + [self handleChangedSessionID:_sid inResponse:_r]; + else if (self->sessionID == nil) + [self handleInitialSessionID:_sid inResponse:_r]; + } + else { + [self handleNoSessionInResponse:_r]; + } } /* operations */ - (void)processHTML:(NSString *)_html ofResponse:(NSURLResponse *)_r { - NSArray *links; - NSDictionary *meta; - - [[SOPEXWebMetaParser sharedWebMetaParser] + NSArray *links; + NSDictionary *meta; + + [[SOPEXWebMetaParser sharedWebMetaParser] processHTML:_html meta:&meta links:&links]; #if 0 - if(debugOn) - NSLog(@"%s: meta: %@\n links: %@", __PRETTY_FUNCTION__, - [meta descriptionInStringsFileFormat], links); + if(logger) + [self debugWithFormat:@"%s: meta: %@\n links: %@", + __PRETTY_FUNCTION__, + [meta descriptionInStringsFileFormat], + links]; #endif - [self processSessionID:[meta objectForKey:@"OGoSessionID"] ofResponse:_r]; + [self processSessionID:[meta objectForKey:@"OGoSessionID"] ofResponse:_r]; } - (void)processResponse:(NSURLResponse *)_r data:(NSData *)_data { - NSString *s; - - if (![[_r MIMEType] hasPrefix:@"text/html"]) - return; - - s = [[NSString alloc] initWithData:_data encoding:NSISOLatin1StringEncoding]; - if (s == nil) - return; - - [self processHTML:s ofResponse:_r]; - [s release]; + NSString *s; + + if (![[_r MIMEType] hasPrefix:@"text/html"]) + return; + + s = [[NSString alloc] initWithData:_data encoding:NSISOLatin1StringEncoding]; + if (s == nil) + return; + + [self processHTML:s ofResponse:_r]; + [s release]; } - (BOOL)shouldRewriteRequestURL:(NSURL *)_url { - NSString *path; - BOOL shouldRewrite = NO; - - if(debugOn) - NSLog(@"%s testing if I should rewrite:%@", __PRETTY_FUNCTION__, _url); - - if ([_url isFileURL]) - return shouldRewrite; - - if ((path = [_url path]) == nil) { - if(debugOn) - NSLog(@"%s could not get path for URL: %@", __PRETTY_FUNCTION__, path); - return shouldRewrite; - } - - shouldRewrite = ([path rangeOfString:@"WebServerResources"].location != NSNotFound || (![path hasPrefix:self->appPrefix])); - if(debugOn) - NSLog(@"%s shouldRewrite:%@ ->%@", __PRETTY_FUNCTION__, _url, shouldRewrite ? @"YES" : @"NO"); + NSString *path; + BOOL shouldRewrite = NO; + + if(logger) + [self debugWithFormat:@"%s testing if I should rewrite:%@", + __PRETTY_FUNCTION__, _url]; + + if ([_url isFileURL]) return shouldRewrite; + + if ((path = [_url path]) == nil) { + if(logger) + [self debugWithFormat:@"%s could not get path for URL: %@", + __PRETTY_FUNCTION__, path]; + return shouldRewrite; + } + + shouldRewrite = ([path rangeOfString:@"WebServerResources"].location != NSNotFound || (![path hasPrefix:self->appPrefix])); + if(logger) + [self debugWithFormat:@"%s shouldRewrite:%@ ->%@", + __PRETTY_FUNCTION__, _url, + shouldRewrite ? @"YES" : @"NO"]; + return shouldRewrite; } - (NSURL *)rewriteRequestURL:(NSURL *)_url { - NSString *resourcePath, *urlPath; - NSURL *cacheURL; - - if ([_url isFileURL]) - return _url; - - urlPath = [_url path]; + NSString *resourcePath, *urlPath; + NSURL *cacheURL; + + if ([_url isFileURL]) + return _url; + + urlPath = [_url path]; #if 0 - if([urlPath hasPrefix:self->appPrefix]) - return _url; + if([urlPath hasPrefix:self->appPrefix]) + return _url; #endif - if(debugOn) - NSLog(@"%s [_url path] will be rewritten:%@", __PRETTY_FUNCTION__, _url); - - cacheURL = [self->resourceCache objectForKey:urlPath]; - if(debugOn && cacheURL) - NSLog(@"%s found cached URL for resource:%@", __PRETTY_FUNCTION__, urlPath); - if(cacheURL) - return cacheURL; - - if(debugOn) - NSLog(@"%s trying to find resource:%@", __PRETTY_FUNCTION__, urlPath); - - resourcePath= [self->localResourceBundle pathForResourceWithURLPath:urlPath]; - if(resourcePath == nil) { - if(debugOn) - NSLog(@"%s didn't find resource:%@ in bundle:%@", __PRETTY_FUNCTION__, urlPath, self->localResourceBundle); - /* not cached locally */ - return _url; - } - if(debugOn) - NSLog(@"%s found resource:%@", __PRETTY_FUNCTION__, urlPath); - - cacheURL = [NSURL fileURLWithPath:resourcePath]; - [self->resourceCache setObject:cacheURL forKey:urlPath]; - + if(logger) + [self debugWithFormat:@"%s [_url path] will be rewritten:%@", + __PRETTY_FUNCTION__, _url]; + + cacheURL = [self->resourceCache objectForKey:urlPath]; + if(logger && cacheURL) + [self debugWithFormat:@"%s found cached URL for resource:%@", + __PRETTY_FUNCTION__, urlPath]; + if(cacheURL) return cacheURL; + + if(logger) + [self debugWithFormat:@"%s trying to find resource:%@", + __PRETTY_FUNCTION__, urlPath]; + + resourcePath= [self->localResourceBundle pathForResourceWithURLPath:urlPath]; + if(resourcePath == nil) { + if(logger) + [self debugWithFormat:@"%s didn't find resource:%@ in bundle:%@", + __PRETTY_FUNCTION__, urlPath, + self->localResourceBundle]; + /* not cached locally */ + return _url; + } + if(logger) + [self debugWithFormat:@"%s found resource:%@", + __PRETTY_FUNCTION__, urlPath]; + + cacheURL = [NSURL fileURLWithPath:resourcePath]; + [self->resourceCache setObject:cacheURL forKey:urlPath]; + + return cacheURL; } /* description */ - (NSString *)description { - NSMutableString *ms = [NSMutableString stringWithCapacity:32]; - - [ms appendFormat:@"<0x%08X[%@]:", self, NSStringFromClass([self class])]; - - [ms appendFormat:@" url=%@", [self->url absoluteString]]; - - if (self->sessionID) - [ms appendFormat:@" sid=%@", self->sessionID]; - else - [ms appendString:@" no-sid"]; - - [ms appendString:@">"]; - return ms; + NSMutableString *ms = [NSMutableString stringWithCapacity:32]; + + [ms appendFormat:@"<0x%08X[%@]:", self, NSStringFromClass([self class])]; + + [ms appendFormat:@" url=%@", [self->url absoluteString]]; + + if (self->sessionID) + [ms appendFormat:@" sid=%@", self->sessionID]; + else + [ms appendString:@" no-sid"]; + + [ms appendString:@">"]; + return ms; +} + +/* Logging */ + +- (id)debugLogger { + return logger; } @end /* SOPEXWebConnection */ diff --git a/sopex/SOPEX/SOPEXWebMetaParser.h b/sopex/SOPEX/SOPEXWebMetaParser.h index e31b9e23..fc980f94 100644 --- a/sopex/SOPEX/SOPEXWebMetaParser.h +++ b/sopex/SOPEX/SOPEXWebMetaParser.h @@ -1,10 +1,26 @@ -// -// SOPEXWebMetaParser.h -// WebKitTest2 -// -// Created by Helge Hess on Thu Nov 06 2003. -// Copyright (c) 2003 __MyCompanyName__. All rights reserved. -// +/* + Copyright (C) 2004 Marcus Mueller + + This file is part of OpenGroupware.org. + + OGo is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by the + Free Software Foundation; either version 2, or (at your option) any + later version. + + OGo is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public + License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with OGo; see the file COPYING. If not, write to the + Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA + 02111-1307, USA. +*/ + +#ifndef __SOPEX_SOPEXWebMetaParser_H__ +#define __SOPEX_SOPEXWebMetaParser_H__ #import @@ -25,3 +41,5 @@ links:(NSArray **)_links; @end + +#endif /* __SOPEX_SOPEXWebMetaParser_H__ */ diff --git a/sopex/SOPEX/SOPEXWebMetaParser.m b/sopex/SOPEX/SOPEXWebMetaParser.m index 420b3e30..1062c69c 100644 --- a/sopex/SOPEX/SOPEXWebMetaParser.m +++ b/sopex/SOPEX/SOPEXWebMetaParser.m @@ -1,12 +1,25 @@ -// -// SOPEXWebMetaParser.m -// WebKitTest2 -// -// Created by Helge Hess on Thu Nov 06 2003. -// Copyright (c) 2003 __MyCompanyName__. All rights reserved. -// - -#import "SOPEXWebMetaParser.h" +/* + Copyright (C) 2004 Marcus Mueller + + This file is part of OpenGroupware.org. + + OGo is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by the + Free Software Foundation; either version 2, or (at your option) any + later version. + + OGo is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public + License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with OGo; see the file COPYING. If not, write to the + Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA + 02111-1307, USA. +*/ + +#include "SOPEXWebMetaParser.h" @implementation SOPEXWebMetaParser diff --git a/sopex/SOPEX/SOPEX_Prefix.pch b/sopex/SOPEX/SOPEX_Prefix.pch deleted file mode 100644 index 24373b0e..00000000 --- a/sopex/SOPEX/SOPEX_Prefix.pch +++ /dev/null @@ -1,13 +0,0 @@ -// -// Prefix header for all source files of the 'SOPEX' target in the 'SOPEX' project. -// - -#ifdef __OBJC__ - #import - #import - #import - - #undef NSLocalizedString - #define NSLocalizedString(key, comment) \ - [[NSBundle bundleForClass:[self class]] localizedStringForKey:(key) value:@"" table:nil] -#endif diff --git a/sopex/SOPEX/TODO b/sopex/SOPEX/TODO new file mode 100644 index 00000000..c481d239 --- /dev/null +++ b/sopex/SOPEX/TODO @@ -0,0 +1,14 @@ +TODO +==== + +High Prio +--------- + +- make targets work + +Low Prio +-------- + +- preferences (optional debugging options, etc.) +- session statistics, resource consumption (real mem, virtual mem) +- working auth panel diff --git a/sopex/SOPEX/Version b/sopex/SOPEX/Version index b19ffd98..3d5e8b5c 100644 --- a/sopex/SOPEX/Version +++ b/sopex/SOPEX/Version @@ -1,4 +1,4 @@ -# $Id: Version 1 2004-08-20 11:17:52Z znek $ +# $Id: Version,v 1.10 2004/06/05 21:49:26 znek Exp $ # # This file is included by library makefiles to set the version information # of the executable. @@ -6,8 +6,9 @@ # of consistency. On Mac OS X instead use # /Developer/Tools/agvtool new-version ${MAJOR_VERSION}.${MINOR_VERSION}.${SUBMINOR_VERSION} -MAJOR_VERSION=1 +MAJOR_VERSION=2 MINOR_VERSION=0 -SUBMINOR_VERSION=9 +SUBMINOR_VERSION=0 +# v2.0.0 requires NGObjWeb v4.5.95 # v1.0.7 requires NGObjWeb v4.2.341 diff --git a/sopex/SOPEX/WebView+Ext.h b/sopex/SOPEX/WebView+Ext.h index 7d447749..0563e990 100644 --- a/sopex/SOPEX/WebView+Ext.h +++ b/sopex/SOPEX/WebView+Ext.h @@ -1,30 +1,28 @@ /* - Copyright (C) 2004 Marcus Mueller + Copyright (C) 2004 Marcus Mueller - This file is part of OGo + This file is part of OpenGroupware.org. - OGo is free software; you can redistribute it and/or modify it under - the terms of the GNU Lesser General Public License as published by the - Free Software Foundation; either version 2, or (at your option) any - later version. + OGo is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by the + Free Software Foundation; either version 2, or (at your option) any + later version. - OGo is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - License for more details. + OGo is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public + License for more details. - You should have received a copy of the GNU Lesser General Public - License along with OGo; see the file COPYING. If not, write to the - Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. - */ -// $Id: WebView+Ext.h 1 2004-08-20 11:17:52Z znek $ -// Created by znek on Mon Mar 22 2004. + You should have received a copy of the GNU Lesser General Public + License along with OGo; see the file COPYING. If not, write to the + Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA + 02111-1307, USA. +*/ -#ifndef __WebView_Ext_H_ -#define __WebView_Ext_H_ +#ifndef __SOPEX_WebView_Ext_H_ +#define __SOPEX_WebView_Ext_H_ -#import +#import @interface WebView (SOPEExt) @@ -33,4 +31,4 @@ @end -#endif /* __WebView_Ext_H_ */ +#endif /* __SOPEX_WebView_Ext_H_ */ diff --git a/sopex/SOPEX/WebView+Ext.m b/sopex/SOPEX/WebView+Ext.m index 1e7b5305..6040dff3 100644 --- a/sopex/SOPEX/WebView+Ext.m +++ b/sopex/SOPEX/WebView+Ext.m @@ -18,15 +18,17 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -// $Id: WebView+Ext.m 1 2004-08-20 11:17:52Z znek $ +// $Id: WebView+Ext.m,v 1.2 2004/05/02 16:27:46 znek Exp $ // Created by znek on Mon Mar 22 2004. #import "WebView+Ext.h" +#import +#import + @implementation WebView (SOPEExt) -- (NSImage *)pageIcon -{ +- (NSImage *)pageIcon { return [[[self backForwardList] currentItem] icon]; } diff --git a/sopex/SOPEX/common.h b/sopex/SOPEX/common.h new file mode 100644 index 00000000..75f1b2b2 --- /dev/null +++ b/sopex/SOPEX/common.h @@ -0,0 +1,34 @@ +/* + Copyright (C) 2004 Marcus Mueller + + This file is part of OpenGroupware.org. + + OGo is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by the + Free Software Foundation; either version 2, or (at your option) any + later version. + + OGo is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public + License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with OGo; see the file COPYING. If not, write to the + Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA + 02111-1307, USA. +*/ + +#ifndef __SOPEX_common_H_ +#define __SOPEX_common_H_ + +#import +#import +#import + +#undef NSLocalizedString +#define NSLocalizedString(key, comment) \ + [[NSBundle bundleForClass:[self class]] \ + localizedStringForKey:(key) value:@"" table:nil] + +#endif /* __SOPEX_common_H_ */