diff options
author | Chris Davis <cd.rattan@gmail.com> | 2014-06-09 18:29:56 -0700 |
---|---|---|
committer | Michael Adam <obnox@samba.org> | 2014-10-01 14:32:08 +0200 |
commit | 7ad75367b2a42225a9f3539172e0b0e320d3a517 (patch) | |
tree | abd4e6c8ef36de1f1fe44553396e21c3c9c0654c /source3/utils/regedit.c | |
parent | 0ab07cb8069ae59e45fb0f6016096d30de9b4142 (diff) | |
download | samba-7ad75367b2a42225a9f3539172e0b0e320d3a517.tar.gz |
regedit: add multicolumn list widget
Widget works for lists with one or more column(s).
Column headers are optional.
As a test, the patch also modifies regedit to use the
new widget for viewing registry keys. Valuelist still
needs to be upgraded to use this.
Signed-off-by: Chris Davis <cd.rattan@gmail.com>
Reviewed-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Michael Adam <obnox@samba.org>
Diffstat (limited to 'source3/utils/regedit.c')
-rw-r--r-- | source3/utils/regedit.c | 28 |
1 files changed, 13 insertions, 15 deletions
diff --git a/source3/utils/regedit.c b/source3/utils/regedit.c index 77c254bfd0a..ea9aec89766 100644 --- a/source3/utils/regedit.c +++ b/source3/utils/regedit.c @@ -25,6 +25,7 @@ #include "regedit_treeview.h" #include "regedit_valuelist.h" #include "regedit_dialog.h" +#include "regedit_list.h" #include <ncurses.h> #include <menu.h> #include <panel.h> @@ -50,9 +51,6 @@ #define PATH_WIDTH (COLS - 6) #define PATH_WIDTH_MAX 1024 -#define PAIR_YELLOW_CYAN 1 -#define PAIR_BLACK_CYAN 2 - struct regedit { WINDOW *main_window; WINDOW *path_label; @@ -351,17 +349,17 @@ static void handle_tree_input(struct regedit *regedit, int c) switch (c) { case KEY_DOWN: - menu_driver(regedit->keys->menu, REQ_DOWN_ITEM); + tree_view_driver(regedit->keys, ML_CURSOR_DOWN); load_values(regedit); break; case KEY_UP: - menu_driver(regedit->keys->menu, REQ_UP_ITEM); + tree_view_driver(regedit->keys, ML_CURSOR_UP); load_values(regedit); break; case '\n': case KEY_ENTER: case KEY_RIGHT: - node = item_userptr(current_item(regedit->keys->menu)); + node = tree_view_get_current_node(regedit->keys); if (node && tree_node_has_children(node)) { tree_node_load_children(node); print_path(regedit, node->child_head); @@ -370,7 +368,7 @@ static void handle_tree_input(struct regedit *regedit, int c) } break; case KEY_LEFT: - node = item_userptr(current_item(regedit->keys->menu)); + node = tree_view_get_current_node(regedit->keys); if (node && node->parent) { print_path(regedit, node->parent); node = tree_node_first(node->parent); @@ -380,19 +378,19 @@ static void handle_tree_input(struct regedit *regedit, int c) break; case 'n': case 'N': - node = item_userptr(current_item(regedit->keys->menu)); + node = tree_view_get_current_node(regedit->keys); add_reg_key(regedit, node, false); break; case 's': case 'S': - node = item_userptr(current_item(regedit->keys->menu)); + node = tree_view_get_current_node(regedit->keys); add_reg_key(regedit, node, true); break; case 'd': case 'D': { int sel; - node = item_userptr(current_item(regedit->keys->menu)); + node = tree_view_get_current_node(regedit->keys); if (!node->parent) { break; } @@ -451,7 +449,7 @@ static void handle_value_input(struct regedit *regedit, int c) vitem = item_userptr(current_item(regedit->vl->menu)); if (vitem) { struct tree_node *node; - node = item_userptr(current_item(regedit->keys->menu)); + node = tree_view_get_current_node(regedit->keys); dialog_edit_value(regedit, node->key, vitem->type, vitem, binmode); value_list_load(regedit->vl, node->key); @@ -465,7 +463,7 @@ static void handle_value_input(struct regedit *regedit, int c) sel = dialog_select_type(regedit, &new_type); if (sel == DIALOG_OK) { struct tree_node *node; - node = item_userptr(current_item(regedit->keys->menu)); + node = tree_view_get_current_node(regedit->keys); dialog_edit_value(regedit, node->key, new_type, NULL, false); value_list_load(regedit->vl, node->key); @@ -483,8 +481,8 @@ static void handle_value_input(struct regedit *regedit, int c) "Really delete value \"%s\"?", vitem->value_name); if (sel == DIALOG_OK) { - ITEM *it = current_item(regedit->keys->menu); - struct tree_node *node = item_userptr(it); + struct tree_node *node; + node = tree_view_get_current_node(regedit->keys); reg_del_value(regedit, node->key, vitem->value_name); value_list_load(regedit->vl, node->key); @@ -590,6 +588,7 @@ static void display_window(TALLOC_CTX *mem_ctx, struct registry_context *ctx) assume_default_colors(COLOR_WHITE, COLOR_BLUE); init_pair(PAIR_YELLOW_CYAN, COLOR_YELLOW, COLOR_CYAN); init_pair(PAIR_BLACK_CYAN, COLOR_BLACK, COLOR_CYAN); + init_pair(PAIR_YELLOW_BLUE, COLOR_YELLOW, COLOR_BLUE); } regedit = talloc_zero(mem_ctx, struct regedit); @@ -620,7 +619,6 @@ static void display_window(TALLOC_CTX *mem_ctx, struct registry_context *ctx) print_heading(regedit); tree_view_show(regedit->keys); - menu_driver(regedit->keys->menu, REQ_FIRST_ITEM); load_values(regedit); value_list_show(regedit->vl); |