// -*- c++ -*-
/*  Generated by gensig from notebook.gen_h. DO NOT MODIFY!!! */
#ifndef GTKMM_NOTEBOOK_HEADER
#define GTKMM_NOTEBOOK_HEADER
/* $Id: notebook.gen_h,v 1.39.2.1 1999/03/20 04:59:48 terop Exp $ */

/* notebook.h
 * 
 * Copyright (C) 1998-1999 
 *
 * 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--/container.h>
#include <gtk--/label.h>
#include <gtk/gtknotebook.h>

class Gtk_Notebook_Class;
#line 26 "notebook.gen_h"


class Gtk_NotebookPage
{
public:
  Gtk_NotebookPage(GtkNotebookPage *castitem);
  const GtkNotebookPage* gtkobj() const { return gtkobject; }
  GtkNotebookPage* gtkobj() { return gtkobject; }
protected:
  Gtk_Widget child;
  Gtk_Label tab_label;
  Gtk_Label menu_label;
  GtkNotebookPage* gtkobject;
};
 

//: container which shows one of it's children a time, normally `subwindows'
class Gtk_Notebook : public Gtk_Container {
public:
protected:
  typedef Gtk_Notebook_Class    CppClassType;
  typedef GtkNotebook           BaseObjectType;
  typedef GtkNotebookClass      BaseClassType;

  virtual void *get_parent_class();

private:
  friend CppClassType;
  static CppClassType notebook_class; 
  GtkType get_type(); 

public:


  Gtk_Notebook();
  Gtk_Notebook(GtkNotebook *castitem);

  //: add a new page
  void append_page       (const Gtk_Widget &child,
		          const Gtk_Label &tab_label);
  void append_page_menu  (const Gtk_Widget &child,
			  const Gtk_Label &tab_label,
			  const Gtk_Label &menu_label);

  void prepend_page      (const Gtk_Widget &child,
			  const Gtk_Label &tab_label);
  void prepend_page_menu (const Gtk_Widget &child,
			  const Gtk_Label &tab_label,
			  const Gtk_Label &menu_label);

  void insert_page       (const Gtk_Widget &child,
			  const Gtk_Label &tab_label,
			  gint position);
  void insert_page_menu  (const Gtk_Widget &child,
			  const Gtk_Label &tab_label,
			  const Gtk_Label &menu_label,
			  gint position);

  //: add a new page
  void append_page       (const Gtk_ObjectHandle<Gtk_Widget> &child,
		          const Gtk_ObjectHandle<Gtk_Label> &tab_label);
  void append_page_menu  (const Gtk_ObjectHandle<Gtk_Widget> &child,
			  const Gtk_ObjectHandle<Gtk_Label> &tab_label,
			  const Gtk_ObjectHandle<Gtk_Label> &menu_label);

  void prepend_page      (const Gtk_ObjectHandle<Gtk_Widget> &child,
			  const Gtk_ObjectHandle<Gtk_Label> &tab_label);
  void prepend_page_menu (const Gtk_ObjectHandle<Gtk_Widget> &child,
			  const Gtk_ObjectHandle<Gtk_Label> &tab_label,
			  const Gtk_ObjectHandle<Gtk_Label> &menu_label);

  void insert_page       (const Gtk_ObjectHandle<Gtk_Widget> &child,
			  const Gtk_ObjectHandle<Gtk_Label> &tab_label,
			  gint position);
  void insert_page_menu  (const Gtk_ObjectHandle<Gtk_Widget> &child,
			  const Gtk_ObjectHandle<Gtk_Label> &tab_label,
			  const Gtk_ObjectHandle<Gtk_Label> &menu_label,
			  gint position);

  void remove_page       (gint page_num);

#line 95 "notebook.gen_h"
  gint get_current_page() const;
  Gtk_ObjectHandle<Gtk_Widget> get_nth_page(gint page_num);
#line 100 "notebook.gen_h"

#line 102 "notebook.gen_h"

  gint page_num(const Gtk_Widget &child);
  Gtk_Widget* current_child();

  Gtk_ObjectHandle<Gtk_Label> get_tab_label (const Gtk_Widget &child);

  void set_tab_label               (const Gtk_Widget &child,
				    const Gtk_Label &tab_label);
  
  //: amounts to set_tab_label(child, NULL);
  void set_tab_label               (const Gtk_Widget &child);
  
  void set_tab_label_text          (const Gtk_Widget &child,
				    const _gtk_string &text);

  Gtk_ObjectHandle<Gtk_Label> get_menu_label (const Gtk_Widget &child);
  
  void set_menu_label              (const Gtk_Widget &child,
				    const Gtk_Label &tab_label);

  //: amounts to set_menu_label(child, NULL);
  void set_menu_label              (const Gtk_Widget &child);
  
  void set_menu_label_text         (const Gtk_Widget &child,
				    const _gtk_string &text);

  void query_tab_label_packing     (const Gtk_Widget &child,
				    bool *expand,
				    bool *fill,
				    GtkPackType *type) const;

  void set_tab_label_packing       (const Gtk_Widget &child,
				    bool expand,
				    bool fill,
				    GtkPackType type);

  void reorder_child               (const Gtk_Widget &child,
				    gint position);

  void set_tab_hborder             (guint tab_hborder);
  void set_tab_vborder             (guint tab_vborder);

  void set_homogeneous_tabs        (bool homogeneous);
  
#line 147 "notebook.gen_h"

  void set_page           (gint page_num);
  void next_page          ();
  void prev_page          ();

  //: pos is one of GTK_POS_LEFT, GTK_POS_RIGHT, GTK_POS_TOP, GTK_POS_BOTTOM
  void set_tab_pos    (GtkPositionType pos);
  void set_show_tabs  (bool show_tabs);
  void set_show_border(bool show_border);
  void set_scrollable (bool scrollable);
  void set_tab_border (gint border_width);

  void popup_enable   ();
  void popup_disable  ();

  // Improve this ?
#line 164 "notebook.gen_h"
  Signal_proxy2<BaseObjectType,GtkNotebookPage*, guint> switch_page;
#line 168 "notebook.gen_h"

protected:
  /* impl functions */
  virtual void switch_page_impl(GtkNotebookPage* p1, guint p2);
public:
  GtkNotebook* gtkobj() { return GTK_NOTEBOOK(gtkobject); }
  const GtkNotebook* gtkobj() const { return GTK_NOTEBOOK(gtkobject); }
  static bool isGtkNotebook(Gtk_Object *checkcast);
#line 169 "notebook.gen_h"

};

#endif
