1/*
2 * ComboBoxP.h - Das schon lange schmerzlich vermisste Combo-Box-
3 *               Widget -- nun endlich auf fuer Motif!
4 *               Wahlweise Motif 1.1 oder 1.2.
5 *
6 * Letzte Modifikation: 04.10.1995    Revisionsstand: 1.32a
7 *
8 * (c) 1993, 1994 Harald Albrecht
9 * Institut fuer Geometrie und Praktische Mathematik
10 * RWTH Aachen, Germany
11 * albrecht@igpm.rwth-aachen.de
12 *
13 * This program is free software; you can redistribute it and/or modify
14 * it under the terms of the GNU General Public License as published by
15 * the Free Software Foundation; either version 2 of the License, or
16 * (at your option) any later version.
17 *
18 * This program is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
21 * GNU General Public License for more details.
22 *
23 * You should have received a copy of the GNU General Public License
24 * along with this program (see the file COPYING for more details);
25 * if not, write to the Free Software Foundation, Inc., 675 Mass Ave,
26 * Cambridge, MA 02139, USA.
27 *
28 */
29#ifndef __ComboBoxWidgetP_h
30#define __ComboBoxWidgetP_h
31
32#include "xmcombo.h"
33#include <Xm/XmP.h>
34#if (XmVersion > 1001) /* sounds like tales from 1000 and 1 night.... */
35#include <Xm/ManagerP.h>
36#endif
37
38/*********************************************************************
39 * Klassendefinition
40 *********************************************************************/
41/* Neue Datenfelder fuer den Klassenrecord der Center-Widgetklasse */
42typedef struct _XmComboBoxClassPart {
43    int Just_to_keep_the_compiler_happy; /* Der Name ist Programm */
44} XmComboBoxClassPart;
45/*
46 * Nun folgt die vollstaendige Klassenstruktur, mit all' den Felder,
47 * die bereits von den Vorfahren geerbt wurden.
48 */
49typedef struct _XmComboBoxClassRec {
50    CoreClassPart       core_class;
51    CompositeClassPart  composite_class;
52    ConstraintClassPart constraint_class;
53    XmManagerClassPart  manager_class;
54    XmComboBoxClassPart combobox_class;
55} XmComboBoxClassRec;
56extern XmComboBoxClassRec xmComboBoxClassRec;
57
58/*********************************************************************
59 *Instanzdefinition
60 *********************************************************************/
61typedef struct _XmComboBoxPart {
62/* Resourcen ... hierauf darf von aussen zugegriffen werden! */
63    Boolean	    Editable;		/* Editierbare Eingabezeile ? */
64    Boolean	    StaticList;         /* Liste immer dargestellt?   */
65    unsigned char   SelectionPolicy;	/* Was geht hier ab?!         */
66    unsigned char   ScrollBarDisplayPolicy;
67    unsigned char   ListSizePolicy;	/* Rollbalken!                */
68    Boolean	    AutomaticSelection; /* Wann Callbacks aufrufen?   */
69    Boolean	    Sorted;		/* Liste sortiert             */
70    XtCallbackList  SortingCBL;		/* Wie wird extern sortiert?  */
71    int		    VisibleItemCount;	/* Anz dargstellte Eintraege  */
72    XmFontList	    Font;		/* verwendete Fonts           */
73    XtCallbackList  SelectionCBL;       /* Auswahl aus Liste          */
74    XtCallbackList  UnselectionCBL;	/* Auswahl zurueckgenommen    */
75    XtCallbackList  DefaultActionCBL;	/* bei Doppelklick	      */
76    XtCallbackList  DropDownCBL;        /* Liste angezeigt/versteckt  */
77    XtCallbackList  ModifyVerifyCBL;	/* Vor Aenderung im Textfeld  */
78    XtCallbackList  ValueChangedCBL;	/* Danach...		      */
79    XtCallbackList  MotionVerifyCBL;	/* Der Cursor bewegt sich doch*/
80    XtCallbackList  ActivateCBL;	/* Eingabe beendet?           */
81    Boolean         SquareArrow;        /* Quadratischer Pfeil?       */
82    Boolean         ArrowSpacingOn;     /* Abstand zw. Pfeil und Text */
83    Boolean	    Persistent;		/* Liste & Focus-Out	      */
84    Boolean	    TwmHandlingOn;	/* dto.			      */
85    Boolean	    ShowLabel;		/* Label anzeigen?	      */
86    Position	    DropDownOffset;	/* delta Ecke Eingabefeld,
87                                                 Liste                */
88
89/* Ab hier wird's privat! */
90    Widget	    EditCtrl;	/* Editorzeile */
91    Widget	    ArrowCtrl;  /* Pfeil nach unten */
92    Widget	    LabelCtrl;  /* Text links neben dem Eingabefeld */
93
94    Widget	    PopupShell; /* Shell, in der die Liste liegt */
95    Widget	    ListCtrl;   /* Listenfeld */
96
97    Widget	    MyNextShell;
98
99    Cursor          ArrowCursor;
100    Boolean         InInit;
101
102    int		    LastSelection;
103
104    Boolean         ListVisible;
105    Boolean	    IgnoreFocusOut;
106    Boolean         PendingFocusOut;
107    Boolean	    PendingOverrideInOut;
108    XtWorkProcId    WorkProcID;
109    XEvent          xevent;
110
111    Boolean	    PassVerification;
112    Boolean	    ConvertBitmapToPixmap,
113                    ConvertBitmapToPixmapInsensitive;
114    Pixmap	    LabelPixmap, LabelInsensitivePixmap;
115
116    XtPointer	    Dummy;
117} XmComboBoxPart;
118
119/*
120 * vollstaengige Instanzenstruktur
121 */
122typedef struct _XmComboBoxRec {
123    CorePart       core;
124    CompositePart  composite;
125    ConstraintPart constraint;
126    XmManagerPart  manager;
127    XmComboBoxPart combobox;
128} XmComboBoxRec;
129
130#endif
131/* Ende von ComboBoxP.h */
132