75 lines
2.3 KiB
C++
75 lines
2.3 KiB
C++
enum Action_Type{
|
|
DACT_OPEN,
|
|
DACT_SAVE_AS,
|
|
DACT_SAVE,
|
|
DACT_NEW,
|
|
DACT_SWITCH,
|
|
DACT_TRY_KILL,
|
|
DACT_KILL,
|
|
DACT_CLOSE_MINOR,
|
|
DACT_CLOSE_MAJOR,
|
|
DACT_THEME_OPTIONS,
|
|
DACT_KEYBOARD_OPTIONS,
|
|
};
|
|
|
|
struct Delayed_Action{
|
|
Action_Type type;
|
|
String string;
|
|
Panel* panel;
|
|
Editing_File* file;
|
|
};
|
|
|
|
struct Delay{
|
|
Delayed_Action* acts;
|
|
i32 count;
|
|
i32 max;
|
|
};
|
|
|
|
inline Delayed_Action*
|
|
delayed_action(Delay *delay, Action_Type type){
|
|
Delayed_Action *result;
|
|
Assert(delay->count < delay->max);
|
|
result = delay->acts + delay->count++;
|
|
*result = {};
|
|
result->type = type;
|
|
return(result);
|
|
}
|
|
|
|
inline Delayed_Action*
|
|
delayed_action(Delay *delay, Action_Type type, Panel* panel){
|
|
Delayed_Action *result;
|
|
result = delayed_action(delay, type);
|
|
result->panel = panel;
|
|
return(result);
|
|
}
|
|
|
|
inline Delayed_Action*
|
|
delayed_action(Delay *delay, Action_Type type, String string, Panel* panel){
|
|
Delayed_Action *result;
|
|
result = delayed_action(delay, type);
|
|
result->string = string;
|
|
result->panel = panel;
|
|
return(result);
|
|
}
|
|
|
|
inline Delayed_Action*
|
|
delayed_action(Delay *delay, Action_Type type, String string, Editing_File* file){
|
|
Delayed_Action *result;
|
|
result = delayed_action(delay, type);
|
|
result->string = string;
|
|
result->file = file;
|
|
return(result);
|
|
}
|
|
|
|
#define delayed_open(delay, ...) delayed_action(delay, DACT_OPEN, __VA_ARGS__)
|
|
#define delayed_save_as(delay, ...) delayed_action(delay, DACT_SAVE_AS, __VA_ARGS__)
|
|
#define delayed_save(delay, ...) delayed_action(delay, DACT_SAVE, __VA_ARGS__)
|
|
#define delayed_new(delay, ...) delayed_action(delay, DACT_NEW, __VA_ARGS__)
|
|
#define delayed_switch(delay, ...) delayed_action(delay, DACT_SWITCH, __VA_ARGS__)
|
|
#define delayed_try_kill(delay, ...) delayed_action(delay, DACT_TRY_KILL, __VA_ARGS__)
|
|
#define delayed_kill(delay, ...) delayed_action(delay, DACT_KILL, __VA_ARGS__)
|
|
#define delayed_close_minor(delay, ...) delayed_action(delay, DACT_CLOSE_MINOR, __VA_ARGS__)
|
|
#define delayed_close_major(delay, ...) delayed_action(delay, DACT_CLOSE_MAJOR, __VA_ARGS__)
|
|
#define delayed_theme_options(delay, ...) delayed_action(delay, DACT_THEME_OPTIONS, __VA_ARGS__)
|
|
#define delayed_keyboard_options(delay, ...) delayed_action(delay, DACT_KEYBOARD_OPTIONS, __VA_ARGS__)
|