/* PSPPIRE - a graphical user interface for PSPP.
- Copyright (C) 2008, 2009, 2010 Free Software Foundation
+ Copyright (C) 2008, 2009, 2010, 2011 Free Software Foundation
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
#include "output/cairo.h"
#include "output/chart-item.h"
#include "output/driver-provider.h"
+#include "output/message-item.h"
#include "output/output-item.h"
#include "output/tab.h"
#include "output/table-item.h"
viewer->items = NULL;
viewer->n_items = viewer->allocated_items = 0;
- g_object_unref (viewer->print_settings);
+ if (viewer->print_settings != NULL)
+ g_object_unref (viewer->print_settings);
/* Chain up to the parent class */
G_OBJECT_CLASS (parent_class)->dispose (obj);
struct output_driver driver;
PsppireOutputWindow *viewer;
struct xr_driver *xr;
+ int font_height;
};
static struct output_driver_class psppire_output_class;
{
const GtkStyle *style = gtk_widget_get_style (GTK_WIDGET (viewer));
struct string_map options = STRING_MAP_INITIALIZER (options);
+ struct text_item *text_item;
PangoFontDescription *font_desc;
char *font_name;
+ int font_width;
/* Use GTK+ default font as proportional font. */
font_name = pango_font_description_to_string (style->font_desc);
it is already close enough to INT_MAX when expressed as thousands of a
point.) */
string_map_insert (&options, "paper-size", "300x200000mm");
- string_map_insert (&options, "headers", "off");
string_map_insert (&options, "left-margin", "0");
string_map_insert (&options, "right-margin", "0");
string_map_insert (&options, "top-margin", "0");
pod->xr = xr_driver_create (cr, &options);
string_map_destroy (&options);
+
+ text_item = text_item_create (TEXT_ITEM_PARAGRAPH, "X");
+ r = xr_rendering_create (pod->xr, text_item_super (text_item), cr);
+ xr_rendering_measure (r, &font_width, &pod->font_height);
+ /* xr_rendering_destroy (r); */
+ text_item_unref (text_item);
}
+ else
+ pod->viewer->y += pod->font_height / 2;
r = xr_rendering_create (pod->xr, item, cr);
if (r == NULL)
ds_clear (&title);
if (is_text_item (item))
ds_put_cstr (&title, text_item_get_text (to_text_item (item)));
+ else if (is_message_item (item))
+ {
+ const struct message_item *msg_item = to_message_item (item);
+ const struct msg *msg = message_item_get_msg (msg_item);
+ ds_put_format (&title, "%s: %s", _("Message"),
+ msg_severity_to_string (msg->severity));
+ }
else if (is_table_item (item))
{
const char *caption = table_item_get_caption (to_table_item (item));
#define N_EXTENTIONS (n_FT - 1)
struct file_types ft[n_FT] = {
- {N_("Infer file type from extention"), NULL},
+ {N_("Infer file type from extension"), NULL},
{N_("PDF (*.pdf)"), ".pdf"},
{N_("HTML (*.html)"), ".html"},
{N_("OpenDocument (*.odt)"), ".odt"},
int x = 0;
gchar *fn = gtk_file_chooser_get_filename (chooser);
- if (combo && GTK_WIDGET_REALIZED (combo))
+ if (combo && gtk_widget_get_realized (combo))
x = gtk_combo_box_get_active (GTK_COMBO_BOX (combo));
if (fn == NULL)
GtkFileChooser *chooser = data;
const gchar *name = g_param_spec_get_name (pspec);
- if ( ! GTK_WIDGET_REALIZED (chooser))
+ if ( ! gtk_widget_get_realized (GTK_WIDGET (chooser)))
return;
/* Ignore this one. It causes recursion. */
psppire_output_window_new (void)
{
return GTK_WIDGET (g_object_new (psppire_output_window_get_type (),
- "filename", "Output",
+ /* TRANSLATORS: This will form a filename. Please avoid whitespace. */
+ "filename", _("Output"),
"description", _("Output Viewer"),
NULL));
}