1999-11-09 12:10:10 -08:00
|
|
|
#include "epplet.h"
|
|
|
|
|
|
|
|
#define EPPLET_NAME "E-Exec"
|
1999-11-14 16:42:04 -08:00
|
|
|
#define EPPLET_VERSION "0.2"
|
1999-11-09 12:10:10 -08:00
|
|
|
#define EPPLET_INFO "Exec a command given by the user"
|
|
|
|
|
1999-11-11 17:08:28 -08:00
|
|
|
#define MAX_HIST_LEN 15
|
|
|
|
|
1999-11-09 12:10:10 -08:00
|
|
|
Epplet_gadget textbox = NULL;
|
1999-11-11 17:08:28 -08:00
|
|
|
char* command_history[MAX_HIST_LEN];
|
|
|
|
int current_command = 0;
|
|
|
|
int num_commands = 0;
|
1999-11-09 12:10:10 -08:00
|
|
|
|
1999-11-10 14:46:14 -08:00
|
|
|
static void cb_close(void *data);
|
|
|
|
static void run_contents(void *data);
|
|
|
|
|
|
|
|
static void
|
1999-11-09 12:10:10 -08:00
|
|
|
cb_close(void *data)
|
|
|
|
{
|
|
|
|
Epplet_cleanup();
|
1999-11-12 09:56:30 -08:00
|
|
|
Epplet_unremember();
|
1999-11-09 12:10:10 -08:00
|
|
|
exit(0);
|
1999-11-10 14:46:14 -08:00
|
|
|
data = NULL;
|
1999-11-09 12:10:10 -08:00
|
|
|
}
|
|
|
|
|
1999-11-10 14:46:14 -08:00
|
|
|
static void
|
1999-11-09 12:10:10 -08:00
|
|
|
run_contents(void *data)
|
|
|
|
{
|
1999-11-11 17:08:28 -08:00
|
|
|
char *command = Epplet_textbox_contents(textbox);
|
|
|
|
int i;
|
|
|
|
|
1999-11-12 10:33:56 -08:00
|
|
|
if(command == NULL)
|
|
|
|
return;
|
|
|
|
|
1999-11-11 17:08:28 -08:00
|
|
|
if(num_commands < MAX_HIST_LEN)
|
|
|
|
command_history[num_commands++] = strdup(command);
|
|
|
|
else
|
|
|
|
{
|
|
|
|
free(command_history[0]);
|
|
|
|
|
|
|
|
for(i=0; i < MAX_HIST_LEN; i++)
|
|
|
|
command_history[i] = command_history[i+1];
|
|
|
|
|
1999-11-12 09:47:01 -08:00
|
|
|
command_history[MAX_HIST_LEN-1] = strdup(command);
|
1999-11-11 17:08:28 -08:00
|
|
|
}
|
|
|
|
|
1999-11-11 19:46:39 -08:00
|
|
|
current_command = num_commands;
|
|
|
|
|
1999-11-10 19:23:11 -08:00
|
|
|
Epplet_spawn_command(command);
|
|
|
|
Epplet_reset_textbox(textbox);
|
1999-11-10 14:46:14 -08:00
|
|
|
return;
|
|
|
|
data = NULL;
|
1999-11-09 12:10:10 -08:00
|
|
|
}
|
|
|
|
|
1999-11-11 17:08:28 -08:00
|
|
|
static void
|
|
|
|
hist_last(void *data)
|
|
|
|
{
|
1999-11-12 15:32:49 -08:00
|
|
|
if (current_command == 0)
|
|
|
|
{
|
|
|
|
current_command = num_commands;
|
|
|
|
Epplet_reset_textbox(textbox);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
Epplet_change_textbox(textbox, command_history[--current_command]);
|
|
|
|
}
|
1999-11-12 01:50:31 -08:00
|
|
|
|
1999-11-11 23:07:49 -08:00
|
|
|
return;
|
|
|
|
data = NULL;
|
1999-11-11 17:08:28 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
hist_next(void *data)
|
|
|
|
{
|
1999-11-12 15:32:49 -08:00
|
|
|
if (current_command == num_commands - 1)
|
|
|
|
{
|
|
|
|
current_command++;
|
|
|
|
Epplet_reset_textbox(textbox);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
else if (current_command >= num_commands)
|
|
|
|
{
|
|
|
|
current_command = 0;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
current_command++;
|
|
|
|
}
|
|
|
|
Epplet_change_textbox(textbox, command_history[current_command]);
|
1999-11-12 01:50:31 -08:00
|
|
|
|
1999-11-11 23:07:49 -08:00
|
|
|
return;
|
|
|
|
data = NULL;
|
1999-11-11 17:08:28 -08:00
|
|
|
}
|
|
|
|
|
1999-11-09 12:10:10 -08:00
|
|
|
int
|
|
|
|
main(int argc, char *argv[])
|
|
|
|
{
|
|
|
|
atexit(Epplet_cleanup);
|
|
|
|
|
1999-11-14 16:42:04 -08:00
|
|
|
Epplet_Init(EPPLET_NAME, EPPLET_VERSION, EPPLET_INFO, 4, 3, argc, argv, 0);
|
1999-11-09 12:10:10 -08:00
|
|
|
|
1999-11-11 16:49:22 -08:00
|
|
|
Epplet_gadget_show(Epplet_create_button(NULL, NULL, 2, 2,
|
|
|
|
12, 12, "CLOSE", 0, NULL, cb_close, NULL));
|
|
|
|
|
1999-11-14 16:42:04 -08:00
|
|
|
Epplet_gadget_show(Epplet_create_label(18, 2, "E-Exec", 2));
|
|
|
|
|
|
|
|
Epplet_gadget_show(Epplet_create_button(NULL, NULL, 2, 16,
|
1999-11-11 17:08:28 -08:00
|
|
|
12, 12, "ARROW_UP", 0, NULL, hist_last, NULL));
|
1999-11-11 16:49:22 -08:00
|
|
|
|
1999-11-14 16:42:04 -08:00
|
|
|
Epplet_gadget_show(Epplet_create_button(NULL, NULL, 16, 16,
|
1999-11-11 17:08:28 -08:00
|
|
|
12, 12, "ARROW_DOWN", 0, NULL, hist_next, NULL));
|
1999-11-09 12:10:10 -08:00
|
|
|
|
1999-11-14 16:42:04 -08:00
|
|
|
Epplet_gadget_show(Epplet_create_button(NULL, NULL, 44, 16,
|
1999-11-11 16:49:22 -08:00
|
|
|
12, 12, "PLAY", 0, NULL, run_contents, NULL));
|
1999-11-10 19:23:11 -08:00
|
|
|
|
1999-11-09 12:10:10 -08:00
|
|
|
textbox =
|
1999-11-14 16:42:04 -08:00
|
|
|
Epplet_create_textbox(NULL, NULL, 2, 32, 60, 14, 2, run_contents, NULL);
|
1999-11-09 12:10:10 -08:00
|
|
|
|
|
|
|
Epplet_gadget_show(textbox);
|
|
|
|
|
|
|
|
Epplet_show();
|
|
|
|
Epplet_Loop();
|
|
|
|
return 0;
|
|
|
|
}
|