llspinctrl.h
上传用户:king477883
上传日期:2021-03-01
资源大小:9553k
文件大小:4k
源码类别:

游戏引擎

开发平台:

C++ Builder

  1. /** 
  2.  * @file llspinctrl.h
  3.  * @brief Typical spinner with "up" and "down" arrow buttons.
  4.  *
  5.  * $LicenseInfo:firstyear=2002&license=viewergpl$
  6.  * 
  7.  * Copyright (c) 2002-2010, Linden Research, Inc.
  8.  * 
  9.  * Second Life Viewer Source Code
  10.  * The source code in this file ("Source Code") is provided by Linden Lab
  11.  * to you under the terms of the GNU General Public License, version 2.0
  12.  * ("GPL"), unless you have obtained a separate licensing agreement
  13.  * ("Other License"), formally executed by you and Linden Lab.  Terms of
  14.  * the GPL can be found in doc/GPL-license.txt in this distribution, or
  15.  * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
  16.  * 
  17.  * There are special exceptions to the terms and conditions of the GPL as
  18.  * it is applied to this Source Code. View the full text of the exception
  19.  * in the file doc/FLOSS-exception.txt in this software distribution, or
  20.  * online at
  21.  * http://secondlifegrid.net/programs/open_source/licensing/flossexception
  22.  * 
  23.  * By copying, modifying or distributing this software, you acknowledge
  24.  * that you have read and understood your obligations described above,
  25.  * and agree to abide by those obligations.
  26.  * 
  27.  * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
  28.  * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
  29.  * COMPLETENESS OR PERFORMANCE.
  30.  * $/LicenseInfo$
  31.  */
  32. #ifndef LL_LLSPINCTRL_H
  33. #define LL_LLSPINCTRL_H
  34. #include "stdtypes.h"
  35. #include "llbutton.h"
  36. #include "llf32uictrl.h"
  37. #include "v4color.h"
  38. #include "llrect.h"
  39. class LLSpinCtrl
  40. : public LLF32UICtrl
  41. {
  42. public:
  43. struct Params : public LLInitParam::Block<Params, LLF32UICtrl::Params>
  44. {
  45. Optional<S32> label_width;
  46. Optional<U32> decimal_digits;
  47. Optional<bool> allow_text_entry;
  48. Optional<LLUIColor> text_enabled_color;
  49. Optional<LLUIColor> text_disabled_color;
  50. Optional<LLButton::Params> up_button;
  51. Optional<LLButton::Params> down_button;
  52. Params();
  53. };
  54. protected:
  55. LLSpinCtrl(const Params&);
  56. friend class LLUICtrlFactory;
  57. public:
  58. virtual ~LLSpinCtrl() {} // Children all cleaned up by default view destructor.
  59. virtual void    forceSetValue(const LLSD& value ) ;
  60. virtual void setValue(const LLSD& value );
  61. F32 get() const { return getValueF32(); }
  62. void set(F32 value) { setValue(value); mInitialValue = value; }
  63. BOOL isMouseHeldDown() const;
  64. virtual void    setEnabled( BOOL b );
  65. virtual void setFocus( BOOL b );
  66. virtual void clear();
  67. virtual BOOL isDirty() const { return( getValueF32() != mInitialValue ); }
  68. virtual void    resetDirty() { mInitialValue = getValueF32(); }
  69. virtual void setPrecision(S32 precision);
  70. void setLabel(const LLStringExplicit& label);
  71. void setLabelColor(const LLColor4& c) { mTextEnabledColor = c; updateLabelColor(); }
  72. void setDisabledLabelColor(const LLColor4& c) { mTextDisabledColor = c; updateLabelColor();}
  73. void setAllowEdit(BOOL allow_edit);
  74. virtual void onTabInto();
  75. virtual void setTentative(BOOL b); // marks value as tentative
  76. virtual void onCommit(); // mark not tentative, then commit
  77. void  forceEditorCommit(); // for commit on external button
  78. virtual BOOL handleScrollWheel(S32 x,S32 y,S32 clicks);
  79. virtual BOOL handleKeyHere(KEY key, MASK mask);
  80. void onEditorCommit(const LLSD& data);
  81. static void onEditorGainFocus(LLFocusableElement* caller, void *userdata);
  82. static void onEditorChangeFocus(LLUICtrl* caller, S32 direction, void *userdata);
  83. void onUpBtn(const LLSD& data);
  84. void onDownBtn(const LLSD& data);
  85. private:
  86. void updateLabelColor();
  87. void updateEditor();
  88. void reportInvalidData();
  89. S32 mPrecision;
  90. class LLTextBox* mLabelBox;
  91. class LLLineEditor* mEditor;
  92. LLUIColor mTextEnabledColor;
  93. LLUIColor mTextDisabledColor;
  94. class LLButton* mUpBtn;
  95. class LLButton* mDownBtn;
  96. BOOL mbHasBeenSet;
  97. BOOL mAllowEdit;
  98. };
  99. #endif  // LL_LLSPINCTRL_H