UI: bring back function to convert keyboard event to string, and

make the key event button work again.
This commit is contained in:
2008-12-16 07:32:12 +00:00
parent 89101d51bc
commit d272300da9
5 changed files with 331 additions and 17 deletions

View File

@@ -44,6 +44,7 @@
#include "BLI_dynstr.h"
#include "BKE_global.h"
#include "BKE_library.h"
#include "BKE_screen.h"
#include "BKE_texture.h"
#include "BKE_utildefines.h"
@@ -1587,8 +1588,7 @@ void ui_check_but(uiBut *but)
if (but->flag & UI_SELECT) {
strcat(but->drawstr, "Press a key");
} else {
/* XXX 2.50 function not supported */
/* strcat(but->drawstr, key_event_to_string((short) ui_get_but_val(but))); */
strcat(but->drawstr, WM_key_event_string((short) ui_get_but_val(but)));
}
break;
@@ -2073,8 +2073,8 @@ void autocomplete_end(AutoComplete *autocpl, char *autoname)
/* autocomplete callback for ID buttons */
static void autocomplete_id(bContext *C, char *str, void *arg_v)
{
/* int blocktype= (intptr_t)arg_v; */
ListBase *listb= NULL /* XXX 2.50 needs context, wich_libbase(G.main, blocktype) */;
int blocktype= (intptr_t)arg_v;
ListBase *listb= wich_libbase(G.main, blocktype); /* XXX */
if(listb==NULL) return;

View File

@@ -1449,17 +1449,14 @@ static int ui_do_but_KEYEVT(bContext *C, uiBut *but, uiHandleButtonData *data, w
if(event->type == MOUSEMOVE)
return WM_UI_HANDLER_CONTINUE;
/* XXX 2.50 missing function */
#if 0
if(event->val) {
if(!key_event_to_string(event)[0])
data->cancel= 1;
else
if(WM_key_event_string(event->type)[0])
ui_set_but_val(but, event->type);
else
data->cancel= 1;
button_activate_state(C, but, BUTTON_STATE_EXIT);
}
#endif
}
return WM_UI_HANDLER_CONTINUE;
@@ -2660,8 +2657,12 @@ static uiBut *ui_but_find_mouse_over(ARegion *ar, int x, int y)
/* check if the mouse is in the region, and in case of a view2d also check
* if it is inside the view2d itself, not over scrollbars for example */
if(!BLI_in_rcti(&ar->winrct, x, y))
if(!BLI_in_rcti(&ar->winrct, x, y)) {
for(block=ar->uiblocks.first; block; block=block->next)
block->auto_open= 0;
return NULL;
}
if(ar->v2d.mask.xmin!=ar->v2d.mask.xmax) {
mx= x;

View File

@@ -61,7 +61,7 @@ void WM_cursor_restore (struct wmWindow *win);
void WM_cursor_wait (struct wmWindow *win, int val);
void WM_timecursor (struct wmWindow *win, int nr);
/* keymap and handlers */
/* keymap */
wmKeymapItem *WM_keymap_set_item (ListBase *lb, char *idname, short type,
short val, int modifier, short keymodifier);
wmKeymapItem *WM_keymap_verify_item(ListBase *lb, char *idname, short type,
@@ -71,6 +71,9 @@ wmKeymapItem *WM_keymap_add_item (ListBase *lb, char *idname, short type,
ListBase *WM_keymap_listbase (wmWindowManager *wm, const char *nameid,
int spaceid, int regionid);
char *WM_key_event_string(short type);
/* handlers */
struct wmEventHandler *WM_event_add_keymap_handler(ListBase *handlers, ListBase *keymap);
/* boundbox, optional subwindow boundbox for offset */

View File

@@ -167,3 +167,318 @@ ListBase *WM_keymap_listbase(wmWindowManager *wm, const char *nameid, int spacei
return &km->keymap;
}
/* ***************** get string from key events **************** */
char *WM_key_event_string(short type)
{
/* not returned: CAPSLOCKKEY, UNKNOWNKEY, COMMANDKEY, GRLESSKEY */
switch(type) {
case AKEY:
return "A";
break;
case BKEY:
return "B";
break;
case CKEY:
return "C";
break;
case DKEY:
return "D";
break;
case EKEY:
return "E";
break;
case FKEY:
return "F";
break;
case GKEY:
return "G";
break;
case HKEY:
return "H";
break;
case IKEY:
return "I";
break;
case JKEY:
return "J";
break;
case KKEY:
return "K";
break;
case LKEY:
return "L";
break;
case MKEY:
return "M";
break;
case NKEY:
return "N";
break;
case OKEY:
return "O";
break;
case PKEY:
return "P";
break;
case QKEY:
return "Q";
break;
case RKEY:
return "R";
break;
case SKEY:
return "S";
break;
case TKEY:
return "T";
break;
case UKEY:
return "U";
break;
case VKEY:
return "V";
break;
case WKEY:
return "W";
break;
case XKEY:
return "X";
break;
case YKEY:
return "Y";
break;
case ZKEY:
return "Z";
break;
case ZEROKEY:
return "Zero";
break;
case ONEKEY:
return "One";
break;
case TWOKEY:
return "Two";
break;
case THREEKEY:
return "Three";
break;
case FOURKEY:
return "Four";
break;
case FIVEKEY:
return "Five";
break;
case SIXKEY:
return "Six";
break;
case SEVENKEY:
return "Seven";
break;
case EIGHTKEY:
return "Eight";
break;
case NINEKEY:
return "Nine";
break;
case LEFTCTRLKEY:
return "Leftctrl";
break;
case LEFTALTKEY:
return "Leftalt";
break;
case RIGHTALTKEY:
return "Rightalt";
break;
case RIGHTCTRLKEY:
return "Rightctrl";
break;
case RIGHTSHIFTKEY:
return "Rightshift";
break;
case LEFTSHIFTKEY:
return "Leftshift";
break;
case ESCKEY:
return "Esc";
break;
case TABKEY:
return "Tab";
break;
case RETKEY:
return "Ret";
break;
case SPACEKEY:
return "Space";
break;
case LINEFEEDKEY:
return "Linefeed";
break;
case BACKSPACEKEY:
return "Backspace";
break;
case DELKEY:
return "Del";
break;
case SEMICOLONKEY:
return "Semicolon";
break;
case PERIODKEY:
return "Period";
break;
case COMMAKEY:
return "Comma";
break;
case QUOTEKEY:
return "Quote";
break;
case ACCENTGRAVEKEY:
return "Accentgrave";
break;
case MINUSKEY:
return "Minus";
break;
case SLASHKEY:
return "Slash";
break;
case BACKSLASHKEY:
return "Backslash";
break;
case EQUALKEY:
return "Equal";
break;
case LEFTBRACKETKEY:
return "Leftbracket";
break;
case RIGHTBRACKETKEY:
return "Rightbracket";
break;
case LEFTARROWKEY:
return "Leftarrow";
break;
case DOWNARROWKEY:
return "Downarrow";
break;
case RIGHTARROWKEY:
return "Rightarrow";
break;
case UPARROWKEY:
return "Uparrow";
break;
case PAD2:
return "Pad2";
break;
case PAD4:
return "Pad4";
break;
case PAD6:
return "Pad6";
break;
case PAD8:
return "Pad8";
break;
case PAD1:
return "Pad1";
break;
case PAD3:
return "Pad3";
break;
case PAD5:
return "Pad5";
break;
case PAD7:
return "Pad7";
break;
case PAD9:
return "Pad9";
break;
case PADPERIOD:
return "Padperiod";
break;
case PADSLASHKEY:
return "Padslash";
break;
case PADASTERKEY:
return "Padaster";
break;
case PAD0:
return "Pad0";
break;
case PADMINUS:
return "Padminus";
break;
case PADENTER:
return "Padenter";
break;
case PADPLUSKEY:
return "Padplus";
break;
case F1KEY:
return "F1";
break;
case F2KEY:
return "F2";
break;
case F3KEY:
return "F3";
break;
case F4KEY:
return "F4";
break;
case F5KEY:
return "F5";
break;
case F6KEY:
return "F6";
break;
case F7KEY:
return "F7";
break;
case F8KEY:
return "F8";
break;
case F9KEY:
return "F9";
break;
case F10KEY:
return "F10";
break;
case F11KEY:
return "F11";
break;
case F12KEY:
return "F12";
break;
case PAUSEKEY:
return "Pause";
break;
case INSERTKEY:
return "Insert";
break;
case HOMEKEY:
return "Home";
break;
case PAGEUPKEY:
return "Pageup";
break;
case PAGEDOWNKEY:
return "Pagedown";
break;
case ENDKEY:
return "End";
break;
}
return "";
}

View File

@@ -188,11 +188,6 @@
#define COMMANDKEY 172
#define GRLESSKEY 173
/* used as fake leftmouse events, special handled in interface.c */
#define BUT_ACTIVATE 200
#define BUT_NEXT 201
#define BUT_PREV 202
/* **************** BLENDER QUEUE EVENTS ********************* */
#define CHANGED 0x4000