LLButton* LLSideTray::createButton (const std::string& name,const std::string& image,const std::string& tooltip, LLUICtrl::commit_callback_t callback) { static LLSideTray::Params sidetray_params(LLUICtrlFactory::getDefaultParams<LLSideTray>()); LLButton::Params bparams; LLRect rect; rect.setOriginAndSize(0, 0, sidetray_params.default_button_width, sidetray_params.default_button_height); bparams.name(name); bparams.follows.flags (FOLLOWS_LEFT | FOLLOWS_TOP); bparams.rect (rect); bparams.tab_stop(false); bparams.image_unselected.name(sidetray_params.tab_btn_image_normal); bparams.image_selected.name(sidetray_params.tab_btn_image_selected); bparams.image_disabled.name(sidetray_params.tab_btn_image_normal); bparams.image_disabled_selected.name(sidetray_params.tab_btn_image_selected); LLButton* button = LLUICtrlFactory::create<LLButton> (bparams); button->setLabel(name); button->setClickedCallback(callback); button->setToolTip(tooltip); if(image.length()) { button->setImageOverlay(image); } mButtonsPanel->addChildInBack(button); return button; }
LLCheckBoxCtrl::LLCheckBoxCtrl(const LLCheckBoxCtrl::Params& p) : LLUICtrl(p), mTextEnabledColor(p.label_text.text_color()), mTextDisabledColor(p.label_text.text_readonly_color()), mFont(p.font()) { mViewModel->setValue(LLSD(p.initial_value)); mViewModel->resetDirty(); static LLUICachedControl<S32> llcheckboxctrl_spacing ("UICheckboxctrlSpacing", 0); static LLUICachedControl<S32> llcheckboxctrl_hpad ("UICheckboxctrlHPad", 0); static LLUICachedControl<S32> llcheckboxctrl_vpad ("UICheckboxctrlVPad", 0); static LLUICachedControl<S32> llcheckboxctrl_btn_size ("UICheckboxctrlBtnSize", 0); // must be big enough to hold all children setUseBoundingRect(TRUE); // *HACK Get rid of this with SL-55508... // this allows blank check boxes and radio boxes for now std::string local_label = p.label; if(local_label.empty()) { local_label = " "; } LLTextBox::Params tbparams = p.label_text; tbparams.initial_value(local_label); if (p.font.isProvided()) { tbparams.font(p.font); } mLabel = LLUICtrlFactory::create<LLTextBox> (tbparams); mLabel->reshapeToFitText(); addChild(mLabel); LLRect label_rect = mLabel->getRect(); // Button // Note: button cover the label by extending all the way to the right. LLRect btn_rect = p.check_button.rect(); btn_rect.setOriginAndSize( btn_rect.mLeft, btn_rect.mBottom, llmax(btn_rect.mRight, label_rect.mRight - btn_rect.mLeft), llmax( label_rect.getHeight(), btn_rect.mTop)); std::string active_true_id, active_false_id; std::string inactive_true_id, inactive_false_id; LLButton::Params params = p.check_button; params.rect(btn_rect); //params.control_name(p.control_name); params.click_callback.function(boost::bind(&LLCheckBoxCtrl::onCommit, this)); params.commit_on_return(false); // Checkboxes only allow boolean initial values, but buttons can // take any LLSD. params.initial_value(LLSD(p.initial_value)); params.follows.flags(FOLLOWS_LEFT | FOLLOWS_BOTTOM); mButton = LLUICtrlFactory::create<LLButton>(params); addChild(mButton); }
LLCheckBoxCtrl::LLCheckBoxCtrl(const LLCheckBoxCtrl::Params& p) : LLUICtrl(p), mTextEnabledColor(p.text_enabled_color()), mTextDisabledColor(p.text_disabled_color()), mFont(p.font()) { mViewModel->setValue(LLSD(p.initial_value)); mViewModel->resetDirty(); static LLUICachedControl<S32> llcheckboxctrl_spacing ("UICheckboxctrlSpacing", 0); static LLUICachedControl<S32> llcheckboxctrl_hpad ("UICheckboxctrlHPad", 0); static LLUICachedControl<S32> llcheckboxctrl_vpad ("UICheckboxctrlVPad", 0); static LLUICachedControl<S32> llcheckboxctrl_btn_size ("UICheckboxctrlBtnSize", 0); // must be big enough to hold all children setUseBoundingRect(TRUE); // Label (add a little space to make sure text actually renders) const S32 FUDGE = 10; S32 text_width = mFont->getWidth( p.label ) + FUDGE; S32 text_height = llround(mFont->getLineHeight()); LLRect label_rect; label_rect.setOriginAndSize( llcheckboxctrl_hpad + llcheckboxctrl_btn_size + llcheckboxctrl_spacing, llcheckboxctrl_vpad + 1, // padding to get better alignment text_width + llcheckboxctrl_hpad, text_height ); // *HACK Get rid of this with SL-55508... // this allows blank check boxes and radio boxes for now std::string local_label = p.label; if(local_label.empty()) { local_label = " "; } LLTextBox::Params tbparams = p.label_text; tbparams.rect(label_rect); tbparams.initial_value(local_label); if (p.font.isProvided()) { tbparams.font(p.font); } tbparams.text_color( p.enabled() ? p.text_enabled_color() : p.text_disabled_color() ); mLabel = LLUICtrlFactory::create<LLTextBox> (tbparams); addChild(mLabel); // Button // Note: button cover the label by extending all the way to the right. LLRect btn_rect; btn_rect.setOriginAndSize( llcheckboxctrl_hpad, llcheckboxctrl_vpad, llcheckboxctrl_btn_size + llcheckboxctrl_spacing + text_width + llcheckboxctrl_hpad, llmax( text_height, llcheckboxctrl_btn_size() ) + llcheckboxctrl_vpad); std::string active_true_id, active_false_id; std::string inactive_true_id, inactive_false_id; LLButton::Params params = p.check_button; params.rect(btn_rect); //params.control_name(p.control_name); params.click_callback.function(boost::bind(&LLCheckBoxCtrl::onButtonPress, this, _2)); params.commit_on_return(false); // Checkboxes only allow boolean initial values, but buttons can // take any LLSD. params.initial_value(LLSD(p.initial_value)); params.follows.flags(FOLLOWS_LEFT | FOLLOWS_BOTTOM); mButton = LLUICtrlFactory::create<LLButton>(params); addChild(mButton); }
LLDebugVarMessageBox::LLDebugVarMessageBox(const std::string& title, EDebugVarType var_type, void *var) : LLFloater(LLSD()), mVarType(var_type), mVarData(var), mAnimate(FALSE) { setRect(LLRect(10,160,400,10)); LLSliderCtrl::Params slider_p; slider_p.label(title); slider_p.label_width(70); slider_p.text_width(40); slider_p.can_edit_text(true); slider_p.show_text(true); mSlider1 = NULL; mSlider2 = NULL; mSlider3 = NULL; switch(var_type) { case VAR_TYPE_F32: slider_p.name("slider 1"); slider_p.rect(LLRect(20,130,190,110)); slider_p.initial_value(*((F32*)var)); slider_p.min_value(-100.f); slider_p.max_value(100.f); slider_p.increment(0.1f); slider_p.decimal_digits(3); mSlider1 = LLUICtrlFactory::create<LLSliderCtrl>(slider_p); addChild(mSlider1); break; case VAR_TYPE_S32: slider_p.name("slider 1"); slider_p.rect(LLRect(20,100,190,80)); slider_p.initial_value((F32)*((S32*)var)); slider_p.min_value(-255.f); slider_p.max_value(255.f); slider_p.increment(1.f); slider_p.decimal_digits(0); mSlider1 = LLUICtrlFactory::create<LLSliderCtrl>(slider_p); addChild(mSlider1); break; case VAR_TYPE_VEC3: slider_p.name("slider 1"); slider_p.label("x: "); slider_p.rect(LLRect(20,130,190,110)); slider_p.initial_value(((LLVector3*)var)->mV[VX]); slider_p.min_value(-100.f); slider_p.max_value(100.f); slider_p.increment(0.1f); slider_p.decimal_digits(3); mSlider1 = LLUICtrlFactory::create<LLSliderCtrl>(slider_p); slider_p.name("slider 2"); slider_p.label("y: "); slider_p.rect(LLRect(20,100,190,80)); slider_p.initial_value(((LLVector3*)var)->mV[VY]); mSlider2 = LLUICtrlFactory::create<LLSliderCtrl>(slider_p); slider_p.name("slider 3"); slider_p.label("z: "); slider_p.rect(LLRect(20,70,190,50)); slider_p.initial_value(((LLVector3*)var)->mV[VZ]); mSlider2 = LLUICtrlFactory::create<LLSliderCtrl>(slider_p); addChild(mSlider1); addChild(mSlider2); addChild(mSlider3); break; default: llwarns << "Unhandled var type " << var_type << llendl; break; } LLButton::Params p; p.name(std::string("Animate")); p.label(std::string("Animate")); p.rect(LLRect(20, 45, 180, 25)); p.click_callback.function(boost::bind(&LLDebugVarMessageBox::onAnimateClicked, this, _2)); mAnimateButton = LLUICtrlFactory::create<LLButton>(p); addChild(mAnimateButton); LLTextBox::Params params; params.name("value"); params.initial_value(params.name()); params.rect(LLRect(20,20,190,0)); mText = LLUICtrlFactory::create<LLTextBox> (params); addChild(mText); //disable hitting enter closes dialog setDefaultBtn(); }