1 /* 2 * 3 * This program is free software; you can redistribute it and/or modify it 4 * under the terms of the GNU Lesser General Public License as published by 5 * the Free Software Foundation. 6 * 7 * This program is distributed in the hope that it will be useful, but 8 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 9 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 10 * for more details. 11 * 12 * You should have received a copy of the GNU Lesser General Public License 13 * along with this program; if not, see <http://www.gnu.org/licenses/>. 14 * 15 * 16 * Authors: 17 * Chris Lahey <clahey@ximian.com> 18 * Miguel de Icaza <miguel@ximian.com> 19 * 20 * Copyright (C) 1999-2008 Novell, Inc. (www.novell.com) 21 * 22 */ 23 24 #if !defined (__E_UTIL_H_INSIDE__) && !defined (LIBEUTIL_COMPILATION) 25 #error "Only <e-util/e-util.h> should be included directly." 26 #endif 27 28 #ifndef _E_TABLE_COLUMN_H_ 29 #define _E_TABLE_COLUMN_H_ 30 31 #include <gdk/gdk.h> 32 33 #include <e-util/e-table-col.h> 34 #include <e-util/e-table-sort-info.h> 35 36 /* Standard GObject macros */ 37 #define E_TYPE_TABLE_HEADER \ 38 (e_table_header_get_type ()) 39 #define E_TABLE_HEADER(obj) \ 40 (G_TYPE_CHECK_INSTANCE_CAST \ 41 ((obj), E_TYPE_TABLE_HEADER, ETableHeader)) 42 #define E_TABLE_HEADER_CLASS(cls) \ 43 (G_TYPE_CHECK_CLASS_CAST \ 44 ((cls), E_TYPE_TABLE_HEADER, ETableHeaderClass)) 45 #define E_IS_TABLE_HEADER(obj) \ 46 (G_TYPE_CHECK_INSTANCE_TYPE \ 47 ((obj), E_TYPE_TABLE_HEADER)) 48 #define E_IS_TABLE_HEADER_CLASS(cls) \ 49 (G_TYPE_CHECK_CLASS_TYPE \ 50 ((cls), E_TYPE_TABLE_HEADER)) 51 #define E_TABLE_HEADER_GET_CLASS(obj) \ 52 (G_TYPE_INSTANCE_GET_CLASS \ 53 ((obj), E_TYPE_TABLE_HEADER, ETableHeaderClass)) 54 55 G_BEGIN_DECLS 56 57 typedef struct _ETableHeader ETableHeader; 58 typedef struct _ETableHeaderClass ETableHeaderClass; 59 60 typedef gboolean (*ETableColCheckFunc) (ETableCol *col, gpointer user_data); 61 62 /* 63 * A Column header. 64 */ 65 struct _ETableHeader { 66 GObject parent; 67 68 gint col_count; 69 gint width; 70 gint nominal_width; 71 gint width_extras; 72 73 ETableSortInfo *sort_info; 74 gint sort_info_group_change_id; 75 76 ETableCol **columns; 77 78 GSList *change_queue, *change_tail; 79 gint idle; 80 }; 81 82 struct _ETableHeaderClass { 83 GObjectClass parent_class; 84 85 void (*structure_change) (ETableHeader *eth); 86 void (*dimension_change) (ETableHeader *eth, 87 gint width); 88 void (*expansion_change) (ETableHeader *eth); 89 gint (*request_width) (ETableHeader *eth, 90 gint col); 91 }; 92 93 GType e_table_header_get_type (void) G_GNUC_CONST; 94 ETableHeader * e_table_header_new (void); 95 96 void e_table_header_add_column (ETableHeader *eth, 97 ETableCol *tc, 98 gint pos); 99 ETableCol * e_table_header_get_column (ETableHeader *eth, 100 gint column); 101 ETableCol * e_table_header_get_column_by_spec 102 (ETableHeader *eth, 103 ETableColumnSpecification *spec); 104 ETableCol * e_table_header_get_column_by_col_idx 105 (ETableHeader *eth, 106 gint col_idx); 107 gint e_table_header_count (ETableHeader *eth); 108 gint e_table_header_index (ETableHeader *eth, 109 gint col); 110 gint e_table_header_get_index_at (ETableHeader *eth, 111 gint x_offset); 112 ETableCol ** e_table_header_get_columns (ETableHeader *eth); 113 gint e_table_header_get_selected (ETableHeader *eth); 114 115 gint e_table_header_total_width (ETableHeader *eth); 116 gint e_table_header_min_width (ETableHeader *eth); 117 void e_table_header_move (ETableHeader *eth, 118 gint source_index, 119 gint target_index); 120 void e_table_header_remove (ETableHeader *eth, 121 gint idx); 122 void e_table_header_set_size (ETableHeader *eth, 123 gint idx, 124 gint size); 125 void e_table_header_set_selection (ETableHeader *eth, 126 gboolean allow_selection); 127 gint e_table_header_col_diff (ETableHeader *eth, 128 gint start_col, 129 gint end_col); 130 131 void e_table_header_calc_widths (ETableHeader *eth); 132 GList * e_table_header_get_selected_indexes 133 (ETableHeader *eth); 134 void e_table_header_update_horizontal 135 (ETableHeader *eth); 136 gint e_table_header_prioritized_column 137 (ETableHeader *eth); 138 ETableCol * e_table_header_prioritized_column_selected 139 (ETableHeader *eth, 140 ETableColCheckFunc check_func, 141 gpointer user_data); 142 143 G_END_DECLS 144 145 #endif /* _E_TABLE_HEADER_H_ */ 146 147