From e65ce47c209498fc592e9bfb2720abdc0d2ffb9c Mon Sep 17 00:00:00 2001 From: Damon Chaplin Date: Sun, 25 Feb 2001 19:29:40 +0000 Subject: new abstract ECell subclass to be used as base class for popup ECells. 2001-02-25 Damon Chaplin * 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 --- widgets/table/e-cell-popup.h | 93 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 widgets/table/e-cell-popup.h (limited to 'widgets/table/e-cell-popup.h') 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 + * + * 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 +#include + +#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_ */ -- cgit v1.2.3