/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ /* * Author : * Damon Chaplin * * Copyright 1999, Helix Code, 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 */ /* * Based on gnome-icon-text-item: an editable text block with word wrapping * for the GNOME canvas. * * Copyright (C) 1998, 1999 The Free Software Foundation * * Authors: Miguel de Icaza * Federico Mena */ /* * EIconBarTextItem - An editable canvas text item for the EIconBar. */ #ifndef _E_ICON_BAR_TEXT_ITEM_H_ #define _E_ICON_BAR_TEXT_ITEM_H_ #include #include #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #define E_ICON_BAR_TEXT_ITEM(obj) (GTK_CHECK_CAST((obj), \ e_icon_bar_text_item_get_type (), EIconBarTextItem)) #define E_ICON_BAR_TEXT_ITEM_CLASS(k) (GTK_CHECK_CLASS_CAST ((k),\ e_icon_bar_text_item_get_type ())) #define E_IS_ICON_BAR_TEXT_ITEM(o) (GTK_CHECK_TYPE((o), \ e_icon_bar_text_item_get_type ())) typedef struct _EIconBarTextItemInfo EIconBarTextItemInfo; typedef struct { GnomeCanvasItem canvas_item; /* Size and maximum allowed width */ int x, y; int width; /* Font name */ char *fontname; /* Private data */ gpointer priv; /* was GtkEntry *entry */ /* Actual text */ char *text; /* Text layout information */ EIconBarTextItemInfo *ti; /* Whether the text is being edited */ unsigned int editing : 1; /* Whether the text item is selected */ unsigned int selected : 1; /* Whether the user is select-dragging a block of text */ unsigned int selecting : 1; /* Whether the text is editable */ unsigned int is_editable : 1; /* Whether the text is allocated by us (FALSE if allocated by the client) */ unsigned int is_text_allocated : 1; /* The horizontal alignment of the text (default 0.5). */ gfloat xalign; /* The justification of the text (default is centered). */ GtkJustification justification; /* The max number of lines of text shown, or -1 for all (default). */ gint max_lines; /* If '...' is displayed if the text doesn't all fit (default TRUE). */ gboolean show_ellipsis; /* This is TRUE if we couldn't fit all the text in. */ gboolean is_clipped; } EIconBarTextItem; typedef struct { GnomeCanvasItemClass parent_class; /* Signals we emit */ int (* text_changed) (EIconBarTextItem *iti); void (* height_changed) (EIconBarTextItem *iti); void (* width_changed) (EIconBarTextItem *iti); void (* editing_started) (EIconBarTextItem *iti); void (* editing_stopped) (EIconBarTextItem *iti); void (* selection_started) (EIconBarTextItem *iti); void (* selection_stopped) (EIconBarTextItem *iti); } EIconBarTextItemClass; GtkType e_icon_bar_text_item_get_type (void); void e_icon_bar_text_item_configure (EIconBarTextItem *iti, int x, int y, int width, const char *fontname, const char *text, gboolean is_static); void e_icon_bar_text_item_set_width (EIconBarTextItem *iti, int width); void e_icon_bar_text_item_setxy (EIconBarTextItem *iti, int x, int y); void e_icon_bar_text_item_select (EIconBarTextItem *iti, int sel); char* e_icon_bar_text_item_get_text (EIconBarTextItem *iti); void e_icon_bar_text_item_set_text (EIconBarTextItem *iti, const char *text, gboolean is_static); void e_icon_bar_text_item_start_editing (EIconBarTextItem *iti); void e_icon_bar_text_item_stop_editing (EIconBarTextItem *iti, gboolean accept); #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* _E_ICON_BAR_TEXT_ITEM_H_ */