X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=lib%2Fgtksheet%2Fgtksheet.h;h=884e41f96b39ca0b3bc5e834ab6a26fc67e45b53;hb=256b80a60ad7ade8c7ac947d3602f89120f37522;hp=6aaa49a99c6ca388cf7d3776fa07a5c9ee100280;hpb=b5a632fd4b0ea7139fc5423bb3ebebaf3e6d539e;p=pspp-builds.git diff --git a/lib/gtksheet/gtksheet.h b/lib/gtksheet/gtksheet.h index 6aaa49a9..884e41f9 100644 --- a/lib/gtksheet/gtksheet.h +++ b/lib/gtksheet/gtksheet.h @@ -30,27 +30,11 @@ #include "gtkextra-sheet.h" #include "gsheetmodel.h" -#include "gsheet-column-iface.h" -#include "gsheet-row-iface.h" - +#include "psppire-axis.h" G_BEGIN_DECLS - -typedef enum -{ - GTK_SHEET_FOREGROUND, - GTK_SHEET_BACKGROUND, - GTK_SHEET_FONT, - GTK_SHEET_JUSTIFICATION, - GTK_SHEET_BORDER, - GTK_SHEET_BORDER_COLOR, - GTK_SHEET_IS_EDITABLE, - GTK_SHEET_IS_VISIBLE -} GtkSheetAttrType; - /* sheet->state */ - enum { GTK_SHEET_NORMAL, @@ -61,6 +45,7 @@ enum #define GTK_TYPE_SHEET_RANGE (gtk_sheet_range_get_type ()) +#define GTK_TYPE_SHEET_CELL (gtk_sheet_cell_get_type ()) #define GTK_TYPE_SHEET (gtk_sheet_get_type ()) #define GTK_SHEET(obj) GTK_CHECK_CAST (obj, gtk_sheet_get_type (), GtkSheet) @@ -68,36 +53,21 @@ enum #define GTK_IS_SHEET(obj) GTK_CHECK_TYPE (obj, gtk_sheet_get_type ()) - -#define GTK_SHEET_AUTORESIZE(sheet) gtk_sheet_autoresize (sheet) -#define GTK_SHEET_AUTO_SCROLL(sheet) gtk_sheet_autoscroll (sheet) -#define GTK_SHEET_JUSTIFY_ENTRY(sheet) gtk_sheet_justify_entry (sheet) - - typedef struct _GtkSheetClass GtkSheetClass; typedef struct _GtkSheetCellAttr GtkSheetCellAttr; -typedef struct _GtkSheetCell GtkSheetCell; + typedef struct _GtkSheetHoverTitle GtkSheetHoverTitle; struct _GtkSheetCellAttr { GtkJustification justification; - const PangoFontDescription *font_desc; GdkColor foreground; GdkColor background; GtkSheetCellBorder border; gboolean is_editable; - gboolean is_visible; -}; - -struct _GtkSheetCell -{ - gint row; - gint col; }; - struct _GtkSheetHoverTitle { GtkWidget *window; @@ -105,51 +75,46 @@ struct _GtkSheetHoverTitle gint row, column; }; +enum + { + BG_COLOR, + GRID_COLOR, + n_COLORS + }; + struct _GtkSheet { GtkBin parent; gboolean dispose_has_run; - GSheetColumn *column_geometry; - GSheetRow *row_geometry; + PsppireAxis *haxis; + PsppireAxis *vaxis; guint16 flags; GSheetModel *model; GtkSelectionMode selection_mode; - gboolean autoresize; - gboolean autoscroll; - gboolean justify_entry; - /* Background colors */ - GdkColor bg_color; - GdkColor grid_color; + /* Component colors */ + GdkColor color[n_COLORS]; gboolean show_grid; - /* allocation rectangle after the container_border_width - and the width of the shadow border */ - GdkRectangle internal_allocation; - gint16 column_requisition; gint16 row_requisition; - gboolean rows_resizable; - gboolean columns_resizable; - /* active cell */ GtkSheetCell active_cell; /* The GtkEntry used for editing the cells */ GtkWidget *entry_widget; - /* The widget containing entry_widget, or - entry_widget itself if no container */ - GtkWidget *entry_container; - /* The type of entry_widget */ GtkType entry_type; + /* Handler of the "changed" callback for the entry widget */ + glong entry_handler_id; + /* expanding selection */ GtkSheetCell selection_cell; @@ -162,14 +127,9 @@ struct _GtkSheet /* selected range */ GtkSheetRange range; - /*the scrolling window and it's height and width to + /* the scrolling window and its height and width to * make things a little speedier */ GdkWindow *sheet_window; - guint sheet_window_width; - guint sheet_window_height; - - /* sheet backing pixmap */ - GdkPixmap *pixmap; /* border shadow style */ GtkShadowType shadow_type; @@ -244,9 +204,6 @@ struct _GtkSheetClass gint row, gint column, gint *new_row, gint *new_column); - gboolean (*deactivate) (GtkSheet *sheet, - gint row, gint column); - gboolean (*activate) (GtkSheet *sheet, gint row, gint column); @@ -259,83 +216,26 @@ GtkType gtk_sheet_range_get_type (void); /* create a new sheet */ -GtkWidget * gtk_sheet_new (GSheetRow *vgeo, GSheetColumn *hgeo, - GSheetModel *model); +GtkWidget * gtk_sheet_new (GSheetModel *model); /* create a new sheet with custom entry */ GtkWidget * -gtk_sheet_new_with_custom_entry (GSheetRow *vgeo, - GSheetColumn *hgeo, - GtkType entry_type); -void -gtk_sheet_construct_with_custom_entry (GtkSheet *sheet, - GSheetRow *vgeo, - GSheetColumn *hgeo, - GtkType entry_type); +gtk_sheet_new_with_custom_entry (GtkType entry_type); + /* Change entry */ void gtk_sheet_change_entry (GtkSheet *sheet, GtkType entry_type); -GtkWidget *gtk_sheet_get_entry (GtkSheet *sheet); - - -guint gtk_sheet_get_columns_count (GtkSheet *sheet); +GtkEntry *gtk_sheet_get_entry (GtkSheet *sheet); -guint gtk_sheet_get_rows_count (GtkSheet *sheet); void gtk_sheet_get_selected_range (GtkSheet *sheet, GtkSheetRange *range); -void gtk_sheet_set_selection_mode (GtkSheet *sheet, gint mode); - -void gtk_sheet_set_autoresize (GtkSheet *sheet, gboolean autoresize); - -gboolean gtk_sheet_autoresize (GtkSheet *sheet); - -void gtk_sheet_set_autoscroll (GtkSheet *sheet, gboolean autoscroll); - -gboolean gtk_sheet_autoscroll (GtkSheet *sheet); - -void gtk_sheet_set_justify_entry (GtkSheet *sheet, gboolean justify); - -gboolean gtk_sheet_justify_entry (GtkSheet *sheet); - -/* Background colors */ -void gtk_sheet_set_background (GtkSheet *sheet, - GdkColor *bg_color); - -void gtk_sheet_set_grid (GtkSheet *sheet, - GdkColor *grid_color); - void gtk_sheet_show_grid (GtkSheet *sheet, gboolean show); gboolean gtk_sheet_grid_visible (GtkSheet *sheet); -/* set/get column title */ -void gtk_sheet_set_column_title (GtkSheet * sheet, - gint column, - const gchar * title); - -const gchar *gtk_sheet_get_column_title (GtkSheet * sheet, - gint column); - -/* set/get row title */ -void gtk_sheet_set_row_title (GtkSheet * sheet, - gint row, - const gchar * title); - -const gchar *gtk_sheet_get_row_title (GtkSheet * sheet, - gint row); - -/* set/get button label */ -void gtk_sheet_row_button_add_label (GtkSheet *sheet, - gint row, const gchar *label); - -const gchar *gtk_sheet_row_button_get_label (GtkSheet *sheet, - gint row); - -void gtk_sheet_row_button_justify (GtkSheet *sheet, - gint row, GtkJustification justification); /* scroll the viewing area of the sheet to the given column * and row; row_align and col_align are between 0-1 representing the @@ -354,30 +254,6 @@ void gtk_sheet_hide_row_titles (GtkSheet *sheet); void gtk_sheet_show_column_titles (GtkSheet *sheet); void gtk_sheet_hide_column_titles (GtkSheet *sheet); -gboolean gtk_sheet_row_titles_visible (GtkSheet *sheet); - - -/* set row button sensitivity. If sensitivity is TRUE can be toggled, - * otherwise it acts as a title */ -void gtk_sheet_row_set_sensitivity (GtkSheet *sheet, - gint row, gboolean sensitive); - -/* set sensitivity for all row buttons */ -void gtk_sheet_rows_set_sensitivity (GtkSheet *sheet, gboolean sensitive); -void gtk_sheet_rows_set_resizable (GtkSheet *sheet, gboolean resizable); -gboolean gtk_sheet_rows_resizable (GtkSheet *sheet); - -/* set row visibility. The default value is TRUE. If FALSE, the - * row is hidden */ -void gtk_sheet_row_set_visibility (GtkSheet *sheet, - gint row, gboolean visible); - -void gtk_sheet_row_label_set_visibility (GtkSheet *sheet, - gint row, gboolean visible); - -void gtk_sheet_rows_labels_set_visibility (GtkSheet *sheet, gboolean visible); - - /* select the row. The range is then highlighted, and the bounds are stored * in sheet->range */ void gtk_sheet_select_row (GtkSheet * sheet, gint row); @@ -395,11 +271,9 @@ void gtk_sheet_get_visible_range (GtkSheet *sheet, GtkSheetRange *range); /* obvious */ void gtk_sheet_unselect_range (GtkSheet *sheet); -/* set active cell where the entry will be displayed - * returns FALSE if current cell can't be deactivated or - * requested cell can't be activated */ -gboolean gtk_sheet_set_active_cell (GtkSheet *sheet, - gint row, gint column); +/* set active cell where the entry will be displayed */ +void gtk_sheet_set_active_cell (GtkSheet *sheet, + gint row, gint column); /* Sets *ROW and *COLUMN to be the coordinates of the active cell. ROW and/or COLUMN may be null if the caller is not interested in their @@ -410,90 +284,6 @@ void gtk_sheet_get_active_cell (GtkSheet *sheet, /* get cell contents */ gchar *gtk_sheet_cell_get_text (const GtkSheet *sheet, gint row, gint col); -/* clear cell contents */ -void gtk_sheet_cell_clear (GtkSheet *sheet, gint row, gint col); - -/* clear range contents. If range==NULL the whole sheet will be cleared */ -void gtk_sheet_range_clear (GtkSheet *sheet, - const GtkSheetRange *range); - -/* get cell state: GTK_STATE_NORMAL, GTK_STATE_SELECTED */ -GtkStateType gtk_sheet_cell_get_state (GtkSheet *sheet, gint row, gint col); - -/* get area of a given cell */ -gboolean gtk_sheet_get_cell_area (GtkSheet *sheet, - gint row, - gint column, - GdkRectangle *area); - -/* set row height */ -void gtk_sheet_set_row_height (GtkSheet * sheet, - gint row, - guint height); - - -/* delete nrows rows starting in row */ -void gtk_sheet_delete_rows (GtkSheet *sheet, guint row, guint nrows); - -/* append nrows row to the end of the sheet */ -void gtk_sheet_add_row (GtkSheet *sheet, guint nrows); - -/* insert nrows rows before the given row and pull right */ -void gtk_sheet_insert_rows (GtkSheet *sheet, guint row, guint nrows); - -/* set abckground color of the given range */ -void gtk_sheet_range_set_background (GtkSheet *sheet, - const GtkSheetRange *range, - const GdkColor *color); - -/* set foreground color (text color) of the given range */ -void gtk_sheet_range_set_foreground (GtkSheet *sheet, - const GtkSheetRange *range, - const GdkColor *color); - -/* set text justification (GTK_JUSTIFY_LEFT, RIGHT, CENTER) of the given range. - * The default value is GTK_JUSTIFY_LEFT. If autoformat is on, the - * default justification for numbers is GTK_JUSTIFY_RIGHT */ -void gtk_sheet_range_set_justification (GtkSheet *sheet, - const GtkSheetRange *range, - GtkJustification justification); - -void gtk_sheet_column_set_justification (GtkSheet *sheet, - gint column, - GtkJustification justification); - -/* set if cell contents can be edited or not in the given range: - * accepted values are TRUE or FALSE. */ -void gtk_sheet_range_set_editable (GtkSheet *sheet, - const GtkSheetRange *range, - gint editable); - -/* set if cell contents are visible or not in the given range: - * accepted values are TRUE or FALSE.*/ -void gtk_sheet_range_set_visible (GtkSheet *sheet, - const GtkSheetRange *range, - gboolean visible); - -/* set cell border style in the given range. - * mask values are CELL_LEFT_BORDER, CELL_RIGHT_BORDER, CELL_TOP_BORDER, - * CELL_BOTTOM_BORDER - * width is the width of the border line in pixels - * line_style is the line_style for the border line */ -void gtk_sheet_range_set_border (GtkSheet *sheet, - const GtkSheetRange *range, - gint mask, - guint width, - gint line_style); - -/* set border color for the given range */ -void gtk_sheet_range_set_border_color (GtkSheet *sheet, - const GtkSheetRange *range, - const GdkColor *color); - -/* set font for the given range */ -void gtk_sheet_range_set_font (GtkSheet *sheet, - const GtkSheetRange *range, - PangoFontDescription *font); /* get cell attributes of the given cell */ /* TRUE means that the cell is currently allocated */ @@ -501,8 +291,7 @@ gboolean gtk_sheet_get_attributes (const GtkSheet *sheet, gint row, gint col, GtkSheetCellAttr *attributes); - -void gtk_sheet_set_model (GtkSheet *sheet, +void gtk_sheet_set_model (GtkSheet *sheet, GSheetModel *model); GSheetModel * gtk_sheet_get_model (const GtkSheet *sheet);