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

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

ENUM ID_CANCEL=1,ID_USE            /* case */
ENUM ER_NONE, ER_MUILIB, ER_APP    /* exception handling */
  DEF app,win,mystr,btok,btquit    /* 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      , 'EMUIString',
    MUIA_Application_Version    , '$VER: EMUIString 0.01 (02.07.18)',
    MUIA_Application_Copyright  , 'c2018, ghh',
    MUIA_Application_Author     , 'ghh',
    MUIA_Application_Description, 'E MUI string example.',
    MUIA_Application_Base       , 'MYSWN',

    SubWindow, win:= WindowObject,
      MUIA_Window_Title          , 'E MUI string',
      MUIA_Window_ScreenTitle    , 'E MUI string',
      MUIA_Window_ID             , 'MYWN',
      WindowContents, VGroup,
        Child,
          mystr:= StringObject, StringFrame,
            MUIA_String_Contents, 'Amiga',               /* obsah stringu na zacatku */
            MUIA_String_Reject,':(',                     /* "zakazane" znaky */
            MUIA_ShortHelp, 'Simple string.',            /* napoveda v bubline */
          End,
        Child, HGroup,                                   /* horiz skupina s tlacitkama */
          Child, HGroup,
            Child, btok:= SimpleButton('Ok'),            /* tlacitko Ok */
              MUIA_ShortHelp, 'Ok button.',              /* napoveda v bubline */
            End,
          Child, HGroup,
            Child, btquit:= SimpleButton('Quit'),        /* tlacitko Quit */
              MUIA_ShortHelp, 'Quit button.',            /* napoveda v bubline */
            End,
        End,
      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 */
  doMethodA(btok,   [MUIM_Notify,MUIA_Pressed,FALSE,app,2,MUIM_Application_ReturnID,ID_USE])
  doMethodA(btquit, [MUIM_Notify,MUIA_Pressed,FALSE,app,2,MUIM_Application_ReturnID,ID_CANCEL])
  set(win,MUIA_Window_Open,MUI_TRUE) /* open main win */

  WHILE running

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

    SELECT result
      CASE ID_USE                                  /* provede funkci esay */
        esay()
      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

PROC esay()
  DEF tx
  DEF buff[512]:STRING                   /* estring [delka] pro execute */
  get(mystr,MUIA_String_Contents,{tx})   /* zjisti obsah stringu a ulozi do tx */
  StringF(buff,'echo \q\s\q',tx)         /* buffer pro AmigaDOS prikaz echo */
  Execute(buff,0,0)                      /* provede prikazy co jsou v bufferu */
ENDPROC
ghh don'tpanic