| 194 gtk_widget_show(entry); |
194 gtk_widget_show(entry); |
| 195 |
195 |
| 196 return pidgin_add_widget_to_vbox(GTK_BOX(page), title, sg, entry, TRUE, NULL); |
196 return pidgin_add_widget_to_vbox(GTK_BOX(page), title, sg, entry, TRUE, NULL); |
| 197 } |
197 } |
| 198 |
198 |
| 199 /* TODO: Maybe move this up somewheres... */ |
|
| 200 enum { |
|
| 201 PREF_DROPDOWN_TEXT, |
|
| 202 PREF_DROPDOWN_VALUE, |
|
| 203 PREF_DROPDOWN_COUNT |
|
| 204 }; |
|
| 205 |
|
| 206 static void |
199 static void |
| 207 dropdown_set(GtkComboBox *combo_box, G_GNUC_UNUSED gpointer data) |
200 dropdown_set(GtkComboBox *combo_box, G_GNUC_UNUSED gpointer data) |
| 208 { |
201 { |
| 209 GtkTreeIter iter; |
202 GtkTreeIter iter; |
| 210 GtkTreeModel *tree_model; |
203 GtkTreeModel *tree_model; |
| 218 |
211 |
| 219 type = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(combo_box), "type")); |
212 type = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(combo_box), "type")); |
| 220 key = g_object_get_data(G_OBJECT(combo_box), "key"); |
213 key = g_object_get_data(G_OBJECT(combo_box), "key"); |
| 221 if (type == PURPLE_PREF_INT) { |
214 if (type == PURPLE_PREF_INT) { |
| 222 gint value; |
215 gint value; |
| 223 gtk_tree_model_get(tree_model, &iter, PREF_DROPDOWN_VALUE, &value, -1); |
216 gtk_tree_model_get(tree_model, &iter, PIDGIN_PREF_COMBO_VALUE, &value, -1); |
| 224 purple_prefs_set_int(key, value); |
217 purple_prefs_set_int(key, value); |
| 225 } else if (type == PURPLE_PREF_STRING) { |
218 } else if (type == PURPLE_PREF_STRING) { |
| 226 gchar *value; |
219 gchar *value; |
| 227 gtk_tree_model_get(tree_model, &iter, PREF_DROPDOWN_VALUE, &value, -1); |
220 gtk_tree_model_get(tree_model, &iter, PIDGIN_PREF_COMBO_VALUE, &value, -1); |
| 228 purple_prefs_set_string(key, value); |
221 purple_prefs_set_string(key, value); |
| 229 g_free(value); |
222 g_free(value); |
| 230 } else if (type == PURPLE_PREF_BOOLEAN) { |
223 } else if (type == PURPLE_PREF_BOOLEAN) { |
| 231 gboolean value; |
224 gboolean value; |
| 232 gtk_tree_model_get(tree_model, &iter, PREF_DROPDOWN_VALUE, &value, -1); |
225 gtk_tree_model_get(tree_model, &iter, PIDGIN_PREF_COMBO_VALUE, &value, -1); |
| 233 purple_prefs_set_bool(key, value); |
226 purple_prefs_set_bool(key, value); |
| 234 } else { |
227 } else { |
| 235 g_return_if_reached(); |
228 g_return_if_reached(); |
| 236 } |
229 } |
| 237 } |
230 } |
| 251 |
244 |
| 252 g_return_val_if_fail(menuitems != NULL, NULL); |
245 g_return_val_if_fail(menuitems != NULL, NULL); |
| 253 |
246 |
| 254 if (type == PURPLE_PREF_INT) { |
247 if (type == PURPLE_PREF_INT) { |
| 255 pref_int_value = purple_prefs_get_int(key); |
248 pref_int_value = purple_prefs_get_int(key); |
| 256 store = gtk_list_store_new(PREF_DROPDOWN_COUNT, G_TYPE_STRING, G_TYPE_INT); |
249 store = gtk_list_store_new(PIDGIN_PREF_COMBO_N_COLUMNS, G_TYPE_STRING, |
| |
250 G_TYPE_INT); |
| 257 } else if (type == PURPLE_PREF_STRING) { |
251 } else if (type == PURPLE_PREF_STRING) { |
| 258 pref_str_value = purple_prefs_get_string(key); |
252 pref_str_value = purple_prefs_get_string(key); |
| 259 store = gtk_list_store_new(PREF_DROPDOWN_COUNT, G_TYPE_STRING, G_TYPE_STRING); |
253 store = gtk_list_store_new(PIDGIN_PREF_COMBO_N_COLUMNS, G_TYPE_STRING, |
| |
254 G_TYPE_STRING); |
| 260 } else if (type == PURPLE_PREF_BOOLEAN) { |
255 } else if (type == PURPLE_PREF_BOOLEAN) { |
| 261 pref_bool_value = purple_prefs_get_bool(key); |
256 pref_bool_value = purple_prefs_get_bool(key); |
| 262 store = gtk_list_store_new(PREF_DROPDOWN_COUNT, G_TYPE_STRING, G_TYPE_BOOLEAN); |
257 store = gtk_list_store_new(PIDGIN_PREF_COMBO_N_COLUMNS, G_TYPE_STRING, |
| |
258 G_TYPE_BOOLEAN); |
| 263 } else { |
259 } else { |
| 264 g_return_val_if_reached(NULL); |
260 g_return_val_if_reached(NULL); |
| 265 } |
261 } |
| 266 |
262 |
| 267 dropdown = gtk_combo_box_new_with_model(GTK_TREE_MODEL(store)); |
263 dropdown = gtk_combo_box_new_with_model(GTK_TREE_MODEL(store)); |
| 275 break; |
271 break; |
| 276 } |
272 } |
| 277 |
273 |
| 278 gtk_list_store_append(store, &iter); |
274 gtk_list_store_append(store, &iter); |
| 279 gtk_list_store_set(store, &iter, |
275 gtk_list_store_set(store, &iter, |
| 280 PREF_DROPDOWN_TEXT, menu_item->key, |
276 PIDGIN_PREF_COMBO_TEXT, menu_item->key, |
| 281 -1); |
277 -1); |
| 282 |
278 |
| 283 if (type == PURPLE_PREF_INT) { |
279 if (type == PURPLE_PREF_INT) { |
| 284 gint value = GPOINTER_TO_INT(menu_item->value); |
280 gint value = GPOINTER_TO_INT(menu_item->value); |
| 285 gtk_list_store_set(store, &iter, PREF_DROPDOWN_VALUE, value, -1); |
281 gtk_list_store_set(store, &iter, PIDGIN_PREF_COMBO_VALUE, value, -1); |
| 286 if (pref_int_value == value) { |
282 if (pref_int_value == value) { |
| 287 active = iter; |
283 active = iter; |
| 288 } |
284 } |
| 289 |
285 |
| 290 } else if (type == PURPLE_PREF_STRING) { |
286 } else if (type == PURPLE_PREF_STRING) { |
| 291 const gchar *value = (const gchar *)menu_item->value; |
287 const gchar *value = (const gchar *)menu_item->value; |
| 292 gtk_list_store_set(store, &iter, PREF_DROPDOWN_VALUE, value, -1); |
288 gtk_list_store_set(store, &iter, PIDGIN_PREF_COMBO_VALUE, value, -1); |
| 293 if (purple_strequal(pref_str_value, value)) { |
289 if (purple_strequal(pref_str_value, value)) { |
| 294 active = iter; |
290 active = iter; |
| 295 } |
291 } |
| 296 |
292 |
| 297 } else if (type == PURPLE_PREF_BOOLEAN) { |
293 } else if (type == PURPLE_PREF_BOOLEAN) { |
| 298 gboolean value = (gboolean)GPOINTER_TO_INT(menu_item->value); |
294 gboolean value = (gboolean)GPOINTER_TO_INT(menu_item->value); |
| 299 gtk_list_store_set(store, &iter, PREF_DROPDOWN_VALUE, value, -1); |
295 gtk_list_store_set(store, &iter, PIDGIN_PREF_COMBO_VALUE, value, -1); |
| 300 if (pref_bool_value == value) { |
296 if (pref_bool_value == value) { |
| 301 active = iter; |
297 active = iter; |
| 302 } |
298 } |
| 303 } |
299 } |
| 304 } |
300 } |
| 368 if (!gtk_combo_box_get_active_iter(combo_box, &iter)) |
364 if (!gtk_combo_box_get_active_iter(combo_box, &iter)) |
| 369 return; |
365 return; |
| 370 |
366 |
| 371 if (combo->type == PURPLE_PREF_INT) { |
367 if (combo->type == PURPLE_PREF_INT) { |
| 372 gint value; |
368 gint value; |
| 373 gtk_tree_model_get(tree_model, &iter, PREF_DROPDOWN_VALUE, &value, -1); |
369 gtk_tree_model_get(tree_model, &iter, PIDGIN_PREF_COMBO_VALUE, &value, -1); |
| 374 purple_prefs_set_int(combo->key, value); |
370 purple_prefs_set_int(combo->key, value); |
| 375 } else if (combo->type == PURPLE_PREF_STRING) { |
371 } else if (combo->type == PURPLE_PREF_STRING) { |
| 376 gchar *value; |
372 gchar *value; |
| 377 gtk_tree_model_get(tree_model, &iter, PREF_DROPDOWN_VALUE, &value, -1); |
373 gtk_tree_model_get(tree_model, &iter, PIDGIN_PREF_COMBO_VALUE, &value, -1); |
| 378 purple_prefs_set_string(combo->key, value); |
374 purple_prefs_set_string(combo->key, value); |
| 379 g_free(value); |
375 g_free(value); |
| 380 } else if (combo->type == PURPLE_PREF_BOOLEAN) { |
376 } else if (combo->type == PURPLE_PREF_BOOLEAN) { |
| 381 gboolean value; |
377 gboolean value; |
| 382 gtk_tree_model_get(tree_model, &iter, PREF_DROPDOWN_VALUE, &value, -1); |
378 gtk_tree_model_get(tree_model, &iter, PIDGIN_PREF_COMBO_VALUE, &value, -1); |
| 383 purple_prefs_set_bool(combo->key, value); |
379 purple_prefs_set_bool(combo->key, value); |
| 384 } else { |
380 } else { |
| 385 g_return_if_reached(); |
381 g_return_if_reached(); |
| 386 } |
382 } |
| 387 } |
383 } |
| 413 } |
409 } |
| 414 |
410 |
| 415 do { |
411 do { |
| 416 if (combo->type == PURPLE_PREF_INT) { |
412 if (combo->type == PURPLE_PREF_INT) { |
| 417 gint value = 0; |
413 gint value = 0; |
| 418 gtk_tree_model_get(store, &iter, PREF_DROPDOWN_VALUE, &value, -1); |
414 gtk_tree_model_get(store, &iter, PIDGIN_PREF_COMBO_VALUE, &value, -1); |
| 419 if (pref_int_value == value) { |
415 if (pref_int_value == value) { |
| 420 active = iter; |
416 active = iter; |
| 421 break; |
417 break; |
| 422 } |
418 } |
| 423 |
419 |
| 424 } else if (combo->type == PURPLE_PREF_STRING) { |
420 } else if (combo->type == PURPLE_PREF_STRING) { |
| 425 gchar *value = NULL; |
421 gchar *value = NULL; |
| 426 gtk_tree_model_get(store, &iter, PREF_DROPDOWN_VALUE, &value, -1); |
422 gtk_tree_model_get(store, &iter, PIDGIN_PREF_COMBO_VALUE, &value, -1); |
| 427 if (purple_strequal(pref_str_value, value)) { |
423 if (purple_strequal(pref_str_value, value)) { |
| 428 active = iter; |
424 active = iter; |
| 429 g_free(value); |
425 g_free(value); |
| 430 break; |
426 break; |
| 431 } |
427 } |
| 432 g_free(value); |
428 g_free(value); |
| 433 |
429 |
| 434 } else if (combo->type == PURPLE_PREF_BOOLEAN) { |
430 } else if (combo->type == PURPLE_PREF_BOOLEAN) { |
| 435 gboolean value = FALSE; |
431 gboolean value = FALSE; |
| 436 gtk_tree_model_get(store, &iter, PREF_DROPDOWN_VALUE, &value, -1); |
432 gtk_tree_model_get(store, &iter, PIDGIN_PREF_COMBO_VALUE, &value, -1); |
| 437 if (pref_bool_value == value) { |
433 if (pref_bool_value == value) { |
| 438 active = iter; |
434 active = iter; |
| 439 break; |
435 break; |
| 440 } |
436 } |
| 441 } |
437 } |
| 514 |
510 |
| 515 name = purple_media_element_info_get_name(info); |
511 name = purple_media_element_info_get_name(info); |
| 516 id = purple_media_element_info_get_id(info); |
512 id = purple_media_element_info_get_id(info); |
| 517 |
513 |
| 518 gtk_list_store_append(store, &iter); |
514 gtk_list_store_append(store, &iter); |
| 519 gtk_list_store_set(store, &iter, PREF_DROPDOWN_TEXT, name, |
515 gtk_list_store_set(store, &iter, PIDGIN_PREF_COMBO_TEXT, name, |
| 520 PREF_DROPDOWN_VALUE, id, -1); |
516 PIDGIN_PREF_COMBO_VALUE, id, -1); |
| 521 |
517 |
| 522 g_object_unref(info); |
518 g_object_unref(info); |
| 523 } |
519 } |
| 524 } |
520 } |
| 525 |
521 |