home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 15 / AACD15.ISO / AACD / Programming / BGUI / bgui_e / sources / examples / Backdrop.e < prev    next >
Encoding:
Text File  |  1999-08-26  |  11.9 KB  |  242 lines

  1. /*
  2.  *      BACKDROP.e
  3.  *
  4.  *      (C) Copyright 1995 Jaba Development.
  5.  *      (C) Copyright 1995 Jan van den Baard.
  6.  *      (C) Copyright 1996 Marco Talamelli.
  7.  *          All Rights Reserved.
  8.  *
  9.  *      Updated on 10-Aug-96
  10.  */
  11.  
  12. OPT OSVERSION=37
  13. OPT PREPROCESS
  14.  
  15. MODULE  'libraries/bgui',
  16.         'libraries/bguim',
  17.         'libraries/gadtools',
  18.         'bgui',
  19.         'bgui/bgui_image',
  20.         'tools/boopsi',
  21.         'utility/tagitem',
  22.         'intuition/screens',
  23.         'intuition/intuition',
  24.         'intuition/classes',
  25.         'intuition/classusr',
  26.         'intuition/gadgetclass',
  27.         'graphics/displayinfo',
  28.         'graphics/modeid'
  29.  
  30. /*
  31.  *      Quit object ID.
  32.  */
  33. #define ID_QUIT         1
  34.  
  35. /*
  36.  *      A borderless window ;)
  37.  */
  38. PROC say( screen:PTR TO screen )
  39.  
  40.     DEF wo_window, go_ok,
  41.         signal, rc,text:PTR TO CHAR,
  42.         running = TRUE
  43.  
  44.     text :=  '\ecThis demonstration shows you how to\n'+
  45.              'create a backdrop, borderless window with BGUI.\n\n'+
  46.              'You may recognize the GUI as the main window\n'+
  47.              'of SPOT but that\as because I could not\n'+
  48.              'come up with something original.\n\n'+
  49.              'Just click on \ebQuit\en to exit the demo.'
  50.     /*
  51.      *      Create the window.
  52.      */
  53.     wo_window := WindowObject,
  54.             WINDOW_Borderless,      TRUE,
  55.             WINDOW_SmartRefresh,    TRUE,
  56.             WINDOW_RMBTrap,         TRUE,
  57.             WINDOW_AutoAspect,      TRUE,
  58.             WINDOW_AutoKeyLabel,    TRUE,
  59.             WINDOW_Screen,          screen,
  60.             WINDOW_MasterGroup,
  61.                     VGroupObject, HOffset( 4 ), VOffset( 4 ), Spacing( 3 ),
  62.                             FRM_Type,       FRTYPE_BUTTON,
  63.                             FRM_BackFill,   SHINE_RASTER,
  64.                             StartMember,
  65.                                     InfoObject,
  66.                                             FRM_Type,               FRTYPE_BUTTON,
  67.                                             FRM_Recessed,           TRUE,
  68.                                             INFO_TextFormat,        text,
  69.                                             INFO_FixTextWidth,      TRUE,
  70.                                             INFO_MinLines,          8,
  71.                                     EndObject,
  72.                             EndMember,
  73.                             StartMember,
  74.                                     HGroupObject,
  75.                                             VarSpace( DEFAULT_WEIGHT ),
  76.                                             StartMember, go_ok := KeyButton( '_OK', ID_QUIT ), EndMember,
  77.                                             VarSpace( DEFAULT_WEIGHT ),
  78.                                     EndObject, FixMinHeight,
  79.                             EndMember,
  80.                     EndObject,
  81.     EndObject
  82.  
  83.     /*
  84.      *      OK?
  85.      */
  86.     IF wo_window
  87.             /*
  88.              *      Open the window.
  89.              */
  90.             IF WindowOpen( wo_window )
  91.                     GetAttr( WINDOW_SigMask, wo_window, {signal} )
  92.                     /*
  93.                      *      Wait for somebody to click
  94.                      *      on the 'OK' gadget.
  95.                      */
  96.                     WHILE running = TRUE
  97.                             Wait( signal )
  98.                             WHILE (rc := HandleEvent( wo_window )) <> WMHI_NOMORE
  99.                                     IF rc = ID_QUIT THEN running := FALSE
  100.                             ENDWHILE
  101.                     ENDWHILE
  102.             ENDIF
  103.  
  104.             DisposeObject( wo_window )
  105.     ENDIF
  106. ENDPROC
  107.  
  108. /*
  109.  *      Here we go...
  110.  */
  111. PROC main()
  112.  
  113.     DEF myscreen:PTR TO screen, wblock:PTR TO screen,
  114.         dri:PTR TO drawinfo,
  115.         window:PTR TO window,
  116.         wo_window,
  117.         wlock,
  118.         mode, rc, signal,
  119.         running = TRUE
  120.  
  121.     /*
  122.     **      Open the library.
  123.     **/
  124.     IF bguibase := OpenLibrary( 'bgui.library', BGUIVERSION )
  125.         /*
  126.          *      Lock the workbench screen.
  127.          */
  128.         IF wblock := LockPubScreen( 'Workbench' )
  129.                 /*
  130.                  *      Obtain it's DrawInfo.
  131.                  */
  132.                 IF dri := GetScreenDrawInfo( wblock )
  133.                         /*
  134.                          *      And mode ID.
  135.                          */
  136.                         IF ( mode := GetVPModeID( wblock.viewport )) <> INVALID_ID
  137.                                 /*
  138.                                  *      Open a screen ala your workbench.
  139.                                  */
  140.                                 IF myscreen := OpenScreenTagList( NIL,[SA_DEPTH,         dri.depth,
  141.                                                                       SA_WIDTH,         wblock.width,
  142.                                                                       SA_HEIGHT,        wblock.height,
  143.                                                                       SA_DISPLAYID,     mode,
  144.                                                                       SA_PENS,          dri.pens,
  145.                                                                       SA_TITLE,         'Backdrop Demo.',
  146.                                                                       TAG_END] )
  147.                                         /*
  148.                                          *      Create a simple backdrop window on
  149.                                          *      the screen whilst keeping the screen
  150.                                          *      title visible.
  151.                                          */
  152.                                         wo_window := WindowObject,
  153.                                                 WINDOW_SmartRefresh,            TRUE,
  154.                                                 WINDOW_Backdrop,                TRUE,
  155.                                                 WINDOW_ShowTitle,               TRUE,
  156.                                                 WINDOW_CloseOnEsc,              TRUE,
  157.                                                 WINDOW_AutoAspect,              TRUE,
  158.                                                 WINDOW_NoBufferRP,              TRUE,
  159.                                                 WINDOW_Screen,                  myscreen,
  160.                                                 WINDOW_MasterGroup,
  161.                                                         HGroupObject, HOffset( 4 ), VOffset( 4 ), Spacing( 4 ),
  162.                                                                 StartMember,
  163.                                                                         VGroupObject, Spacing( 4 ),
  164.                                                                                 StartMember, Button( 'Message list...', 0 ), EndMember,
  165.                                                                                 StartMember, Button( 'Messages...',     0 ), EndMember,
  166.                                                                                 VarSpace( 40 ),
  167.                                                                                 StartMember, Button( 'Import...',       0 ), EndMember,
  168.                                                                                 StartMember, Button( 'Export...',       0 ), EndMember,
  169.                                                                                 StartMember, Button( 'Maintenance...',  0 ), EndMember,
  170.                                                                                 StartMember, Button( 'Optimize...',     0 ), EndMember,
  171.                                                                                 VarSpace( 40 ),
  172.                                                                                 StartMember, Button( 'Poll...',         0 ), EndMember,
  173.                                                                                 StartMember, Button( 'File request...', 0 ), EndMember,
  174.                                                                                 VarSpace( 40 ),
  175.                                                                                 StartMember, Button( 'Iconify',         0 ), EndMember,
  176.                                                                                 StartMember, Button( 'Quit',            ID_QUIT ), EndMember,
  177.                                                                         EndObject, FixMinSize,
  178.                                                                 EndMember,
  179.                                                                 StartMember, ListviewObject, EndObject, EndMember,
  180.                                                         EndObject,
  181.                                         EndObject
  182.  
  183.                                         /*
  184.                                          *      Window OK?
  185.                                          */
  186.                                         IF wo_window
  187.                                                 /*
  188.                                                  *      Open the window.
  189.                                                  */
  190.                                                 IF window := WindowOpen( wo_window )
  191.                                                         /*
  192.                                                          *      Show an explanation window.
  193.                                                          */
  194.                                                         wlock := BgUI_LockWindow( window )
  195.                                                         say( myscreen )
  196.                                                         BgUI_UnlockWindow( wlock )
  197.                                                         /*
  198.                                                          *      Pick up the window signal.
  199.                                                          */
  200.                                                         GetAttr( WINDOW_SigMask, wo_window, {signal} )
  201.                                                         /*
  202.                                                          *      Event loop...
  203.                                                          */
  204.                                                         WHILE running = TRUE
  205.                                                                 Wait( signal )
  206.                                                                 WHILE ( rc := HandleEvent( wo_window )) <> WMHI_NOMORE
  207.                                                                         SELECT rc
  208.                                                                                 CASE    WMHI_CLOSEWINDOW
  209.                                                                                         running := FALSE
  210.                                                                                 CASE    ID_QUIT
  211.                                                                                         running := FALSE
  212.                                                                         ENDSELECT
  213.                                                                 ENDWHILE
  214.                                                         ENDWHILE
  215.                                                 ELSE
  216.                                                         WriteF( 'Unable to open the window\n' )
  217.                                                 ENDIF
  218.                                                 DisposeObject( wo_window )
  219.                                         ELSE
  220.                                             WriteF( 'Unable to create the window object\n' )
  221.                                         ENDIF
  222.                                         CloseScreen( myscreen )
  223.                                 ELSE
  224.                                     WriteF( 'Unable to open the screen\n' )
  225.                                 ENDIF
  226.                         ELSE
  227.                             WriteF( 'Unknown screen mode\n' )
  228.                         ENDIF
  229.                         FreeScreenDrawInfo( wblock, dri )
  230.                 ELSE
  231.                     WriteF( 'Unable to get DrawInfo\n' )
  232.                 ENDIF
  233.                 UnlockPubScreen( NIL, wblock )
  234.         ELSE
  235.             WriteF( 'Unable to lock the Workbench screen\n' )
  236.         ENDIF
  237.         CloseLibrary(bguibase)
  238.     ELSE
  239.         WriteF('Could not open the bgui.library\n')
  240.     ENDIF
  241. ENDPROC
  242.