| GTK-EXTRA - Reference Manual

| Home

## GtkSheet Structures

Why are these useful?
Because the gtk-sheet functions do not cover everything and sometimes you need to modify
structure elements by yourself.

    struct _GtkSheetChild
    {
      GtkWidget *widget;
      GdkWindow *window;
      gint x,y ;
      gboolean attached_to_cell;
      gint row, col;
      gfloat x_align, y_align;
    };
    struct _GtkSheetButton
    {
      GtkStateType state;
      gchar *label;
      gboolean label_visible;
      GtkSheetChild *child;
      GtkJustification justification;
    };
    struct _GtkSheetCellBorder
    {
      gint8 mask;
      guint width;
      GdkLineStyle line_style;
      GdkCapStyle cap_style;
      GdkJoinStyle join_style;
      GdkColor color;
    };
    struct _GtkSheetCellAttr
    {
      GtkJustification justification;
      GdkFont *font;
      GdkColor foreground;
      GdkColor background;
      GtkSheetCellBorder border;
      gboolean is_editable;
      gboolean is_visible;
    };
    struct _GtkSheetCell
    {
      GdkRectangle area;
      gint row;
      gint col;
      GtkSheetCellAttr *attributes;
      gchar *text;
             gpointer link;
             };
      struct _GtkSheetRange
             {
             gint row0,col0; /* upper-left cell */
             gint rowi,coli; /* lower-right cell */
             };
    struct _GtkSheetRow
    {
     gchar *name;
     gint height;
     gint top_ypixel;
     GtkSheetButton button;
             gboolean is_sensitive;
             gboolean is_visible;
             };
     struct _GtkSheetColumn
             {
             gchar *name;
             gint width;
             gint left_xpixel;
     GtkSheetButton button;
     gint left_text_column; /* min left column displaying text on this column          */
             gint right_text_column; /* max right column displaying text on this column          */
     GtkJustification justification;
             gboolean is_sensitive;
             gboolean is_visible;
             };
struct _GtkSheetRange |
    {
           gint row0,col0; /* upper-left cell */
           gint rowi,coli; /* lower-right cell */
           };
struct _GtkSheetRow |
    {
       gchar *name;
       gint height;
       gint top_ypixel;
       GtkSheetButton button;
       gboolean is_sensitive;
       gboolean is_visible;
    };
struct _GtkSheetColumn |
    {
       gchar *name;
       gint width;
       gint left_xpixel;
       GtkSheetButton button;
       gint left_text_column; /* min left column displaying text on this column          */
       gint right_text_column; /* max right column displaying text on this column          */
       GtkJustification justification;
       gboolean is_sensitive;
       gboolean is_visible;
    };
    struct _GtkSheet
    GtkContainer container;
     guint16 flags;
     GtkSelectionMode selection_mode;
     guint freeze_count;
     /* Background colors */
             GdkColor bg_color;
             GdkColor grid_color;
             gboolean show_grid;
     /* sheet children */
             GList *children;
     /* allocation rectangle after the container_border_width
             and the width of the shadow border */
             GdkRectangle internal_allocation;
     gchar *name;
     GtkSheetRow *row;
             GtkSheetColumn *column;
     /* max number of diplayed cells */
             gint maxrow;
             gint maxcol;
     /* Displayed range */
     GtkSheetRange view;
     /* sheet data: dynamically allocated array of cell pointers */
             GtkSheetCell ***data;
     /* max number of allocated cells */
             gint maxallocrow;
             gint maxalloccol;
     /* active cell */
             GtkSheetCell active_cell;
             GtkWidget *sheet_entry;
             GdkWindow *sheet_entry_window; /* for NO_WINDOW entry widgets(ala GtkLayout)          */
     GtkType entry_type;
     /* expanding selection */
             GtkSheetCell selection_cell;
     /* timer for automatic scroll during selection */
             gint32 timer;
             /* timer for flashing clipped range */
             gint32 clip_timer;
             gint interval;
     /* global selection button */
             GtkWidget *button;
     /* sheet state */
             gint state;
     /* selected range */
             GtkSheetRange range;
     /*the scrolling window and it's height and width to
             * make things a little speedier */
             GdkWindow *sheet_window;
             guint sheet_window_width;
             guint sheet_window_height;
     /* sheet backing pixmap */
             GdkWindow *pixmap;
     /* offsets for scrolling */
             gint hoffset;
             gint voffset;
             gfloat old_hadjustment;
             gfloat old_vadjustment;

             /* border shadow style */
             GtkShadowType shadow_type;

             /* Column Titles */
             GdkRectangle column_title_area;
             GdkWindow *column_title_window;
     /* Row Titles */
             GdkRectangle row_title_area;
             GdkWindow *row_title_window;
     /*scrollbars*/
             GtkAdjustment *hadjustment;
             GtkAdjustment *vadjustment;
     /* xor GC for the verticle drag line */
             GdkGC *xor_gc;
     /* gc for drawing unselected cells */
             GdkGC *fg_gc;
             GdkGC *bg_gc;
     /* cursor used to indicate dragging */
             GdkCursor *cursor_drag;
     /* the current x-pixel location of the xor-drag vline */
             gint x_drag;
     /* the current y-pixel location of the xor-drag hline */
             gint y_drag;
     /* current cell being dragged */
             GtkSheetCell drag_cell;
             /* current range being dragged */
             GtkSheetRange drag_range;
     /* clipped range */
             GtkSheetRange clip_range;
             };
    /* sheet->state */
    enum {GTK_SHEET_NORMAL,
          GTK_SHEET_ROW_SELECTED,
          GTK_SHEET_COLUMN_SELECTED,
          GTK_SHEET_RANGE_SELECTED};
    enum
    {
      GTK_SHEET_LEFT_BORDER     = 1 << 0,
      GTK_SHEET_RIGHT_BORDER    = 1 << 1,
      GTK_SHEET_TOP_BORDER      = 1 << 2,
      GTK_SHEET_BOTTOM_BORDER   = 1 << 3
    };
    GtkSheetAttrType
    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
    }
/* sheet flags */ |
    enum
           {
           GTK_SHEET_IS_LOCKED = 1 << 0,
           GTK_SHEET_IS_FROZEN = 1 << 1,
           GTK_SHEET_IN_XDRAG = 1 << 2,
           GTK_SHEET_IN_YDRAG = 1 << 3,
           GTK_SHEET_IN_DRAG = 1 << 4,
           GTK_SHEET_IN_SELECTION = 1 << 5,
           GTK_SHEET_IN_RESIZE = 1 << 6,
           GTK_SHEET_IN_CLIP = 1 << 7,
           GTK_SHEET_ROW_FROZEN = 1 << 8, /* set rows to be resizeable */
           GTK_SHEET_COLUMN_FROZEN = 1 << 9, /* set cols to be resizeable */
           GTK_SHEET_AUTORESIZE = 1 << 10, /* resize column if text width is  great than column width */
           GTK_SHEET_CLIP_TEXT = 1 << 11, /* clip text to cell */
           GTK_SHEET_ROW_TITLES_VISIBLE = 1 << 12,
           GTK_SHEET_COL_TITLES_VISIBLE = 1 << 13,
           GTK_SHEET_AUTO_SCROLL = 1 << 14,
           GTK_SHEET_JUSTIFY_ENTRY = 1 << 15
           };

| Home |  |