/* PSPPIRE - a graphical user interface for PSPP.
- Copyright (C) 2008, 2009, 2010, 2011, 2012 Free Software Foundation
+ Copyright (C) 2008, 2009, 2010, 2011, 2012, 2013 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 "ui/gui/builder-wrapper.h"
#include "ui/gui/psppire-output-window.h"
-#include "gl/error.h"
#include "gl/tmpdir.h"
#include "gl/xalloc.h"
#include "gl/c-xvasprintf.h"
static void on_dwgarea_realize (GtkWidget *widget, gpointer data);
static gboolean
-expose_event_callback (GtkWidget *widget, GdkEventExpose *event, gpointer data)
+draw_callback (GtkWidget *widget, cairo_t *cr, gpointer data)
{
PsppireOutputWindow *viewer = PSPPIRE_OUTPUT_WINDOW (data);
struct xr_rendering *r = g_object_get_data (G_OBJECT (widget), "rendering");
- cairo_t *cr = gdk_cairo_create (widget->window);
-
const GtkStyle *style = gtk_widget_get_style (GTK_WIDGET (viewer));
PangoFontDescription *font_desc;
pango_font_description_free (font_desc);
xr_rendering_apply_options (r, &viewer->render_opts);
-
- xr_rendering_draw (r, cr, event->area.x, event->area.y,
- event->area.width, event->area.height);
- cairo_destroy (cr);
+ xr_rendering_draw_all (r, cr);
return TRUE;
}
+
static void
psppire_output_submit (struct output_driver *this,
const struct output_item *item)
return;
}
- cr = gdk_cairo_create (GTK_WIDGET (pod->viewer)->window);
+ cr = gdk_cairo_create (gtk_widget_get_window (GTK_WIDGET (pod->viewer)));
if (pod->xr == NULL)
{
const GtkStyle *style = gtk_widget_get_style (GTK_WIDGET (viewer));
g_signal_connect (drawing_area, "realize",
G_CALLBACK (on_dwgarea_realize), pod->viewer);
- g_signal_connect (drawing_area, "expose_event",
- G_CALLBACK (expose_event_callback), pod->viewer);
+ g_signal_connect (drawing_area, "draw",
+ G_CALLBACK (draw_callback), pod->viewer);
gtk_widget_set_size_request (drawing_area, tw, th);
gtk_layout_put (pod->viewer->output, drawing_area, 0, pod->viewer->y);
g_value_unset (&value);
vadj = gtk_layout_get_vadjustment (window->output);
- min = vadj->lower;
- max = vadj->upper - vadj->page_size;
+ min = gtk_adjustment_get_lower (vadj);
+ max = gtk_adjustment_get_upper (vadj) - gtk_adjustment_get_page_size (vadj);
if (y < min)
y = min;
else if (y > max)
if ( response == GTK_RESPONSE_ACCEPT )
{
- int file_type = gtk_combo_box_get_active (GTK_COMBO_BOX (combo));
- char *filename = gtk_file_chooser_get_filename (chooser);
+ gint file_type = gtk_combo_box_get_active (GTK_COMBO_BOX (combo));
+ gchar *filename = gtk_file_chooser_get_filename (chooser);
struct string_map options;
g_return_if_fail (filename);
if (file_type == FT_AUTO)
{
+ /* If the "Infer file type from extension" option was chosen,
+ search for the respective type in the list.
+ (It's a O(n) search, but fortunately n is small). */
gint i;
for (i = 1 ; i < N_EXTENSIONS ; ++i)
{
}
}
}
-
+ else if (! g_str_has_suffix (filename, ft[file_type].ext))
+ {
+ /* If an explicit document format was chosen, and if the chosen
+ filename does not already have that particular "extension",
+ then append it.
+ */
+
+ gchar *of = filename;
+ filename = g_strconcat (filename, ft[file_type].ext, NULL);
+ g_free (of);
+ }
string_map_init (&options);
string_map_insert (&options, "output-file", filename);
if (path_search (dirname, sizeof dirname, NULL, NULL, true)
|| mkdtemp (dirname) == NULL)
{
- error (0, errno, _("failed to create temporary directory"));
+ msg_error (errno, _("failed to create temporary directory during clipboard operation"));
return;
}
filename = xasprintf ("%s/clip.tmp", dirname);
if ( g_file_get_contents (filename, &text, &length, NULL) )
{
- gtk_selection_data_set (selection_data, selection_data->target,
+ gtk_selection_data_set (selection_data, gtk_selection_data_get_target (selection_data),
8,
(const guchar *) text, length);
}
NULL);
{
+ GtkWidget *w;
GtkUIManager *uim = GTK_UI_MANAGER (get_object_assert (xml, "uimanager1", GTK_TYPE_UI_MANAGER));
merge_help_menu (uim);
+ w = gtk_ui_manager_get_widget (uim,"/ui/menubar/windows_menuitem/windows_minimise-all");
+
PSPPIRE_WINDOW (window)->menu =
- GTK_MENU_SHELL (gtk_ui_manager_get_widget (uim,"/ui/menubar/windows_menuitem/windows_minimise-all")->parent);
+ GTK_MENU_SHELL (gtk_widget_get_parent (w));
}
g_signal_connect_swapped (get_action_assert (xml, "file_export"), "activate",