5 #ifndef __uieditcontroller__ 6 #define __uieditcontroller__ 8 #include "../uidescription.h" 10 #if VSTGUI_LIVE_EDITING 12 #include "../iviewcreator.h" 13 #include "../icontroller.h" 14 #include "../uidescriptionlistener.h" 16 #include "../../lib/csplitview.h" 17 #include "../../lib/cframe.h" 25 class UITemplateController;
26 class UIEditMenuController;
27 class UIGridController;
28 class UIZoomSettingController;
29 class GenericStringListDataBrowserSource;
30 class CCommandMenuItem;
33 class UIEditController :
public CBaseObject,
public IController,
public IContextMenuController,
public ISplitViewController,
public ISplitViewSeparatorDrawer,
public IActionPerformer,
public IKeyboardHook,
public UIDescriptionListenerAdapter
36 UIEditController (UIDescription* description);
38 CView* createEditView ();
39 UIEditMenuController* getMenuController ()
const {
return menuController; }
40 UIUndoManager* getUndoManager ()
const {
return undoManager; }
41 const std::string& getEditTemplateName ()
const {
return editTemplateName; }
42 UIAttributes* getSettings ();
43 int32_t getSaveOptions ();
45 void onZoomChanged (
double zoom);
47 void addSelectionToCurrentView (UISelection* selection);
49 static SharedPointer<UIDescription> getEditorDescription ();
50 static void setupDataSource (GenericStringListDataBrowserSource* source);
51 static bool std__stringCompare (
const std::string* lhs,
const std::string* rhs);
52 static const UTF8StringPtr kEncodeBitmapsSettingsKey;
53 static const UTF8StringPtr kWriteWindowsRCFileSettingsKey;
55 ~UIEditController ()
override;
57 static void resetScrollViewOffsets (CViewContainer* view);
59 int32_t getSplitViewIndex (CSplitView* splitView);
60 void setDirty (
bool state);
62 void valueChanged (CControl* pControl)
override;
63 CView* createView (
const UIAttributes& attributes,
const IUIDescription* description)
override;
64 CView* verifyView (CView* view,
const UIAttributes& attributes,
const IUIDescription* description)
override;
65 IController* createSubController (UTF8StringPtr name,
const IUIDescription* description)
override;
67 CMessageResult notify (CBaseObject* sender, IdStringPtr message)
override;
70 void appendContextMenuItems (COptionMenu& contextMenu,
const CPoint& where)
override;
73 bool getSplitViewSizeConstraint (int32_t index, CCoord& minSize, CCoord& maxSize, CSplitView* splitView)
override;
74 ISplitViewSeparatorDrawer* getSplitViewSeparatorDrawer (CSplitView* splitView)
override;
75 bool storeViewSize (int32_t index,
const CCoord& size, CSplitView* splitView)
override;
76 bool restoreViewSize (int32_t index, CCoord& size, CSplitView* splitView)
override;
79 void drawSplitViewSeparator (CDrawContext* context,
const CRect& size, int32_t flags, int32_t index, CSplitView* splitView)
override;
82 void performAction (IAction* action)
override;
83 void performColorChange (UTF8StringPtr colorName,
const CColor& newColor,
bool remove =
false)
override;
84 void performTagChange (UTF8StringPtr tagName, UTF8StringPtr tagString,
bool remove =
false)
override;
85 void performBitmapChange (UTF8StringPtr bitmapName, UTF8StringPtr bitmapPath,
bool remove =
false)
override;
86 void performGradientChange (UTF8StringPtr gradientName, CGradient* newGradient,
bool remove =
false)
override;
87 void performFontChange (UTF8StringPtr fontName, CFontRef newFont,
bool remove =
false)
override;
88 void performColorNameChange (UTF8StringPtr oldName, UTF8StringPtr newName)
override;
89 void performTagNameChange (UTF8StringPtr oldName, UTF8StringPtr newName)
override;
90 void performFontNameChange (UTF8StringPtr oldName, UTF8StringPtr newName)
override;
91 void performGradientNameChange (UTF8StringPtr oldName, UTF8StringPtr newName)
override;
92 void performBitmapNameChange (UTF8StringPtr oldName, UTF8StringPtr newName)
override;
93 void performBitmapNinePartTiledChange (UTF8StringPtr bitmapName,
const CRect* offsets)
override;
94 void performBitmapFiltersChange (UTF8StringPtr bitmapName,
const std::list<SharedPointer<UIAttributes> >& filterDescription)
override;
95 void performAlternativeFontChange (UTF8StringPtr fontName, UTF8StringPtr newAlternativeFonts)
override;
97 void beginLiveColorChange (UTF8StringPtr colorName)
override;
98 void performLiveColorChange (UTF8StringPtr colorName,
const CColor& newColor)
override;
99 void endLiveColorChange (UTF8StringPtr colorName)
override;
101 void performTemplateNameChange (UTF8StringPtr oldName, UTF8StringPtr newName)
override;
102 void performCreateNewTemplate (UTF8StringPtr name, UTF8StringPtr baseViewClassName)
override;
103 void performDeleteTemplate (UTF8StringPtr name)
override;
104 void performDuplicateTemplate (UTF8StringPtr name, UTF8StringPtr dupName)
override;
106 void onTemplateCreation (UTF8StringPtr name, CView* view)
override;
107 void onTemplateNameChange (UTF8StringPtr oldName, UTF8StringPtr newName)
override;
109 void beginGroupAction (UTF8StringPtr name)
override;
110 void finishGroupAction ()
override;
113 int32_t onKeyDown (
const VstKeyCode& code, CFrame* frame)
override;
114 int32_t onKeyUp (
const VstKeyCode& code, CFrame* frame)
override;
116 SharedPointer<UIDescription> editDescription;
117 SharedPointer<UIDescription> editorDesc;
118 SharedPointer<UISelection> selection;
119 SharedPointer<UIUndoManager> undoManager;
120 SharedPointer<UIGridController> gridController;
121 UIEditView* editView;
122 SharedPointer<UITemplateController> templateController;
123 SharedPointer<UIEditMenuController> menuController;
124 SharedPointer<UIZoomSettingController> zoomSettingController;
125 SharedPointer<CControl> enableEditingControl;
126 SharedPointer<CControl> notSavedControl;
127 SharedPointer<CControl> tabSwitchControl;
129 std::string editTemplateName;
130 std::list<SharedPointer<CSplitView> > splitViews;
136 SharedPointer<CView> view;
138 Template (
const std::string& n, CView* v) : name (n), view (v) {}
139 Template (
const Template& c) : name (c.name), view (c.view) {}
140 bool operator==(
const Template& t) {
return name == t.name && view == t.view; }
141 bool operator==(
const std::string& n) {
return name == n; }
142 Template& operator=(
const Template& t) { name = t.name; view = t.view;
return *
this; }
143 Template (Template&& t) noexcept { *
this = std::move (t); }
144 Template& operator=(Template&& t) noexcept { name = std::move (t.name); view = std::move (t.view);
return *
this; }
146 void updateTemplate (UTF8StringPtr name);
147 void updateTemplate (
const std::vector<Template>::const_iterator& it);
148 void onTemplatesChanged ();
149 void getTemplateViews (std::list<CView*>& views)
const;
151 std::vector<Template> templates;
153 void beforeUIDescSave (UIDescription* desc)
override;
154 void onUIDescTemplateChanged (UIDescription* desc)
override;
155 bool doUIDescTemplateUpdate (UIDescription* desc, UTF8StringPtr name)
override;
158 void onTemplateSelectionChanged ();
159 CMessageResult validateMenuItem (CCommandMenuItem* item);
160 CMessageResult onMenuItemSelection (CCommandMenuItem* item);
161 void doCopy (
bool cut =
false);
163 void showTemplateSettings ();
164 void showFocusSettings ();
165 bool doSelectionMove (
const UTF8String& commandName,
bool useGrid)
const;
166 bool doSelectionSize (
const UTF8String& commandName,
bool useGrid)
const;
167 bool doZOrderAction (
bool lower);
168 void doSelectAllChildren ();
170 void onUndoManagerChanged ();
171 template<
typename NameChangeAction, IViewCreator::AttrType attrType>
void performNameChange (UTF8StringPtr oldName, UTF8StringPtr newName, IdStringPtr groupActionName);
173 std::string onlyTemplateToUpdateName;
178 #endif // VSTGUI_LIVE_EDITING 180 #endif // __uieditcontroller__ Definition: vstkeycode.h:12
Definition: customcontrols.cpp:8