]> saetta.ns0.it Git - reptool/libreptool/commitdiff
Use of GtkCellRenderer height as default height in RptReport::new_from_gtktreeview...
authorAndrea Zagli <a.zagli@comune.scandicci.fi.it>
Tue, 1 Oct 2013 14:52:18 +0000 (16:52 +0200)
committerAndrea Zagli <a.zagli@comune.scandicci.fi.it>
Tue, 1 Oct 2013 14:52:18 +0000 (16:52 +0200)
src/rptreport.c
tests/gtktreeview.c

index 23bb79f064bde1055db3c15c8a681cc402a864b0..510a925b01f339ee05ecdb569f8dfac0ebc230be 100644 (file)
@@ -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);
index 3670ac4a88777e981ea11c4e8a0c70cf0299afd4..efc5e4809df96d32f7179b6cfbac6be6d9f3c355 100644 (file)
@@ -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);