W_EDITBOX::W_EDITBOX(W_EDBINIT const *init) : WIDGET(init, WIDG_EDITBOX) , state(WEDBS_FIXED) , FontID(init->FontID) , blinkOffset(wzGetTicks()) , maxStringSize(EB_MAX_STRINGSIZE) , insPos(0) , printStart(0) , printChars(0) , printWidth(0) , pBoxDisplay(init->pBoxDisplay) , HilightAudioID(WidgGetHilightAudioID()) , ClickedAudioID(WidgGetClickedAudioID()) , ErrorAudioID(WidgGetErrorAudioID()) , AudioCallback(WidgGetAudioCallback()) , boxColourFirst(WZCOL_FORM_DARK) , boxColourSecond(WZCOL_FORM_LIGHT) , boxColourBackground(WZCOL_FORM_BACKGROUND) { char const *text = init->pText; if (!text) { text = ""; } aText = QString::fromUtf8(text); initialise(); ASSERT((init->style & ~(WEDB_PLAIN | WIDG_HIDDEN)) == 0, "Unknown edit box style"); }
W_BUTTON::W_BUTTON(WIDGET *parent) : WIDGET(parent, WIDG_BUTTON) , state(WBUT_PLAIN) , HilightAudioID(WidgGetHilightAudioID()) , ClickedAudioID(WidgGetClickedAudioID()) , AudioCallback(WidgGetAudioCallback()) , FontID(font_regular) {}
W_BUTTON::W_BUTTON(W_BUTINIT const *init) : WIDGET(init, WIDG_BUTTON) , state(WBUT_PLAIN) , pText(WzString::fromUtf8(init->pText)) , pTip(init->pTip) , HilightAudioID(WidgGetHilightAudioID()) , ClickedAudioID(WidgGetClickedAudioID()) , AudioCallback(WidgGetAudioCallback()) , FontID(init->FontID) { ASSERT((init->style & ~(WBUT_PLAIN | WIDG_HIDDEN | WBUT_NOPRIMARY | WBUT_SECONDARY | WBUT_TXTCENTRE)) == 0, "unknown button style"); }
W_CLICKFORM::W_CLICKFORM(W_FORMINIT const *init) : W_FORM(init) , state(WCLICK_NORMAL) , pTip(init->pTip) , HilightAudioID(WidgGetHilightAudioID()) , ClickedAudioID(WidgGetClickedAudioID()) , AudioCallback(WidgGetAudioCallback()) { if (init->pDisplay == NULL) { display = formDisplayClickable; } }
/* 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; }
W_EDITBOX::W_EDITBOX(WIDGET *parent) : WIDGET(parent) , state(WEDBS_FIXED) , FontID(font_regular) , blinkOffset(wzGetTicks()) , maxStringSize(EB_MAX_STRINGSIZE) , insPos(0) , printStart(0) , printChars(0) , printWidth(0) , pBoxDisplay(nullptr) , HilightAudioID(WidgGetHilightAudioID()) , ClickedAudioID(WidgGetClickedAudioID()) , ErrorAudioID(WidgGetErrorAudioID()) , AudioCallback(WidgGetAudioCallback()) , boxColourFirst(WZCOL_FORM_DARK) , boxColourSecond(WZCOL_FORM_LIGHT) , boxColourBackground(WZCOL_FORM_BACKGROUND) {}
W_EDITBOX::W_EDITBOX(W_EDBINIT const *init) : WIDGET(init, WIDG_EDITBOX) , FontID(init->FontID) , blinkOffset(wzGetTicks()) , pBoxDisplay(init->pBoxDisplay) , pFontDisplay(init->pFontDisplay) , HilightAudioID(WidgGetHilightAudioID()) , ClickedAudioID(WidgGetClickedAudioID()) , AudioCallback(WidgGetAudioCallback()) { char const *text = init->pText; if (!text) { text = ""; } aText = QString::fromUtf8(text); if (display == NULL) { display = editBoxDisplay; } initialise(); }
/* Create a button widget data structure */ W_BUTTON* buttonCreate(const W_BUTINIT* psInit) { W_BUTTON* psWidget; if (psInit->style & ~(WBUT_PLAIN | WIDG_HIDDEN | WFORM_NOCLICKMOVE | WBUT_NOPRIMARY | WBUT_SECONDARY | WBUT_TXTCENTRE)) { ASSERT(!"unknown button style", "buttonCreate: unknown button style"); return NULL; } /* Allocate the required memory */ psWidget = (W_BUTTON *)malloc(sizeof(W_BUTTON)); if (psWidget == NULL) { debug(LOG_FATAL, "buttonCreate: Out of memory" ); abort(); return NULL; } /* Allocate memory for the text and copy it if necessary */ if (psInit->pText) { psWidget->pText = psInit->pText; } else { psWidget->pText = NULL; } /* Allocate the memory for the tip and copy it if necessary */ if (psInit->pTip) { psWidget->pTip = psInit->pTip; } else { psWidget->pTip = NULL; } /* Initialise the structure */ psWidget->type = WIDG_BUTTON; psWidget->id = psInit->id; psWidget->formID = psInit->formID; psWidget->style = psInit->style; 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 = buttonDisplay; } psWidget->FontID = psInit->FontID; buttonInitialise(psWidget); return psWidget; }
/* Create a button widget data structure */ BOOL buttonCreate(W_BUTTON **ppsWidget, W_BUTINIT *psInit) { if (psInit->style & ~(WBUT_PLAIN | WIDG_HIDDEN | WFORM_NOCLICKMOVE | WBUT_NOPRIMARY | WBUT_SECONDARY | WBUT_TXTCENTRE )) { ASSERT((FALSE, "Unknown button style")); return FALSE; } //#ifdef DEBUG // if (psInit->pText) // { // ASSERT((PTRVALID(psInit->psFont, sizeof(PROP_FONT)), // "buttonCreate: Invalid font pointer")); // } //#endif /* Allocate the required memory */ #if W_USE_MALLOC *ppsWidget = (W_BUTTON *)MALLOC(sizeof(W_BUTTON)); if (*ppsWidget == NULL) #else if (!HEAP_ALLOC(psButHeap, ppsWidget)) #endif { ASSERT((FALSE, "buttonCreate: Out of memory")); return FALSE; } /* Allocate memory for the text and copy it if necessary */ if (psInit->pText) { #if W_USE_STRHEAP if (!widgAllocCopyString(&(*ppsWidget)->pText, psInit->pText)) { ASSERT((FALSE, "buttonCreate: Out of memory")); #if W_USE_MALLOC FREE(*ppsWidget); #else HEAP_FREE(psButHeap, *ppsWidget); #endif return FALSE; } #else (*ppsWidget)->pText = psInit->pText; #endif } else { (*ppsWidget)->pText = NULL; } /* Allocate the memory for the tip and copy it if necessary */ if (psInit->pTip) { #if W_USE_STRHEAP if (!widgAllocCopyString(&(*ppsWidget)->pTip, psInit->pTip)) { /* Out of memory - just carry on without the tip */ ASSERT((FALSE, "buttonCreate: Out of memory")); (*ppsWidget)->pTip = NULL; } #else (*ppsWidget)->pTip = psInit->pTip; #endif } else { (*ppsWidget)->pTip = NULL; } /* Initialise the structure */ (*ppsWidget)->type = WIDG_BUTTON; (*ppsWidget)->id = psInit->id; (*ppsWidget)->formID = psInit->formID; (*ppsWidget)->style = psInit->style; (*ppsWidget)->x = psInit->x; (*ppsWidget)->y = psInit->y; (*ppsWidget)->width = psInit->width; (*ppsWidget)->height = psInit->height; (*ppsWidget)->callback = psInit->pCallback; (*ppsWidget)->pUserData = psInit->pUserData; (*ppsWidget)->UserData = psInit->UserData; (*ppsWidget)->AudioCallback = WidgGetAudioCallback(); (*ppsWidget)->HilightAudioID = WidgGetHilightAudioID(); (*ppsWidget)->ClickedAudioID = WidgGetClickedAudioID(); if (psInit->pDisplay) { (*ppsWidget)->display = psInit->pDisplay; } else { (*ppsWidget)->display = buttonDisplay; } // (*ppsWidget)->psFont = psInit->psFont; (*ppsWidget)->FontID = psInit->FontID; buttonInitialise(*ppsWidget); return TRUE; }