Exemple #1
0
/* Create a plain form widget */
static W_CLICKFORM* formCreateClickable(const W_FORMINIT* psInit)
{
	/* Allocate the required memory */
	W_CLICKFORM* psWidget = (W_CLICKFORM *)malloc(sizeof(W_CLICKFORM));
	if (psWidget == NULL)
	{
		debug(LOG_FATAL, "formCreateClickable: Out of memory");
		abort();
		return NULL;
	}

	/* Initialise the structure */
	memset(psWidget, 0, sizeof(W_CLICKFORM));
	psWidget->type = WIDG_FORM;
	psWidget->id = psInit->id;
	psWidget->formID = psInit->formID;
	psWidget->style = psInit->style;
	psWidget->disableChildren = psInit->disableChildren;
	psWidget->animCount = 0;
	psWidget->x = psInit->x;
	psWidget->y = psInit->y;
	psWidget->width = psInit->width;
	psWidget->height = psInit->height;
	psWidget->callback = psInit->pCallback;
	psWidget->pUserData = psInit->pUserData;
	psWidget->UserData = psInit->UserData;

	psWidget->AudioCallback = WidgGetAudioCallback();
	psWidget->HilightAudioID = WidgGetHilightAudioID();
	psWidget->ClickedAudioID = WidgGetClickedAudioID();

	if (psInit->pDisplay)
	{
		psWidget->display = psInit->pDisplay;
	}
	else
	{
		psWidget->display = formDisplayClickable;
	}
	psWidget->psWidgets = NULL;
	psWidget->psLastHiLite = NULL;
	psWidget->pTip = psInit->pTip;
	formSetDefaultColours((W_FORM *)psWidget);

	formInitialise((W_FORM *)psWidget);

	return psWidget;
}
Exemple #2
0
/* Initialise a form and all it's widgets */
static void widgStartForm(W_FORM *psForm)
{
	WIDGET			*psCurr;
	W_FORMGETALL	sGetAll;

	/* Initialise this form */
	formInitialise(psForm);

	/*Initialise the widgets on the form */
	formInitGetAllWidgets(psForm, &sGetAll);
	psCurr = formGetAllWidgets(&sGetAll);
	while (psCurr != NULL)
	{
		switch (psCurr->type)
		{
		case WIDG_FORM:
			widgStartForm((W_FORM *)psCurr);
			break;
		case WIDG_LABEL:
			break;
		case WIDG_BUTTON:
			buttonInitialise((W_BUTTON *)psCurr);
			break;
		case WIDG_EDITBOX:
			editBoxInitialise((W_EDITBOX *)psCurr);
			break;
		case WIDG_BARGRAPH:
			break;
		case WIDG_SLIDER:
			sliderInitialise((W_SLIDER *)psCurr);
			break;
		default:
			ASSERT(!"Unknown widget type", "Unknown widget type");
			break;
		}

		psCurr = psCurr->psNext;
		if (!psCurr)
		{
			/* Got to the end of this list see if there is another */
			psCurr = formGetAllWidgets(&sGetAll);
		}
	}
}
Exemple #3
0
/* Create a tabbed form widget */
static W_TABFORM* formCreateTabbed(const W_FORMINIT* psInit)
{
	W_TABFORM* psWidget;
	UDWORD		major,minor;
	W_MAJORTAB	*psMajor;

	if (psInit->numMajor == 0)
	{
		ASSERT(false, "formCreateTabbed: Must have at least one major tab on a tabbed form");
		return NULL;
	}
	if (psInit->majorPos != 0
	 && psInit->majorPos == psInit->minorPos)
	{
		ASSERT(false, "formCreateTabbed: Cannot have major and minor tabs on same side");
		return NULL;
	}
	if (psInit->numMajor >= WFORM_MAXMAJOR)
	{
		ASSERT(false, "formCreateTabbed: Too many Major tabs" );
		return NULL;
	}
	for(major=0; major<psInit->numMajor; major++)
	{
		if (psInit->aNumMinors[major] >= WFORM_MAXMINOR)
		{
			ASSERT(false, "formCreateTabbed: Too many Minor tabs for Major %u", major);
			return NULL;
		}
		if (psInit->aNumMinors[major] == 0)
		{
			ASSERT(false, "formCreateTabbed: Must have at least one Minor tab for each major");
			return NULL;
		}
	}

	/* Allocate the required memory */
	psWidget = (W_TABFORM *)malloc(sizeof(W_TABFORM));
	if (psWidget == NULL)
	{
		debug(LOG_FATAL, "formCreateTabbed: Out of memory");
		abort();
		return NULL;
	}
	memset(psWidget, 0, sizeof(W_TABFORM));

	/* Allocate the memory for tool tips and copy them in */
	psMajor = psWidget->asMajor;
	for (major = 0; major < psInit->numMajor; ++major)
	{
		/* Check for a tip for the major tab */
		psMajor->pTip = psInit->apMajorTips[major];

		/* Check for tips for the minor tab */
		for(minor = 0; minor < psInit->aNumMinors[major]; ++minor)
		{
			psMajor->asMinor[minor].pTip = psInit->apMinorTips[major][minor];
		}
		psMajor++;
	}

	/* Initialise the structure */
	psWidget->type = WIDG_FORM;
	psWidget->id = psInit->id;
	psWidget->formID = psInit->formID;
	psWidget->style = psInit->style;
	psWidget->disableChildren = psInit->disableChildren;
	psWidget->animCount = 0;
	psWidget->x = psInit->x;
	psWidget->y = psInit->y;
	psWidget->width = psInit->width;
	psWidget->height = psInit->height;
	if (psInit->pDisplay)
	{
		psWidget->display = psInit->pDisplay;
	}
	else
	{
		psWidget->display = formDisplayTabbed;
	}
	psWidget->callback = psInit->pCallback;
	psWidget->pUserData = psInit->pUserData;
	psWidget->UserData = psInit->UserData;
	psWidget->psLastHiLite = NULL;
	psWidget->majorSize = psInit->majorSize;
	psWidget->minorSize = psInit->minorSize;
	psWidget->tabMajorThickness = psInit->tabMajorThickness;
	psWidget->tabMinorThickness = psInit->tabMinorThickness;
	psWidget->tabMajorGap = psInit->tabMajorGap;
	psWidget->tabMinorGap = psInit->tabMinorGap;
	psWidget->tabVertOffset = psInit->tabVertOffset;
	psWidget->tabHorzOffset = psInit->tabHorzOffset;
	psWidget->majorOffset = psInit->majorOffset;
	psWidget->minorOffset = psInit->minorOffset;
	psWidget->majorPos = psInit->majorPos;
	psWidget->minorPos = psInit->minorPos;
	psWidget->pTabDisplay = psInit->pTabDisplay;
	psWidget->TabMultiplier = psInit->TabMultiplier;
	psWidget->numButtons = psInit->numButtons;
	psWidget->numStats = psInit->numStats;
	psWidget->majorT = 0;
	psWidget->minorT = 0;
	
	formSetDefaultColours((W_FORM *)psWidget);

	/* Set up the tab data.
	 * All widget pointers have been zeroed by the memset above.
	 */
	psWidget->numMajor = psInit->numMajor;
	for (major=0; major<psInit->numMajor; major++)
	{
		psWidget->asMajor[major].numMinor = psInit->aNumMinors[major];
	}

	formInitialise((W_FORM *)psWidget);

	return psWidget;
}