diff options
Diffstat (limited to 'mdk-stage1/newt/checkbox.c')
| -rw-r--r-- | mdk-stage1/newt/checkbox.c | 290 | 
1 files changed, 0 insertions, 290 deletions
| diff --git a/mdk-stage1/newt/checkbox.c b/mdk-stage1/newt/checkbox.c deleted file mode 100644 index eee514c98..000000000 --- a/mdk-stage1/newt/checkbox.c +++ /dev/null @@ -1,290 +0,0 @@ -#include <slang.h> -#include <stdlib.h> -#include <string.h> - -#include "newt.h" -#include "newt_pr.h" - -enum type { CHECK, RADIO }; - -struct checkbox { -    char * text; -    char * seq; -    char * result; -    newtComponent prevButton, lastButton; -    enum type type; -    char value; -    int active, inactive; -    const void * data; -    int flags; -    int hasFocus; -}; - -static void makeActive(newtComponent co); - -static void cbDraw(newtComponent c); -static void cbDestroy(newtComponent co); -struct eventResult cbEvent(newtComponent co, struct event ev); - -static struct componentOps cbOps = { -    cbDraw, -    cbEvent, -    cbDestroy, -    newtDefaultPlaceHandler, -    newtDefaultMappedHandler, -} ; - -newtComponent newtRadiobutton(int left, int top, const char * text, int isDefault, -			      newtComponent prevButton) { -    newtComponent co; -    newtComponent curr; -    struct checkbox * rb; -    char initialValue; - -    if (isDefault) -	initialValue = '*'; -    else -	initialValue = ' '; - -    co = newtCheckbox(left, top, text, initialValue, " *", NULL); -    rb = co->data; -    rb->type = RADIO; - -    rb->prevButton = prevButton; - -    for (curr = co; curr; curr = rb->prevButton) { -	rb = curr->data; -	rb->lastButton = co; -    } - -    return co; -} - -newtComponent newtRadioGetCurrent(newtComponent setMember) { -    struct checkbox * rb = setMember->data; - -    setMember = rb->lastButton; -    rb = setMember->data; - -    while (rb && rb->value != '*') { -	setMember = rb->prevButton; -	if (!setMember) -	  return NULL; -	rb = setMember->data; -    } - -    return setMember; -} - -char newtCheckboxGetValue(newtComponent co) { -    struct checkbox * cb = co->data; - -    return cb->value; -} - -void newtCheckboxSetValue(newtComponent co, char value) { -    struct checkbox * cb = co->data; - -    *cb->result = value; -    cbDraw(co); -} - -newtComponent newtCheckbox(int left, int top, const char * text, char defValue, -			   const char * seq, char * result) { -    newtComponent co; -    struct checkbox * cb; - -    if (!seq) seq = " *"; - -    co = malloc(sizeof(*co)); -    cb = malloc(sizeof(struct checkbox)); -    co->data = cb; -    cb->flags = 0; -    if (result) -	cb->result = result; -    else -	cb->result = &cb->value; - -    cb->text = strdup(text); -    cb->seq = strdup(seq); -    cb->type = CHECK; -    cb->hasFocus = 0; -    cb->inactive = COLORSET_CHECKBOX; -    cb->active = COLORSET_ACTCHECKBOX; -    defValue ? (*cb->result = defValue) : (*cb->result = cb->seq[0]); - -    co->ops = &cbOps; - -    co->callback = NULL; -    co->height = 1; -    co->width = strlen(text) + 4; -    co->top = top; -    co->left = left; -    co->takesFocus = 1; - -    return co; -} - -void newtCheckboxSetFlags(newtComponent co, int flags, enum newtFlagsSense sense) { -    struct checkbox * cb = co->data; -    int row, col; - -    cb->flags = newtSetFlags(cb->flags, flags, sense); - -    if (!(cb->flags & NEWT_FLAG_DISABLED)) -	co->takesFocus = 1; -    else -	co->takesFocus = 0; - -    newtGetrc(&row, &col); -    cbDraw(co); -    newtGotorc(row, col); -} - -static void cbDraw(newtComponent c) { -    struct checkbox * cb = c->data; - -    if (c->top == -1 || !c->isMapped) return; - -    if (cb->flags & NEWT_FLAG_DISABLED) { -	cb->inactive = NEWT_COLORSET_DISENTRY; -	cb->active = NEWT_COLORSET_DISENTRY; -    } else { -	cb->inactive = COLORSET_CHECKBOX; -	cb->active = COLORSET_ACTCHECKBOX; -    } - -    SLsmg_set_color(cb->inactive); - -    newtGotorc(c->top, c->left); - -    switch (cb->type) { -      case RADIO: -	SLsmg_write_string("( ) "); -	break; - -      case CHECK: -	SLsmg_write_string("[ ] "); -	break; - -      default: -	break; -    } - -    SLsmg_write_string(cb->text); - -    if (cb->hasFocus) -	SLsmg_set_color(cb->active); - -    newtGotorc(c->top, c->left + 1); -    SLsmg_write_char(*cb->result); -} - -static void cbDestroy(newtComponent co) { -    struct checkbox * cb = co->data; - -    free(cb->text); -    free(cb->seq); -    free(cb); -    free(co); -} - -struct eventResult cbEvent(newtComponent co, struct event ev) { -    struct checkbox * cb = co->data; -    struct eventResult er; -    const char * cur; - -    if (ev.when == EV_NORMAL) { -	switch (ev.event) { -	  case EV_FOCUS: -	    cb->hasFocus = 1; -	    cbDraw(co); -	    er.result = ER_SWALLOWED; -	    break; - -	  case EV_UNFOCUS: -	    cb->hasFocus = 0; -	    cbDraw(co); -	    er.result = ER_SWALLOWED; -	    break; - -	  case EV_KEYPRESS: -	    if (ev.u.key == ' ') { -		if (cb->type == RADIO) { -		    makeActive(co); -		} else if (cb->type == CHECK) { -		    cur = strchr(cb->seq, *cb->result); -		    if (!cur) -			*cb->result = *cb->seq; -		    else { -			cur++; -			if (! *cur) -			    *cb->result = *cb->seq; -			else -			    *cb->result = *cur; -		    } -		    cbDraw(co); -		    er.result = ER_SWALLOWED; - -		    if (co->callback) -			co->callback(co, co->callbackData); -		} else { -		    er.result = ER_IGNORED; -		} -	    } else if(ev.u.key == NEWT_KEY_ENTER) { -		er.result = ER_IGNORED; -	    } else { -		er.result = ER_IGNORED; -	    } -	    break; -   	  case EV_MOUSE: -	    if (ev.u.mouse.type == MOUSE_BUTTON_DOWN) { -		if (cb->type == RADIO) { -		    makeActive(co); -		} else if (cb->type == CHECK) { -		    cur = strchr(cb->seq, *cb->result); -		    if (!cur) -			*cb->result = *cb->seq; -		    else { -			cur++; -			if (! *cur) -			    *cb->result = *cb->seq; -			else -			    *cb->result = *cur; -		    } -		    cbDraw(co); -		    er.result = ER_SWALLOWED; - -		    if (co->callback) -			co->callback(co, co->callbackData); -		} -	    } -	} -    } else -	er.result = ER_IGNORED; - -    return er; -} - -static void makeActive(newtComponent co) { -    struct checkbox * cb = co->data; -    struct checkbox * rb; -    newtComponent curr; - -    /* find the one that's turned off */ -    curr = cb->lastButton; -    rb = curr->data; -    while (curr && rb->value == rb->seq[0]) { -	curr = rb->prevButton; -	if (curr) rb = curr->data; -    } -    if (curr) { -	rb->value = rb->seq[0]; -	cbDraw(curr); -    } -    cb->value = cb->seq[1]; -    cbDraw(co); - -    if (co->callback) -	co->callback(co, co->callbackData); -} | 
