diff options
Diffstat (limited to 'mdk-stage1/newt/button.c')
| -rw-r--r-- | mdk-stage1/newt/button.c | 192 | 
1 files changed, 0 insertions, 192 deletions
| diff --git a/mdk-stage1/newt/button.c b/mdk-stage1/newt/button.c deleted file mode 100644 index d7da58175..000000000 --- a/mdk-stage1/newt/button.c +++ /dev/null @@ -1,192 +0,0 @@ -#include <slang.h> -#include <stdlib.h> -#include <string.h> - -#include "newt.h" -#include "newt_pr.h" - -struct button { -    char * text; -    int compact; -}; - -static void buttonDrawIt(newtComponent co, int active, int pushed); -static void buttonDrawText(newtComponent co, int active, int pushed); - -static void buttonDraw(newtComponent c); -static void buttonDestroy(newtComponent co); -static struct eventResult buttonEvent(newtComponent c, -				      struct event ev); -static void buttonPlace(newtComponent co, int newLeft, int newTop); - -static struct componentOps buttonOps = { -    buttonDraw, -    buttonEvent, -    buttonDestroy, -    buttonPlace, -    newtDefaultMappedHandler, -} ; - -static newtComponent createButton(int left, int row, const char * text, int compact) { -    newtComponent co; -    struct button * bu; - -    co = malloc(sizeof(*co)); -    bu = malloc(sizeof(struct button)); -    co->data = bu; - -    bu->text = strdup(text); -    bu->compact = compact; -    co->ops = &buttonOps; - -    if (bu->compact) { -	co->height = 1; -	co->width = strlen(text) + 3; -    } else { -	co->height = 4; -	co->width = strlen(text) + 5; -    } - -    co->top = row; -    co->left = left; -    co->takesFocus = 1; -    co->isMapped = 0; - -    newtGotorc(co->top, co->left); - -    return co; -} - -newtComponent newtCompactButton(int left, int row, const char * text) { -    return createButton(left, row, text, 1); -} - -newtComponent newtButton(int left, int row, const char * text) { -    return createButton(left, row, text, 0); -} - -static void buttonDestroy(newtComponent co) { -    struct button * bu = co->data; - -    free(bu->text); -    free(bu); -    free(co); -} - -static void buttonPlace(newtComponent co, int newLeft, int newTop) { -    co->top = newTop; -    co->left = newLeft; - -    newtGotorc(co->top, co->left); -} - -static void buttonDraw(newtComponent co) { -    buttonDrawIt(co, 0, 0); -} - -static void buttonDrawIt(newtComponent co, int active, int pushed) { -    struct button * bu = co->data; - -    if (!co->isMapped) return; - -    SLsmg_set_color(NEWT_COLORSET_BUTTON); - -    if (bu->compact) { -	if (active) -	    SLsmg_set_color(NEWT_COLORSET_COMPACTBUTTON); -	else -	    SLsmg_set_color(NEWT_COLORSET_BUTTON); -	newtGotorc(co->top+ pushed, co->left + 1 + pushed); -	SLsmg_write_char('<'); -	SLsmg_write_string(bu->text); -	SLsmg_write_char('>'); -    } else { -	if (pushed) { -	    SLsmg_set_color(NEWT_COLORSET_BUTTON); -	    newtDrawBox(co->left + 1, co->top + 1, co->width - 1, 3, 0); - -	    SLsmg_set_color(NEWT_COLORSET_WINDOW); -	    newtClearBox(co->left, co->top, co->width, 1); -	    newtClearBox(co->left, co->top, 1, co->height); -	} else { -	    newtDrawBox(co->left, co->top, co->width - 1, 3, 1); -	} - -	buttonDrawText(co, active, pushed); -    } -} - -static void buttonDrawText(newtComponent co, int active, int pushed) { -    struct button * bu = co->data; - -    if (pushed) pushed = 1; - -    if (active) -	SLsmg_set_color(NEWT_COLORSET_ACTBUTTON); -    else -	SLsmg_set_color(NEWT_COLORSET_BUTTON); - -    newtGotorc(co->top + 1 + pushed, co->left + 1 + pushed); -    SLsmg_write_char(' '); -    SLsmg_write_string(bu->text); -    SLsmg_write_char(' '); -} - -static struct eventResult buttonEvent(newtComponent co, -				      struct event ev) { -    struct eventResult er; -    struct button * bu = co->data; -    er.result = ER_IGNORED; -    er.u.focus = NULL; - -    if (ev.when == EV_NORMAL) { -	switch (ev.event) { -	  case EV_FOCUS: -	    buttonDrawIt(co, 1, 0); -	    er.result = ER_SWALLOWED; -	    break; - -	  case EV_UNFOCUS: -	    buttonDrawIt(co, 0, 0); -	    er.result = ER_SWALLOWED; -	    break; - -	  case EV_KEYPRESS: -	    if (ev.u.key == ' ' || ev.u.key == '\r') { -		if (!bu->compact) { -		    /* look pushed */ -		    buttonDrawIt(co, 1, 1); -		    newtRefresh(); -		    newtDelay(150000); -		    buttonDrawIt(co, 1, 0); -		    newtRefresh(); -		    newtDelay(150000); -		} - -		er.result = ER_EXITFORM; -	    } else -		er.result = ER_IGNORED; -	    break; -	  case EV_MOUSE: -	      if (ev.u.mouse.type == MOUSE_BUTTON_DOWN && -		  co->top <= ev.u.mouse.y && -		  co->top + co->height - !bu->compact > ev.u.mouse.y && -		  co->left <= ev.u.mouse.x && -		  co->left + co->width - !bu->compact > ev.u.mouse.x) { -		  if (!bu->compact) { -		      buttonDrawIt(co, 1, 1); -		      newtRefresh(); -		      newtDelay(150000); -		      buttonDrawIt(co, 1, 0); -		      newtRefresh(); -		      newtDelay(150000); -		  } -		  er.result = ER_EXITFORM; -	      } -	    break; -	} -    } else -	er.result = ER_IGNORED; - -    return er; -} | 
