static inline void edit_set_buttonbar (WEdit * edit, WButtonBar * bb) { buttonbar_set_label (bb, 1, Q_ ("ButtonBar|Help"), editor_map, NULL); buttonbar_set_label (bb, 2, Q_ ("ButtonBar|Save"), editor_map, WIDGET (edit)); buttonbar_set_label (bb, 3, Q_ ("ButtonBar|Mark"), editor_map, WIDGET (edit)); buttonbar_set_label (bb, 4, Q_ ("ButtonBar|Replac"), editor_map, WIDGET (edit)); buttonbar_set_label (bb, 5, Q_ ("ButtonBar|Copy"), editor_map, WIDGET (edit)); buttonbar_set_label (bb, 6, Q_ ("ButtonBar|Move"), editor_map, WIDGET (edit)); buttonbar_set_label (bb, 7, Q_ ("ButtonBar|Search"), editor_map, WIDGET (edit)); buttonbar_set_label (bb, 8, Q_ ("ButtonBar|Delete"), editor_map, WIDGET (edit)); buttonbar_set_label (bb, 9, Q_ ("ButtonBar|PullDn"), editor_map, NULL); buttonbar_set_label (bb, 10, Q_ ("ButtonBar|Quit"), editor_map, NULL); }
static cb_ret_t tree_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm, void *data) { WTree *tree = (WTree *) w; WDialog *h = w->owner; WButtonBar *b; switch (msg) { case MSG_DRAW: tree_frame (h, tree); show_tree (tree); if (widget_get_state (w, WST_FOCUSED)) { b = find_buttonbar (h); widget_redraw (WIDGET (b)); } return MSG_HANDLED; case MSG_FOCUS: b = find_buttonbar (h); buttonbar_set_label (b, 1, Q_ ("ButtonBar|Help"), tree_map, w); buttonbar_set_label (b, 2, Q_ ("ButtonBar|Rescan"), tree_map, w); buttonbar_set_label (b, 3, Q_ ("ButtonBar|Forget"), tree_map, w); buttonbar_set_label (b, 4, tree_navigation_flag ? Q_ ("ButtonBar|Static") : Q_ ("ButtonBar|Dynamc"), tree_map, w); buttonbar_set_label (b, 5, Q_ ("ButtonBar|Copy"), tree_map, w); buttonbar_set_label (b, 6, Q_ ("ButtonBar|RenMov"), tree_map, w); #if 0 /* FIXME: mkdir is currently defunct */ buttonbar_set_label (b, 7, Q_ ("ButtonBar|Mkdir"), tree_map, w); #else buttonbar_clear_label (b, 7, w); #endif buttonbar_set_label (b, 8, Q_ ("ButtonBar|Rmdir"), tree_map, w); return MSG_HANDLED; case MSG_UNFOCUS: tree->searching = 0; return MSG_HANDLED; case MSG_KEY: return tree_key (tree, parm); case MSG_ACTION: /* command from buttonbar */ return tree_execute_cmd (tree, parm); case MSG_DESTROY: tree_destroy (tree); return MSG_HANDLED; default: return widget_default_callback (w, sender, msg, parm, data); } }
static void tree_toggle_navig (WTree * tree) { tree_navigation_flag = !tree_navigation_flag; buttonbar_set_label (find_buttonbar (WIDGET (tree)->owner), 4, tree_navigation_flag ? Q_ ("ButtonBar|Static") : Q_ ("ButtonBar|Dynamc"), tree_map, WIDGET (tree)); }
static void tree_toggle_navig (WTree * tree) { tree_navigation_flag = !tree_navigation_flag; buttonbar_set_label (find_buttonbar (tree->widget.owner), 4, tree_navigation_flag ? Q_ ("ButtonBar|Static") : Q_ ("ButtonBar|Dynamc"), tree_map, (Widget *) tree); }
static cb_ret_t tree_callback (Widget *w, widget_msg_t msg, int parm) { WTree *tree = (WTree *) w; Dlg_head *h = tree->widget.parent; switch (msg) { case WIDGET_DRAW: tree_frame (h, tree); show_tree (tree); return MSG_HANDLED; case WIDGET_KEY: return tree_key (tree, parm); case WIDGET_FOCUS: tree->active = 1; buttonbar_set_label (h, 1, _("Help"), tree_help_cmd); buttonbar_set_label_data (h, 2, _("Rescan"), tree_rescan_command, tree); buttonbar_set_label_data (h, 3, _("Forget"), tree_forget_cmd, tree); buttonbar_set_label_data (h, 5, _("Copy"), tree_copy_cmd, tree); buttonbar_set_label_data (h, 6, _("RenMov"), tree_move_cmd, tree); #if 0 /* FIXME: mkdir is currently defunct */ buttonbar_set_label_data (h, 7, _("Mkdir"), tree_mkdir_cmd, tree); #else buttonbar_clear_label (h, 7); #endif buttonbar_set_label_data (h, 8, _("Rmdir"), tree_rmdir_command, tree); set_navig_label (tree); buttonbar_redraw (h); /* FIXME: Should find a better way of only displaying the currently selected item */ show_tree (tree); return MSG_HANDLED; /* FIXME: Should find a better way of changing the color of the selected item */ case WIDGET_UNFOCUS: tree->active = 0; show_tree (tree); return MSG_HANDLED; case WIDGET_DESTROY: tree_destroy (tree); return MSG_HANDLED; default: return default_proc (msg, parm); } }
static void view_labels (WDiff *view) { Dlg_head *h = view->widget.parent; buttonbar_set_label(h, 1, Q_("ButtonBar|Help"), view_help_cmd); buttonbar_set_label_data(h, 4, Q_("ButtonBar|Edit"), (buttonbarfn)view_edit_cmd, view); buttonbar_set_label_data(h, 5, Q_("ButtonBar|Goto"), (buttonbarfn)view_goto_cmd, view); buttonbar_set_label_data(h, 7, Q_("ButtonBar|Search"), (buttonbarfn)view_search_cmd, view); buttonbar_set_label_data(h, 10, Q_("ButtonBar|Quit"), (buttonbarfn)view_quit_cmd, view); }
static void tree_toggle_navig (WTree * tree) { WButtonBar *b; tree_navigation_flag = !tree_navigation_flag; b = find_buttonbar (WIDGET (tree)->owner); buttonbar_set_label (b, 4, tree_navigation_flag ? Q_ ("ButtonBar|Static") : Q_ ("ButtonBar|Dynamc"), tree_map, WIDGET (tree)); widget_redraw (WIDGET (b)); }
/* event callback */ gboolean help_interactive_display (const gchar * event_group_name, const gchar * event_name, gpointer init_data, gpointer data) { const dlg_colors_t help_colors = { HELP_NORMAL_COLOR, /* common text color */ 0, /* unused in help */ HELP_BOLD_COLOR, /* bold text color */ 0, /* unused in help */ HELP_TITLE_COLOR /* title color */ }; WButtonBar *help_bar; Widget *md; char *hlpfile = NULL; char *filedata; ev_help_t *event_data = (ev_help_t *) data; (void) event_group_name; (void) event_name; (void) init_data; if (event_data->filename != NULL) g_file_get_contents (event_data->filename, &filedata, NULL, NULL); else filedata = load_mc_home_file (mc_global.share_data_dir, MC_HELP, &hlpfile); if (filedata == NULL) message (D_ERROR, MSG_ERROR, _("Cannot open file %s\n%s"), event_data->filename ? event_data->filename : hlpfile, unix_error_string (errno)); g_free (hlpfile); if (filedata == NULL) return TRUE; translate_file (filedata); g_free (filedata); if (fdata == NULL) return TRUE; if ((event_data->node == NULL) || (*event_data->node == '\0')) event_data->node = "[main]"; main_node = search_string (fdata, event_data->node); if (main_node == NULL) { message (D_ERROR, MSG_ERROR, _("Cannot find node %s in help file"), event_data->node); /* Fallback to [main], return if it also cannot be found */ main_node = search_string (fdata, "[main]"); if (main_node == NULL) { interactive_display_finish (); return TRUE; } } help_lines = min (LINES - 4, max (2 * LINES / 3, 18)); whelp = dlg_create (TRUE, 0, 0, help_lines + 4, HELP_WINDOW_WIDTH + 4, help_colors, help_callback, NULL, "[Help]", _("Help"), DLG_TRYUP | DLG_CENTER | DLG_WANT_TAB); selected_item = search_string_node (main_node, STRING_LINK_START) - 1; currentpoint = main_node + 1; /* Skip the newline following the start of the node */ for (history_ptr = HISTORY_SIZE; history_ptr;) { history_ptr--; history[history_ptr].page = currentpoint; history[history_ptr].link = selected_item; } help_bar = buttonbar_new (TRUE); WIDGET (help_bar)->y -= WIDGET (whelp)->y; WIDGET (help_bar)->x -= WIDGET (whelp)->x; md = mousedispatch_new (1, 1, help_lines, HELP_WINDOW_WIDTH - 2); add_widget (whelp, md); add_widget (whelp, help_bar); buttonbar_set_label (help_bar, 1, Q_ ("ButtonBar|Help"), help_map, NULL); buttonbar_set_label (help_bar, 2, Q_ ("ButtonBar|Index"), help_map, NULL); buttonbar_set_label (help_bar, 3, Q_ ("ButtonBar|Prev"), help_map, NULL); buttonbar_set_label (help_bar, 4, "", help_map, NULL); buttonbar_set_label (help_bar, 5, "", help_map, NULL); buttonbar_set_label (help_bar, 6, "", help_map, NULL); buttonbar_set_label (help_bar, 7, "", help_map, NULL); buttonbar_set_label (help_bar, 8, "", help_map, NULL); buttonbar_set_label (help_bar, 9, "", help_map, NULL); buttonbar_set_label (help_bar, 10, Q_ ("ButtonBar|Quit"), help_map, NULL); dlg_run (whelp); interactive_display_finish (); dlg_destroy (whelp); return TRUE; }
static void mcview_set_buttonbar (mcview_t * view) { Dlg_head *h = view->widget.owner; WButtonBar *b = find_buttonbar (h); const global_keymap_t *keymap = view->hex_mode ? viewer_hex_map : viewer_map; buttonbar_set_label (b, 1, Q_ ("ButtonBar|Help"), keymap, (Widget *) view); if (view->hex_mode) { if (view->hexedit_mode) buttonbar_set_label (b, 2, Q_ ("ButtonBar|View"), keymap, (Widget *) view); else if (view->datasource == DS_FILE) buttonbar_set_label (b, 2, Q_ ("ButtonBar|Edit"), keymap, (Widget *) view); else buttonbar_set_label (b, 2, "", keymap, (Widget *) view); buttonbar_set_label (b, 4, Q_ ("ButtonBar|Ascii"), keymap, (Widget *) view); buttonbar_set_label (b, 6, Q_ ("ButtonBar|Save"), keymap, (Widget *) view); buttonbar_set_label (b, 7, Q_ ("ButtonBar|HxSrch"), keymap, (Widget *) view); } else { buttonbar_set_label (b, 2, view->text_wrap_mode ? Q_ ("ButtonBar|UnWrap") : Q_ ("ButtonBar|Wrap"), keymap, (Widget *) view); buttonbar_set_label (b, 4, Q_ ("ButtonBar|Hex"), keymap, (Widget *) view); buttonbar_set_label (b, 6, "", keymap, (Widget *) view); buttonbar_set_label (b, 7, Q_ ("ButtonBar|Search"), keymap, (Widget *) view); } buttonbar_set_label (b, 5, Q_ ("ButtonBar|Goto"), keymap, (Widget *) view); buttonbar_set_label (b, 8, view->magic_mode ? Q_ ("ButtonBar|Raw") : Q_ ("ButtonBar|Parse"), keymap, (Widget *) view); if (mcview_is_in_panel (view)) buttonbar_set_label (b, 10, "", keymap, (Widget *) view); else { /* don't override some panel buttonbar keys */ buttonbar_set_label (b, 3, Q_ ("ButtonBar|Quit"), keymap, (Widget *) view); buttonbar_set_label (b, 9, view->text_nroff_mode ? Q_ ("ButtonBar|Unform") : Q_ ("ButtonBar|Format"), keymap, (Widget *) view); buttonbar_set_label (b, 10, Q_ ("ButtonBar|Quit"), keymap, (Widget *) view); } }
static cb_ret_t tree_callback (Widget * w, widget_msg_t msg, int parm) { WTree *tree = (WTree *) w; Dlg_head *h = tree->widget.owner; WButtonBar *b = find_buttonbar (h); switch (msg) { case WIDGET_DRAW: tree_frame (h, tree); show_tree (tree); return MSG_HANDLED; case WIDGET_FOCUS: tree->active = 1; buttonbar_set_label (b, 1, Q_ ("ButtonBar|Help"), tree_map, (Widget *) tree); buttonbar_set_label (b, 2, Q_ ("ButtonBar|Rescan"), tree_map, (Widget *) tree); buttonbar_set_label (b, 3, Q_ ("ButtonBar|Forget"), tree_map, (Widget *) tree); buttonbar_set_label (b, 4, tree_navigation_flag ? Q_ ("ButtonBar|Static") : Q_ ("ButtonBar|Dynamc"), tree_map, (Widget *) tree); buttonbar_set_label (b, 5, Q_ ("ButtonBar|Copy"), tree_map, (Widget *) tree); buttonbar_set_label (b, 6, Q_ ("ButtonBar|RenMov"), tree_map, (Widget *) tree); #if 0 /* FIXME: mkdir is currently defunct */ buttonbar_set_label (b, 7, Q_ ("ButtonBar|Mkdir"), tree_map, (Widget *) tree); #else buttonbar_clear_label (b, 7, (Widget *) tree); #endif buttonbar_set_label (b, 8, Q_ ("ButtonBar|Rmdir"), tree_map, (Widget *) tree); buttonbar_redraw (b); /* FIXME: Should find a better way of only displaying the currently selected item */ show_tree (tree); return MSG_HANDLED; /* FIXME: Should find a better way of changing the color of the selected item */ case WIDGET_UNFOCUS: tree->active = 0; tree->searching = 0; show_tree (tree); return MSG_HANDLED; case WIDGET_KEY: return tree_key (tree, parm); case WIDGET_COMMAND: /* command from buttonbar */ return tree_execute_cmd (tree, parm); case WIDGET_DESTROY: tree_destroy (tree); return MSG_HANDLED; default: return default_proc (msg, parm); } }