home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Frozen Fish 1: Amiga
/
FrozenFish-Apr94.iso
/
bbs
/
alib
/
d5xx
/
d583
/
tpledit.lha
/
TplEdit
/
src.lzh
/
region.c
< prev
next >
Wrap
C/C++ Source or Header
|
1991-12-03
|
4KB
|
176 lines
/*
* REGION.C
*/
#include "defs.h"
Prototype void UpdateTplRegion(TplRegion *);
Prototype TplRegion *AllocTplRegion(void);
Prototype void DeleteTplRegion(TplRegion *);
/*********************** AllocTplRegion() **************************/
TplRegion *
AllocTplRegion()
{
TplRegion *rg = zalloc(sizeof(TplRegion));
NewList(&rg->rg_ListSet);
rg->rg_Id = ++IdNo;
rg->rg_TextAttr = *Scr->Font;
AddTail(&RegList, &rg->rg_Node);
return (rg);
}
/*********************** UpdateTplRegion(rg) ************************/
void
UpdateTplRegion(rg)
TplRegion *rg;
{
if (rg->rg_Gad)
GT_SetGadgetAttrs(rg->rg_Gad, Win, NULL,
GA_Disabled, 1,
TAG_END);
if (rg->rg_DefText)
free(rg->rg_DefText);
rg->rg_DefText = (Buf_default_str[0]) ? strdup(Buf_default_str) : (char *)NULL;
if (rg->rg_LabText)
free(rg->rg_LabText);
rg->rg_LabText = (Buf_label_str[0]) ? strdup(Buf_label_str) : (char *)NULL;
if (rg->rg_Node.ln_Name)
free(rg->rg_Node.ln_Name);
rg->rg_Node.ln_Name = strdup(Buf_region_str);
if (rg->rg_Gad)
{
switch(rg->rg_Type)
{
case RGT_CYCLE:
case RGT_LISTVIEW:
GT_SetGadgetAttrs(rg->rg_Gad, Win, NULL,
GTLV_Labels, -1,
TAG_END);
break;
case RGT_MX:
GT_SetGadgetAttrs(rg->rg_Gad, Win, NULL,
GTMX_Labels, -1,
TAG_END);
default:
break;
}
}
MaxNode *mn;
while (mn = RemHead(&rg->rg_ListSet))
{
free(mn->ln_Name);
free(mn);
}
if (rg->rg_CycleAry)
{
free(rg->rg_CycleAry);
rg->rg_CycleAry = NULL;
}
if (NewType == RGT_CYCLE ||
NewType == RGT_LISTVIEW ||
NewType == RGT_MX)
{
MaxNode *mn;
short cnt = 0;
for (mn = GetHead(&List_items_lv); mn; mn = GetSucc(mn))
{
AddNode(&rg->rg_ListSet, mn->ln_Name, 1);
++cnt;
}
rg->rg_CycleAry = zalloc(sizeof(char *) * (cnt + 1));
if (cnt)
{
cnt = 0;
for (mn = GetHead(&rg->rg_ListSet); mn; mn = GetSucc(mn))
rg->rg_CycleAry[cnt++] = mn->ln_Name;
}
}
rg->rg_Flags = NewFlags;
rg->rg_Type = NewType;
rg->rg_SpecFlags = SpecFlag;
rg->rg_MaxVal = MaxVal;
rg->rg_DefVal = DefVal;
rg->rg_BufSpace = BufSpace;
if (DDebug)
{
printf("rg->rg_Flags = %d\n", NewFlags);
printf("rg->rg_Type = %d\n", NewType);
printf("rg->rg_SpecFlags = %d\n", SpecFlag);
printf("rg->rg_MaxVal = %d\n", MaxVal);
printf("rg->rg_DefVal = %d\n", DefVal);
printf("rg->rg_BufSpace = %d\n", BufSpace);
}
}
/*********************** DeleteTplRegion(rg) ************************/
void
DeleteTplRegion(rg)
TplRegion *rg;
{
Remove(&rg->rg_Node);
ClearLinks(rg);
if (rg->rg_Node.ln_Name)
free(rg->rg_Node.ln_Name);
if (rg->rg_Gad)
{
switch(rg->rg_Type)
{
case RGT_CYCLE:
case RGT_LISTVIEW:
GT_SetGadgetAttrs(rg->rg_Gad, Win, NULL,
GTLV_Labels, -1,
TAG_END);
break;
case RGT_MX:
GT_SetGadgetAttrs(rg->rg_Gad, Win, NULL,
GTMX_Labels, -1,
TAG_END);
default:
break;
}
}
if (rg->rg_DataBase)
free(rg->rg_DataBase);
if (rg->rg_ListRef)
free(rg->rg_ListRef);
if (rg->rg_CycleAry)
free(rg->rg_CycleAry);
MaxNode *mn;
while (mn = RemHead(&rg->rg_ListSet))
{
free(mn->ln_Name);
free(mn);
}
if (rg->rg_DefText)
free(rg->rg_DefText);
if (rg->rg_LabText)
free(rg->rg_LabText);
free(rg);
SetCurRegion(NULL);
}