console/gntrequest.c

changeset 14121
3d8804b82150
parent 14110
ac6690ef2df0
child 14124
181ebb961493
equal deleted inserted replaced
14120:c7e54fa6147e 14121:3d8804b82150
249 int id = GPOINTER_TO_INT(gnt_combo_box_get_selected_data(GNT_COMBO_BOX(combo))); 249 int id = GPOINTER_TO_INT(gnt_combo_box_get_selected_data(GNT_COMBO_BOX(combo)));
250 gaim_request_field_choice_set_value(field, id); 250 gaim_request_field_choice_set_value(field, id);
251 } 251 }
252 else if (type == GAIM_REQUEST_FIELD_LIST) 252 else if (type == GAIM_REQUEST_FIELD_LIST)
253 { 253 {
254 GntWidget *tree = field->ui_data;
255 GList *list = NULL; 254 GList *list = NULL;
256
257 if (gaim_request_field_list_get_multi_select(field)) 255 if (gaim_request_field_list_get_multi_select(field))
258 { 256 {
259 const GList *iter; 257 const GList *iter;
260 258 GntWidget *tree = field->ui_data;
259
261 iter = gaim_request_field_list_get_items(field); 260 iter = gaim_request_field_list_get_items(field);
262 for (; iter; iter = iter->next) 261 for (; iter; iter = iter->next)
263 { 262 {
264 const char *text = list->data; 263 const char *text = list->data;
265 gpointer key = gaim_request_field_list_get_data(field, text); 264 gpointer key = gaim_request_field_list_get_data(field, text);
267 list = g_list_prepend(list, key); 266 list = g_list_prepend(list, key);
268 } 267 }
269 } 268 }
270 else 269 else
271 { 270 {
272 gpointer data = gnt_tree_get_selection_data(GNT_TREE(tree)); 271 GntWidget *combo = field->ui_data;
272 gpointer data = gnt_combo_box_get_selected_data(GNT_COMBO_BOX(combo));
273 list = g_list_append(list, data); 273 list = g_list_append(list, data);
274 } 274 }
275 275
276 gaim_request_field_list_set_selected(field, list); 276 gaim_request_field_list_set_selected(field, list);
277 g_list_free(list); 277 g_list_free(list);
313 { 313 {
314 GaimRequestFieldGroup *group = list->data; 314 GaimRequestFieldGroup *group = list->data;
315 GList *fields = gaim_request_field_group_get_fields(group); 315 GList *fields = gaim_request_field_group_get_fields(group);
316 GntWidget *hbox; 316 GntWidget *hbox;
317 317
318 /* XXX: Do something with the title, perhaps add a bold label */ 318 gnt_box_add_widget(GNT_BOX(box),
319 gnt_label_new_with_format(gaim_request_field_group_get_title(group),
320 GNT_TEXT_FLAG_BOLD));
319 321
320 for (; fields ; fields = fields->next) 322 for (; fields ; fields = fields->next)
321 { 323 {
322 GaimRequestField *field = fields->data; 324 GaimRequestField *field = fields->data;
323 GaimRequestFieldType type = gaim_request_field_get_type(field); 325 GaimRequestFieldType type = gaim_request_field_get_type(field);
326 hbox = gnt_hbox_new(FALSE); 328 hbox = gnt_hbox_new(FALSE);
327 gnt_box_set_pad(GNT_BOX(hbox), 0); 329 gnt_box_set_pad(GNT_BOX(hbox), 0);
328 gnt_box_add_widget(GNT_BOX(box), hbox); 330 gnt_box_add_widget(GNT_BOX(box), hbox);
329 331
330 if (type != GAIM_REQUEST_FIELD_BOOLEAN) 332 if (type != GAIM_REQUEST_FIELD_BOOLEAN)
331 gnt_box_add_widget(GNT_BOX(hbox), gnt_label_new(label)); 333 {
334 GntWidget *l = gnt_label_new(label);
335 gnt_widget_set_size(l, 0, 1);
336 gnt_box_add_widget(GNT_BOX(hbox), l);
337 }
332 338
333 if (type == GAIM_REQUEST_FIELD_BOOLEAN) 339 if (type == GAIM_REQUEST_FIELD_BOOLEAN)
334 { 340 {
335 GntWidget *check = gnt_check_box_new(label); 341 GntWidget *check = gnt_check_box_new(label);
336 gnt_check_box_set_checked(GNT_CHECK_BOX(check), 342 gnt_check_box_set_checked(GNT_CHECK_BOX(check),
374 } 380 }
375 else if (type == GAIM_REQUEST_FIELD_LIST) 381 else if (type == GAIM_REQUEST_FIELD_LIST)
376 { 382 {
377 const GList *list; 383 const GList *list;
378 gboolean multi = gaim_request_field_list_get_multi_select(field); 384 gboolean multi = gaim_request_field_list_get_multi_select(field);
379 GntWidget *tree = gnt_tree_new(); 385 if (multi)
380 gnt_box_add_widget(GNT_BOX(hbox), tree);
381 field->ui_data = tree;
382
383 list = gaim_request_field_list_get_items(field);
384 for (; list; list = list->next)
385 { 386 {
386 const char *text = list->data; 387 GntWidget *tree = gnt_tree_new();
387 gpointer key = gaim_request_field_list_get_data(field, text); 388 gnt_box_add_widget(GNT_BOX(hbox), tree);
388 if (multi) 389 field->ui_data = tree;
390
391 list = gaim_request_field_list_get_items(field);
392 for (; list; list = list->next)
389 { 393 {
394 const char *text = list->data;
395 gpointer key = gaim_request_field_list_get_data(field, text);
390 gnt_tree_add_choice(GNT_TREE(tree), key, 396 gnt_tree_add_choice(GNT_TREE(tree), key,
391 gnt_tree_create_row(GNT_TREE(tree), text), NULL, NULL); 397 gnt_tree_create_row(GNT_TREE(tree), text), NULL, NULL);
392 if (gaim_request_field_list_is_selected(field, text)) 398 if (gaim_request_field_list_is_selected(field, text))
393 gnt_tree_set_choice(GNT_TREE(tree), key, TRUE); 399 gnt_tree_set_choice(GNT_TREE(tree), key, TRUE);
394 } 400 }
395 else 401 }
402 else
403 {
404 GntWidget *combo = gnt_combo_box_new();
405 gnt_box_set_alignment(GNT_BOX(hbox), GNT_ALIGN_MID);
406 gnt_box_add_widget(GNT_BOX(hbox), combo);
407 field->ui_data = combo;
408
409 list = gaim_request_field_list_get_items(field);
410 for (; list; list = list->next)
396 { 411 {
397 gnt_tree_add_row_after(GNT_TREE(tree), key, 412 const char *text = list->data;
398 gnt_tree_create_row(GNT_TREE(tree), text), NULL, NULL); 413 gpointer key = gaim_request_field_list_get_data(field, text);
414 gnt_combo_box_add_data(GNT_COMBO_BOX(combo), key, text);
399 if (gaim_request_field_list_is_selected(field, text)) 415 if (gaim_request_field_list_is_selected(field, text))
400 gnt_tree_set_selected(GNT_TREE(tree), key); 416 gnt_combo_box_set_selected(GNT_COMBO_BOX(combo), key);
401 } 417 }
402 } 418 }
403 } 419 }
404 #if 0 420 #if 0
405 else if (type == GAIM_REQUEST_FIELD_ACCOUNT) 421 else if (type == GAIM_REQUEST_FIELD_ACCOUNT)
411 { 427 {
412 gnt_box_add_widget(GNT_BOX(hbox), 428 gnt_box_add_widget(GNT_BOX(hbox),
413 gnt_label_new_with_format(_("Not implemented yet."), 429 gnt_label_new_with_format(_("Not implemented yet."),
414 GNT_TEXT_FLAG_BOLD)); 430 GNT_TEXT_FLAG_BOLD));
415 } 431 }
416 if (fields->next)
417 gnt_box_add_widget(GNT_BOX(box), gnt_hline_new());
418 } 432 }
433 if (list->next)
434 gnt_box_add_widget(GNT_BOX(box), gnt_hline_new());
419 } 435 }
420 gnt_box_add_widget(GNT_BOX(window), box); 436 gnt_box_add_widget(GNT_BOX(window), box);
421 437
422 box = setup_button_box(userdata, request_fields_cb, fields, 438 box = setup_button_box(userdata, request_fields_cb, fields,
423 ok, ok_cb, cancel, cancel_cb, NULL); 439 ok, ok_cb, cancel, cancel_cb, NULL);
424 gnt_box_add_widget(GNT_BOX(window), box); 440 gnt_box_add_widget(GNT_BOX(window), box);
425 441
426 gnt_widget_show(window); 442 gnt_widget_show(window);
427
428 443
429 return window; 444 return window;
430 } 445 }
431 446
432 static GaimRequestUiOps uiops = 447 static GaimRequestUiOps uiops =

mercurial