From 574bf11742c40203a4433c0b69264014b10b5a96 Mon Sep 17 00:00:00 2001 From: Stijn Buys Date: Sun, 12 Oct 2008 17:27:00 +0000 Subject: container widget --- src/ui/container.cc | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 src/ui/container.cc (limited to 'src/ui/container.cc') diff --git a/src/ui/container.cc b/src/ui/container.cc new file mode 100644 index 0000000..d544244 --- /dev/null +++ b/src/ui/container.cc @@ -0,0 +1,59 @@ +/* + ui/container.cc + This file is part of the Osirion project and is distributed under + the terms of the GNU General Public License version 2 +*/ + + +#include "ui/container.h" + +namespace ui +{ + +// TODO Container::direction +Container::Container(Widget *parent) : Window(parent) +{ + set_label("container"); + set_border(false); + + set_border(true); + set_background(true); + + container_childsize.assign(256, 48); + container_margin = 24; +} + +Container::~Container() +{ +} + +void Container::resize() +{ + float w = container_childsize.width() * 1.5f; + float h = children().size() * container_childsize.height() + (children().size()+1) * container_margin; + + set_size(w, h); + + const float x = container_childsize.width() * 0.25f; + float y = container_margin; + + // reposition all children within the container + for (Children::iterator it = children().begin(); it != children().end(); it++) { + Widget *w = (*it); + w->set_size(container_childsize); + w->set_location(x, y); + y += container_childsize.height() + container_margin; + } +} + +void Container::set_childsize(const float w, const float h) +{ + container_childsize.assign(w, h); +} + +void Container::set_margin(const float margin) +{ + container_margin = margin; +} + +} -- cgit v1.2.3