From c8c806a0c2b5dfaa2cf498631c6044baf43493f9 Mon Sep 17 00:00:00 2001 From: Chris Young Date: Sun, 25 Jan 2015 12:45:20 +0000 Subject: Convert the rest of gui.c to use class pointers directly Add missing button.gadget --- amiga/gui.c | 44 ++++++++++++++++++++++---------------------- amiga/libs.c | 15 ++++++++++++--- amiga/libs.h | 16 ++++++++++++++++ 3 files changed, 50 insertions(+), 25 deletions(-) diff --git a/amiga/gui.c b/amiga/gui.c index 392873636..05c0f1e8c 100644 --- a/amiga/gui.c +++ b/amiga/gui.c @@ -1517,7 +1517,7 @@ static bool ami_gui_hscroll_add(struct gui_window_2 *gwin) attrs[1].ti_Tag = TAG_DONE; attrs[1].ti_Data = 0; - gwin->objects[GID_HSCROLL] = ScrollerObject, + gwin->objects[GID_HSCROLL] = ScrollerObj, GA_ID, GID_HSCROLL, GA_RelVerify, TRUE, SCROLLER_Orientation, SORIENT_HORIZ, @@ -1559,7 +1559,7 @@ static bool ami_gui_vscroll_add(struct gui_window_2 *gwin) attrs[1].ti_Tag = TAG_DONE; attrs[1].ti_Data = 0; - gwin->objects[GID_VSCROLL] = ScrollerObject, + gwin->objects[GID_VSCROLL] = ScrollerObj, GA_ID, GID_VSCROLL, GA_RelVerify, TRUE, ICA_TARGET, ICTARGET_IDCMP, @@ -3148,7 +3148,7 @@ static void ami_gui_hotlist_toolbar_add(struct gui_window_2 *gwin) if(ami_gui_hotlist_scan(ami_tree_get_tree(hotlist_window), &gwin->hotlist_toolbar_list, gwin) > 0) { gwin->objects[GID_HOTLIST] = - SpeedBarObject, + SpeedBarObj, GA_ID, GID_HOTLIST, GA_RelVerify, TRUE, ICA_TARGET, ICTARGET_IDCMP, @@ -3157,7 +3157,7 @@ static void ami_gui_hotlist_toolbar_add(struct gui_window_2 *gwin) SpeedBarEnd; gwin->objects[GID_HOTLISTSEPBAR] = - BevelObject, + BevelObj, BEVEL_Style, BVS_SBAR_VERT, BevelEnd; @@ -3288,7 +3288,7 @@ static void ami_toggletabbar(struct gui_window_2 *gwin, bool show) attrs[2].ti_Tag = TAG_DONE; attrs[2].ti_Data = 0; - gwin->objects[GID_TABS] = ClickTabObject, + gwin->objects[GID_TABS] = ClickTabObj, GA_ID, GID_TABS, GA_RelVerify, TRUE, GA_Underscore, 13, // disable kb shortcuts @@ -3298,7 +3298,7 @@ static void ami_toggletabbar(struct gui_window_2 *gwin, bool show) CLICKTAB_FlagImage, gwin->objects[GID_TABS_FLAG], ClickTabEnd; - gwin->objects[GID_ADDTAB] = ButtonObject, + gwin->objects[GID_ADDTAB] = ButtonObj, GA_ID, GID_ADDTAB, GA_RelVerify, TRUE, GA_HintInfo, gwin->helphints[GID_ADDTAB], @@ -3674,13 +3674,13 @@ gui_window_create(struct browser_window *bw, if(ClickTabBase->lib_Version < 53) { addtabclosegadget = LAYOUT_AddChild; - g->shared->objects[GID_CLOSETAB] = ButtonObject, + g->shared->objects[GID_CLOSETAB] = ButtonObj, GA_ID, GID_CLOSETAB, GA_RelVerify, TRUE, BUTTON_RenderImage, g->shared->objects[GID_CLOSETAB_BM], ButtonEnd; - g->shared->objects[GID_TABS] = ClickTabObject, + g->shared->objects[GID_TABS] = ClickTabObj, GA_ID,GID_TABS, GA_RelVerify,TRUE, GA_Underscore,13, // disable kb shortcuts @@ -3688,7 +3688,7 @@ gui_window_create(struct browser_window *bw, CLICKTAB_LabelTruncate,TRUE, ClickTabEnd; - g->shared->objects[GID_ADDTAB] = ButtonObject, + g->shared->objects[GID_ADDTAB] = ButtonObj, GA_ID, GID_ADDTAB, GA_RelVerify, TRUE, GA_Text, "+", @@ -3746,7 +3746,7 @@ gui_window_create(struct browser_window *bw, LAYOUT_SpaceOuter, TRUE, LAYOUT_AddChild, g->shared->objects[GID_TOOLBARLAYOUT] = LayoutHObj, LAYOUT_VertAlignment, LALIGN_CENTER, - LAYOUT_AddChild, g->shared->objects[GID_BACK] = ButtonObject, + LAYOUT_AddChild, g->shared->objects[GID_BACK] = ButtonObj, GA_ID,GID_BACK, GA_RelVerify,TRUE, GA_Disabled,TRUE, @@ -3761,7 +3761,7 @@ gui_window_create(struct browser_window *bw, ButtonEnd, CHILD_WeightedWidth,0, CHILD_WeightedHeight,0, - LAYOUT_AddChild, g->shared->objects[GID_FORWARD] = ButtonObject, + LAYOUT_AddChild, g->shared->objects[GID_FORWARD] = ButtonObj, GA_ID,GID_FORWARD, GA_RelVerify,TRUE, GA_Disabled,TRUE, @@ -3776,7 +3776,7 @@ gui_window_create(struct browser_window *bw, ButtonEnd, CHILD_WeightedWidth,0, CHILD_WeightedHeight,0, - LAYOUT_AddChild, g->shared->objects[GID_STOP] = ButtonObject, + LAYOUT_AddChild, g->shared->objects[GID_STOP] = ButtonObj, GA_ID,GID_STOP, GA_RelVerify,TRUE, GA_HintInfo, g->shared->helphints[GID_STOP], @@ -3790,7 +3790,7 @@ gui_window_create(struct browser_window *bw, ButtonEnd, CHILD_WeightedWidth,0, CHILD_WeightedHeight,0, - LAYOUT_AddChild, g->shared->objects[GID_RELOAD] = ButtonObject, + LAYOUT_AddChild, g->shared->objects[GID_RELOAD] = ButtonObj, GA_ID,GID_RELOAD, GA_RelVerify,TRUE, GA_HintInfo, g->shared->helphints[GID_RELOAD], @@ -3804,7 +3804,7 @@ gui_window_create(struct browser_window *bw, ButtonEnd, CHILD_WeightedWidth,0, CHILD_WeightedHeight,0, - LAYOUT_AddChild, g->shared->objects[GID_HOME] = ButtonObject, + LAYOUT_AddChild, g->shared->objects[GID_HOME] = ButtonObj, GA_ID,GID_HOME, GA_RelVerify,TRUE, GA_HintInfo, g->shared->helphints[GID_HOME], @@ -3820,7 +3820,7 @@ gui_window_create(struct browser_window *bw, CHILD_WeightedHeight,0, LAYOUT_AddChild, LayoutHObj, // FavIcon, URL bar and hotlist star LAYOUT_VertAlignment, LALIGN_CENTER, - LAYOUT_AddChild, g->shared->objects[GID_ICON] = SpaceObject, + LAYOUT_AddChild, g->shared->objects[GID_ICON] = SpaceObj, GA_ID, GID_ICON, SPACE_MinWidth, 16, SPACE_MinHeight, 16, @@ -3840,7 +3840,7 @@ gui_window_create(struct browser_window *bw, STRINGVIEW_Header, URLHistory_GetList(), TAG_DONE), - LAYOUT_AddChild, g->shared->objects[GID_FAVE] = ButtonObject, + LAYOUT_AddChild, g->shared->objects[GID_FAVE] = ButtonObj, GA_ID, GID_FAVE, GA_RelVerify, TRUE, // GA_HintInfo, g->shared->helphints[GID_FAVE], @@ -3855,7 +3855,7 @@ gui_window_create(struct browser_window *bw, LAYOUT_WeightBar, TRUE, LAYOUT_AddChild, LayoutHObj, LAYOUT_VertAlignment, LALIGN_CENTER, - LAYOUT_AddChild, g->shared->objects[GID_SEARCH_ICON] = ChooserObject, + LAYOUT_AddChild, g->shared->objects[GID_SEARCH_ICON] = ChooserObj, GA_ID, GID_SEARCH_ICON, GA_RelVerify, TRUE, CHOOSER_DropDown, TRUE, @@ -3864,7 +3864,7 @@ gui_window_create(struct browser_window *bw, ChooserEnd, CHILD_WeightedWidth,0, CHILD_WeightedHeight,0, - LAYOUT_AddChild, g->shared->objects[GID_SEARCHSTRING] =StringObject, + LAYOUT_AddChild, g->shared->objects[GID_SEARCHSTRING] = StringObj, GA_ID,GID_SEARCHSTRING, STRINGA_TextVal, NULL, GA_RelVerify,TRUE, @@ -3872,7 +3872,7 @@ gui_window_create(struct browser_window *bw, StringEnd, LayoutEnd, CHILD_WeightedWidth, nsoption_int(web_search_width), - LAYOUT_AddChild, g->shared->objects[GID_THROBBER] = SpaceObject, + LAYOUT_AddChild, g->shared->objects[GID_THROBBER] = SpaceObj, GA_ID,GID_THROBBER, SPACE_MinWidth,throbber_width, SPACE_MinHeight,throbber_height, @@ -3883,7 +3883,7 @@ gui_window_create(struct browser_window *bw, CHILD_WeightedHeight,0, LayoutEnd, CHILD_WeightedHeight,0, - LAYOUT_AddImage, BevelObject, + LAYOUT_AddImage, BevelObj, BEVEL_Style, BVS_SBAR_VERT, BevelEnd, CHILD_WeightedHeight, 0, @@ -3907,7 +3907,7 @@ gui_window_create(struct browser_window *bw, CHILD_WeightedHeight,0, LAYOUT_AddChild, g->shared->objects[GID_VSCROLLLAYOUT] = LayoutHObj, LAYOUT_AddChild, g->shared->objects[GID_HSCROLLLAYOUT] = LayoutVObj, - LAYOUT_AddChild, g->shared->objects[GID_BROWSER] = SpaceObject, + LAYOUT_AddChild, g->shared->objects[GID_BROWSER] = SpaceObj, GA_ID,GID_BROWSER, SPACE_Transparent,TRUE, SpaceEnd, @@ -3954,7 +3954,7 @@ gui_window_create(struct browser_window *bw, LAYOUT_SpaceOuter, TRUE, LAYOUT_AddChild, g->shared->objects[GID_VSCROLLLAYOUT] = LayoutHObj, LAYOUT_AddChild, g->shared->objects[GID_HSCROLLLAYOUT] = LayoutVObj, - LAYOUT_AddChild, g->shared->objects[GID_BROWSER] = SpaceObject, + LAYOUT_AddChild, g->shared->objects[GID_BROWSER] = SpaceObj, GA_ID,GID_BROWSER, SPACE_Transparent,TRUE, SpaceEnd, diff --git a/amiga/libs.c b/amiga/libs.c index 42597f6ef..b6b3eac47 100644 --- a/amiga/libs.c +++ b/amiga/libs.c @@ -81,6 +81,7 @@ LOG(("Opening %s v%d", CLASS, CLASSVER)); \ if((PREFIX##Base = OpenClass(CLASS, CLASSVER, &PREFIX##Class))) { \ if(NEEDINTERFACE == true) { \ + LOG((" + interface")); \ I##PREFIX = (struct PREFIX##IFace *)GetInterface((struct Library *)PREFIX##Base, "main", 1, NULL); \ if(I##PREFIX == NULL) { \ LOG(("Failed to get main interface v1 of %s", CLASS)); \ @@ -99,9 +100,9 @@ if(PREFIX##Base) CloseClass(PREFIX##Base); #define AMINS_CLASS_STRUCT(PREFIX) \ - struct ClassLibrary *PREFIX##Base; \ - struct PREFIX##IFace *I##PREFIX; \ - Class *PREFIX##Class; + struct ClassLibrary *PREFIX##Base = NULL; \ + struct PREFIX##IFace *I##PREFIX = NULL; \ + Class *PREFIX##Class = NULL; #else #define AMINS_LIB_OPEN(LIB, LIBVER, PREFIX, INTERFACE, INTVER, FAIL) \ @@ -168,6 +169,7 @@ AMINS_LIB_STRUCT(Workbench); AMINS_CLASS_STRUCT(ARexx); AMINS_CLASS_STRUCT(Bevel); AMINS_CLASS_STRUCT(BitMap); +AMINS_CLASS_STRUCT(Button); AMINS_CLASS_STRUCT(Chooser); AMINS_CLASS_STRUCT(CheckBox); AMINS_CLASS_STRUCT(ClickTab); @@ -230,11 +232,13 @@ bool ami_libs_open(void) * We get the class pointer once and used our stored copy. * NB: the last argument needs to be "true" whilst we still have old macros * lying around, and then "false" unless the class also has library functions. + * On OS4 these must be opened *after* intuition.library. */ AMINS_CLASS_OPEN("arexx.class", 44, ARexx, AREXX, true) AMINS_CLASS_OPEN("images/bevel.image", 44, Bevel, BEVEL, true) AMINS_CLASS_OPEN("images/bitmap.image", 44, BitMap, BITMAP, true) + AMINS_CLASS_OPEN("gadgets/button.gadget", 44, Button, BUTTON, true) AMINS_CLASS_OPEN("gadgets/checkbox.gadget", 44, CheckBox, CHECKBOX, true) AMINS_CLASS_OPEN("gadgets/chooser.gadget", 44, Chooser, CHOOSER, true) AMINS_CLASS_OPEN("gadgets/clicktab.gadget", 44, ClickTab, CLICKTAB, true) @@ -258,9 +262,13 @@ bool ami_libs_open(void) void ami_libs_close(void) { + /* BOOPSI Classes. + * On OS4 these must be closed *before* intuition.library + */ AMINS_CLASS_CLOSE(ARexx) AMINS_CLASS_CLOSE(Bevel) AMINS_CLASS_CLOSE(BitMap) + AMINS_CLASS_CLOSE(Button) AMINS_CLASS_CLOSE(CheckBox) AMINS_CLASS_CLOSE(Chooser) AMINS_CLASS_CLOSE(ClickTab) @@ -279,6 +287,7 @@ void ami_libs_close(void) AMINS_CLASS_CLOSE(String) AMINS_CLASS_CLOSE(Window) + /* Libraries */ AMINS_LIB_CLOSE(Asl) AMINS_LIB_CLOSE(DataTypes) AMINS_LIB_CLOSE(Diskfont) diff --git a/amiga/libs.h b/amiga/libs.h index 1eb31f7db..c80c61e73 100644 --- a/amiga/libs.h +++ b/amiga/libs.h @@ -21,15 +21,31 @@ #include /* BOOPSI classes */ +extern Class *BevelClass; extern Class *BitMapClass; +extern Class *ButtonClass; +extern Class *ChooserClass; +extern Class *ClickTabClass; extern Class *LayoutClass; extern Class *ListBrowserClass; +extern Class *ScrollerClass; +extern Class *SpaceClass; +extern Class *SpeedBarClass; +extern Class *StringClass; extern Class *WindowClass; /* New improved ReAction macros! */ +#define BevelObj NewObject(BevelClass, NULL #define BitMapObj NewObject(BitMapClass, NULL +#define ButtonObj NewObject(ButtonClass, NULL +#define ChooserObj NewObject(ChooserClass, NULL +#define ClickTabObj NewObject(ClickTabClass, NULL #define LayoutHObj NewObject(LayoutClass, NULL, LAYOUT_Orientation, LAYOUT_ORIENT_HORIZ #define LayoutVObj NewObject(LayoutClass, NULL, LAYOUT_Orientation, LAYOUT_ORIENT_VERT +#define ScrollerObj NewObject(ScrollerClass, NULL +#define SpaceObj NewObject(SpaceClass, NULL +#define SpeedBarObj NewObject(ScrollerClass, NULL +#define StringObj NewObject(StringClass, NULL #define WindowObj NewObject(WindowClass, NULL /* Functions */ -- cgit v1.2.3