From 64bc1ee1851a7846590107a3ea86893a137f1be8 Mon Sep 17 00:00:00 2001 From: ache Date: Mon, 21 Jan 2019 05:43:25 +0100 Subject: Edit instead of remplace --- main.c | 78 ++++++++++++++++++++++++++++++++----------------------------- readline.c | 9 ++++--- readline.h | 2 +- readline.o | Bin 0 -> 7384 bytes wind.c | 2 +- 5 files changed, 49 insertions(+), 42 deletions(-) create mode 100644 readline.o diff --git a/main.c b/main.c index a179c16..33dbab8 100755 --- a/main.c +++ b/main.c @@ -55,15 +55,15 @@ void fail_exit(const char *msg) { } -void edit_rl(menuC* menu,void func(TagLib_Tag *, const char*), int c); +void edit_rl(menuC* menu,void func(TagLib_Tag *, const char*), int c, const char* str); -void edit_rl(menuC* menu,void func(TagLib_Tag *, const char*), int c) { +void edit_rl(menuC* menu,void func(TagLib_Tag *, const char*), int c, const char* str) { status[1]=c; printStatus(); refresh(); curs_set(2); move(LINES-1, 0); - readline_n(); + readline_n(str); clear(); curs_set(0); itemC* it = menu->list+menu->hl; @@ -87,13 +87,15 @@ void edit_rl(menuC* menu,void func(TagLib_Tag *, const char*), int c) { } } } -void edit_rl_int(menuC* menu,void func(TagLib_Tag *, unsigned int), int c) { +void edit_rl_int(menuC* menu,void func(TagLib_Tag *, unsigned int), int c, int oldOne_int) { status[1]=c; printStatus(); refresh(); curs_set(2); move(LINES-1, 0); - readline_n(); + char oldOne[5]; + sprintf(oldOne, "%d", oldOne_int); + readline_n(oldOne); clear(); curs_set(0); itemC* it = menu->list+menu->hl; @@ -293,41 +295,43 @@ int main(int argc, char* argv[]){ // fprintf(stderr, "[%c]", c); } break; - case 'e': + case 'e': { echo(); move(LINES-1,1); - switch(c) { - case 't': - edit_rl(&menu,taglib_tag_set_title,'t'); - break; - case 'a': - edit_rl(&menu,taglib_tag_set_artist,'a'); - break; - case 'b': - edit_rl(&menu,taglib_tag_set_album,'b'); - break; - case 'y': - edit_rl_int(&menu,taglib_tag_set_year,'b'); - break; - case 'n': - edit_rl_int(&menu,taglib_tag_set_track,'b'); - break; - case 'g': - edit_rl(&menu,taglib_tag_set_genre,'g'); - break; - case 'c': - edit_rl(&menu,taglib_tag_set_comment,'c'); - break; - default: - ; - } - comp = 0; - status[0] = status[1] = 0; + itemC* it = menu.list+menu.hl; + switch(c) { + case 't': + edit_rl(&menu,taglib_tag_set_title,'t', taglib_tag_title(it->info.tag)); + break; + case 'a': + edit_rl(&menu,taglib_tag_set_artist,'a', taglib_tag_artist(it->info.tag)); + break; + case 'b': + edit_rl(&menu,taglib_tag_set_album,'b', taglib_tag_album(it->info.tag)); + break; + case 'y': + edit_rl_int(&menu,taglib_tag_set_year,'y', taglib_tag_year(it->info.tag)); + break; + case 'n': + edit_rl_int(&menu,taglib_tag_set_track,'n', taglib_tag_track(it->info.tag)); + break; + case 'g': + edit_rl(&menu,taglib_tag_set_genre,'g', taglib_tag_genre(it->info.tag)); + break; + case 'c': + edit_rl(&menu,taglib_tag_set_comment,'c', taglib_tag_comment(it->info.tag)); + break; + default: + ; + } + comp = 0; + status[0] = status[1] = 0; - printmenu(&menu); - printTagInfoHeader(); - printTagInfo(&menu); - break; + printmenu(&menu); + printTagInfoHeader(); + printTagInfo(&menu); + } + break; } printStatus(); printmenu(&menu); diff --git a/readline.c b/readline.c index 523d7d7..d9bf8e3 100644 --- a/readline.c +++ b/readline.c @@ -172,9 +172,14 @@ void init_readline(void) } -void readline_n(void) { +void readline_n(const char* str) { curs_set(2); resize(); + for( ; *str ; str++ ) { + if( *str != '\n' && *str != '\f' && *str != KEY_RESIZE ) { + forward_to_readline(*str); + } + } while (!should_exit) { // Using getch() here instead would refresh stdscr, overwriting the // initial contents of the other windows on startup @@ -197,5 +202,3 @@ void readline_n(void) { should_exit = 0; } - - diff --git a/readline.h b/readline.h index cf96e11..cf1e340 100644 --- a/readline.h +++ b/readline.h @@ -15,7 +15,7 @@ -void readline_n(void); +void readline_n(const char*); void init_readline(void); diff --git a/readline.o b/readline.o new file mode 100644 index 0000000..932a9cc Binary files /dev/null and b/readline.o differ diff --git a/wind.c b/wind.c index bbf23f2..78b9835 100644 --- a/wind.c +++ b/wind.c @@ -19,7 +19,7 @@ void prepare(char* s) { refresh(); strcpy(status, s); printStatus(); - readline_n(); + readline_n(""); clear(); curs_set(0); } -- cgit v1.2.3