#include "output/driver-provider.h"
#include "output/driver.h"
#include "output/chart-item.h"
+#include "output/group-item.h"
#include "output/message-item.h"
#include "output/output-item.h"
#include "output/table-item.h"
cairo_destroy (cr);
}
-/* Return the horizontal position to place a widget whose
+/* Return the horizontal position to place a widget whose
width is CHILD_WIDTH */
static gint
get_xpos (const struct psppire_output_view *view, gint child_width)
{
GdkRGBA green = {0, 1, 0, 1};
gtk_widget_override_background_color (GTK_WIDGET (view->output),
- GTK_STATE_NORMAL, &green);
+ GTK_STATE_FLAG_NORMAL, &green);
GdkRGBA red = {1, 0, 0, 1};
- gtk_widget_override_background_color (drawing_area, GTK_STATE_NORMAL, &red);
+ gtk_widget_override_background_color (drawing_area,
+ GTK_STATE_FLAG_NORMAL, &red);
}
g_object_set_data_full (G_OBJECT (drawing_area),
gtk_layout_move (view->output, item->drawing_area, xpos, view->y);
}
+ {
+ gint minw;
+ gint minh;
+ /* This code probably doesn't bring us anthing, but Gtk
+ shows warnings if get_preferred_width/height is not
+ called before the size_allocate below is called. */
+ gtk_widget_get_preferred_width (item->drawing_area, &minw, NULL);
+ gtk_widget_get_preferred_height (item->drawing_area, &minh, NULL);
+ if (th > minh) th = minh;
+ if (tw > minw) tw = minw;
+ }
alloc.x = xpos;
alloc.y = view->y;
alloc.width = tw;
alloc.height = th;
- gtk_widget_size_allocate(item->drawing_area,&alloc);
+
+ gtk_widget_size_allocate (item->drawing_area, &alloc);
if (view->max_width < tw)
view->max_width = tw;
GtkTreeIter iter;
int tw, th;
- if (is_text_item (item))
+ if (is_group_close_item (item))
{
- const struct text_item *text_item = to_text_item (item);
- enum text_item_type type = text_item_get_type (text_item);
- const char *text = text_item_get_text (text_item);
-
- if (type == TEXT_ITEM_COMMAND_CLOSE)
+ if (output_get_group_level () == 0)
{
view->in_command = false;
return;
}
- else if (text[0] == '\0')
+ }
+ else if (is_text_item (item))
+ {
+ const struct text_item *text_item = to_text_item (item);
+ const char *text = text_item_get_text (text_item);
+ if (text[0] == '\0')
return;
}
store = GTK_TREE_STORE (gtk_tree_view_get_model (view->overview));
ds_init_empty (&name);
- if (is_text_item (item)
- && text_item_get_type (to_text_item (item)) == TEXT_ITEM_COMMAND_OPEN)
+ if (is_group_open_item (item) && output_get_group_level () == 1)
{
gtk_tree_store_append (store, &iter, NULL);
view->cur_command = iter; /* XXX shouldn't save a GtkTreeIter */
}
else if (is_table_item (item))
{
- const char *title = table_item_get_title (to_table_item (item));
+ const struct table_item_text *title
+ = table_item_get_title (to_table_item (item));
if (title != NULL)
- ds_put_format (&name, "Table: %s", title);
+ ds_put_format (&name, "Table: %s", title->content);
else
ds_put_cstr (&name, "Table");
}
GAction *copy_action = g_action_map_lookup_action (G_ACTION_MAP (toplevel),
"copy");
-
+
GAction *select_all_action = g_action_map_lookup_action (G_ACTION_MAP (toplevel),
"select-all");
- g_object_set (copy_action, "enabled", FALSE, NULL);
+ g_object_set (copy_action, "enabled", FALSE, NULL);
g_signal_connect_swapped (select_all_action, "activate",
G_CALLBACK (on_select_all), view);
g_signal_connect_swapped (copy_action, "activate",
G_CALLBACK (on_copy), view);
-
+
g_signal_connect (sel, "changed", G_CALLBACK (on_selection_change),
copy_action);
}
GtkCellRenderer *renderer;
GtkTreeModel *model;
-
+
view = xmalloc (sizeof *view);
view->xr = NULL;
view->font_height = 0;
get_cairo_context_from_print_context (GtkPrintContext *context)
{
cairo_t *cr = gtk_print_context_get_cairo_context (context);
-
+
/*
For all platforms except windows, gtk_print_context_get_dpi_[xy] returns 72.
Windows returns 600.
*/
double xres = gtk_print_context_get_dpi_x (context);
double yres = gtk_print_context_get_dpi_y (context);
-
+
/* This means that the cairo context now has its dimensions in Points */
cairo_scale (cr, xres / 72.0, yres / 72.0);
-
+
return cr;
}
GtkPrintOperation *print = gtk_print_operation_new ();
- if (view->print_settings != NULL)
+ if (view->print_settings != NULL)
gtk_print_operation_set_print_settings (print, view->print_settings);
g_signal_connect (print, "begin_print", G_CALLBACK (begin_print), view);