This is eTDocInfoUI.bak.m in view mode; [Download] [Up]
{\rtf0\ansi{\fonttbl\f0\fmodern Courier;\f1\ftech Symbol;\f3\fmodern Ohlfs;} \margl40 \margr40 \pard\tx520\tx1060\tx1600\tx2120\tx2660\tx3200\tx3720\tx4260\tx4800\tx5320\f0\b0\i0\ulnone\fs24\fc0\cf0 //ÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐ\ // \i \b FILENAME \b0 : \b\i0 eTDocInfoUI.m\ \b0 // \i \b SUMMARY \b0 : \b\i0 Inspector/Controller for eText-based eTDocInfos \b0 \ // \b\i SUPERCLASS \b0 : \i0 \b Object:eTDocInfoUI \b0 \ // \b\i PROTOCOLS \b0 : \i0 \b <Inspectable> \b0 \ // \b\i INTERFACE \b0 : \i0 \b eTDocInfoUI.nib \b0 \ // \b\i AUTHOR \b0 : \b\i0 Rohit Khare \b0 \ // \b\i COPYRIGHT \b0 : \f1\i0 Ó \f0\b 1993,94 California Institure of Technology, eText Project\ \b0 //ÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐ\ // \b\i Implementation Commnents \b0\i0 \ // This is a shared inspector (once copy of the nibs, can inspect any\ // eText DocInfo). It is also used as an "implicit" annotation in eText docs.\ //ÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐ\ // \b\i HISTORY\ \b0\i0 // 10/04/94: \b Revamped for eText5; renamed eTDocInfoUI \b0 \ // 01/15/94: \b Created for eText4.0. Borrows from DocInspector in eText3.0 \b0 \ //ÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐ\ // \b Imported Interfaces \b0 \ //\ #import " \b eTDocInfoUI.h \b0 "\ \ \i @implementation eTDocInfoUI\ \i0 //ÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐ\ // \b Class Management \b0 \ //\ + \b new \b0 \{\ \b static \b0 eTDocInfoUI * \b ui \b0 = \b nil \b0 ;\ \ if ( \b !ui \b0 ) \{\ \b ui \b0 = [[ \b eTDocInfoUI \b0 alloc] \b init \b0 ];\ \}\ \b return \b0 ui;\ \}\ - \b free \b0 \{\ return \b self \b0 ;\}\ - \b init \b0 \{\ char \b buf \b0 [MAXPATHLEN];\ NXBundle * \b bundle \b0 ;\ \ [super \b init \b0 ];\ \b bundle \b0 = [ \b NXBundle \b0 bundleForClass:[ \b eTDocInfoUI \b0 class]];\ if ([ \b bundle \b0 \b getPath \b0 :buf \b forResource \b0 :" \b eTDocInfoUI \b0 " \b ofType \b0 :" \b nib \b0 "] ) \{\ [NXApp \b loadNibFile \b0 :buf \b owner \b0 :self \b withNames \b0 :NO];\ \} else \{\ NXLogError(" \b NIB not found: eTDocInfoUI \b0 ");\ \}\ \ \b infoView \b0 = [ \b infoPanel \b0 \b contentView \b0 ];\ \b docInfoView \b0 = [ \b docInfoPanel \b0 \b contentView \b0 ];\ \b taggingView \b0 = [ \b taggingPanel \b0 \b contentView \b0 ];\ [ \b heading1Well \b0 setStr:NXUniqueString(" \b <H1> \b0 ")];\ [ \b heading2Well \b0 setStr:NXUniqueString(" \b <H2> \b0 ")];\ [ \b heading3Well \b0 setStr:NXUniqueString(" \b <H3> \b0 ")];\ [ \b heading4Well \b0 setStr:NXUniqueString(" \b <H4> \b0 ")];\ [ \b heading5Well \b0 setStr:NXUniqueString(" \b <H5> \b0 ")];\ [ \b heading6Well \b0 setStr:NXUniqueString(" \b <H6> \b0 ")];\ [ \b quotationWell \b0 setStr:NXUniqueString(" \b <BLOCKQUOTE> \b0 ")];\ [ \b bodyWell \b0 setStr:NXUniqueString(" \b Body Text \b0 ")];\ [ \b peersWell \b0 \b initLinkWell \b0 ];\ [ \b parentWell \b0 \b initLinkWell \b0 ];\ [ \b comments \b0 setDelegate:self];\ \ return self;\ \}\ - \b setDocInfo \b0 :newDocInfo \{\ \b theDocInfo \b0 = \b newDocInfo \b0 ; return self;\}\ \ \ //ÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐ\ // \b UI Callbacks \b0 \ //\ - \b accept \b0 :sender; // \i From eTLinkWells \i0 \ \{\ if ( \b sender \b0 == \b parent \b0 Well)\{\ [ \b parent \b0 \b setStringValue \b0 :[sender \b currentLink \b0 ]-> \b docID \b0 ];\ [ \b theDocInfo \b0 \b setParent \b0 :[sender \b currentLink \b0 ]-> \b docID \b0 ];\ \} else if ( \b sender \b0 == \b peers \b0 Well) \{\ char \b buf \b0 [MAXPATHLEN];\ \b sprintf \b0 (buf, " \b %s %s \b0 ", [sender \b currentLink \b0 ]-> \b docID \b0 ,[ \b peers \b0 \b stringValue \b0 ]);\ [ \b peers \b0 \b setStringValue \b0 :buf];\ [ \b theDocInfo \b0 \b setPeers \b0 :buf];\ \}\ return [self touch];\ \}\ - \b textDidGetKeys \b0 :sender \b isEmpty \b0 :(BOOL)flag \{\ return [self touch];\}\ - \b textWillConvert \b0 :sender \b fromFont \b0 :from \b toFont \b0 :to \{\ [self touch]; return to;\}\ - \b touch \b0 :sender \{ // \i The FormCell action: method\ \i0 return [[ \b theDocInfo \b0 \b etDoc \b0 ] \b touch \b0 ];\}\ - \b touch \b0 \{\ return [[ \b theDocInfo \b0 \b etDoc \b0 ] \b touch \b0 ];\}\ \ //ÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐ\ // \b <Inspectable> Obligations \b0 \ //\ - (const char *) \b inspectorTitle \b0 \{return NXUniqueString(" \b DocInfo \b0 ");\}\ - (const NXAtom *) \b types \b0 \{\ \b static \b0 NXAtom * \b typesForInspector \b0 =NULL;\ \ if (!typesForInspector) \{\ typesForInspector = \b malloc \b0 ( \b 4 \b0 * sizeof(NXAtom));\ typesForInspector[0] = NXUniqueString( \b PROP \b0 );\ typesForInspector[1] = NXUniqueString( \b TAGS \b0 );\ typesForInspector[2] = NXUniqueString( \b INFO \b0 );\ typesForInspector[3] = \b NULL \b0 ;\ \}\ \b return \b0 \b typesForInspector \b0 ;\ \}\ - \b inspectorForType \b0 :(const char *) type \{\ if(!strcmp( \b type \b0 ,NXUniqueString( \b PROP \b0 )))\ return \b docInfoView \b0 ;\ else if (!strcmp( \b type \b0 ,NXUniqueString( \b TAGS \b0 )))\ return \b taggingView \b0 ;\ else if (!strcmp( \b type \b0 ,NXUniqueString( \b INFO \b0 )))\ return \b infoView \b0 ;\ NXLogError(" \b Massive Inspector Failure: Asked eTDocInfoUI for: %s \b0 ", \b type \b0 );\ return \b docInfoView \b0 ;\ \}\ - \b resignInspector \b0 : (View *) \b oldInspector \b0 \b ofType \b0 : (const char *) \b type \b0 \{\ if (oldInspector == \b docInfoView \b0 ) \{\ \b NXStream \b0 * \b stream \b0 ;\ \b char \b0 * \b buffer \b0 , * \b data \b0 ;\ \b int \b0 \b length \b0 , \b maxlen \b0 ;\ \ [theDocInfo \b setDocTitle \b0 :[ \b title \b0 stringValue]];\ [theDocInfo \b setAuthor \b0 :[ \b author \b0 stringValue]];\ [theDocInfo \b setKeywords \b0 :[ \b keywords \b0 stringValue]];\ [theDocInfo \b setParent \b0 :[ \b parent \b0 stringValue]];\ [theDocInfo \b setPeers \b0 :[ \b peers \b0 stringValue]];\ // \i Note that this call is in the eText category of theDocInfo; eDraw? \i0 \ [theDocInfo \b setEmitTrailer \b0 :(BOOL)[ \b trailerSw \b0 \b state \b0 ]];\ \ \b stream \b0 = \b NXOpenMemory \b0 (NULL, 0, \b NX_WRITEONLY \b0 );\ [ \b comments \b0 \b writeRichText \b0 : \b stream \b0 ];\ \b NXGetMemoryBuffer \b0 ( \b stream \b0 , & \b buffer \b0 , & \b length \b0 , & \b maxlen \b0 );\ \b data \b0 = \b malloc \b0 (( \b length \b0 +1) * sizeof( \b char \b0 ));\ \b bcopy \b0 ( \b buffer \b0 , \b data \b0 , length);\ data[length] = 0;\ \b NXCloseMemory \b0 ( \b stream \b0 , \b NX_FREEBUFFER \b0 );\ [ \b theDocInfo \b0 \b setRTFComments \b0 :NXUniqueString( \b data \b0 )];\ \b free \b0 (data);\ \ [ \b navigator \b0 \b touch \b0 ];\ \ \} else if (oldInspector == \b taggingView \b0 ) \{\ [theDocInfo \b setTag \b0 : \b H1 \b0 to:[ \b heading1 \b0 Well \b font \b0 ]];\ [theDocInfo \b setTag \b0 : \b H2 \b0 to:[ \b heading2 \b0 Well \b font \b0 ]];\ [theDocInfo \b setTag \b0 : \b H3 \b0 to:[ \b heading3 \b0 Well \b font \b0 ]];\ [theDocInfo \b setTag \b0 : \b H4 \b0 to:[ \b heading4 \b0 Well \b font \b0 ]];\ [theDocInfo \b setTag \b0 : \b H5 \b0 to:[ \b heading5 \b0 Well \b font \b0 ]];\ [theDocInfo \b setTag \b0 : \b H6 \b0 to:[ \b heading6 \b0 Well \b font \b0 ]];\ [theDocInfo \b setTag \b0 : \b QT \b0 to:[ \b quotation \b0 Well \b font \b0 ]];\ [theDocInfo \b setTag \b0 : \b BODY \b0 to:[ \b body \b0 Well \b font \b0 ]];\ \}\ return self;\ \}\ - \b activateInspector \b0 : (View *) \b newInspector \b0 \b ofType \b0 : (const char *) \b type \b0 \{\ if (newInspector == \b docInfoView \b0 ) \{\ \b NXStream \b0 * \b stream \b0 ;\ \b char \b0 * \b buf \b0 ;\ \ [ \b docIDField \b0 setStringValue:[theDocInfo \b docIDStr \b0 ]];\ [ \b dateField \b0 setStringValue:[theDocInfo \b lastModifyDate \b0 ]];\ [ \b title \b0 setStringValue:[theDocInfo \b docTitle \b0 ]];\ [ \b keywords \b0 setStringValue:[theDocInfo \b keywords \b0 ]];\ [ \b author \b0 setStringValue:[theDocInfo \b author \b0 ]];\ [ \b parent \b0 setStringValue:[theDocInfo \b parent \b0 ]];\ [ \b peers \b0 setStringValue:[theDocInfo \b peers \b0 ]];\ // \i Note that this call is in the eText category of theDocInfo; eDraw? \i0 \ [ \b trailerSw \b0 setState:[theDocInfo \b emitTrailer \b0 ]];\ \b buf \b0 = (char *)[theDocInfo \b rtfComments \b0 ];\ if (buf) \{\ \b stream \b0 = \b NXOpenMemory \b0 ( \b buf \b0 ,strlen(buf), \b NX_READONLY \b0 );\ [ \b comments \b0 \b readRichText \b0 :stream];\ \b NXClose \b0 (stream);\ \} else \{\ [ \b comments \b0 setSel:0 :[comments textLength]];\ [comments \b setText \b0 :""];\ \}\ \} else if (newInspector == \b taggingView \b0 ) \{\ [ \b heading1 \b0 Well \b setFont \b0 :[theDocInfo \b tagFont \b0 : \b H1 \b0 ]];\ [ \b heading2 \b0 Well \b setFont \b0 :[theDocInfo \b tagFont \b0 : \b H2 \b0 ]];\ [ \b heading3 \b0 Well \b setFont \b0 :[theDocInfo \b tagFont \b0 : \b H3 \b0 ]];\ [ \b heading4 \b0 Well \b setFont \b0 :[theDocInfo \b tagFont \b0 : \b H4 \b0 ]];\ [ \b heading5 \b0 Well \b setFont \b0 :[theDocInfo \b tagFont \b0 : \b H5 \b0 ]];\ [ \b heading6 \b0 Well \b setFont \b0 :[theDocInfo \b tagFont \b0 : \b H6 \b0 ]];\ [ \b quotation \b0 Well \b setFont \b0 :[theDocInfo \b tagFont \b0 : \b QT \b0 ]];\ [ \b body \b0 Well \b setFont \b0 :[theDocInfo \b tagFont \b0 : \b BODY \b0 ]];\ \}\ return self;\ \}\ \i @end\ \i0 \ //ÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐ\ // \b Text-specific Extensions \b0 \ //\ \i @implementation eTDocInfoUI(eText)\ \i0 //ÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐ\ // \b Tagging Fonts \b0 \ //\ - \b setDefaultTags \b0 :sender \{\ [theDocInfo \b registerTag \b0 : \b H1 \b0 to:[ \b heading1 \b0 Well \b font \b0 ]];\ [theDocInfo \b registerTag \b0 : \b H2 \b0 to:[ \b heading2 \b0 Well \b font \b0 ]];\ [theDocInfo \b registerTag \b0 : \b H3 \b0 to:[ \b heading3 \b0 Well \b font \b0 ]];\ [theDocInfo \b registerTag \b0 : \b H4 \b0 to:[ \b heading4 \b0 Well \b font \b0 ]];\ [theDocInfo \b registerTag \b0 : \b H5 \b0 to:[ \b heading5 \b0 Well \b font \b0 ]];\ [theDocInfo \b registerTag \b0 : \b H6 \b0 to:[ \b heading6 \b0 Well \b font \b0 ]];\ [theDocInfo \b registerTag \b0 : \b QT \b0 to:[ \b quotation \b0 Well \b font \b0 ]];\ [theDocInfo \b registerTag \b0 : \b BODY \b0 to:[ \b body \b0 Well \b font \b0 ]];\ return [self touch];\ \}\ - \b getDefaultTags \b0 :sender \{\ [ \b heading1 \b0 Well \b setFont \b0 :[theDocInfo \b defaultTagFont \b0 : \b H1 \b0 ]];\ [ \b heading2 \b0 Well \b setFont \b0 :[theDocInfo \b defaultTagFont \b0 : \b H2 \b0 ]];\ [ \b heading3 \b0 Well \b setFont \b0 :[theDocInfo \b defaultTagFont \b0 : \b H3 \b0 ]];\ [ \b heading4 \b0 Well \b setFont \b0 :[theDocInfo \b defaultTagFont \b0 : \b H4 \b0 ]];\ [ \b heading5 \b0 Well \b setFont \b0 :[theDocInfo \b defaultTagFont \b0 : \b H5 \b0 ]];\ [ \b heading6 \b0 Well \b setFont \b0 :[theDocInfo \b defaultTagFont \b0 : \b H6 \b0 ]];\ [ \b quotation \b0 Well \b setFont \b0 :[theDocInfo \b defaultTagFont \b0 : \b QT \b0 ]];\ [ \b body \b0 Well \b setFont \b0 :[theDocInfo \b defaultTagFont \b0 : \b BODY \b0 ]]; return [self touch];\ \}\ \ - \b setHeading1 \b0 :sender \{\ if ([ \b sender \b0 \b isKindOf \b0 :[ \b Font \b0 class]])\ [ \b heading1 \b0 Well \b setFont \b0 : \b sender \b0 ];\ return [self touch];\}\ - ( \b Font \b0 *) \b heading1 \b0 \{\ return [ \b heading1 \b0 Well \b font \b0 ];\}\ \ - \b setHeading2 \b0 :sender \{\ if ([ \b sender \b0 \b isKindOf \b0 :[ \b Font \b0 class]])\ [ \b heading2 \b0 Well \b setFont \b0 : \b sender \b0 ];\ return [self touch];\}\ - ( \b Font \b0 *) \b heading2 \b0 \{\ return [ \b heading2 \b0 Well \b font \b0 ];\}\ \ - \b setHeading3 \b0 :sender \{\ if ([ \b sender \b0 \b isKindOf \b0 :[ \b Font \b0 class]])\ [ \b heading3 \b0 Well \b setFont \b0 : \b sender \b0 ];\ return [self touch];\}\ - ( \b Font \b0 *) \b heading3 \b0 \{\ return [ \b heading3 \b0 Well \b font \b0 ];\}\ \ - \b setHeading4 \b0 :sender \{\ if ([ \b sender \b0 \b isKindOf \b0 :[ \b Font \b0 class]])\ [ \b heading4 \b0 Well \b setFont \b0 : \b sender \b0 ];\ return [self touch];\}\ - ( \b Font \b0 *) \b heading4 \b0 \{\ return [ \b heading4 \b0 Well \b font \b0 ];\}\ \ - \b setHeading5 \b0 :sender \{\ if ([ \b sender \b0 \b isKindOf \b0 :[ \b Font \b0 class]])\ [ \b heading5 \b0 Well \b setFont \b0 : \b sender \b0 ];\ return [self touch];\}\ - ( \b Font \b0 *) \b heading5 \b0 \{\ return [ \b heading5 \b0 Well \b font \b0 ];\}\ \ - \b setHeading6 \b0 :sender \{\ if ([ \b sender \b0 \b isKindOf \b0 :[ \b Font \b0 class]])\ [ \b heading6 \b0 Well \b setFont \b0 : \b sender \b0 ];\ return [self touch];\}\ - ( \b Font \b0 *) \b heading6 \b0 \{\ return [ \b heading6 \b0 Well \b font \b0 ];\}\ \ - \b setQuotation \b0 :sender \{\ if ([ \b sender \b0 \b isKindOf \b0 :[ \b Font \b0 class]])\ [ \b quotation \b0 Well \b setFont \b0 : \b sender \b0 ];\ return [self touch];\}\ - ( \b Font \b0 *) \b quotation \b0 \{\ return [ \b quotation \b0 Well \b font \b0 ];\}\ \ - \b setBody \b0 :sender \{\ if ([ \b sender \b0 \b isKindOf \b0 :[ \b Font \b0 class]])\ [ \b body \b0 Well \b setFont \b0 : \b sender \b0 ];\ return [self touch];\}\ - ( \b Font \b0 *) \b body \b0 \{\ return [ \b body \b0 Well \b font \b0 ];\}\ \ \i @end }
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.