- xxx_set_column_width (sheet, column, width);
-
- if (GTK_WIDGET_REALIZED (GTK_WIDGET (sheet)) && !GTK_SHEET_IS_FROZEN (sheet))
- {
- size_allocate_column_title_buttons (sheet);
- adjust_scrollbars (sheet);
- gtk_sheet_size_allocate_entry (sheet);
- gtk_sheet_range_draw (sheet, NULL);
- }
-
- g_signal_emit (G_OBJECT (sheet), sheet_signals[CHANGED], 0, -1, column);
- g_signal_emit (G_OBJECT (sheet), sheet_signals[NEW_COL_WIDTH], 0,
- column, width);
-}
-
-
-
-void
-gtk_sheet_set_row_height (GtkSheet * sheet,
- gint row,
- guint height)
-{
- guint min_height;
-
- g_return_if_fail (sheet != NULL);
- g_return_if_fail (GTK_IS_SHEET (sheet));
-
- if (row < 0 || row >= yyy_row_count (sheet))
- return;
-
- gtk_sheet_row_size_request (sheet, row, &min_height);
- if (height < min_height) return;
-
- yyy_set_row_height (sheet, row, height);
-
- if (GTK_WIDGET_REALIZED (GTK_WIDGET (sheet)) && !GTK_SHEET_IS_FROZEN (sheet))
- {
- size_allocate_row_title_buttons (sheet);
- adjust_scrollbars (sheet);
- gtk_sheet_size_allocate_entry (sheet);
- gtk_sheet_range_draw (sheet, NULL);
- }
-
- g_signal_emit (G_OBJECT (sheet), sheet_signals[CHANGED], 0, row, - 1);
- g_signal_emit (G_OBJECT (sheet), sheet_signals[NEW_ROW_HEIGHT], 0,
- row, height);
-
-}
-
-
-gboolean
-gtk_sheet_get_attributes (const GtkSheet *sheet, gint row, gint col,
- GtkSheetCellAttr *attributes)
-{
- const GdkColor *fg, *bg;
- const GtkJustification *j ;
- const PangoFontDescription *font_desc ;
- const GtkSheetCellBorder *border ;
-
- g_return_val_if_fail (sheet != NULL, FALSE);
- g_return_val_if_fail (GTK_IS_SHEET (sheet), FALSE);
-
- if (row < 0 || col < 0) return FALSE;
-
- init_attributes (sheet, col, attributes);
-
- if ( !sheet->model)
- return FALSE;
-
- attributes->is_editable = g_sheet_model_is_editable (sheet->model, row, col);
- attributes->is_visible = g_sheet_model_is_visible (sheet->model, row, col);
-
- fg = g_sheet_model_get_foreground (sheet->model, row, col);
- if ( fg )
- attributes->foreground = *fg;
-
- bg = g_sheet_model_get_background (sheet->model, row, col);
- if ( bg )
- attributes->background = *bg;
-
- j = g_sheet_model_get_justification (sheet->model, row, col);
- if (j) attributes->justification = *j;
-
- font_desc = g_sheet_model_get_font_desc (sheet->model, row, col);
- if ( font_desc ) attributes->font_desc = font_desc;
-
- border = g_sheet_model_get_cell_border (sheet->model, row, col);
-
- if ( border ) attributes->border = *border;
-
- return TRUE;
-}
-
-static void
-init_attributes (const GtkSheet *sheet, gint col, GtkSheetCellAttr *attributes)
-{
- /* DEFAULT VALUES */
- attributes->foreground = GTK_WIDGET (sheet)->style->black;
- attributes->background = sheet->bg_color;
- if (!GTK_WIDGET_REALIZED (GTK_WIDGET (sheet)))
- {
- GdkColormap *colormap;
- colormap = gdk_colormap_get_system ();
- gdk_color_black (colormap, &attributes->foreground);
- attributes->background = sheet->bg_color;
- }
- attributes->justification = xxx_column_justification (sheet, col);
- attributes->border.width = 0;
- attributes->border.line_style = GDK_LINE_SOLID;
- attributes->border.cap_style = GDK_CAP_NOT_LAST;
- attributes->border.join_style = GDK_JOIN_MITER;
- attributes->border.mask = 0;
- attributes->border.color = GTK_WIDGET (sheet)->style->black;
- attributes->is_editable = TRUE;
- attributes->is_visible = TRUE;
- attributes->font_desc = GTK_WIDGET (sheet)->style->font_desc;
-}
-
-
-/********************************************************************
- * Container Functions:
- * gtk_sheet_add
- * gtk_sheet_put
- * gtk_sheet_attach
- * gtk_sheet_remove
- * gtk_sheet_move_child
- * gtk_sheet_position_child
- * gtk_sheet_position_children
- * gtk_sheet_realize_child
- * gtk_sheet_get_child_at
- ********************************************************************/
-
-GtkSheetChild *
-gtk_sheet_put (GtkSheet *sheet, GtkWidget *child, gint x, gint y)
-{
- GtkRequisition child_requisition;
- GtkSheetChild *child_info;
-
- g_return_val_if_fail (sheet != NULL, NULL);
- g_return_val_if_fail (GTK_IS_SHEET (sheet), NULL);
- g_return_val_if_fail (child != NULL, NULL);
- g_return_val_if_fail (child->parent == NULL, NULL);
-
- child_info = g_new (GtkSheetChild, 1);
- child_info->widget = child;
- child_info->x = x;
- child_info->y = y;
- child_info->attached_to_cell = FALSE;
- child_info->floating = TRUE;
- child_info->xpadding = child_info->ypadding = 0;
- child_info->xexpand = child_info->yexpand = FALSE;
- child_info->xshrink = child_info->yshrink = FALSE;
- child_info->xfill = child_info->yfill = FALSE;
-
- sheet->children = g_list_append (sheet->children, child_info);
-
- gtk_widget_set_parent (child, GTK_WIDGET (sheet));
-
- gtk_widget_size_request (child, &child_requisition);
-
- if (GTK_WIDGET_VISIBLE (GTK_WIDGET (sheet)))
- {
- if (GTK_WIDGET_REALIZED (GTK_WIDGET (sheet)) &&
- (!GTK_WIDGET_REALIZED (child) || GTK_WIDGET_NO_WINDOW (child)))
- gtk_sheet_realize_child (sheet, child_info);
-
- if (GTK_WIDGET_MAPPED (GTK_WIDGET (sheet)) &&
- !GTK_WIDGET_MAPPED (child))
- gtk_widget_map (child);
- }
-
- gtk_sheet_position_child (sheet, child_info);
-
- /* This will avoid drawing on the titles */
-
- if (GTK_WIDGET_REALIZED (GTK_WIDGET (sheet)))
- {
- if (sheet->row_titles_visible)
- gdk_window_show (sheet->row_title_window);
- if (sheet->column_titles_visible)
- gdk_window_show (sheet->column_title_window);
- }
-
- return (child_info);
-}
-
-void
-gtk_sheet_attach_floating (GtkSheet *sheet,
- GtkWidget *widget,
- gint row, gint col)
-{
- GdkRectangle area;
- GtkSheetChild *child;
-
- if (row < 0 || col < 0)
- {
- gtk_sheet_button_attach (sheet, widget, row, col);
- return;
- }
-
- gtk_sheet_get_cell_area (sheet, row, col, &area);
- child = gtk_sheet_put (sheet, widget, area.x, area.y);
- child->attached_to_cell = TRUE;
- child->row = row;
- child->col = col;
-}