1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170
|
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
/*
* e-selection-model.h
* Copyright 2000, 2001, Ximian, Inc.
*
* Authors:
* Chris Lahey <clahey@ximian.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License, version 2, as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
* 02111-1307, USA.
*/
#ifndef _E_SELECTION_MODEL_H_
#define _E_SELECTION_MODEL_H_
#include <gtk/gtkobject.h>
#include <e-util/e-sorter.h>
#include <gdk/gdkevents.h>
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
#define E_SELECTION_MODEL_TYPE (e_selection_model_get_type ())
#define E_SELECTION_MODEL(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), E_SELECTION_MODEL_TYPE, ESelectionModel))
#define E_SELECTION_MODEL_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), E_SELECTION_MODEL_TYPE, ESelectionModelClass))
#define E_IS_SELECTION_MODEL(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), E_SELECTION_MODEL_TYPE))
#define E_IS_SELECTION_MODEL_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), E_SELECTION_MODEL_TYPE))
#define E_SELECTION_MODEL_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), E_SELECTION_MODEL_TYPE, ESelectionModelClass))
#ifndef _E_FOREACH_FUNC_H_
#define _E_FOREACH_FUNC_H_
typedef void (*EForeachFunc) (int model_row,
gpointer closure);
#endif
/* list selection modes */
typedef enum {
E_CURSOR_LINE,
E_CURSOR_SIMPLE,
E_CURSOR_SPREADSHEET
} ECursorMode;
typedef struct {
GObject base;
ESorter *sorter;
GtkSelectionMode mode;
ECursorMode cursor_mode;
int old_selection;
} ESelectionModel;
typedef struct {
GObjectClass parent_class;
/* Virtual methods */
gboolean (*is_row_selected) (ESelectionModel *esm, int row);
void (*foreach) (ESelectionModel *esm, EForeachFunc callback, gpointer closure);
void (*clear) (ESelectionModel *esm);
gint (*selected_count) (ESelectionModel *esm);
void (*select_all) (ESelectionModel *esm);
void (*invert_selection) (ESelectionModel *esm);
int (*row_count) (ESelectionModel *esm);
/* Protected virtual methods. */
void (*change_one_row) (ESelectionModel *esm, int row, gboolean on);
void (*change_cursor) (ESelectionModel *esm, int row, int col);
int (*cursor_row) (ESelectionModel *esm);
int (*cursor_col) (ESelectionModel *esm);
void (*select_single_row) (ESelectionModel *selection, int row);
void (*toggle_single_row) (ESelectionModel *selection, int row);
void (*move_selection_end) (ESelectionModel *selection, int row);
void (*set_selection_end) (ESelectionModel *selection, int row);
/*
* Signals
*/
void (*cursor_changed) (ESelectionModel *esm, int row, int col);
void (*cursor_activated) (ESelectionModel *esm, int row, int col);
void (*selection_row_changed) (ESelectionModel *esm, int row);
void (*selection_changed) (ESelectionModel *esm);
} ESelectionModelClass;
GType e_selection_model_get_type (void);
void e_selection_model_do_something (ESelectionModel *esm,
guint row,
guint col,
GdkModifierType state);
gboolean e_selection_model_maybe_do_something (ESelectionModel *esm,
guint row,
guint col,
GdkModifierType state);
void e_selection_model_right_click_down (ESelectionModel *selection,
guint row,
guint col,
GdkModifierType state);
void e_selection_model_right_click_up (ESelectionModel *selection);
gint e_selection_model_key_press (ESelectionModel *esm,
GdkEventKey *key);
void e_selection_model_select_as_key_press (ESelectionModel *esm,
guint row,
guint col,
GdkModifierType state);
/* Virtual functions */
gboolean e_selection_model_is_row_selected (ESelectionModel *esm,
gint n);
void e_selection_model_foreach (ESelectionModel *esm,
EForeachFunc callback,
gpointer closure);
void e_selection_model_clear (ESelectionModel *esm);
gint e_selection_model_selected_count (ESelectionModel *esm);
void e_selection_model_select_all (ESelectionModel *esm);
void e_selection_model_invert_selection (ESelectionModel *esm);
int e_selection_model_row_count (ESelectionModel *esm);
/* Private virtual Functions */
void e_selection_model_change_one_row (ESelectionModel *esm,
int row,
gboolean on);
void e_selection_model_change_cursor (ESelectionModel *esm,
int row,
int col);
int e_selection_model_cursor_row (ESelectionModel *esm);
int e_selection_model_cursor_col (ESelectionModel *esm);
void e_selection_model_select_single_row (ESelectionModel *selection,
int row);
void e_selection_model_toggle_single_row (ESelectionModel *selection,
int row);
void e_selection_model_move_selection_end (ESelectionModel *selection,
int row);
void e_selection_model_set_selection_end (ESelectionModel *selection,
int row);
/* Signals */
void e_selection_model_cursor_changed (ESelectionModel *selection,
int row,
int col);
void e_selection_model_cursor_activated (ESelectionModel *selection,
int row,
int col);
void e_selection_model_selection_row_changed (ESelectionModel *selection,
int row);
void e_selection_model_selection_changed (ESelectionModel *selection);
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* _E_SELECTION_MODEL_H_ */
|