#define COLUMN_MIN_WIDTH 10
#define COLUMN_TITLES_HEIGHT 4
#define DEFAULT_COLUMN_WIDTH 80
+#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);
g_free (text);
}
-static guint
-default_row_height (const GtkSheet *sheet)
-{
- GtkWidget *widget = GTK_WIDGET (sheet);
-
- if (! GTK_WIDGET_REALIZED (widget) || !widget->style->font_desc)
- return 25;
- else
- {
- PangoContext *context = gtk_widget_get_pango_context (widget);
- PangoFontMetrics *metrics =
- pango_context_get_metrics (context,
- widget->style->font_desc,
- pango_context_get_language (context));
-
- guint val = pango_font_metrics_get_descent (metrics) +
- pango_font_metrics_get_ascent (metrics);
-
- pango_font_metrics_unref (metrics);
-
- return PANGO_PIXELS (val) + 2 * COLUMN_TITLES_HEIGHT;
- }
-}
-
static
guint STRING_WIDTH (GtkWidget *widget,
const PangoFontDescription *font, const gchar *text)
glong row = max_visible_row (sheet);
if ( g_sheet_row_start_pixel (sheet->row_geometry, row)
- +
+ +
g_sheet_row_get_height (sheet->row_geometry, row)
> sheet->vadjustment->value)
row--;
}
-/* returns the column index from a x pixel location */
+/* returns the column index from a pixel location */
static inline gint
-column_from_xpixel (const GtkSheet *sheet, gint x)
+column_from_xpixel (const GtkSheet *sheet, gint pixel)
{
- gint i;
- gint cx = 0;
-
- if (x < 0) return -1;
- for (i = 0;
- i < g_sheet_column_get_column_count (sheet->column_geometry); i++)
- {
- if (x >= cx &&
- x <= (cx + g_sheet_column_get_width (sheet->column_geometry, i)))
- return i;
-
- cx += g_sheet_column_get_width (sheet->column_geometry, i);
- }
-
- /* no match */
- return g_sheet_column_get_column_count (sheet->column_geometry) - 1;
+ return psppire_axis_get_unit_at_pixel (sheet->haxis, pixel);
}
{
glong col = min_visible_column (sheet);
- if ( g_sheet_column_start_pixel (sheet->column_geometry, col) < sheet->hadjustment->value)
+ if ( psppire_axis_pixel_start (sheet->haxis, col) < sheet->hadjustment->value)
col++;
return col;
{
glong col = max_visible_column (sheet);
- if ( g_sheet_column_start_pixel (sheet->column_geometry, col)
+ if ( psppire_axis_pixel_start (sheet->haxis, col)
+
- g_sheet_column_get_width (sheet->column_geometry, col)
+ psppire_axis_unit_size (sheet->haxis, col)
> sheet->hadjustment->value)
col--;
*drag_column = column_from_xpixel (sheet, x);
*drag_row = yyy_row_ypixel_to_row (sheet, y);
- if (x >= g_sheet_column_start_pixel (sheet->column_geometry, sheet->range.col0) - DRAG_WIDTH / 2 &&
- x <= g_sheet_column_start_pixel (sheet->column_geometry, sheet->range.coli) +
- g_sheet_column_get_width (sheet->column_geometry, sheet->range.coli) + DRAG_WIDTH / 2)
+ if (x >= psppire_axis_pixel_start (sheet->haxis, sheet->range.col0) - DRAG_WIDTH / 2 &&
+ x <= psppire_axis_pixel_start (sheet->haxis, sheet->range.coli) +
+ psppire_axis_unit_size (sheet->haxis, sheet->range.coli) + DRAG_WIDTH / 2)
{
ydrag = g_sheet_row_start_pixel (sheet->row_geometry, sheet->range.row0);
if (y >= ydrag - DRAG_WIDTH / 2 && y <= ydrag + DRAG_WIDTH / 2)
y <= g_sheet_row_start_pixel (sheet->row_geometry, sheet->range.rowi) +
g_sheet_row_get_height (sheet->row_geometry, sheet->range.rowi) + DRAG_WIDTH / 2)
{
- xdrag = g_sheet_column_start_pixel (sheet->column_geometry, sheet->range.col0);
+ xdrag = psppire_axis_pixel_start (sheet->haxis, sheet->range.col0);
if (x >= xdrag - DRAG_WIDTH / 2 && x <= xdrag + DRAG_WIDTH / 2)
{
*drag_column = sheet->range.col0;
return TRUE;
}
- xdrag = g_sheet_column_start_pixel (sheet->column_geometry, sheet->range.coli) +
- g_sheet_column_get_width (sheet->column_geometry, sheet->range.coli);
+ xdrag = psppire_axis_pixel_start (sheet->haxis, sheet->range.coli) +
+ psppire_axis_unit_size (sheet->haxis, sheet->range.coli);
if (x >= xdrag - DRAG_WIDTH / 2 && x <= xdrag + DRAG_WIDTH / 2)
{
*drag_column = sheet->range.coli;
sheet->range.col0 < 0 || sheet->range.coli < 0 )
return FALSE;
- xdrag = g_sheet_column_start_pixel (sheet->column_geometry, sheet->range.coli)+
- g_sheet_column_get_width (sheet->column_geometry, sheet->range.coli);
+ xdrag = psppire_axis_pixel_start (sheet->haxis, sheet->range.coli)+
+ psppire_axis_unit_size (sheet->haxis, sheet->range.coli);
ydrag = g_sheet_row_start_pixel (sheet->row_geometry, sheet->range.rowi) +
g_sheet_row_get_height (sheet->row_geometry, sheet->range.rowi);
ydrag = g_sheet_row_start_pixel (sheet->row_geometry, min_visible_row (sheet));
if (sheet->state == GTK_SHEET_ROW_SELECTED)
- xdrag = g_sheet_column_start_pixel (sheet->column_geometry, min_visible_column (sheet));
+ xdrag = psppire_axis_pixel_start (sheet->haxis, min_visible_column (sheet));
*drag_column = column_from_xpixel (sheet, x);
*drag_row = yyy_row_ypixel_to_row (sheet, y);
{
g_return_val_if_fail (range, FALSE);
- r->x = g_sheet_column_start_pixel (sheet->column_geometry, range->col0);
+ r->x = psppire_axis_pixel_start (sheet->haxis, range->col0);
r->x -= round (sheet->hadjustment->value);
if ( sheet->row_titles_visible)
if ( sheet->column_titles_visible)
r->y += sheet->column_title_area.height;
- r->width = g_sheet_column_start_pixel (sheet->column_geometry, range->coli) -
- g_sheet_column_start_pixel (sheet->column_geometry, range->col0) +
- g_sheet_column_get_width (sheet->column_geometry, range->coli);
+ r->width = psppire_axis_pixel_start (sheet->haxis, range->coli) -
+ psppire_axis_pixel_start (sheet->haxis, range->col0) +
+ psppire_axis_unit_size (sheet->haxis, range->coli);
r->height = g_sheet_row_start_pixel (sheet->row_geometry, range->rowi) -
g_sheet_row_start_pixel (sheet->row_geometry, range->row0) +
MOVE_RANGE,
TRAVERSE,
ACTIVATE,
- CHANGED,
LAST_SIGNAL
};
return sheet_type;
}
+\f
+
static GtkSheetRange*
gtk_sheet_range_copy (const GtkSheetRange *range)
{
return sheet_range_type;
}
+static GtkSheetCell*
+gtk_sheet_cell_copy (const GtkSheetCell *cell)
+{
+ GtkSheetCell *new_cell;
+
+ g_return_val_if_fail (cell != NULL, NULL);
+
+ new_cell = g_new (GtkSheetCell, 1);
+
+ *new_cell = *cell;
+
+ return new_cell;
+}
+
+static void
+gtk_sheet_cell_free (GtkSheetCell *cell)
+{
+ g_return_if_fail (cell != NULL);
+
+ g_free (cell);
+}
+
+GType
+gtk_sheet_cell_get_type (void)
+{
+ static GType sheet_cell_type = 0;
+
+ if (!sheet_cell_type)
+ {
+ sheet_cell_type =
+ g_boxed_type_register_static ("GtkSheetCell",
+ (GBoxedCopyFunc) gtk_sheet_cell_copy,
+ (GBoxedFreeFunc) gtk_sheet_cell_free);
+ }
+
+ return sheet_cell_type;
+}
+\f
static void column_titles_changed (GtkWidget *w, gint first, gint n_columns,
gpointer data);
{
PROP_0,
PROP_ROW_GEO,
- PROP_COL_GEO,
+ PROP_HAXIS,
PROP_MODEL
};
}
static void
-gtk_sheet_set_column_geometry (GtkSheet *sheet, GSheetColumn *geo)
+gtk_sheet_set_horizontal_axis (GtkSheet *sheet, PsppireAxis *a)
{
- if ( sheet->column_geometry ) g_object_unref (sheet->column_geometry);
+ if ( sheet->haxis )
+ g_object_unref (sheet->haxis);
- sheet->column_geometry = geo;
+ sheet->haxis = a;
- if ( sheet->column_geometry ) g_object_ref (sheet->column_geometry);
+ if ( sheet->haxis )
+ g_object_ref (sheet->haxis);
}
case PROP_ROW_GEO:
gtk_sheet_set_row_geometry (sheet, g_value_get_pointer (value));
break;
- case PROP_COL_GEO:
- gtk_sheet_set_column_geometry (sheet, g_value_get_pointer (value));
- if ( sheet->column_geometry)
- g_signal_connect (sheet->column_geometry, "columns_changed",
- G_CALLBACK (column_titles_changed), sheet);
+ case PROP_HAXIS:
+ gtk_sheet_set_horizontal_axis (sheet, g_value_get_pointer (value));
break;
case PROP_MODEL:
gtk_sheet_set_model (sheet, g_value_get_pointer (value));
case PROP_ROW_GEO:
g_value_set_pointer (value, sheet->row_geometry);
break;
- case PROP_COL_GEO:
- g_value_set_pointer (value, sheet->column_geometry);
+ case PROP_HAXIS:
+ g_value_set_pointer (value, sheet->haxis);
break;
case PROP_MODEL:
g_value_set_pointer (value, sheet->model);
GObjectClass *object_class = G_OBJECT_CLASS (klass);
GParamSpec *row_geo_spec ;
- GParamSpec *col_geo_spec ;
+ GParamSpec *haxis_spec ;
GParamSpec *model_spec ;
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
G_SIGNAL_RUN_LAST,
offsetof (GtkSheetClass, traverse),
NULL, NULL,
- gtkextra_BOOLEAN__INT_INT_POINTER_POINTER,
- G_TYPE_BOOLEAN, 4, G_TYPE_INT, G_TYPE_INT,
- G_TYPE_POINTER, G_TYPE_POINTER);
+ gtkextra_BOOLEAN__BOXED_POINTER,
+ G_TYPE_BOOLEAN, 2,
+ GTK_TYPE_SHEET_CELL,
+ G_TYPE_POINTER);
sheet_signals[ACTIVATE] =
G_TYPE_INT, G_TYPE_INT,
G_TYPE_INT, G_TYPE_INT);
- sheet_signals[CHANGED] =
- g_signal_new ("changed",
- G_TYPE_FROM_CLASS (object_class),
- G_SIGNAL_RUN_LAST,
- offsetof (GtkSheetClass, changed),
- NULL, NULL,
- gtkextra_VOID__INT_INT,
- G_TYPE_NONE, 2, G_TYPE_INT, G_TYPE_INT);
-
widget_class->set_scroll_adjustments_signal =
g_signal_new ("set-scroll-adjustments",
G_TYPE_FROM_CLASS (object_class),
"A pointer to the model of the row geometry",
G_PARAM_READABLE | G_PARAM_WRITABLE );
- col_geo_spec =
- g_param_spec_pointer ("column-geometry",
- "Column Geometry",
- "A pointer to the model of the column geometry",
+ haxis_spec =
+ g_param_spec_pointer ("horizontal-axis",
+ "Horizontal Axis",
+ "A pointer to the PsppireAxis object for the columns",
G_PARAM_READABLE | G_PARAM_WRITABLE );
model_spec =
row_geo_spec);
g_object_class_install_property (object_class,
- PROP_COL_GEO,
- col_geo_spec);
+ PROP_HAXIS,
+ haxis_spec);
g_object_class_install_property (object_class,
PROP_MODEL,
gtk_sheet_init (GtkSheet *sheet)
{
sheet->model = NULL;
- sheet->column_geometry = NULL;
+ sheet->haxis = NULL;
sheet->row_geometry = NULL;
sheet->flags = 0;
sheet->column_title_area.x = 0;
sheet->column_title_area.y = 0;
sheet->column_title_area.width = 0;
- sheet->column_title_area.height = default_row_height (sheet);
+ sheet->column_title_area.height = DEFAULT_ROW_HEIGHT;
sheet->row_title_window = NULL;
sheet->row_title_area.x = 0;
*/
range.col0 = first_column;
range.row0 = 0;
- range.coli = g_sheet_column_get_column_count (sheet->column_geometry) - 1;
+ range.coli = psppire_axis_unit_count (sheet->haxis) - 1;
range.rowi = g_sheet_row_get_row_count (sheet->row_geometry) - 1;
adjust_scrollbars (sheet);
range.row0 = first_row;
range.col0 = 0;
range.rowi = g_sheet_row_get_row_count (sheet->row_geometry) - 1;
- range.coli = g_sheet_column_get_column_count (sheet->column_geometry) - 1;
+ range.coli = psppire_axis_unit_count (sheet->haxis) - 1;
adjust_scrollbars (sheet);
* Returns: the new sheet widget
*/
GtkWidget *
-gtk_sheet_new (GSheetRow *vgeo, GSheetColumn *hgeo, GSheetModel *model)
+gtk_sheet_new (GSheetRow *vgeo, void *hgeo, GSheetModel *model)
{
GtkWidget *widget = g_object_new (GTK_TYPE_SHEET,
"row-geometry", vgeo,
- "column-geometry", hgeo,
"model", model,
NULL);
return widget;
if ( n_columns == -1 )
{
extremity = TRUE;
- n_columns = g_sheet_column_get_column_count (sheet->column_geometry) - 1 ;
+ n_columns = psppire_axis_unit_count (sheet->haxis) - 1 ;
}
- {
- gint i;
- for ( i = first ; i <= first + n_columns ; ++i )
- {
- gtk_sheet_column_title_button_draw (sheet, i);
- g_signal_emit (sheet, sheet_signals[CHANGED], 0, -1, i);
- }
- }
-
if ( extremity)
gtk_sheet_column_title_button_draw (sheet, -1);
-
}
void
g_return_val_if_fail (sheet != NULL, 0);
g_return_val_if_fail (GTK_IS_SHEET (sheet), 0);
- return g_sheet_column_get_column_count (sheet->column_geometry);
+ return psppire_axis_unit_count (sheet->haxis);
}
static void
g_return_if_fail (sheet != NULL);
g_return_if_fail (GTK_IS_SHEET (sheet));
- if (column >= g_sheet_column_get_column_count (sheet->column_geometry) || column < 0) return;
+ 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++)
{
dispose_string (sheet, text);
}
- if (text_width > g_sheet_column_get_width (sheet->column_geometry, column) )
+ if (text_width > psppire_axis_unit_size (sheet->haxis, column) )
{
gtk_sheet_set_column_width (sheet, column, text_width);
}
g_return_if_fail (col_align <= 1);
g_return_if_fail (col <
- g_sheet_column_get_column_count (sheet->column_geometry));
+ psppire_axis_unit_count (sheet->haxis));
g_return_if_fail (row <
g_sheet_row_get_row_count (sheet->row_geometry));
if (col >= 0)
{
- gint x = g_sheet_column_start_pixel (sheet->column_geometry, col);
+ gint x = psppire_axis_pixel_start (sheet->haxis, col);
gtk_adjustment_set_value (sheet->hadjustment, x - width * col_align);
}
sheet->range.row0 = row;
sheet->range.col0 = 0;
sheet->range.rowi = row;
- sheet->range.coli = g_sheet_column_get_column_count (sheet->column_geometry) - 1;
+ sheet->range.coli = psppire_axis_unit_count (sheet->haxis) - 1;
sheet->active_cell.row = row;
sheet->active_cell.col = 0;
g_return_if_fail (sheet != NULL);
g_return_if_fail (GTK_IS_SHEET (sheet));
- if (column < 0 || column >= g_sheet_column_get_column_count (sheet->column_geometry))
+ if (column < 0 || column >= psppire_axis_unit_count (sheet->haxis))
return;
if (sheet->state != GTK_SHEET_NORMAL)
if (range.rowi < 0 || range.rowi >= g_sheet_row_get_row_count (sheet->row_geometry))
return FALSE;
- if (range.col0 < 0 || range.col0 >= g_sheet_column_get_column_count (sheet->column_geometry))
+ if (range.col0 < 0 || range.col0 >= psppire_axis_unit_count (sheet->haxis))
return FALSE;
- if (range.coli < 0 || range.coli >= g_sheet_column_get_column_count (sheet->column_geometry))
+ if (range.coli < 0 || range.coli >= psppire_axis_unit_count (sheet->haxis))
return FALSE;
if (range.rowi < min_visible_row (sheet))
if (sheet->model) g_object_unref (sheet->model);
if (sheet->row_geometry) g_object_unref (sheet->row_geometry);
- if (sheet->column_geometry) g_object_unref (sheet->column_geometry);
+ if (sheet->haxis) g_object_unref (sheet->haxis);
g_object_unref (sheet->entry_container);
sheet->entry_container = NULL;
return;
if (col < 0 ||
- col >= g_sheet_column_get_column_count (sheet->column_geometry))
+ col >= psppire_axis_unit_count (sheet->haxis))
return;
gtk_sheet_get_attributes (sheet, row, col, &attributes);
const gchar *text)
{
GSheetModel *model ;
- gboolean changed = FALSE;
gchar *old_text ;
g_return_if_fail (sheet != NULL);
g_return_if_fail (GTK_IS_SHEET (sheet));
- if (col >= g_sheet_column_get_column_count (sheet->column_geometry)
+ if (col >= psppire_axis_unit_count (sheet->haxis)
|| row >= g_sheet_row_get_row_count (sheet->row_geometry))
return;
old_text = g_sheet_model_get_string (model, row, col);
- if (0 != safe_strcmp (old_text, text))
- {
- changed = g_sheet_model_set_string (model, text, row, col);
- }
-
if ( g_sheet_model_free_strings (model))
g_free (old_text);
-
- if ( changed )
- g_signal_emit (sheet, sheet_signals[CHANGED], 0, row, col);
}
g_return_if_fail (sheet != NULL);
g_return_if_fail (GTK_IS_SHEET (sheet));
- if (column >= g_sheet_column_get_column_count (sheet->column_geometry) ||
+ if (column >= psppire_axis_unit_count (sheet->haxis) ||
row >= g_sheet_row_get_row_count (sheet->row_geometry)) return;
if (column < 0 || row < 0) return;
g_return_val_if_fail (sheet != NULL, NULL);
g_return_val_if_fail (GTK_IS_SHEET (sheet), NULL);
- if (col >= g_sheet_column_get_column_count (sheet->column_geometry) || row >= g_sheet_row_get_row_count (sheet->row_geometry))
+ if (col >= psppire_axis_unit_count (sheet->haxis) || row >= g_sheet_row_get_row_count (sheet->row_geometry))
return NULL;
if (col < 0 || row < 0) return NULL;
g_return_val_if_fail (sheet != NULL, 0);
g_return_val_if_fail (GTK_IS_SHEET (sheet), 0);
- if (col >= g_sheet_column_get_column_count (sheet->column_geometry) || row >= g_sheet_row_get_row_count (sheet->row_geometry)) return 0;
+ if (col >= psppire_axis_unit_count (sheet->haxis) || row >= g_sheet_row_get_row_count (sheet->row_geometry)) return 0;
if (col < 0 || row < 0) return 0;
state = sheet->state;
else
{
tcol = column_from_xpixel (sheet, x);
- if (tcol > g_sheet_column_get_column_count (sheet->column_geometry))
+ if (tcol > psppire_axis_unit_count (sheet->haxis))
return FALSE;
}
g_return_val_if_fail (sheet != NULL, 0);
g_return_val_if_fail (GTK_IS_SHEET (sheet), 0);
- if (row >= g_sheet_row_get_row_count (sheet->row_geometry) || column >= g_sheet_column_get_column_count (sheet->column_geometry))
+ if (row >= g_sheet_row_get_row_count (sheet->row_geometry) || column >= psppire_axis_unit_count (sheet->haxis))
return FALSE;
- area->x = (column == -1) ? 0 : g_sheet_column_start_pixel (sheet->column_geometry, column);
+ area->x = (column == -1) ? 0 : psppire_axis_pixel_start (sheet->haxis, column);
area->y = (row == -1) ? 0 : g_sheet_row_start_pixel (sheet->row_geometry, row);
area->width= (column == -1) ? sheet->row_title_area.width
- : g_sheet_column_get_width (sheet->column_geometry, column);
+ : psppire_axis_unit_size (sheet->haxis, column);
area->height= (row == -1) ? sheet->column_title_area.height
: g_sheet_row_get_height (sheet->row_geometry, row);
if (row >= g_sheet_row_get_row_count (sheet->row_geometry)
||
- col >= g_sheet_column_get_column_count (sheet->column_geometry))
+ col >= psppire_axis_unit_count (sheet->haxis))
return;
sheet->active_cell.row = row;
return;
if ( row > g_sheet_row_get_row_count (sheet->row_geometry)
- || col > g_sheet_column_get_column_count (sheet->column_geometry))
+ || col > psppire_axis_unit_count (sheet->haxis))
return;
if (sheet->state != GTK_SHEET_NORMAL)
if (mask1 != mask2)
{
- x = g_sheet_column_start_pixel (sheet->column_geometry, j);
+ x = psppire_axis_pixel_start (sheet->haxis, j);
y = g_sheet_row_start_pixel (sheet->row_geometry, i);
- width = g_sheet_column_start_pixel (sheet->column_geometry, j)- x+
- g_sheet_column_get_width (sheet->column_geometry, j);
+ width = psppire_axis_pixel_start (sheet->haxis, j)- x+
+ psppire_axis_unit_size (sheet->haxis, j);
height = g_sheet_row_start_pixel (sheet->row_geometry, i) - y + g_sheet_row_get_height (sheet->row_geometry, i);
if (i == sheet->range.row0)
if (i != sheet->active_cell.row || j != sheet->active_cell.col)
{
- x = g_sheet_column_start_pixel (sheet->column_geometry, j);
+ x = psppire_axis_pixel_start (sheet->haxis, j);
y = g_sheet_row_start_pixel (sheet->row_geometry, i);
- width = g_sheet_column_start_pixel (sheet->column_geometry, j)- x+
- g_sheet_column_get_width (sheet->column_geometry, j);
+ width = psppire_axis_pixel_start (sheet->haxis, j)- x+
+ psppire_axis_unit_size (sheet->haxis, j);
height = g_sheet_row_start_pixel (sheet->row_geometry, i) - y + g_sheet_row_get_height (sheet->row_geometry, i);
if (state == GTK_STATE_SELECTED && !selected)
{
- x = g_sheet_column_start_pixel (sheet->column_geometry, j);
+ x = psppire_axis_pixel_start (sheet->haxis, j);
y = g_sheet_row_start_pixel (sheet->row_geometry, i);
- width = g_sheet_column_start_pixel (sheet->column_geometry, j) - x + g_sheet_column_get_width (sheet->column_geometry, j);
+ width = psppire_axis_pixel_start (sheet->haxis, j) - x + psppire_axis_unit_size (sheet->haxis, j);
height = g_sheet_row_start_pixel (sheet->row_geometry, i) - y + g_sheet_row_get_height (sheet->row_geometry, i);
if (i == sheet->range.row0)
(i != sheet->active_cell.row || j != sheet->active_cell.col))
{
- x = g_sheet_column_start_pixel (sheet->column_geometry, j);
+ x = psppire_axis_pixel_start (sheet->haxis, j);
y = g_sheet_row_start_pixel (sheet->row_geometry, i);
- width = g_sheet_column_start_pixel (sheet->column_geometry, j) - x + g_sheet_column_get_width (sheet->column_geometry, j);
+ width = psppire_axis_pixel_start (sheet->haxis, j) - x + psppire_axis_unit_size (sheet->haxis, j);
height = g_sheet_row_start_pixel (sheet->row_geometry, i) - y + g_sheet_row_get_height (sheet->row_geometry, i);
if (i == new_range.row0)
mask2 = j == new_range.coli ? mask2 + 8 : mask2;
if (mask2 != mask1 || (mask2 == mask1 && state != GTK_STATE_SELECTED))
{
- x = g_sheet_column_start_pixel (sheet->column_geometry, j);
+ x = psppire_axis_pixel_start (sheet->haxis, j);
y = g_sheet_row_start_pixel (sheet->row_geometry, i);
- width = g_sheet_column_get_width (sheet->column_geometry, j);
+ width = psppire_axis_unit_size (sheet->haxis, j);
height = g_sheet_row_get_height (sheet->row_geometry, i);
if (mask2 & 1)
gdk_draw_rectangle (sheet->sheet_window,
sheet_signals[BUTTON_EVENT_COLUMN], 0,
column, event);
- if (g_sheet_column_get_sensitivity (sheet->column_geometry, column))
+ if (g_sheet_model_get_column_sensitivity (sheet->model, column))
{
if ( event->type == GDK_2BUTTON_PRESS && event->button == 1)
g_signal_emit (sheet,
column = column_from_xpixel (sheet, x);
- if (g_sheet_column_get_sensitivity (sheet->column_geometry, column))
+ if (g_sheet_model_get_column_sensitivity (sheet->model, column))
{
veto = gtk_sheet_click_cell (sheet, -1, column);
gtk_grab_add (GTK_WIDGET (sheet));
static gboolean
gtk_sheet_click_cell (GtkSheet *sheet, gint row, gint column)
{
+ GtkSheetCell cell;
gboolean forbid_move;
+ cell.row = row;
+ cell.col = column;
+
if (row >= g_sheet_row_get_row_count (sheet->row_geometry)
- || column >= g_sheet_column_get_column_count (sheet->column_geometry))
+ || column >= psppire_axis_unit_count (sheet->haxis))
{
return FALSE;
}
g_signal_emit (sheet, sheet_signals[TRAVERSE], 0,
- sheet->active_cell.row, sheet->active_cell.col,
- &row, &column, &forbid_move);
+ &sheet->active_cell,
+ &cell,
+ &forbid_move);
if (forbid_move)
{
sheet->range.col0 = 0;
sheet->range.rowi = g_sheet_row_get_row_count (sheet->row_geometry) - 1;
sheet->range.coli =
- g_sheet_column_get_column_count (sheet->column_geometry) - 1;
+ psppire_axis_unit_count (sheet->haxis) - 1;
sheet->active_cell.row = 0;
sheet->active_cell.col = 0;
gtk_sheet_select_range (sheet, NULL);
if (sheet->row_title_under)
{
GSheetRow *row_geo = sheet->row_geometry;
- gchar *text;
-
- text = g_sheet_row_get_subtitle (row_geo, row);
+ gchar *text = g_sheet_row_get_subtitle (row_geo, row);
show_subtitle (sheet, row, -1, text);
g_free (text);
if (sheet->column_title_under)
{
- GSheetColumn *col_geo = sheet->column_geometry;
- gchar *text;
-
- text = g_sheet_column_get_subtitle (col_geo, column);
+ gchar *text = g_sheet_model_get_column_subtitle (sheet->model,
+ column);
show_subtitle (sheet, -1, column, text);
sheet->y_drag = y;
aux = sheet->range;
if (aux.row0 + row >= 0 && aux.rowi + row < g_sheet_row_get_row_count (sheet->row_geometry) &&
- aux.col0 + column >= 0 && aux.coli + column < g_sheet_column_get_column_count (sheet->column_geometry))
+ aux.col0 + column >= 0 && aux.coli + column < psppire_axis_unit_count (sheet->haxis))
{
aux = sheet->drag_range;
sheet->drag_range.row0 = sheet->range.row0 + row;
GtkSheetRange aux;
gint v_h, current_col, current_row, col_threshold, row_threshold;
v_h = 1;
- if (abs (x - g_sheet_column_start_pixel (sheet->column_geometry, sheet->drag_cell.col)) >
+ if (abs (x - psppire_axis_pixel_start (sheet->haxis, sheet->drag_cell.col)) >
abs (y - g_sheet_row_start_pixel (sheet->row_geometry, sheet->drag_cell.row))) v_h = 2;
current_col = column_from_xpixel (sheet, x);
/*use half of column width resp. row height as threshold to
expand selection*/
- col_threshold = g_sheet_column_start_pixel (sheet->column_geometry, current_col) +
- g_sheet_column_get_width (sheet->column_geometry, current_col) / 2;
+ col_threshold = psppire_axis_pixel_start (sheet->haxis, current_col) +
+ psppire_axis_unit_size (sheet->haxis, current_col) / 2;
if (column > 0)
{
if (x < col_threshold)
row = 0;
if (aux.row0 + row >= 0 && aux.rowi + row < g_sheet_row_get_row_count (sheet->row_geometry) &&
- aux.col0 + column >= 0 && aux.coli + column < g_sheet_column_get_column_count (sheet->column_geometry))
+ aux.col0 + column >= 0 && aux.coli + column < psppire_axis_unit_count (sheet->haxis))
{
aux = sheet->drag_range;
sheet->drag_range = sheet->range;
switch (sheet->state)
{
case GTK_SHEET_ROW_SELECTED:
- column = g_sheet_column_get_column_count (sheet->column_geometry) - 1;
+ column = psppire_axis_unit_count (sheet->haxis) - 1;
break;
case GTK_SHEET_COLUMN_SELECTED:
row = g_sheet_row_get_row_count (sheet->row_geometry) - 1;
{
gint current_row = sheet->active_cell.row;
gint current_col = sheet->active_cell.col;
- gint new_row = current_row;
- gint new_col = current_col;
+ GtkSheetCell new_cell ;
gboolean forbidden = FALSE;
+ new_cell.row = current_row;
+ new_cell.col = current_col;
+
switch ( dir)
{
case GTK_SCROLL_STEP_DOWN:
- new_row++;
+ new_cell.row++;
break;
case GTK_SCROLL_STEP_UP:
- new_row--;
+ new_cell.row--;
break;
case GTK_SCROLL_STEP_RIGHT:
- new_col++;
+ new_cell.col++;
break;
case GTK_SCROLL_STEP_LEFT:
- new_col--;
+ new_cell.col--;
break;
default:
g_assert_not_reached ();
}
- maximize_int (&new_row, 0);
- maximize_int (&new_col, 0);
+ maximize_int (&new_cell.row, 0);
+ maximize_int (&new_cell.col, 0);
- minimize_int (&new_row,
+ minimize_int (&new_cell.row,
g_sheet_row_get_row_count (sheet->row_geometry) - 1);
- minimize_int (&new_col,
- g_sheet_column_get_column_count (sheet->column_geometry) - 1);
+ minimize_int (&new_cell.col,
+ psppire_axis_unit_count (sheet->haxis) - 1);
g_signal_emit (sheet, sheet_signals[TRAVERSE], 0,
- current_row, current_col,
- &new_row, &new_col, &forbidden);
+ &sheet->active_cell,
+ &new_cell,
+ &forbidden);
if (forbidden)
return;
- change_active_cell (sheet, new_row, new_col);
+ change_active_cell (sheet, new_cell.row, new_cell.col);
- if ( new_col > max_fully_visible_column (sheet))
+ if ( new_cell.col > max_fully_visible_column (sheet))
{
glong hpos =
- g_sheet_column_start_pixel (sheet->column_geometry,
- new_col + 1);
+ psppire_axis_pixel_start (sheet->haxis,
+ new_cell.col + 1);
hpos -= sheet->hadjustment->page_size;
gtk_adjustment_set_value (sheet->hadjustment,
hpos);
}
- else if ( new_col < min_fully_visible_column (sheet))
+ else if ( new_cell.col < min_fully_visible_column (sheet))
{
glong hpos =
- g_sheet_column_start_pixel (sheet->column_geometry,
- new_col);
+ psppire_axis_pixel_start (sheet->haxis,
+ new_cell.col);
gtk_adjustment_set_value (sheet->hadjustment,
hpos);
}
- if ( new_row > max_fully_visible_row (sheet))
+ if ( new_cell.row > max_fully_visible_row (sheet))
{
glong vpos =
g_sheet_row_start_pixel (sheet->row_geometry,
- new_row + 1);
+ new_cell.row + 1);
vpos -= sheet->vadjustment->page_size;
gtk_adjustment_set_value (sheet->vadjustment,
vpos);
}
- else if ( new_row < min_fully_visible_row (sheet))
+ else if ( new_cell.row < min_fully_visible_row (sheet))
{
glong vpos =
g_sheet_row_start_pixel (sheet->row_geometry,
- new_row);
+ new_cell.row);
gtk_adjustment_set_value (sheet->vadjustment,
vpos);
sheet = GTK_SHEET (widget);
requisition->width = 3 * DEFAULT_COLUMN_WIDTH;
- requisition->height = 3 * default_row_height (sheet);
+ requisition->height = 3 * DEFAULT_ROW_HEIGHT;
/* compute the size of the column title area */
if (sheet->column_titles_visible)
}
if (max_visible_column (sheet) ==
- g_sheet_column_get_column_count (sheet->column_geometry) - 1)
+ psppire_axis_unit_count (sheet->haxis) - 1)
gdk_window_clear_area (sheet->column_title_window,
0, 0,
sheet->column_title_area.width,
if (button->label_visible)
{
- text_height = default_row_height (sheet) -
+ text_height = DEFAULT_ROW_HEIGHT -
2 * COLUMN_TITLES_HEIGHT;
gdk_gc_set_clip_rectangle (GTK_WIDGET (sheet)->style->fg_gc[button->state],
if (column < min_visible_column (sheet)) return;
if (column > max_visible_column (sheet)) return;
- button = g_sheet_column_get_button (sheet->column_geometry, column);
+ button = g_sheet_model_get_column_button (sheet->model, column);
allocation.y = 0;
- allocation.x = g_sheet_column_start_pixel (sheet->column_geometry, column) + CELL_SPACING;
+ allocation.x = psppire_axis_pixel_start (sheet->haxis, column) + CELL_SPACING;
allocation.x -= sheet->hadjustment->value;
allocation.height = sheet->column_title_area.height;
- allocation.width = g_sheet_column_get_width (sheet->column_geometry, column);
- is_sensitive = g_sheet_column_get_sensitivity (sheet->column_geometry, column);
+ allocation.width = psppire_axis_unit_size (sheet->haxis, column);
+ is_sensitive = g_sheet_model_get_column_sensitivity (sheet->model, column);
gtk_sheet_button_draw (sheet, sheet->column_title_window,
button, is_sensitive, allocation);
sheet->hadjustment->page_increment = width;
- last_col = g_sheet_column_get_column_count (sheet->column_geometry) - 1;
+ last_col = psppire_axis_unit_count (sheet->haxis) - 1;
sheet->hadjustment->upper =
- g_sheet_column_start_pixel (sheet->column_geometry, last_col)
+ psppire_axis_pixel_start (sheet->haxis, last_col)
+
- g_sheet_column_get_width (sheet->column_geometry, last_col)
+ psppire_axis_unit_size (sheet->haxis, last_col)
;
sheet->hadjustment->lower = 0;
GdkRectangle clip_area, area;
GdkGCValues values;
- area.x = g_sheet_column_start_pixel (sheet->column_geometry, range.col0);
+ area.x = psppire_axis_pixel_start (sheet->haxis, range.col0);
area.y = g_sheet_row_start_pixel (sheet->row_geometry, range.row0);
- area.width = g_sheet_column_start_pixel (sheet->column_geometry, range.coli)- area.x+
- g_sheet_column_get_width (sheet->column_geometry, range.coli);
+ area.width = psppire_axis_pixel_start (sheet->haxis, range.coli)- area.x+
+ psppire_axis_unit_size (sheet->haxis, range.coli);
area.height = g_sheet_row_start_pixel (sheet->row_geometry, range.rowi)- area.y +
g_sheet_row_get_height (sheet->row_geometry, range.rowi);
static guint
new_column_width (GtkSheet *sheet, gint column, gint *x)
{
- gint left_pos = g_sheet_column_start_pixel (sheet->column_geometry, column)
+ gint left_pos = psppire_axis_pixel_start (sheet->haxis, column)
- sheet->hadjustment->value;
gint width = *x - left_pos;
*x = left_pos + width;
}
+#if AXIS_TRANSITION
g_sheet_column_set_width (sheet->column_geometry, column, width);
+#endif
draw_column_title_buttons (sheet);
g_return_if_fail (sheet != NULL);
g_return_if_fail (GTK_IS_SHEET (sheet));
- if (column < 0 || column >= g_sheet_column_get_column_count (sheet->column_geometry))
+ if (column < 0 || column >= psppire_axis_unit_count (sheet->haxis))
return;
gtk_sheet_column_size_request (sheet, column, &min_width);
if (width < min_width) return;
+#if AXIS_TRANSITION
g_sheet_column_set_width (sheet->column_geometry, column, width);
+#endif
if (GTK_WIDGET_REALIZED (GTK_WIDGET (sheet)))
{
gtk_sheet_size_allocate_entry (sheet);
gtk_sheet_range_draw (sheet, NULL);
}
-
- g_signal_emit (sheet, sheet_signals[CHANGED], 0, -1, column);
}
gtk_sheet_size_allocate_entry (sheet);
gtk_sheet_range_draw (sheet, NULL);
}
-
- g_signal_emit (sheet, sheet_signals[CHANGED], 0, row, - 1);
}
gboolean
}
attr->justification =
- g_sheet_column_get_justification (sheet->column_geometry, col);
+ g_sheet_model_get_column_justification (sheet->model, col);
j = g_sheet_model_get_justification (sheet->model, row, col);
if (j)
GtkRequisition requisition;
GtkRequisition label_requisition;
- label_requisition.height = default_row_height (sheet);
+ label_requisition.height = DEFAULT_ROW_HEIGHT;
label_requisition.width = COLUMN_MIN_WIDTH;
- requisition.height = default_row_height (sheet);
+ requisition.height = DEFAULT_ROW_HEIGHT;
requisition.width = COLUMN_MIN_WIDTH;
{
GtkRequisition button_requisition;
- GtkSheetButton *button = g_sheet_column_get_button (sheet->column_geometry, col);
+ GtkSheetButton *button = g_sheet_model_get_column_button (sheet->model, col);
gtk_sheet_button_size_request (sheet,
button,
g_free (button);
}
-
static void
append_cell_text (GString *string, const GtkSheet *sheet, gint r, gint c)
{