menuconfig: Add Save/Load buttons
PATCH 1/2 menuconfig: Add Save/Load buttons
If menuconfig have Save/Load button like alternative .config editors, xconfig, nconfig, etc.We will have a obvious benefit when use menuconfig just like when we use others, we can Save/Load our .config quickly and conveniently.
This patch add the Save/Load button for menuconfig.
[remove trailing space while at it for below line:
"*) Formerly when I used Page Down and Page Up, the cursor would be set" ]
--- scripts/kconfig/lxdialog/menubox.c | 20 +++++++++++--------- scripts/kconfig/mconf.c | 31 +++++++++++++++++++++++++------ 2 files changed, 36 insertions(+), 15 deletions(-)
scripts/kconfig/lxdialog/menubox.c +11 -9
@@ -26,7 +26,7 @@* * *) A bugfix for the Page-Down problem * -* *) Formerly when I used Page Down and Page Up, the cursor would be set +* *) Formerly when I used Page Down and Page Up, the cursor would be set * to the first position in the menu box. Now lxdialog is a bit * smarter and works more like other menu systems (just have a look at * it).
@@ -154,12 +154,14 @@ static void print_arrows(WINDOW * win, int item_no, int scroll, int y, int x,*/ static void print_buttons (WINDOW * win,int height,int width,int selected) { -int x = width /2 -16 ; +int x = width /2 -26 ;int y = height -2 ;print_button (win,gettext ("Select" ), y, x, selected ==0 );print_button (win,gettext (" Exit " ), y, x +12 , selected ==1 );print_button (win,gettext (" Help " ), y, x +24 , selected ==2 ); +print_button (win,gettext (" Save " ), y, x +36 , selected ==3 ); +print_button (win,gettext (" Load " ), y, x +48 , selected ==4 );wmove (win, y, x +1 +12 * selected);wrefresh (win);
@@ -372,7 +374,7 @@ do_resize:case TAB :case KEY_RIGHT : button = ((key ==KEY_LEFT ? --button : ++button) <0 ) - ?2 : (button >2 ?0 : button); + ?4 : (button >4 ?0 : button);print_buttons (dialog, height, width, button);wrefresh (menu);
@@ -399,17 +401,17 @@ do_resize:return 2 ;case 's' :case 'y' : -return 3 ; +return 5 ;case 'n' : -return 4 ; +return 6 ;case 'm' : -return 5 ; +return 7 ;case ' ' : -return 6 ; +return 8 ;case '/' : -return 7 ; +return 9 ;case 'z' : -return 8 ; +return 10 ;case '\n' :return button; }
scripts/kconfig/mconf.c +25 -6
@@ -280,6 +280,7 @@ static struct menu *current_menu;static int child_count;static int single_menu_mode;static int show_all_options; +static int save_and_exit;static void conf (struct menu *menu,struct menu *active_menu);static void conf_choice (struct menu *menu);
@@ -651,6 +652,12 @@ static void conf(struct menu *menu, struct menu *active_menu)show_helptext (_ ("README" ),_ (mconf_readme));break ;case 3 : +conf_save (); +break ; +case 4 : +conf_load (); +break ; +case 5 :if (item_is_tag ('t' )) {if (sym_set_tristate_value (sym, yes))break ;
@@ -658,24 +665,24 @@ static void conf(struct menu *menu, struct menu *active_menu)show_textbox (NULL , setmod_text,6 ,74 ); }break ; -case 4 : +case 6 :if (item_is_tag ('t' ))sym_set_tristate_value (sym, no);break ; -case 5 : +case 7 :if (item_is_tag ('t' ))sym_set_tristate_value (sym, mod);break ; -case 6 : +case 8 :if (item_is_tag ('t' ))sym_toggle_tristate_value (sym);else if (item_is_tag ('m' ))conf (submenu,NULL );break ; -case 7 : +case 9 :search_conf ();break ; -case 8 : +case 10 : show_all_options = !show_all_options;break ; }
@@ -702,6 +709,17 @@ static void show_helptext(const char *title, const char *text)show_textbox (title, text,0 ,0 ); } +static void conf_message_callback (const char *fmt,va_list ap) +{ +char buf[1024 ]; + +vsnprintf (buf,sizeof (buf), fmt, ap); +if (save_and_exit) +printf ("%s" , buf); +else +show_textbox (NULL , buf,6 ,60 ); +} +static void show_help (struct menu *menu) {struct gstr help =str_new ();
@@ -870,6 +888,7 @@ static int handle_exit(void) {int res; + save_and_exit =1 ;dialog_clear ();if (conf_get_changed ()) res = dialog_yesno(NULL,
@@ -941,6 +960,7 @@ int main(int ac, char **av) }set_config_filename (conf_get_configname ()); +conf_set_message_callback (conf_message_callback); do { conf(&rootmenu, NULL); res = handle_exit();
@@ -948,4 +968,3 @@ int main(int ac, char **av)return res; } -
Signature · 1 line
1.7.11.1.116.g8228a23
Wang, All,
Quoted 6 lines · On Monday 17 December 2012 Wang YanQing wrote:
If menuconfig have Save/Load button like alternative .config editors, xconfig, nconfig, etc.We will have a obvious benefit when use menuconfig just like when we use others, we can Save/Load our .config quickly and conveniently.
Quoted 7 lines
This patch add the Save/Load button for menuconfig.
[remove trailing space while at it for below line:
"*) Formerly when I used Page Down and Page Up, the cursor would be set" ]Signed-off-by Wang YanQing <[email protected]>
[--SNIP--]
scripts/kconfig/mconf.c
Quoted 4 lines
scripts/kconfig/mconf.c +0
-0
[--SNIP--]
scripts/kconfig/mconf.c static void show_helptext(const char *title, const char *text) · line 714
Quoted 7 lines
scripts/kconfig/mconf.c +3
-0@@ -702,6 +709,17 @@ static void show_helptext(const char *title, const char *text)show_textbox (title, text,0 ,0 ); } +static void conf_message_callback (const char *fmt,va_list ap) +{ +char buf[1024 ];
char buf[PATH_MAX+1];
[--SNIP--]
scripts/kconfig/mconf.c int main(int ac, char **av) · line 951
Quoted 5 lines
scripts/kconfig/mconf.c +0
-1@@ -948,4 +968,3 @@ int main(int ac, char **av)return res; } -
Spurious empty-line removal. Don't.
Otherwise, I've tested it, and it works great! :-)
Care to repost with the changes above (wait a bit in case of more review by others), and you'll get my tst-by and rev'ed-by tags.
Regards,
Yann E. MORIN.
Signature · 6 lines
.-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------'