ULONG POPUPMENU_NEW_Gadget(piClass *cl,piObject *o,struct piSet *msg) { struct Node_Gadget *ng; piObject *obj; struct TagItem ti[]={ GAOBJ_Type,GTYPE_BOOPSI, GAOBJ_NumTags,GSIZE_NUMTAGS, GAOBJ_NumOwnTags,GSIZE_NUMOWNTAGS, GAOBJ_TagTypes,(ULONG)PopUpMenuTagsTypes, GAOBJ_OwnTagTypes,(ULONG)PopUpMenuOwnTagsTypes, GAOBJ_ID,POPUPMENU_ID, OBJ_Properties,(ULONG)PAGES_PROPERTIES_PG_PUPM_PAGES, GAOBJLIST_List,1, GAOBJLIST_Active,2, GAOBJLIST_Tags,0, TAG_DONE}; if(obj=(piObject *)piDoSuperMethod(cl,o,OM_NEW,ti)) { ng=(struct Node_Gadget *)OBJECT_DATA(obj); CopyTagItems(PopUpMenuTags,ng->ng_Tags,ng->ng_NumTags); CopyTagItems(PopUpMenuOwnTags,ng->ng_OwnTags,ng->ng_NumOwnTags); FindTagItem(PUMG_Labels,ng->ng_Tags)->ti_Data=(ULONG)MyAllocVec(sizeof(struct List),MEMF_PUBLIC); NewList(List(FindTagItem(PUMG_Labels,ng->ng_Tags)->ti_Data)); return (ULONG)obj; } return FALSE; }
int FN_ChangeWindow_TB_Pointer() { GUI.gui_Prefs->pr_WinPos[WIN_TOOLBAR_IMAGE].X=TB_PointerWnd->LeftEdge; GUI.gui_Prefs->pr_WinPos[WIN_TOOLBAR_IMAGE].Y=TB_PointerWnd->TopEdge; FindTagItem(WA_Left,(struct TagItem *)TB_PointerWTags)->ti_Data=GUI.gui_Prefs->pr_WinPos[WIN_TOOLBAR_IMAGE].X; FindTagItem(WA_Top,(struct TagItem *)TB_PointerWTags)->ti_Data=GUI.gui_Prefs->pr_WinPos[WIN_TOOLBAR_IMAGE].Y; return 1; }
ULONG TAPEDECK_APPLY_Gadget(piClass *cl,piObject *o,Msg msg) { struct Node_Gadget *ng; piGetAttr(o,OBJ_Node,(ULONG *)&ng); piDoSuperMethodA(cl,o,msg); FindTagItem(TDECK_Frames,ng->ng_Tags)->ti_Data=GetInteger(PG_TDEK_FlagsGadgets[GD_PG_TDEK_FLAGS_FRAMES]); FindTagItem(TDECK_CurrentFrame,ng->ng_Tags)->ti_Data=GetInteger(PG_TDEK_FlagsGadgets[GD_PG_TDEK_FLAGS_CURRENT]); return TRUE; }
ULONG TEXT_APPLY_Gadget(piClass *cl,piObject *o,Msg msg) { struct Node_Gadget *ng; piGetAttr(o,OBJ_Node,(ULONG *)&ng); piDoSuperMethodA(cl,o,msg); if(FindTagItem(GTTX_Text,ng->ng_Tags)->ti_Data) MyFreeVec((APTR)FindTagItem(GTTX_Text,ng->ng_Tags)->ti_Data); FindTagItem(GTTX_Text,ng->ng_Tags)->ti_Data=NULL; if(FindTagItem(GTTX_Text,ng->ng_Tags)->ti_Data=(ULONG)MyAllocVec(strlen(GetString(PG_TEXT_FlagsGadgets[GD_PG_TEXT_FLAGS_DEFAULT]))+1,MEMF_PUBLIC)) strcpy((char *)((struct TagItem *)FindTagItem(GTTX_Text,ng->ng_Tags)->ti_Data),GetString(PG_TEXT_FlagsGadgets[GD_PG_TEXT_FLAGS_DEFAULT])); return TRUE; }
int FN_PG_TEXT_FLAGS_JUSTIFICATION_Clicked( void ) { struct TagItem *ti; piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); switch(PropertiesMsg.Code) { case 0: FindTagItem(GTTX_Justification,ti)->ti_Data=GTJ_LEFT; break; case 1: FindTagItem(GTTX_Justification,ti)->ti_Data=GTJ_RIGHT; break; case 2: FindTagItem(GTTX_Justification,ti)->ti_Data=GTJ_CENTER; break; } PropertiesChanged=TRUE; FN_PROPERTIES_APPLY_Clicked(); return 1; }
int FN_PG_PALT_FLAGS_TYPE_Clicked( void ) { UBYTE old; struct TagItem *ti,*oti; piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); piGetAttr(CurrentGadget,GAOBJ_OwnTags,(ULONG *)&oti); old=FindTagItem(OWNTAG_Color,oti)->ti_Data; FindTagItem(OWNTAG_Color,oti)->ti_Data=PropertiesMsg.Code; switch(PropertiesMsg.Code) { case 0: ti[1].ti_Tag=TAG_IGNORE; ti[2].ti_Tag=GTPA_Depth; if(old==1) { switch(ti[1].ti_Data) { case 256: ti[2].ti_Data=8; break; case 128: ti[2].ti_Data=7; break; case 64: ti[2].ti_Data=6; break; case 32: ti[2].ti_Data=5; break; case 16: ti[2].ti_Data=4; break; case 8: ti[2].ti_Data=3; break; case 4: ti[2].ti_Data=2; break; case 2: ti[2].ti_Data=1; break; } } SetInteger(PropertiesWnd,PG_PALT_FlagsGadgets[GD_PG_PALT_FLAGS_COLOR],GetTagData(GTPA_Depth,0,ti)); DisableGadget(PG_PALT_FlagsGadgets[GD_PG_PALT_FLAGS_COLOR],PropertiesWnd,FALSE); break; case 1: ti[1].ti_Tag=GTPA_NumColors; ti[2].ti_Tag=TAG_IGNORE; if(old!=PropertiesMsg.Code) ti[1].ti_Data=2<<(ti[2].ti_Data-1); SetInteger(PropertiesWnd,PG_PALT_FlagsGadgets[GD_PG_PALT_FLAGS_COLOR],GetTagData(GTPA_NumColors,0,ti)); DisableGadget(PG_PALT_FlagsGadgets[GD_PG_PALT_FLAGS_COLOR],PropertiesWnd,FALSE); break; case 2: ti[1].ti_Tag=TAG_IGNORE; ti[2].ti_Tag=GTPA_Depth; DisableGadget(PG_PALT_FlagsGadgets[GD_PG_PALT_FLAGS_COLOR],PropertiesWnd,TRUE); break; } PropertiesChanged=TRUE; FN_PROPERTIES_APPLY_Clicked(); return 1; }
ULONG NUMBER_READ_Gadget(piClass *cl,piObject *o,struct piIO *msg) { if(CurrentChunk(msg->IFFh)->cn_Type==ID_GXGA && CurrentChunk(msg->IFFh)->cn_ID==ID_GADA) { struct TagItem *ti,*oti,tag,*sti; struct Node_Gadget *ng; int a; piGetAttr(o,GAOBJ_Tags,(ULONG *)&ti); piGetAttr(o,GAOBJ_OwnTags,(ULONG *)&oti); piGetAttr(o,OBJ_Node,(ULONG *)&ng); for(a=0;a<ng->ng_Type-1;a++) { ReadChunkBytes(msg->IFFh,(APTR)&tag,sizeof(struct TagItem)); switch(tag.ti_Tag) { case GTNM_Format: break; default: if(sti=FindTagItem(tag.ti_Tag,ti)) sti->ti_Data=tag.ti_Data; break; } } return 0; } else return piDoSuperMethodA(cl,o,(Msg)msg); }
int FN_PG_PALT_FLAGS_SHOWSELECTED_Clicked( void ) { struct TagItem *ti,*oti; piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); piGetAttr(CurrentGadget,GAOBJ_OwnTags,(ULONG *)&oti); FindTagItem(OWNTAG_ShowSelected,oti)->ti_Data=PropertiesMsg.Code; switch(PropertiesMsg.Code) { case 0: ti[3].ti_Tag=TAG_IGNORE; ti[4].ti_Tag=TAG_IGNORE; DisableGadget(PG_PALT_FlagsGadgets[GD_PG_PALT_FLAGS_SHOWSELECTED_VAR],PropertiesWnd,TRUE); break; case 1: ti[3].ti_Tag=GTPA_IndicatorWidth; ti[4].ti_Tag=TAG_IGNORE; DisableGadget(PG_PALT_FlagsGadgets[GD_PG_PALT_FLAGS_SHOWSELECTED_VAR],PropertiesWnd,FALSE); break; case 2: ti[3].ti_Tag=TAG_IGNORE; ti[4].ti_Tag=GTPA_IndicatorHeight; DisableGadget(PG_PALT_FlagsGadgets[GD_PG_PALT_FLAGS_SHOWSELECTED_VAR],PropertiesWnd,FALSE); break; } PropertiesChanged=TRUE; FN_PROPERTIES_APPLY_Clicked(); return 1; }
int FN_PG_PUPM_FLAGS_NEWLOOK_Clicked( void ) { struct TagItem *ti; piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); FindTagItem(PUMG_NewLook,ti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; PropertiesChanged=TRUE; FN_PROPERTIES_APPLY_Clicked(); return 1; }
static ULONG MUIPC_LButton__OM_SET(struct IClass *CLASS,Object *self,struct opSet *message) { struct MiamiPanelLButtonClass_DATA *data = INST_DATA(CLASS,self); struct TagItem *tag; if (tag = FindTagItem(MPA_LButton_State,message->ops_AttrList)) { UBYTE *text; ULONG color, dis; switch (tag->ti_Data) { case MIAMIPANELV_AddInterface_State_GoingOnline: color = MUIV_Lamp_Color_Error; text = offs; dis = FALSE; break; case MIAMIPANELV_AddInterface_State_GoingOffline: color = MUIV_Lamp_Color_Warning; text = ons; dis = TRUE; break; case MIAMIPANELV_AddInterface_State_Suspending: color = MUIV_Lamp_Color_FatalError; text = NULL; dis = TRUE; break; case MIAMIPANELV_AddInterface_State_Online: color = MUIV_Lamp_Color_Ok; text = offs; dis = FALSE; break; case MIAMIPANELV_AddInterface_State_Suspended: color = MUIV_Lamp_Color_Processing; text = NULL; dis = TRUE; break; default: color = MUIV_Lamp_Color_Off; text = ons; dis = FALSE; break; } if (data->lamp) set(data->lamp,MUIA_Lamp_Color,color); if (text) set(data->text,MUIA_Text_Contents,text); SetSuperAttrs(CLASS,self,MUIA_Disabled,dis,TAG_DONE); } return DoSuperMethodA(CLASS,self,(Msg)message); }
int FN_PG_STRG_FLAGS_TABCYCLE_Clicked( void ) { struct TagItem *ti; piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); FindTagItem(GA_TabCycle,ti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; PropertiesChanged=TRUE; FN_PROPERTIES_APPLY_Clicked(); return 1; }
int FN_PG_STRG_FLAGS_REPLACEMODE_Clicked( void ) { struct TagItem *ti; piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); FindTagItem(STRINGA_ReplaceMode,ti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; PropertiesChanged=TRUE; FN_PROPERTIES_APPLY_Clicked(); return 1; }
STATIC ULONG SingleString_Set(struct IClass *cl,Object *obj, struct opSet *msg) { struct SingleString_Data *data = (struct SingleString_Data*)INST_DATA(cl,obj); struct TagItem *ti = FindTagItem(MUIA_SingleString_Event,msg->ops_AttrList); if (ti) data->event = ti->ti_Data; return DoSuperMethodA(cl,obj,(Msg)msg); }
int FN_PG_NUMB_FLAGS_BORDER_Clicked( void ) { struct TagItem *ti; piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); FindTagItem(GTNM_Border,ti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; PropertiesChanged=TRUE; FN_PROPERTIES_APPLY_Clicked(); return 1; }
int FN_PG_TEXT_FLAGS_DISABLED_Clicked( void ) { struct TagItem *ti; piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); FindTagItem(GA_Disabled,ti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; PropertiesChanged=TRUE; FN_PROPERTIES_APPLY_Clicked(); return 1; }
xadUINT32 GetTagData(xadTag tagValue, xadUINT32 defVal, xadTAGPTR tagList) { xadTAGPTR ti; if(tagList == NULL) return defVal; if((ti = FindTagItem(tagValue, tagList)) == NULL) return defVal; return ti->ti_Data; }
IPTR MenuBarLabelClass__OM_SET(Class *cl, struct Image *im, struct opSet *msg) { struct TagItem *ti; if ((ti = FindTagItem(SYSIA_DrawInfo, msg->ops_AttrList))) { struct MenuBarLabelData *data = INST_DATA(cl, im); data->dri = (struct DrawInfo *)ti->ti_Data; } return DoSuperMethodA(cl, (Object *)im, (Msg)msg); }
ULONG POPUPMENU_DISPOSE_Gadget(piClass *cl,piObject *o,Msg msg) { struct TagItem *ti; struct List *l; struct Node *n; piGetAttr(o,GAOBJ_Tags,(ULONG *)&ti); l=(struct List *)FindTagItem(PUMG_Labels,ti)->ti_Data; while(n=RemTail(l)) { if(n->ln_Name) MyFreeVec(n->ln_Name); MyFreeVec(n); } MyFreeVec(l); return piDoSuperMethodA(cl,o,msg); }
static IPTR mLampSets(struct IClass *cl, Object *obj, struct opSet *msg) { struct lampData *data = INST_DATA(cl,obj); struct TagItem *tag; if((tag = FindTagItem(MUIA_Lamp_Disabled,msg->ops_AttrList))) { if (tag->ti_Data) SET_FLAG(data->flags, FLG_LampDisabled); else CLEAR_FLAG(data->flags, FLG_LampDisabled); /* Of course, we don't redraw here */ } return DoSuperMethodA(cl,obj,(Msg)msg); }
void ApplyTagChanges (TagItem *list, TagItem *changeList) { TagItem *ti_list = NULL; /* TagItem from the tagList */ TagItem *ti_change = NULL; /* TagItem from the changeList */ TagItem *tl_copy = changeList; /* copy of changeList pointer */ if (list || changeList) return; while ((ti_change = NextTagItem(&tl_copy)) != NULL) { ti_list = FindTagItem(ti_change->ti_Tag, list); if (!ti_list) continue; ti_list->ti_Data = ti_change->ti_Data; } return; }
ULONG NUMBER_APPLY_Gadget(piClass *cl,piObject *o,Msg msg) { struct Node_Gadget *ng; piGetAttr(o,OBJ_Node,(ULONG *)&ng); piDoSuperMethodA(cl,o,msg); FindTagItem(GTNM_Number,ng->ng_Tags)->ti_Data=GetInteger(PG_NUMB_FlagsGadgets[GD_PG_NUMB_FLAGS_DEFAULT]); FindTagItem(GTNM_MaxNumberLen,ng->ng_Tags)->ti_Data=GetInteger(PG_NUMB_FlagsGadgets[GD_PG_NUMB_FLAGS_MAXNUMLEN]); if(FindTagItem(GTNM_Format,ng->ng_Tags)->ti_Data) MyFreeVec((APTR)FindTagItem(GTNM_Format,ng->ng_Tags)->ti_Data); FindTagItem(GTNM_Format,ng->ng_Tags)->ti_Data=NULL; if(FindTagItem(GTNM_Format,ng->ng_Tags)->ti_Data=(ULONG)MyAllocVec(strlen(GetString(PG_NUMB_FlagsGadgets[GD_PG_NUMB_FLAGS_FORMAT]))+1,MEMF_PUBLIC)) strcpy((char *)((struct TagItem *)FindTagItem(GTNM_Format,ng->ng_Tags)->ti_Data),GetString(PG_NUMB_FlagsGadgets[GD_PG_NUMB_FLAGS_FORMAT])); return TRUE; }
int FN_PG_TDEK_FLAGS_TAPE_Clicked( void ) { struct TagItem *ti; piGetAttr(CurrentGadget,GAOBJ_Tags,(ULONG *)&ti); FindTagItem(TDECK_Tape,ti)->ti_Data=PropertiesMsg.Code?TRUE:FALSE; if(PropertiesMsg.Code) { DisableGadget(PG_TDEK_FlagsGadgets[GD_PG_TDEK_FLAGS_FRAMES],PropertiesWnd,TRUE); DisableGadget(PG_TDEK_FlagsGadgets[GD_PG_TDEK_FLAGS_CURRENT],PropertiesWnd,TRUE); } else { DisableGadget(PG_TDEK_FlagsGadgets[GD_PG_TDEK_FLAGS_FRAMES],PropertiesWnd,FALSE); DisableGadget(PG_TDEK_FlagsGadgets[GD_PG_TDEK_FLAGS_CURRENT],PropertiesWnd,FALSE); } PropertiesChanged=TRUE; FN_PROPERTIES_APPLY_Clicked(); return 1; }
ULONG STRING_APPLY_Gadget(piClass *cl,piObject *o,Msg msg) { struct Node_Gadget *ng; piGetAttr(o,OBJ_Node,(ULONG *)&ng); piDoSuperMethodA(cl,o,msg); if(FindTagItem(GTST_String,ng->ng_Tags)->ti_Data) MyFreeVec((APTR)FindTagItem(GTST_String,ng->ng_Tags)->ti_Data); FindTagItem(GTST_String,ng->ng_Tags)->ti_Data=NULL; if(FindTagItem(GTST_String,ng->ng_Tags)->ti_Data=(ULONG)MyAllocVec(strlen(GetString(PG_STRG_VarGadgets[GD_PG_STRG_VAR_STRING]))+1,MEMF_PUBLIC)) strcpy((char *)FindTagItem(GTST_String,ng->ng_Tags)->ti_Data,GetString(PG_STRG_VarGadgets[GD_PG_STRG_VAR_STRING])); FindTagItem(GTST_MaxChars,ng->ng_Tags)->ti_Data=GetInteger(PG_STRG_VarGadgets[GD_PG_STRG_VAR_MAXCHARS]); return TRUE; }
ULONG SET_Frame(piClass *cl,piObject *o,struct piSet *msg) { struct TagItem *t; struct Node_Frame *nf; piGetAttr(o,OBJ_Node,(ULONG *)&nf); if(t=FindTagItem(GA_Left,msg->Tags)) nf->nf_X=t->ti_Data; if(t=FindTagItem(GA_Top,msg->Tags)) nf->nf_Y=t->ti_Data; if(t=FindTagItem(GA_Width,msg->Tags)) nf->nf_Width=t->ti_Data; if(t=FindTagItem(GA_Height,msg->Tags)) nf->nf_Height=t->ti_Data; if(t=FindTagItem(FROBJ_Type,msg->Tags)) nf->nf_FrameType=t->ti_Data; if(t=FindTagItem(OBJ_Select,msg->Tags)) nf->nf_Selected=t->ti_Data; return TRUE; }
static ULONG mSets(struct IClass *cl,Object *obj,struct opSet *msg) { struct TagItem *tag; if (tag = FindTagItem(MUIA_Calendar_StartDay,msg->ops_AttrList)) { struct data *data = INST_DATA(cl,obj); ULONG wsd = tag->ti_Data; int i; if (wsd>6) wsd = 6; for (i = 0; i<7; i++) if (i!=wsd) nnset(data->days[i],MUIA_Selected,FALSE); nnset(data->days[wsd],MUIA_Selected,TRUE); data->wsd = wsd; } return 0; }
ULONG FilterTagItems(TagItem *tagList, Tag *filterArray, ULONG logic) { ULONG numValid = 0; TagItem *ti_tmp; TagItem *tmp_list = tagList; if (!tagList) return 0; while ((ti_tmp = NextTagItem(&tmp_list)) != NULL) numValid++; switch (logic) { case TAGFILTER_AND: tmp_list = tagList; while ((ti_tmp = NextTagItem(&tmp_list)) != NULL) { if (!TagInArray(ti_tmp->ti_Tag, filterArray)) { ti_tmp->ti_Tag = TAG_IGNORE; numValid--; } } break; case TAGFILTER_NOT: if (!filterArray) break; while (*filterArray != TAG_DONE) { ti_tmp = FindTagItem(*filterArray++, tagList); if (ti_tmp) ti_tmp->ti_Tag = TAG_IGNORE; } } return numValid; }
ULONG PALETTE_READ_Gadget(piClass *cl,piObject *o,struct piIO *msg) { if(CurrentChunk(msg->IFFh)->cn_Type==ID_GXGA && CurrentChunk(msg->IFFh)->cn_ID==ID_GADA) { struct TagItem *ti,*oti,tag,*sti; struct Node_Gadget *ng; int a; piGetAttr(o,GAOBJ_Tags,(ULONG *)&ti); piGetAttr(o,GAOBJ_OwnTags,(ULONG *)&oti); piGetAttr(o,OBJ_Node,(ULONG *)&ng); for(a=0;a<ng->ng_Type-1;a++) { ReadChunkBytes(msg->IFFh,(APTR)&tag,sizeof(struct TagItem)); switch(tag.ti_Tag) { case GT_Underscore: ti[0].ti_Tag=GT_Underscore; ti[0].ti_Data='_'; break; case GTPA_NumColors: ti[1].ti_Tag=GTPA_NumColors; ti[1].ti_Data=tag.ti_Data; ti[2].ti_Tag=TAG_IGNORE; break; default: if(sti=FindTagItem(tag.ti_Tag,ti)) sti->ti_Data=tag.ti_Data; break; } } return 0; } else return piDoSuperMethodA(cl,o,(Msg)msg); }
ULONG STRING_READ_Gadget(piClass *cl,piObject *o,struct piIO *msg) { if(CurrentChunk(msg->IFFh)->cn_Type==ID_GXGA && CurrentChunk(msg->IFFh)->cn_ID==ID_GADA) { struct TagItem *ti,tag,*sti; struct Node_Gadget *ng; int a; UWORD lenstr; piGetAttr(o,GAOBJ_Tags,(ULONG *)&ti); piGetAttr(o,OBJ_Node,(ULONG *)&ng); for(a=0;a<ng->ng_Type-1;a++) { ReadChunkBytes(msg->IFFh,(APTR)&tag,sizeof(struct TagItem)); switch(tag.ti_Tag) { case GT_Underscore: ti[0].ti_Tag=GT_Underscore; ti[0].ti_Data='_'; break; case GTST_String: break; default: if(sti=FindTagItem(tag.ti_Tag,ti)) sti->ti_Data=tag.ti_Data; break; } } for(;a<7;a++) ReadChunkBytes(msg->IFFh,(APTR)&tag,sizeof(struct TagItem)); ReadChunkBytes(msg->IFFh,(APTR)&lenstr,sizeof(UWORD)); if(lenstr) { if(FindTagItem(GTST_String,ng->ng_Tags)->ti_Data) MyFreeVec((APTR)FindTagItem(GTST_String,ng->ng_Tags)->ti_Data); FindTagItem(GTST_String,ng->ng_Tags)->ti_Data=NULL; if(FindTagItem(GTST_String,ng->ng_Tags)->ti_Data=(ULONG)MyAllocVec(lenstr,MEMF_PUBLIC)) ReadChunkBytes(msg->IFFh,(APTR)FindTagItem(GTST_String,ng->ng_Tags)->ti_Data,lenstr); } return 0; } else return piDoSuperMethodA(cl,o,(Msg)msg); }
ULONG PALETTE_APPLY_Gadget(piClass *cl,piObject *o,Msg msg) { struct Node_Gadget *ng; piGetAttr(o,OBJ_Node,(ULONG *)&ng); piDoSuperMethodA(cl,o,msg); switch(GetTagData(OWNTAG_Color,0,ng->ng_OwnTags)) { case 0: FindTagItem(GTPA_Depth,ng->ng_Tags)->ti_Data=GetInteger(PG_PALT_FlagsGadgets[GD_PG_PALT_FLAGS_COLOR]); break; case 1: FindTagItem(GTPA_NumColors,ng->ng_Tags)->ti_Data=GetInteger(PG_PALT_FlagsGadgets[GD_PG_PALT_FLAGS_COLOR]); break; case 2: FindTagItem(GTPA_Depth,ng->ng_Tags)->ti_Data=Scr->BitMap.Depth; } switch(GetTagData(OWNTAG_ShowSelected,0,ng->ng_OwnTags)) { case 1: FindTagItem(GTPA_IndicatorWidth,ng->ng_Tags)->ti_Data=GetInteger(PG_PALT_FlagsGadgets[GD_PG_PALT_FLAGS_SHOWSELECTED_VAR]); break; case 2: FindTagItem(GTPA_IndicatorHeight,ng->ng_Tags)->ti_Data=GetInteger(PG_PALT_FlagsGadgets[GD_PG_PALT_FLAGS_SHOWSELECTED_VAR]); break; } FindTagItem(GTPA_ColorOffset,ng->ng_Tags)->ti_Data=GetInteger(PG_PALT_FlagsGadgets[GD_PG_PALT_FLAGS_OFFSET]); return TRUE; }
BOOL makescrollergadget(struct ScrollerGadget *scrollergad, struct LayoutData *ld, struct TagItem *tags, struct AslBase_intern *AslBase) { struct TagItem extraproptags[] = { {PGA_NotifyBehaviour, PG_BEHAVIOUR_NICE}, {PGA_RenderBehaviour, PG_BEHAVIOUR_NICE}, {TAG_MORE , 0 } }; struct TagItem *ti, *h_ti, *w_ti; WORD x, y, w, h, aw, ah; UWORD flags = 0; BOOL freehoriz = (GetTagData(PGA_Freedom, FREEVERT, tags) == FREEHORIZ); BOOL result = FALSE; if ((ti = FindTagItem(GA_Left, tags))) { x = ti->ti_Data; } else if ((ti = FindTagItem(GA_RelRight, tags))) { x = ti->ti_Data; flags |= GFLG_RELRIGHT; } if ((ti = FindTagItem(GA_Top, tags))) { y = ti->ti_Data; } else if ((ti = FindTagItem(GA_RelBottom, tags))) { y = ti->ti_Data; flags |= GFLG_RELBOTTOM; } if ((w_ti = FindTagItem(GA_Width, tags))) { w = w_ti->ti_Data; } else if ((w_ti = FindTagItem(GA_RelWidth, tags))) { w = w_ti->ti_Data; flags |= GFLG_RELWIDTH; } if ((h_ti = FindTagItem(GA_Height, tags))) { h = h_ti->ti_Data; } else if ((h_ti = FindTagItem(GA_RelHeight, tags))) { h = h_ti->ti_Data; flags |= GFLG_RELHEIGHT; } if (freehoriz) { aw = h; ah = h; w -= aw * 2; if (w_ti) w_ti->ti_Data = w; } else { aw = w; ah = w; h -= ah * 2; if (h_ti) h_ti->ti_Data = h; } extraproptags[2].ti_Data = (IPTR)tags; if ((scrollergad->prop = NewObjectA(AslBase->aslpropclass, NULL, extraproptags))) { struct TagItem arrow_tags[] = { {GA_Left , freehoriz ? x + w - 1 : x }, {GA_Top , freehoriz ? y : y + h - 1 }, {GA_Width , aw }, {GA_Height , ah }, {GA_RelVerify , TRUE }, {GA_Immediate , TRUE }, {GA_Previous , (IPTR)scrollergad->prop }, {GA_ID , ID_ARROWDEC }, {TAG_DONE } }; if (flags & GFLG_RELRIGHT) arrow_tags[0].ti_Tag = GA_RelRight; if (flags & GFLG_RELWIDTH) { arrow_tags[0].ti_Tag = GA_RelRight; if (freehoriz) arrow_tags[0].ti_Data += 2; } if (flags & GFLG_RELBOTTOM) arrow_tags[1].ti_Tag = GA_RelBottom; if (flags & GFLG_RELHEIGHT) { arrow_tags[1].ti_Tag = GA_RelBottom; if (!freehoriz) arrow_tags[1].ti_Data += 2; } if ((scrollergad->arrow1 = NewObjectA(AslBase->aslarrowclass, NULL, arrow_tags))) { if (freehoriz) { arrow_tags[0].ti_Data += aw; } else { arrow_tags[1].ti_Data += ah; } arrow_tags[6].ti_Data = (IPTR)scrollergad->arrow1; arrow_tags[7].ti_Data = ID_ARROWINC; if ((scrollergad->arrow2 = NewObjectA(AslBase->aslarrowclass, NULL, arrow_tags))) { struct TagItem image_tags[] = { {SYSIA_Which , freehoriz ? LEFTIMAGE : UPIMAGE }, {SYSIA_DrawInfo , (IPTR)ld->ld_Dri }, {SYSIA_Style , SYSISTYLE_GADTOOLS }, {IA_Width , aw }, {IA_Height , ah }, {TAG_DONE } }; struct Image *im; if ((im = NewObjectA(NULL, SYSICLASS, image_tags))) { SetAttrs(scrollergad->arrow1, GA_Image, (IPTR)im, TAG_DONE); image_tags[0].ti_Data = (freehoriz ? RIGHTIMAGE : DOWNIMAGE); if ((im = NewObjectA(NULL, SYSICLASS, image_tags))) { #if USE_SAFE_NOTIFYING struct TagItem ic_tags [] = { {ICA_MAP , (IPTR) prop_to_lv }, {TAG_DONE } }; if ((scrollergad->prop_ic = NewObjectA(NULL, ICCLASS, ic_tags))) { ic_tags[0].ti_Data = (IPTR)lv_to_prop; if ((scrollergad->listview_ic = NewObjectA(NULL, ICCLASS, ic_tags))) { #endif struct TagItem set_tags [] = { {ICA_TARGET , (IPTR) scrollergad->prop }, {ICA_MAP , (IPTR) arrowdec_to_prop }, {TAG_DONE } }; SetAttrs(scrollergad->arrow2, GA_Image, (IPTR)im, TAG_DONE); SetAttrsA(scrollergad->arrow1, set_tags); set_tags[1].ti_Data = (IPTR)arrowinc_to_prop; SetAttrsA(scrollergad->arrow2, set_tags); result = TRUE; #if USE_SAFE_NOTIFYING } /* if ((scrollergad->listview_ic = NewObjectA(NULL, ICCLASS, ic_tags))) */ } /* if ((scrollergad->prop_ic = NewObjectA(NULL, ICCLASS, ic_tags))) */ #endif } /* if ((im = NewObjectA(NULL, SYSICLASS, image_tags))) */ } /* if ((im = NewObject(NULL, SYSICLASS, image_tags))) */ } /* if ((scrollergad->arrow2 = NewObjectA(NULL, BUTTONGCLASS, arrow_tags))) */ } /* if (scrollergad->arrow1 = NewObjectA(NULL, BUTTONGCLASS, arrow_tags)) */ } /* if ((scrollergad->prop = NewObjectA(AslBase->aslpropclass, NULL, tags))) */ if (!result) killscrollergadget(scrollergad, AslBase); return result; }