// -*- c++ -*-
//  Generated by gtkmmproc from ./../editable.gen_h -- DO NOT MODIFY!
#ifndef _GTKMM_EDITABLE_H
#define _GTKMM_EDITABLE_H

/* $Id: editable.gen_h,v 1.43 2000/02/13 02:22:09 kenelson Exp $ */

/* editable.h
 *
 * Copyright (C) 1998-1999 The Gtk-- Development Team
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Library 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.
 *
 * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 */

#include <gtk--/widget.h>
#include <gtk/gtkeditable.h>

namespace Gtk {
class Editable;
class Editable_Class;
}
namespace Gtk { Gtk::Editable *wrap (GtkEditable *o); }
namespace Gtk
{
//: Abstract class for objects that user can edit.
class Editable : public Widget {

public:
  typedef Editable          CppObjectType;
  typedef Editable_Class    CppClassType;
  typedef GtkEditable           BaseObjectType;
  typedef GtkEditableClass      BaseClassType;

private:
  friend class Editable_Class;
  static CppClassType editable_class;

  Editable(const Editable&);
  Editable& operator=(const Editable&); // not implemented

protected:
  void   initialize_class();
  explicit Editable(GtkEditable *castitem);

public:
  static GtkType get_type();
  GtkEditable* gtkobj()             { return (GtkEditable*)(gtkobject); }
  const GtkEditable* gtkobj() const { return (GtkEditable*)(gtkobject); }
  static bool isA(Object *checkcast);

  // Hook for proxies
  static const char* const signal_names[];

  virtual ~Editable();

private:

public:
  Editable();

  //SIGNAL_SPEC("get_chars",vfunc,gchar* get_chars(gint,gint),gtk_editable_get_chars);




  void select_region(gint start,gint end);

  /* no function for 1.1, we'll use signal instead */

  gint get_position() const;


  string get_chars(gint start_pos,gint end_pos) const;


  void claim_selection(gboolean claim,guint32 time);


  void delete_selection();


  guint get_selection_start_pos() const { return gtkobj()->selection_start_pos; }
  guint get_selection_end_pos()   const { return gtkobj()->selection_end_pos; }
  bool  has_selection()           const { return gtkobj()->has_selection; }

public:

  union
    {
      CppObjectType * editable_self;
      Gtk::EmitProxySignal0<void,CppObjectType,BaseObjectType,0,&gtk_editable_changed> changed;
      Gtk::ProxySignal0<void,CppObjectType,BaseObjectType,1> activate;
      Gtk::EmitProxySignal3<void,const gchar*,gint,gint*,CppObjectType,BaseObjectType,2,&gtk_editable_insert_text> insert_text;
      Gtk::EmitProxySignal2<void,gint,gint,CppObjectType,BaseObjectType,3,&gtk_editable_delete_text> delete_text;
      Gtk::EmitProxySignal1<void,gboolean,CppObjectType,BaseObjectType,4,&gtk_editable_set_editable> set_editable;
      Gtk::ProxySignal2<void,gint,gint,CppObjectType,BaseObjectType,5> move_cursor;
      Gtk::ProxySignal1<void,gint,CppObjectType,BaseObjectType,6> move_word;
      Gtk::ProxySignal2<void,gint,gint,CppObjectType,BaseObjectType,7> move_page;
      Gtk::ProxySignal1<void,gint,CppObjectType,BaseObjectType,8> move_to_row;
      Gtk::ProxySignal1<void,gint,CppObjectType,BaseObjectType,9> move_to_column;
      Gtk::ProxySignal1<void,gint,CppObjectType,BaseObjectType,10> kill_char;
      Gtk::ProxySignal1<void,gint,CppObjectType,BaseObjectType,11> kill_word;
      Gtk::ProxySignal1<void,gint,CppObjectType,BaseObjectType,12> kill_line;
      Gtk::EmitProxySignal0<void,CppObjectType,BaseObjectType,13,&gtk_editable_cut_clipboard> cut_clipboard;
      Gtk::EmitProxySignal0<void,CppObjectType,BaseObjectType,14,&gtk_editable_copy_clipboard> copy_clipboard;
      Gtk::EmitProxySignal0<void,CppObjectType,BaseObjectType,15,&gtk_editable_paste_clipboard> paste_clipboard;
    };

protected:
  // impl functions
    virtual void changed_impl();
    virtual void activate_impl();
    virtual void insert_text_impl(const gchar* p0,gint p1,gint* p2);
    virtual void delete_text_impl(gint p0,gint p1);
    virtual void set_editable_impl(gboolean p0);
    virtual void move_cursor_impl(gint p0,gint p1);
    virtual void move_word_impl(gint p0);
    virtual void move_page_impl(gint p0,gint p1);
    virtual void move_to_row_impl(gint p0);
    virtual void move_to_column_impl(gint p0);
    virtual void kill_char_impl(gint p0);
    virtual void kill_word_impl(gint p0);
    virtual void kill_line_impl(gint p0);
    virtual void cut_clipboard_impl();
    virtual void copy_clipboard_impl();
    virtual void paste_clipboard_impl();

};

}


//+ PROPERTIES(Gtk_Editable)
//. name: current_pos
//. type: guint
//. get:
//. set:
//. desc:

//. name: selection_start_pos
//. type: guint
//. get:
//. set:
//. desc:

//. name: selection_end_pos
//. type: guint
//. get:
//. set:
//. desc:

//. name: has_selection
//. type: guint:1
//. get:
//. set:
//. desc:

//. name: editable
//. type: guint:1
//. get:
//. set:
//. desc:

//. name: ic
//. type: GdkIC*
//. get:
//. set:
//. desc:

//. name: ic_attr
//. type: GdkICAttr*
//. get:
//. set:
//. desc:

//. name: clipboard_text
//. type: string
//. get:
//. set:
//. desc:

#endif
