version 1.13 | | version 1.14 |
---|
| | |
* Routines for menus. | | * Routines for menus. |
* | | * |
* $Log$ | | * $Log$ |
| | * Revision 1.14 2003/06/27 10:06:59 donut |
| | * make keypad enter numbers in input fields, and allow pasting from clipboard (patch from sekmu) |
| | * |
* Revision 1.13 2000/10/28 10:02:48 donut | | * Revision 1.13 2000/10/28 10:02:48 donut |
* scale menu bevels too | | * scale menu bevels too |
* | | * |
| | |
#include <stdarg.h> | | #include <stdarg.h> |
#include <ctype.h> | | #include <ctype.h> |
| | |
| | #include "clipboard.h" |
| | |
#include "error.h" | | #include "error.h" |
#include "types.h" | | #include "types.h" |
#include "gr.h" | | #include "gr.h" |
| | |
| | |
k = key_inkey(); | | k = key_inkey(); |
| | |
| | switch( k ) |
| | { |
| | case KEY_PAD0: k = KEY_0; break; |
| | case KEY_PAD1: k = KEY_1; break; |
| | case KEY_PAD2: k = KEY_2; break; |
| | case KEY_PAD3: k = KEY_3; break; |
| | case KEY_PAD4: k = KEY_4; break; |
| | case KEY_PAD5: k = KEY_5; break; |
| | case KEY_PAD6: k = KEY_6; break; |
| | case KEY_PAD7: k = KEY_7; break; |
| | case KEY_PAD8: k = KEY_8; break; |
| | case KEY_PAD9: k = KEY_9; break; |
| | case KEY_PADPERIOD: k = KEY_PERIOD; break; |
| | } |
| | |
if (subfunction) | | if (subfunction) |
(*subfunction)(nitems,item,&k,choice); | | (*subfunction)(nitems,item,&k,choice); |
| | |
| | |
old_choice = choice; | | old_choice = choice; |
| | |
switch( k ) { | | switch( k ) { |
| | case KEY_V + KEY_CTRLED: |
| | case KEY_INSERT + KEY_SHIFTED: |
| | if(item[choice].type==NM_TYPE_INPUT) |
| | { |
| | char cbtext[MAX_PASTE_SIZE+1]; |
| | memset(cbtext,0,MAX_PASTE_SIZE+1); |
| | int ret = getClipboardText(cbtext,MAX_PASTE_SIZE); |
| | if(ret) |
| | { |
| | int idx; |
| | |
| | if (item[choice].value==-1) |
| | { |
| | item[choice].value = 0; |
| | } |
| | |
| | for(idx = 0 ; (idx < ret) && (item[choice].value < item[choice].text_len ) ; idx++ ) |
| | { |
| | int ascii = cbtext[idx]; |
| | int allowed; |
| | |
| | allowed = char_allowed(ascii); |
| | if (!allowed && ascii==' ' && char_allowed('_')) |
| | { |
| | ascii = '_'; |
| | allowed=1; |
| | } |
| | |
| | if (allowed) |
| | { |
| | item[choice].text[item[choice].value++] = ascii; |
| | item[choice].text[item[choice].value] = 0; |
| | item[choice].redraw=1; |
| | } |
| | } |
| | k = -1; |
| | } |
| | } |
| | break; |
case KEY_TAB + KEY_SHIFTED: | | case KEY_TAB + KEY_SHIFTED: |
case KEY_UP: | | case KEY_UP: |
case KEY_PAD8: | | case KEY_PAD8: |
| | |
| | |
} | | } |
| | |
if ( choice > -1 ) { | | if ( (choice > -1) && (k != -1)) { |
int ascii; | | int ascii; |
| | |
if ( ((item[choice].type==NM_TYPE_INPUT)||((item[choice].type==NM_TYPE_INPUT_MENU)&&(item[choice].group==1)) )&& (old_choice==choice) ) { | | if ( ((item[choice].type==NM_TYPE_INPUT)||((item[choice].type==NM_TYPE_INPUT_MENU)&&(item[choice].group==1)) )&& (old_choice==choice) ) { |