]> Pileus Git - ~andy/gtk/blob - gtk/gtkcelleditable.c
Intern some more strings.
[~andy/gtk] / gtk / gtkcelleditable.c
1 /* gtkcelleditable.c
2  * Copyright (C) 2000  Red Hat, Inc.,  Jonathan Blandford <jrb@redhat.com>
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Library General Public
6  * License as published by the Free Software Foundation; either
7  * version 2 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Library General Public License for more details.
13  *
14  * You should have received a copy of the GNU Library General Public
15  * License along with this library; if not, write to the
16  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
17  * Boston, MA 02111-1307, USA.
18  */
19
20
21 #include <config.h>
22 #include "gtkcelleditable.h"
23 #include "gtkmarshalers.h"
24 #include "gtkintl.h"
25 #include "gtkalias.h"
26
27 static void gtk_cell_editable_base_init (gpointer g_class);
28
29 GType
30 gtk_cell_editable_get_type (void)
31 {
32   static GType cell_editable_type = 0;
33
34   if (! cell_editable_type)
35     {
36       static const GTypeInfo cell_editable_info =
37       {
38         sizeof (GtkCellEditableIface), /* class_size */
39         gtk_cell_editable_base_init,   /* base_init */
40         NULL,           /* base_finalize */
41         NULL,
42         NULL,           /* class_finalize */
43         NULL,           /* class_data */
44         0,
45         0,
46         NULL
47       };
48
49       cell_editable_type =
50         g_type_register_static (G_TYPE_INTERFACE, I_("GtkCellEditable"),
51                                 &cell_editable_info, 0);
52
53       g_type_interface_add_prerequisite (cell_editable_type, GTK_TYPE_WIDGET);
54     }
55
56   return cell_editable_type;
57 }
58
59 static void
60 gtk_cell_editable_base_init (gpointer g_class)
61 {
62   static gboolean initialized = FALSE;
63
64   if (! initialized)
65     {
66       g_signal_new (I_("editing_done"),
67                     GTK_TYPE_CELL_EDITABLE,
68                     G_SIGNAL_RUN_LAST,
69                     G_STRUCT_OFFSET (GtkCellEditableIface, editing_done),
70                     NULL, NULL,
71                     _gtk_marshal_VOID__VOID,
72                     G_TYPE_NONE, 0);
73       g_signal_new (I_("remove_widget"),
74                     GTK_TYPE_CELL_EDITABLE,
75                     G_SIGNAL_RUN_LAST,
76                     G_STRUCT_OFFSET (GtkCellEditableIface, remove_widget),
77                     NULL, NULL,
78                     _gtk_marshal_VOID__VOID,
79                     G_TYPE_NONE, 0);
80       initialized = TRUE;
81     }
82 }
83
84 /**
85  * gtk_cell_editable_start_editing:
86  * @cell_editable: A #GtkCellEditable
87  * @event: A #GdkEvent, or %NULL
88  * 
89  * Begins editing on a @cell_editable.  @event is the #GdkEvent that began the
90  * editing process.  It may be %NULL, in the instance that editing was initiated
91  * through programatic means.
92  **/
93 void
94 gtk_cell_editable_start_editing (GtkCellEditable *cell_editable,
95                                  GdkEvent        *event)
96 {
97   g_return_if_fail (GTK_IS_CELL_EDITABLE (cell_editable));
98
99   (* GTK_CELL_EDITABLE_GET_IFACE (cell_editable)->start_editing) (cell_editable, event);
100 }
101
102 /**
103  * gtk_cell_editable_editing_done:
104  * @cell_editable: A #GtkTreeEditable
105  * 
106  * Emits the "editing_done" signal.  This signal is a sign for the cell renderer
107  * to update its value from the cell.
108  **/
109 void
110 gtk_cell_editable_editing_done (GtkCellEditable *cell_editable)
111 {
112   g_return_if_fail (GTK_IS_CELL_EDITABLE (cell_editable));
113
114   g_signal_emit_by_name (cell_editable, "editing_done");
115 }
116
117 /**
118  * gtk_cell_editable_remove_widget:
119  * @cell_editable: A #GtkTreeEditable
120  * 
121  * Emits the "remove_widget" signal.  This signal is meant to indicate that the
122  * cell is finished editing, and the widget may now be destroyed.
123  **/
124 void
125 gtk_cell_editable_remove_widget (GtkCellEditable *cell_editable)
126 {
127   g_return_if_fail (GTK_IS_CELL_EDITABLE (cell_editable));
128
129   g_signal_emit_by_name (cell_editable, "remove_widget");
130 }
131
132 #define __GTK_CELL_EDITABLE_C__
133 #include "gtkaliasdef.c"