

        OSF/Motif Style Guide
        Help Menu


        HHeellpp MMeennuu





        DDeessccrriippttiioonn



             There are two acceptable models for the contents of the
             HHeellpp Menu.  The _O_S_F/_M_o_t_i_f _S_t_y_l_e _G_u_i_d_e allows either
             model.

             The common Menu contents for this model are described
             in the following text.  Note that you should only
             include those functions actually supported by your
             application.  The HHeellpp Menu can contain a
             TearOffButton.  The illustration on this reference page
             shows this first model of a HHeellpp Menu.

             OOnn CC__oonntteexxtt   SShhiifftt++HHeellpp
                            Must initiate context-sensitive help by   *
                            changing the shape of the pointer to the  *
                            question pointer described in Section     *
                            2.2.2.  When the user moves the pointer   *
                            to the component help is wanted on and    *
                            presses BBSSeelleecctt, any available context-   *
                            sensitive help for the component must be  *
                            presented, and the pointer reverts from   *
                            the question pointer.  This action must   *
                            have the mnemonic CC.  If the action uses
                            an accelerator, it should be <<SShhiifftt>>
                            <<HHeellpp>>.

             OOnn HH__eellpp        Must provide information on how to use    *
                            the application's help facility.  This    *
                            action must have the mnemonic HH.

             OOnn WW__iinnddooww      Must provide general information about    *
                            the window from which help was            *
                            requested.  This action must have the     *
                            mnemonic WW.

             OOnn KK__eeyyss        Must provide information about the        *
                            application's use of function keys,       *
                            mnemonics, and keyboard accelerators.     *
                            This action must have the mnemonic KK.






        9-48                                         August 26, 1994







                        Controls, Groups, and Models Reference Pages
                                                           Help Menu


             II__nnddeexx          Must provide an index for all help        *
                            information in the application.  This     *
                            action must have the mnemonic II.  The
                            index can provide search capabilities.

             TT__uuttoorriiaall       Must provide access to the application's  *
                            tutorial.  This action must have the      *
                            mnemonic TT.

             OOnn VV__eerrssiioonn     Must provide the name and version of the  *
                            application.  This action must have the   *
                            mnemonic VV.  It can provide other
                            information as well.

             The common Menu contents in the second model are
             described in the following text.  Note that you should
             only include those functions actually supported by your
             application.  The HHeellpp Menu can contain a
             TearOffButton.

             CC__oonntteexxtt--SSeennssiittiivvee HHeellpp   SShhiifftt++HHeellpp
                            Must initiate context-sensitive help by   *
                            changing the shape of the pointer to the  *
                            question pointer described in Section     *
                            2.2.2.  When the user moves the pointer   *
                            to the component help is wanted on and    *
                            presses BBSSeelleecctt, any available context-   *
                            sensitive help for the component must be  *
                            presented, and the pointer reverts from   *
                            the question pointer.  This action        *
                            should be followed by a separator.  This  *
                            action must have the mnemonic CC.  If the
                            action uses an accelerator, it should be
                            <<SShhiifftt>> <<HHeellpp>>.

             OO__vveerrvviieeww       Must provide general information about    *
                            the application window from which help    *
                            was requested.  This action must have     *
                            the mnemonic OO.

             II__nnddeexx          Must provide an index for all help        *
                            information in the application.  This     *
                            action must have the mnemonic II.  The
                            index can provide search capabilities.

             KK__eeyybbooaarrdd       Must provide information about the        *
                            application's use of function keys,       *
                            mnemonics, and keyboard accelerators.     *
                            This action must have the mnemonic KK.





        August 26, 1994                                         9-49







        OSF/Motif Style Guide
        Help Menu


             TT__uuttoorriiaall       Must provide access to the application's  *
                            tutorial.  This action must have the      *
                            mnemonic TT.

             UUssiinngg HH__eellpp     Must provide information on how to use    *
                            the application's help facility.  This    *
                            action must have the mnemonic HH.

             PP__rroodduucctt IInnffoorrmmaattiioonn
                            Must provide the name and version of the  *
                            application.  This action must have the   *
                            mnemonic PP.  It can provide other
                            information as well.

             Applications should place additional HHeellpp Menu items
             between IInnddeexx and UUssiinngg HHeellpp.

             Help is usually provided in DialogBoxes but can also
             appear in the message area.  You should include Menu
             items in the order described.  If you add new Menu
             items, you should insert them near similar elements.

































        9-50                                         August 26, 1994







                        Controls, Groups, and Models Reference Pages
                                                           Help Menu


        IIlllluussttrraattiioonn





        RReellaatteedd IInnffoorrmmaattiioonn


             See Chapter 6 for more information on the MenuBar
             system and for general information about Menu design.











































        August 26, 1994                                         9-51







        OSF/Motif Style Guide
        Icon Menu


        IIccoonn MMeennuu





        DDeessccrriippttiioonn


             Clicking BBSSeelleecctt in an icon must give the icon the       *
             keyboard focus and post the icon Menu.  The icon Menu    *
             must be the same Menu as the window Menu for the         *
             associated primary window.  SSiizzee should not be
             available from the icon Menu.  Navigating to the icon    *
             must also give the icon the keyboard focus and should    *
             post the icon Menu.

             Double-clicking BBSSeelleecctt anywhere in the icon must        *
             restore the window family, just as the icon Menu item    *
             RReessttoorree does.  If the window is currently minimized,     *
             but its previous state was maximized, double-clicking    *
             BBSSeelleecctt returns it to the maximized state.  Selecting    *
             MMaaxxiimmiizzee from the icon Menu always maximizes the         *
             corresponding window.  If the window is minimized,       *
             MMiinniimmiizzee must not be available in the icon Menu;         *
             otherwise, selecting it minimizes the window family.     *
             Pressing BBSSeelleecctt or BBTTrraannssffeerr anywhere in the icon and   *
             dragging the mouse pointer must move the icon to track   *
             the pointer, just as the icon Menu item MMoovvee does.

             If the window manager has been customized by the user    *
             so that the icon Menu does not pop up when the icon      *
             gets the focus, <<SShhiifftt>> <<EEssccaappee>>, <<AAlltt>> <<SSppaaccee>>,         *
             <<MMeennuu>>, and BBMMeennuu must pop up the icon Menu.



        RReellaatteedd IInnffoorrmmaattiioonn


             See Chapter 7 for more information on the icon Menu and
             the window manager in general.  See Chapter 6 for
             information about Menu design.











        9-52                                         August 26, 1994







                        Controls, Groups, and Models Reference Pages
                                                             IconBox


        IIccoonnBBooxx





        DDeessccrriippttiioonn


             An icon box is a specialized window that acts as a
             storage location for icons.  An icon box acts like a
             typical window in the sense that it has a window frame
             and frame components.  The client area of an icon box    *
             must have an area for holding icons and can have         *
             horizontal and vertical scroll bars for moving around    *
             the icon area.

             The icon box must have all the same components as any    *
             other primary window.  Like other windows it can be
             sized, moved, minimized, maximized, restored, and
             lowered.  However, the window manager must not allow     *
             the icon box to be closed.  The system Menu action       *
             CClloossee must be replaced with the system Menu action PPaacckk  *
             IIccoonnss in an icon box.  Double-clicking BBSSeelleecctt in the    *
             icon box system Menu must only open the icon box system  *
             Menu.  It must not close the icon box.  PPaacckk IIccoonnss
             arranges the icons as close as possible together in the
             visible icon area if possible.  PPaacckk IIccoonnss must have     *
             the mnemonic PP.  If PPaacckk IIccoonnss has an accelerator, it
             should be <<AAlltt>> <<FF1122>> if <<FF1122>> is available.  When the   *
             input focus is in the icon box, <<SShhiifftt>> <<EEssccaappee>> or      *
             <<AAlltt>> <<SSppaaccee>> must pop up the icon box system Menu if    *
             the Menu is unposted.  If the Menu is already posted,    *
             <<SShhiifftt>> <<EEssccaappee>> or <<AAlltt>> <<SSppaaccee>> must unpost the Menu.

             The icon box can contain an icon for each window
             family, even if it is active.  The icon for minimized    *
             window families must be the same as the icon would be    *
             outside of the icon box.  The icon for an active window
             family should be similar to the minimized icon,
             deemphasized somehow.

             Clicking BBSSeelleecctt in an icon must give the icon keyboard  *
             focus and post the icon Menu.  The icon Menu must be     *
             the same Menu as the window Menu for the associated      *
             primary window.  If the icon represents an active        *
             window family, RReessttoorree and SSiizzee must not be available    *
             from the icon Menu.  If the icon represents a minimized  *
             window family, SSiizzee must not be available from the icon  *
             Menu.  If the window manager is customized so that the   *




        August 26, 1994                                         9-53







        OSF/Motif Style Guide
        IconBox


             icon with the focus does not have its window Menu        *
             automatically posted, BBMMeennuu or <<MMeennuu>> must post its      *
             Menu.

             Double-clicking BBSSeelleecctt anywhere in an icon that         *
             represents a minimized window family must restore the    *
             window family, just as the icon Menu item RReessttoorree does.  *
             Double-clicking BBSSeelleecctt anywhere in an icon that         *
             represents an active window family must raise the        *
             window family to the top of the window hierarchy.  If    *
             the window is currently minimized, but its previous      *
             state was maximized, double-clicking BBSSeelleecctt returns it  *
             to the maximized state.  Selecting MMaaxxiimmiizzee from the     *
             icon Menu always maximizes the corresponding window.     *
             If the window is minimized, MMiinniimmiizzee must not be         *
             available in the icon Menu; otherwise, selecting it      *
             minimizes the window family.  Pressing BBSSeelleecctt or        *
             BBTTrraannssffeerr anywhere in the icon and dragging the mouse    *
             pointer must move the icon within the icon area to       *
             track the pointer, just as the icon Menu item MMoovvee       *
             does.

             The <<||vv>>, <<||^^>>, <<-->>>>, and <<<<-->> directional keys must       *
             navigate among the icons in the icon box.  Icon          *
             navigation must behave as described in the following     *
             text.  Note that <<||vv>> and <<-->>>> do not need to traverse
             icons in the same order.

             <<||vv>>     In a left-to-right language environment, this    *
                     key must move the location cursor through the    *
                     icons in the icon box, starting at the upper-    *
                     left icon and ending at the lower-right icon,    *
                     then wrapping back up to the upper left.  In a
                     right-to-left language environment, the
                     location cursor can move, starting at the upper
                     right and moving to the lower left.

             <<<<-->>    This key must move the location cursor through   *
                     the icons in the opposite direction of <<-->>>>.

             <<-->>>>    In a left-to-right language environment, this    *
                     key must move the location cursor through the    *
                     icons in the icon box, starting at the upper-    *
                     left icon and ending at the lower-right icon,    *
                     then wrapping back up to the upper left.  In a
                     right-to-left language environment, the
                     location cursor can move, starting at the upper
                     right and moving to the lower left.






        9-54                                         August 26, 1994







                        Controls, Groups, and Models Reference Pages
                                                             IconBox


             <<||^^>>     This key must move the location cursor through   *
                     the icons in the opposite direction of <<||vv>>.



        IIlllluussttrraattiioonn





        RReellaatteedd IInnffoorrmmaattiioonn


             See Chapter 7 for more information about icons and the
             window manager.






































        August 26, 1994                                         9-55







        OSF/Motif Style Guide
        Icons


        IIccoonnss





        DDeessccrriippttiioonn


             An icon is a stylized representation of an object.  A
             window icon is a minimized representation of a window
             or window family that can help organize windows and
             tasks in the display.  Iconifying a window is also
             known as minimizing a window.  The window manager must   *
             iconify all windows of window family together.  It must  *
             not iconify any single window, primary or secondary,     *
             from a window family without also iconifying all the     *
             other windows in the window family.  The iconic
             representation of a window family should not change any
             state in the windows, except the visual representation
             of the window.  The application running inside of a      *
             window must continue running even when the application   *
             is iconified.  The application can adjust its own state
             when it is iconified.

             An icon is made up of an image and a label.  The
             illustration on this reference page shows a typical
             Motif icon.

             The image should be surrounded by a border that
             indicates when the icon has the keyboard focus.  The
             image area can contain text or a bitmap.  The label
             should be located just below the image and its border.
             The label can also indicate when the icon has the
             keyboard focus by highlighting with the image area.

             The label should contain the same text as the title
             area of the corresponding primary window, or an
             abbreviated form of it.  When the icon does not have     *
             the keyboard focus, the width of the label must be the   *
             same as the width of the image area and its border,      *
             truncating text if necessary.  When the icon has the
             keyboard focus, the width of the label can expand to
             display the entire text.

             Clicking BBSSeelleecctt in an icon must give the icon keyboard  *
             focus and should post the icon Menu.  Navigating to the  *
             icon must also give the icon the keyboard focus and      *
             should post the icon Menu.





        9-56                                         August 26, 1994







                        Controls, Groups, and Models Reference Pages
                                                               Icons


             Double-clicking BBSSeelleecctt anywhere in the icon must        *
             restore the window family, just as the icon Menu item    *
             RReessttoorree does.  If the window is currently minimized,     *
             but its previous state was maximized, double-clicking    *
             BBSSeelleecctt returns it to the maximized state.  Selecting    *
             MMaaxxiimmiizzee from the icon Menu always maximizes the         *
             corresponding window.  If the window is minimized,       *
             MMiinniimmiizzee must not be available in the icon Menu;         *
             otherwise, selecting it minimizes the window family.     *
             Pressing BBSSeelleecctt or BBTTrraannssffeerr anywhere in the icon and   *
             dragging the mouse pointer must move the icon to track   *
             the pointer, just as the icon Menu item MMoovvee does.

             If the window manager has been customized by the user    *
             so that the icon Menu does not pop up when the icon      *
             gets the focus, <<SShhiifftt>> <<EEssccaappee>>, <<AAlltt>> <<SSppaaccee>>,         *
             <<MMeennuu>>, and BBMMeennuu must pop up the icon Menu.



        IIlllluussttrraattiioonn





        RReellaatteedd IInnffoorrmmaattiioonn


             See Chapter 7 for more information about icons and the
             window manager.























        August 26, 1994                                         9-57







        OSF/Motif Style Guide
        InformationDialog


        IInnffoorrmmaattiioonnDDiiaalloogg





        DDeessccrriippttiioonn


             An InformationDialog should be used to convey
             information to the user.  It must not interrupt the      *
             user's interaction with the application.  It should
             include an information symbol, a message, and one of
             the following button arrangements:

             OOKK
             OOKK HHeellpp



        IIlllluussttrraattiioonn





        RReellaatteedd IInnffoorrmmaattiioonn


             For more information, see the reference page for
             DialogBox.























        9-58                                         August 26, 1994







                        Controls, Groups, and Models Reference Pages
                                                       Input Devices


        IInnppuutt DDeevviicceess





        DDeessccrriippttiioonn


             The most typical pointing device is a mouse, although a
             graphics tablet, track ball, joystick, and other tools
             also work as pointing devices.  You can use any
             pointing device in place of a mouse.  This guide
             assumes that a mouse, or any pointing device, has the
             following three buttons.  Chapter 2 describes the
             button bindings for pointing devices that do not have
             three buttons.

             BBSSeelleecctt   Used for selection, activation, and setting
                       the location cursor.  This button must be the  *
                       leftmost button, except for left-handed users  *
                       where it can be the rightmost button.

             BBTTrraannssffeerr Used for moving and copying elements.  This    *
                       button must be the middle mouse button,        *
                       unless dragging is integrated with selection.
                       Details about the effects of integrating
                       BBTTrraannssffeerr with BBSSeelleecctt are described in
                       Chapter 4.

             BBMMeennuu     Used for popping up Menus.  This button must   *
                       be the rightmost button, except for left-      *
                       handed users where it can be the leftmost      *
                       button.

             Since not all keyboards are the same, it is difficult
             to give style guidelines that are correct for every
             manufacturer's keyboard.  To solve this problem, this
             guide describes keys using a model keyboard mechanism.
             Wherever keyboard input is specified, the keys are
             indicated by the engraving they have on the OSF/Motif
             model keyboard. The model keyboard does not correspond
             directly to any existing keyboard; rather, it assumes a
             keyboard with an ideal set of keys.

             In addition to the standard letter, number, and
             character keys, the OSF/Motif model keyboard is
             composed of the following special keys:






        August 26, 1994                                         9-59







        OSF/Motif Style Guide
        Input Devices


                +o The special printing characters <<//>>, <<\\>>, and <<!!>>

                +o The standard modifier keys <<CCttrrll>>, <<AAlltt>>, and
                  <<SShhiifftt>>

                +o Ten function keys <<FF11>> through <<FF1100>>

                +o The arrow keys <<||vv>>, <<<<-->>, <<-->>>>, and <<||^^>>

                +o <<BBaacckkSSppaaccee>>

                +o <<CCaanncceell>>

                +o <<DDeelleettee>>

                +o <<EEnndd>>

                +o <<EEssccaappee>>

                +o <<HHeellpp>>

                +o <<HHoommee>>

                +o <<IInnsseerrtt>>

                +o <<MMeennuu>>

                +o <<PPaaggeeDDoowwnn>>

                +o <<PPaaggeeUUpp>>

                +o <<RReettuurrnn>>

                +o <<SSppaaccee>>

                +o <<TTaabb>>

             The OSF/Motif model keyboard also contains the
             following optional keys, which although useful, either
             are not necessary or can be replaced by combinations of
             other keys:

                +o <<CCaappssLLoocckk>>

                +o <<CCooppyy>>

                +o <<CCuutt>>

                +o <<EEnntteerr>>





        9-60                                         August 26, 1994







                        Controls, Groups, and Models Reference Pages
                                                       Input Devices


                +o <<MMooddeeSSwwiittcchh>>

                +o <<NNuummLLoocckk>>

                +o <<PPaaggeeLLeefftt>>

                +o <<PPaaggeeRRiigghhtt>>

                +o <<PPaassttee>>

                +o <<SSccrroollllLLoocckk>>

                +o <<SSeelleecctt>>

                +o <<UUnnddoo>>

             Throughout this guide, behavior is described in terms
             of model keyboard keys.  When a behavior takes
             advantage of an optional key from the model keyboard,
             it is also described in terms of the required special
             keys.  Each of the nonoptional keys described on the     *
             OSF/Motif model keyboard must be available either as     *
             specified or by using other keys or key combinations if  *
             the specified key is unavailable.



        RReellaatteedd IInnffoorrmmaattiioonn


             See Chapter 2 for a more information about input
             devices.






















        August 26, 1994                                         9-61







        OSF/Motif Style Guide
        Label


        LLaabbeell





        DDeessccrriippttiioonn


             A Label should be used to display text or graphics that
             label other components.  This component must be          *
             composed of an area for displaying a text or graphics    *
             label.



        IIlllluussttrraattiioonn





        NNaavviiggaattiioonn


             A Label must have no internal navigation.                *




























        9-62                                         August 26, 1994







                        Controls, Groups, and Models Reference Pages
                                                       Layout Groups


        LLaayyoouutt GGrroouuppss





        DDeessccrriippttiioonn


             Layout groups are used for organizing components into
             groups as described in the following text:

             CCoommppoossiittiioonn      Organizes a collection of components,
                              including groups, in an arbitrary
                              layout.

             PPaanneeddWWiinnddooww      A linear grouping of components and
                              Sashes.  Sashes are used to set the
                              boundary between two components.  The
                              separated components are called Panes
                              and can contain any components.



        NNaavviiggaattiioonn


             Layout groups must follow the navigation model as        *
             described in Chapter 3.



        RReellaatteedd IInnffoorrmmaattiioonn


             For more information, see the reference pages for each
             layout group.

















        August 26, 1994                                         9-63







        OSF/Motif Style Guide
        List


        LLiisstt





        DDeessccrriippttiioonn


             A List should be used to present a list of elements for
             selection.  The List elements can be selected using
             either the single selection model, the browse selection
             model, the multiple selection model, or the
             discontiguous selection model.  This component must be   *
             composed of an area for presenting a list of text or     *
             graphics elements.  It can optionally have vertical and
             horizontal ScrollBars, which show different views of
             the List elements.

             The location cursor in a List should differentiate
             between normal mode and add mode.  The location cursor
             should be a solid box in normal mode and a dashed box
             in add mode.



        IIlllluussttrraattiioonn





        NNaavviiggaattiioonn


             The following text describes the navigation actions of
             this component:

             <<CCttrrll>> <<BBeeggiinn>> Must move the location cursor to the      *
                            first item in the List.

             <<CCttrrll>> <<EEnndd>>   Must move the location cursor to the      *
                            last item in the List.

             <<||^^>>            Must move the location cursor to the      *
                            previous item in the List.

             <<||vv>>            Must move the location cursor to the      *
                            next item in the List.





        9-64                                         August 26, 1994







                        Controls, Groups, and Models Reference Pages
                                                                List


             <<PPaaggeeDDoowwnn>>     In a scrollable List, must move the       *
                            location cursor to the item one page      *
                            down in the List.

             <<PPaaggeeUUpp>>       In a scrollable List, must move the       *
                            location cursor to the item one page up   *
                            in the List.



        OOtthheerr OOppeerraattiioonnss


             The following text describes the operations of this
             component:

             BBSSeelleecctt CClliicckk 22 Must select the current List item and    *
                            cause any default action for the window   *
                            to occur.

             <<BBeeggiinn>>        In a scrollable List, must move the       *
                            horizontal scroll region so that the      *
                            leftmost edge of the List is visible.

             <<EEnndd>>          In a scrollable List, must move the       *
                            horizontal scroll region so that the      *
                            rightmost edge of the List is visible.

             <<<<-->>           In a scrollable List, must scroll the     *
                            List one character to the left.

             <<PPaaggeeLLeefftt>> or <<CCttrrll>> <<PPaaggeeUUpp>>
                            In a scrollable List, must scroll the     *
                            List one page to the left.

             <<-->>>>           In a scrollable List, must scroll the     *
                            List one character to the right.

             <<PPaaggeeRRiigghhtt>> or <<CCttrrll>> <<PPaaggeeDDoowwnn>>
                            In a scrollable List, must scroll the     *
                            List one page to the right.

             <<HHeellpp>>         Must provide any available help for the   *
                            List.










        August 26, 1994                                         9-65







        OSF/Motif Style Guide
        List


        RReellaatteedd IInnffoorrmmaattiioonn


             For more information on List element selection, see the
             description of the selection models in Chapter 4.  For
             more information about the ScrollBars, see the
             reference page for ScrollBar.















































        9-66                                         August 26, 1994







                        Controls, Groups, and Models Reference Pages
                                                          MainWindow


        MMaaiinnWWiinnddooww





        DDeessccrriippttiioonn


             A MainWindow should be used to organize the contents of
             a primary window.  A MainWindow must frame the client    *
             area and can optionally include ScrollBars, a MenuBar,
             a command area, and a message area.



        IIlllluussttrraattiioonn





        NNaavviiggaattiioonn


             A MainWindow must follow the navigation model described  *
             in Chapter 3.



        RReellaatteedd IInnffoorrmmaattiioonn


             For more information about the components of the
             MainWindow, see the reference pages for MenuBar,
             ScrollBar, and Text.


















        August 26, 1994                                         9-67







        OSF/Motif Style Guide
        MenuBar


        MMeennuuBBaarr





        DDeessccrriippttiioonn


             A MenuBar is a basic group that organizes the most
             common features of an application.  The MenuBar must be  *
             a horizontal bar at the top edge of the application      *
             just below the title area of the window frame.  The
             MenuBar contains a list of Menu topics in
             CascadeButtons with Pulldown Menus connected to them.    *
             A MenuBar must contain only CascadeButtons, because      *
             other buttons inhibit Menu browsing.  Each Menu topic
             should have a single-letter mnemonic indicated by
             underlining.

             The following Pulldown Menus provide general functions
             common to most applications.  Remember that these Menu
             guidelines, like all the guidelines in this _O_S_F/_M_o_t_i_f
             _S_t_y_l_e _G_u_i_d_e, apply only in a left-to-right language
             environment in an English-language locale.  You need to
             make the appropriate changes for other locales.

             FF__iillee      The FFiillee Menu should contain components for
                       performing actions on the files, such as
                       opening, saving, closing, and printing.  It
                       should also contain components for performing
                       actions on the application as a whole, such
                       as quitting.  If the Label FFiillee is not
                       appropriate to the context of your
                       application, you can choose a different, more
                       appropriate Label.  The FFiillee Menu should have
                       a mnemonic of FF.

             SS__eelleecctteedd  The SSeelleecctteedd Menu should contain components
                       for performing actions on the objects
                       represented by the current selection of the
                       application, such as opening or printing a
                       selected item.  This Menu is often similar to
                       the FFiillee Menu, except that it acts on the
                       objects denoted by the current selection.
                       For example, in a directory browser, OOppeenn in
                       the FFiillee Menu could (using a DialogBox)
                       prompt the user for the name of a directory
                       to open for browsing, while OOppeenn in the
                       SSeelleecctteedd Menu opens the file whose icon is




        9-68                                         August 26, 1994







                        Controls, Groups, and Models Reference Pages
                                                             MenuBar


                       currently selected in the browser.  The
                       SSeelleecctteedd Menu should not contain editing
                       functions normally found in the EEddiitt Menu.
                       The SSeelleecctteedd Menu should have a mnemonic of
                       SS.

             EE__ddiitt      The EEddiitt Menu should contain components for
                       performing actions on the current data of the
                       application, such as an undo action or making
                       global substitutions in a block of text.  It
                       should also include components for
                       interacting with the system clipboard, such
                       as cut, copy, and paste.  The EEddiitt Menu
                       should have a mnemonic of EE.

             VV__iieeww      The VViieeww Menu should contain components for
                       changing the user's view on the data.
                       Components in the VViieeww Menu should not
                       actually change the data.  The exact contents
                       of the VViieeww Menu are application specific but
                       can include components that change the
                       appearance of the data, the amount of data
                       that is displayed, or the order in which the
                       data is displayed.  The VViieeww Menu should have
                       a mnemonic of VV.

             OO__ppttiioonnss   The OOppttiioonnss Menu should contain components
                       for a user to customize the application.  The
                       exact contents of the OOppttiioonnss Menu are
                       application specific.  The OOppttiioonnss Menu
                       should have a mnemonic of OO.

             HH__eellpp      The HHeellpp Menu should contain components that
                       provide user help facilities.  The components
                       in the HHeellpp Menu usually bring up a DialogBox
                       with help information.  Every application
                       should have a HHeellpp Menu.  The HHeellpp Menu
                       should have a mnemonic of HH.

             While we recommend that you include the common Menus in
             the MenuBar of your application, your choice of Menu
             titles and items depends on the nature of your
             application.  If your application requires it, you
             should design more relevant titles and selections, but
             do not change the meanings of items used in the common
             Menus.

             If any of the common Menus are present, they must be     *
             arranged in the following order with respect to each     *
             other, ranging from left to right across the MenuBar in  *




        August 26, 1994                                         9-69







        OSF/Motif Style Guide
        MenuBar


             a left-to-right language environment:                    *

                  FFiillee Menu                                           *
                  SSeelleecctteedd Menu                                       *
                  EEddiitt Menu                                           *
                  VViieeww Menu                                           *
                  OOppttiioonnss Menu                                        *
                  HHeellpp Menu                                           *

             You can omit any of these Menus if they are not
             relevant to the application.  You can also intersperse
             other, application-specific, Menus among these Menus.    *
             However, if a FFiillee Menu is present, it must be the       *
             first Menu and must be placed at the far left of the     *
             MenuBar.  If a HHeellpp Menu is present, it must be the      *
             last Menu and must be placed at the far right of the     *
             MenuBar.

             The recommended contents of the FFiillee, EEddiitt, and HHeellpp
             Menus are described on their own reference pages.  The
             contents of the VViieeww and OOppttiioonnss Menus are application
             specific and are not specified here.  Each of these
             common Menus can contain a TearOffButton.



        IIlllluussttrraattiioonn





        NNaavviiggaattiioonn


             The MenuBar follows the navigation model described in
             Chapter 3.



        OOtthheerr OOppeerraattiioonnss


             The following text describes the operations of this
             component:

             <<HHeellpp>>    Must provide any available help for the        *
                       current CascadeButton.






        9-70                                         August 26, 1994







                        Controls, Groups, and Models Reference Pages
                                                             MenuBar


        RReellaatteedd IInnffoorrmmaattiioonn


             For information about the suggested contents of these
             Menus, see the reference pages for File Menu, Edit
             Menu, and Help Menu.
















































        August 26, 1994                                         9-71







        OSF/Motif Style Guide
        Menus


        MMeennuuss





        DDeessccrriippttiioonn


             Menus should be used to organize a collection of basic
             controls in a horizontal, vertical, or 2-dimensional
             layout within a separate Menu window.  There are three
             types of Menus: Pulldown, Popup, and Option.  A Menu is
             only available while it is posted.



        IIlllluussttrraattiioonn





        NNaavviiggaattiioonn


             Menus follow the navigation model described in Chapter
             3.



        OOtthheerr OOppeerraattiioonnss


             The following text describes the operations of this
             component:

             <<HHeellpp>>    Must provide any available help for the Menu.  *



        RReellaatteedd IInnffoorrmmaattiioonn


             For more information, see the reference pages for
             CascadeButton, OptionButton, and MenuBar.








        9-72                                         August 26, 1994







                        Controls, Groups, and Models Reference Pages
                                                      MessageDialogs


        MMeessssaaggeeDDiiaallooggss





        DDeessccrriippttiioonn


             MessageDialogs should be used to convey a message to
             the user.  They must not interrupt the user's            *
             interaction with the application.  They should include
             a message and one of the following button arrangements:

             OOKK
             OOKK HHeellpp
             OOKK CCaanncceell
             OOKK CCaanncceell HHeellpp
             YYeess NNoo
             YYeess NNoo HHeellpp
             YYeess NNoo CCaanncceell
             YYeess NNoo CCaanncceell HHeellpp
             CCaanncceell
             CCaanncceell HHeellpp
             RReettrryy CCaanncceell
             RReettrryy CCaanncceell HHeellpp

             There are a number of different types of
             MessageDialogs: ErrorDialog, InformationDialog,
             QuestionDialog, WorkingDialog, and WarningDialog.



        RReellaatteedd IInnffoorrmmaattiioonn


             For more information, see the reference pages for
             DialogBox, ErrorDialog, InformationDialog,
             QuestionDialog, WorkingDialog, and WarningDialog.















        August 26, 1994                                         9-73







        OSF/Motif Style Guide
        Mnemonics


        MMnneemmoonniiccss





        DDeessccrriippttiioonn


             A mnemonic is a single character that can be associated
             with any component that contains a text label.  The      *
             label must contain the character, and the character      *
             must be underlined within the label.  The mnemonic
             should be the first character of the label.  If a label  *
             does not naturally contain the character of the          *
             mnemonic, the mnemonic must be placed in parentheses     *
             following the label.  Labels can also be sequentially
             numbered, and the number can serve as the mnemonic.
             Labels that are duplicated within an application should
             be given the same mnemonic.  Mnemonics must be case      *
             insensitive for activation.  Either an uppercase or
             lowercase letter can be underlined in the label.

             When the location cursor is within a Menu, or a          *
             MenuBar, typing the mnemonic character of a component    *
             within that Menu or MenuBar must move the location       *
             cursor to the component and activate it.  If a mnemonic  *
             is used for an OptionButton or for a CascadeButton in a  *
             MenuBar, pressing <<AAlltt>> and the mnemonic anywhere in     *
             the window or its Menus must move the cursor to the      *
             component with that mnemonic and must activate it.

             Collections can also support mnemonics associated with
             its elements.  Pressing a mnemonic key while the         *
             collection has the keyboard focus must be equivalent to  *
             moving the location cursor to the element and pressing   *
             <<SSeelleecctt>> or <<SSppaaccee>>.

















        9-74                                         August 26, 1994







                        Controls, Groups, and Models Reference Pages
                                                          Navigation


        NNaavviiggaattiioonn





        DDeessccrriippttiioonn


             Using a mouse, navigation is a simple matter of moving
             the mouse pointer.  Using the keyboard, the following    *
             component navigation actions must be available:

             <<TTaabb>> or <<CCttrrll>> <<TTaabb>>
                            <<TTaabb>> (if not used for internal           *
                            navigation) and <<CCttrrll>> <<TTaabb>> must move    *
                            the location cursor forward through       *
                            fields.  If the next field is a control,  *
                            <<TTaabb>> (if not used for internal           *
                            navigation) and <<CCttrrll>> <<TTaabb>> must move    *
                            the location cursor to that control.  If  *
                            the next field is a group, <<TTaabb>> (if not  *
                            used for internal navigation) and <<CCttrrll>>  *
                            <<TTaabb>> must move the location cursor to a  *
                            traversable component within the group.
                            If the field contains a button that
                            currently shows default highlighting,
                            the location cursor should be placed on
                            that button; otherwise, the first
                            control in the field (the top-leftmost
                            one in a left-to-right language
                            environment) should get focus.  If the    *
                            next field contains no traversable        *
                            components, <<TTaabb>> (if not used for        *
                            internal navigation) and <<CCttrrll>> <<TTaabb>>     *
                            must skip the field.

             <<SShhiifftt>> <<TTaabb>> or <<CCttrrll>> <<SShhiifftt>> <<TTaabb>>
                            <<SShhiifftt>> <<TTaabb>> (if not used for internal   *
                            navigation) and <<CCttrrll>> <<SShhiifftt>> <<TTaabb>>      *
                            must move the location cursor backward    *
                            through fields in the order opposite to   *
                            that of <<TTaabb>> (if not used for internal   *
                            navigation) and <<CCttrrll>> <<TTaabb>>.

             <<||vv>>            When used for component navigation        *
                            within a field, in a left-to-right        *
                            language environment, <<||vv>> must move the   *
                            location cursor through all traversable   *
                            controls in the field, starting at the    *




        August 26, 1994                                         9-75







        OSF/Motif Style Guide
        Navigation


                            upper left and ending at the lower        *
                            right, then wrapping to the upper left.   *
                            If the controls are aligned in a          *
                            matrix-like arrangement, <<||vv>> must first   *
                            traverse one column from top to bottom,   *
                            then traverse the column to its right,    *
                            and so on.  In a right-to-left language   *
                            environment, <<||vv>> must move the location   *
                            cursor through all traversable controls,  *
                            starting at the upper right and ending    *
                            at the lower left.

                            This key can also be used for internal
                            purposes within a component.

             <<||^^>>            When used for component navigation        *
                            within a field, <<||^^>> must move the         *
                            location cursor through all traversable   *
                            components or elements in the order       *
                            opposite to that of <<||vv>>.

                            This key can also be used for internal
                            purposes within a component.

             <<-->>>>           When used for component navigation        *
                            within a field, in a left-to-right        *
                            language environment, <<-->>>> must move the  *
                            location cursor through all traversable   *
                            controls in the field, starting at the    *
                            upper left and ending at the lower        *
                            right, then wrapping to the upper left.   *
                            If the controls are aligned in a          *
                            matrix-like arrangement, <<-->>>> must first  *
                            traverse one row from left to right,      *
                            then traverse the row below it, and so    *
                            on.  In a right-to-left language          *
                            environment, <<-->>>> must move the location  *
                            cursor through all traversable controls,  *
                            starting at the lower left and ending at  *
                            the upper right.

                            This key can also be used for internal
                            purposes within a component.

             <<<<-->>           When used for component navigation        *
                            within a field, <<<<-->> must move the        *
                            location cursor through all traversable   *
                            components or elements in the order       *
                            opposite to that of <<-->>>>.





        9-76                                         August 26, 1994







                        Controls, Groups, and Models Reference Pages
                                                          Navigation


                            This key can also be used for internal
                            purposes within a component.

             <<CCttrrll>> <<||vv>>     This key can be used for component
                            navigation within a field, following the
                            same rules as <<||vv>>.  It can also be used
                            for internal purposes within a
                            component.  When <<||vv>> causes a change
                            that is based on some unit, <<CCttrrll>> <<||vv>>
                            can cause a change based on a larger
                            unit.

             <<CCttrrll>> <<||^^>>     This key can be used for component
                            navigation within a field, following the
                            same rules as <<||^^>>.  It can also be used
                            for internal purposes within a
                            component.  When <<||^^>> causes a change
                            that is based on some unit, <<CCttrrll>> <<||^^>>
                            can cause a change based on a larger
                            unit.

             <<CCttrrll>> <<-->>>>    This key can be used for component
                            navigation within a field, following the
                            same rules as <<-->>>>.  It can also be used
                            for internal purposes within a
                            component.  When <<-->>>> causes a change
                            that is based on some unit, <<CCttrrll>> <<-->>>>
                            can cause a change based on a larger
                            unit.

             <<CCttrrll>> <<<<-->>    This key can be used for component
                            navigation within a field, following the
                            same rules as <<<<-->>.  It can also be used
                            for internal purposes within a
                            component.  When <<<<-->> causes a change
                            that is based on some unit, <<CCttrrll>> <<<<-->>
                            can cause a change based on a larger
                            unit.

             <<BBeeggiinn>>        If a control uses <<-->>>> and <<<<-->> for       *
                            internal navigation, <<BBeeggiinn>> must behave  *
                            as follows:                               *

                            In a left-to-right language environment,  *
                            this action must move the location        *
                            cursor to the leftmost edge of the data   *
                            or the leftmost element.  In a right-     *
                            to-left language environment, this        *
                            action must move the location cursor to   *
                            the rightmost edge of the data or the     *




        August 26, 1994                                         9-77







        OSF/Motif Style Guide
        Navigation


                            rightmost element.

                            In a group that is a field, this key can
                            move the location cursor to an
                            appropriate control within the group.

             <<EEnndd>>          If a control uses <<-->>>> and <<<<-->> for       *
                            internal navigation, <<EEnndd>> must behave    *
                            as follows:                               *

                            In a left-to-right language environment,  *
                            this action must move the location        *
                            cursor to the rightmost edge of the data  *
                            or the rightmost element.  In a right-    *
                            to-left language environment, this        *
                            action must move the location cursor to   *
                            the leftmost edge of the data or the      *
                            leftmost element.

                            In a group that is a field, this key can
                            move the location cursor to an
                            appropriate control within the group.

             <<CCttrrll>> <<BBeeggiinn>> If a control uses <<||^^>> and <<||vv>> for         *
                            internal navigation, <<CCttrrll>> <<BBeeggiinn>> must  *
                            move the location cursor to one of the    *
                            following:                                *

                               +o The first element                    *

                               +o The topmost edge of the data         *

                               +o In a left-to-right language          *
                                 environment, the topmost left edge   *
                                 of the data; in a right-to-left      *
                                 language environment, the topmost    *
                                 right edge of the data               *

                            In a group that is a field, this key can
                            move the location cursor to an
                            appropriate control within the group.

             <<CCttrrll>> <<EEnndd>>   If a control uses <<||^^>> and <<||vv>> for         *
                            internal navigation, <<CCttrrll>> <<EEnndd>> must    *
                            move the location cursor to one of the    *
                            following:                                *

                               +o The last element                     *






        9-78                                         August 26, 1994







                        Controls, Groups, and Models Reference Pages
                                                          Navigation


                               +o The bottommost edge of the data      *

                               +o In a left-to-right language          *
                                 environment, the bottommost right    *
                                 edge of the data; in a right-to-     *
                                 left language environment, the       *
                                 bottommost left edge of the data     *

                            In a group that is a field, this key can
                            move the location cursor to an
                            appropriate control within the group.

             <<PPaaggeeDDoowwnn>>     In a vertically scrollable component,     *
                            <<PPaaggeeDDoowwnn>> must scroll the visible        *
                            region down by one page increment.

             <<PPaaggeeUUpp>>       In a vertically scrollable component,     *
                            <<PPaaggeeUUpp>> must scroll the visible region   *
                            up by one page increment.

             <<PPaaggeeRRiigghhtt>> or <<CCttrrll>> <<PPaaggeeDDoowwnn>>
                            In a horizontally scrollable component,   *
                            <<PPaaggeeRRiigghhtt>> or <<CCttrrll>> <<PPaaggeeDDoowwnn>> must     *
                            scroll the visible region to the right    *
                            by one page increment.

             <<PPaaggeeLLeefftt>> or <<CCttrrll>> <<PPaaggeeUUpp>>
                            In a horizontally scrollable component,   *
                            <<PPaaggeeLLeefftt>> or <<CCttrrll>> <<PPaaggeeUUpp>> must        *
                            scroll the visible region to the left by  *
                            one page increment.

             <<FF1100>>          If the MenuBar is inactive, <<FF1100>> must    *
                            traverse to the MenuBar system.  The      *
                            location cursor must be placed on the     *
                            first traversable CascadeButton in the    *
                            MenuBar.  If there are no traversable     *
                            CascadeButtons in the MenuBar, <<FF1100>>      *
                            must do nothing.  If the MenuBar system
                            is active, <<FF1100>> should unpost all Menus
                            in the MenuBar system.  If <<FF1100>> is used  *
                            to unpost all Menus in the MenuBar        *
                            system and if the focus policy is         *
                            explicit, the location cursor must be     *
                            moved back to the component that had it   *
                            before the Menu system was posted.        *
                            <<SShhiifftt>> <<MMeennuu>> must replace <<FF1100>> if      *
                            <<FF1100>> is not available.






        August 26, 1994                                         9-79







        OSF/Motif Style Guide
        Navigation


             <<MMeennuu>>         If the keyboard focus is on an element    *
                            with an inactive Popup Menu and the       *
                            context of the element allows a Popup     *
                            Menu to be displayed, <<MMeennuu>> must post    *
                            (activate) the Popup Menu.  The location  *
                            cursor must be placed on the default      *
                            item of the Menu, or the first            *
                            traversable item if there is no default   *
                            item.  Note that the availability of the
                            Popup Menu can depend on the location of
                            the cursor within the element, the
                            contents of the element, or the
                            selection state of the element.  If
                            there are no traversable items in the
                            Popup Menu, it is up to the system and
                            the application whether to post the Menu
                            or not.

                            If there is an active Popup Menu, <<MMeennuu>>
                            should unpost all Menus in the Popup
                            Menu system.  If <<MMeennuu>> is used to        *
                            unpost all Menus in the Popup Menu        *
                            system and if the focus policy is         *
                            explicit, the location cursor must be     *
                            moved back to the component that had it   *
                            before the Menu system was posted.        *
                            <<SShhiifftt>> <<FF1100>> must replace <<MMeennuu>> if      *
                            <<MMeennuu>> is not available.

             <<AAlltt>> <<FF66>>     Must move the focus to the next window    *
                            in the window family.

             <<AAlltt>> <<SShhiifftt>> <<FF66>>
                            Can move the focus to the previous
                            window in the window family.

             <<AAlltt>> <<TTaabb>>    Must move the focus to the last window    *
                            that had the input focus in the next      *
                            window family in the window hierarchy.

             <<AAlltt>> <<SShhiifftt>> <<TTaabb>>
                            Can move the focus to the previous
                            window that had the input focus in the
                            next window family in the window
                            hierarchy.









        9-80                                         August 26, 1994







                        Controls, Groups, and Models Reference Pages
                                                          Navigation


        RReellaatteedd IInnffoorrmmaattiioonn


             See Chapter 3 for more information about internal
             window navigation.  See Chapter 7 for more information
             about navigation among windows.
















































        August 26, 1994                                         9-81







        OSF/Motif Style Guide
        OptionButton


        OOppttiioonnBBuuttttoonn





        DDeessccrriippttiioonn


             An OptionButton should be used to post an Option Menu.

             This component must be composed of a button, with        *
             either a text or graphics Label.  Following the Label,
             this component should also include a bar graphic to
             distinguish it from a PushButton.  The Label must be     *
             the last selection made from the OptionButton.



        IIlllluussttrraattiioonn





        NNaavviiggaattiioonn


             An OptionButton must have no internal navigation.        *



        OOtthheerr OOppeerraattiioonnss


             The following text describes the operations of this
             component:

             BBSSeelleecctt PPrreessss
                       Must post the associated Option Menu.          *

             BBSSeelleecctt RReelleeaassee
                       If the release is within the same
                       OptionButton as the press:

                          +o If the associated Option Menu was posted
                            at the time of the press, it should be
                            unposted.






        9-82                                         August 26, 1994







                        Controls, Groups, and Models Reference Pages
                                                        OptionButton


                          +o If the associated Option Menu was not     *
                            posted at the time of the press, it must  *
                            be posted.

                       If the release is outside of the               *
                       OptionButton, the associated Option Menu must  *
                       be unposted.

             <<SSeelleecctt>> oorr <<SSppaaccee>>
                       Must post the associated Option Menu.          *

             <<CCaanncceell>>
                       Must unpost the last posted Menu in the Menu   *
                       system without changing the value of the       *
                       OptionButton.

             <<HHeellpp>>    Must provide any available help for the        *
                       OptionButton.



        RReellaatteedd IInnffoorrmmaattiioonn


             For more information, see the reference page for Menus.





























        August 26, 1994                                         9-83







        OSF/Motif Style Guide
        PanedWindow


        PPaanneeddWWiinnddooww





        DDeessccrriippttiioonn


             A PanedWindow should be used to group components into
             Panes separated by Sashes and Separators for adjusting
             the relative size of each Pane.  This component must be  *
             composed of any number of groups of components, called   *
             Panes, each separated by a Sash and a Separator.  The    *
             Panes, Sashes, and Separators must be grouped linearly,  *
             either horizontally or vertically.  A Sash must be       *
             composed of a handle on the Separator between two Panes  *
             for adjusting the position of the Separator, and         *
             therefore the size of the Panes next to it.

             As a Sash is moved, the Pane in the direction of the     *
             Sash movement must get smaller and the other Pane must   *
             get larger by an equal amount.  If a Pane is adjusted
             to its minimum size, adjustment should continue with
             the next Pane in the direction of the Sash movement.





























        9-84                                         August 26, 1994







                        Controls, Groups, and Models Reference Pages
                                                         PanedWindow


        IIlllluussttrraattiioonn





        NNaavviiggaattiioonn


             This component must follow the navigation model          *
             described in Chapter 3.



        RReellaatteedd IInnffoorrmmaattiioonn


             For information about activating a Sash, see the
             reference page for Sash.



































        August 26, 1994                                         9-85







        OSF/Motif Style Guide
        Panel


        PPaanneell





        DDeessccrriippttiioonn


             A Panel group should be used to organize a collection
             of basic controls in a horizontal, vertical, or 2-
             dimensional layout.  This component is usually composed
             of just one type of basic control.  This component is
             composed of an area for organizing basic controls.



        IIlllluussttrraattiioonn





        NNaavviiggaattiioonn


             The <<||vv>>, <<<<-->>, <<-->>>>, and <<||^^>> direction keys must         *
             navigate among components in the Panel according to the  *
             navigation model described in Chapter 3.

























        9-86                                         August 26, 1994







                        Controls, Groups, and Models Reference Pages
                                                      Pointer Shapes


        PPooiinntteerr SShhaappeess





        DDeessccrriippttiioonn


             You should not create new mouse pointer shapes for
             functions that already have mouse pointer shapes
             associated with them, except for localization; however,
             you can create new mouse pointer shapes for functions
             not already associated with a pointer shape.  You
             should not use a predefined shape to symbolize a
             function it was not designed to represent.

             A list of the defined pointer shapes follows, along
             with their usage and hotspots.  The hotspot of a
             pointer is the actual position on the pointer that
             tracks the movements of the mouse.  As the pointer       *
             changes from one shape to another, the location of the   *
             hotspot must not move on the screen.  The hotspot is
             the precise location on the pointer where mouse actions
             occur.


             Arrow    The upper-left pointing arrow pointer is a
                      general-purpose pointer.  It is used in most
                      window areas for single-object selection and
                      activation.  The hotspot for the arrow pointer
                      should be in the point of the arrow.


             I-beam   You can optionally use an I-beam pointer in
                      any Text component.  It is used to change the
                      location of the text insertion cursor and to
                      perform actions on text.  If the I-beam is
                      used, it can be hidden during the time between
                      any keyboard action and a mouse movement.
                      This helps the user distinguish the I-beam
                      pointer from the text insertion cursor, which
                      can also be an I-beam.  The hotspot for the
                      I-beam pointer should be on the vertical bar
                      of the I-beam about one-third up from the
                      bottom.


             X        The X pointer can indicate when the pointer is
                      outside of any application area.  The hotspot




        August 26, 1994                                         9-87







        OSF/Motif Style Guide
        Pointer Shapes


                      for the X pointer should be where the lines
                      intersect.


             Resize   The resize pointers indicate positions for
                      area resize, and they remain during a resize
                      operation.  The direction of the arrow in the
                      pointer indicates the direction of increasing
                      size.  The horizontal and vertical pointers
                      indicate resize in either the horizontal or
                      vertical direction.  The diagonal pointers
                      indicate resize in both the horizontal and
                      vertical directions simultaneously.  The
                      hotspot for the resizing pointers should be on
                      the elbow or the line at the position pointed
                      to by the arrow.


             Hourglass The hourglass pointer, a working pointer,
                      indicates that an action is in progress in the
                      area, and that the pointer has no effect in
                      the area.  While the hourglass pointer is
                      active, all mouse button and keyboard events
                      are ignored in the area.  The hotspot for the
                      hourglass pointer should be located at the
                      center of the hourglass, although it should
                      not be used for activation.  The hourglass
                      pointer can be used interchangeably with the
                      watch pointer.


             Watch    The watch pointer, a working pointer,
                      indicates that an action is in progress in the
                      area, and that the pointer has no effect in
                      the area.  While the watch pointer is active,
                      all mouse button and keyboard events are
                      ignored in the area.  The hotspot for the
                      watch pointer should be located at the top of
                      the watch, although it should not be used for
                      activation.  The watch pointer can be used
                      interchangeably with the hourglass pointer.


             Moving   The 4-directional arrow pointer indicates a
                      move operation is in progress, or a resize
                      operation before the resize direction has been
                      determined.  During a move operation, the
                      object, or an outline of the object should
                      move to track the location of the pointer.
                      During a resize operation, the pointer is used




        9-88                                         August 26, 1994







                        Controls, Groups, and Models Reference Pages
                                                      Pointer Shapes


                      to indicate a direction for resizing.  The 4-
                      directional arrow pointer should change to the
                      appropriate resize arrow when the resize
                      direction is determined, either by crossing an
                      object boundary with the pointer or by
                      pressing a keyboard direction key.  The
                      hotspot for the 4-directional arrow pointer
                      should be at the spot where the arrows
                      intersect.


             Sighting The sighting pointer is used to make fine
                      position selections.  For example, in a
                      drawing program it can be used to indicate a
                      pixel to fill or the connecting points of
                      lines.  The hotspot for the sighting pointer
                      should be at the spot where the lines
                      intersect.


             Caution  The caution pointer is used to indicate that
                      action is expected in another area before
                      input can be given to the current area, and
                      that the pointer has no effect in the area.
                      While the caution pointer is active, all mouse
                      button and keyboard events are ignored in the
                      area.  The hotspot for the caution pointer
                      should be located at the center of the caution
                      symbol, although it should not be used for
                      activation.


             Question The question pointer is used to request an
                      input position or component from the user.
                      This is often used to input an object for
                      interactive help.  The user requests
                      interactive help, then the question pointer is
                      displayed to allow the user to indicate what
                      position or component help is requested for.
                      The hotspot for the question pointer should be
                      at the bottom of the question mark.


             Other Arrow You can optionally use an arrow pointing to
                      the upper-right corner to indicate a pending
                      Menu action.  This shape indicates that a Menu
                      is popped up or pulled down and waiting for a
                      Menu item to be activated or the Menu to be
                      removed.  The hotspot for this arrow pointer
                      should be in the point of the arrow.




        August 26, 1994                                         9-89







        OSF/Motif Style Guide
        Pointer Shapes


        RReellaatteedd IInnffoorrmmaattiioonn


             See Chapter 2 for information on the input device model
             and designing new pointer shapes.

















































        9-90                                         August 26, 1994







                        Controls, Groups, and Models Reference Pages
                                                         Popup Menus


        PPooppuupp MMeennuuss





        DDeessccrriippttiioonn


             The common Popup Menu contents are described as
             follows.  Note that you should only include those
             functions actually supported by your application.  The
             illustration on this reference page shows a Popup Menu.

             PPrrooppeerrttiieess__
                       Must display a properties DialogBox that the   *
                       user can use to set the properties of the      *
                       component.  If the Menu is popped up over a
                       selection, it can display the properties of
                       the selection.  If the Menu is popped up over
                       an unselected item, it can display the
                       properties of that item.  If the Menu is
                       popped up over the background, it should
                       display the properties of the collection,
                       except over a part of the background
                       considered to be in the selection.  This
                       action should have the mnemonic SS.

             UU__nnddoo   AAlltt++BBaacckkssppaaccee
                       Must reverse the most recently executed        *
                       action.  To provide a visual cue to the user,
                       the UUnnddoo selection title should be
                       dynamically modified to indicate what is
                       being undone.  For example, if the most
                       recently executed action was a paste, the
                       action name would be UUnnddoo ppaassttee.  This action
                       should have the mnemonic UU.  This action
                       should have the same  accelerator as the
                       corresponding entry in the EEddiitt Menu.

             PPrriimmaarryy MMoovvee   AAlltt++SShhiifftt++DDeelleettee
                       Must move the contents of the primary          *
                       selection to the component.  This action must  *
                       only be used in an editable component.  If
                       the action uses an accelerator, it should be
                       <<AAlltt>> <<SShhiifftt>> <<DDeelleettee>>, <<AAlltt>> <<CCttrrll>> <<XX>>, or
                       both.  In addition, if the keyboard has a
                       <<CCuutt>> key, this action should support <<AAlltt>>
                       <<CCuutt>> as an accelerator.  If more than one
                       format can be moved from the primary




        August 26, 1994                                         9-91







        OSF/Motif Style Guide
        Popup Menus


                       selection, PPrriimmaarryy CCooppyy can cascade a Menu of
                       possible transfer formats, in which case it
                       should not have an accelerator.

             PPrriimmaarryy CCooppyy   AAlltt++CCttrrll++IInnsseerrtt
                       Must copy the contents of the primary          *
                       selection to the component.  This action must  *
                       only be used in an editable component.  If
                       the action uses an accelerator, it should be
                       <<AAlltt>> <<CCttrrll>> <<IInnsseerrtt>>, <<AAlltt>> <<CCttrrll>> <<CC>>, or
                       both.  In addition, if the keyboard has a
                       <<CCooppyy>> key, this action should support <<AAlltt>>
                       <<CCooppyy>> as an accelerator.  If more than one
                       format can be copied from the primary
                       selection, PPrriimmaarryy CCooppyy can cascade a Menu of
                       possible transfer formats, in which case it
                       should not have an accelerator.

             PPrriimmaarryy LLiinnkk
                       Must place a link to the primary selection in  *
                       the component.  This action must only be used  *
                       in an editable component.  If the link can be
                       viewed in more than one way, PPrriimmaarryy LLiinnkk can
                       cascade a Menu of possible viewing
                       representations.

             CCuutt__       Must cut elements to the clipboard and can     *
                       mark them for use in a subsequent PPaassttee LLiinnkk   *
                       operation. If the Menu is popped up in a       *
                       selection, the entire selection must be cut.
                       If the Menu is popped up over an unselected
                       element, just that element should be cut.  If
                       the Menu is popped up in the background, the
                       entire collection can be cut.  This action
                       should have the mnemonic TT.

             CC__ooppyy      Must copy elements to the clipboard and can    *
                       mark them for use in a subsequent PPaassttee LLiinnkk   *
                       operation.  If the Menu is popped up in a      *
                       selection, the entire selection must be        *
                       copied.  If the Menu is popped up over an
                       unselected element, just that element should
                       be copied.  If the Menu is popped up in the
                       background, the entire collection can be
                       copied.  This action should have the mnemonic
                       CC.

             CCooppyy LLiinnkk__
                       Must copy a link of elements to the clipboard  *
                       and can mark them for use in a subsequent      *




        9-92                                         August 26, 1994







                        Controls, Groups, and Models Reference Pages
                                                         Popup Menus


                       PPaassttee LLiinnkk operation.  If the Menu is popped   *
                       up in a selection, a link to the entire        *
                       selection must be copied.  If the Menu is
                       popped up over an unselected element, a link
                       to just that element should be copied.  If
                       the Menu is popped up in the background, a
                       link to the entire collection can be copied.
                       This action should have the mnemonic KK.

             PP__aassttee   SShhiifftt++IInnsseerrtt
                       Must paste the contents of the clipboard to    *
                       the component.  This action must only be used  *
                       in an editable component.  This action should
                       have the mnemonic PP.  This action should have
                       the same accelerator as the corresponding
                       entry in the EEddiitt Menu.

             PPaassttee LL__iinnkk
                       Must paste a link of the contents of the       *
                       clipboard to the component.  This action must  *
                       only be used in an editable component.  This
                       action should have the mnemonic LL.

             CCllee__aarr     Must remove a selected portion of data from    *
                       the client area without copying it to the      *
                       clipboard.  If the Menu is popped up in a      *
                       selection, it must delete the selection.  If
                       the Menu is popped up over an unselected
                       element, it should delete that element.  If
                       the Menu is popped up over the background,
                       except over a part of the background
                       considered to be in the selection, it can
                       delete all the elements.  The remaining data
                       is not compressed to fill the space that was
                       occupied by the cleared data.  This action
                       should have the mnemonic EE.

             DD__eelleettee    Must remove a selected portion of data from    *
                       the client area without copying it to the      *
                       clipboard.  If the Menu is popped up in a      *
                       selection, it must delete the selection.  If
                       the Menu is popped up over an unselected
                       element, it should delete that element.  If
                       the Menu is popped up over the background,
                       except over a part of the background
                       considered to be in the selection, it can
                       delete all the elements.  This action should
                       have the mnemonic DD.






        August 26, 1994                                         9-93







        OSF/Motif Style Guide
        Popup Menus


             SSeelleecctt AAllll   CCttrrll++//
                       Must make the primary selection consist of     *
                       all the elements in the collection with the    *
                       Popup Menu.  If the action uses an
                       accelerator, it should be <<CCttrrll>> <<//>>.

             DDeesseelleecctt AAllll   CCttrrll++\\
                       Must deselect the current selection in the     *
                       collection with the Popup Menu.  If the
                       action uses an accelerator, it should be
                       <<CCttrrll>> <<\\>>.

             SSeelleecctt PPaasstteedd
                       Must make the primary selection consist of     *
                       the last element or elements pasted into the   *
                       collection with the Popup Menu.

             RReesseelleecctt   AAlltt++IInnsseerrtt
                       Must make the primary selection consist of     *
                       the last selected element or elements in the   *
                       component with the Popup Menu.  The action     *
                       must be available only in components that do   *
                       not support persistent selections and only     *
                       when the current selection is empty.  If the
                       action uses an accelerator, it should be
                       <<AAlltt>> <<IInnsseerrtt>>.

             PPrroommoottee   AAlltt++IInnsseerrtt
                       Must promote the current selection to the      *
                       primary selection.  This action must only be   *
                       available in components that support           *
                       persistent selections.  If the action uses an
                       accelerator, it should be <<AAlltt>> <<IInnsseerrtt>>.

             Appropriate words, such as SSeelleeccttiioonn or words denoting
             the type of a single element of the collection as a
             whole, should be added to a Label to specify which
             elements are affected.  For example, if a Popup Menu
             contains the entry CCooppyy SSeelleeccttiioonn, the current
             selection is copied to the clipboard regardless of
             where in the collection the Menu is popped up.

             A Popup Menu item should only have an accelerator if
             the result of typing the accelerator would be
             equivalent to popping up the Menu by typing <<MMeennuu>>, and
             then selecting the Menu item.  If CCuutt SSeelleeccttiioonn is
             included in a Popup Menu, it should use the same
             accelerators as CCuutt in the EEddiitt Menu.  If CCooppyy
             SSeelleeccttiioonn is included in a Popup Menu, it should use
             the same accelerators as CCooppyy in the EEddiitt Menu.




        9-94                                         August 26, 1994







                        Controls, Groups, and Models Reference Pages
                                                         Popup Menus


        RReellaatteedd IInnffoorrmmaattiioonn


             See Chapter 6 for more information on Popup Menus and
             for general information about Menu design.

















































        August 26, 1994                                         9-95







        OSF/Motif Style Guide
        Primary Selection


        PPrriimmaarryy SSeelleeccttiioonn





        DDeessccrriippttiioonn



             Each collection maintains its own selection.  A
             selection need not contain any elements, in which case
             it is said to be an empty selection.  At any time,
             there is one selection called the primary selection,
             which is the last selection explicitly started by the
             user.

             Clicking BBSSeelleecctt or <<CCttrrll>> BBSSeelleecctt only moves the
             primary selection to a collection when it results in
             making a selection that is not empty.  When <<SShhiifftt>>
             BBSSeelleecctt is clicked, an implementation can move the
             primary selection to the component even if the
             resulting selection is empty.  Dragging BBSSeelleecctt,         *
             <<SShhiifftt>> BBSSeelleecctt, or <<CCttrrll>> BBSSeelleecctt must move the         *
             primary selection to the component if a button release   *
             during the pointer motion could have potentially         *
             selected any element.

             A selection is said to be persistent if it is
             highlighted even when it is not the primary selection.

             PPeerrssiisstteenntt
                  There are two variants of persistent selections:
                  persistent always, in which the current selection
                  is always highlighted, and persistent on focus, in
                  which the current selection is only highlighted
                  when it is the primary selection or when the
                  collection has the keyboard focus.  In either
                  case, stronger highlighting should be used when
                  the current selection is also the primary
                  selection.  When focus is in the collection, <<AAlltt>>
                  <<IInnsseerrtt>> can be used to promote the current
                  selection to the primary selection.

             NNoonnppeerrssiisstteenntt
                  The collection only highlights a primary
                  selection.  When the primary selection is lost to
                  another collection, the current selection is set
                  to empty.  When focus is in the collection, and it
                  does not have the primary selection, <<AAlltt>>




        9-96                                         August 26, 1994







                        Controls, Groups, and Models Reference Pages
                                                   Primary Selection


                  <<IInnsseerrtt>> can be used to restore the previous
                  selection and make it the primary selection.

             Collections that are never editable (such as
             noneditable Lists) should always use persistent
             selections.  Collections that are editable can either
             use persistent or nonpersistent selections.

             Primary transfer can be invoked by clicking BBTTrraannssffeerr
             or through standard keyboard bindings.  There are three
             primary transfer operations:

             PPrriimmaarryy CCooppyy
                  In an editable collection, BBTTrraannssffeerr CClliicckk, <<CCttrrll>>  *
                  BBTTrraannssffeerr CClliicckk, <<AAlltt>> <<CCooppyy>>, and <<AAlltt>> <<CCttrrll>>     *
                  <<IInnsseerrtt>> must copy the primary selection to the     *
                  insertion position, as defined in Section 4.3.      *
                  (Note that the insertion position is usually        *
                  different for mouse and keyboard operations.)

             PPrriimmaarryy MMoovvee
                  In an editable collection, <<SShhiifftt>> BBTTrraannssffeerr        *
                  CClliicckk, <<AAlltt>> <<CCuutt>>, and <<AAlltt>> <<SShhiifftt>> <<DDeelleettee>>      *
                  must move the primary selection to the insertion    *
                  position, as defined in Section 4.3.  (Note that    *
                  the insertion position is usually different for     *
                  mouse and keyboard operations.)

             PPrriimmaarryy LLiinnkk
                  In an editable collection, <<CCttrrll>> <<SShhiifftt>>           *
                  BBTTrraannssffeerr CClliicckk must place a link to the primary    *
                  selection at the insertion position, as defined in  *
                  Section 4.3.



        RReellaatteedd IInnffoorrmmaattiioonn


             See Sections 4.2 and 4.3 for more information about the
             primary selection.













        August 26, 1994                                         9-97







        OSF/Motif Style Guide
        PromptDialog


        PPrroommppttDDiiaalloogg





        DDeessccrriippttiioonn


             A PrompDialog should be used to prompt the user for
             input.  It can interrupt the user's interaction with
             the application.  It should include a message, a text
             input area, and one of the following button
             arrangements:

             OOKK CCaanncceell
             OOKK CCaanncceell HHeellpp
             OOKK AAppppllyy CCaanncceell
             OOKK AAppppllyy CCaanncceell HHeellpp
             OOKK AAppppllyy RReesseett CCaanncceell
             OOKK AAppppllyy RReesseett CCaanncceell HHeellpp



        IIlllluussttrraattiioonn





        RReellaatteedd IInnffoorrmmaattiioonn


             For more information, see the reference page for
             DialogBox.



















        9-98                                         August 26, 1994







                        Controls, Groups, and Models Reference Pages
                                                          PushButton


        PPuusshhBBuuttttoonn





        DDeessccrriippttiioonn


             A PushButton should be used to start an operation.  A    *
             PushButton must contain either a text or graphic Label   *
             that indicates the operation of the button.



        IIlllluussttrraattiioonn





        NNaavviiggaattiioonn


             A PushButton must have no internal navigation.           *



        OOtthheerr OOppeerraattiioonnss


             The following text describes the operations of this
             component:

             BBSSeelleecctt PPrreessss
                       Must arm the PushButton.                       *

             BBSSeelleecctt RReelleeaassee
                       If the release is within the same PushButton   *
                       as the press, BBSSeelleecctt RReelleeaassee must disarm the  *
                       PushButton and activate it.  If the release    *
                       is outside of the PushButton, BBSSeelleecctt RReelleeaassee  *
                       must disarm the PushButton without activating  *
                       it.

             <<EEnntteerr>> oorr <<RReettuurrnn>>
                       If the PushButton is in a window with a        *
                       default action, the PushButton must be         *
                       activated.  If the PushButton is in a Menu,    *
                       this action must activate the PushButton and   *




        August 26, 1994                                         9-99







        OSF/Motif Style Guide
        PushButton


                       unpost the Menu.

             <<SSeelleecctt>> oorr <<SSppaaccee>>
                       Must activate the PushButton.  If the          *
                       PushButton is in a Menu, the Menu must be      *
                       unposted.

             <<HHeellpp>>    Must provide any available help for the        *
                       PushButton.













































        9-100                                        August 26, 1994





  C
