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

/* $Id: buttonbox.h,v 1.2 2003/06/17 16:37:40 pbd Exp $ */

/* buttonbox.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--/box.h>
#include <gtk/gtkbbox.h>
#include <gtk/gtkhbbox.h>
#include <gtk/gtkvbbox.h>

namespace Gtk {
class ButtonBox;
class ButtonBox_Class;
}
namespace Gtk { Gtk::ButtonBox *wrap (GtkButtonBox *o); }
namespace Gtk {
class VButtonBox;
class VButtonBox_Class;
}
namespace Gtk { Gtk::VButtonBox *wrap (GtkVButtonBox *o); }
namespace Gtk {
class HButtonBox;
class HButtonBox_Class;
}
namespace Gtk { Gtk::HButtonBox *wrap (GtkHButtonBox *o); }
namespace Gtk
{
//: Base class for {Gtk::HButtonBox} and {Gtk::VButtonBox}.
//- The primary purpose of this class is to keep track of the various properties of
//- {Gtk::HButtonBox} and {Gtk::VButtonBox} widgets.
class ButtonBox : public Box
{

public:
  typedef ButtonBox          CppObjectType;
  typedef ButtonBox_Class    CppClassType;
  typedef GtkButtonBox           BaseObjectType;
  typedef GtkButtonBoxClass      BaseClassType;

private:
  friend class ButtonBox_Class;
  static CppClassType button_box_class;

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

protected:
  void   initialize_class();
  explicit ButtonBox(GtkButtonBox *castitem);

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

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

  virtual ~ButtonBox();

private:

public:


// Per button box

  GtkButtonBoxStyle get_layout() const;


  //: Changes the way buttons are arranged in their container.
  //- layout_style: The new layout style. Can be one of {\enum GTK_BUTTONBOX_DEFAULT_STYLE},
  //- {\enum GTK_BUTTONBOX_SPREAD}, {\enum GTK_BUTTONBOX_EDGE}, {\enum GTK_BUTTONBOX_START},
  //- {\enum GTK_BUTTONBOX_END}


  void set_layout(GtkButtonBoxStyle layout_style);


  gint get_child_size_width() const;

  gint get_child_size_height() const;

  //: Sets a new default size for the children of a button box.
  //- min_width: A default width for buttons in the widget.
  //-
  //- min_height: A default height for buttons in the widget.


  void set_child_size(gint min_width,gint min_height);


  gint get_child_ipadding_x() const;

  gint get_child_ipadding_y() const;

  //: Changes the amount of internal padding used by all buttons in a button box.
  //- ipad_x: The horizontal padding that should be used by each button the widget.
  //-
  //- ipad_y: The vertical padding that should be used by each button the widget.



  void set_child_ipadding(gint ipad_x,gint ipad_y);


  gint get_spacing() const;

  //: Sets the amount of spacing between buttons in a button box.
  //- spacing: The number of pixels of spacing.

  void set_spacing(gint spacing);

  // This is our own.
  void set_layout_spacing(GtkButtonBoxStyle layout,
			  gint spacing);



// Global defaults  (layout and spacing in derived classes)

  //:Retrieves the default minimum width for all buttons.
  gint get_child_size_default_width() const;
  //:Retrieves the default minimum height for all buttons.
  gint get_child_size_default_height() const;
  //:Sets the default size of child buttons.
  //- min_width: Minimum default width for child buttons.
  //-
  //- min_height: Minimum default height for child buttons.



  static void set_child_size_default(gint min_width,gint min_height);


  //: This function gets the default amount of horizontal padding.
  //- The internal padding of a button is the amount of space between the outside of the button and the widget it contains.
  gint get_child_ipadding_default_x() const;
  //: This function gets the default amount of vertical padding.
  //- The internal padding of a button is the amount of space between the outside of the button and the widget it contains.
  gint get_child_ipadding_default_y() const;



  static void set_child_ipadding_default(gint ipad_x,gint ipad_y);

public:

protected:
  // impl functions

};


//: A container for arranging buttons vertically.
//- A button box should be used to provide a consistent layout of buttons throughout your application.
//- There is one default layout and a default spacing value that are persistant across all VButtonBox widgets.
//-
//- The layout/spacing can then be altered by the programmer, or if desired, by the user to alter the
//- 'feel' of a program to a small degree.
class VButtonBox : public ButtonBox {

public:
  typedef VButtonBox          CppObjectType;
  typedef VButtonBox_Class    CppClassType;
  typedef GtkVButtonBox           BaseObjectType;
  typedef GtkVButtonBoxClass      BaseClassType;

private:
  friend class VButtonBox_Class;
  static CppClassType vbutton_box_class;

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

protected:
  void   initialize_class();
  explicit VButtonBox(GtkVButtonBox *castitem);

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

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

  virtual ~VButtonBox();

private:

public:


  // GtkButtonBoxStyle layout argument can have the following values:
  // <ul><li>GTK_BUTTONBOX_DEFAULT_STYLE
  // <li> GTK_BUTTONBOX_SPREAD
  // <li>GTK_BUTTONBOX_EDGE
  // <li> GTK_BUTTONBOX_START
  // </ul>
  VButtonBox(GtkButtonBoxStyle layout = GTK_BUTTONBOX_DEFAULT_STYLE,
		 gint spacing = GTK_BUTTONBOX_DEFAULT);



  //: Retrieves the current default spacing for vertical button boxes.
  //- This is the number of pixels to be placed between the buttons when they are arranged.
  //- {\var Returns}: The default number of pixels between buttons.

  static gint get_spacing_default();

  //: Retrieves the current layout used to arrange buttons in button box widgets.
  //- {\var Returns}: The current GtkButtonBoxStyle.

  static GtkButtonBoxStyle get_layout_default();

  //: Changes the default spacing that is placed between widgets in an vertical button box.
  //- {\var spacing}: An integer value.

  static void set_spacing_default(gint spacing);

  //: Sets a new layout mode that will be used by all button boxes.
  //- {\var layout}: A new {\type GtkButtonBoxStyle}. This is one of:
  //- {\enum   GTK_BUTTONBOX_DEFAULT_STYLE}, {\enum GTK_BUTTONBOX_SPREAD},
  //- {\enum GTK_BUTTONBOX_EDGE}, {\enum GTK_BUTTONBOX_START}, or
  //- {\enum GTK_BUTTONBOX_END}.

  static void set_layout_default(GtkButtonBoxStyle layout);

public:

protected:
  // impl functions

};

//: A container for arranging buttons horizontally.
//- A button box should be used to provide a consistent layout of buttons
//- throughout your application. There is one default layout and a default
//- spacing value that are persistant across all HButtonBox widgets.
//-
//- The layout/spacing can then be altered by the programmer, or if desired,
//- by the user to alter the 'feel' of a program to a small degree.
class HButtonBox : public ButtonBox {

public:
  typedef HButtonBox          CppObjectType;
  typedef HButtonBox_Class    CppClassType;
  typedef GtkHButtonBox           BaseObjectType;
  typedef GtkHButtonBoxClass      BaseClassType;

private:
  friend class HButtonBox_Class;
  static CppClassType hbutton_box_class;

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

protected:
  void   initialize_class();
  explicit HButtonBox(GtkHButtonBox *castitem);

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

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

  virtual ~HButtonBox();

private:

public:


  // see <a href="Gtk_VButtonBox.html">VButtonBox</a>
  //: Constructor.
  //- layout: The way in which buttons will fit into the box. One of:
  //- {\enum GTK_BUTTONBOX_DEFAULT_STYLE}, {\enum GTK_BUTTONBOX_SPREAD},
  //- {\enum GTK_BUTTONBOX_EDGE}, {\enum GTK_BUTTONBOX_START},
  //- {\enum GTK_BUTTONBOX_END}
  //-
  //- spacing: The number of pixels between widgets.
  HButtonBox(GtkButtonBoxStyle layout = GTK_BUTTONBOX_DEFAULT_STYLE,
		 gint spacing = GTK_BUTTONBOX_DEFAULT);



  //: Retrieves the current default spacing for horizontal button boxes.
  //- This is the number of pixels to be placed between the buttons when they are arranged.
  //-
  //- Returns: The default number of pixels between buttons.

  static gint get_spacing_default();

  //: Retrieves the current layout used to arrange buttons in button box widgets.
  //- Returns: The current {GtkButtonBoxStyle}.

  static GtkButtonBoxStyle get_layout_default();

  //: Changes the default spacing that is placed between widgets in an horizontal button box.
  //- spacing: an integer value.

  static void set_spacing_default(gint spacing);

  //: Sets a new layout mode that will be used by all button boxes.
  //- layout: A new GtkButtonBoxStyle.

  static void set_layout_default(GtkButtonBoxStyle layout);

public:

protected:
  // impl functions

};


}


#endif
