Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008 #ifndef __SP_GUI_STRINGGADGET_H__
00009 #define __SP_GUI_STRINGGADGET_H__
00010
00011
00012 #include "Base/spStandard.hpp"
00013
00014 #ifdef SP_COMPILE_WITH_GUI
00015
00016
00017 #include "GUI/spGUIGadget.hpp"
00018
00019
00020 namespace sp
00021 {
00022 namespace gui
00023 {
00024
00025
00027 enum EStringFlags
00028 {
00029 GUIFLAG_READONLY = 0x00000001,
00030 GUIFLAG_UPPERCASE = 0x00000002,
00031 GUIFLAG_LOWERCASE = 0x00000004,
00032 GUIFLAG_PASSWORD = 0x00000008,
00033 GUIFLAG_NUMERIC = 0x00000010,
00034 GUIFLAG_NUMERICINT = 0x00000020,
00035 };
00036
00037
00042 class SP_EXPORT GUIStringGadget : public GUIGadget
00043 {
00044
00045 public:
00046
00047 GUIStringGadget();
00048 ~GUIStringGadget();
00049
00050 bool update();
00051 void draw();
00052
00053
00054
00055 inline void setPasteMode(bool isPasteMode)
00056 {
00057 isPasteMode_ = isPasteMode;
00058 }
00059 inline bool getPasteMode() const
00060 {
00061 return isPasteMode_;
00062 }
00063
00064 private:
00065
00066
00067
00068 enum EFocusUsages
00069 {
00070 USAGE_SELECT,
00071 };
00072
00073
00074
00075 void init();
00076
00077 void drawCursor(s32 PosHorz);
00078
00079 s32 getCursorPosition(s32 GlobalCursorPosHorz) const;
00080 void setCursorPosition(s32 LocalCursorPosHorz);
00081
00082 void getSelection(s32 &Start, s32 &End) const;
00083
00084 s32 getStringLen(u32 Pos) const;
00085 s32 getStringLen(u32 Start, u32 End) const;
00086
00087 void clampViewPos();
00088 void updateViewPos(bool isSingleClick);
00089 void updateViewPosCursor();
00090
00091 void updateInput();
00092 void updateText();
00093
00094 bool isValidChar(c8 Character) const;
00095
00096
00097
00098 io::stringc FinalText_;
00099 s32 CursorPos_, ViewPos_;
00100 s32 SelectionStart_, SelectionEnd_;
00101
00102 u64 CursorBlinkTime_;
00103 bool BlinkState_;
00104 bool isPasteMode_;
00105
00106 };
00107
00108
00109 }
00110
00111 }
00112
00113
00114 #endif
00115
00116 #endif
00117
00118
00119
00120