4 * Purple is the legal property of its developers, whose names are too numerous
5 * to list here. Please refer to the COPYRIGHT file distributed with this
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 2 of the License, or
11 * (at your option) any later version.
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
18 * You should have received a copy of the GNU General Public License
19 * along with this program; if not, write to the Free Software
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
30 #include "pluginpref.h"
33 struct _PurplePluginPrefFrame
38 struct _PurplePluginPref
43 PurplePluginPrefType type
;
48 unsigned int max_length
;
50 PurpleStringFormatType format
;
53 PurplePluginPrefFrame
*
54 purple_plugin_pref_frame_new()
56 PurplePluginPrefFrame
*frame
;
58 frame
= g_new0(PurplePluginPrefFrame
, 1);
64 purple_plugin_pref_frame_destroy(PurplePluginPrefFrame
*frame
)
66 g_return_if_fail(frame
!= NULL
);
68 g_list_free_full(frame
->prefs
, (GDestroyNotify
)purple_plugin_pref_destroy
);
73 purple_plugin_pref_frame_add(PurplePluginPrefFrame
*frame
, PurplePluginPref
*pref
)
75 g_return_if_fail(frame
!= NULL
);
76 g_return_if_fail(pref
!= NULL
);
78 frame
->prefs
= g_list_append(frame
->prefs
, pref
);
82 purple_plugin_pref_frame_get_prefs(PurplePluginPrefFrame
*frame
)
84 g_return_val_if_fail(frame
!= NULL
, NULL
);
85 g_return_val_if_fail(frame
->prefs
!= NULL
, NULL
);
91 purple_plugin_pref_new()
93 PurplePluginPref
*pref
;
95 pref
= g_new0(PurplePluginPref
, 1);
101 purple_plugin_pref_new_with_name(const char *name
)
103 PurplePluginPref
*pref
;
105 g_return_val_if_fail(name
!= NULL
, NULL
);
107 pref
= g_new0(PurplePluginPref
, 1);
108 pref
->name
= g_strdup(name
);
114 purple_plugin_pref_new_with_label(const char *label
)
116 PurplePluginPref
*pref
;
118 g_return_val_if_fail(label
!= NULL
, NULL
);
120 pref
= g_new0(PurplePluginPref
, 1);
121 pref
->label
= g_strdup(label
);
127 purple_plugin_pref_new_with_name_and_label(const char *name
, const char *label
)
129 PurplePluginPref
*pref
;
131 g_return_val_if_fail(name
!= NULL
, NULL
);
132 g_return_val_if_fail(label
!= NULL
, NULL
);
134 pref
= g_new0(PurplePluginPref
, 1);
135 pref
->name
= g_strdup(name
);
136 pref
->label
= g_strdup(label
);
142 purple_plugin_pref_destroy(PurplePluginPref
*pref
)
145 g_return_if_fail(pref
!= NULL
);
152 /* Remove the string, and the data entries */
153 tmp
= g_list_delete_link(tmp
, tmp
);
154 tmp
= g_list_delete_link(tmp
, tmp
);
160 purple_plugin_pref_set_name(PurplePluginPref
*pref
, const char *name
)
162 g_return_if_fail(pref
!= NULL
);
163 g_return_if_fail(name
!= NULL
);
166 pref
->name
= g_strdup(name
);
170 purple_plugin_pref_get_name(PurplePluginPref
*pref
)
172 g_return_val_if_fail(pref
!= NULL
, NULL
);
178 purple_plugin_pref_set_label(PurplePluginPref
*pref
, const char *label
)
180 g_return_if_fail(pref
!= NULL
);
181 g_return_if_fail(label
!= NULL
);
184 pref
->label
= g_strdup(label
);
188 purple_plugin_pref_get_label(PurplePluginPref
*pref
)
190 g_return_val_if_fail(pref
!= NULL
, NULL
);
196 purple_plugin_pref_set_bounds(PurplePluginPref
*pref
, int min
, int max
)
200 g_return_if_fail(pref
!= NULL
);
201 g_return_if_fail(pref
->name
!= NULL
);
203 if (purple_prefs_get_pref_type(pref
->name
) != PURPLE_PREF_INT
)
205 purple_debug_warning("pluginpref",
206 "purple_plugin_pref_set_bounds: %s is not an integer pref\n",
222 void purple_plugin_pref_get_bounds(PurplePluginPref
*pref
, int *min
, int *max
)
224 g_return_if_fail(pref
!= NULL
);
225 g_return_if_fail(pref
->name
!= NULL
);
227 if (purple_prefs_get_pref_type(pref
->name
) != PURPLE_PREF_INT
)
229 purple_debug_warning("pluginpref",
230 "purple_plugin_pref_get_bounds: %s is not an integer pref\n",
240 purple_plugin_pref_set_pref_type(PurplePluginPref
*pref
, PurplePluginPrefType type
)
242 g_return_if_fail(pref
!= NULL
);
248 purple_plugin_pref_get_pref_type(PurplePluginPref
*pref
)
250 g_return_val_if_fail(pref
!= NULL
, PURPLE_PLUGIN_PREF_NONE
);
256 purple_plugin_pref_add_choice(PurplePluginPref
*pref
, const char *label
, gpointer choice
)
258 g_return_if_fail(pref
!= NULL
);
259 g_return_if_fail(label
!= NULL
);
260 g_return_if_fail(choice
|| purple_prefs_get_pref_type(pref
->name
) == PURPLE_PREF_INT
);
262 pref
->choices
= g_list_append(pref
->choices
, g_strdup(label
));
263 pref
->choices
= g_list_append(pref
->choices
, choice
);
267 purple_plugin_pref_get_choices(PurplePluginPref
*pref
)
269 g_return_val_if_fail(pref
!= NULL
, NULL
);
271 return pref
->choices
;
275 purple_plugin_pref_set_max_length(PurplePluginPref
*pref
, unsigned int max_length
)
277 g_return_if_fail(pref
!= NULL
);
279 pref
->max_length
= max_length
;
283 purple_plugin_pref_get_max_length(PurplePluginPref
*pref
)
285 g_return_val_if_fail(pref
!= NULL
, 0);
287 return pref
->max_length
;
291 purple_plugin_pref_set_masked(PurplePluginPref
*pref
, gboolean masked
)
293 g_return_if_fail(pref
!= NULL
);
295 pref
->masked
= masked
;
299 purple_plugin_pref_get_masked(PurplePluginPref
*pref
)
301 g_return_val_if_fail(pref
!= NULL
, FALSE
);
307 purple_plugin_pref_set_format_type(PurplePluginPref
*pref
, PurpleStringFormatType format
)
309 g_return_if_fail(pref
!= NULL
);
310 g_return_if_fail(pref
->type
== PURPLE_PLUGIN_PREF_STRING_FORMAT
);
312 pref
->format
= format
;
315 PurpleStringFormatType
316 purple_plugin_pref_get_format_type(PurplePluginPref
*pref
)
318 g_return_val_if_fail(pref
!= NULL
, 0);
320 if (pref
->type
!= PURPLE_PLUGIN_PREF_STRING_FORMAT
)
321 return PURPLE_STRING_FORMAT_TYPE_NONE
;