Mercurial > pidgin.yaz
comparison src/gtkrequest.c @ 8524:253eb32e344c
[gaim-migrate @ 9263]
add some sanity to overly large request dialogs
committer: Tailor Script <tailor@pidgin.im>
author | Nathan Walp <nwalp@pidgin.im> |
---|---|
date | Tue, 30 Mar 2004 04:49:53 +0000 |
parents | 4cfb32f78d71 |
children | 725413cc9fb9 |
comparison
equal
deleted
inserted
replaced
8523:013d256e8ded | 8524:253eb32e344c |
---|---|
964 void *user_data) | 964 void *user_data) |
965 { | 965 { |
966 GaimGtkRequestData *data; | 966 GaimGtkRequestData *data; |
967 GtkWidget *win; | 967 GtkWidget *win; |
968 GtkWidget *vbox; | 968 GtkWidget *vbox; |
969 GtkWidget *vbox2; | |
969 GtkWidget *hbox; | 970 GtkWidget *hbox; |
970 GtkWidget *bbox; | 971 GtkWidget *bbox; |
971 GtkWidget *frame; | 972 GtkWidget *frame; |
972 GtkWidget *label; | 973 GtkWidget *label; |
973 GtkWidget *table; | 974 GtkWidget *table; |
974 GtkWidget *button; | 975 GtkWidget *button; |
975 GtkWidget *img; | 976 GtkWidget *img; |
977 GtkWidget *sw; | |
976 GtkSizeGroup *sg; | 978 GtkSizeGroup *sg; |
977 GList *gl, *fl; | 979 GList *gl, *fl; |
978 GaimRequestFieldGroup *group; | 980 GaimRequestFieldGroup *group; |
979 GaimRequestField *field; | 981 GaimRequestField *field; |
980 char *label_text; | 982 char *label_text; |
983 int total_fields = 0; | |
981 | 984 |
982 data = g_new0(GaimGtkRequestData, 1); | 985 data = g_new0(GaimGtkRequestData, 1); |
983 data->type = GAIM_REQUEST_FIELDS; | 986 data->type = GAIM_REQUEST_FIELDS; |
984 data->user_data = user_data; | 987 data->user_data = user_data; |
985 data->u.multifield.fields = fields; | 988 data->u.multifield.fields = fields; |
1021 gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, FALSE, 0); | 1024 gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, FALSE, 0); |
1022 gtk_widget_show(vbox); | 1025 gtk_widget_show(vbox); |
1023 | 1026 |
1024 sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); | 1027 sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); |
1025 | 1028 |
1026 if (primary != NULL || secondary != NULL) | 1029 if(primary) { |
1027 { | |
1028 label_text = g_strdup_printf( | 1030 label_text = g_strdup_printf( |
1029 (primary | 1031 "<span weight=\"bold\" size=\"larger\">%s</span>", primary); |
1030 ? "<span weight=\"bold\" size=\"larger\">" | |
1031 "%s</span>%s%s" | |
1032 : "%s%s%s"), | |
1033 (primary ? primary : ""), | |
1034 ((primary && secondary) ? "\n\n" : ""), | |
1035 (secondary ? secondary : "")); | |
1036 | |
1037 label = gtk_label_new(NULL); | 1032 label = gtk_label_new(NULL); |
1038 | 1033 |
1039 gtk_label_set_markup(GTK_LABEL(label), label_text); | 1034 gtk_label_set_markup(GTK_LABEL(label), label_text); |
1040 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); | 1035 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); |
1041 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); | 1036 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); |
1042 gtk_box_pack_start(GTK_BOX(vbox), label, TRUE, TRUE, 0); | 1037 gtk_box_pack_start(GTK_BOX(vbox), label, TRUE, TRUE, 0); |
1043 gtk_widget_show(label); | 1038 gtk_widget_show(label); |
1044 | |
1045 g_free(label_text); | 1039 g_free(label_text); |
1040 } | |
1041 | |
1042 for (gl = gaim_request_fields_get_groups(fields); gl != NULL; | |
1043 gl = gl->next) | |
1044 total_fields += g_list_length(gaim_request_field_group_get_fields(gl->data)); | |
1045 | |
1046 if(total_fields > 9) { | |
1047 sw = gtk_scrolled_window_new(NULL, NULL); | |
1048 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), | |
1049 GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); | |
1050 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), | |
1051 GTK_SHADOW_NONE); | |
1052 gtk_widget_set_size_request(sw, -1, 200); | |
1053 gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 0); | |
1054 gtk_widget_show(sw); | |
1055 | |
1056 vbox2 = gtk_vbox_new(FALSE, 12); | |
1057 gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(sw), vbox2); | |
1058 gtk_widget_show(vbox2); | |
1059 } else { | |
1060 vbox2 = vbox; | |
1061 } | |
1062 | |
1063 if (secondary) { | |
1064 label = gtk_label_new(NULL); | |
1065 | |
1066 gtk_label_set_markup(GTK_LABEL(label), secondary); | |
1067 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); | |
1068 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); | |
1069 gtk_box_pack_start(GTK_BOX(vbox2), label, TRUE, TRUE, 0); | |
1070 gtk_widget_show(label); | |
1046 } | 1071 } |
1047 | 1072 |
1048 for (gl = gaim_request_fields_get_groups(fields); | 1073 for (gl = gaim_request_fields_get_groups(fields); |
1049 gl != NULL; | 1074 gl != NULL; |
1050 gl = gl->next) | 1075 gl = gl->next) |
1059 group = gl->data; | 1084 group = gl->data; |
1060 field_list = gaim_request_field_group_get_fields(group); | 1085 field_list = gaim_request_field_group_get_fields(group); |
1061 | 1086 |
1062 if (gaim_request_field_group_get_title(group) != NULL) | 1087 if (gaim_request_field_group_get_title(group) != NULL) |
1063 { | 1088 { |
1064 frame = gaim_gtk_make_frame(vbox, | 1089 frame = gaim_gtk_make_frame(vbox2, |
1065 gaim_request_field_group_get_title(group)); | 1090 gaim_request_field_group_get_title(group)); |
1066 } | 1091 } |
1067 else | 1092 else |
1068 frame = vbox; | 1093 frame = vbox2; |
1069 | 1094 |
1070 field_count = g_list_length(field_list); | 1095 field_count = g_list_length(field_list); |
1071 | 1096 /* |
1072 if (field_count > 9) | 1097 if (field_count > 9) |
1073 { | 1098 { |
1074 rows = field_count / 2; | 1099 rows = field_count / 2; |
1075 cols++; | 1100 cols++; |
1076 } | 1101 } |
1077 else | 1102 else |
1103 */ | |
1078 rows = field_count; | 1104 rows = field_count; |
1079 | 1105 |
1080 col_num = 0; | 1106 col_num = 0; |
1081 | 1107 |
1082 for (fl = field_list; fl != NULL; fl = fl->next) | 1108 for (fl = field_list; fl != NULL; fl = fl->next) |