static cb_ret_t configure_callback (Dlg_head * h, Widget * sender, dlg_msg_t msg, int parm, void *data) { switch (msg) { case DLG_ACTION: /* message from "Single press" checkbutton */ if (sender != NULL && sender->id == 17) { const gboolean not_single = !(((WCheck *) sender)->state & C_BOOL); Widget *w; /* label */ w = dlg_find_by_id (h, sender->id - 1); widget_disable (*w, not_single); send_message (w, WIDGET_DRAW, 0); /* input */ w = dlg_find_by_id (h, sender->id - 2); widget_disable (*w, not_single); send_message (w, WIDGET_DRAW, 0); return MSG_HANDLED; } return MSG_NOT_HANDLED; default: return default_dlg_callback (h, sender, msg, parm, data); } }
static cb_ret_t confvfs_callback (Dlg_head * h, Widget * sender, dlg_msg_t msg, int parm, void *data) { switch (msg) { case DLG_ACTION: if (sender->id == 6) { /* message from "Always use ftp proxy" checkbutton */ const gboolean not_use = !(((WCheck *) sender)->state & C_BOOL); Widget *w; /* input */ w = dlg_find_by_id (h, sender->id - 1); widget_disable (*w, not_use); send_message (w, WIDGET_DRAW, 0); return MSG_HANDLED; } return MSG_NOT_HANDLED; default: return default_dlg_callback (h, sender, msg, parm, data); } }
static int sel_skin_button (WButton * button, int action) { int result; WListbox *skin_list; WDialog *skin_dlg; const gchar *skin_name; int lxx, lyy; unsigned int i; unsigned int pos = 1; (void) action; lxx = COLS / 2; lyy = (LINES - 13) / 2; skin_dlg = dlg_create (TRUE, lyy, lxx, 13, 24, dialog_colors, NULL, NULL, "[Appearance]", _("Skins"), DLG_COMPACT); skin_list = listbox_new (1, 1, 11, 22, FALSE, NULL); skin_name = "default"; listbox_add_item (skin_list, LISTBOX_APPEND_AT_END, 0, skin_name_to_label (skin_name), (void *) skin_name); if (strcmp (skin_name, current_skin_name) == 0) listbox_select_entry (skin_list, 0); for (i = 0; i < skin_names->len; i++) { skin_name = g_ptr_array_index (skin_names, i); if (strcmp (skin_name, "default") != 0) { listbox_add_item (skin_list, LISTBOX_APPEND_AT_END, 0, skin_name_to_label (skin_name), (void *) skin_name); if (strcmp (skin_name, current_skin_name) == 0) listbox_select_entry (skin_list, pos); pos++; } } add_widget (skin_dlg, skin_list); result = dlg_run (skin_dlg); if (result == B_ENTER) { Widget *w; gchar *skin_label; listbox_get_current (skin_list, &skin_label, (void **) &skin_name); g_free (current_skin_name); current_skin_name = g_strdup (skin_name); skin_apply (skin_name); w = dlg_find_by_id (WIDGET (button)->owner, skin_name_id); button_set_text (BUTTON (w), str_fit_to_term (skin_label, 20, J_LEFT_FIT)); } dlg_destroy (skin_dlg); return 0; }
void dlg_select_by_id (const WDialog * h, unsigned long id) { Widget *w; w = dlg_find_by_id (h, id); if (w != NULL) dlg_select_widget (w); }
void dlg_select_by_id (const Dlg_head * h, unsigned int id) { Widget *w; w = dlg_find_by_id (h, id); if (w != NULL) dlg_select_widget (w); }
static cb_ret_t panel_listing_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm, void *data) { WDialog *h = DIALOG (w); switch (msg) { case MSG_NOTIFY: if (sender != NULL && sender->id == panel_listing_types_id) { WCheck *ch; WInput *in1, *in2, *in3; in1 = INPUT (dlg_find_by_id (h, panel_user_format_id)); in2 = INPUT (dlg_find_by_id (h, panel_brief_cols_id)); ch = CHECK (dlg_find_by_id (h, mini_user_status_id)); in3 = INPUT (dlg_find_by_id (h, mini_user_format_id)); if (!(ch->state & C_BOOL)) input_assign_text (in3, status_format[RADIO (sender)->sel]); input_update (in1, FALSE); input_update (in2, FALSE); input_update (in3, FALSE); widget_disable (WIDGET (in1), RADIO (sender)->sel != panel_listing_user_idx); widget_disable (WIDGET (in2), RADIO (sender)->sel != panel_listing_brief_idx); return MSG_HANDLED; } if (sender != NULL && sender->id == mini_user_status_id) { WInput *in; in = INPUT (dlg_find_by_id (h, mini_user_format_id)); if (CHECK (sender)->state & C_BOOL) { widget_disable (WIDGET (in), FALSE); input_assign_text (in, status_format[3]); } else { WRadio *r; r = RADIO (dlg_find_by_id (h, panel_listing_types_id)); widget_disable (WIDGET (in), TRUE); input_assign_text (in, status_format[r->sel]); } /* input_update (in, FALSE); */ return MSG_HANDLED; } return MSG_NOT_HANDLED; default: return dlg_default_callback (w, sender, msg, parm, data); } }
static void menubar_remove (WMenuBar * menubar) { WDialog *h; if (!menubar->is_dropped) return; /* HACK: before refresh the dialog, change the current widget to keep the order of overlapped widgets. This is useful in multi-window editor. In general, menubar should be a special object, not an ordinary widget in the current dialog. */ h = WIDGET (menubar)->owner; h->current = g_list_find (h->widgets, dlg_find_by_id (h, menubar->previous_widget)); menubar->is_dropped = FALSE; do_refresh (); menubar->is_dropped = TRUE; /* restore current widget */ h->current = g_list_find (h->widgets, menubar); }
static cb_ret_t confvfs_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm, void *data) { switch (msg) { case MSG_ACTION: /* message from "Always use ftp proxy" checkbutton */ if (sender != NULL && sender->id == ftpfs_always_use_proxy_id) { const gboolean not_use = !(CHECK (sender)->state & C_BOOL); Widget *wi; /* input */ wi = dlg_find_by_id (DIALOG (w), ftpfs_proxy_host_id); widget_disable (wi, not_use); return MSG_HANDLED; } return MSG_NOT_HANDLED; default: return dlg_default_callback (w, sender, msg, parm, data); } }
static cb_ret_t configure_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm, void *data) { switch (msg) { case MSG_ACTION: /* message from "Single press" checkbutton */ if (sender != NULL && sender->id == configure_old_esc_mode_id) { const gboolean not_single = !(CHECK (sender)->state & C_BOOL); Widget *ww; /* input line */ ww = dlg_find_by_id (DIALOG (w), configure_time_out_id); widget_disable (ww, not_single); return MSG_HANDLED; } return MSG_NOT_HANDLED; default: return dlg_default_callback (w, sender, msg, parm, data); } }
static cb_ret_t panel_listing_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm, void *data) { WDialog *h = DIALOG (w); switch (msg) { case MSG_KEY: if (parm == '\n') { Widget *wi; wi = dlg_find_by_id (h, panel_listing_types_id); if (widget_is_active (wi)) { WInput *in; in = INPUT (dlg_find_by_id (h, mini_user_format_id)); input_assign_text (in, status_format[RADIO (wi)->sel]); dlg_stop (h); return MSG_HANDLED; } wi = dlg_find_by_id (h, panel_user_format_id); if (widget_is_active (wi)) { h->ret_value = B_USER + 6; dlg_stop (h); return MSG_HANDLED; } wi = dlg_find_by_id (h, mini_user_format_id); if (widget_is_active (wi)) { h->ret_value = B_USER + 7; dlg_stop (h); return MSG_HANDLED; } } if (g_ascii_tolower (parm) == listing_user_hotkey) { Widget *wi; wi = dlg_find_by_id (h, panel_user_format_id); if (widget_is_active (wi)) { wi = dlg_find_by_id (h, mini_user_format_id); if (widget_is_active (wi)) { WRadio *r; r = RADIO (dlg_find_by_id (h, panel_listing_types_id)); r->pos = r->sel = panel_listing_user_idx; dlg_select_widget (WIDGET (r)); /* force redraw */ send_message (h, r, MSG_ACTION, 0, NULL); return MSG_HANDLED; } } } return MSG_NOT_HANDLED; case MSG_ACTION: if (sender != NULL && sender->id == panel_listing_types_id) { WCheck *ch; WInput *in1, *in2, *in3; in1 = INPUT (dlg_find_by_id (h, panel_user_format_id)); in2 = INPUT (dlg_find_by_id (h, panel_brief_cols_id)); ch = CHECK (dlg_find_by_id (h, mini_user_status_id)); in3 = INPUT (dlg_find_by_id (h, mini_user_format_id)); if (!(ch->state & C_BOOL)) input_assign_text (in3, status_format[RADIO (sender)->sel]); input_update (in1, FALSE); input_update (in2, FALSE); input_update (in3, FALSE); widget_disable (WIDGET (in1), RADIO (sender)->sel != panel_listing_user_idx); widget_disable (WIDGET (in2), RADIO (sender)->sel != panel_listing_brief_idx); return MSG_HANDLED; } if (sender != NULL && sender->id == mini_user_status_id) { WInput *in; in = INPUT (dlg_find_by_id (h, mini_user_format_id)); if (CHECK (sender)->state & C_BOOL) { widget_disable (WIDGET (in), FALSE); input_assign_text (in, status_format[3]); } else { WRadio *r; r = RADIO (dlg_find_by_id (h, panel_listing_types_id)); widget_disable (WIDGET (in), TRUE); input_assign_text (in, status_format[r->sel]); } /* input_update (in, FALSE); */ return MSG_HANDLED; } return MSG_NOT_HANDLED; default: return dlg_default_callback (w, sender, msg, parm, data); } }