class EE::UI::Tools::UITabWidgetSplitter¶
#include <uitabwidgetsplitter.hpp> class UITabWidgetSplitter { public: // typedefs typedef std::function<bool(UIWidget*, UITabWidget::FocusTabBehavior, std::function<void()> onMsgBoxCloseCb)> TabTryCloseCallback; // classes class Client; // construction virtual ~UITabWidgetSplitter(); // methods static UITabWidgetSplitter* New(Client* client, UISceneNode* sceneNode); UITabWidget* createTabWidget(Node* parent); std::pair<UITab*, UIWidget*> createWidget(UIWidget* widget, const std::string& tabName, bool focus = true); std::pair<UITab*, UIWidget*> createWidgetInTabWidget(UITabWidget* tabWidget, UIWidget* widget, const std::string& tabName, bool focus = true); std::vector<std::pair<UITab*, UITabWidget*>> getTabFromOwnedWidgetId(const std::string& id); bool ownedWidgetExists(UIWidget* widget); bool removeTabWithOwnedWidgetId(const std::string& id, bool destroyOwnedNode = true, bool immediateClose = false); UITab* getTabFromWidget(UIWidget* widget) const; virtual bool tryTabClose(UIWidget* widget, UITabWidget::FocusTabBehavior focusTabBehavior, std::function<void()> onMsgBoxCloseCb = {}); virtual bool tryCloseAllTabs(UIWidget* widget, UITabWidget::FocusTabBehavior focusTabBehavior); virtual bool tryCloseOtherTabs(UIWidget* widget, UITabWidget::FocusTabBehavior focusTabBehavior); virtual bool tryCloseTabsToDirection(UIWidget* widget, UITabWidget::FocusTabBehavior focusTabBehavior, bool toTheRight); void closeTab(UIWidget* widget, UITabWidget::FocusTabBehavior focusTabBehavior); UISplitter* split(const SplitDirection& direction, UIWidget* widget); UITabWidget* splitTabWidget(SplitDirection direction, UITabWidget* tabWidget); void switchToTab(Int32 index); UITabWidget* findPreviousSplit(UIWidget* widget); void switchPreviousSplit(UIWidget* widget); UITabWidget* findNextSplit(UIWidget* widget); void switchNextSplit(UIWidget* widget); void setCurrentWidget(UIWidget* curWidget); void focusSomeWidget(Node* searchFrom = nullptr); UIWidget* getSomeWidget(); UITabWidget* tabWidgetFromWidget(UIWidget* widget) const; UISplitter* splitterFromWidget(UIWidget* widget) const; bool curWidgetExists() const; bool hasSplit() const; UIOrientation getMainSplitOrientation() const; UIWidget* getCurWidget() const; const std::vector<UITabWidget*>& getTabWidgets() const; UITabWidget* getFirstTabWidget() const; Node* getBaseLayout() const; UISceneNode* getUISceneNode() const; bool getHideTabBarOnSingleTab() const; void setHideTabBarOnSingleTab(bool hideTabBarOnSingleTab); void setHideTabBar(bool hideTabBar); bool getVisualSplitting() const; void setVisualSplitting(bool visualSplitting); Float getVisualSplitEdgePercent() const; void setVisualSplitEdgePercent(Float visualSplitEdgePercent); void setOnTabWidgetCreateCb(std::function<void(UITabWidget*)> cb); void closeSplitter(UISplitter* splitter); void addRemainingTabWidgets(Node* widget); void closeTabWidgets(UISplitter* splitter); bool checkWidgetExists(UIWidget*) const; bool isWidgetInAnyWidget(UIWidget*) const; void forEachWidget(std::function<void(UIWidget*)> run) const; void forEachWidgetStoppable(std::function<bool(UIWidget*)> run) const; void forEachWidgetClass(const std::string& className, std::function<void(UIWidget*)> run) const; void forEachWidgetClassStoppable(const std::string& className, std::function<bool(UIWidget*)> run) const; void forEachWidgetType(const UINodeType& nodeType, std::function<void(UIWidget*)> run) const; void forEachWidgetTypeStoppable(const UINodeType& nodeType, std::function<bool(UIWidget*)> run) const; void forEachTabWidget(std::function<void(UITabWidget*)> run) const; void forEachTabWidgetStoppable(std::function<bool(UITabWidget*)> run) const; void forEachTab(std::function<void(UITab*)> run) const; template <typename T> void registerSplitterCommands(T& t); void registerWidgetType(const std::string& type, const WidgetTypeCallback& cb); void unregisterWidgetType(const std::string& type); nlohmann::json serializeNode(Node* node) const; void unserializeNode(const nlohmann::json& j, UITabWidget* curTabWidget); nlohmann::json toJSON() const; void fromJSON(const nlohmann::json& j); void setTabTryCloseCallback(TabTryCloseCallback cb); void setCanCreateSplitFn(std::function<bool(SplitDirection direction, UIWidget*widget)> fn); };