ImagingTools Core SDK
ILayout.h
1// SPDX-License-Identifier: LGPL-2.1-or-later OR GPL-2.0-or-later OR GPL-3.0-or-later OR LicenseRef-ImtCore-Commercial
2#pragma once
3
4
5// Qt includes
6#include <QtCore/QByteArray>
7#include <QtCore/QList>
8
9// ACF includes
10#include <iser/ISerializable.h>
11
12
13namespace imtgui
14{
15
16
17class ILayout: virtual public iser::ISerializable
18{
19public:
20 typedef QList<int> SizeList;
21
22 enum LayoutType
23 {
24 LT_NONE = 0,
25 LT_VERTICAL_SPLITTER,
26 LT_HORIZONTAL_SPLITTER,
27 LT_USER_LAYOUT
28 };
29
30 I_DECLARE_ENUM(LayoutType,
31 LT_NONE,
32 LT_VERTICAL_SPLITTER,
33 LT_HORIZONTAL_SPLITTER,
34 LT_USER_LAYOUT);
35
36 enum AlignType
37 {
38 AT_LEFT = 0,
39 AT_RIGHT,
40 AT_H_CENTER
41 };
42
43 I_DECLARE_ENUM(AlignType, AT_LEFT, AT_RIGHT, AT_H_CENTER);
44
45 struct LayoutProperties
46 {
47 LayoutProperties()
48 {
49 isFixedLayout = true; isBorderEnabled = true; borderColor = QColor("#808080");
50 minWidth = minHeight = 0; maxWidth = maxHeight = 16777215;
51 leftMargin = rightMargin = topMargin = bottomMargin = 3;
52 }
53 bool isFixedLayout;
54 bool isBorderEnabled;
55 QColor borderColor;
56 int minWidth;
57 int maxWidth;
58 int minHeight;
59 int maxHeight;
60
61 int leftMargin;
62 int rightMargin;
63 int topMargin;
64 int bottomMargin;
65 };
66
70 virtual QByteArray GetLayoutId() const = 0;
71
75 virtual void SetType(const LayoutType& type) = 0;
76
80 virtual LayoutType GetType() const = 0;
81
85 virtual void SetTitle(const QString& title) = 0;
86
90 virtual QString GetTitle() const = 0;
91
95 virtual void SetTitleAlign(const AlignType& align) = 0;
96
100 virtual AlignType GetTitleAlign() const = 0;
101
105 virtual void SetIcon(const QPixmap& icon) = 0;
106
110 virtual QPixmap GetIcon() const = 0;
111
115 virtual void SetViewId(const QByteArray& viewId) = 0;
116
120 virtual QByteArray GetViewId() const = 0;
121
125 virtual void SetSizes(const SizeList& sizes) = 0;
126
130 virtual SizeList GetSizes() const = 0;
131
135 virtual void SetLayoutProperties(const LayoutProperties &properties) = 0;
136
140 virtual LayoutProperties GetLayoutProperties() const = 0;
141
145 virtual ILayout* GetParent() const = 0;
146
150 virtual int GetChildsCount() const = 0;
151
155 virtual ILayout* GetChild(int index) const = 0;
156
160 virtual void InsertChild(int index, ILayout* layout) = 0;
161
165 virtual void AppendChild(ILayout* layout) = 0;
166
170 virtual ILayout* TakeChild(int index) = 0;
171
175 virtual ILayout* TakeFirst() = 0;
176
180 virtual ILayout* TakeLast() = 0;
181
185 virtual void Clear() = 0;
186
190 virtual ILayout* FindChild(const QByteArray& id) const = 0;
191
195 virtual ILayout* RemoveChild(const QByteArray& id) = 0;
196
200 virtual void SplitLayout(ILayout::LayoutType type, int width, int height) = 0;
201};
202
203
204} // namespace imtgui
205
206