This is Inspectable.h 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 Inspectable.h \
\b0 //
\i
\b SUMMARY
\b0 :
\b\i0 Defines a protocol for any inspectable object in eText.
\b0 \
//
\b\i SUPERCLASS
\b0 :
\i0
\b None
\b0 \
//
\b\i PROTOCOLS
\b0 :
\i0
\b <Inspectable, InspectableTarget>
\b0 \
//
\b\i INTERFACE
\b0 :
\i0
\b None
\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 Description
\b0\i0 \
// - (const NXAtom *)
\b types
\b0 ;\
// -
\b inspectorForType
\b0 :(const char *)
\b type
\b0 ;\
// -
\b resignInspector
\b0 : (View *)
\b oldInspector
\b0
\b ofType
\b0 : (const char *)
\b type
\b0 ;\
// -
\b activateInspector
\b0 :(View *)
\b newInspector
\b0
\b ofType
\b0 :(const char *)
\b type
\b0 ;\
// - (char *)
\b inspectorTitle
\b0 ;\
//\
// This is a protocol outlining the responsibilities of any object\
// that wishes to attach itself to the Inspector facility of most\
// ETF-applications. This protocol defines a standard interface for objects\
// to advertise actual inspectors, and for the system to notify the \
// inspectors' owners.\
//\
// Over time, the system has evolved into a strict MVC model, and the\
// <Inspectable> object is often a shared interface controller that can\
// dynamically "contain" the data of many clients (the */*UI pairs in eText).\
// So, we have a concrete problem with persistent selections, since flipping\
// back and forth between two documents with selected objects of the same\
// class causes problems -- the <Inspectable> object is the same, the content\
// is not. So, we developed the <
\b InspectableTarget
\b0 > extension.\
//\
// [inspector inspect:foo] will now stop to ask: does foo have an\
//
\b\i inspectableDelegate
\b0\i0 method? If so, store foo as the current target,\
// and use the return value ([[fooUI new] setFoo:foo]) as the <Inspectable>.\
// \
// NS: The medium for an inspector is a View. For ease of use with Interface\
// Builder, we suggest the programmer create a Panel or Box of the needed\
// size, and then pass in the contentView of these objects.\
//ÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐ\
//
\b\i HISTORY\
\b0\i0 // 10/30/94:
\b Created <InspectorTarget> protocol.
\b0 \
// 09/27/94:
\b Revamped for eText5
\b0 \
// 08/18/93:
\b Created. Derived almost wholly from Version 1.0
\b0 \
//
\i Version 1.0 tracking notes:\
\i0 // 06/29/93:
\b Added -doc for the purpose of Inspector's -touch
\b0 \
// 06/27/93:
\b Created (Rohit Khare)
\b0 \
//ÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐ\
//
\b Imported Interfaces
\b0 \
//\
#import <appkit/
\b View.h
\b0 >\
#import <objc/
\b hashtable.h
\b0 >\
\
//
\i NS: These are sized in relation to the Workspace Manager's inspector panels.
\i0 \
#define
\b INSPECTOR_W
\b0 270.0\
#define
\b INSPECTOR_H
\b0 378.0\
\
\i @protocol Inspectable\
\
\i0 - (const char *)
\b inspectorTitle
\b0 ;\
\i //
\b General
\b0 : The panel will put "inspectorTitle Inspector" in the window bar.\
//
\b Note
\b0 : the return value should be less than 240 characters.\
\i0 \
- (const NXAtom *)
\b types
\b0 ;\
\i //
\b General
\b0 : Inspectable objects can have several different inspectors.\
// A common set might be "Info, Controls, Contents" Controls would be UI\
// interactors (Play, Pause, etc.) and Contents might include filenames,\
// formats, etc. The first type in the list is the "primary" type, which is the\
// one a user is presented with first.\
// \
//
\b NS
\b0 : This list is loaded into a popup list, and the first item\
// on the list is the default view.\
\i0 \
\
-
\b inspectorForType
\b0 :(const char *)
\b type
\b0 ;\
\i //
\b General
\b0 : For each type of inspector, the system will automatically request\
// the needed panel on demand. The returned object is an inspector.\
// \
//
\b NS
\b0 : The offered view will be forcibly resized to the panel's full size.\
\i0 \
-
\b resignInspector
\b0 : (View *)
\b oldInspector
\b0
\b ofType
\b0 : (const char *)
\b type
\b0 ;\
-
\b activateInspector
\b0 : (View *)
\b newInspector
\b0
\b ofType
\b0 : (const char *)
\b type
\b0 ;\
\i //
\b General
\b0 : The object which is being inspected also will be notified of status\
// changes. The inspected object is the implicit delegate of the inspector\
// controller. The arguments are the view and the tag given by the programmer\
// in methods above.\
\i0 \
\i @end\
\
@protocol InspectableTarget\
\i0 \
- (id <
\b Inspectable
\b0 >)
\b inspectableDelegate
\b0 ;\
//
\b\i General
\b0 : This is a "standard" proxy indirection mechanism for separating\
\i0 //
\i the inspected object from its inspectable interface (foo from fooUI)
\i0 \
\i \
@end
}
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.