From b650e86e740afd1a0f935b2657f47ca9b6345e2b Mon Sep 17 00:00:00 2001 From: mfranz Date: Thu, 23 Mar 2006 23:00:31 +0000 Subject: [PATCH] - implement setSize(): We can't just use puObject::setSize() -- we do, of course, have to re-layout all sub-widgets on resizing - make slider size configurable, like it's done for the close relative puLargeInput --- src/GUI/puList.cxx | 25 ++++++++++++++++++++----- src/GUI/puList.hxx | 6 ++++-- 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/src/GUI/puList.cxx b/src/GUI/puList.cxx index fb4b33bee..d5b707cdb 100644 --- a/src/GUI/puList.cxx +++ b/src/GUI/puList.cxx @@ -61,15 +61,17 @@ handle_arrow (puObject * arrow) slider->setValue(1.0f - float(index)/list_box->getNumItems()); } -puList::puList (int x, int y, int w, int h) - : puGroup(x, y) +puList::puList (int x, int y, int w, int h, int sl_width) + : puGroup(x, y), + sw(sl_width) { type |= PUCLASS_LIST; init(w, h); } -puList::puList (int x, int y, int w, int h, char ** contents) - : puGroup(x, y) +puList::puList (int x, int y, int w, int h, char ** contents, int sl_width) + : puGroup(x, y), + sw(sl_width) { type |= PUCLASS_LIST; init(w, h); @@ -103,7 +105,6 @@ puList::getListIntegerValue() void puList::init (int w, int h) { - const int sw = 20; _frame = new puFrame(0, 0, w, h); _list_box = new puListBox(0, 0, w-sw, h); @@ -143,4 +144,18 @@ puList::setColour (int which, float r, float g, float b, float a) _list_box->setColour(which, r, g, b, a); } +void +puList::setSize (int w, int h) +{ + puObject::setSize(w, h); + _frame->setSize(w, h); + _list_box->setSize(w-sw, h); + + _slider->setPosition(w-sw, sw); + _slider->setSize(sw, h-2*sw); + + _down_arrow->setPosition(w-sw, 0); + _up_arrow->setPosition(w-sw, h-sw); +} + // end of puList.cxx diff --git a/src/GUI/puList.hxx b/src/GUI/puList.hxx index 414a097a5..10d5ec52f 100644 --- a/src/GUI/puList.hxx +++ b/src/GUI/puList.hxx @@ -19,8 +19,8 @@ class puList : public puGroup { public: - puList (int x, int y, int w, int h); - puList (int x, int y, int w, int h, char ** contents); + puList (int x, int y, int w, int h, int sl_width = 20); + puList (int x, int y, int w, int h, char ** contents, int sl_width = 20); virtual ~puList (); virtual void newList (char ** contents); @@ -29,12 +29,14 @@ class puList : public puGroup virtual int getListIntegerValue(); virtual void setColourScheme (float r, float g, float b, float a); virtual void setColour (int which, float r, float g, float b, float a); + virtual void setSize (int w, int h); protected: virtual void init (int w, int h); private: + int sw; // slider width char ** _contents; puFrame * _frame; puListBox * _list_box;