| 1589 GList *gl, *fl; |
1589 GList *gl, *fl; |
| 1590 PurpleRequestFieldGroup *group; |
1590 PurpleRequestFieldGroup *group; |
| 1591 PurpleRequestField *field; |
1591 PurpleRequestField *field; |
| 1592 char *label_text; |
1592 char *label_text; |
| 1593 char *primary_esc, *secondary_esc; |
1593 char *primary_esc, *secondary_esc; |
| 1594 int total_fields = 0; |
|
| 1595 const gboolean compact = purple_request_cpar_is_compact(cpar); |
1594 const gboolean compact = purple_request_cpar_is_compact(cpar); |
| 1596 GSList *extra_actions, *it; |
1595 GSList *extra_actions, *it; |
| 1597 size_t extra_actions_count, i; |
1596 size_t extra_actions_count, i; |
| |
1597 const gchar **tab_names; |
| |
1598 guint tab_count; |
| 1598 |
1599 |
| 1599 data = g_new0(PidginRequestData, 1); |
1600 data = g_new0(PidginRequestData, 1); |
| 1600 data->type = PURPLE_REQUEST_FIELDS; |
1601 data->type = PURPLE_REQUEST_FIELDS; |
| 1601 data->user_data = user_data; |
1602 data->user_data = user_data; |
| 1602 data->u.multifield.fields = fields; |
1603 data->u.multifield.fields = fields; |
| 1679 gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); |
1680 gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); |
| 1680 gtk_widget_show(label); |
1681 gtk_widget_show(label); |
| 1681 g_free(label_text); |
1682 g_free(label_text); |
| 1682 } |
1683 } |
| 1683 |
1684 |
| 1684 for (gl = purple_request_fields_get_groups(fields); gl != NULL; |
1685 /* Setup tabs */ |
| 1685 gl = gl->next) |
1686 tab_names = purple_request_fields_get_tab_names(fields); |
| 1686 total_fields += g_list_length(purple_request_field_group_get_fields(gl->data)); |
1687 if (tab_names == NULL) { |
| 1687 |
1688 notebook = NULL; |
| 1688 if(total_fields > 9) { |
1689 tab_count = 1; |
| 1689 GtkWidget *hbox_for_spacing, *vbox_for_spacing; |
1690 |
| 1690 |
1691 pages = g_new0(GtkWidget*, 1); |
| 1691 hbox_for_spacing = gtk_hbox_new(FALSE, PIDGIN_HIG_BORDER); |
1692 pages[0] = vbox; |
| 1692 gtk_box_pack_start(GTK_BOX(vbox), |
|
| 1693 pidgin_make_scrollable(hbox_for_spacing, GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC, GTK_SHADOW_NONE, -1, 200), |
|
| 1694 TRUE, TRUE, 0); |
|
| 1695 gtk_widget_show(hbox_for_spacing); |
|
| 1696 |
|
| 1697 vbox_for_spacing = gtk_vbox_new(FALSE, PIDGIN_HIG_BORDER); |
|
| 1698 gtk_box_pack_start(GTK_BOX(hbox_for_spacing), |
|
| 1699 vbox_for_spacing, TRUE, TRUE, PIDGIN_HIG_BOX_SPACE); |
|
| 1700 gtk_widget_show(vbox_for_spacing); |
|
| 1701 |
|
| 1702 vbox2 = gtk_vbox_new(FALSE, PIDGIN_HIG_BORDER); |
|
| 1703 gtk_box_pack_start(GTK_BOX(vbox_for_spacing), |
|
| 1704 vbox2, TRUE, TRUE, PIDGIN_HIG_BOX_SPACE); |
|
| 1705 gtk_widget_show(vbox2); |
|
| 1706 } else { |
1693 } else { |
| 1707 vbox2 = vbox; |
1694 tab_count = g_strv_length((gchar **)tab_names); |
| |
1695 notebook = GTK_NOTEBOOK(gtk_notebook_new()); |
| |
1696 |
| |
1697 pages = g_new0(GtkWidget*, tab_count); |
| |
1698 |
| |
1699 for (i = 0; i < tab_count; i++) { |
| |
1700 pages[i] = gtk_vbox_new(FALSE, PIDGIN_HIG_BORDER); |
| |
1701 gtk_container_set_border_width(GTK_CONTAINER(pages[i]), PIDGIN_HIG_BORDER); |
| |
1702 gtk_notebook_append_page(notebook, pages[i], NULL); |
| |
1703 gtk_notebook_set_tab_label_text(notebook, pages[i], tab_names[i]); |
| |
1704 gtk_widget_show(pages[i]); |
| |
1705 } |
| |
1706 } |
| |
1707 |
| |
1708 for (i = 0; i < tab_count; i++) { |
| |
1709 guint total_fields = 0; |
| |
1710 GList *it; |
| |
1711 |
| |
1712 it = purple_request_fields_get_groups(fields); |
| |
1713 for (; it != NULL; it = g_list_next(it)) { |
| |
1714 group = it->data; |
| |
1715 if (purple_request_field_group_get_tab(group) != i) |
| |
1716 continue; |
| |
1717 total_fields += g_list_length( |
| |
1718 purple_request_field_group_get_fields(group)); |
| |
1719 } |
| |
1720 |
| |
1721 if(total_fields > 9) { |
| |
1722 GtkWidget *hbox_for_spacing, *vbox_for_spacing; |
| |
1723 |
| |
1724 gtk_container_set_border_width( |
| |
1725 GTK_CONTAINER(pages[i]), 0); |
| |
1726 |
| |
1727 hbox_for_spacing = |
| |
1728 gtk_hbox_new(FALSE, PIDGIN_HIG_BORDER); |
| |
1729 gtk_box_pack_start(GTK_BOX(pages[i]), |
| |
1730 pidgin_make_scrollable(hbox_for_spacing, |
| |
1731 GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC, |
| |
1732 GTK_SHADOW_NONE, -1, 200), |
| |
1733 TRUE, TRUE, 0); |
| |
1734 gtk_widget_show(hbox_for_spacing); |
| |
1735 |
| |
1736 vbox_for_spacing = |
| |
1737 gtk_vbox_new(FALSE, PIDGIN_HIG_BORDER); |
| |
1738 gtk_box_pack_start(GTK_BOX(hbox_for_spacing), |
| |
1739 vbox_for_spacing, TRUE, TRUE, |
| |
1740 PIDGIN_HIG_BOX_SPACE); |
| |
1741 gtk_widget_show(vbox_for_spacing); |
| |
1742 |
| |
1743 pages[i] = gtk_vbox_new(FALSE, PIDGIN_HIG_BORDER); |
| |
1744 gtk_box_pack_start(GTK_BOX(vbox_for_spacing), |
| |
1745 pages[i], TRUE, TRUE, PIDGIN_HIG_BOX_SPACE); |
| |
1746 gtk_widget_show(pages[i]); |
| |
1747 } |
| |
1748 |
| |
1749 if (notebook == NULL) |
| |
1750 vbox = pages[0]; |
| 1708 } |
1751 } |
| 1709 |
1752 |
| 1710 if (secondary) { |
1753 if (secondary) { |
| 1711 secondary_esc = pidgin_request_escape(cpar, secondary); |
1754 secondary_esc = pidgin_request_escape(cpar, secondary); |
| 1712 label = gtk_label_new(NULL); |
1755 label = gtk_label_new(NULL); |
| 1713 |
1756 |
| 1714 gtk_label_set_markup(GTK_LABEL(label), secondary_esc); |
1757 gtk_label_set_markup(GTK_LABEL(label), secondary_esc); |
| 1715 g_free(secondary_esc); |
1758 g_free(secondary_esc); |
| 1716 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); |
1759 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); |
| 1717 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); |
1760 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); |
| 1718 gtk_box_pack_start(GTK_BOX(vbox2), label, TRUE, TRUE, 0); |
1761 gtk_box_pack_start(GTK_BOX(vbox), label, (notebook == NULL), |
| |
1762 (notebook == NULL), 0); |
| 1719 gtk_widget_show(label); |
1763 gtk_widget_show(label); |
| |
1764 } |
| |
1765 |
| |
1766 if (notebook != NULL) { |
| |
1767 gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET(notebook), TRUE, TRUE, 0); |
| |
1768 gtk_widget_show(GTK_WIDGET(notebook)); |
| 1720 } |
1769 } |
| 1721 |
1770 |
| 1722 for (gl = purple_request_fields_get_groups(fields); |
1771 for (gl = purple_request_fields_get_groups(fields); |
| 1723 gl != NULL; |
1772 gl != NULL; |
| 1724 gl = gl->next) |
1773 gl = gl->next) |