/*
 * example.c  V2.0
 *
 * Shows the usage of the library in programs
 *
 * (c) 1990-1992 Stefan Becker
 */

#include <utility/tagitem.h>
#include <utility/hooks.h>
#include <clib/dos_protos.h>
#include <clib/exec_protos.h>
#include <clib/intuition_protos.h>
#include <clib/toolmanager_protos.h>
#include <stdlib.h>
#include <stdio.h>

/* Example hook function (not used) */
__geta4 BOOL hookfunc(__A0 struct Hook *hook, __A1 struct AppMessage *msg,
                      __A2 void *object)
{
 DisplayBeep(NULL);
 Delay(25);
 return(TRUE);
}

struct Hook hook={NULL,NULL,hookfunc,NULL,1};

struct TagItem execti1[]={
                     TMOP_Arguments,TRUE,
                     TMOP_Command,"'call [] getfile()'",
                     TMOP_CurrentDir,"SYS:",
                     TMOP_Delay,0,
                     TMOP_ExecType,TMET_ARexx,
                     TMOP_HotKey,"ralt a",
                     TMOP_PubScreen,"TERM",
                     TMOP_ToFront,TRUE,
                     TAG_DONE};

struct TagItem execti2[]={
                     TMOP_Arguments,TRUE,
                     TMOP_Command,"dir [] all",
                     TMOP_CurrentDir,"SYS:",
                     TMOP_Delay,0,
                     TMOP_ExecType,TMET_CLI,
                     TMOP_HotKey,"ralt b",
                     TMOP_Output,"CNN:WAIT",
                     TMOP_Path,"C:,BOOT:,s:",
                     TMOP_Priority,10,
                     TMOP_PubScreen,"TERM",
                     TMOP_Stack,10000,
                     TMOP_ToFront,TRUE,
                     TAG_DONE};

struct TagItem execti3[]={
                     TMOP_Arguments,TRUE,
                     TMOP_Command,"sys:bin/DME",
                     TMOP_CurrentDir,"SYS:",
                     TMOP_Delay,0,
                     TMOP_ExecType,TMET_WB,
                     TMOP_HotKey,"ralt c",
                     TMOP_Priority,10,
                     TMOP_PubScreen,"TERM",
                     TMOP_Stack,10000,
                     TMOP_ToFront,TRUE,
                     TAG_DONE};

struct TagItem imageti1[]={
                           TMOP_File,"TM:Icons/Bin",
                           TMOP_Data,NULL,
                           TAG_DONE};

struct TagItem imageti2[]={
                           TMOP_File,"TM:Icons/Disk",
                           TMOP_Data,NULL,
                           TAG_DONE};

struct TagItem imageti3[]={
                           TMOP_File,"TM:icons/MapleV.brush",
                           TMOP_Data,NULL,
                           TAG_DONE};

struct TagItem imageti4[]={
                           TMOP_File,"TM:Anims/test1.anim",
                           TMOP_Data,NULL,
                           TAG_DONE};

struct TagItem soundti1[]={
                           TMOP_Command,"id warn_general",
                           TAG_DONE};

struct TagItem soundti2[]={
                           TMOP_Command,"playmod qdh2:delitracker/modules/markII/MkII.Hard.pp",
                           TMOP_Port,"rexx_DT",
                           TAG_DONE};

struct TagItem menuti1[]={
                          TMOP_Exec,"testexec1",
                          TMOP_Sound,"testsound1",
                          TAG_DONE};

struct TagItem menuti2[]={
                          TMOP_Exec,"testexec2",
                          TMOP_Sound,"testsound2",
                          TAG_DONE};

struct TagItem menuti3[]={
                          TMOP_Exec,"testexec3",
                          TMOP_Sound,"testsound1",
                          TAG_DONE};

struct TagItem iconti1[]={
                          TMOP_Exec,"testexec1",
                          TMOP_LeftEdge,100,
                          TMOP_Image,"testimage1",
                          TMOP_ShowName,TRUE,
                          TMOP_Sound,"testsound1",
                          TMOP_TopEdge,350,
                          TAG_DONE};

struct TagItem iconti2[]={
                           TMOP_Exec,"testexec2",
                           TMOP_LeftEdge,170,
                           TMOP_Image,"testimage2",
                           TMOP_ShowName,FALSE,
                           TMOP_Sound,"testsound2",
                           TMOP_TopEdge,350,
                           TAG_DONE};

struct TagItem iconti3[]={
                          TMOP_Exec,"testexec3",
                          TMOP_LeftEdge,240,
                          TMOP_Image,"testimage3",
                          TMOP_ShowName,TRUE,
                          TMOP_Sound,"testsound1",
                          TMOP_TopEdge,350,
                          TAG_DONE};

struct TagItem iconti4[]={
                          TMOP_Exec,"testexec1",
                          TMOP_LeftEdge,330,
                          TMOP_Image,"testimage4",
                          TMOP_ShowName,FALSE,
                          TMOP_Sound,"testsound2",
                          TMOP_TopEdge,350,
                          TAG_DONE};

char *tool1[]={"testexec1","testimage1","testsound1"};
char *tool2[]={"testexec2","testimage2","testsound2"};
char *tool3[]={"testexec3","testimage3","testsound1"};
char *tool4[]={"testexec1","testimage4","testsound2"};
struct TagItem dockti1[]={
                         TMOP_LeftEdge,80,
                         TMOP_TopEdge,200,
                         TMOP_Activated,TRUE,
                         TMOP_Centered,FALSE,
                         TMOP_Columns,3,
                         TMOP_FrontMost,TRUE,
                         TMOP_HotKey,"rcommand rshift d",
                         TMOP_Vertical,TRUE,
                         TMOP_Text,FALSE,
                         TMOP_Title,"Blaaaa 1",
                         TMOP_Pattern,TRUE,
                         TMOP_Tool,tool1,
                         TMOP_Tool,tool2,
                         TMOP_Tool,tool3,
                         TMOP_Tool,tool4,
                         TAG_DONE};

struct TextAttr ta={"topaz.font",20,0,0};

struct TagItem dockti2[]={
                         TMOP_LeftEdge,80,
                         TMOP_TopEdge,300,
                         TMOP_Activated,TRUE,
                         TMOP_Centered,TRUE,
                         TMOP_Columns,2,
                         TMOP_FrontMost,TRUE,
                         TMOP_HotKey,"rcommand rshift e",
                         TMOP_Vertical,TRUE,
                         TMOP_Text,TRUE,
                         TMOP_Title,"Blaaaa 2",
                         TMOP_Tool,tool1,
                         TMOP_Tool,tool2,
                         TMOP_Tool,tool3,
                         TMOP_Tool,tool4,
                         TMOP_Menu,TRUE,
                         TMOP_Font,&ta,
                         TAG_DONE};

#if 0
struct TagItem dockti3[]={
                         TMOP_LeftEdge,300,
                         TMOP_TopEdge,200,
                         TMOP_Activated,TRUE,
                         TMOP_Centered,FALSE,
                         TMOP_Columns,2,
                         TMOP_FrontMost,TRUE,
                         TMOP_HotKey,"rcommand rshift f",
                         TMOP_Vertical,FALSE,
                         TMOP_Text,FALSE,
                         TMOP_Tool,tool1,
                         TMOP_Tool,tool2,
                         TMOP_Tool,tool3,
                         TMOP_Tool,tool4,
                         TAG_DONE};

struct TagItem dockti4[]={
                         TMOP_LeftEdge,300,
                         TMOP_TopEdge,300,
                         TMOP_Activated,TRUE,
                         TMOP_Centered,TRUE,
                         TMOP_Columns,2,
                         TMOP_FrontMost,TRUE,
                         TMOP_HotKey,"rcommand rshift g",
                         TMOP_Vertical,FALSE,
                         TMOP_Text,TRUE,
                         TMOP_Tool,tool1,
                         TMOP_Tool,tool2,
                         TMOP_Tool,tool3,
                         TMOP_Tool,tool4,
                         TAG_DONE};

struct TagItem dockti5[]={
                         TMOP_LeftEdge,450,
                         TMOP_TopEdge,200,
                         TMOP_Activated,TRUE,
                         TMOP_Centered,FALSE,
                         TMOP_PopUp,TRUE,
                         TMOP_Columns,2,
                         TMOP_FrontMost,TRUE,
                         TMOP_HotKey,"rcommand rshift h",
                         TMOP_Vertical,TRUE,
                         TMOP_Text,FALSE,
                         TMOP_Tool,tool1,
                         TMOP_Tool,tool2,
                         TMOP_Tool,tool3,
                         TMOP_Tool,tool4,
                         TAG_DONE};

struct TagItem dockti6[]={
                         TMOP_LeftEdge,450,
                         TMOP_TopEdge,300,
                         TMOP_Activated,TRUE,
                         TMOP_Centered,TRUE,
                         TMOP_PopUp,TRUE,
                         TMOP_Columns,2,
                         TMOP_FrontMost,TRUE,
                         TMOP_HotKey,"rcommand rshift i",
                         TMOP_Vertical,TRUE,
                         TMOP_Text,TRUE,
                         TMOP_Tool,tool1,
                         TMOP_Tool,tool2,
                         TMOP_Tool,tool3,
                         TMOP_Tool,tool4,
                         TAG_DONE};
#endif

int main(int argc, char *argv[])
{
 void *handle,*AllocTMHandle();

 if (handle=AllocTMHandle()) {
  printf("handle: 0x%08lx\n",handle);

  CreateTMObjectTagList(handle,"testexec1",TMOBJTYPE_EXEC,execti1);
  CreateTMObjectTagList(handle,"testexec2",TMOBJTYPE_EXEC,execti2);
  CreateTMObjectTagList(handle,"testexec3",TMOBJTYPE_EXEC,execti3);
  CreateTMObjectTagList(handle,"testimage1",TMOBJTYPE_IMAGE,imageti1);
  CreateTMObjectTagList(handle,"testimage2",TMOBJTYPE_IMAGE,imageti2);
  CreateTMObjectTagList(handle,"testimage3",TMOBJTYPE_IMAGE,imageti3);
  CreateTMObjectTagList(handle,"testimage4",TMOBJTYPE_IMAGE,imageti4);
/*  CreateTMObjectTagList(handle,"testsound1",TMOBJTYPE_SOUND,soundti1);
  CreateTMObjectTagList(handle,"testsound2",TMOBJTYPE_SOUND,soundti2);
  CreateTMObjectTagList(handle,"testmenu1",TMOBJTYPE_MENU,menuti1);
  CreateTMObjectTagList(handle,"testmenu2",TMOBJTYPE_MENU,menuti2);
  CreateTMObjectTagList(handle,"testmenu3",TMOBJTYPE_MENU,menuti3);
  CreateTMObjectTagList(handle,"testicon1",TMOBJTYPE_ICON,iconti1);
  CreateTMObjectTagList(handle,"testicon2",TMOBJTYPE_ICON,iconti2);
  CreateTMObjectTagList(handle,"testicon3",TMOBJTYPE_ICON,iconti3);
  CreateTMObjectTagList(handle,"testicon4",TMOBJTYPE_ICON,iconti4); */
  CreateTMObjectTagList(handle,"testdock1",TMOBJTYPE_DOCK,dockti1);
  CreateTMObjectTagList(handle,"testdock2",TMOBJTYPE_DOCK,dockti2);
/*  CreateTMObjectTagList(handle,"testdock3",TMOBJTYPE_DOCK,dockti3);
  CreateTMObjectTagList(handle,"testdock4",TMOBJTYPE_DOCK,dockti4);
  CreateTMObjectTagList(handle,"testdock5",TMOBJTYPE_DOCK,dockti5);
  CreateTMObjectTagList(handle,"testdock6",TMOBJTYPE_DOCK,dockti6); */

  Wait(0xF000);

  FreeTMHandle(handle);
 }
 exit(0);
}
