enum shell_reply shell_exec_set(struct gnutella_shell *sh, int argc, const char *argv[]) { const char *verbose; const option_t options[] = { { "v", &verbose }, }; property_t prop; int parsed; shell_check(sh); g_assert(argv); g_assert(argc > 0); parsed = shell_options_parse(sh, argv, options, G_N_ELEMENTS(options)); if (parsed < 0) return REPLY_ERROR; argv += parsed; /* args[0] is first command argument */ argc -= parsed; /* counts only command arguments now */ if (argc < 1) { shell_set_msg(sh, _("Property missing")); goto error; } prop = gnet_prop_get_by_name(argv[0]); if (prop == NO_PROP) { shell_set_msg(sh, _("Unknown property")); goto error; } if (argc < 2) { shell_set_msg(sh, _("Value missing")); goto error; } if (gnet_prop_is_internal(prop)) { shell_set_msg(sh, _("Property cannot be changed")); goto error; } if (verbose) { shell_write_linef(sh, REPLY_READY, _("Previous value was %s"), shell_property_to_string(prop)); } gnet_prop_set_from_string(prop, argv[1]); if (verbose) { shell_write_linef(sh, REPLY_READY, _("New value is %s"), shell_property_to_string(prop)); } shell_set_msg(sh, _("Value found and set")); return REPLY_READY; error: return REPLY_ERROR; }
static void on_cell_edited(GtkCellRendererText *unused_renderer, const gchar *path_str, const gchar *text, gpointer unused_data) { GtkTreeView *tv; GtkTreeModel *model; GtkTreePath *path; GtkTreeIter iter; property_t prop; guint u; (void) unused_renderer; (void) unused_data; tv = GTK_TREE_VIEW(gui_dlg_prefs_lookup("treeview_dbg_property")); g_return_if_fail(NULL != tv); model = gtk_tree_view_get_model(tv); g_return_if_fail(NULL != model); path = gtk_tree_path_new_from_string(path_str); gtk_tree_model_get_iter(model, &iter, path); u = 0; gtk_tree_model_get(model, &iter, dbg_col_property, &u, (-1)); prop = (property_t) u; gnet_prop_set_from_string(prop, text); gtk_list_store_set(GTK_LIST_STORE(model), &iter, dbg_col_value, gnet_prop_to_string(prop), (-1)); gtk_tree_path_free(path); }
void on_entry_dbg_property_value_activate(GtkEditable *editable, gpointer unused_udata) { GtkCList *clist; (void) unused_udata; clist = GTK_CLIST(gui_dlg_prefs_lookup("clist_dbg_property")); if (clist->selection) { gchar *text; property_t prop; gint row; text = STRTRACK(gtk_editable_get_chars(editable, 0, -1)); row = GPOINTER_TO_INT(clist->selection->data); prop = GPOINTER_TO_UINT(gtk_clist_get_row_data(clist, row)); gnet_prop_set_from_string(prop, text); dbg_property_set_row(clist, row, prop); G_FREE_NULL(text); } }