Hi,
I am trying to add a toolbar to the below program, the program started as clicktabexample.c and I am trying to add in functionality from imagebut.c.
I didn't get that far, can someone take a look at it please and post back.
Cheers
/* ************************************************************ ** ** Created by: CodeBench 0.13 (16.02.2010) ** ** Project: Smile ** ** File: ** ** Date: 04-04-2011 20:32:08 ** ************************************************************ */ #include <dos/dos.h> #include <exec/exec.h> #include <intuition/intuition.h> #include <classes/window.h> #include <images/bitmap.h> #include <gadgets/layout.h> #include <gadgets/clicktab.h> #include <gadgets/button.h> #include <proto/exec.h> #include <proto/intuition.h> #include <proto/window.h> #include <proto/layout.h> #include <proto/clicktab.h> #include <proto/bitmap.h> #include <reaction/reaction_macros.h> #define OBJ(x) Objects[x] #define GAD(x) (struct Gadget *)Objects[x] Object *win; struct MsgPort *AppPort; struct Screen *screen; enum { OBJ_TOPTABS, OBJ_TOOLBAR, OBJ_CLICKTAB_1, OBJ_CLICKTAB_2, OBJ_CLICKTAB_3, OBJ_QUIT, OBJ_NUM }; enum { OBJ_IBUT_1, OBJ_SEL, OBJ_UNSEL, OBJ_IBUT_2, OBJ_GHOST, OBJ_UNGHOST, }; Object *Objects[OBJ_NUM]; #define OBJ(x) Objects[x] #define GAD(x) (struct Gadget *)Objects[x] STRPTR TopTabs[] = {"Feeds", "Items", "Images", NULL}; STRPTR PageLabels_1[] = {"Required","Optional", "Extensions", "Advanced", NULL}; STRPTR PageLabels_2[] = {"Required","Optional", "Advanced", NULL}; STRPTR PageLabels_3[] = {"Image", "Editor", "Advanced",NULL}; struct Hook newprefshook; VOID prefshookfunc( struct Hook *me, APTR winobj, APTR reserved ) { IExec->DebugPrintF("new prefs hook called\n"); } Object * make_window(void) { /* create hook */ newprefshook.h_Entry = (HOOKFUNC)prefshookfunc; newprefshook.h_SubEntry = NULL; newprefshook.h_Data = NULL; Object *page1 = NULL, *page1a = NULL, *page1b = NULL, *page1c = NULL, *page1d = NULL, *page2 = NULL, *page2a = NULL, *page2b = NULL, *page2c = NULL, *page3 = NULL, *page3a = NULL, *page3b = NULL, *page3c = NULL; // Some CHILD_WeightedHeight tags have been left // out to demonstrate the effects of the tag. page1a = IIntuition->NewObject(NULL, "layout.gadget", LAYOUT_Orientation, LAYOUT_ORIENT_VERT, LAYOUT_AddChild, IIntuition->NewObject(NULL, "layout.gadget", LAYOUT_AddChild, IIntuition->NewObject(NULL, "button.gadget", GA_Text, "Button 1", TAG_DONE), LAYOUT_AddChild, IIntuition->NewObject(NULL, "button.gadget", GA_Text, "Button 2", TAG_DONE), TAG_DONE), CHILD_WeightedHeight, 0, TAG_DONE); page1b = IIntuition->NewObject(NULL, "layout.gadget", LAYOUT_Orientation, LAYOUT_ORIENT_VERT, LAYOUT_AddChild, IIntuition->NewObject(NULL, "layout.gadget", LAYOUT_AddChild, IIntuition->NewObject(NULL, "button.gadget", GA_Text, "Button 3", TAG_DONE), LAYOUT_AddChild, IIntuition->NewObject(NULL, "button.gadget", GA_Text, "Button 4", TAG_DONE), TAG_DONE), CHILD_WeightedHeight, 0, TAG_DONE); page1c = IIntuition->NewObject(NULL, "layout.gadget", LAYOUT_Orientation, LAYOUT_ORIENT_VERT, LAYOUT_AddChild, IIntuition->NewObject(NULL, "layout.gadget", LAYOUT_AddChild, IIntuition->NewObject(NULL, "button.gadget", GA_Text, "Button 5", TAG_DONE), LAYOUT_AddChild, IIntuition->NewObject(NULL, "button.gadget", GA_Text, "Button 6", TAG_DONE), TAG_DONE), CHILD_WeightedHeight, 0, TAG_DONE); page1d = IIntuition->NewObject(NULL, "layout.gadget", LAYOUT_Orientation, LAYOUT_ORIENT_VERT, LAYOUT_AddChild, IIntuition->NewObject(NULL, "layout.gadget", LAYOUT_AddChild, IIntuition->NewObject(NULL, "button.gadget", GA_Text, "Button 7", TAG_DONE), LAYOUT_AddChild, IIntuition->NewObject(NULL, "button.gadget", GA_Text, "Button 8", TAG_DONE), TAG_DONE), CHILD_WeightedHeight, 0, TAG_DONE); page1 = OBJ(OBJ_CLICKTAB_1) = IIntuition->NewObject(NULL, "clicktab.gadget", GA_Text, PageLabels_1, CLICKTAB_Current, 0, CLICKTAB_PageGroup, IIntuition->NewObject(NULL, "page.gadget", PAGE_Add, page1a, PAGE_Add, page1b, PAGE_Add, page1c, PAGE_Add, page1d, TAG_DONE), TAG_DONE); page2a = IIntuition->NewObject(NULL, "layout.gadget", LAYOUT_Orientation, LAYOUT_ORIENT_VERT, LAYOUT_AddChild, IIntuition->NewObject(NULL, "layout.gadget", LAYOUT_AddChild, IIntuition->NewObject(NULL, "button.gadget", GA_Text, "Button 9", TAG_DONE), LAYOUT_AddChild, IIntuition->NewObject(NULL, "button.gadget", GA_Text, "Button 10", TAG_DONE), TAG_DONE), CHILD_WeightedHeight, 0, TAG_DONE); page2b = IIntuition->NewObject(NULL, "layout.gadget", LAYOUT_Orientation, LAYOUT_ORIENT_VERT, LAYOUT_AddChild, IIntuition->NewObject(NULL, "layout.gadget", LAYOUT_AddChild, IIntuition->NewObject(NULL, "button.gadget", GA_Text, "Button 11", TAG_DONE), LAYOUT_AddChild, IIntuition->NewObject(NULL, "button.gadget", GA_Text, "Button 12", TAG_DONE), TAG_DONE), CHILD_WeightedHeight, 0, TAG_DONE); page2c = IIntuition->NewObject(NULL, "layout.gadget", LAYOUT_Orientation, LAYOUT_ORIENT_VERT, LAYOUT_AddChild, IIntuition->NewObject(NULL, "layout.gadget", LAYOUT_AddChild, IIntuition->NewObject(NULL, "button.gadget", GA_Text, "Button 13", TAG_DONE), LAYOUT_AddChild, IIntuition->NewObject(NULL, "button.gadget", GA_Text, "Button 14", TAG_DONE), TAG_DONE), CHILD_WeightedHeight, 0, TAG_DONE); page2 = OBJ(OBJ_CLICKTAB_2) = IIntuition->NewObject(NULL, "clicktab.gadget", GA_Text, PageLabels_2, CLICKTAB_Current, 0, CLICKTAB_PageGroup, IIntuition->NewObject(NULL, "page.gadget", PAGE_Add, page2a, PAGE_Add, page2b, PAGE_Add, page2c, TAG_DONE), TAG_DONE); page3a = IIntuition->NewObject(NULL, "layout.gadget", LAYOUT_Orientation, LAYOUT_ORIENT_VERT, LAYOUT_AddChild, IIntuition->NewObject(NULL, "layout.gadget", LAYOUT_AddChild, IIntuition->NewObject(NULL, "button.gadget", GA_Text, "Button 15", TAG_DONE), LAYOUT_AddChild, IIntuition->NewObject(NULL, "button.gadget", GA_Text, "Button 16", TAG_DONE), TAG_DONE), CHILD_WeightedHeight, 0, TAG_DONE); page3b = IIntuition->NewObject(NULL, "layout.gadget", LAYOUT_Orientation, LAYOUT_ORIENT_VERT, LAYOUT_AddChild, IIntuition->NewObject(NULL, "layout.gadget", LAYOUT_AddChild, IIntuition->NewObject(NULL, "button.gadget", GA_Text, "Button 17", TAG_DONE), LAYOUT_AddChild, IIntuition->NewObject(NULL, "button.gadget", GA_Text, "Button 18", TAG_DONE), TAG_DONE), CHILD_WeightedHeight, 0, TAG_DONE); page3c = IIntuition->NewObject(NULL, "layout.gadget", LAYOUT_Orientation, LAYOUT_ORIENT_VERT, LAYOUT_AddChild, IIntuition->NewObject(NULL, "layout.gadget", LAYOUT_AddChild, IIntuition->NewObject(NULL, "button.gadget", GA_Text, "Button 19", TAG_DONE), LAYOUT_AddChild, IIntuition->NewObject(NULL, "button.gadget", GA_Text, "Button 20", TAG_DONE), TAG_DONE), CHILD_WeightedHeight, 0, TAG_DONE); page3 = OBJ(OBJ_CLICKTAB_3) = IIntuition->NewObject(NULL, "clicktab.gadget", GA_Text, PageLabels_3, CLICKTAB_Current, 0, CLICKTAB_PageGroup, IIntuition->NewObject(NULL, "page.gadget", PAGE_Add, page3a, PAGE_Add, page3b, PAGE_Add, page3c, TAG_DONE), TAG_DONE); OBJ(OBJ_TOPTABS) = IIntuition->NewObject(NULL, "clicktab.gadget", GA_Text, TopTabs, CLICKTAB_Current, 0, CLICKTAB_PageGroup, IIntuition->NewObject(NULL, "page.gadget", PAGE_Add, page1, PAGE_Add, page2, PAGE_Add, page3, TAG_DONE), TAG_DONE); /* OBJ(OBJ_IBUT_1) = ButtonObject, BUTTON_BevelStyle, BVS_NONE, BUTTON_Transparent, TRUE, BUTTON_RenderImage, OBJ(OBJ_SEL) = BitMapObject, BITMAP_SourceFile, "tbimages:world", BITMAP_DisabledSourceFile, "tbimages:world_g", BITMAP_Screen, screen, BITMAP_Masking, TRUE, BitMapEnd, BUTTON_SelectImage, OBJ(OBJ_UNSEL) = BitMapObject, BITMAP_SourceFile, "tbimages:world_s", BITMAP_Screen, screen, BITMAP_Masking, TRUE, BitMapEnd, ButtonEnd; OBJ(OBJ_TOOLBAR) = (LAYOUT_AddChild, OBJ(OBJ_IBUT_1) ); // CHILD_WeightedWidth, 0, // CHILD_WeightedHeight, 0); */ return IIntuition->NewObject(NULL, "window.class", WA_ScreenTitle, "ReAction Example", WA_Title, "ClickTab Example", WA_DragBar, TRUE, WA_CloseGadget, TRUE, WA_SizeGadget, TRUE, WA_DepthGadget, TRUE, WA_Activate, TRUE, WINDOW_IconifyGadget, TRUE, WINDOW_IconTitle, "Iconified", WINDOW_AppPort, AppPort, WINDOW_NewPrefsHook, &newprefshook, WINDOW_Position, WPOS_CENTERSCREEN, WINDOW_Layout, IIntuition->NewObject(NULL, "layout.gadget", LAYOUT_Orientation, LAYOUT_ORIENT_VERT, // LAYOUT_AddChild, OBJ(OBJ_TOOLBAR), LAYOUT_AddChild, OBJ(OBJ_TOPTABS), LAYOUT_AddChild, IIntuition->NewObject(NULL, "button.gadget", GA_Text, "_Quit", GA_ID, OBJ_QUIT, GA_RelVerify, TRUE, TAG_DONE), CHILD_WeightedHeight, 0, TAG_DONE), TAG_DONE); } int main() { struct Window *window; if (screen=IIntuition->LockPubScreen(NULL)) { win = make_window(); if (window = RA_OpenWindow(win)) { uint32 sigmask = 0, siggot = 0, result = 0; uint16 code = 0, ghost = 0; BOOL done = FALSE; IIntuition->GetAttr(WINDOW_SigMask, win, &sigmask); } if (AppPort = IExec->AllocSysObjectTags(ASOT_PORT, TAG_DONE)) { if (window = (struct Window*)IIntuition->IDoMethod(win, WM_OPEN)) { uint32 sigmask = 0, siggot = 0, result = 0; uint16 code = 0; BOOL done = FALSE; IIntuition->GetAttr(WINDOW_SigMask, win, &sigmask); while (!done) { siggot = IExec->Wait(sigmask | SIGBREAKF_CTRL_C); if (siggot & SIGBREAKF_CTRL_C) done = TRUE; while ((result = IIntuition->IDoMethod(win, WM_HANDLEINPUT, &code))) { switch(result & WMHI_CLASSMASK) { case WMHI_CLOSEWINDOW: done = TRUE; break; case WMHI_GADGETUP: switch (result & WMHI_GADGETMASK) { case OBJ_QUIT: done=TRUE; break; } break; case WMHI_ICONIFY: if (IIntuition->IDoMethod(win, WM_ICONIFY)) window = NULL; break; case WMHI_UNICONIFY: window = (struct Window*)IIntuition->IDoMethod(win, WM_OPEN); break; } } } } if (win) IIntuition->DisposeObject(win); // if (OBJ(OBJ_UNGHOST)) IIntuition->DisposeObject(OBJ(OBJ_UNGHOST)); // if (OBJ(OBJ_GHOST)) IIntuition->DisposeObject(OBJ(OBJ_GHOST)); // if (OBJ(OBJ_UNSEL)) IIntuition->DisposeObject(OBJ(OBJ_UNSEL)); // if (OBJ(OBJ_SEL)) IIntuition->DisposeObject(OBJ(OBJ_SEL)); // IIntuition->UnlockPubScreen(NULL,screen); IExec->FreeSysObject(ASOT_PORT, AppPort); } } }