]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtkeditable.h
stylecontext: Do invalidation on first resize container
[~andy/gtk] / gtk / gtkeditable.h
index 8a374bb25f05aeb4bbbd7f1a4859ba511a37c047..0e2441c4df6c4ed9261d2c307435aa8151d12e69 100644 (file)
  * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
  *
  * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
  * License as published by the Free Software Foundation; either
  * version 2 of the License, or (at your option) any later version.
  *
  * 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.
+ * Lesser 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.
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
  */
-#ifndef __GTK_EDITABLE_H__
-#define __GTK_EDITABLE_H__
-
-
-#include <gdk/gdk.h>
-#include <gtk/gtkwidget.h>
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
 
+/*
+ * Modified by the GTK+ Team and others 1997-2000.  See the AUTHORS
+ * file for a list of people on the GTK+ Team.  See the ChangeLog
+ * files for a list of changes.  These files are distributed with
+ * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
+ */
 
-#define GTK_EDITABLE(obj)          GTK_CHECK_CAST (obj, gtk_editable_get_type (), GtkEditable)
-#define GTK_EDITABLE_CLASS(klass)  GTK_CHECK_CLASS_CAST (klass, gtk_editable_get_type (), GtkEditableClass)
-#define GTK_IS_EDITABLE(obj)       GTK_CHECK_TYPE (obj, gtk_editable_get_type ())
+#ifndef __GTK_EDITABLE_H__
+#define __GTK_EDITABLE_H__
 
 
-typedef struct _GtkEditable       GtkEditable;
-typedef struct _GtkEditableClass  GtkEditableClass;
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#error "Only <gtk/gtk.h> can be included directly."
+#endif
 
-typedef void (*GtkTextFunction) (GtkEditable  *editable, guint32 time);
+#include <gtk/gtkwidget.h>
 
-struct _GtkEditable
-{
-  GtkWidget widget;
 
-  guint   current_pos;
+G_BEGIN_DECLS
 
-  guint   selection_start_pos;
-  guint   selection_end_pos;
-  guint   has_selection : 1;
-  guint   editable : 1;
-  GdkIC   ic;
+#define GTK_TYPE_EDITABLE             (gtk_editable_get_type ())
+#define GTK_EDITABLE(obj)             (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_EDITABLE, GtkEditable))
+#define GTK_IS_EDITABLE(obj)          (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_EDITABLE))
+#define GTK_EDITABLE_GET_IFACE(inst)  (G_TYPE_INSTANCE_GET_INTERFACE ((inst), GTK_TYPE_EDITABLE, GtkEditableInterface))
 
-  gchar *clipboard_text;
-};
+typedef struct _GtkEditable          GtkEditable;         /* Dummy typedef */
+typedef struct _GtkEditableInterface GtkEditableInterface;
 
-struct _GtkEditableClass
+struct _GtkEditableInterface
 {
-  GtkWidgetClass parent_class;
-  
-  /* Signals for notification/filtering of changes */
-  void (* changed)      (GtkEditable    *editable);
-  void (* insert_text)  (GtkEditable    *editable,
-                        const gchar    *text,
-                        gint            length,
-                        gint           *position);
-  void (* delete_text)  (GtkEditable    *editable,
-                        gint            start_pos,
-                        gint            end_pos);
-
-  /* Bindings actions */
-  void (* activate)        (GtkEditable *editable);
-  void (* move_cursor)     (GtkEditable *editable,
-                           gint         x,
-                           gint         y);
-  void (* move_word)       (GtkEditable *editable,
-                           gint         n);
-  void (* move_page)       (GtkEditable *editable,
-                           gint         x,
-                           gint         y);
-  void (* move_to_row)     (GtkEditable *editable,
-                           gint         row);
-  void (* move_to_column)  (GtkEditable *editable,
-                           gint         row);
-  void (* kill_char)       (GtkEditable *editable,
-                           gint         direction);
-  void (* kill_word)       (GtkEditable *editable,
-                           gint         direction);
-  void (* kill_line)       (GtkEditable *editable,
-                           gint         direction);
-  void (* cut_clipboard)   (GtkEditable *editable);
-  void (* copy_clipboard)  (GtkEditable *editable);
-  void (* paste_clipboard) (GtkEditable *editable);
-
-  /* Virtual functions. get_chars is in paricular not a signal because
-   * it returns malloced memory. The others are not signals because
-   * they would not be particularly useful as such. (All changes to
-   * selection and position do not go through these functions)
-   */
-  void (* update_text)  (GtkEditable    *editable,
-                        gint            start_pos,
-                        gint            end_pos);
-  gchar* (* get_chars)  (GtkEditable    *editable,
-                        gint            start_pos,
-                        gint            end_pos);
-  void (* set_selection)(GtkEditable    *editable,
-                        gint            start_pos,
-                        gint            end_pos);
-  void (* set_position) (GtkEditable    *editable,
-                        gint            position);
+  GTypeInterface                  base_iface;
+
+  /* signals */
+  void (* insert_text)              (GtkEditable    *editable,
+                                    const gchar    *new_text,
+                                    gint            new_text_length,
+                                    gint           *position);
+  void (* delete_text)              (GtkEditable    *editable,
+                                    gint            start_pos,
+                                    gint            end_pos);
+  void (* changed)                  (GtkEditable    *editable);
+
+  /* vtable */
+  void (* do_insert_text)           (GtkEditable    *editable,
+                                    const gchar    *new_text,
+                                    gint            new_text_length,
+                                    gint           *position);
+  void (* do_delete_text)           (GtkEditable    *editable,
+                                    gint            start_pos,
+                                    gint            end_pos);
+
+  gchar* (* get_chars)              (GtkEditable    *editable,
+                                    gint            start_pos,
+                                    gint            end_pos);
+  void (* set_selection_bounds)     (GtkEditable    *editable,
+                                    gint            start_pos,
+                                    gint            end_pos);
+  gboolean (* get_selection_bounds) (GtkEditable    *editable,
+                                    gint           *start_pos,
+                                    gint           *end_pos);
+  void (* set_position)             (GtkEditable    *editable,
+                                    gint            position);
+  gint (* get_position)             (GtkEditable    *editable);
 };
 
-guint      gtk_editable_get_type       (void);
-void       gtk_editable_select_region  (GtkEditable      *editable,
-                                       gint              start,
-                                       gint              end);
-void       gtk_editable_insert_text   (GtkEditable       *editable,
-                                       const gchar      *new_text,
-                                       gint              new_text_length,
-                                       gint             *position);
-void       gtk_editable_delete_text    (GtkEditable      *editable,
-                                       gint              start_pos,
-                                       gint              end_pos);
-gchar *    gtk_editable_get_chars      (GtkEditable      *editable,
-                                       gint              start_pos,
-                                       gint              end_pos);
-void       gtk_editable_cut_clipboard  (GtkEditable      *editable);
-void       gtk_editable_copy_clipboard (GtkEditable      *editable);
-void       gtk_editable_paste_clipboard (GtkEditable     *editable);
-void       gtk_editable_claim_selection (GtkEditable     *editable, 
-                                        gboolean         claim, 
-                                        guint32          time);
-void       gtk_editable_delete_selection (GtkEditable    *editable);
-
-void       gtk_editable_changed         (GtkEditable    *editable);
-void       gtk_editable_set_position    (GtkEditable    *editable,
-                                        gint            position);
-gint       gtk_editable_get_position    (GtkEditable    *editable);
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
+GType    gtk_editable_get_type             (void) G_GNUC_CONST;
+void     gtk_editable_select_region        (GtkEditable *editable,
+                                           gint         start_pos,
+                                           gint         end_pos);
+gboolean gtk_editable_get_selection_bounds (GtkEditable *editable,
+                                           gint        *start_pos,
+                                           gint        *end_pos);
+void     gtk_editable_insert_text          (GtkEditable *editable,
+                                           const gchar *new_text,
+                                           gint         new_text_length,
+                                           gint        *position);
+void     gtk_editable_delete_text          (GtkEditable *editable,
+                                           gint         start_pos,
+                                           gint         end_pos);
+gchar*   gtk_editable_get_chars            (GtkEditable *editable,
+                                           gint         start_pos,
+                                           gint         end_pos);
+void     gtk_editable_cut_clipboard        (GtkEditable *editable);
+void     gtk_editable_copy_clipboard       (GtkEditable *editable);
+void     gtk_editable_paste_clipboard      (GtkEditable *editable);
+void     gtk_editable_delete_selection     (GtkEditable *editable);
+void     gtk_editable_set_position         (GtkEditable *editable,
+                                           gint         position);
+gint     gtk_editable_get_position         (GtkEditable *editable);
+void     gtk_editable_set_editable         (GtkEditable *editable,
+                                           gboolean     is_editable);
+gboolean gtk_editable_get_editable         (GtkEditable *editable);
+
+G_END_DECLS
 
 #endif /* __GTK_EDITABLE_H__ */