home *** CD-ROM | disk | FTP | other *** search
- /* GadTools layout toolkit
- **
- ** Copyright © 1993-1995 by Olaf `Olsen' Barthel
- ** Freely distributable.
- */
-
- #include "gtlayout_global.h"
-
- ObjectNode * __regargs
- LTP_CreateObjectNode(LayoutHandle *handle,UBYTE type,ULONG id,STRPTR label)
- {
- ObjectNode *node;
- ULONG size,extra;
-
- switch(type)
- {
- #ifdef DO_GAUGE_KIND
-
- case GAUGE_KIND:
-
- extra = sizeof(GaugeExtra);
- break;
- #endif
-
- #ifdef DO_TAPEDECK_KIND
- case TAPEDECK_KIND:
-
- extra = sizeof(TapeDeckExtra);
- break;
- #endif /* DO_TAPEDECK_KIND */
-
- #ifdef DO_LEVEL_KIND
- case LEVEL_KIND:
-
- extra = sizeof(LevelExtra);
- break;
- #endif /* DO_LEVEL_KIND */
-
- case BUTTON_KIND:
-
- extra = sizeof(ButtonExtra);
- break;
-
- case XBAR_KIND:
- case YBAR_KIND:
-
- extra = sizeof(BarExtra);
- break;
-
- case BOX_KIND:
-
- extra = sizeof(BoxExtra);
- break;
-
- case FRAME_KIND:
-
- extra = sizeof(FrameExtra);
- break;
-
- case PICKER_KIND:
-
- extra = sizeof(PickerExtra);
- break;
-
- case INCREMENTER_KIND:
-
- extra = sizeof(IncrementerExtra);
- break;
-
- case LISTVIEW_KIND:
-
- extra = sizeof(ListExtra);
- break;
-
- case MX_KIND:
-
- extra = sizeof(RadioExtra);
- break;
-
- case TEXT_KIND:
-
- extra = sizeof(TextExtra);
- break;
-
- case NUMBER_KIND:
-
- extra = sizeof(NumberExtra);
- break;
-
- case CYCLE_KIND:
-
- extra = sizeof(CycleExtra);
- break;
-
- #if defined(DO_POPUP_KIND) && defined(DO_BOOPSI_KIND)
- case POPUP_KIND:
-
- extra = sizeof(PopupExtra);
- break;
- #endif
-
- #if defined(DO_TAB_KIND) && defined(DO_BOOPSI_KIND)
- case TAB_KIND:
-
- extra = sizeof(TabExtra);
- break;
- #endif
-
- case PALETTE_KIND:
-
- extra = sizeof(PalExtra);
- break;
-
- case SLIDER_KIND:
-
- extra = sizeof(SliderExtra);
- break;
-
- case SCROLLER_KIND:
-
- extra = sizeof(ScrollerExtra);
- break;
-
- case INTEGER_KIND:
-
- extra = sizeof(IntegerExtra);
- break;
-
- case FRACTION_KIND:
- case PASSWORD_KIND:
- case STRING_KIND:
-
- extra = sizeof(StringExtra);
- break;
-
- case HORIZONTAL_KIND:
- case VERTICAL_KIND:
-
- extra = sizeof(GroupExtra);
- break;
-
- #ifdef DO_BOOPSI_KIND
- case BOOPSI_KIND:
-
- extra = sizeof(BOOPSIExtra);
- break;
- #endif /* DO_BOOPSI_KIND */
-
- default:
-
- extra = 0;
- break;
- }
-
- size = offsetof(ObjectNode,Special) + extra;
-
- if(node = LTP_Alloc(handle,size))
- {
- node -> Type = type;
- node -> Label = label;
- node -> ID = id;
- node -> PointBack = node;
-
- switch(type)
- {
- case LISTVIEW_KIND:
-
- node -> LabelPlace = PLACE_ABOVE;
- node -> Lines = 1;
- node -> Current = ~0;
- node -> Special . List . LinkID = -1;
- node -> Special . List . AutoPageID = -1;
-
- break;
-
- case PASSWORD_KIND:
- case STRING_KIND:
-
- node -> Special . String . LayoutHandle = handle;
- node -> Special . String . LinkID = -1;
- node -> Special . String . MaxChars = 256;
-
- break;
-
- case INTEGER_KIND:
-
- node -> Special . Integer . LayoutHandle = handle;
- node -> Min = -2147483647;
- node -> Max = 2147483647;
- node -> Special . Integer . MaxChars = 11;
-
- break;
- #ifdef DO_BOOPSI_KIND
- case BOOPSI_KIND:
-
- node -> Special . BOOPSI . Link = NIL_LINK;
- break;
- #endif /* DO_BOOPSI_KIND */
-
- #ifdef DO_FRACTION_KIND
- case FRACTION_KIND:
-
- node -> Special . String . LayoutHandle = handle;
- node -> Special . String . LinkID = -1;
- node -> Max = 2147483647;
- node -> Special . String . MaxChars = 12;
-
- break;
- #endif
-
- #ifdef DO_TAPEDECK_KIND
- case TAPEDECK_KIND:
-
- node -> LabelPlace = PLACE_BELOW;
- break;
- #endif /* DO_TAPEDECK_KIND */
-
- case MX_KIND:
-
- node -> LabelPlace = PLACE_RIGHT;
- node -> Special . Radio . TitlePlace = PLACETEXT_LEFT;
- node -> Special . Radio . AutoPageID = -1;
-
- break;
- #if defined(DO_POPUP_KIND) && defined(DO_BOOPSI_KIND)
- case POPUP_KIND:
-
- node -> Special . Popup . AutoPageID = -1;
- break;
- #endif
-
- #if defined(DO_TAB_KIND) && defined(DO_BOOPSI_KIND)
- case TAB_KIND:
-
- node -> Special . Tab . AutoPageID = -1;
- break;
- #endif
- case CYCLE_KIND:
-
- node -> Special . Cycle . AutoPageID = -1;
- break;
-
- case SCROLLER_KIND:
-
- node -> Special . Scroller . Visible = 2;
- break;
-
- case SLIDER_KIND:
-
- node -> Special . Slider . LevelPlace = PLACETEXT_LEFT;
- node -> Special . Slider . LevelFormat = (LocaleBase && LocaleBase -> lb_SysPatches) ? "%lD" : "%ld";
-
- break;
-
- case FRAME_KIND:
-
- node -> Special . Frame . DrawBox = TRUE;
- break;
-
- case BOX_KIND:
-
- node -> Special . Box . DrawBox = TRUE;
- break;
-
- case HORIZONTAL_KIND:
-
- node -> Type = GROUP_KIND;
- node -> Special . Group . Horizontal = TRUE;
- break;
-
- case VERTICAL_KIND:
-
- node -> Type = GROUP_KIND;
- break;
- #ifdef DO_LEVEL_KIND
- case LEVEL_KIND:
-
- node -> Special . Level . LevelPlace = PLACETEXT_LEFT;
- node -> LabelPlace = PLACE_LEFT;
- node -> Special . Level . LevelFormat = (LocaleBase && LocaleBase -> lb_SysPatches) ? "%lD" : "%ld";
-
- break;
- #endif /* DO_LEVEL_KIND */
-
- #ifdef DO_GAUGE_KIND
- case GAUGE_KIND:
-
- node -> Special . Gauge . LastPercentage = -1;
- break;
- #endif /* DO_GAUGE_KIND */
- }
- }
-
- return(node);
- }
-