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_foreach(frame
->prefs
, (GFunc
)purple_plugin_pref_destroy
, NULL
);
69 g_list_free(frame
->prefs
);
74 purple_plugin_pref_frame_add(PurplePluginPrefFrame
*frame
, PurplePluginPref
*pref
)
76 g_return_if_fail(frame
!= NULL
);
77 g_return_if_fail(pref
!= NULL
);
79 frame
->prefs
= g_list_append(frame
->prefs
, pref
);
83 purple_plugin_pref_frame_get_prefs(PurplePluginPrefFrame
*frame
)
85 g_return_val_if_fail(frame
!= NULL
, NULL
);
86 g_return_val_if_fail(frame
->prefs
!= NULL
, NULL
);
92 purple_plugin_pref_new()
94 PurplePluginPref
*pref
;
96 pref
= g_new0(PurplePluginPref
, 1);
102 purple_plugin_pref_new_with_name(const char *name
)
104 PurplePluginPref
*pref
;
106 g_return_val_if_fail(name
!= NULL
, NULL
);
108 pref
= g_new0(PurplePluginPref
, 1);
109 pref
->name
= g_strdup(name
);
115 purple_plugin_pref_new_with_label(const char *label
)
117 PurplePluginPref
*pref
;
119 g_return_val_if_fail(label
!= NULL
, NULL
);
121 pref
= g_new0(PurplePluginPref
, 1);
122 pref
->label
= g_strdup(label
);
128 purple_plugin_pref_new_with_name_and_label(const char *name
, const char *label
)
130 PurplePluginPref
*pref
;
132 g_return_val_if_fail(name
!= NULL
, NULL
);
133 g_return_val_if_fail(label
!= NULL
, NULL
);
135 pref
= g_new0(PurplePluginPref
, 1);
136 pref
->name
= g_strdup(name
);
137 pref
->label
= g_strdup(label
);
143 purple_plugin_pref_destroy(PurplePluginPref
*pref
)
146 g_return_if_fail(pref
!= NULL
);
153 /* Remove the string, and the data entries */
154 tmp
= g_list_delete_link(tmp
, tmp
);
155 tmp
= g_list_delete_link(tmp
, tmp
);
161 purple_plugin_pref_set_name(PurplePluginPref
*pref
, const char *name
)
163 g_return_if_fail(pref
!= NULL
);
164 g_return_if_fail(name
!= NULL
);
167 pref
->name
= g_strdup(name
);
171 purple_plugin_pref_get_name(PurplePluginPref
*pref
)
173 g_return_val_if_fail(pref
!= NULL
, NULL
);
179 purple_plugin_pref_set_label(PurplePluginPref
*pref
, const char *label
)
181 g_return_if_fail(pref
!= NULL
);
182 g_return_if_fail(label
!= NULL
);
185 pref
->label
= g_strdup(label
);
189 purple_plugin_pref_get_label(PurplePluginPref
*pref
)
191 g_return_val_if_fail(pref
!= NULL
, NULL
);
197 purple_plugin_pref_set_bounds(PurplePluginPref
*pref
, int min
, int max
)
201 g_return_if_fail(pref
!= NULL
);
202 g_return_if_fail(pref
->name
!= NULL
);
204 if (purple_prefs_get_pref_type(pref
->name
) != PURPLE_PREF_INT
)
206 purple_debug_warning("pluginpref",
207 "purple_plugin_pref_set_bounds: %s is not an integer pref\n",
223 void purple_plugin_pref_get_bounds(PurplePluginPref
*pref
, int *min
, int *max
)
225 g_return_if_fail(pref
!= NULL
);
226 g_return_if_fail(pref
->name
!= NULL
);
228 if (purple_prefs_get_pref_type(pref
->name
) != PURPLE_PREF_INT
)
230 purple_debug_warning("pluginpref",
231 "purple_plugin_pref_get_bounds: %s is not an integer pref\n",
241 purple_plugin_pref_set_pref_type(PurplePluginPref
*pref
, PurplePluginPrefType type
)
243 g_return_if_fail(pref
!= NULL
);
249 purple_plugin_pref_get_pref_type(PurplePluginPref
*pref
)
251 g_return_val_if_fail(pref
!= NULL
, PURPLE_PLUGIN_PREF_NONE
);
257 purple_plugin_pref_add_choice(PurplePluginPref
*pref
, const char *label
, gpointer choice
)
259 g_return_if_fail(pref
!= NULL
);
260 g_return_if_fail(label
!= NULL
);
261 g_return_if_fail(choice
|| purple_prefs_get_pref_type(pref
->name
) == PURPLE_PREF_INT
);
263 pref
->choices
= g_list_append(pref
->choices
, g_strdup(label
));
264 pref
->choices
= g_list_append(pref
->choices
, choice
);
268 purple_plugin_pref_get_choices(PurplePluginPref
*pref
)
270 g_return_val_if_fail(pref
!= NULL
, NULL
);
272 return pref
->choices
;
276 purple_plugin_pref_set_max_length(PurplePluginPref
*pref
, unsigned int max_length
)
278 g_return_if_fail(pref
!= NULL
);
280 pref
->max_length
= max_length
;
284 purple_plugin_pref_get_max_length(PurplePluginPref
*pref
)
286 g_return_val_if_fail(pref
!= NULL
, 0);
288 return pref
->max_length
;
292 purple_plugin_pref_set_masked(PurplePluginPref
*pref
, gboolean masked
)
294 g_return_if_fail(pref
!= NULL
);
296 pref
->masked
= masked
;
300 purple_plugin_pref_get_masked(PurplePluginPref
*pref
)
302 g_return_val_if_fail(pref
!= NULL
, FALSE
);
308 purple_plugin_pref_set_format_type(PurplePluginPref
*pref
, PurpleStringFormatType format
)
310 g_return_if_fail(pref
!= NULL
);
311 g_return_if_fail(pref
->type
== PURPLE_PLUGIN_PREF_STRING_FORMAT
);
313 pref
->format
= format
;
316 PurpleStringFormatType
317 purple_plugin_pref_get_format_type(PurplePluginPref
*pref
)
319 g_return_val_if_fail(pref
!= NULL
, 0);
321 if (pref
->type
!= PURPLE_PLUGIN_PREF_STRING_FORMAT
)
322 return PURPLE_STRING_FORMAT_TYPE_NONE
;