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

/* $Id: dock.gen_h,v 1.8 2000/08/29 18:36:29 kenelson Exp $ */


/* dock.gen_h
 *
 * Copyright (C) 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--/container.h>
#include <libgnomeui/gnome-dock.h>

namespace Gnome {
class Dock;
class Dock_Class;
}
namespace Gtk { Gnome::Dock *wrap (GnomeDock *o); }
namespace Gnome
{

class DockItem;
class DockLayout;


//: Moveable Container
//- GnomeDock is a container widget designed to let users move around
//- widgets such as toolbars, menubars and so on.
//-
//- Every GnomeDock contains a widget called the "client area". On the
//- four sides of the client area, there are four "dock areas", which can
//- contain an arbitrary number of dockable widgets. All the dockable
//- widgets should be GnomeDockItem widgets; the GnomeDockItem
//- widget can in turn contain any kind of widget, and implements the
//- dragging functionality: every GnomeDockItem has a handle that users
//- can use to move them within the dock, or even move them outside it, so
//- that they become "floating items".
//-
//- Every "dock area" is implemented by means of zero or more "dock
//- bands": a dock band is a horizontal or vertical stripe containing one or
//- more dock items, and is implemented by the GnomeDockBand widget.
//- Items are ordered from top to bottom in vertical bands, and from left to
//- right in horizontal bands. Every dock item in a band is given an offset
//- value that defines the distance, in pixels, from the previous item in the
//- same band; if the item is first in the band, the offset defines the distance
//- from the start of the band.
//-
//- As a consequence, the position of an item in the dock can be specified
//- by means of the following values: a "placement" specifying what area is
//- being used (top, bottom, left, right), a "band number" specifying the
//- number of the band within the specified area, a "position" within the
//- band and a "offset" from the previous item in the same band.
class Dock : public Gtk::Container
{

public:
  typedef Dock          CppObjectType;
  typedef Dock_Class    CppClassType;
  typedef GnomeDock           BaseObjectType;
  typedef GnomeDockClass      BaseClassType;

private:
  friend class Dock_Class;
  static CppClassType dock_class;

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

protected:
  void   initialize_class();
  explicit Dock(GnomeDock *castitem);

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

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

  virtual ~Dock();

private:

public:
  Dock();





  void allow_floating_items(bool enable);

  void add_item(Gnome::DockItem& item,GnomeDockPlacement placement,guint band_num,gint position,guint offset,bool in_new_band);





  void add_floating_item(Gnome::DockItem& widget,gint x,gint y,GtkOrientation orientation);


  void set_client_area(Gtk::Widget& widget);

  Gnome::DockItem* get_item_by_name(const Gtk::string& name,GnomeDockPlacement& placement_return,guint& num_band_return,guint& band_position_return,guint& offset_return);


  Gtk::Widget* get_client_area();


  Gnome::DockLayout* get_layout();


  bool add_from_layout(Gnome::DockLayout& layout);

public:

  union
    {
      CppObjectType * dock_self;
      Gtk::ProxySignal0<void,CppObjectType,BaseObjectType,0> layout_changed;
    };

protected:
  // impl functions
    virtual void layout_changed_impl();

};



}


#endif
