- /* create sheet entry */
- sheet->entry_type = 0;
- create_sheet_entry (sheet);
-
- /* create global selection button */
- create_global_button (sheet);
-
- if (title)
- sheet->name = g_strdup (title);
-
- g_signal_connect (sheet->column_geometry, "columns_changed",
- G_CALLBACK (column_titles_changed), sheet);
-
-}
-
-
-GtkWidget *
-gtk_sheet_new_with_custom_entry (GSheetRow *rows, GSheetColumn *columns,
- const gchar *title, GtkType entry_type)
-{
- GtkWidget *widget = g_object_new (GTK_TYPE_SHEET, NULL);
-
- gtk_sheet_construct_with_custom_entry (GTK_SHEET (widget),
- rows, columns, title, entry_type);
-
- return widget;
-}
-
-void
-gtk_sheet_construct_with_custom_entry (GtkSheet *sheet,
- GSheetRow *vgeo,
- GSheetColumn *hgeo,
- const gchar *title,
- GtkType entry_type)
-{
- gtk_sheet_construct (sheet, vgeo, hgeo, title);
-
- sheet->entry_type = entry_type;
- create_sheet_entry (sheet);
-}
-
-
-
-void
-gtk_sheet_change_entry (GtkSheet *sheet, GtkType entry_type)
-{
- gint state;
-
- g_return_if_fail (sheet != NULL);
- g_return_if_fail (GTK_IS_SHEET (sheet));
-
- state = sheet->state;
-
- if (sheet->state == GTK_SHEET_NORMAL)
- gtk_sheet_hide_active_cell (sheet);
-
- sheet->entry_type = entry_type;
-
- create_sheet_entry (sheet);
-
- if (state == GTK_SHEET_NORMAL)
- {
- gtk_sheet_show_active_cell (sheet);
- g_signal_connect (G_OBJECT (gtk_sheet_get_entry (sheet)),
- "changed",
- G_CALLBACK (gtk_sheet_entry_changed),
- sheet);
- }
-}
-
-void
-gtk_sheet_show_grid (GtkSheet *sheet, gboolean show)
-{
- g_return_if_fail (sheet != NULL);
- g_return_if_fail (GTK_IS_SHEET (sheet));
-
- if (show == sheet->show_grid) return;
-
- sheet->show_grid = show;
-
- if (!GTK_SHEET_IS_FROZEN (sheet))
- gtk_sheet_range_draw (sheet, NULL);
-}
-
-gboolean
-gtk_sheet_grid_visible (GtkSheet *sheet)
-{
- g_return_val_if_fail (sheet != NULL, 0);
- g_return_val_if_fail (GTK_IS_SHEET (sheet), 0);
-
- return sheet->show_grid;
-}
-
-void
-gtk_sheet_set_background (GtkSheet *sheet, GdkColor *color)
-{
- g_return_if_fail (sheet != NULL);
- g_return_if_fail (GTK_IS_SHEET (sheet));
-
- if (!color)
- {
- gdk_color_parse ("white", &sheet->bg_color);
- gdk_color_alloc (gdk_colormap_get_system (), &sheet->bg_color);
- }
- else
- sheet->bg_color = *color;
-
- if (!GTK_SHEET_IS_FROZEN (sheet))
- gtk_sheet_range_draw (sheet, NULL);
-}
-
-void
-gtk_sheet_set_grid (GtkSheet *sheet, GdkColor *color)
-{
- g_return_if_fail (sheet != NULL);
- g_return_if_fail (GTK_IS_SHEET (sheet));
-
- if (!color)
- {
- gdk_color_parse ("black", &sheet->grid_color);
- gdk_color_alloc (gdk_colormap_get_system (), &sheet->grid_color);
- }
- else
- sheet->grid_color = *color;
-
- if (!GTK_SHEET_IS_FROZEN (sheet))
- gtk_sheet_range_draw (sheet, NULL);
-}
-
-guint
-gtk_sheet_get_columns_count (GtkSheet *sheet)
-{
- g_return_val_if_fail (sheet != NULL, 0);
- g_return_val_if_fail (GTK_IS_SHEET (sheet), 0);
-
- return xxx_column_count (sheet);
-}
-
-guint
-gtk_sheet_get_rows_count (GtkSheet *sheet)
-{
- g_return_val_if_fail (sheet != NULL, 0);
- g_return_val_if_fail (GTK_IS_SHEET (sheet), 0);
-
- return yyy_row_count (sheet);
-}
-
-gint
-gtk_sheet_get_state (GtkSheet *sheet)
-{
- g_return_val_if_fail (sheet != NULL, 0);
- g_return_val_if_fail (GTK_IS_SHEET (sheet), 0);
-
- return (sheet->state);
-}
-
-void
-gtk_sheet_set_selection_mode (GtkSheet *sheet, gint mode)
-{
- g_return_if_fail (sheet != NULL);
- g_return_if_fail (GTK_IS_SHEET (sheet));
-
- if (GTK_WIDGET_REALIZED (sheet))
- gtk_sheet_real_unselect_range (sheet, NULL);
-
- sheet->selection_mode = mode;
-}
-
-void
-gtk_sheet_set_autoresize (GtkSheet *sheet, gboolean autoresize)
-{
- g_return_if_fail (sheet != NULL);
- g_return_if_fail (GTK_IS_SHEET (sheet));
-
- sheet->autoresize = autoresize;
-}
-
-gboolean
-gtk_sheet_autoresize (GtkSheet *sheet)
-{
- g_return_val_if_fail (sheet != NULL, FALSE);
- g_return_val_if_fail (GTK_IS_SHEET (sheet), FALSE);
-
- return sheet->autoresize;
-}
-
-static void
-gtk_sheet_set_column_width (GtkSheet * sheet,
- gint column,
- 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 >= xxx_column_count (sheet) || column < 0) return;
-
- for (row = 0; row < yyy_row_count (sheet); 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 * CELLOFFSET + attributes.border.width;
- text_width = MAX (text_width, width);
- }
- }
- dispose_string (sheet, text);
- }
-
- if (text_width > xxx_column_width (sheet, column) )
- {
- gtk_sheet_set_column_width (sheet, column, text_width);
- GTK_SHEET_SET_FLAGS (sheet, GTK_SHEET_REDRAW_PENDING);
- }
-}
-
-
-void
-gtk_sheet_set_autoscroll (GtkSheet *sheet, gboolean autoscroll)
-{
- g_return_if_fail (sheet != NULL);
- g_return_if_fail (GTK_IS_SHEET (sheet));
-
- sheet->autoscroll = autoscroll;
-}
-
-gboolean
-gtk_sheet_autoscroll (GtkSheet *sheet)
-{
- g_return_val_if_fail (sheet != NULL, FALSE);
- g_return_val_if_fail (GTK_IS_SHEET (sheet), FALSE);
-
- return sheet->autoscroll;
-}
-
-void
-gtk_sheet_set_clip_text (GtkSheet *sheet, gboolean clip_text)
-{
- g_return_if_fail (sheet != NULL);
- g_return_if_fail (GTK_IS_SHEET (sheet));
-
- sheet->clip_text = clip_text;
-}
-
-gboolean
-gtk_sheet_clip_text (GtkSheet *sheet)
-{
- g_return_val_if_fail (sheet != NULL, FALSE);
- g_return_val_if_fail (GTK_IS_SHEET (sheet), FALSE);
-
- return sheet->clip_text;
-}
-
-void
-gtk_sheet_set_justify_entry (GtkSheet *sheet, gboolean justify)
-{
- g_return_if_fail (sheet != NULL);
- g_return_if_fail (GTK_IS_SHEET (sheet));
-
- sheet->justify_entry = justify;
-}
-
-gboolean
-gtk_sheet_justify_entry (GtkSheet *sheet)
-{
- g_return_val_if_fail (sheet != NULL, FALSE);
- g_return_val_if_fail (GTK_IS_SHEET (sheet), FALSE);
-
- return sheet->justify_entry;
-}
-
-void
-gtk_sheet_set_locked (GtkSheet *sheet, gboolean locked)
-{
- g_return_if_fail (sheet != NULL);
- g_return_if_fail (GTK_IS_SHEET (sheet));
-
- if ( locked )
- {
- GTK_SHEET_SET_FLAGS (sheet,GTK_SHEET_IS_LOCKED);
- gtk_widget_hide (sheet->sheet_entry);
- gtk_widget_unmap (sheet->sheet_entry);
- }
- else
- {
- GTK_SHEET_UNSET_FLAGS (sheet,GTK_SHEET_IS_LOCKED);
- if (GTK_WIDGET_MAPPED (GTK_WIDGET (sheet)))
- {
- gtk_widget_show (sheet->sheet_entry);
- gtk_widget_map (sheet->sheet_entry);
- }
- }
-
- gtk_editable_set_editable (GTK_EDITABLE (sheet->sheet_entry), locked);
-
-}
-
-gboolean
-gtk_sheet_locked (const GtkSheet *sheet)
-{
- g_return_val_if_fail (sheet != NULL, FALSE);
- g_return_val_if_fail (GTK_IS_SHEET (sheet), FALSE);
-
- return GTK_SHEET_IS_LOCKED (sheet);
-}
-
-/* This routine has problems with gtk+- 1.2 related with the
- label / button drawing - I think it's a bug in gtk+- 1.2 */
-void
-gtk_sheet_set_title (GtkSheet *sheet, const gchar *title)
-{
- GtkWidget *label;
-
- g_return_if_fail (sheet != NULL);
- g_return_if_fail (title != NULL);
- g_return_if_fail (GTK_IS_SHEET (sheet));
-
- if (sheet->name)
- g_free (sheet->name);
-
- sheet->name = g_strdup (title);
-
- if (!GTK_WIDGET_REALIZED (GTK_WIDGET (sheet)) || !title) return;
-
- if (GTK_BIN (sheet->button)->child)
- label = GTK_BIN (sheet->button)->child;
-
- size_allocate_global_button (sheet);
-}
-
-void
-gtk_sheet_freeze (GtkSheet *sheet)
-{
- g_return_if_fail (sheet != NULL);
- g_return_if_fail (GTK_IS_SHEET (sheet));
-
- sheet->freeze_count++;
- GTK_SHEET_SET_FLAGS (sheet, GTK_SHEET_IS_FROZEN);
-}
-
-void
-gtk_sheet_thaw (GtkSheet *sheet)
-{
- g_return_if_fail (sheet != NULL);
- g_return_if_fail (GTK_IS_SHEET (sheet));
-
- if (sheet->freeze_count == 0) return;
-
- sheet->freeze_count--;
- if (sheet->freeze_count > 0) return;
-
- adjust_scrollbars (sheet);
-
- GTK_SHEET_UNSET_FLAGS (sheet, GTK_SHEET_IS_FROZEN);
-
- sheet->old_vadjustment = -1.;
- sheet->old_hadjustment = -1.;
-
- if (sheet->hadjustment)
- g_signal_emit_by_name (G_OBJECT (sheet->hadjustment),
- "value_changed");
- if (sheet->vadjustment)
- g_signal_emit_by_name (G_OBJECT (sheet->vadjustment),
- "value_changed");
-
- if (sheet->state == GTK_STATE_NORMAL)
- if (sheet->sheet_entry && GTK_WIDGET_MAPPED (sheet->sheet_entry))
- {
- gtk_sheet_activate_cell (sheet, sheet->active_cell.row,
- sheet->active_cell.col);
- }
-
-}
-
-void
-gtk_sheet_set_row_titles_width (GtkSheet *sheet, guint width)
-{
- if (width < COLUMN_MIN_WIDTH) return;
-
- sheet->row_title_area.width = width;
-
- adjust_scrollbars (sheet);
-
- sheet->old_hadjustment = -1.;
- if (sheet->hadjustment)
- g_signal_emit_by_name (G_OBJECT (sheet->hadjustment),
- "value_changed");
- size_allocate_global_button (sheet);