static void pref_update(GtkWidget *widget, char *pref) { if (purple_prefs_get_type(pref) == PURPLE_PREF_INT) purple_prefs_set_int(pref, gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widget))); if (purple_prefs_get_type(pref) == PURPLE_PREF_BOOLEAN) purple_prefs_set_bool(pref, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget))); }
void purple_plugin_pref_set_bounds(PurplePluginPref *pref, int min, int max) { int tmp; g_return_if_fail(pref != NULL); g_return_if_fail(pref->name != NULL); if (purple_prefs_get_type(pref->name) != PURPLE_PREF_INT) { purple_debug_warning("pluginpref", "purple_plugin_pref_set_bounds: %s is not an integer pref\n", pref->name); return; } if (min > max) { tmp = min; min = max; max = tmp; } pref->min = min; pref->max = max; }
void purple_plugin_pref_add_choice(PurplePluginPref *pref, const char *label, gpointer choice) { g_return_if_fail(pref != NULL); g_return_if_fail(label != NULL); g_return_if_fail(choice || purple_prefs_get_type(pref->name) == PURPLE_PREF_INT); pref->choices = g_list_append(pref->choices, g_strdup(label)); pref->choices = g_list_append(pref->choices, choice); }
xmlnode * _h_elim_set_prefs ( const char *name , const char *id , SEXP_VALUE *args , gpointer data ) { ASSERT_ALISTP( args, id, name ); elim_ping(); xmlnode *rval = xnode_new( "alist" ); xmlnode *set = xnode_new( "alist" ); GHashTable *prefs = ALIST_VAL_ALIST( args, "prefs" ); SEXP_VALUE *PREFS = ALIST_VAL ( args, "prefs" ); AL_NODE( rval, "prefs", set ); fprintf( stderr, "hash: %p; sexp: %p\n", prefs, PREFS ); if( prefs ) { GList *key = NULL; GList *keys = g_hash_table_get_keys( prefs ); fprintf( stderr, "keys: %p", keys ); for( key = keys; key; key = key->next ) { gboolean done = TRUE; const char *pref = key->data; PurplePrefType type = purple_prefs_get_type( pref ); switch( type ) { case PURPLE_PREF_BOOLEAN: purple_prefs_set_bool ( pref, ALIST_VAL_BOOL( PREFS, pref ) ); break; case PURPLE_PREF_INT: purple_prefs_set_int ( pref, ALIST_VAL_INT ( PREFS, pref ) ); break; case PURPLE_PREF_STRING: purple_prefs_set_string( pref, ALIST_VAL_STR ( PREFS, pref ) ); break; case PURPLE_PREF_PATH: purple_prefs_set_path ( pref, ALIST_VAL_STR ( PREFS, pref ) ); break; default: done = FALSE; } AL_BOOL( set, pref, done ); } g_list_free( keys ); } sexp_val_free( args ); return response_value( 0, id, name, rval ); }
void finch_request_save_in_prefs(gpointer null, PurpleRequestFields *allfields) { GList *list; for (list = purple_request_fields_get_groups(allfields); list; list = list->next) { PurpleRequestFieldGroup *group = list->data; GList *fields = purple_request_field_group_get_fields(group); for (; fields ; fields = fields->next) { PurpleRequestField *field = fields->data; PurpleRequestFieldType type = purple_request_field_get_type(field); PurplePrefType pt; gpointer val = NULL; const char *id = purple_request_field_get_id(field); switch (type) { case PURPLE_REQUEST_FIELD_LIST: val = purple_request_field_list_get_selected(field)->data; break; case PURPLE_REQUEST_FIELD_BOOLEAN: val = GINT_TO_POINTER(purple_request_field_bool_get_value(field)); break; case PURPLE_REQUEST_FIELD_INTEGER: val = GINT_TO_POINTER(purple_request_field_int_get_value(field)); break; case PURPLE_REQUEST_FIELD_STRING: val = (gpointer)purple_request_field_string_get_value(field); break; default: break; } pt = purple_prefs_get_type(id); switch (pt) { case PURPLE_PREF_INT: { long int tmp = GPOINTER_TO_INT(val); if (type == PURPLE_REQUEST_FIELD_LIST) /* Lists always return string */ sscanf(val, "%ld", &tmp); purple_prefs_set_int(id, (gint)tmp); break; } case PURPLE_PREF_BOOLEAN: purple_prefs_set_bool(id, GPOINTER_TO_INT(val)); break; case PURPLE_PREF_STRING: purple_prefs_set_string(id, val); break; default: break; } } } }
void purple_plugin_pref_get_bounds(PurplePluginPref *pref, int *min, int *max) { g_return_if_fail(pref != NULL); g_return_if_fail(pref->name != NULL); if (purple_prefs_get_type(pref->name) != PURPLE_PREF_INT) { purple_debug_warning("pluginpref", "purple_plugin_pref_get_bounds: %s is not an integer pref\n", pref->name); return; } *min = pref->min; *max = pref->max; }
static GntWidget* process_pref_frame(PurplePluginPrefFrame *frame) { PurpleRequestField *field; PurpleRequestFields *fields; PurpleRequestFieldGroup *group = NULL; GList *prefs; GList *stringlist = NULL; GntWidget *ret = NULL; fields = purple_request_fields_new(); for (prefs = purple_plugin_pref_frame_get_prefs(frame); prefs; prefs = prefs->next) { PurplePluginPref *pref = prefs->data; PurplePrefType type; const char *name = purple_plugin_pref_get_name(pref); const char *label = purple_plugin_pref_get_label(pref); if(name == NULL) { if(label == NULL) continue; if(purple_plugin_pref_get_type(pref) == PURPLE_PLUGIN_PREF_INFO) { field = purple_request_field_label_new("*", purple_plugin_pref_get_label(pref)); purple_request_field_group_add_field(group, field); } else { group = purple_request_field_group_new(label); purple_request_fields_add_group(fields, group); } continue; } field = NULL; type = purple_prefs_get_type(name); if(purple_plugin_pref_get_type(pref) == PURPLE_PLUGIN_PREF_CHOICE) { GList *list = purple_plugin_pref_get_choices(pref); gpointer current_value = NULL; switch(type) { case PURPLE_PREF_BOOLEAN: current_value = g_strdup_printf("%d", (int)purple_prefs_get_bool(name)); break; case PURPLE_PREF_INT: current_value = g_strdup_printf("%d", (int)purple_prefs_get_int(name)); break; case PURPLE_PREF_STRING: current_value = g_strdup(purple_prefs_get_string(name)); break; default: continue; } field = purple_request_field_list_new(name, label); purple_request_field_list_set_multi_select(field, FALSE); while (list && list->next) { const char *label = list->data; char *value = NULL; switch(type) { case PURPLE_PREF_BOOLEAN: value = g_strdup_printf("%d", GPOINTER_TO_INT(list->next->data)); break; case PURPLE_PREF_INT: value = g_strdup_printf("%d", GPOINTER_TO_INT(list->next->data)); break; case PURPLE_PREF_STRING: value = g_strdup(list->next->data); break; default: break; } stringlist = g_list_prepend(stringlist, value); purple_request_field_list_add(field, label, value); if (strcmp(value, current_value) == 0) purple_request_field_list_add_selected(field, label); list = list->next->next; } g_free(current_value); } else { switch(type) { case PURPLE_PREF_BOOLEAN: field = purple_request_field_bool_new(name, label, purple_prefs_get_bool(name)); break; case PURPLE_PREF_INT: field = purple_request_field_int_new(name, label, purple_prefs_get_int(name)); break; case PURPLE_PREF_STRING: field = purple_request_field_string_new(name, label, purple_prefs_get_string(name), purple_plugin_pref_get_format_type(pref) & PURPLE_STRING_FORMAT_TYPE_MULTILINE); break; default: break; } } if (field) { if (group == NULL) { group = purple_request_field_group_new(_("Preferences")); purple_request_fields_add_group(fields, group); } purple_request_field_group_add_field(group, field); } } ret = purple_request_fields(NULL, _("Preferences"), NULL, NULL, fields, _("Save"), G_CALLBACK(finch_request_save_in_prefs), _("Cancel"), NULL, NULL, NULL, NULL, NULL); g_signal_connect_swapped(G_OBJECT(ret), "destroy", G_CALLBACK(free_stringlist), stringlist); return ret; }