Added cursor things...
This commit is contained in:
parent
d9a30b8470
commit
e55959171e
95
xource.c
95
xource.c
@ -63,38 +63,50 @@ static void cursor_limits (void) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void mode_switch (void);
|
||||||
|
|
||||||
static void mode_none (void) {
|
static void mode_none (void) {
|
||||||
return;
|
curses_bind (SIGNAL_ESCAPE, mode_switch);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void mode_insert (void) {
|
static void mode_insert (void) {
|
||||||
int signal;
|
int signal;
|
||||||
|
|
||||||
for (signal = SIGNAL_A; signal != SIGNAL_9; ++signal) {
|
for (signal = SIGNAL_A; signal != SIGNAL_COUNT; ++signal) {
|
||||||
|
if ((signal == SIGNAL_ESCAPE) || (signal == SIGNAL_BACKSPACE) || (signal == SIGNAL_CAPS_LOCK)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
curses_bind (signal, append_character);
|
curses_bind (signal, append_character);
|
||||||
curses_bind (signal | SIGNAL_SHIFT, append_character);
|
curses_bind (signal | SIGNAL_SHIFT, append_character);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
curses_bind (SIGNAL_ESCAPE, mode_switch);
|
||||||
|
curses_bind (SIGNAL_BACKSPACE, remove_character);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void mode_command (void) {
|
static void mode_command (void) {
|
||||||
return;
|
curses_bind (SIGNAL_ESCAPE, mode_switch);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void mode_switch (int mode) {
|
static void mode_switch (void) {
|
||||||
curses_action = deallocate (curses_action);
|
curses_action = deallocate (curses_action);
|
||||||
curses_activator = deallocate (curses_activator);
|
curses_activator = deallocate (curses_activator);
|
||||||
|
|
||||||
curses_action_count = 0;
|
curses_action_count = 0;
|
||||||
|
|
||||||
switch (mode) {
|
mode_active += 1;
|
||||||
|
mode_active %= MODE_COUNT;
|
||||||
|
|
||||||
|
switch (mode_active) {
|
||||||
case MODE_INSERT: mode_insert (); break;
|
case MODE_INSERT: mode_insert (); break;
|
||||||
case MODE_COMMAND: mode_command (); break;
|
case MODE_COMMAND: mode_command (); break;
|
||||||
default: mode_none (); break;
|
default: mode_none (); break;
|
||||||
}
|
}
|
||||||
|
|
||||||
curses_bind (SIGNAL_ESCAPE, curses_exit);
|
curses_bind (SIGNAL_ESCAPE | SIGNAL_SHIFT, curses_exit);
|
||||||
|
|
||||||
mode_active = mode;
|
mode_active = mode_active;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void render_status_bar (void) {
|
static void render_status_bar (void) {
|
||||||
@ -135,11 +147,11 @@ static void render_source_code (void) {
|
|||||||
|
|
||||||
if (cursor_y < curses_screen_height) {
|
if (cursor_y < curses_screen_height) {
|
||||||
for (offset = ++cursor_y; offset != curses_screen_height; ++offset) {
|
for (offset = ++cursor_y; offset != curses_screen_height; ++offset) {
|
||||||
curses_render_string (" ~", COLOUR_WHITE, EFFECT_REVERSE, 0, offset);
|
curses_render_string (" ~", mode_active, EFFECT_REVERSE, 0, offset);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#include <stdio.h>
|
||||||
int main (int argc, char * * argv) {
|
int main (int argc, char * * argv) {
|
||||||
char * separators = ".,:;<=>+-*/%!&~^?|()[]{}'\" \t\r\n";
|
char * separators = ".,:;<=>+-*/%!&~^?|()[]{}'\" \t\r\n";
|
||||||
|
|
||||||
@ -172,7 +184,7 @@ int main (int argc, char * * argv) {
|
|||||||
|
|
||||||
curses_configure ();
|
curses_configure ();
|
||||||
|
|
||||||
mode_switch (MODE_INSERT);
|
/*mode_switch ();*/
|
||||||
|
|
||||||
do {
|
do {
|
||||||
curses_render_background (' ', COLOUR_WHITE, EFFECT_NORMAL);
|
curses_render_background (' ', COLOUR_WHITE, EFFECT_NORMAL);
|
||||||
@ -180,56 +192,41 @@ int main (int argc, char * * argv) {
|
|||||||
render_status_bar ();
|
render_status_bar ();
|
||||||
render_source_code ();
|
render_source_code ();
|
||||||
|
|
||||||
cursor_x = 8;
|
|
||||||
cursor_y = 4;
|
|
||||||
|
|
||||||
curses_render_cursor (cursor_x, cursor_y);
|
curses_render_cursor (cursor_x, cursor_y);
|
||||||
|
|
||||||
curses_synchronize ();
|
curses_synchronize ();
|
||||||
|
/*
|
||||||
if (curses_signal == ('Q' & 0X1F)) {
|
dump ("a.log", number_to_string (curses_character));
|
||||||
|
dump ("a.log", "\n");
|
||||||
|
*/
|
||||||
|
if (curses_character == ('Q' & 0X1F)) {
|
||||||
curses_active = 0;
|
curses_active = 0;
|
||||||
} else if (curses_signal == '\r') {
|
} else if (curses_character == '\r') {
|
||||||
append_character ();
|
append_character ();
|
||||||
} else if (curses_signal == ('S' & 0X1F)) {
|
} else if (curses_character == ('S' & 0X1F)) {
|
||||||
file_list_export (file_list_name [file_list_active]);
|
file_list_export (file_list_name [file_list_active]);
|
||||||
} else if (curses_signal == (char) 127) {
|
} else if (curses_character == (char) 127) {
|
||||||
remove_character ();
|
remove_character ();
|
||||||
} else if (curses_signal == '\033') {
|
} else if (curses_character == 0X415B1B) {
|
||||||
in (& curses_signal, 1);
|
do {
|
||||||
if (curses_signal == '[') {
|
--cursor;
|
||||||
in (& curses_signal, 1);
|
} while ((cursor >= 0) && (file_list_data [file_list_active] [cursor] != '\n') && (file_list_data [file_list_active] [cursor] != '\0'));
|
||||||
if (curses_signal == 'A') {
|
--cursor;
|
||||||
do {
|
} else if (curses_character == 0X425B1B) {
|
||||||
--cursor;
|
do {
|
||||||
} while (
|
++cursor;
|
||||||
(cursor >= 0) &&
|
} while ((cursor <= file_list_size [file_list_active] - 1) && (file_list_data [file_list_active] [cursor] != '\n') && (file_list_data [file_list_active] [cursor] != '\0'));
|
||||||
(file_list_data [file_list_active] [cursor] != '\n') &&
|
++cursor;
|
||||||
(file_list_data [file_list_active] [cursor] != '\0')
|
} else if (curses_character == 0X435B1B) {
|
||||||
);
|
++cursor;
|
||||||
--cursor;
|
} else if (curses_character == 0X445B1B) {
|
||||||
} else if (curses_signal == 'B') {
|
--cursor;
|
||||||
do {
|
} else if ((curses_character >= ' ') && (curses_character <= '~')) {
|
||||||
++cursor;
|
|
||||||
} while (
|
|
||||||
(cursor <= file_list_size [file_list_active] - 1) &&
|
|
||||||
(file_list_data [file_list_active] [cursor] != '\n') &&
|
|
||||||
(file_list_data [file_list_active] [cursor] != '\0')
|
|
||||||
);
|
|
||||||
++cursor;
|
|
||||||
} else if (curses_signal == 'C') {
|
|
||||||
++cursor;
|
|
||||||
} else if (curses_signal == 'D') {
|
|
||||||
--cursor;
|
|
||||||
}
|
|
||||||
cursor_limits ();
|
|
||||||
}
|
|
||||||
} else if ((curses_signal >= ' ') && (curses_signal <= '~')) {
|
|
||||||
append_character ();
|
append_character ();
|
||||||
cursor_limits ();
|
|
||||||
} else {
|
} else {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
cursor_limits ();
|
||||||
} while (curses_active != 0);
|
} while (curses_active != 0);
|
||||||
|
|
||||||
file_list_delete ();
|
file_list_delete ();
|
||||||
|
Loading…
Reference in New Issue
Block a user