diff options
author | Damon Chaplin <damon@ximian.com> | 2001-02-26 03:29:40 +0800 |
---|---|---|
committer | Damon Chaplin <damon@src.gnome.org> | 2001-02-26 03:29:40 +0800 |
commit | e65ce47c209498fc592e9bfb2720abdc0d2ffb9c (patch) | |
tree | 417fb04a9e7ba697af2577ee59d402ea2b857e24 /widgets/table/e-cell-popup.h | |
parent | a8a0b46f96f69e26b49e184d98bd9af2f6600fcf (diff) | |
download | gsoc2013-evolution-e65ce47c209498fc592e9bfb2720abdc0d2ffb9c.tar.gz gsoc2013-evolution-e65ce47c209498fc592e9bfb2720abdc0d2ffb9c.tar.zst gsoc2013-evolution-e65ce47c209498fc592e9bfb2720abdc0d2ffb9c.zip |
new abstract ECell subclass to be used as base class for popup ECells.
2001-02-25 Damon Chaplin <damon@ximian.com>
* e-cell-popup.c: new abstract ECell subclass to be used as base class
for popup ECells.
* e-cell-combo.c: subclass of ECellPopup which pops up a simple list
of strings.
* e-table-item.c: Renamed eti_row_diff() to e_table_item_row_diff() and
made public, since the ECellPopup subclasses need it.
* Makefile.am: added e-cell-popup.[hc] and e-cell-combo.[hc]
svn path=/trunk/; revision=8387
Diffstat (limited to 'widgets/table/e-cell-popup.h')
-rw-r--r-- | widgets/table/e-cell-popup.h | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/widgets/table/e-cell-popup.h b/widgets/table/e-cell-popup.h new file mode 100644 index 0000000000..2ccfd730ae --- /dev/null +++ b/widgets/table/e-cell-popup.h @@ -0,0 +1,93 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ + +/* + * Author : + * Damon Chaplin <damon@ximian.com> + * + * Copyright 2001, Ximian, Inc. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + * USA + */ + +/* + * ECellPopup - an ECell used to support popup selections like a GtkCombo + * widget. It contains a child ECell, e.g. an ECellText, but when selected it + * displays an arrow on the right edge which the user can click to show a + * popup. It will support subclassing or signals so that different types of + * popup can be provided. + */ + +#ifndef _E_CELL_POPUP_H_ +#define _E_CELL_POPUP_H_ + +#include <libgnomeui/gnome-canvas.h> +#include <gal/e-table/e-cell.h> + +#define E_CELL_POPUP_TYPE (e_cell_popup_get_type ()) +#define E_CELL_POPUP(o) (GTK_CHECK_CAST ((o), E_CELL_POPUP_TYPE, ECellPopup)) +#define E_CELL_POPUP_CLASS(k) (GTK_CHECK_CLASS_CAST((k), E_CELL_POPUP_TYPE, ECellPopupClass)) +#define E_IS_CELL_POPUP(o) (GTK_CHECK_TYPE ((o), E_CELL_POPUP_TYPE)) +#define E_IS_CELL_POPUP_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), E_CELL_POPUP_TYPE)) + +typedef struct _ECellPopupView ECellPopupView; + +typedef struct { + ECell parent; + + ECell *child; + + /* This is TRUE if the popup window is shown for the cell being + edited. While shown we display the arrow indented. */ + gboolean popup_shown; + + /* This is TRUE if the popup arrow is shown for the cell being edited. + This is needed to stop the first click on the cell from popping up + the popup window. We only popup the window after we have drawn the + arrow. */ + gboolean popup_arrow_shown; + + /* The view in which the popup is shown. */ + ECellPopupView *popup_cell_view; + + gint popup_view_col; + gint popup_row; +} ECellPopup; + + +typedef struct { + ECellClass parent_class; + + /* Virtual function for subclasses to override. */ + gint (*popup) (ECellPopup *ecp, GdkEvent *event); +} ECellPopupClass; + + +struct _ECellPopupView { + ECellView cell_view; + + ECellView *child_view; +}; + + +GtkType e_cell_popup_get_type (void); +ECell *e_cell_popup_new (void); + +/* Get and set the child ECell. */ +ECell *e_cell_popup_get_child (ECellPopup *ecp); +void e_cell_popup_set_child (ECellPopup *ecp, + ECell *child); + +#endif /* _E_CELL_POPUP_H_ */ |