ecxtlacitka.png (2658 bytes) Ecx EcxDocs EcxMUI EcxExamples Back to Amiga E home page
/* AmigaE MUI button example ghh 2018 */
OPT PREPROCESS

MODULE 'amigaLib/boopsi'  /* doMethodA() */
MODULE 'muimaster', 'libraries/mui'
MODULE 'utility/tagitem'

ENUM ID_CANCEL=1                /* case */
ENUM ER_NONE, ER_MUILIB, ER_APP /* exception handling */
  DEF app,win,btok              /* gui */

PROC main() HANDLE
  DEF signals,result
  DEF running=TRUE

  IF (muimasterbase := OpenLibrary(MUIMASTER_NAME,MUIMASTER_VMIN))=NIL THEN Raise(ER_MUILIB)

/***** AmigaOS4 ****/
  #ifdef __AMIGAOS4__
   muimasteriface := GetInterface(muimasterbase, 'main', 1, NIL)
  #endif

/**** Main GUI ****/
  app:= ApplicationObject,
    MUIA_Application_Title      , 'EMUIButton',
    MUIA_Application_Version    , '$VER: EMUIButton 0.01 (02.07.18)',
    MUIA_Application_Copyright  , 'c2018, ghh',
    MUIA_Application_Author     , 'ghh',
    MUIA_Application_Description, 'E MUI button example.',
    MUIA_Application_Base       , 'MYBWN',

    SubWindow, win:= WindowObject,
      MUIA_Window_Title          , 'E MUI button',
      MUIA_Window_ScreenTitle    , 'E MUI button',
      MUIA_Window_ID             , 'MYWN',
      WindowContents, HGroup,
        Child, btok:= SimpleButton('Ok'),                /* tlacitko Ok */
          MUIA_ShortHelp, 'Ok button.',                  /* napoveda v bubline */
        End,
    End,
  End

  IF (app=NIL) THEN Raise(ER_APP)

/**** Notify ****/
  doMethodA(win,[MUIM_Notify,MUIA_Window_CloseRequest,MUI_TRUE,app,2,MUIM_Application_ReturnID,ID_CANCEL])  /* zavreni hlavniho okna */

  set(win,MUIA_Window_Open,MUI_TRUE) /* open main win */

  WHILE running

    result:=doMethodA(app,[MUIM_Application_Input,{signals}])

    SELECT result
      CASE ID_CANCEL
        running:=FALSE
    ENDSELECT

    IF (running AND signals) THEN Wait(signals)

  ENDWHILE

  set(win,MUIA_Window_Open,FALSE)                  /* zavre hlavni okno po obdrzeni quit */
  Raise (ER_NONE)

/**** Shut down ****/
EXCEPT
  IF app THEN Mui_DisposeObject(app)
  #ifdef __AMIGAOS4__
  DropInterface(muimasteriface)
  #endif
  IF muimasterbase THEN CloseLibrary(muimasterbase)

  SELECT exception
    CASE ER_MUILIB
      WriteF('Failed to open \s.\n',MUIMASTER_NAME)
      CleanUp(20)

    CASE ER_APP
      WriteF('Failed to create application.\n')
      CleanUp(20)
  ENDSELECT

ENDPROC
ghh don'tpanic