1 /* $Header: /cvsroot/lesstif/lesstif/test/Xm/cascadebuttong/test4.c,v 1.6 2001/05/23 15:00:02 amai Exp $ */
2 
3 #include <stdlib.h>
4 #include <stdio.h>
5 
6 #include <Xm/RowColumnP.h>
7 #include <Xm/MainWP.h>
8 #include <Xm/DrawingAP.h>
9 #include <Xm/CascadeBGP.h>
10 #include <Xm/CascadeBP.h>
11 #include <Xm/PushBGP.h>
12 #include <Xm/ToggleBGP.h>
13 
14 
15 static void
PrintDimensions(Widget w,XtPointer clientData,XtPointer callData)16 PrintDimensions(Widget w, XtPointer clientData, XtPointer callData)
17 {
18     XmCascadeButtonGadget cw = (XmCascadeButtonGadget) w;
19 
20     fprintf(stderr, "Widget %s - geo %d %d %d %d\n",
21 	    XrmQuarkToString(cw->object.xrm_name),
22 	     cw->rectangle.x, cw->rectangle.y,
23 	    cw->rectangle.width, cw->rectangle.height);
24     fprintf(stderr, "BorderWidth: %3d HighlightThickness %3d ShadowThickness: %3d\n",
25 	    cw->rectangle.border_width,
26 	    cw->gadget.highlight_thickness,
27 	    cw->gadget.shadow_thickness);
28     fprintf(stderr, "MarginLeft: %3d MarginRight %3d MarginTop: %3d MarginBottom: %3d\n",
29 	    cw->label.cache->margin_left,
30 	    cw->label.cache->margin_right,
31 	    cw->label.cache->margin_top,
32 	    cw->label.cache->margin_bottom);
33     fprintf(stderr, "MarginHeight: %3d MarginWidth %3d\n",
34 	    cw->label.cache->margin_height,
35 	    cw->label.cache->margin_width);
36     fprintf(stderr, "TextRect x: %3d y: %3d w: %3d h: %3d\n",
37 	    cw->label.TextRect.x,
38 	    cw->label.TextRect.y,
39 	    cw->label.TextRect.width,
40 	    cw->label.TextRect.height);
41     fprintf(stderr, "AccTextRect x: %3d y: %3d w: %3d h: %3d\n",
42 	    cw->label.acc_TextRect.x,
43 	    cw->label.acc_TextRect.y,
44 	    cw->label.acc_TextRect.width,
45 	    cw->label.acc_TextRect.height);
46     fprintf(stderr, "CascadeRect x: %3d y: %3d w: %3d h: %3d\n\n",
47 	    cw->cascade_button.cascade_rect.x,
48 	    cw->cascade_button.cascade_rect.y,
49 	    cw->cascade_button.cascade_rect.width,
50 	    cw->cascade_button.cascade_rect.height);
51 
52 }
53 
54 static char *fallbacks[] = {
55 	"*cb1.labelString:			Menu",
56 	"*cascade1.mnemonic:			M",
57 	"*cb2.labelString:			Print Dimensions",
58 	"*cb3.labelString:			Short string",
59 	"*pb1.labelString:			Dummy",
60 	NULL	/* The end */
61 };
62 
63 int
main(int argc,char * argv[])64 main(int argc, char *argv[])
65 {
66     XtAppContext app;
67     Widget toplevel, main_w, menubar, cb1, cb2, cb3, pb1, pane1, pane2,
68 	drawing_a;
69 
70     XtSetLanguageProc (NULL, NULL, NULL);
71 
72     toplevel = XtVaAppInitialize (&app, "Test4", NULL, 0,
73 				  &argc, argv, fallbacks,
74 				  NULL);
75 
76     /* Create a MainWindow widget that contains a DrawingArea in
77      * its work window.
78      */
79 
80     main_w = XtVaCreateManagedWidget ("main_w",
81         xmMainWindowWidgetClass, toplevel,
82         XmNscrollingPolicy,  XmAUTOMATIC,
83         NULL);
84     menubar = XmCreateMenuBar (main_w, "menubar", NULL, 0);
85 
86     pane1 = XmCreatePulldownMenu (menubar, "pane1", NULL, 0);
87     pane2 = XmCreatePulldownMenu (pane1, "pane2", NULL, 0);
88 
89     cb1 = XtVaCreateManagedWidget ("cb1",
90         xmCascadeButtonGadgetClass, menubar,
91         XmNsubMenuId,   pane1,
92         NULL);
93 
94     cb2 = XtVaCreateManagedWidget ("cb2",
95         xmCascadeButtonGadgetClass, pane1,
96         XmNsubMenuId,   pane2,
97         NULL);
98 
99     cb3 = XtVaCreateManagedWidget ("cb3",
100         xmCascadeButtonWidgetClass, pane1,
101         XmNsubMenuId,   pane2,
102         NULL);
103 
104     XtAddCallback(cb2, XmNactivateCallback, PrintDimensions, NULL);
105     XtAddCallback(cb2, XmNcascadingCallback, PrintDimensions, NULL);
106 
107 
108     pb1 = XtVaCreateManagedWidget ("pb1",
109         xmPushButtonGadgetClass, pane2,
110         NULL);
111 
112     XtManageChild (menubar);
113 
114     /* Create a DrawingArea -- no actual drawing will be done. */
115     drawing_a = XtVaCreateManagedWidget ("drawing_a",
116         xmDrawingAreaWidgetClass, main_w,
117         XmNwidth, 500,
118         XmNheight,500,
119         NULL);
120 
121     XtRealizeWidget (toplevel);
122 
123 
124 /* Note: the following values are the result of
125  * querying the current geometry.
126  */
127 {
128 static XtWidgetGeometry Expected[] = {
129    CWWidth | CWHeight            ,  218,  358,  131,  162, 0,0,0, /* main_w */
130    CWWidth | CWHeight | CWX | CWY,    4,   35,  100,  100, 0,0,0, /* ClipWindow */
131    CWWidth | CWHeight | CWX | CWY,    0,    0,  500,  500, 0,0,0, /* drawing_a */
132    CWWidth | CWHeight | CWX | CWY,  112,   31,   19,  108, 0,0,0, /* VertScrollBar */
133    CWWidth | CWHeight | CWX | CWY,    0,  143,  108,   19, 0,0,0, /* HorScrollBar */
134    CWWidth | CWHeight | CWX | CWY,    0,    0,  131,   31, 0,0,0, /* menubar */
135    CWWidth | CWHeight | CWX | CWY,    5,    5,   40,   21, 0,0,0, /* cb1 */
136 };
137 /* toplevel should be replaced with to correct applicationShell */
138 PrintDetails(toplevel, Expected);
139 }
140 LessTifTestMainLoop(toplevel);
141 LessTifTestMainLoop(toplevel);
142 
143 exit(0);
144 }
145 
146 
147