#define DEFAULT_ROW_HEIGHT 25
static void gtk_sheet_update_primary_selection (GtkSheet *sheet);
-static void gtk_sheet_column_title_button_draw (GtkSheet *sheet, gint column);
+static void draw_column_title_buttons_range (GtkSheet *sheet, gint first, gint n);
+static void draw_row_title_buttons_range (GtkSheet *sheet, gint first, gint n);
-static void gtk_sheet_row_title_button_draw (GtkSheet *sheet, gint row);
static void gtk_sheet_set_row_height (GtkSheet *sheet,
gint row,
g_free (text);
}
-static
-guint STRING_WIDTH (GtkWidget *widget,
- const PangoFontDescription *font, const gchar *text)
-{
- PangoRectangle rect;
- PangoLayout *layout;
-
- layout = gtk_widget_create_pango_layout (widget, text);
- pango_layout_set_font_description (layout, font);
-
- pango_layout_get_extents (layout, NULL, &rect);
-
- g_object_unref (layout);
- return PANGO_PIXELS (rect.width);
-}
-
/* Return the row containing pixel Y */
static gint
yyy_row_ypixel_to_row (const GtkSheet *sheet, gint y)
}
\f
-static void column_titles_changed (GtkWidget *w, gint first, gint n_columns,
- gpointer data);
-
/* Properties */
enum
{
gint n_columns,
gpointer data)
{
- gint i;
GtkSheet *sheet = GTK_SHEET (data);
GtkSheetRange range;
if (sheet->active_cell.col >= model_columns)
change_active_cell (sheet, sheet->active_cell.row, model_columns - 1);
- for (i = first_column; i <= max_visible_column (sheet); i++)
- gtk_sheet_column_title_button_draw (sheet, i);
+ draw_column_title_buttons_range (sheet,
+ first_column, max_visible_column (sheet));
gtk_sheet_range_draw (sheet, &range);
}
rows_inserted_deleted_callback (GSheetModel *model, gint first_row,
gint n_rows, gpointer data)
{
- gint i;
GtkSheet *sheet = GTK_SHEET (data);
GtkSheetRange range;
if (sheet->active_cell.row >= model_rows)
change_active_cell (sheet, model_rows - 1, sheet->active_cell.col);
- for (i = first_row; i <= max_visible_row (sheet); i++)
- gtk_sheet_row_title_button_draw (sheet, i);
+ draw_row_title_buttons_range (sheet, first_row, max_visible_row (sheet));
gtk_sheet_range_draw (sheet, &range);
}
if ( ( row0 < 0 && col0 < 0 ) || ( rowi < 0 && coli < 0 ) )
{
- gint i;
gtk_sheet_range_draw (sheet, NULL);
adjust_scrollbars (sheet);
- for (i = min_visible_row (sheet); i <= max_visible_row (sheet); i++)
- gtk_sheet_row_title_button_draw (sheet, i);
+ draw_row_title_buttons_range (sheet, min_visible_row (sheet),
+ max_visible_row (sheet));
- for (i = min_visible_column (sheet);
- i <= max_visible_column (sheet); i++)
- gtk_sheet_column_title_button_draw (sheet, i);
+ draw_column_title_buttons_range (sheet, min_visible_column (sheet),
+ max_visible_column (sheet));
return;
}
}
-/* Call back for when the column titles have changed.
- FIRST is the first column changed.
- N_COLUMNS is the number of columns which have changed, or -1, which
- indicates that the column has changed to its right-most extremity
-*/
-static void
-column_titles_changed (GtkWidget *w, gint first, gint n_columns, gpointer data)
-{
- GtkSheet *sheet = GTK_SHEET (data);
- gboolean extremity = FALSE;
-
- if ( n_columns == -1 )
- {
- extremity = TRUE;
- n_columns = psppire_axis_unit_count (sheet->haxis) - 1 ;
- }
-
- if ( extremity)
- gtk_sheet_column_title_button_draw (sheet, -1);
-}
-
void
gtk_sheet_change_entry (GtkSheet *sheet, GtkType entry_type)
{
guint width);
-static void
-gtk_sheet_autoresize_column (GtkSheet *sheet, gint column)
-{
- gint text_width = 0;
- gint row;
-
- g_return_if_fail (sheet != NULL);
- g_return_if_fail (GTK_IS_SHEET (sheet));
- if (column >= psppire_axis_unit_count (sheet->haxis) || column < 0) return;
-
- for (row = 0; row < g_sheet_row_get_row_count (sheet->row_geometry); row++)
- {
- gchar *text = gtk_sheet_cell_get_text (sheet, row, column);
- if (text && strlen (text) > 0)
- {
- GtkSheetCellAttr attributes;
-
- gtk_sheet_get_attributes (sheet, row, column, &attributes);
- if (attributes.is_visible)
- {
- gint width = STRING_WIDTH (GTK_WIDGET (sheet),
- attributes.font_desc,
- text)
- + 2 * COLUMN_TITLES_HEIGHT + attributes.border.width;
- text_width = MAX (text_width, width);
- }
- }
- dispose_string (sheet, text);
- }
-
- if (text_width > psppire_axis_unit_size (sheet->haxis, column) )
- {
- gtk_sheet_set_column_width (sheet, column, text_width);
- }
-}
-
void
gtk_sheet_show_column_titles (GtkSheet *sheet)
{
gtk_sheet_draw_border (sheet, sheet->range);
}
-static void gtk_sheet_set_cell (GtkSheet *sheet, gint row, gint col,
- GtkJustification justification,
- const gchar *text);
-
-
static inline gint
safe_strcmp (const gchar *s1, const gchar *s2)
{
if ( !s1 && !s2) return 0;
- if ( !s1) return - 1;
+ if ( !s1) return -1;
if ( !s2) return +1;
return strcmp (s1, s2);
}
old_text = g_sheet_model_get_string (model, row, col);
+ if (0 != safe_strcmp (old_text, text))
+ g_sheet_model_set_string (model, text, row, col);
+
if ( g_sheet_model_free_strings (model))
g_free (old_text);
}
text = gtk_entry_get_text (GTK_ENTRY (gtk_sheet_get_entry (sheet)));
+
+
if (text && strlen (text) > 0)
{
gtk_sheet_get_attributes (sheet, row, col, &attributes);
gtk_widget_grab_focus (GTK_WIDGET (sheet_entry));
dispose_string (sheet, text);
-
}
static void
if (event->window == sheet->row_title_window &&
sheet->row_titles_visible)
{
- gint i;
- for (i = min_visible_row (sheet); i <= max_visible_row (sheet); i++)
- gtk_sheet_row_title_button_draw (sheet, i);
+ draw_row_title_buttons_range (sheet,
+ min_visible_row (sheet),
+ max_visible_row (sheet));
}
if (event->window == sheet->column_title_window &&
sheet->column_titles_visible)
{
- gint i;
- for (i = min_visible_column (sheet);
- i <= max_visible_column (sheet);
- ++i)
- gtk_sheet_column_title_button_draw (sheet, i);
+ draw_column_title_buttons_range (sheet,
+ min_visible_column (sheet),
+ max_visible_column (sheet));
}
if (on_column_boundary (sheet, sheet->x_drag, &sheet->drag_cell.col))
{
guint req;
- if (event->type == GDK_2BUTTON_PRESS)
- {
- gtk_sheet_autoresize_column (sheet, sheet->drag_cell.col);
- GTK_SHEET_UNSET_FLAGS (sheet, GTK_SHEET_IN_XDRAG);
- return TRUE;
- }
gtk_sheet_column_size_request (sheet, sheet->drag_cell.col, &req);
GTK_SHEET_SET_FLAGS (sheet, GTK_SHEET_IN_XDRAG);
gdk_pointer_grab (sheet->column_title_window, FALSE,
sheet->column_title_area.height);
- /* column button allocation */
- draw_column_title_buttons (sheet);
-
/* position the window which holds the row title buttons */
sheet->row_title_area.x = 0;
sheet->row_title_area.y = 0;
sheet->row_title_area.height);
- /* row button allocation */
- draw_row_title_buttons (sheet);
- draw_column_title_buttons (sheet);
-
/* set the scrollbars adjustments */
adjust_scrollbars (sheet);
}
static void
draw_column_title_buttons (GtkSheet *sheet)
{
- gint i;
gint x, width;
if (!sheet->column_titles_visible) return;
size_allocate_global_button (sheet);
- for (i = min_visible_column (sheet); i <= max_visible_column (sheet); i++)
- gtk_sheet_column_title_button_draw (sheet, i);
+ draw_column_title_buttons_range (sheet, min_visible_column (sheet),
+ max_visible_column (sheet));
}
static void
draw_row_title_buttons (GtkSheet *sheet)
{
- gint i;
gint y = 0;
gint height;
size_allocate_global_button (sheet);
- for (i = min_visible_row (sheet); i <= max_visible_row (sheet); i++)
- {
- if ( i >= g_sheet_row_get_row_count (sheet->row_geometry))
- break;
- gtk_sheet_row_title_button_draw (sheet, i);
- }
+
+ draw_row_title_buttons_range (sheet, min_visible_row (sheet),
+ max_visible_row (sheet));
}
static void
-gtk_sheet_button_draw (GtkSheet *sheet, GdkWindow *window,
+draw_button (GtkSheet *sheet, GdkWindow *window,
GtkSheetButton *button, gboolean is_sensitive,
GdkRectangle allocation)
{
gboolean rtl ;
gint state = 0;
- gint len = 0;
- gchar *line = 0;
g_return_if_fail (sheet != NULL);
g_return_if_fail (button != NULL);
if (button->label_visible)
{
-
- text_height = DEFAULT_ROW_HEIGHT -
+ text_height = DEFAULT_ROW_HEIGHT -
2 * COLUMN_TITLES_HEIGHT;
gdk_gc_set_clip_rectangle (GTK_WIDGET (sheet)->style->fg_gc[button->state],
allocation.y += 2 * sheet->button->style->ythickness;
-
if (button->label && strlen (button->label)>0)
{
- gchar *words = 0;
+ PangoRectangle rect;
+ gchar *line = button->label;
+
PangoLayout *layout = NULL;
- gint real_x = allocation.x, real_y = allocation.y;
+ gint real_x = allocation.x;
+ gint real_y = allocation.y;
- words = button->label;
- line = g_new (gchar, 1);
- line[0]='\0';
+ layout = gtk_widget_create_pango_layout (GTK_WIDGET (sheet), line);
+ pango_layout_get_extents (layout, NULL, &rect);
- while (words && *words != '\0')
+ text_width = PANGO_PIXELS (rect.width);
+ switch (button->justification)
{
- if (*words != '\n')
- {
- len = strlen (line);
- line = g_realloc (line, len + 2);
- line[len]=*words;
- line[len + 1]='\0';
- }
- if (*words == '\n' || * (words + 1) == '\0')
- {
- text_width = STRING_WIDTH (GTK_WIDGET (sheet), GTK_WIDGET (sheet)->style->font_desc, line);
-
- layout = gtk_widget_create_pango_layout (GTK_WIDGET (sheet), line);
- switch (button->justification)
- {
- case GTK_JUSTIFY_LEFT:
- real_x = allocation.x + COLUMN_TITLES_HEIGHT;
- align = rtl ? PANGO_ALIGN_RIGHT : PANGO_ALIGN_LEFT;
- break;
- case GTK_JUSTIFY_RIGHT:
- real_x = allocation.x + allocation.width - text_width - COLUMN_TITLES_HEIGHT;
- align = rtl ? PANGO_ALIGN_LEFT : PANGO_ALIGN_RIGHT;
- break;
- case GTK_JUSTIFY_CENTER:
- default:
- real_x = allocation.x + (allocation.width - text_width)/2;
- align = rtl ? PANGO_ALIGN_RIGHT : PANGO_ALIGN_LEFT;
- pango_layout_set_justify (layout, TRUE);
- }
- pango_layout_set_alignment (layout, align);
- gtk_paint_layout (GTK_WIDGET (sheet)->style,
- window,
- state,
- FALSE,
- &allocation,
- GTK_WIDGET (sheet),
- "label",
- real_x, real_y,
- layout);
- g_object_unref (layout);
-
- real_y += text_height + 2;
-
- g_free (line);
- line = g_new (gchar, 1);
- line[0]='\0';
- }
- words++;
+ case GTK_JUSTIFY_LEFT:
+ real_x = allocation.x + COLUMN_TITLES_HEIGHT;
+ align = rtl ? PANGO_ALIGN_RIGHT : PANGO_ALIGN_LEFT;
+ break;
+ case GTK_JUSTIFY_RIGHT:
+ real_x = allocation.x + allocation.width - text_width - COLUMN_TITLES_HEIGHT;
+ align = rtl ? PANGO_ALIGN_LEFT : PANGO_ALIGN_RIGHT;
+ break;
+ case GTK_JUSTIFY_CENTER:
+ default:
+ real_x = allocation.x + (allocation.width - text_width)/2;
+ align = rtl ? PANGO_ALIGN_RIGHT : PANGO_ALIGN_LEFT;
+ pango_layout_set_justify (layout, TRUE);
}
- g_free (line);
+ pango_layout_set_alignment (layout, align);
+ gtk_paint_layout (GTK_WIDGET (sheet)->style,
+ window,
+ state,
+ FALSE,
+ &allocation,
+ GTK_WIDGET (sheet),
+ "label",
+ real_x, real_y,
+ layout);
+ g_object_unref (layout);
}
gdk_gc_set_clip_rectangle (GTK_WIDGET (sheet)->style->fg_gc[button->state],
gtk_sheet_button_free (button);
}
+
+/* Draw the column title buttons FIRST through to LAST */
static void
-gtk_sheet_column_title_button_draw (GtkSheet *sheet, gint column)
+draw_column_title_buttons_range (GtkSheet *sheet, gint first, gint last)
{
- GdkRectangle allocation;
- GtkSheetButton *button = NULL;
- gboolean is_sensitive = FALSE;
-
+ GdkRegion *region;
+ gint col;
if (!GTK_WIDGET_REALIZED (GTK_WIDGET (sheet))) return;
if (!sheet->column_titles_visible) return;
- if (column < min_visible_column (sheet)) return;
- if (column > max_visible_column (sheet)) return;
+ g_return_if_fail (first >= min_visible_column (sheet));
+ g_return_if_fail (last <= max_visible_column (sheet));
- button = g_sheet_model_get_column_button (sheet->model, column);
- allocation.y = 0;
- allocation.x = psppire_axis_pixel_start (sheet->haxis, column) + CELL_SPACING;
- allocation.x -= sheet->hadjustment->value;
+ region =
+ gdk_drawable_get_visible_region (GDK_DRAWABLE (sheet->column_title_window));
- allocation.height = sheet->column_title_area.height;
- allocation.width = psppire_axis_unit_size (sheet->haxis, column);
- is_sensitive = g_sheet_model_get_column_sensitivity (sheet->model, column);
+ gdk_window_begin_paint_region (sheet->column_title_window, region);
+
+ for (col = first ; col <= last ; ++col)
+ {
+ GdkRectangle allocation;
+ gboolean is_sensitive = FALSE;
+
+ GtkSheetButton *
+ button = g_sheet_model_get_column_button (sheet->model, col);
+ allocation.y = 0;
+ allocation.x = psppire_axis_pixel_start (sheet->haxis, col)
+ + CELL_SPACING;
+ allocation.x -= sheet->hadjustment->value;
+
+ allocation.height = sheet->column_title_area.height;
+ allocation.width = psppire_axis_unit_size (sheet->haxis, col);
+ is_sensitive = g_sheet_model_get_column_sensitivity (sheet->model, col);
+
+ draw_button (sheet, sheet->column_title_window,
+ button, is_sensitive, allocation);
+ }
- gtk_sheet_button_draw (sheet, sheet->column_title_window,
- button, is_sensitive, allocation);
+ gdk_window_end_paint (sheet->column_title_window);
}
static void
-gtk_sheet_row_title_button_draw (GtkSheet *sheet, gint row)
+draw_row_title_buttons_range (GtkSheet *sheet, gint first, gint last)
{
- GdkRectangle allocation;
- GtkSheetButton *button = NULL;
- gboolean is_sensitive = FALSE;
-
-
+ GdkRegion *region;
+ gint row;
if (!GTK_WIDGET_REALIZED (GTK_WIDGET (sheet))) return;
if (!sheet->row_titles_visible) return;
- if (row < min_visible_row (sheet)) return;
- if (row > max_visible_row (sheet)) return;
+ g_return_if_fail (first >= min_visible_row (sheet));
+ g_return_if_fail (last <= max_visible_row (sheet));
- button = g_sheet_row_get_button (sheet->row_geometry, row);
- allocation.x = 0;
- allocation.y = g_sheet_row_start_pixel (sheet->row_geometry, row) + CELL_SPACING;
- allocation.y -= sheet->vadjustment->value;
- allocation.width = sheet->row_title_area.width;
- allocation.height = g_sheet_row_get_height (sheet->row_geometry, row);
- is_sensitive = g_sheet_row_get_sensitivity (sheet->row_geometry, row);
+ region =
+ gdk_drawable_get_visible_region (GDK_DRAWABLE (sheet->row_title_window));
+
+ gdk_window_begin_paint_region (sheet->row_title_window, region);
+
+
+ for (row = first; row <= last; ++row)
+ {
+ GdkRectangle allocation;
+
+ gboolean is_sensitive = FALSE;
+
+ GtkSheetButton *button =
+ g_sheet_row_get_button (sheet->row_geometry, row);
+ allocation.x = 0;
+ allocation.y = g_sheet_row_start_pixel (sheet->row_geometry, row)
+ + CELL_SPACING;
+ allocation.y -= sheet->vadjustment->value;
+
+ allocation.width = sheet->row_title_area.width;
+ allocation.height = g_sheet_row_get_height (sheet->row_geometry, row);
+ is_sensitive = g_sheet_row_get_sensitivity (sheet->row_geometry, row);
+
+ draw_button (sheet, sheet->row_title_window,
+ button, is_sensitive, allocation);
+ }
- gtk_sheet_button_draw (sheet, sheet->row_title_window,
- button, is_sensitive, allocation);
+ gdk_window_end_paint (sheet->row_title_window);
}
/* SCROLLBARS
#include <stdlib.h>
#include <libpspp/tower.h>
+#include <libpspp/pool.h>
#include "psppire-axis.h"
#include <gtk/gtk.h>
static void
psppire_axis_init (PsppireAxis *axis)
{
- tower_init (&axis->tower);
+ axis->pool = NULL;
+ psppire_axis_clear (axis);
}
static void
psppire_axis_finalize (GObject *object)
{
+ PsppireAxis *a = PSPPIRE_AXIS (object);
+ pool_destroy (a->pool);
G_OBJECT_CLASS (parent_class)->finalize (object);
}
* Creates a new #PsppireAxis.
*/
PsppireAxis*
-psppire_axis_new (gint w)
+psppire_axis_new (void)
{
- PsppireAxis *new_axis = g_object_new (G_TYPE_PSPPIRE_AXIS, NULL);
-
- new_axis->width = w;
-
- return new_axis;
+ return g_object_new (G_TYPE_PSPPIRE_AXIS, NULL);
}
gint
psppire_axis_unit_size (PsppireAxis *a, gint unit)
{
- if ( a->width == -1)
- {
- const struct tower_node *node;
- if (unit >= tower_count (&a->tower))
- return 0;
+ const struct tower_node *node;
+ if (unit >= tower_count (&a->tower))
+ return 0;
- node = tower_get (&a->tower, unit);
-
- return tower_node_get_size (node);
- }
+ node = tower_get (&a->tower, unit);
- return a->width;
+ return tower_node_get_size (node);
}
gint
psppire_axis_unit_count (PsppireAxis *a)
{
- if (a->width == -1)
- return tower_count (&a->tower);
-
- return 600;
+ return tower_count (&a->tower);
}
glong
psppire_axis_pixel_start (PsppireAxis *a, gint unit)
{
- if ( a->width == -1 )
- {
- const struct tower_node *node;
+ const struct tower_node *node;
- if ( unit >= tower_count (&a->tower))
- return tower_height (&a->tower);
+ if ( unit >= tower_count (&a->tower))
+ return tower_height (&a->tower);
- node = tower_get (&a->tower, unit);
-
- return tower_node_get_level (node);
- }
+ node = tower_get (&a->tower, unit);
- return a->width * unit;
+ return tower_node_get_level (node);
}
gint
psppire_axis_get_unit_at_pixel (PsppireAxis *a, glong pixel)
{
- if (a->width == -1)
- {
- const struct tower_node *node;
- unsigned long int node_start;
+ const struct tower_node *node;
+ unsigned long int node_start;
- if (pixel >= tower_height (&a->tower))
- return tower_count (&a->tower);
+ if (pixel >= tower_height (&a->tower))
+ return tower_count (&a->tower);
- node = tower_lookup (&a->tower, pixel, &node_start);
+ node = tower_lookup (&a->tower, pixel, &node_start);
- return tower_node_get_index (node);
- }
+ return tower_node_get_index (node);
+}
- return pixel / a->width;
+void
+psppire_axis_append (PsppireAxis *a, gint size)
+{
+ struct tower_node *new = pool_malloc (a->pool, sizeof *new);
+
+ tower_insert (&a->tower, size, new, NULL);
}
+
+
+/* Insert a new unit of size SIZE before position POSN */
void
-psppire_axis_append (PsppireAxis *a, gint width)
+psppire_axis_insert (PsppireAxis *a, gint size, gint posn)
{
- struct tower_node *new = g_slice_alloc0 (sizeof *new);
- tower_insert (&a->tower, width, new, NULL);
+ struct tower_node *new = pool_malloc (a->pool, sizeof *new);
+
+ struct tower_node *before = tower_get (&a->tower, posn);
+
+ tower_insert (&a->tower, size, new, before);
+}
+
+
+void
+psppire_axis_remove (PsppireAxis *a, gint posn)
+{
+ struct tower_node *node = tower_get (&a->tower, posn);
+
+ tower_delete (&a->tower, node);
+
+ pool_free (a->pool, node);
}
+void
+psppire_axis_resize_unit (PsppireAxis *a, gint size, gint posn)
+{
+ struct tower_node *node = tower_get (&a->tower, posn);
+
+ tower_resize (&a->tower, node, size);
+}
+
+void
+psppire_axis_clear (PsppireAxis *a)
+{
+ pool_destroy (a->pool);
+ a->pool = pool_create ();
+ tower_init (&a->tower);
+}
+
PROP_SPLIT_WINDOW
};
+
+#define WIDTH_OF_M 10
+
+static void
+new_variables_callback (PsppireDict *dict, gpointer data)
+{
+ gint v, i;
+ PsppireDataEditor *de = PSPPIRE_DATA_EDITOR (data);
+
+ for (i = 0 ; i < 4 ; ++i)
+ {
+ PsppireAxis *haxis;
+ g_object_get (de->data_sheet[i], "horizontal-axis", &haxis, NULL);
+
+ psppire_axis_clear (haxis);
+
+ for (v = 0 ; v < psppire_dict_get_var_cnt (dict); ++v)
+ {
+ const struct variable *var = psppire_dict_get_variable (dict, v);
+
+ psppire_axis_append (haxis, 10 * var_get_display_width (var));
+ }
+ }
+}
+
+static void
+insert_variable_callback (PsppireDict *dict, gint x, gpointer data)
+{
+ gint i;
+ PsppireDataEditor *de = PSPPIRE_DATA_EDITOR (data);
+
+ for (i = 0 ; i < 4 ; ++i)
+ {
+ const struct variable *var = psppire_dict_get_variable (dict, x);
+ PsppireAxis *haxis;
+ g_object_get (de->data_sheet[i], "horizontal-axis", &haxis, NULL);
+
+ psppire_axis_insert (haxis, WIDTH_OF_M * var_get_display_width (var), x);
+ }
+}
+
+
+static void
+delete_variable_callback (PsppireDict *dict, gint posn, gint x UNUSED, gint y UNUSED, gpointer data)
+{
+ gint i;
+ PsppireDataEditor *de = PSPPIRE_DATA_EDITOR (data);
+
+ for (i = 0 ; i < 4 ; ++i)
+ {
+ PsppireAxis *haxis;
+ g_object_get (de->data_sheet[i], "horizontal-axis", &haxis, NULL);
+
+ psppire_axis_remove (haxis, posn);
+ }
+}
+
+
+static void
+rewidth_variable_callback (PsppireDict *dict, gint posn, gpointer data)
+{
+ gint i;
+ PsppireDataEditor *de = PSPPIRE_DATA_EDITOR (data);
+
+ for (i = 0 ; i < 4 ; ++i)
+ {
+ const struct variable *var = psppire_dict_get_variable (dict, posn);
+ PsppireAxis *haxis;
+ g_object_get (de->data_sheet[i], "horizontal-axis", &haxis, NULL);
+
+ psppire_axis_resize_unit (haxis, WIDTH_OF_M * var_get_display_width (var), posn);
+ }
+}
+
+
static void
psppire_data_editor_set_property (GObject *object,
guint prop_id,
"row-geometry", de->data_store,
"model", de->data_store,
NULL);
+
+ g_signal_connect (de->data_store->dict, "backend-changed", G_CALLBACK (new_variables_callback), de);
+ g_signal_connect (de->data_store->dict, "variable-inserted", G_CALLBACK (insert_variable_callback), de);
+ g_signal_connect (de->data_store->dict, "variable-deleted", G_CALLBACK (delete_variable_callback), de);
+ // g_signal_connect (de->data_store->dict, "variable-changed", G_CALLBACK (alter_variable_callback), de);
+ g_signal_connect (de->data_store->dict, "variable-display-width-changed", G_CALLBACK (rewidth_variable_callback), de);
break;
case PROP_VAR_STORE:
if ( de->var_store) g_object_unref (de->var_store);
init_sheet (PsppireDataEditor *de, int i,
GtkAdjustment *hadj, GtkAdjustment *vadj)
{
- PsppireAxis *haxis = psppire_axis_new (100);
+ PsppireAxis *haxis = psppire_axis_new ();
de->sheet_bin[i] = gtk_scrolled_window_new (hadj, vadj);
de->data_sheet[i] = gtk_sheet_new (NULL, NULL, NULL);
psppire_data_editor_new (PsppireVarStore *var_store,
PsppireDataStore *data_store)
{
- GtkWidget *widget;
-
- widget = g_object_new (PSPPIRE_DATA_EDITOR_TYPE,
- "var-store", var_store,
- "data-store", data_store,
- NULL);
-
-
-
- return widget;
+ return g_object_new (PSPPIRE_DATA_EDITOR_TYPE,
+ "var-store", var_store,
+ "data-store", data_store,
+ NULL);
}