diff options
Diffstat (limited to 'src/guiFormSpecMenu.h')
-rw-r--r-- | src/guiFormSpecMenu.h | 54 |
1 files changed, 40 insertions, 14 deletions
diff --git a/src/guiFormSpecMenu.h b/src/guiFormSpecMenu.h index 48cb5c553..2ba47f7ff 100644 --- a/src/guiFormSpecMenu.h +++ b/src/guiFormSpecMenu.h @@ -28,7 +28,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "inventorymanager.h" #include "modalMenu.h" #include "guiTable.h" -#include "clientserver.h" +#include "network/networkprotocol.h" class IGameDef; class InventoryManager; @@ -56,7 +56,7 @@ struct TextDest virtual ~TextDest() {}; // This is deprecated I guess? -celeron55 virtual void gotText(std::wstring text){} - virtual void gotText(std::map<std::string, std::string> fields) = 0; + virtual void gotText(const StringMap &fields) = 0; virtual void setFormName(std::string formname) { m_formname = formname;}; @@ -121,6 +121,22 @@ class GUIFormSpecMenu : public GUIModalMenu s32 start_item_i; }; + struct ListRingSpec + { + ListRingSpec() + { + } + ListRingSpec(const InventoryLocation &a_inventoryloc, + const std::string &a_listname): + inventoryloc(a_inventoryloc), + listname(a_listname) + { + } + + InventoryLocation inventoryloc; + std::string listname; + }; + struct ImageDrawSpec { ImageDrawSpec() @@ -152,7 +168,7 @@ class GUIFormSpecMenu : public GUIModalMenu FieldSpec() { } - FieldSpec(const std::wstring &name, const std::wstring &label, + FieldSpec(const std::string &name, const std::wstring &label, const std::wstring &fdeflt, int id) : fname(name), flabel(label), @@ -163,7 +179,7 @@ class GUIFormSpecMenu : public GUIModalMenu ftype = f_Unknown; is_exit = false; } - std::wstring fname; + std::string fname; std::wstring flabel; std::wstring fdefault; int fid; @@ -210,8 +226,8 @@ public: ISimpleTextureSource *tsrc, IFormSource* fs_src, TextDest* txt_dst, - Client* client - ); + Client* client, + bool remap_dbl_click = true); ~GUIFormSpecMenu(); @@ -255,7 +271,7 @@ public: void removeChildren(); void setInitialFocus(); - void setFocus(std::wstring elementname) + void setFocus(std::string &elementname) { m_focused_element = elementname; } @@ -278,7 +294,7 @@ public: bool doPause; bool pausesGame() { return doPause; } - GUITable* getTable(std::wstring tablename); + GUITable* getTable(const std::string &tablename); #ifdef __ANDROID__ bool getAndroidUIInput(); @@ -306,6 +322,7 @@ protected: std::vector<ListDrawSpec> m_inventorylists; + std::vector<ListRingSpec> m_inventory_rings; std::vector<ImageDrawSpec> m_backgrounds; std::vector<ImageDrawSpec> m_images; std::vector<ImageDrawSpec> m_itemimages; @@ -313,7 +330,7 @@ protected: std::vector<FieldSpec> m_fields; std::vector<std::pair<FieldSpec,GUITable*> > m_tables; std::vector<std::pair<FieldSpec,gui::IGUICheckBox*> > m_checkboxes; - std::map<std::wstring, TooltipSpec> m_tooltips; + std::map<std::string, TooltipSpec> m_tooltips; std::vector<std::pair<FieldSpec,gui::IGUIScrollBar*> > m_scrollbars; ItemSpec *m_selected_item; @@ -355,7 +372,7 @@ private: IFormSource *m_form_src; TextDest *m_text_dst; unsigned int m_formspec_version; - std::wstring m_focused_element; + std::string m_focused_element; typedef struct { bool explicit_size; @@ -364,11 +381,11 @@ private: core::rect<s32> rect; v2s32 basepos; v2u32 screensize; - std::wstring focused_fieldname; + std::string focused_fieldname; GUITable::TableOptions table_options; GUITable::TableColumns table_columns; // used to restore table selection/scroll/treeview state - std::map<std::wstring,GUITable::DynamicData> table_dyndata; + std::map<std::string, GUITable::DynamicData> table_dyndata; } parserData; typedef struct { @@ -384,6 +401,7 @@ private: void parseSize(parserData* data,std::string element); void parseList(parserData* data,std::string element); + void parseListRing(parserData* data,std::string element); void parseCheckbox(parserData* data,std::string element); void parseImage(parserData* data,std::string element); void parseItemImage(parserData* data,std::string element); @@ -430,12 +448,20 @@ private: gui::IGUIFont *m_font; std::wstring getLabelByID(s32 id); - std::wstring getNameByID(s32 id); + std::string getNameByID(s32 id); #ifdef __ANDROID__ v2s32 m_down_pos; - std::wstring m_JavaDialogFieldName; + std::string m_JavaDialogFieldName; #endif + /* If true, remap a double-click (or double-tap) action to ESC. This is so + * that, for example, Android users can double-tap to close a formspec. + * + * This value can (currently) only be set by the class constructor + * and the default value for the setting is true. + */ + bool m_remap_dbl_click; + }; class FormspecFormSource: public IFormSource |