/************************************************************************* Initialise the Window based object ready for use. *************************************************************************/ void MultiLineEditbox::initialise(void) { // create the component sub-widgets d_vertScrollbar = createVertScrollbar(getName() + "__auto_vscrollbar__"); d_horzScrollbar = createHorzScrollbar(getName() + "__auto_hscrollbar__"); addChildWindow(d_vertScrollbar); addChildWindow(d_horzScrollbar); d_vertScrollbar->subscribeEvent(Scrollbar::EventScrollPositionChanged, Event::Subscriber(&MultiLineEditbox::handle_scrollChange, this)); d_horzScrollbar->subscribeEvent(Scrollbar::EventScrollPositionChanged, Event::Subscriber(&MultiLineEditbox::handle_scrollChange, this)); formatText(); performChildWindowLayout(); }
/************************************************************************* Initialise the Window based object ready for use. *************************************************************************/ void Tree::initialise(void) { // get WidgetLookFeel for the assigned look. const WidgetLookFeel &wlf = WidgetLookManager::getSingleton().getWidgetLook(d_lookName); const ImagerySection &tempOpenImagery = wlf.getImagerySection("OpenTreeButton"); const ImagerySection &tempCloseImagery = wlf.getImagerySection("CloseTreeButton"); d_openButtonImagery = &tempOpenImagery; d_closeButtonImagery = &tempCloseImagery; // create the component sub-widgets d_vertScrollbar = createVertScrollbar("__auto_vscrollbar__"); d_horzScrollbar = createHorzScrollbar("__auto_hscrollbar__"); addChild(d_vertScrollbar); addChild(d_horzScrollbar); d_vertScrollbar->subscribeEvent(Scrollbar::EventScrollPositionChanged, Event::Subscriber(&Tree::handle_scrollChange, this)); d_horzScrollbar->subscribeEvent(Scrollbar::EventScrollPositionChanged, Event::Subscriber(&Tree::handle_scrollChange, this)); configureScrollbars(); performChildWindowLayout(); }
/************************************************************************* display required integrated scroll bars according to current state of the tree and update their values. *************************************************************************/ void Tree::configureScrollbars(void) { Rectf renderArea(getTreeRenderArea()); //This is becuase CEGUI IS GAY! and fires events before the item is initialized if(!d_vertScrollbar) d_vertScrollbar = createVertScrollbar("__auto_vscrollbar__"); if(!d_horzScrollbar) d_horzScrollbar = createHorzScrollbar("__auto_hscrollbar__"); float totalHeight = getTotalItemsHeight(); float widestItem = getWidestItemWidth() + 20; // // First show or hide the scroll bars as needed (or requested) // // show or hide vertical scroll bar as required (or as specified by option) if ((totalHeight > renderArea.getHeight()) || d_forceVertScroll) { d_vertScrollbar->show(); renderArea.d_max.d_x -= d_vertScrollbar->getWidth().d_offset + d_vertScrollbar->getXPosition().d_offset; // show or hide horizontal scroll bar as required (or as specified by option) if ((widestItem > renderArea.getWidth()) || d_forceHorzScroll) { d_horzScrollbar->show(); renderArea.d_max.d_y -= d_horzScrollbar->getHeight().d_offset; } else { d_horzScrollbar->hide(); d_horzScrollbar->setScrollPosition(0); } } else { // show or hide horizontal scroll bar as required (or as specified by option) if ((widestItem > renderArea.getWidth()) || d_forceHorzScroll) { d_horzScrollbar->show(); renderArea.d_max.d_y -= d_vertScrollbar->getHeight().d_offset; // show or hide vertical scroll bar as required (or as specified by option) if ((totalHeight > renderArea.getHeight()) || d_forceVertScroll) { d_vertScrollbar->show(); // renderArea.d_right -= d_vertScrollbar->getAbsoluteWidth(); renderArea.d_max.d_x -= d_vertScrollbar->getWidth().d_offset; } else { d_vertScrollbar->hide(); d_vertScrollbar->setScrollPosition(0); } } else { d_vertScrollbar->hide(); d_vertScrollbar->setScrollPosition(0); d_horzScrollbar->hide(); d_horzScrollbar->setScrollPosition(0); } } // // Set up scroll bar values // float itemHeight; if (!d_listItems.empty()) itemHeight = d_listItems[0]->getPixelSize().d_height; else itemHeight = 10; d_vertScrollbar->setDocumentSize(totalHeight); d_vertScrollbar->setPageSize(renderArea.getHeight()); d_vertScrollbar->setStepSize(ceguimax(1.0f, renderArea.getHeight() / itemHeight)); d_vertScrollbar->setScrollPosition(d_vertScrollbar->getScrollPosition()); d_horzScrollbar->setDocumentSize(widestItem + d_vertScrollbar->getWidth().d_offset); // d_horzScrollbar->setDocumentSize(widestItem + d_vertScrollbar->getAbsoluteWidth()); d_horzScrollbar->setPageSize(renderArea.getWidth()); d_horzScrollbar->setStepSize(ceguimax(1.0f, renderArea.getWidth() / HORIZONTAL_STEP_SIZE_DIVISOR)); d_horzScrollbar->setScrollPosition(d_horzScrollbar->getScrollPosition()); }