From e89072b3d025f3920a00ac25c6bbe29d749a0afb Mon Sep 17 00:00:00 2001 From: Chris Young Date: Sun, 25 Jan 2015 00:27:53 +0000 Subject: Open BOOPSI/ReAction classes using the new-style methods. Create some alternative NewObject macros and make some code use them. --- amiga/gui.c | 54 ++++++------ amiga/libs.c | 187 ++++++++++++++++++++++++++---------------- amiga/libs.h | 14 ++++ amiga/stringview/stringview.c | 5 +- 4 files changed, 161 insertions(+), 99 deletions(-) (limited to 'amiga') diff --git a/amiga/gui.c b/amiga/gui.c index ad70f2fbb..2fa1c5ef6 100644 --- a/amiga/gui.c +++ b/amiga/gui.c @@ -3643,19 +3643,19 @@ gui_window_create(struct browser_window *bw, ami_get_theme_filename(fave, "theme_fave", false); ami_get_theme_filename(unfave, "theme_unfave", false); - g->shared->objects[GID_FAVE_ADD] = BitMapObject, + g->shared->objects[GID_FAVE_ADD] = BitMapObj, BITMAP_SourceFile, fave, BITMAP_Screen, scrn, BITMAP_Masking, TRUE, BitMapEnd; - g->shared->objects[GID_FAVE_RMV] = BitMapObject, + g->shared->objects[GID_FAVE_RMV] = BitMapObj, BITMAP_SourceFile, unfave, BITMAP_Screen, scrn, BITMAP_Masking, TRUE, BitMapEnd; - g->shared->objects[GID_ADDTAB_BM] = BitMapObject, + g->shared->objects[GID_ADDTAB_BM] = BitMapObj, BITMAP_SourceFile, addtab, BITMAP_SelectSourceFile, addtab_s, BITMAP_DisabledSourceFile, addtab_g, @@ -3663,7 +3663,7 @@ gui_window_create(struct browser_window *bw, BITMAP_Masking, TRUE, BitMapEnd; - g->shared->objects[GID_CLOSETAB_BM] = BitMapObject, + g->shared->objects[GID_CLOSETAB_BM] = BitMapObj, BITMAP_SourceFile, closetab, BITMAP_SelectSourceFile, closetab_s, BITMAP_DisabledSourceFile, closetab_g, @@ -3697,7 +3697,7 @@ gui_window_create(struct browser_window *bw, } else { - g->shared->objects[GID_TABS_FLAG] = BitMapObject, + g->shared->objects[GID_TABS_FLAG] = BitMapObj, BITMAP_SourceFile, tabthrobber, BITMAP_Screen,scrn, BITMAP_Masking,TRUE, @@ -3706,7 +3706,7 @@ gui_window_create(struct browser_window *bw, LOG(("Creating window object")); - g->shared->objects[OID_MAIN] = WindowObject, + g->shared->objects[OID_MAIN] = WindowObj, #ifndef __amigaos4__ WA_Width, 100, WA_Height, 100, @@ -3742,16 +3742,16 @@ gui_window_create(struct browser_window *bw, WINDOW_BuiltInScroll, TRUE, WINDOW_GadgetHelp, TRUE, WINDOW_UserData, g->shared, - WINDOW_ParentGroup, g->shared->objects[GID_MAIN] = VGroupObject, + WINDOW_ParentGroup, g->shared->objects[GID_MAIN] = LayoutVObj, LAYOUT_SpaceOuter, TRUE, - LAYOUT_AddChild, g->shared->objects[GID_TOOLBARLAYOUT] = HGroupObject, + LAYOUT_AddChild, g->shared->objects[GID_TOOLBARLAYOUT] = LayoutHObj, LAYOUT_VertAlignment, LALIGN_CENTER, LAYOUT_AddChild, g->shared->objects[GID_BACK] = ButtonObject, GA_ID,GID_BACK, GA_RelVerify,TRUE, GA_Disabled,TRUE, GA_HintInfo, g->shared->helphints[GID_BACK], - BUTTON_RenderImage,BitMapObject, + BUTTON_RenderImage,BitMapObj, BITMAP_SourceFile,nav_west, BITMAP_SelectSourceFile,nav_west_s, BITMAP_DisabledSourceFile,nav_west_g, @@ -3766,7 +3766,7 @@ gui_window_create(struct browser_window *bw, GA_RelVerify,TRUE, GA_Disabled,TRUE, GA_HintInfo, g->shared->helphints[GID_FORWARD], - BUTTON_RenderImage,BitMapObject, + BUTTON_RenderImage,BitMapObj, BITMAP_SourceFile,nav_east, BITMAP_SelectSourceFile,nav_east_s, BITMAP_DisabledSourceFile,nav_east_g, @@ -3780,7 +3780,7 @@ gui_window_create(struct browser_window *bw, GA_ID,GID_STOP, GA_RelVerify,TRUE, GA_HintInfo, g->shared->helphints[GID_STOP], - BUTTON_RenderImage,BitMapObject, + BUTTON_RenderImage,BitMapObj, BITMAP_SourceFile,stop, BITMAP_SelectSourceFile,stop_s, BITMAP_DisabledSourceFile,stop_g, @@ -3794,7 +3794,7 @@ gui_window_create(struct browser_window *bw, GA_ID,GID_RELOAD, GA_RelVerify,TRUE, GA_HintInfo, g->shared->helphints[GID_RELOAD], - BUTTON_RenderImage,BitMapObject, + BUTTON_RenderImage,BitMapObj, BITMAP_SourceFile,reload, BITMAP_SelectSourceFile,reload_s, BITMAP_DisabledSourceFile,reload_g, @@ -3808,7 +3808,7 @@ gui_window_create(struct browser_window *bw, GA_ID,GID_HOME, GA_RelVerify,TRUE, GA_HintInfo, g->shared->helphints[GID_HOME], - BUTTON_RenderImage,BitMapObject, + BUTTON_RenderImage,BitMapObj, BITMAP_SourceFile,home, BITMAP_SelectSourceFile,home_s, BITMAP_DisabledSourceFile,home_g, @@ -3818,7 +3818,7 @@ gui_window_create(struct browser_window *bw, ButtonEnd, CHILD_WeightedWidth,0, CHILD_WeightedHeight,0, - LAYOUT_AddChild, HGroupObject, // FavIcon, URL bar and hotlist star + LAYOUT_AddChild, LayoutHObj, // FavIcon, URL bar and hotlist star LAYOUT_VertAlignment, LALIGN_CENTER, LAYOUT_AddChild, g->shared->objects[GID_ICON] = SpaceObject, GA_ID, GID_ICON, @@ -3853,7 +3853,7 @@ gui_window_create(struct browser_window *bw, // GA_RelVerify, TRUE, // LAYOUT_RelVerify, TRUE, LAYOUT_WeightBar, TRUE, - LAYOUT_AddChild, HGroupObject, + LAYOUT_AddChild, LayoutHObj, LAYOUT_VertAlignment, LALIGN_CENTER, LAYOUT_AddChild, g->shared->objects[GID_SEARCH_ICON] = ChooserObject, GA_ID, GID_SEARCH_ICON, @@ -3887,11 +3887,11 @@ gui_window_create(struct browser_window *bw, BEVEL_Style, BVS_SBAR_VERT, BevelEnd, CHILD_WeightedHeight, 0, - LAYOUT_AddChild, g->shared->objects[GID_HOTLISTLAYOUT] = VGroupObject, + LAYOUT_AddChild, g->shared->objects[GID_HOTLISTLAYOUT] = LayoutVObj, LAYOUT_SpaceInner, FALSE, LayoutEnd, CHILD_WeightedHeight,0, - LAYOUT_AddChild, g->shared->objects[GID_TABLAYOUT] = HGroupObject, + LAYOUT_AddChild, g->shared->objects[GID_TABLAYOUT] = LayoutHObj, LAYOUT_SpaceInner,FALSE, addtabclosegadget, g->shared->objects[GID_CLOSETAB], CHILD_WeightedWidth,0, @@ -3905,8 +3905,8 @@ gui_window_create(struct browser_window *bw, CHILD_WeightedHeight,0, LayoutEnd, CHILD_WeightedHeight,0, - LAYOUT_AddChild, g->shared->objects[GID_VSCROLLLAYOUT] = HGroupObject, - LAYOUT_AddChild, g->shared->objects[GID_HSCROLLLAYOUT] = VGroupObject, + LAYOUT_AddChild, g->shared->objects[GID_VSCROLLLAYOUT] = LayoutHObj, + LAYOUT_AddChild, g->shared->objects[GID_HSCROLLLAYOUT] = LayoutVObj, LAYOUT_AddChild, g->shared->objects[GID_BROWSER] = SpaceObject, GA_ID,GID_BROWSER, SPACE_Transparent,TRUE, @@ -3923,7 +3923,7 @@ gui_window_create(struct browser_window *bw, g->shared->tabs = 0; g->tab_node = NULL; - g->shared->objects[OID_MAIN] = WindowObject, + g->shared->objects[OID_MAIN] = WindowObj, WA_ScreenTitle, ami_gui_get_screen_title(), WA_Activate, TRUE, WA_DepthGadget, FALSE, @@ -3950,10 +3950,10 @@ gui_window_create(struct browser_window *bw, WINDOW_SharedPort,sport, WINDOW_UserData,g->shared, WINDOW_BuiltInScroll,TRUE, - WINDOW_ParentGroup, g->shared->objects[GID_MAIN] = HGroupObject, + WINDOW_ParentGroup, g->shared->objects[GID_MAIN] = LayoutHObj, LAYOUT_SpaceOuter, TRUE, - LAYOUT_AddChild, g->shared->objects[GID_VSCROLLLAYOUT] = HGroupObject, - LAYOUT_AddChild, g->shared->objects[GID_HSCROLLLAYOUT] = VGroupObject, + LAYOUT_AddChild, g->shared->objects[GID_VSCROLLLAYOUT] = LayoutHObj, + LAYOUT_AddChild, g->shared->objects[GID_HSCROLLLAYOUT] = LayoutVObj, LAYOUT_AddChild, g->shared->objects[GID_BROWSER] = SpaceObject, GA_ID,GID_BROWSER, SPACE_Transparent,TRUE, @@ -4907,7 +4907,7 @@ static nserror gui_search_web_provider_update(const char *provider_name, if(gwin->search_bm != NULL) DisposeObject(gwin->search_bm); - gwin->search_bm = BitMapObject, + gwin->search_bm = BitMapObj, BITMAP_Screen, scrn, BITMAP_Width, 16, BITMAP_Height, 16, @@ -5161,7 +5161,7 @@ Object *ami_gui_splash_open(void) struct TextAttr tattr; struct TextFont *tfont; - win_obj = WindowObject, + win_obj = WindowObj, #ifdef __amigaos4__ WA_ToolBox, TRUE, #else @@ -5173,8 +5173,8 @@ Object *ami_gui_splash_open(void) WINDOW_Position, WPOS_CENTERSCREEN, WINDOW_LockWidth, TRUE, WINDOW_LockHeight, TRUE, - WINDOW_ParentGroup, VGroupObject, - LAYOUT_AddImage, bm_obj = BitMapObject, + WINDOW_ParentGroup, LayoutVObj, + LAYOUT_AddImage, bm_obj = BitMapObj, BITMAP_SourceFile, "PROGDIR:Resources/splash.png", BITMAP_Screen, wbscreen, BITMAP_Precision, PRECISION_IMAGE, diff --git a/amiga/libs.c b/amiga/libs.c index b964d8f2f..6e9bcf9e0 100644 --- a/amiga/libs.c +++ b/amiga/libs.c @@ -24,13 +24,14 @@ #include "utils/log.h" #include +#include #include #ifdef __amigaos4__ #define AMINS_LIB_OPEN(LIB, LIBVER, PREFIX, INTERFACE, INTVER, FAIL) \ LOG(("Opening %s v%d", LIB, LIBVER)); \ - if((PREFIX##Base = OpenLibrary(LIB, LIBVER))) { \ - I##PREFIX = (struct PREFIX##IFace *)GetInterface(PREFIX##Base, INTERFACE, INTVER, NULL); \ + if((PREFIX##Base = (struct PREFIX##Base *)OpenLibrary(LIB, LIBVER))) { \ + I##PREFIX = (struct PREFIX##IFace *)GetInterface((struct Library *)PREFIX##Base, INTERFACE, INTVER, NULL); \ if(I##PREFIX == NULL) { \ LOG(("Failed to get %s interface v%d of %s", INTERFACE, INTVER, LIB)); \ } \ @@ -46,15 +47,41 @@ #define AMINS_LIB_CLOSE(PREFIX) \ if(I##PREFIX) DropInterface((struct Interface *)I##PREFIX); \ - if(PREFIX##Base) CloseLibrary(PREFIX##Base); + if(PREFIX##Base) CloseLibrary((struct Library *)PREFIX##Base); #define AMINS_LIB_STRUCT(PREFIX) \ - struct Library *PREFIX##Base; \ + struct PREFIX##Base *PREFIX##Base; \ struct PREFIX##IFace *I##PREFIX; + +#define AMINS_CLASS_OPEN(CLASS, CLASSVER, PREFIX, CLASSGET, NEEDINTERFACE) \ + LOG(("Opening %s v%d", CLASS, CLASSVER)); \ + if((PREFIX##Base = OpenClass(CLASS, CLASSVER, &PREFIX##Class))) { \ + if(NEEDINTERFACE == true) { \ + 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)); \ + } \ + } \ + } else { \ + STRPTR error = ASPrintf("Unable to open %s v%d (fatal error)", CLASS, CLASSVER); \ + ami_misc_fatal_error(error); \ + FreeVec(error); \ + return false; \ + } + +#define AMINS_CLASS_CLOSE(PREFIX) \ + if(I##PREFIX) DropInterface((struct Interface *)I##PREFIX); \ + if(PREFIX##Base) CloseClass(PREFIX##Base); + +#define AMINS_CLASS_STRUCT(PREFIX) \ + struct ClassLibrary *PREFIX##Base; \ + struct PREFIX##IFace *I##PREFIX; \ + Class *PREFIX##Class; + #else #define AMINS_LIB_OPEN(LIB, LIBVER, PREFIX, INTERFACE, INTVER, FAIL) \ LOG(("Opening %s v%d", LIB, LIBVER)); \ - if((PREFIX##Base = OpenLibrary(LIB, LIBVER))) { \ + if((PREFIX##Base = (struct PREFIX##Base *)OpenLibrary(LIB, LIBVER))) { \ } else { \ LOG(("Failed to open %s v%d", LIB, LIBVER)); \ if(FAIL == true) { \ @@ -69,7 +96,26 @@ if(PREFIX##Base) CloseLibrary(PREFIX##Base); #define AMINS_LIB_STRUCT(PREFIX) \ - struct Library *PREFIX##Base; + struct PREFIX##Base *PREFIX##Base; + +#define AMINS_CLASS_OPEN(CLASS, CLASSVER, PREFIX, CLASSGET, NEEDINTERFACE) \ + LOG(("Opening %s v%d", CLASS, CLASSVER)); \ + if((PREFIX##Base = (struct PREFIX##Base *)OpenLibrary(CLASS, CLASSVER))) { \ + PREFIX##Class = CLASSGET##_GetClass(); \ + } else { \ + STRPTR error = ASPrintf("Unable to open %s v%d (fatal error)", CLASS, CLASSVER); \ + ami_misc_fatal_error(error); \ + FreeVec(error); \ + return false; \ + } + +#define AMINS_CLASS_CLOSE(PREFIX) \ + if(PREFIX##Base) CloseLibrary((struct Library *)PREFIX##Base); + +#define AMINS_CLASS_STRUCT(PREFIX) \ + struct PREFIX##Base *PREFIX##Base; \ + Class *PREFIX##Class; + #endif #define GraphicsBase GfxBase /* graphics.library is a bit weird */ @@ -77,7 +123,7 @@ #ifdef __amigaos4__ AMINS_LIB_STRUCT(Application); #else -struct UtilityBase *UtilityBase; /* AMINS_LIB_STRUCT(Utility) */ +AMINS_LIB_STRUCT(Utility) #endif AMINS_LIB_STRUCT(Asl); AMINS_LIB_STRUCT(DataTypes); @@ -93,26 +139,26 @@ AMINS_LIB_STRUCT(Locale); AMINS_LIB_STRUCT(P96); AMINS_LIB_STRUCT(Workbench); -AMINS_LIB_STRUCT(ARexx); -AMINS_LIB_STRUCT(Bevel); -AMINS_LIB_STRUCT(BitMap); -AMINS_LIB_STRUCT(Chooser); -AMINS_LIB_STRUCT(CheckBox); -AMINS_LIB_STRUCT(ClickTab); -AMINS_LIB_STRUCT(FuelGauge); -AMINS_LIB_STRUCT(GetFile); -AMINS_LIB_STRUCT(GetFont); -AMINS_LIB_STRUCT(GetScreenMode); -AMINS_LIB_STRUCT(Integer); -AMINS_LIB_STRUCT(Label); -AMINS_LIB_STRUCT(Layout); -AMINS_LIB_STRUCT(ListBrowser); -AMINS_LIB_STRUCT(RadioButton); -AMINS_LIB_STRUCT(Scroller); -AMINS_LIB_STRUCT(Space); -AMINS_LIB_STRUCT(SpeedBar); -AMINS_LIB_STRUCT(String); -AMINS_LIB_STRUCT(Window); +AMINS_CLASS_STRUCT(ARexx); +AMINS_CLASS_STRUCT(Bevel); +AMINS_CLASS_STRUCT(BitMap); +AMINS_CLASS_STRUCT(Chooser); +AMINS_CLASS_STRUCT(CheckBox); +AMINS_CLASS_STRUCT(ClickTab); +AMINS_CLASS_STRUCT(FuelGauge); +AMINS_CLASS_STRUCT(GetFile); +AMINS_CLASS_STRUCT(GetFont); +AMINS_CLASS_STRUCT(GetScreenMode); +AMINS_CLASS_STRUCT(Integer); +AMINS_CLASS_STRUCT(Label); +AMINS_CLASS_STRUCT(Layout); +AMINS_CLASS_STRUCT(ListBrowser); +AMINS_CLASS_STRUCT(RadioButton); +AMINS_CLASS_STRUCT(Scroller); +AMINS_CLASS_STRUCT(Space); +AMINS_CLASS_STRUCT(SpeedBar); +AMINS_CLASS_STRUCT(String); +AMINS_CLASS_STRUCT(Window); bool ami_libs_open(void) @@ -154,57 +200,58 @@ bool ami_libs_open(void) */ /* BOOPSI classes. - * \todo These should be opened using OpenClass(), however as - * the macros all use the deprecated _GetClass() functions, - * we may as well just open them normally for now. + * Opened using class functions rather than the old-fashioned method. + * 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. */ - AMINS_LIB_OPEN("arexx.class", 44, ARexx, "main", 1, true) - AMINS_LIB_OPEN("images/bevel.image", 44, Bevel, "main", 1, true) - AMINS_LIB_OPEN("images/bitmap.image", 44, BitMap, "main", 1, true) - AMINS_LIB_OPEN("gadgets/checkbox.gadget", 44, CheckBox, "main", 1, true) - AMINS_LIB_OPEN("gadgets/chooser.gadget", 44, Chooser, "main", 1, true) - AMINS_LIB_OPEN("gadgets/clicktab.gadget", 44, ClickTab, "main", 1, true) - AMINS_LIB_OPEN("gadgets/fuelgauge.gadget", 44, FuelGauge, "main", 1, true) - AMINS_LIB_OPEN("gadgets/getfile.gadget", 44, GetFile, "main", 1, true) - AMINS_LIB_OPEN("gadgets/getfont.gadget", 44, GetFont, "main", 1, true) - AMINS_LIB_OPEN("gadgets/getscreenmode.gadget", 44, GetScreenMode, "main", 1, true) - AMINS_LIB_OPEN("gadgets/integer.gadget", 44, Integer, "main", 1, true) - AMINS_LIB_OPEN("images/label.image", 44, Label, "main", 1, true) - AMINS_LIB_OPEN("gadgets/layout.gadget", 44, Layout, "main", 1, true) - AMINS_LIB_OPEN("gadgets/listbrowser.gadget", 44, ListBrowser, "main", 1, true) - AMINS_LIB_OPEN("gadgets/radiobutton.gadget", 44, RadioButton, "main", 1, true) - AMINS_LIB_OPEN("gadgets/scroller.gadget", 44, Scroller, "main", 1, true) - AMINS_LIB_OPEN("gadgets/space.gadget", 44, Space, "main", 1, true) - AMINS_LIB_OPEN("gadgets/speedbar.gadget", 44, SpeedBar, "main", 1, true) - AMINS_LIB_OPEN("gadgets/string.gadget", 44, String, "main", 1, true) - AMINS_LIB_OPEN("window.class", 44, Window, "main", 1, true) + 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/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) + AMINS_CLASS_OPEN("gadgets/fuelgauge.gadget", 44, FuelGauge, FUELGAUGE, true) + AMINS_CLASS_OPEN("gadgets/getfile.gadget", 44, GetFile, GETFILE, true) + AMINS_CLASS_OPEN("gadgets/getfont.gadget", 44, GetFont, GETFONT, true) + AMINS_CLASS_OPEN("gadgets/getscreenmode.gadget", 44, GetScreenMode, GETSCREENMODE, true) + AMINS_CLASS_OPEN("gadgets/integer.gadget", 44, Integer, INTEGER, true) + AMINS_CLASS_OPEN("images/label.image", 44, Label, LABEL, true) + AMINS_CLASS_OPEN("gadgets/layout.gadget", 44, Layout, LAYOUT, true) + AMINS_CLASS_OPEN("gadgets/listbrowser.gadget", 44, ListBrowser, LISTBROWSER, false) + AMINS_CLASS_OPEN("gadgets/radiobutton.gadget", 44, RadioButton, RADIOBUTTON, true) + AMINS_CLASS_OPEN("gadgets/scroller.gadget", 44, Scroller, SCROLLER, true) + AMINS_CLASS_OPEN("gadgets/space.gadget", 44, Space, SPACE, true) + AMINS_CLASS_OPEN("gadgets/speedbar.gadget", 44, SpeedBar, SPEEDBAR, true) + AMINS_CLASS_OPEN("gadgets/string.gadget", 44, String, STRING, true) + AMINS_CLASS_OPEN("window.class", 44, Window, WINDOW, true) return true; } void ami_libs_close(void) { - AMINS_LIB_CLOSE(ARexx) - AMINS_LIB_CLOSE(Bevel) - AMINS_LIB_CLOSE(BitMap) - AMINS_LIB_CLOSE(CheckBox) - AMINS_LIB_CLOSE(Chooser) - AMINS_LIB_CLOSE(ClickTab) - AMINS_LIB_CLOSE(FuelGauge) - AMINS_LIB_CLOSE(GetFile) - AMINS_LIB_CLOSE(GetFont) - AMINS_LIB_CLOSE(GetScreenMode) - AMINS_LIB_CLOSE(Integer) - AMINS_LIB_CLOSE(Label) - AMINS_LIB_CLOSE(Layout) - AMINS_LIB_CLOSE(ListBrowser) - AMINS_LIB_CLOSE(RadioButton) - AMINS_LIB_CLOSE(Scroller) - AMINS_LIB_CLOSE(Space) - AMINS_LIB_CLOSE(SpeedBar) - AMINS_LIB_CLOSE(String) - AMINS_LIB_CLOSE(Window) + AMINS_CLASS_CLOSE(ARexx) + AMINS_CLASS_CLOSE(Bevel) + AMINS_CLASS_CLOSE(BitMap) + AMINS_CLASS_CLOSE(CheckBox) + AMINS_CLASS_CLOSE(Chooser) + AMINS_CLASS_CLOSE(ClickTab) + AMINS_CLASS_CLOSE(FuelGauge) + AMINS_CLASS_CLOSE(GetFile) + AMINS_CLASS_CLOSE(GetFont) + AMINS_CLASS_CLOSE(GetScreenMode) + AMINS_CLASS_CLOSE(Integer) + AMINS_CLASS_CLOSE(Label) + AMINS_CLASS_CLOSE(Layout) + AMINS_CLASS_CLOSE(ListBrowser) + AMINS_CLASS_CLOSE(RadioButton) + AMINS_CLASS_CLOSE(Scroller) + AMINS_CLASS_CLOSE(Space) + AMINS_CLASS_CLOSE(SpeedBar) + AMINS_CLASS_CLOSE(String) + AMINS_CLASS_CLOSE(Window) AMINS_LIB_CLOSE(Asl) AMINS_LIB_CLOSE(DataTypes) diff --git a/amiga/libs.h b/amiga/libs.h index 55e4799a4..1eb31f7db 100644 --- a/amiga/libs.h +++ b/amiga/libs.h @@ -18,7 +18,21 @@ #ifndef AMIGA_LIBS_H #include +#include +/* BOOPSI classes */ +extern Class *BitMapClass; +extern Class *LayoutClass; +extern Class *ListBrowserClass; +extern Class *WindowClass; + +/* New improved ReAction macros! */ +#define BitMapObj NewObject(BitMapClass, NULL +#define LayoutHObj NewObject(LayoutClass, NULL, LAYOUT_Orientation, LAYOUT_ORIENT_HORIZ +#define LayoutVObj NewObject(LayoutClass, NULL, LAYOUT_Orientation, LAYOUT_ORIENT_VERT +#define WindowObj NewObject(WindowClass, NULL + +/* Functions */ bool ami_libs_open(void); void ami_libs_close(void); #endif diff --git a/amiga/stringview/stringview.c b/amiga/stringview/stringview.c index a009f228a..a91047702 100755 --- a/amiga/stringview/stringview.c +++ b/amiga/stringview/stringview.c @@ -33,6 +33,7 @@ #include #include "amiga/os3support.h" +#include "amiga/libs.h" #include "stringview.h" #include "urlhistory.h" @@ -411,13 +412,13 @@ static uint32 myStringClass_OM_New( Class *cl, Object *obj, struct opSet *msg ) InitSemaphore( &data->Semaphore ); - data->WindowObject = NewObject( WINDOW_GetClass(), NULL, + data->WindowObject = NewObject( WindowClass, NULL, WA_Activate, FALSE, WA_Borderless, TRUE, WINDOW_ParentGroup, NewObject( LAYOUT_GetClass(), NULL, LAYOUT_SpaceInner, FALSE, LAYOUT_SpaceOuter, FALSE, - LAYOUT_AddChild, data->ListviewObject = NewObject( LISTBROWSER_GetClass(), NULL, + LAYOUT_AddChild, data->ListviewObject = NewObject( ListBrowserClass, NULL, LISTBROWSER_Labels, &data->ListviewHeader, LISTBROWSER_MakeVisible, TRUE, LISTBROWSER_ShowSelected, TRUE, -- cgit v1.2.3