Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought



SCROLLINGLIST WIDGEM
T
(
I
3
S
C
W
)
.
REFERENCE MANUALSC
P
A
R
G
O
E
L
L
S
INGLIST WIDGET(3W) WIDGET CLASS NAME ScrollingList SYNOPSIS #include <Intrinsic.h> #include <StringDefs.h> #include <OpenLook.h> #include <ScrollingL.h> static Widget scrollinglist, textfield; Args args[1]; scrollinglist = XtCreateWidget(name, scrollingListWidgetClass, ...); XtSetArg(args[0], XtNtextField, &textfield); XtGetValues(scrollinglist, args, 1); DESCRIPTION ScrollingList Components Each ScrollingList widget has the following parts: - Border - Current Item - Current Item Border - Items - Scrollbar - View Figure 1. Common Scrolling List Components If the application allows the list to be edited in place (in the View), the ScrollingList widget uses the following components: - Editable Text Field Amiga Unix Last change: 1


SCROLLINGLIST WIDGEM
T
(
I
3
S
C
W
)
.
REFERENCE MANUALSC
P
A
R
G
O
E
L
L
S
INGLIST WIDGET(3W) Figure 2. Editable Scrolling List Additional Components Editable Scrolling List The application can choose whether to allow the end user to change the items in a scrolling list. The Editable Text Field is the interface for enter- ing the new Item, and is described later. Other aspects of the user interface for editing are controlled by the application. For example, the application can attach a menu to the scrolling list to allow the end user to select where a new Item is to be inserted, and can employ pop-up windows to gather additional information about a new Item. Editing Directly in the List-the Editable Text Field The application can request that the ScrollingList widget manage part of the visual aspect of changing an existing Item in the View. The ScrollingList widget automatically creates a widget of class TextField that implements the Editable Text Field. The ScrollingList widget manages the Editable Text Field widget as follows: ⊕ The application asks the ScrollingList widget to "open" and "close" the Editable Text Field. Opening the Editable Text Field widget maps it and positions it so that, as the end user types in the name of a new or changed Item, the name lines up with the existing Item names. Closing the Editable Text Field widget unmaps it. (As described below, there may be times when the widget is unmapped yet still open.) If an existing Item is being edited, the application requests the Editable Text Field to overlay the Item. If a new Item is being inserted, the applica- tion requests Items to be scrolled down in the View to accommodate the Editable Text Field. ⊕ The ScrollingList widget maps and unmaps the Editable Text Field widget; the application does not. ⊕ If the end user scrolls the list while the Editable Text Field is still open, the ScrollingList widget scrolls it with the rest of the Items. If it has to be scrolled out of the View, it is scrolled out entirely, causing it to be unmapped but not closed. The application should not try to remap the child since it will be remapped when the list is scrolled back again. ⊕ If the end user attempts to make a selection or set a Current Item, the Editable Text Field is automatically closed. The application is responsible for handling the verification callbacks of the Editable Text Field and for telling the ScrollingList widget to add a new Item or change an existing Item as a result of the user input. Selectable Scrolling List The application can choose whether to allow the end user to select Items from a Amiga Unix Last change: 2


SCROLLINGLIST WIDGEM
T
(
I
3
S
C
W
)
.
REFERENCE MANUALSC
P
A
R
G
O
E
L
L
S
INGLIST WIDGET(3W) scrolling list. If Items can be selected, they can be copied elsewhere as text, and may be deletable ("cut"); see below for details. Deleting Selected Items The end user can delete selected Items. The ScrollingList widget provides some deletion capabilities through the selection mechanisms (see the discussion under "Selecting and Operating on the Items" below), and the application can provide other capabili- ties, such as with a pop-up menu choice. The application verifies that each selected Item can be deleted; it is responsible for providing feedback to the end user for any Items it will not delete. The ScrollingList widget updates the View to remove any deleted Items. Virtual List The ScrollingList widget "virtualizes" the list to allow the application to use list data structures best suited to its needs. The ScrollingList widget pro- vides routines the application uses to build and maintain a version of the list for the ScrollingList widget to use. With these routines, the application: - adds new Items to the list; - deletes Items from the list; - marks Items as changed; - shifts the View to show a particular Item; - and opens and closes the Editable Text Field for a new or changed Item. The application is responsible for defining callbacks that the ScrollingList widgets invoke when the end user attempts to change a Current Item, or cuts Items from the list. Each Item is identified by the Item name that is shown in the View for the end user, a token assigned by the ScrollingList widget that uniquely identi- fies the Item, and an attributes bit-vector that identi- fies if the Item is a Current Item. Amiga Unix Last change: 3


SCROLLINGLIST WIDGEM
T
(
I
3
S
C
W
)
.
REFERENCE MANUALSC
P
A
R
G
O
E
L
L
S
INGLIST WIDGET(3W) Order of Items in the Virtual List The list is assumed to have an order defined by the application. As it adds Items, the application tells the ScrollingList widget where to insert them: either before an Item already in the list or at the end of the list. Changeable List The application may change the content of a list at any time, including while it is displayed. The widget updates the View, if necessary, to reflect the changed list. To avoid unnecessary updates to the View when several changes need to be made, the application can tell the ScrollingList widget to avoid updates until the changes are finished. Setting a Current Item The end user can make one or more of the Items a Current Item, as determined by the applica- tion, by - pressing SELECT over it, - or moving the input focus inside the Border and typing the first letter of the Item's name. Either of these actions causes a callback to the application, which can decide if the Item should be made a Current Item, remain a Current Item, or be changed to a regular Item, depending on the current state of the Item and the needs of the applica- tion. Thus, the application can make the scrolling list behave as a set of exclusive or nonexclusive Items. Pressing SELECT also starts a selection, as described below. Selecting and Operating on the Items The ScrollingList widget allows selection operations on the Items. Items that are moved or copied from the View are treated as a newline-separated list of text items, in the order they appear in the scrolling list, with no leading or trailing blanks on any Item. selecting a single Item Clicking SELECT on an Item selects it and deselects any other active selection on the screen. selecting other Items Clicking ADJUST on an Item toggles its state, making an unselected Item selected and a selected Item unselected. wipe-through selection, with SELECT Pressing and dragging SELECT over Items selects them and deselects any other active selection on the screen. The selection starts with the Item where SELECT is pressed and extends to the Item where SELECT is released. If the pointer moves above or below the View, the View scrolls additional Items Amiga Unix Last change: 4


SCROLLINGLIST WIDGEM
T
(
I
3
S
C
W
)
.
REFERENCE MANUALSC
P
A
R
G
O
E
L
L
S
INGLIST WIDGET(3W) into the View, selecting them as well. The rate at which Items scroll into the View is the same as when pressing SELECT on the up or down arrows of the Scrollbar. The pointer can move out of the View to the left or right without interrupting the selec- tion. wipe-through selection, with ADJUST Pressing and dragging ADJUST marks the bounds of a selection the same way as pressing and dragging SELECT, except that the Items covered are "toggled". (Previously selected Items are deselected and previ- ously unselected Items are selected.) copying Items Pressing COPY copies any selected Items to the clip- board and deselects them. cutting Items Pressing CUT moves any selected Items to the clip- board and deletes them from the list. This opera- tion is allowed only if the scrolling list is edit- able. ScrollingList Coloration Figures 3 and 4 illustrate the resources that affect the coloration of the ScrollingList widget. Figure 3. Scrolling List Coloration Figure 4. Selected Item and Current Item Coloration SUBSTRUCTURE Scrollbar component Name: scrollbar Class: Scrollbar Editable Text Field component Name: textfield Class: TextField _____________________________________________________________________ _____________________Application_Resources\*(cO______________________ Name Class Type Default Access _____________________________________________________________________ Amiga Unix Last change: 5


()                MISC. REFERENCE MANUAL PAGES                 ()



     _____________________________________________________________________
     _XtNfont___________XtCFont_________XFontStruct_*____‡_________SI_____
      XtNfontColor      XtCFontColor    Pixel            ‡         I
     _____________________________________________________________________
     _XtNforeground_____XtCForeground___Pixel____________‡_________I______
      XtNmaximumSize    XtCLength       int              (none)    I
     _____________________________________________________________________
     _XtNstring_________XtCString_______String___________NULL______I______
      XtNverification   XtCCallback     XtCallbackList   NULL      I
     _____________________________________________________________________
    |                |               |                |         |        |
    |‡   The defaults|are set to agree
|
with the values| of these
|
| | resources for
|
the ScrollingList widget itself.
|
| | | | | | | | RESOURCES____________|_______________|________________|_________|________|_______________________ | | ScrollingList Resource Set\*(cO | |________________|_______________|________________|_________|________|_______________________ |_Name___________|_______Class___|______________Typ
|
e________|______Def
|
ault____________Access_ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Amiga Unix Last change: 1


()                MISC. REFERENCE MANUAL PAGES                 ()



     ____________________________________________________________________________________________
     _XtNancestorSensitive___XtCSenstitive__________Boolean____________TRUE_______________G*_____
      XtNapplAddItem         XtCApplAddItem         OlListToken(*)()   (n/a)              G
     ____________________________________________________________________________________________
     _XtNapplDeleteItem______XtCApplDeleteItem______void(*)()__________(n/a)______________G______
      XtNapplEditClose       XtCApplEditClose       void(*)()          (n/a)              G
     ____________________________________________________________________________________________
     _XtNapplEditOpen________XtCApplEditClose_______void(*)()__________(n/a)______________G______
      XtNapplTouchItem       XtCApplTouchItem       void(*)()          (n/a)              G
     ____________________________________________________________________________________________
     _XtNapplUpdateView______XtCApplUpdateView______void(*)()__________(n/a)______________G______
      XtNapplViewItem        XtCApplViewItem        void(*)()          (n/a)              G
     ____________________________________________________________________________________________
     _XtNbackground__________XtCBackground__________Pixel______________White______________SGI†___
      XtNbackgroundPixmap    XtCPixmap              Pixmap             (n/a)              SGI†
    |___________________________________________________________________________________________|
    |_XtNborderColor_________XtCBorderColor_________Pixel______________Black______________SGI†__|
    | XtNborderPixmap     |  XtCPixmap           |  Pixmap          |  (n/a)           |  SGI†  |
    |_____________________|______________________|__________________|__________________|________|
    |_XtNdepth____________|__XtCDepth____________|__int_____________|__(parent's)______|__GI____|
    | XtNdestroyCallback  |  XtCCallback         |  XtCallbackList  |  NULL            |  SI    |
    |_____________________|______________________|__________________|__________________|________|
    |_XtNfont_____________|__XtCFont_____________|__XFontStruct_*___|__(OPEN_LOOK_font)|__SI____|
    | XtNfontColor        |  XtCFontColor        |  Pixel           |  Black*          |  SGI   |
    |_____________________|______________________|__________________|__________________|________|
    |_XtNforeground_______|__XtCForeground_______|__Pixel___________|__Black___________|__SGI†__|
    | XtNheight           |  XtCHeight           |  Dimension       |  (calculated)    |  SGI   |
    |_____________________|______________________|__________________|__________________|________|
    |_XtNmappedWhenManaged|__XtCMappedWhenManaged|__Boolean_________|__TRUE____________|__SGI___|
    | XtNrecomputeWidth   |  XtCRecomputeWidth   |  Boolean         |  TRUE            |  SGI   |
    |_____________________|______________________|__________________|__________________|________|
    |_XtNselectable_______|__XtCSelectable_______|__Boolean_________|__TRUE____________|__SGI___|
    | XtNsensitive        |  XtCSensitive        |  Boolean         |  TRUE            |  GI*   |
    |_____________________|______________________|__________________|__________________|________|
    |_XtNtextField________|__XtCTextField________|__Widget__________|__(none)__________|__G_____|
    | XtNtraversalOn      |  XtCTraversalOn      |  Boolean         |  TRUE            |  SGI   |
    |_____________________|______________________|__________________|__________________|________|
    |_XtNuserData_________|__XtCUserData_________|__XtPointer_______|__NULL____________|__SGI___|
    | XtNuserDeleteItems  |  XtCCallback         |  XtCallbackList  |  NULL            |  SI    |
    |_____________________|______________________|__________________|__________________|________|
    |_XtNuserMakeCurrent__|__XtCCallback_________|__XtCallbackList__|__NULL____________|__SI____|
    | XtNviewHeight       |  XtCViewHeight       |  Dimension       |  (none)          |  SI    |
    |_____________________|______________________|__________________|__________________|________|
    |_XtNwidth____________|__XtCWidth____________|__Dimension_______|__(calculated)____|__SGI___|
    | XtNx                |  XtCPosition         |  Position        |  0               |  SGI   |
    |_____________________|______________________|__________________|__________________|________|
    |_XtNy________________|__XtCPosition_________|__Position________|__0_______________|__SGI___|
     OlListItem Structure Several of the resources defined  below
     use the following OlListItem structure:
          typedef struct _OlListItem {
                  int label_type;
                  XtPointer label;



Amiga Unix                Last change:                          1





()                MISC. REFERENCE MANUAL PAGES                 ()



                  XImage *glyph;
                  OlBitMask attr;
          } OlListItem;


     label_type
             identifies the type of label to display for the Item
             in the View.  It can have one of the values

     OL_STRING
             for a text label;

     OL_IMAGE
             for an image label.  Note:
             Only text labels are supported in  this  version  of
             the  ScrollingList widget, so the only value allowed
             is OL_STRING.  Any other legal  values  generate  an
             error  message that tells the application programmer
             that the value is not yet  supported.   Any  illegal
             values generate a different error message.

     label   is what to display for the Item in  the  View.   The
             type  of  the  value  of  this member depends on the
             value of the label_type member:

             OL_STRING
                     String

             OL_IMAGE
                     XImage*

     glyph   is currently unused.

     attr    defines attributes of the Item.  It is a bit  vector
             with the bit references:

             OL_LIST_ATTRIB_APPL
                     for application use.  This is a mask  of  16
                     contiguous  bits  that  can be subdivided as
                     the application sees fit.  These are the low
                     16  bits  of  the  value,  so no shifting is
                     necessary to access the bits as  an  integer
                     value.

             OL_LIST_ATTRIB_CURRENT
                     if the Item is a Current  Item.   Other  bit
                     values  are undefined but should not be used
                     by the application.

     OlListToken Structure The  ScrollingList  widget  identifies
     each  Item  with  a "token" of type OlListToken.  The Scrol-
     lingList widget assigns the token when an Item is  added  by



Amiga Unix                Last change:                          2





()                MISC. REFERENCE MANUAL PAGES                 ()



     the application, and the application uses the token in later
     references to the Item.  A zero value  is  allowed  in  some
     contexts where an OlListToken is expected, as a way to refer
     to no Item.  As a convenience to the application, the  macro
     OlListItemPointer(token)  converts an OlListToken value into
     a pointer to the corresponding OlListItem.  The  application
     can  change the values of the OlListItem members, but should
     let the ScrollingList widget know that  they  have  changed,
     using the XtNapplTouchItem routine.  No checking is done for
     incorrect OlListToken arguments to  the  OlListItemPointer()
     macro.   The  OlListToken value can be coerced into the type
     caddr_t and back without loss of precision.

     XtNapplAddItem This resource gives a pointer  to  a  routine
     the  application  can  call  when  it adds a new Item to the
     list.  This routine is also used  to  build  the  list  from
     scratch.






































Amiga Unix                Last change:                          3





()                MISC. REFERENCE MANUAL PAGES                 ()



     Synopsis:
          OlListToken (*applAddItem)(), token;

          static Arg query[] = {
                  { XtNapplAddItem, (XtArgVal)&applAddItem }
          };
          XtGetValues(widget, query, XtNumber(query));
          token = (*applAddItem)(widget, parent, reference, item)
          Widget widget;
          OlListToken parent, reference;
          OlListItem item;

     widget  identifies the ScrollingList widget instance.

     parent  should be set to 0, for  compatibility  with  future
             changes.

     reference
             identifies an Item before which to  insert  the  new
             Item.  This value can be zero to append the new Item
             to the list.

     item    describes the new Item.  The content of  the  OlLis-
             tItem  structure  is  copied  by  the  ScrollingList
             widget into space that it  maintains;  however,  the
             data pointed to by the .label and .glyph members are
             not copied.  The application can access  the  copied
             data  directly,  using the OlListItemPointer() macro
             to get a pointer to the OlListItem structure for the
             Item.   If  it  changes  the  data,  the application
             should use the XtNapplTouchItem routine to  let  the
             ScrollingList widget know the data has changed.























Amiga Unix                Last change:                          4





()                MISC. REFERENCE MANUAL PAGES                 ()



             If mapped and if allowed  by  the  application  (see
             XtNapplUpdateView), the ScrollingList widget updates
             the View if the new Item will be in the  View.   The
             View  is  changed as little as possible:  if the new
             Item is in the upper half of  the  View,  the  Items
             above  it  are  scrolled  up  and  the  top  Item is
             scrolled off; if the new Item is in the  lower  half
             of  the  View,  the Items below it are scrolled down
             and the bottom Item is scrolled off.














































Amiga Unix                Last change:                          5





()                MISC. REFERENCE MANUAL PAGES                 ()



             XtNapplDeleteItem This resource gives a pointer to a
             routine  the application can call when it deletes an
             Item from the list.

             Synopsis:
                  void (*applDeleteItem)();

                  static Arg query[] = {
                          { XtNapplDeleteItem, (XtArgVal)&applDeleteItem }
                  };
                  XtGetValues(widget, query, XtNumber(query));
                  (*applDeleteItem)(widget, token)
                  Widget widget;
                  OlListToken token;

     widget  identifies the ScrollingList widget instance.

     token   identifies the  deleted  Item.   If  mapped  and  if
             allowed  by the application (see XtNapplUpdateView),
             the ScrollingList widget updates  the  View  if  the
             deleted  Item  was  visible.  The View is changed as
             little as possible:  if the deleted Item was in  the
             upper  half of the View, Items above it are scrolled
             down and an Item is scrolled in from the top; if the
             deleted  Item  was  in  the  lower half of the View,
             Items below it  are  scrolled  up  and  an  Item  is
             scrolled in from the bottom.  If the View is already
             at  the  top  or  bottom,  the  additional  Item  is
             scrolled in from the other end, if possible.

             XtNapplEditClose This resource gives a pointer to  a
             routine  the  application can call when the user has
             finished editing an Item in the View.
             Synopsis:
                  void (*applEditClose)();

                  static Arg query[] = {
                          { XtNapplEditClose, (XtArgVal)&applEditClose }
                  };
                  XtGetValues(widget, query, XtNumber(query));
                  (*applEditClose)(widget)
                  Widget widget;

     widget  identifies the ScrollingList widget instance.   When
             this  routine  is  called,  the ScrollingList widget
             unmaps the Editable Text Field widget, scrolling  up
             the Items below it if they had been scrolled down to
             allow an insert.  The application is responsible for
             calling  the  XtNapplAddItem  routine to add the new
             Item, or calling  the  XtNapplTouchItem  routine  to
             mark  the  Item  as  changed.   To avoid unnecessary
             updates to the View, the application should add  the



Amiga Unix                Last change:                          6





()                MISC. REFERENCE MANUAL PAGES                 ()



             new  Item  (XtNapplAddItem) or mark the changed Item
             (XtNapplTouchItem) before closing the Editable  Text
             Field.




















































Amiga Unix                Last change:                          7





()                MISC. REFERENCE MANUAL PAGES                 ()



             A later call to the XtNapplEditClose routine without
             an  intervening  call to the XtNapplEditOpen routine
             is ignored.  If  mapped,  the  ScrollingList  widget
             updates the View, even if the application had halted
             updates (see XtNapplUpdateView).  If the application
             had  halted updates, they will continue to be halted
             afterwards.

             XtNapplEditOpen This resource gives a pointer  to  a
             routine  the  application  can call when it wants to
             allow the end user to insert a new Item or change an
             existing Item in the View.
             Synopsis:

                  void (*applEditOpen)();
                  static Arg query[] = {
                          { XtNapplEditOpen, (XtArgVal)&applEditOpen }
                  };
                  XtGetValues(widget, query, XtNumber(query));

                  (*applEditOpen)(widget, insert, reference)
                  Widget widget;
                  Boolean insert;
                  OlListToken reference;

     widget  identifies the ScrollingList widget instance.

     insert  tells whether Items should be scrolled down to  make
             room  for  inserting  a  new Item.  A value of FALSE
             implies that an Item is being edited in place and no
             Items are to be scrolled.

     reference
             identifies an Item before which a new Item is to  be
             inserted  (insert  is  TRUE)  or identifies the Item
             that is being changed (insert is FALSE).  If  insert
             is TRUE, this value can be zero to append a new Item
             at the end of the list.  If insert  is  FALSE,  this
             value  must  refer  to an existing Item.  The refer-
             enced Item does not  have  to  be  in  the  View-see
             below.   If a new Item is being inserted, the Scrol-
             lingList widget makes room  for  the  Editable  Text
             Field  by scrolling down the referenced Item and any
             Items below it.  If the referenced Item  is  not  in
             the  View,  it is automatically made visible just as
             if the application had  called  the  XtNapplViewItem
             routine  first.   The XtNapplEditOpen routine can be
             called again  before  an  intervening  call  to  the
             XtNapplEditClose  routine.   The effect is as if the
             XtNapplEditClose routine  was  called,  but  without
             multiple  updates  to  the  View.  For example, this
             allows the application to let the  end  user  insert
             several  new Items in succession:  the Editable Text



Amiga Unix                Last change:                          8




()                MISC. REFERENCE MANUAL PAGES                 ()



             Field moves down as each Item is  inserted,  but  is
             never  removed from the View.  If mapped, the Scrol-
             lingList widget updates the View, even if the appli-
             cation  had  halted updates (see XtNapplUpdateView).
             If the application had  halted  updates,  they  will
             continue to be halted afterwards.

















































Amiga Unix                Last change:                          9





()                MISC. REFERENCE MANUAL PAGES                 ()



             XtNapplTouchItem This resource gives a pointer to  a
             routine  the application can call when it changes an
             Item in the list.
             Synopsis:

                  void (*applTouchItem)();
                  static Arg query[] = {
                          { XtNapplTouchItem, (XtArgVal)&applTouchItem }
                  };
                  XtGetValues(widget, query, XtNumber(query));

                  (*applTouchItem)(widget, token)
                  Widget widget;
                  OlListToken token;

     widget  identifies the ScrollingList widget instance.

     token   identifies the Item that has changed.  If mapped and
             if   allowed  by  the  application  (see  XtNapplUp-
             dateView), the ScrollingList widget updates the View
             if the changed Item is visible.

             XtNapplUpdateView This resource gives a pointer to a
             routine  the application can call to keep the Scrol-
             lingList widget from updating the View, or to let it
             again update the View.
             Synopsis:
                  void (*applUpdateView)();

                  static Arg query[] = {
                          { XtNapplUpdateView, (XtArgVal)&applUpdateView }
                  };
                  XtGetValues(widget, query, XtNumber(query));
                  (*applUpdateView)(widget, ok)
                  Widget widget;
                  Boolean ok;

     ok      is either TRUE or FALSE, depending  on  whether  the
             ScrollingList  can update the View as it changes, or
             not, respectively.  From  the  time  the  XtNapplUp-
             dateView  routine  is  called  with a FALSE argument
             until it is called with a TRUE argument, the  Scrol-
             lingList  does  not  update  the View in response to
             application-made changes, except:

     - if the application opens or closes the Editable Text Field
       (cf XtNapplEditOpen and XtNapplEditClose);

     - if the end user manipulates  the  list  by  scrolling  it,
       selecting an Item, cutting, etc.





Amiga Unix                Last change:                         10





()                MISC. REFERENCE MANUAL PAGES                 ()



       The ScrollingList widget updates the View once for each of
       these  exceptions,  each  time  an  exception  occurs.  An
       application should use this routine to bracket  a  set  of
       changes  to avoid spurious changes to the View.  This rou-
       tine is not needed if only one change is made to the list.
       The  following  example  illustrates the use of the XtNap-
       plUpdateView routine.
            /*
             * Stop View updates.
             */
            (*applViewUpdate)(widget, FALSE);

            /*
             * Make some changes.
             */
            (*applDeleteItem)(widget, ...);
            (*applDeleteItem)(widget, ...);
            (*applDeleteItem)(widget, ...);
            (*applAddItem)(widget, ...);
            (*applTouchItem)(widget, ...);
            /*
             * Allow the View to be updated again.
             */
            (*applViewUpdate)(widget, TRUE);

       XtNapplViewItem This resource gives a pointer to a routine
       the  application  can call when it wants a particular Item
       placed in the View.
       Synopsis:

            void (*applViewItem)();
            static Arg query[] = {
                    { XtNapplViewItem, (XtArgVal)&applViewItem }
            };
            XtGetValues(widget, query, XtNumber(query));

            (*applViewItem)(widget, token)
            Widget widget;
            OlListToken token;

     widget  identifies the ScrollingList widget instance.

     token   identifies the Item to move into the View.  The Item
             is  moved  into the View in a way that minimizes the
             change to the View.  If the Item is currently in the
             View,  nothing is changed.  If scrolling the list up
             or down brings the Item into the View while  keeping
             at least one previously viewed Item in the View, the
             list is scrolled.  Otherwise, the Item is placed  at
             the  top of the View, or as close to the top as pos-
             sible if there aren't enough Items  in  the  current
             Level to fill the View below it.



Amiga Unix                Last change:                         11





()                MISC. REFERENCE MANUAL PAGES                 ()



             If mapped and if allowed  by  the  application  (see
             XtNapplUpdateView), the ScrollingList widget updates
             the View.

             XtNfont

     Range of Values:
          (any valid return from XLoadQueryFont())
Default:
     (chosen to match the scale and screen resolution)

     This resource identifies the font to be used to display  the
     Items  in  the  View.   The default value points to a cached
     font structure; an application should not expect to get this
     value  with  a  call  to  XtGetValues()  and use it reliably
     thereafter.

     XtNfontColor

     Range of Values:
          (any Pixel value valid for  the  current  display)/(any
          name from the rgb.txt file)

     This resource specifies the color for the font.  If not set,
     the  color from the XtNforeground resource, if available, is
     used for the font.  See the note about  the  interaction  of
     this  resource with other color resources under the descrip-
     tion of the XtNbackground resource in CORE RESOURCES(3W).

     XtNforeground This resource defines the foreground color for
     the  widget.   See  the  note  about the interaction of this
     resource with other color resources under the description of
     the XtNbackground resource in CORE RESOURCES(3W).

     XtNrecomputeWidth Range of Values:
          TRUE
          FALSE
     These resources control how the ScrollingList widget  should
     respond  to  requests  to resize itself.  Where one of these
     resources is TRUE, the ScrollingList shrinks the View of the
     Content  in the corresponding direction to absorb the change
     in the ScrollingList widget's  size.   Where  one  of  these
     resources  is  FALSE,  the ScrollingList does not shrink the
     View in that direction.











Amiga Unix                Last change:                         12





()                MISC. REFERENCE MANUAL PAGES                 ()



     These  resources,  together  with   the   XtNviewWidth   and
     XtNviewHeight  resources,  are  typically used to set a pre-
     ferred dimension in a direction that should not be scrolled.




















































Amiga Unix                Last change:                         13





()                MISC. REFERENCE MANUAL PAGES                 ()



     XtNselectable

     Range of Values:
          TRUE
          FALSE
     This resource controls whether the end user can select Items
     in  the  scrolling  list.  If set to TRUE, then Items can be
     selected with SELECT and ADJUST and  copied  with  the  COPY
     key.   Items  may  be deleted with the CUT key, although the
     application can stop some or all selected Items  from  being
     deleted.  If set to FALSE, then Items cannot be selected and
     the COPY and CUT keys have no effect.  XtNtextField This  is
     the  widget  ID  of  the TextField class Editable Text Field
     widget; its value is available once the ScrollingList widget
     has  been created.  The ScrollingList widget resets the fol-
     lowing values before returning from each invocation  of  the
     XtNapplEditOpen routine:
        ______________________________________________________
       |___________Editable_Text_Field_Reset_Values__________|
       | Name     |  Class    |  Value                       |
       |__________|___________|______________________________|
       | XtNwidth |  XtCWidth |  (width available in View)   |
       |__________|___________|______________________________|
       |_XtNstring|__XtCString|__(name_of_Item_to_be_changed)|

     XtNtraversalOn This resource specifies whether  this  widget
     is selectable during traversal.

     XtNuserDeleteItems  This  resource  defines  the   callbacks
     issued  when  the  end  user  tries to delete Items from the
     list.  (Currently, the only  way  the  ScrollingList  widget
     handles   deletions   is  through  a  cut  operation.)   The
     call_data parameter points to a structure OlListDelete  that
     looks like this:

          typedef struct _OlListDelete {
                  OlListToken *tokens
                  Cardinal num_tokens;
          } OlListDelete;

     tokens  is a list identifying the Items to be deleted.   The
             application   is   expected  to  act  on  each  Item
             separately, calling the XtNapplDeleteItem routine to
             delete  each  from  the  list.   The application may
             refuse to delete some or all of the  Items,  and  is
             responsible  for  providing any feedback to the end-
             user.








Amiga Unix                Last change:                         14





()                MISC. REFERENCE MANUAL PAGES                 ()



     num_tokens
             is the number of Items to delete.





















































Amiga Unix                Last change:                         15





()                MISC. REFERENCE MANUAL PAGES                 ()



             XtNuserMakeCurrent This resource defines  the  call-
             backs  issued  when the end user presses SELECT over
             an Item.  The call_data parameter is the OlListToken
             value  that identifies the Item.  The application is
             expected to decide if the  Current  Item  status  of
             this  Item should change.  The .attributes member of
             the  OlListItem  structure  for  this  Item  is  not
             automatically changed by the ScrollingList widget.

             XtNviewHeight

     Range of Values:
          0 _ XtNviewHeight

     This resource gives the preferred height of the View as  the
     number  of  Items to show.  If a nonzero value is given, the
     corresponding XtNheight resource is computed  by  converting
     this  number  to  pixels  and  adding  any padding or border
     thickness.  In this case, any value given in  the  XtNheight
     resource  is  overwritten.   If a zero value is given in the
     XtNviewHeight resource, the XtNheight resource is used as an
     estimate.   The  View is sized to show an integral number of
     Items, such that the overall  height  of  the  ScrollingList
     widget  is  less  than  or  equal to XtNheight, if possible.
     However, the View is always large enough to  show  at  least
     one  Item,  and  is  no  shorter than the minimum scroll bar
     size.   If  neither  the  XtNviewHeight  resource  nor   the
     XtNheight resource is set, or both are set to zero, the View
     is made as small as possible, limited as described above.


























Amiga Unix                Last change:                         16



Typewritten Software • bear@typewritten.org • Edmonds, WA 98026