g_return_val_if_fail (GTK_IS_TREE_VIEW (view), NULL);
style = gtk_widget_get_style (GTK_WIDGET (view));
- pango_font = style->font_desc;
+ pango_font = pango_font_description_copy (style->font_desc);
+ if (pango_font == NULL)
+ {
+ g_warning ("No font from GtkTreeView. Default to Arial 10.");
+
+ pango_font = pango_font_description_new ();
+ pango_font_description_set_family (pango_font, "Arial");
+ pango_font_description_set_size (pango_font, 10);
+ }
ret = rpt_report_new ();
g_free (point);
g_free (size);
- g_free (font);
rpt_report_add_object_to_section (ret, obj, RPTREPORT_SECTION_PAGE_HEADER);
}
col_width = rpt_common_points_to_value (RPT_UNIT_MILLIMETRE, gtk_tree_view_column_get_width (col) / 96 * 72);
point = rpt_common_rptpoint_new_with_values (x, 15);
- size = rpt_common_rptsize_new_with_values (col_width, 10);
+ if (columns->next == NULL && x < page_size->width)
+ {
+ /* the last column is always large until the end of the page */
+ size = rpt_common_rptsize_new_with_values (page_size->width - x, 10);
+ }
+ else
+ {
+ size = rpt_common_rptsize_new_with_values (col_width, 10);
+ }
font = rpt_common_rptfont_from_pango_description (pango_font);
font->bold = TRUE;
rpt_report_add_object_to_section (ret, obj, RPTREPORT_SECTION_PAGE_HEADER);
g_free (point);
- g_free (font);
point = rpt_common_rptpoint_new_with_values (x, 0);
font = rpt_common_rptfont_from_pango_description (pango_font);
g_free (point);
g_free (size);
- g_free (font);
g_hash_table_insert (columns_names, field_name, g_strdup_printf ("%d", idx));
g_free (point);
g_free (size);
- g_free (font);
rpt_report_add_object_to_section (ret, obj, RPTREPORT_SECTION_PAGE_FOOTER);
N_COLUMNS
};
-int
-main (int argc, char **argv)
+GtkWidget *tree;
+
+gboolean
+on_w_delete_event (GtkWidget *widget,
+ GdkEvent *event,
+ gpointer user_data)
+{
+ return FALSE;
+}
+
+void
+on_btn_stampa_clicked (GtkButton *button, gpointer user_data)
{
RptReport *rptr;
RptPrint *rptp;
+ rptr = rpt_report_new_from_gtktreeview (GTK_TREE_VIEW (tree), "\"Report's Title\"");
+
+ if (rptr != NULL)
+ {
+ xmlDoc *report = rpt_report_get_xml (rptr);
+ xmlSaveFormatFile ("test_report.rpt", report, 2);
+
+ xmlDoc *rptprint = rpt_report_get_xml_rptprint (rptr);
+ xmlSaveFormatFile ("test_report.rptr", rptprint, 2);
+
+ rptp = rpt_print_new_from_xml (rptprint);
+ if (rptp != NULL)
+ {
+ g_object_set (G_OBJECT (rptp), "path-relatives-to", "..", NULL);
+ rpt_print_set_output_type (rptp, RPT_OUTPUT_PDF);
+ rpt_print_set_output_filename (rptp, "rptreport.pdf");
+ rpt_print_print (rptp, NULL);
+ }
+ }
+}
+
+int
+main (int argc, char **argv)
+{
gtk_init (&argc, &argv);
GtkListStore *store = gtk_list_store_new (N_COLUMNS, /* Total number of columns */
CHECKED_COLUMN, FALSE,
-1);
- GtkWidget *tree;
-
tree = gtk_tree_view_new_with_model (GTK_TREE_MODEL (store));
GtkCellRenderer *renderer;
renderer,
"text", TITLE_COLUMN,
NULL);
+ gtk_tree_view_column_set_resizable (column, TRUE);
gtk_tree_view_append_column (GTK_TREE_VIEW (tree), column);
renderer = gtk_cell_renderer_text_new ();
renderer,
"text", AUTHOR_COLUMN,
NULL);
+ gtk_tree_view_column_set_resizable (column, TRUE);
gtk_tree_view_append_column (GTK_TREE_VIEW (tree), column);
GtkWidget *w = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_default_size (GTK_WINDOW (w), 500, 400);
- gtk_container_add (GTK_CONTAINER (w), tree);
+ g_signal_connect (w, "delete-event", G_CALLBACK (on_w_delete_event), NULL);
+ g_signal_connect (w, "destroy", gtk_main_quit, NULL);
- gtk_widget_show_all (w);
+ GtkWidget *box = gtk_vbox_new (FALSE, 5);
- rptr = rpt_report_new_from_gtktreeview (GTK_TREE_VIEW (tree), "\"Report's Title\"");
+ gtk_container_add (GTK_CONTAINER (w), box);
- if (rptr != NULL)
- {
- xmlDoc *report = rpt_report_get_xml (rptr);
- xmlSaveFormatFile ("test_report.rpt", report, 2);
+ gtk_box_pack_start (GTK_BOX (box), tree, TRUE, TRUE, 0);
- xmlDoc *rptprint = rpt_report_get_xml_rptprint (rptr);
- xmlSaveFormatFile ("test_report.rptr", rptprint, 2);
-
- rptp = rpt_print_new_from_xml (rptprint);
- if (rptp != NULL)
- {
- g_object_set (G_OBJECT (rptp), "path-relatives-to", "..", NULL);
- rpt_print_set_output_type (rptp, RPT_OUTPUT_PDF);
- rpt_print_set_output_filename (rptp, "rptreport.pdf");
- rpt_print_print (rptp, NULL);
- }
- }
+ GtkWidget *btn_stampa = gtk_button_new_from_stock ("gtk-print");
+
+ gtk_box_pack_start (GTK_BOX (box), btn_stampa, FALSE, FALSE, 0);
+
+ g_signal_connect (G_OBJECT (btn_stampa), "clicked",
+ G_CALLBACK (on_btn_stampa_clicked), NULL);
+
+ gtk_widget_show_all (w);
gtk_main ();