#include <glib.h>
#include "gsheetmodel.h"
-#include "gtkextra-marshal.h"
+#include <gtksheet/psppire-marshal.h>
enum {
RANGE_CHANGED,
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (GSheetModelIface, range_changed),
NULL, NULL,
- gtkextra_VOID__INT_INT_INT_INT,
+ psppire_marshal_VOID__INT_INT_INT_INT,
G_TYPE_NONE, 4,
G_TYPE_INT,
G_TYPE_INT,
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (GSheetModelIface, rows_inserted),
NULL, NULL,
- gtkextra_VOID__INT_INT,
+ psppire_marshal_VOID__INT_INT,
G_TYPE_NONE, 2,
G_TYPE_INT,
G_TYPE_INT);
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (GSheetModelIface, rows_deleted),
NULL, NULL,
- gtkextra_VOID__INT_INT,
+ psppire_marshal_VOID__INT_INT,
G_TYPE_NONE, 2,
G_TYPE_INT,
G_TYPE_INT);
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (GSheetModelIface, columns_inserted),
NULL, NULL,
- gtkextra_VOID__INT_INT,
+ psppire_marshal_VOID__INT_INT,
G_TYPE_NONE, 2,
G_TYPE_INT,
G_TYPE_INT);
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (GSheetModelIface, columns_deleted),
NULL, NULL,
- gtkextra_VOID__INT_INT,
+ psppire_marshal_VOID__INT_INT,
G_TYPE_NONE, 2,
G_TYPE_INT,
G_TYPE_INT);
{
g_return_val_if_fail (G_IS_SHEET_MODEL (model), -1);
-
return G_SHEET_MODEL_GET_IFACE (model)->get_row_count (model);
}
gboolean
g_sheet_model_get_column_sensitivity (const GSheetModel *model, gint col)
{
+ g_return_val_if_fail (G_IS_SHEET_MODEL (model), FALSE);
+
if ( NULL == G_SHEET_MODEL_GET_IFACE (model)->get_column_sensitivity)
return TRUE;
g_sheet_model_get_column_justification (const GSheetModel *model,
gint col)
{
+ g_return_val_if_fail (G_IS_SHEET_MODEL (model), GTK_JUSTIFY_LEFT);
+
if ( G_SHEET_MODEL_GET_IFACE (model)->get_column_justification)
return G_SHEET_MODEL_GET_IFACE (model)->get_column_justification (model, col);
gboolean
g_sheet_model_get_row_sensitivity (const GSheetModel *model, gint row)
{
+ g_return_val_if_fail (G_IS_SHEET_MODEL (model), FALSE);
+
if ( NULL == G_SHEET_MODEL_GET_IFACE (model)->get_row_sensitivity)
return TRUE;
#include <gtk/gtkcontainer.h>
#include <pango/pango.h>
#include "gtksheet.h"
-#include "gtkextra-marshal.h"
+#include <gtksheet/psppire-marshal.h>
#include "gsheetmodel.h"
#include <libpspp/misc.h>
#include <math.h>
G_SIGNAL_RUN_LAST,
0,
NULL, NULL,
- gtkextra_VOID__INT_POINTER,
+ psppire_marshal_VOID__INT_POINTER,
G_TYPE_NONE,
2,
G_TYPE_INT,
G_SIGNAL_RUN_LAST,
0,
NULL, NULL,
- gtkextra_VOID__INT_POINTER,
+ psppire_marshal_VOID__INT_POINTER,
G_TYPE_NONE,
2,
G_TYPE_INT,
G_SIGNAL_RUN_LAST,
offsetof (GtkSheetClass, resize_range),
NULL, NULL,
- gtkextra_VOID__BOXED_BOXED,
+ psppire_marshal_VOID__BOXED_BOXED,
G_TYPE_NONE,
2,
GTK_TYPE_SHEET_RANGE, GTK_TYPE_SHEET_RANGE
G_SIGNAL_RUN_LAST,
offsetof (GtkSheetClass, move_range),
NULL, NULL,
- gtkextra_VOID__BOXED_BOXED,
+ psppire_marshal_VOID__BOXED_BOXED,
G_TYPE_NONE,
2,
GTK_TYPE_SHEET_RANGE, GTK_TYPE_SHEET_RANGE
G_SIGNAL_RUN_LAST,
offsetof (GtkSheetClass, traverse),
NULL, NULL,
- gtkextra_BOOLEAN__BOXED_POINTER,
+ psppire_marshal_BOOLEAN__BOXED_POINTER,
G_TYPE_BOOLEAN, 2,
GTK_TYPE_SHEET_CELL,
G_TYPE_POINTER);
G_SIGNAL_RUN_LAST,
offsetof (GtkSheetClass, activate),
NULL, NULL,
- gtkextra_VOID__INT_INT_INT_INT,
+ psppire_marshal_VOID__INT_INT_INT_INT,
G_TYPE_NONE, 4,
G_TYPE_INT, G_TYPE_INT,
G_TYPE_INT, G_TYPE_INT);
G_SIGNAL_RUN_LAST,
offsetof (GtkSheetClass, set_scroll_adjustments),
NULL, NULL,
- gtkextra_VOID__OBJECT_OBJECT,
+ psppire_marshal_VOID__OBJECT_OBJECT,
G_TYPE_NONE, 2, GTK_TYPE_ADJUSTMENT, GTK_TYPE_ADJUSTMENT);
sheet->sheet_window = NULL;
sheet->entry_widget = NULL;
- sheet->entry_container = NULL;
sheet->entry_handler_id = 0;
sheet->button = NULL;
/* create sheet entry */
- sheet->entry_type = 0;
+ sheet->entry_type = GTK_TYPE_ENTRY;
create_sheet_entry (sheet);
/* create global selection button */
* Returns: the new sheet widget
*/
GtkWidget *
- gtk_sheet_new (void *vgeo, void *hgeo, GSheetModel *model)
+ gtk_sheet_new (GSheetModel *model)
{
GtkWidget *widget = g_object_new (GTK_TYPE_SHEET,
"model", model,
if (sheet->vaxis) g_object_unref (sheet->vaxis);
if (sheet->haxis) g_object_unref (sheet->haxis);
- g_object_unref (sheet->entry_container);
- sheet->entry_container = NULL;
-
g_object_unref (sheet->button);
sheet->button = NULL;
area.width, area.height);
}
- // gtk_sheet_cell_draw_label (sheet, row, col);
-
label = gtk_sheet_cell_get_text (sheet, row, col);
if (NULL == label)
sheet->active_cell.row = -1;
sheet->active_cell.col = -1;
- text = gtk_entry_get_text (GTK_ENTRY (gtk_sheet_get_entry (sheet)));
-
-
+ text = gtk_entry_get_text (gtk_sheet_get_entry (sheet));
if (text && strlen (text) > 0)
{
GTK_WIDGET_SET_FLAGS (GTK_WIDGET (sheet->entry_widget), GTK_VISIBLE);
- sheet_entry = GTK_ENTRY (gtk_sheet_get_entry (sheet));
+ sheet_entry = gtk_sheet_get_entry (sheet);
gtk_sheet_get_attributes (sheet, row, col, &attributes);
if ( ! text )
text = g_strdup ("");
- gtk_entry_set_visibility (GTK_ENTRY (sheet_entry), attributes.is_visible);
+ gtk_entry_set_visibility (sheet_entry, attributes.is_visible);
if ( GTK_IS_ENTRY (sheet_entry))
{
const gchar *old_text = gtk_entry_get_text (GTK_ENTRY (sheet_entry));
if (strcmp (old_text, text) != 0)
- gtk_entry_set_text (GTK_ENTRY (sheet_entry), text);
+ gtk_entry_set_text (sheet_entry, text);
switch (attributes.justification)
{
gtk_sheet_size_allocate_entry (sheet);
+ gtk_widget_set_sensitive (GTK_WIDGET (sheet_entry),
+ g_sheet_model_is_editable (sheet->model,
+ row, col));
gtk_widget_map (sheet->entry_widget);
gtk_widget_grab_focus (GTK_WIDGET (sheet_entry));
GtkSheetCellAttr attributes = { 0 };
GtkEntry *sheet_entry;
-
if (!GTK_WIDGET_REALIZED (GTK_WIDGET (sheet))) return;
if (!GTK_WIDGET_MAPPED (GTK_WIDGET (sheet))) return;
- sheet_entry = GTK_ENTRY (gtk_sheet_get_entry (sheet));
+ sheet_entry = gtk_sheet_get_entry (sheet);
if ( ! gtk_sheet_get_attributes (sheet, sheet->active_cell.row,
sheet->active_cell.col,
&attributes) )
return ;
- gtk_widget_ensure_style (GTK_WIDGET (sheet_entry));
-
if ( GTK_WIDGET_REALIZED (sheet->entry_widget) )
{
GtkStyle *style = GTK_WIDGET (sheet_entry)->style;
style->bg[GTK_STATE_ACTIVE] = attributes.background;
style->fg[GTK_STATE_ACTIVE] = attributes.foreground;
style->text[GTK_STATE_ACTIVE] = attributes.foreground;
-
- pango_font_description_free (style->font_desc);
- g_assert (attributes.font_desc);
- style->font_desc = pango_font_description_copy (attributes.font_desc);
}
rectangle_from_cell (sheet, sheet->active_cell.row,
gtk_widget_unparent (sheet->entry_widget);
}
- if (sheet->entry_type)
- {
- sheet->entry_container = g_object_new (sheet->entry_type, NULL);
- g_object_ref_sink (sheet->entry_container);
- sheet->entry_widget = gtk_sheet_get_entry (sheet);
-
- if ( NULL == sheet->entry_widget)
- {
- g_warning ("Entry type is %s. It must be GtkEntry subclass, or a widget containing one. "
- "Using default", g_type_name (sheet->entry_type));
- g_object_unref (sheet->entry_container);
- sheet->entry_widget = sheet->entry_container = gtk_entry_new ();
- }
- else
- {
- sheet->entry_widget = sheet->entry_container ;
- }
- }
- else
- {
- sheet->entry_widget = sheet->entry_container = gtk_entry_new ();
- g_object_ref_sink (sheet->entry_container);
- }
+ sheet->entry_widget = g_object_new (sheet->entry_type, NULL);
+ g_object_ref_sink (sheet->entry_widget);
gtk_widget_size_request (sheet->entry_widget, NULL);
}
}
- GtkWidget *
+
+ GtkEntry *
gtk_sheet_get_entry (GtkSheet *sheet)
{
- GtkWidget *parent;
- GtkWidget *entry = NULL;
+ GtkWidget *w = sheet->entry_widget;
g_return_val_if_fail (sheet != NULL, NULL);
g_return_val_if_fail (GTK_IS_SHEET (sheet), NULL);
g_return_val_if_fail (sheet->entry_widget != NULL, NULL);
- if (GTK_IS_ENTRY (sheet->entry_container))
- return (sheet->entry_container);
-
- parent = sheet->entry_container;
-
- if (GTK_IS_CONTAINER (parent))
+ while (! GTK_IS_ENTRY (w))
{
- gtk_container_forall (GTK_CONTAINER (parent), find_entry, &entry);
-
- if (GTK_IS_ENTRY (entry))
- return entry;
- }
-
- if (!GTK_IS_ENTRY (entry)) return NULL;
+ GtkWidget *entry = NULL;
- return (entry);
+ if (GTK_IS_CONTAINER (w))
+ {
+ gtk_container_forall (GTK_CONTAINER (w), find_entry, &entry);
- }
+ if (NULL == entry)
+ break;
- GtkWidget *
- gtk_sheet_get_entry_widget (GtkSheet *sheet)
- {
- g_return_val_if_fail (sheet != NULL, NULL);
- g_return_val_if_fail (GTK_IS_SHEET (sheet), NULL);
- g_return_val_if_fail (sheet->entry_widget != NULL, NULL);
+ w = entry;
+ }
+ }
- return (sheet->entry_widget);
+ return GTK_ENTRY (w);
}
if (row < 0 || col < 0) return FALSE;
-
attr->foreground = GTK_WIDGET (sheet)->style->black;
attr->background = sheet->color[BG_COLOR];
if (sheet->button && sheet->button->parent)
(* callback) (sheet->button, callback_data);
- if (sheet->entry_container && GTK_IS_CONTAINER (sheet->entry_container))
- (* callback) (sheet->entry_container, callback_data);
+ if (sheet->entry_widget && GTK_IS_CONTAINER (sheet->entry_widget))
+ (* callback) (sheet->entry_widget, callback_data);
}