summaryrefslogtreecommitdiff
path: root/src/widget/widget_catchkey.c
diff options
context:
space:
mode:
authororoborus <oroborus@0ee4d065-81f0-4d1e-b06c-ff20ad07cc3e>2008-07-27 20:19:48 +0000
committeroroborus <oroborus@0ee4d065-81f0-4d1e-b06c-ff20ad07cc3e>2008-07-27 20:19:48 +0000
commitaf204026313ece9a12ec89f59adf554e0639783b (patch)
tree0fe1df635e39fa85c78cb0cdc92fc85c3f564d7c /src/widget/widget_catchkey.c
parent90ef234fb0602d80ed5416ab0492511b83ac6df5 (diff)
- novy vydget catchkey
- vo widget_textfield.c boli dve nepotrebne premnne a bola volana jedna nepotrebna funkcia git-svn-id: http://opensvn.csie.org/tuxanci_ng@172 0ee4d065-81f0-4d1e-b06c-ff20ad07cc3e
Diffstat (limited to 'src/widget/widget_catchkey.c')
-rw-r--r--src/widget/widget_catchkey.c104
1 files changed, 104 insertions, 0 deletions
diff --git a/src/widget/widget_catchkey.c b/src/widget/widget_catchkey.c
new file mode 100644
index 0000000..7443358
--- /dev/null
+++ b/src/widget/widget_catchkey.c
@@ -0,0 +1,104 @@
+
+#include <stdlib.h>
+
+#include "main.h"
+#include "interface.h"
+#include "font.h"
+#include "widget_catchkey.h"
+
+widget_catchkey_t* newWidgetCatchkey(int x, int y, int key)
+{
+ widget_catchkey_t *new;
+
+ new = malloc( sizeof(widget_catchkey_t) );
+
+ new->x = x;
+ new->y = y;
+ new->key = key;
+
+ return new;
+}
+
+int getWidgetCatchKey(widget_catchkey_t *p)
+{
+ return p->key;
+}
+
+void setWidgetCatchKey(widget_catchkey_t *p, int key)
+{
+ p->key = key;
+}
+
+void drawWidgetCatchkey(widget_catchkey_t *p)
+{
+ char *name;
+
+ name = NULL;
+
+ if( p->key != WIDGET_CATCHKEY_NOKEY )
+ {
+ name = (char *) SDL_GetKeyName(p->key);
+ }
+
+ if( name == NULL )
+ {
+ name = "no key";
+ }
+
+ drawFont(name, p->x, p->y, COLOR_WHITE);
+}
+
+static int getPessAnyKey()
+{
+ Uint8 *mapa;
+ int i;
+
+ mapa = SDL_GetKeyState(NULL);
+
+ for( i = SDLK_FIRST ; i <= SDLK_F15 ; i++ )
+ {
+ if( mapa[i] == SDL_PRESSED )
+ {
+ return i;
+ }
+ }
+
+ return WIDGET_CATCHKEY_NOKEY;
+}
+
+void eventWidgetCatchkey(widget_catchkey_t *p)
+{
+ int x, y;
+
+ getMousePosition(&x, &y);
+
+ if( isMouseClicked() )
+ {
+ if( x >= p->x && x <= p->x+WIDGET_CATCHKEY_WIDTH &&
+ y >= p->y && y <= p->y+WIDGET_CATCHKEY_HEIGHT )
+ {
+ p->active = TRUE;
+ }
+ else
+ {
+ p->active = FALSE;
+ }
+ }
+
+ if( p->active == TRUE )
+ {
+ int key;
+
+ key = getPessAnyKey();
+
+ if( key != WIDGET_CATCHKEY_NOKEY )
+ {
+ p->key = key;
+ }
+ }
+}
+
+void destroyWidgetCatchkey(widget_catchkey_t *p)
+{
+ free(p);
+}