build git 2.17.1
[AROS-Contrib.git] / bgui / examples / Backdrop.c
bloba3c4a67fb747bb7281fee26c09cf94c6f3935d5d
1 /*
2 * @(#) $Header$
4 * Backdrop.c
6 * (C) Copyright 1998 Manuel Lemos.
7 * (C) Copyright 1995 Jaba Development.
8 * (C) Copyright 1995 Jan van den Baard.
9 * All Rights Reserved.
11 * $Log$
12 * Revision 42.0 2000/05/09 22:19:26 mlemos
13 * Bumped to revision 42.0 before handing BGUI to AROS team
15 * Revision 41.11 2000/05/09 20:33:16 mlemos
16 * Bumped to revision 41.11
18 * Revision 1.2 2000/05/09 19:58:37 mlemos
19 * Merged with the branch Manuel_Lemos_fixes.
21 * Revision 1.1.2.1 1998/02/28 17:44:53 mlemos
22 * Ian sources
27 /* Execute me to compile with DICE V3.0
28 dcc Backdrop.c -mi -ms -mRR -proto -lbgui
29 quit
32 #include "DemoCode.h"
33 #include <graphics/displayinfo.h>
36 * Quit object ID.
38 #define ID_QUIT 1
41 * A borderless window ;)
43 VOID Say( struct Screen *screen )
45 Object *WO_Window, *GO_Ok;
46 IPTR signal;
47 ULONG rc;
48 BOOL running = TRUE;
51 * Create the window.
53 WO_Window = WindowObject,
54 WINDOW_Borderless, TRUE,
55 WINDOW_SmartRefresh, TRUE,
56 WINDOW_RMBTrap, TRUE,
57 WINDOW_AutoAspect, TRUE,
58 WINDOW_Screen, screen,
59 WINDOW_MasterGroup,
60 VGroupObject, HOffset( 4 ), VOffset( 4 ), Spacing( 3 ),
61 FRM_Type, FRTYPE_BUTTON,
62 FRM_BackFill, SHINE_RASTER,
63 StartMember,
64 InfoObject,
65 FRM_Type, FRTYPE_BUTTON,
66 FRM_Recessed, TRUE,
67 INFO_TextFormat, ISEQ_C "This demonstration shows you how to\n"
68 "create a backdrop, borderless window with BGUI.\n\n"
69 "You may recognize the GUI as the main window\n"
70 "of SPOT but that's because I could not\n"
71 "come up with something original.\n\n"
72 "Just click on " ISEQ_B "Quit" ISEQ_N " to exit the demo.",
73 INFO_FixTextWidth, TRUE,
74 INFO_MinLines, 8,
75 EndObject,
76 EndMember,
77 StartMember,
78 HGroupObject,
79 VarSpace( DEFAULT_WEIGHT ),
80 StartMember, GO_Ok = KeyButton( "_OK", ID_QUIT ), EndMember,
81 VarSpace( DEFAULT_WEIGHT ),
82 EndObject, FixMinHeight,
83 EndMember,
84 EndObject,
85 EndObject;
88 * OK?
90 if ( WO_Window ) {
92 * Add gadget key.
94 if ( GadgetKey( WO_Window, GO_Ok, "o" )) {
96 * Open the window.
98 if ( WindowOpen( WO_Window )) {
99 GetAttr( WINDOW_SigMask, WO_Window, &signal );
101 * Wait for somebody to click
102 * on the "OK" gadget.
104 do {
105 Wait( signal );
106 while (( rc = HandleEvent( WO_Window )) != WMHI_NOMORE ) {
107 if ( rc == ID_QUIT )
108 running = FALSE;
110 } while ( running );
113 DisposeObject( WO_Window );
118 * Here we go...
120 VOID StartDemo( void )
122 struct Screen *myscreen, *wblock;
123 struct DrawInfo *dri;
124 struct Window *window;
125 Object *WO_Window;
126 APTR wlock;
127 ULONG mode, rc;
128 IPTR signal;
129 BOOL running = TRUE;
132 * Lock the workbench screen.
134 if (( wblock = LockPubScreen( "Workbench" ))) {
136 * Obtain it's DrawInfo.
138 if (( dri = GetScreenDrawInfo( wblock ))) {
140 * And mode ID.
142 if (( mode = GetVPModeID( &wblock->ViewPort )) != INVALID_ID ) {
144 * Open a screen ala your workbench.
146 if (( myscreen = OpenScreenTags( NULL, SA_Depth, dri->dri_Depth,
147 SA_Width, wblock->Width,
148 SA_Height, wblock->Height,
149 SA_DisplayID, mode,
150 SA_Pens, dri->dri_Pens,
151 SA_Title, "Backdrop Demo.",
152 TAG_END ))) {
154 * Create a simple backdrop window on
155 * the screen whilst keeping the screen
156 * title visible.
158 WO_Window = WindowObject,
159 WINDOW_SmartRefresh, TRUE,
160 WINDOW_Backdrop, TRUE,
161 WINDOW_ShowTitle, TRUE,
162 WINDOW_CloseOnEsc, TRUE,
163 WINDOW_AutoAspect, TRUE,
164 WINDOW_NoBufferRP, TRUE,
165 WINDOW_Screen, myscreen,
166 WINDOW_MasterGroup,
167 HGroupObject, HOffset( 4 ), VOffset( 4 ), Spacing( 4 ),
168 StartMember,
169 VGroupObject, Spacing( 4 ),
170 StartMember, Button( "Message list...", 0 ), EndMember,
171 StartMember, Button( "Messages...", 0 ), EndMember,
172 VarSpace( 40 ),
173 StartMember, Button( "Import...", 0 ), EndMember,
174 StartMember, Button( "Export...", 0 ), EndMember,
175 StartMember, Button( "Maintenance...", 0 ), EndMember,
176 StartMember, Button( "Optimize...", 0 ), EndMember,
177 VarSpace( 40 ),
178 StartMember, Button( "Poll...", 0 ), EndMember,
179 StartMember, Button( "File request...", 0 ), EndMember,
180 VarSpace( 40 ),
181 StartMember, Button( "Iconify", 0 ), EndMember,
182 StartMember, Button( "Quit", ID_QUIT ), EndMember,
183 EndObject, FixMinSize,
184 EndMember,
185 StartMember, ListviewObject, EndObject, EndMember,
186 EndObject,
187 EndObject;
190 * Window OK?
192 if ( WO_Window ) {
194 * Open the window.
196 if (( window = WindowOpen( WO_Window ))) {
198 * Show an explanation window.
200 wlock = BGUI_LockWindow( window );
201 Say( myscreen );
202 BGUI_UnlockWindow( wlock );
204 * Pick up the window signal.
206 GetAttr( WINDOW_SigMask, WO_Window, &signal );
208 * Event loop...
210 do {
211 Wait( signal );
212 while (( rc = HandleEvent( WO_Window )) != WMHI_NOMORE ) {
213 switch ( rc ) {
215 case WMHI_CLOSEWINDOW:
216 case ID_QUIT:
217 running = FALSE;
218 break;
221 } while ( running );
222 } else
223 Tell( "Unable to open the window\n" );
224 DisposeObject( WO_Window );
225 } else
226 Tell( "Unable to create the window object\n" );
227 CloseScreen( myscreen );
228 } else
229 Tell( "Unable to open the screen\n" );
230 } else
231 Tell( "Unknown screen mode\n" );
232 FreeScreenDrawInfo( wblock, dri );
233 } else
234 Tell( "Unable to get DrawInfo\n" );
235 UnlockPubScreen( NULL, wblock );
236 } else
237 Tell( "Unable to lock the Workbench screen\n" );