diff options
Diffstat (limited to 'main.c')
| -rw-r--r-- | main.c | 45 |
1 files changed, 43 insertions, 2 deletions
@@ -706,8 +706,9 @@ void initialize_tui() { setlocale(LC_ALL, "C.UTF-8"); // Sets locale for C library functions; Allows usage of UTF-8. initscr(); // Start curses mode. cbreak(); // Line buffering disabled; pass on everty thing to me. - keypad(stdscr, TRUE); // I need that nifty F1 + keypad(stdscr, TRUE); // I need that nifty F1. curs_set(0); // Set cursor invisible. + noecho(); // Disable echoing input characters. // Initialize pairs of colors. start_color(); @@ -1090,8 +1091,10 @@ int main(int argc, char *argv[]) { addstr(string_buffer); // Get new task name. + echo(); curs_set(1); mvgetnstr(selected_task_row, 1, string_buffer, MAX_TASK_NAME-1); + noecho(); curs_set(0); // Apply new task name. @@ -1107,7 +1110,7 @@ int main(int argc, char *argv[]) { if (selected_task == NULL || selected_task == active_task) { break; } - + refresh(); const char *message = "Press enter to delete."; const size_t length = strlen(message); int left_padding = ((size_x - 2) - length) / 2; @@ -1125,6 +1128,44 @@ int main(int argc, char *argv[]) { break; } + case 'g': + case 'G': { + if (selected_task == NULL) { + break; + } + + // TODO WIP + + const char *message = " Go to: "; + const int length = strlen(message); + int available = layouts[1].columns[0].width - length; + sprintf(string_buffer, "%s%*s", message, available, ""); + + attron(COLOR_PAIR(selected_task_theme) | A_BOLD); + mvaddch(size_y - 1, 0, ACS_DIAMOND); + mvaddstr(size_y - 1, 1, string_buffer); + + // Get line number. + echo(); + curs_set(1); + mvgetnstr(size_y - 1, 1 + length, string_buffer, available-1); + noecho(); + curs_set(0); + + attrset(A_NORMAL); + + if (is_empty_string(string_buffer) == true) { + break; + } + + intmax_t input = strtoimax(string_buffer, NULL, 10) - 1; + db->selected_task = input < 0 ? 0 : + input >= db->count ? db->count - 1 : + input; + + break; + } + case KEY_F(4): { if (selected_task == NULL) { break; |
