From: Andrea Zagli Date: Tue, 1 Oct 2013 14:52:18 +0000 (+0200) Subject: Use of GtkCellRenderer height as default height in RptReport::new_from_gtktreeview... X-Git-Tag: v0.2.2~4 X-Git-Url: https://saetta.ns0.it/gitweb?a=commitdiff_plain;h=70a8569e1e6f9596a887d0f9ae18a1625e704252;p=reptool%2Flibreptool Use of GtkCellRenderer height as default height in RptReport::new_from_gtktreeview (closes #738). --- diff --git a/src/rptreport.c b/src/rptreport.c index 23bb79f..510a925 100644 --- a/src/rptreport.c +++ b/src/rptreport.c @@ -581,6 +581,8 @@ RptReport GList *columns; GHashTable *columns_names; + GList *lst_cells; + RptSize *page_size; RptMargin *page_margin; @@ -598,12 +600,11 @@ RptReport guint idx; + gint iheight; gdouble height; g_return_val_if_fail (GTK_IS_TREE_VIEW (view), NULL); - height = 8; - style = gtk_widget_get_style (GTK_WIDGET (view)); pango_font = pango_font_description_copy (style->font_desc); if (pango_font == NULL) @@ -620,6 +621,12 @@ RptReport columns = gtk_tree_view_get_columns (view); if (columns == NULL) return NULL; + /* find the height to use as defaul height from gtkcellrenderer */ + lst_cells = gtk_cell_layout_get_cells (GTK_CELL_LAYOUT (columns->data)); + gtk_cell_renderer_get_size ((GtkCellRenderer *)lst_cells->data, GTK_WIDGET (view), + NULL, NULL, NULL, NULL, &iheight); + height = rpt_common_points_to_value (RPT_UNIT_MILLIMETRE, (iheight * 72.0) / 96.0); + g_object_set (G_OBJECT (ret), "unit-length", RPT_UNIT_MILLIMETRE, NULL); page_size = rpt_common_rptsize_new_with_values (297, 210); @@ -628,7 +635,7 @@ RptReport page_margin = rpt_common_rptmargin_new_with_values (10, 10, 10, 10); rpt_report_set_page_margins_struct (ret, *page_margin); - rpt_report_set_section_height (ret, RPTREPORT_SECTION_PAGE_HEADER, 27); + rpt_report_set_section_height (ret, RPTREPORT_SECTION_PAGE_HEADER, (height * 3) + 2); rpt_report_set_page_header_first_last_page (ret, TRUE, TRUE); rpt_report_set_section_height (ret, RPTREPORT_SECTION_BODY, height); @@ -666,7 +673,7 @@ RptReport col_title = g_strdup_printf ("\"%s\"", gtk_tree_view_column_get_title (col)); col_width = rpt_common_points_to_value (RPT_UNIT_MILLIMETRE, (gtk_tree_view_column_get_width (col) * 72.0) / 96.0); - point = rpt_common_rptpoint_new_with_values (x, 15); + point = rpt_common_rptpoint_new_with_values (x, height * 2); if (columns->next == NULL && x < page_size->width) { /* the last column is always large until the end of the page */ @@ -711,13 +718,13 @@ RptReport g_hash_table_insert (columns_names, field_name, g_strdup_printf ("%d", idx)); - x += col_width + 1; + x += col_width; idx++; columns = g_list_next (columns); } - point = rpt_common_rptpoint_new_with_values (0, 25); + point = rpt_common_rptpoint_new_with_values (0, (height * 3) + 1); obj = rpt_obj_line_new ("line1", *point); size = rpt_common_rptsize_new_with_values (page_size->width - page_margin->left - page_margin->right, 0); @@ -731,7 +738,7 @@ RptReport rpt_report_add_object_to_section (ret, obj, RPTREPORT_SECTION_PAGE_HEADER); - rpt_report_set_section_height (ret, RPTREPORT_SECTION_PAGE_FOOTER, 12); + rpt_report_set_section_height (ret, RPTREPORT_SECTION_PAGE_FOOTER, height + 2); point = rpt_common_rptpoint_new_with_values (0, 0); obj = rpt_obj_line_new ("line2", *point); @@ -751,7 +758,7 @@ RptReport point = rpt_common_rptpoint_new_with_values (0, 2); obj = rpt_obj_text_new ("pages", *point); - size = rpt_common_rptsize_new_with_values (page_size->width - page_margin->left - page_margin->right, 10); + size = rpt_common_rptsize_new_with_values (page_size->width - page_margin->left - page_margin->right, height); align = rpt_common_rptalign_new (); align->h_align = RPT_HALIGN_RIGHT; font = rpt_common_rptfont_from_pango_description (pango_font); diff --git a/tests/gtktreeview.c b/tests/gtktreeview.c index 3670ac4..efc5e48 100644 --- a/tests/gtktreeview.c +++ b/tests/gtktreeview.c @@ -44,6 +44,19 @@ on_btn_stampa_clicked (GtkButton *button, gpointer user_data) RptReport *rptr; RptPrint *rptp; + GtkCellRenderer *renderer; + GList *lst; + GtkTreeViewColumn *column; + gint wi; + gint he; + + column = gtk_tree_view_get_column (GTK_TREE_VIEW (tree), 0); + lst = gtk_cell_layout_get_cells (GTK_CELL_LAYOUT (column)); + renderer = (GtkCellRenderer *)lst->data; + + gtk_cell_renderer_get_size (renderer, tree, NULL, NULL, NULL, &wi, &he); + g_message ("w %d h %d", wi, he); + rptr = rpt_report_new_from_gtktreeview (GTK_TREE_VIEW (tree), "\"Report's Title\""); if (rptr != NULL) @@ -104,6 +117,12 @@ main (int argc, char **argv) AUTHOR_COLUMN, "Dan Simmons", CHECKED_COLUMN, TRUE, -1); + gtk_list_store_append (store, &iter); + gtk_list_store_set (store, &iter, + TITLE_COLUMN, "A very very long title to see what it does (a galaxy far far away)", + AUTHOR_COLUMN, "I", + CHECKED_COLUMN, TRUE, + -1); tree = gtk_tree_view_new_with_model (GTK_TREE_MODEL (store)); gtk_tree_view_set_headers_clickable (GTK_TREE_VIEW (tree), TRUE); @@ -112,6 +131,7 @@ main (int argc, char **argv) GtkTreeViewColumn *column; renderer = gtk_cell_renderer_text_new (); + column = gtk_tree_view_column_new_with_attributes ("Book's title", renderer, "text", TITLE_COLUMN, @@ -119,6 +139,7 @@ main (int argc, char **argv) gtk_tree_view_column_set_resizable (column, TRUE); gtk_tree_view_column_set_clickable (column, TRUE); gtk_tree_view_column_set_sort_column_id (column, TITLE_COLUMN); + gtk_tree_view_column_set_reorderable (column, TRUE); gtk_tree_view_append_column (GTK_TREE_VIEW (tree), column); renderer = gtk_cell_renderer_text_new (); @@ -129,6 +150,7 @@ main (int argc, char **argv) gtk_tree_view_column_set_resizable (column, TRUE); gtk_tree_view_column_set_clickable (column, TRUE); gtk_tree_view_column_set_sort_column_id (column, AUTHOR_COLUMN); + gtk_tree_view_column_set_reorderable (column, TRUE); gtk_tree_view_append_column (GTK_TREE_VIEW (tree), column); renderer = gtk_cell_renderer_toggle_new (); @@ -139,6 +161,7 @@ main (int argc, char **argv) gtk_tree_view_column_set_resizable (column, TRUE); gtk_tree_view_column_set_clickable (column, TRUE); gtk_tree_view_column_set_sort_column_id (column, CHECKED_COLUMN); + gtk_tree_view_column_set_reorderable (column, TRUE); gtk_tree_view_append_column (GTK_TREE_VIEW (tree), column); w = gtk_window_new (GTK_WINDOW_TOPLEVEL);