Add utility functions to create "Abort" and "Accept" window actions

Subversion-branch: /trunk/chocolate-doom
Subversion-revision: 551
This commit is contained in:
Simon Howard 2006-06-02 19:45:41 +00:00
parent e9619f83e9
commit 02f4a0dcf4
3 changed files with 33 additions and 12 deletions

View file

@ -37,13 +37,6 @@ void TXT_SetWindowAction(txt_window_t *window,
window->actions[position] = action;
}
static void DefaultCancelAction(TXT_UNCAST_ARG(widget), TXT_UNCAST_ARG(window))
{
TXT_CAST_ARG(txt_window_t, window);
TXT_CloseWindow(window);
}
txt_window_t *TXT_NewWindow(char *title)
{
int i;
@ -79,11 +72,8 @@ txt_window_t *TXT_NewWindow(char *title)
// Default actions
cancel_action = TXT_NewWindowAction(KEY_ESCAPE, "Abort");
TXT_SetWindowAction(win, TXT_HORIZ_LEFT, cancel_action);
TXT_SignalConnect(cancel_action, "pressed", DefaultCancelAction, win);
accept_action = TXT_NewWindowAction(KEY_ENTER, "Accept");
TXT_SetWindowAction(win, TXT_HORIZ_RIGHT, accept_action);
TXT_SetWindowAction(win, TXT_HORIZ_LEFT, TXT_NewWindowEscapeAction(win));
TXT_SetWindowAction(win, TXT_HORIZ_RIGHT, TXT_NewWindowAcceptAction());
return win;
}

View file

@ -79,3 +79,25 @@ txt_window_action_t *TXT_NewWindowAction(int key, char *label)
return action;
}
static void WindowCloseCallback(TXT_UNCAST_ARG(widget), TXT_UNCAST_ARG(window))
{
TXT_CAST_ARG(txt_window_t, window);
TXT_CloseWindow(window);
}
txt_window_action_t *TXT_NewWindowEscapeAction(txt_window_t *window)
{
txt_window_action_t *action;
action = TXT_NewWindowAction(KEY_ESCAPE, "Abort");
TXT_SignalConnect(action, "pressed", WindowCloseCallback, window);
return action;
}
txt_window_action_t *TXT_NewWindowAcceptAction(void)
{
return TXT_NewWindowAction(KEY_ENTER, "Accept");
}

View file

@ -28,6 +28,7 @@
typedef struct txt_window_action_s txt_window_action_t;
#include "txt_widget.h"
#include "txt_window.h"
struct txt_window_action_s
{
@ -38,5 +39,13 @@ struct txt_window_action_s
txt_window_action_t *TXT_NewWindowAction(int key, char *label);
// Creates an "escape" button that closes the window
txt_window_action_t *TXT_NewWindowEscapeAction(txt_window_t *window);
// Accept button that does nothing
txt_window_action_t *TXT_NewWindowAcceptAction(void);
#endif /* #ifndef TXT_WINDOW_ACTION_H */