void ui_inputbox_do( UI_GADGET_INPUTBOX * inputbox, int keypress ) { char ascii; inputbox->oldposition = inputbox->position; inputbox->pressed=0; if (CurWindow->keyboard_focus_gadget==(UI_GADGET *)inputbox) { switch( keypress ) { case 0: break; case (KEY_LEFT): case (KEY_BACKSP): if (inputbox->position > 0) inputbox->position--; inputbox->text[inputbox->position] = 0; inputbox->status = 1; if (inputbox->first_time) inputbox->first_time = 0; break; case (KEY_ENTER): inputbox->pressed=1; inputbox->status = 1; if (inputbox->first_time) inputbox->first_time = 0; break; default: ascii = key_to_ascii(keypress); if ((ascii < 255 ) && (inputbox->position < inputbox->length-2)) { if (inputbox->first_time) { inputbox->first_time = 0; inputbox->position = 0; } inputbox->text[inputbox->position++] = ascii; inputbox->text[inputbox->position] = 0; } inputbox->status = 1; break; } } else { inputbox->first_time = 1; } last_keypress=0; ui_draw_inputbox( inputbox ); }
int ui_inputbox_do( UI_DIALOG *dlg, UI_GADGET_INPUTBOX * inputbox, d_event *event ) { unsigned char ascii; int keypress = 0; int rval = 0; if (event->type == EVENT_KEY_COMMAND) keypress = event_key_get(event); inputbox->oldposition = inputbox->position; inputbox->pressed=0; if (dlg->keyboard_focus_gadget==(UI_GADGET *)inputbox) { switch( keypress ) { case 0: break; case (KEY_LEFT): case (KEY_BACKSP): if (inputbox->position > 0) inputbox->position--; inputbox->text[inputbox->position] = 0; inputbox->status = 1; if (inputbox->first_time) inputbox->first_time = 0; rval = 1; break; case (KEY_ENTER): inputbox->pressed=1; inputbox->status = 1; if (inputbox->first_time) inputbox->first_time = 0; rval = 1; break; default: ascii = key_ascii(); if ((ascii < 255 ) && (inputbox->position < inputbox->length-2)) { if (inputbox->first_time) { inputbox->first_time = 0; inputbox->position = 0; } inputbox->text[inputbox->position++] = ascii; inputbox->text[inputbox->position] = 0; rval = 1; } inputbox->status = 1; break; } } else { inputbox->first_time = 1; } if (inputbox->pressed) { ui_gadget_send_event(dlg, EVENT_UI_GADGET_PRESSED, (UI_GADGET *)inputbox); rval = 1; } if (event->type == EVENT_WINDOW_DRAW) ui_draw_inputbox( dlg, inputbox ); return rval; }