/***************************************************************************
 *   Copyright (C) 2006 Nicolas Hadacek <hadacek@kde.org>                  *
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 ***************************************************************************/
#ifndef CONTAINER_H
#define CONTAINER_H

#include <tqframe.h>
#include <tqwidgetstack.h>
#include <tqtabwidget.h>
#include <tqlayout.h>

class PopupButton;

//----------------------------------------------------------------------------
class Container : public TQFrame
{
TQ_OBJECT
  
public:
  enum Type { Flat, Sunken };
  Container(TQWidget *parent = 0, Type type = Flat);
  Container(TQWidgetStack *stack, uint index, Type type = Flat);
  Container(TQTabWidget *tabw, const TQString &title, Type type = Flat);
  void addWidget(TQWidget *widget, uint startRow, uint endRow, uint startCol, uint endCol, int alignment = 0);
  void addLayout(TQLayout *layout, uint startRow, uint endRow, uint startCol, uint endCol, int alignment = 0);
  uint numRows() const { return _gridLayout->numRows(); }
  uint numCols() const { return _gridLayout->numCols(); }
  void setFrame(Type type);
  void setMargin(uint margin) { _topLayout->setMargin(margin); }
  void setRowSpacing(uint row, uint spacing) { _gridLayout->setRowSpacing(row, spacing); }
  void setColSpacing(uint col, uint spacing) { _gridLayout->setColSpacing(col, spacing); }
  void setRowStretch(uint row, uint stretch) { _gridLayout->setRowStretch(row, stretch); }
  void setColStretch(uint col, uint stretch) { _gridLayout->setColStretch(col, stretch); }

private:
  Type         _type;
  TQGridLayout *_topLayout, *_gridLayout;

  void initLayout();
};

//----------------------------------------------------------------------------
class ButtonContainer : public Container
{
TQ_OBJECT
  
public:
  ButtonContainer(const TQString &title, TQWidget *parent);
  PopupButton &button() { return *_button; }

private:
  PopupButton *_button;
};

#endif
