Skip to content

Commit d77d8f9

Browse files
authored
Merge pull request #2 from EvenAR/cde-window-style
Support multiple window simulations (CDE and X11)
2 parents cb51b19 + b8f4de2 commit d77d8f9

37 files changed

+1687
-709
lines changed

ILS_Window_Plugin/ILS_Window_Plugin.vcxproj

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -115,14 +115,21 @@
115115
</PostBuildEvent>
116116
</ItemDefinitionGroup>
117117
<ItemGroup>
118-
<ClCompile Include="IWCloseBtn.cpp" />
119-
<ClCompile Include="IWMenuBtn.cpp" />
120-
<ClCompile Include="IWResizeBtn.cpp" />
118+
<ClCompile Include="IWCdeMenuBtn.cpp" />
119+
<ClCompile Include="IWCdeWindow.cpp" />
120+
<ClCompile Include="IWX11IconifyBtn.cpp" />
121+
<ClCompile Include="IWCdeIconifyBtn.cpp" />
122+
<ClCompile Include="IWX11MenuBtn.cpp" />
123+
<ClCompile Include="IWX11ResizeBtn.cpp" />
124+
<ClCompile Include="IWTitleBar.cpp" />
121125
<ClCompile Include="IWTitleBarBtn.cpp" />
122126
<ClCompile Include="IWPlugin.cpp" />
123127
<ClCompile Include="IWPluginDLL.cpp" />
124128
<ClCompile Include="IWWindow.cpp" />
125-
<ClCompile Include="IWTitleBar.cpp" />
129+
<ClCompile Include="IWCdeTitleBar.cpp" />
130+
<ClCompile Include="IWVisualization.cpp" />
131+
<ClCompile Include="IWX11TitleBar.cpp" />
132+
<ClCompile Include="IWX11Window.cpp" />
126133
<ClCompile Include="pch.cpp">
127134
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
128135
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
@@ -136,16 +143,24 @@
136143
<ClInclude Include="..\lib\EuroScopePlugIn.h" />
137144
<ClInclude Include="..\lib\json.hpp" />
138145
<ClInclude Include="framework.h" />
139-
<ClInclude Include="IWCloseBtn.h" />
140-
<ClInclude Include="IWMenuBtn.h" />
141-
<ClInclude Include="IWResizeBtn.h" />
146+
<ClInclude Include="IWCdeMenuBtn.h" />
147+
<ClInclude Include="IWCdeWindow.h" />
148+
<ClInclude Include="IWX11IconifyBtn.h" />
149+
<ClInclude Include="IWCdeIconifyBtn.h" />
150+
<ClInclude Include="IWX11MenuBtn.h" />
151+
<ClInclude Include="IWX11ResizeBtn.h" />
152+
<ClInclude Include="IWTitleBar.h" />
142153
<ClInclude Include="IWTitleBarBtn.h" />
143154
<ClInclude Include="IWPluginDLL.h" />
144155
<ClInclude Include="IWDataTypes.h" />
145156
<ClInclude Include="IWPlugin.h" />
146157
<ClInclude Include="IWWindow.h" />
147-
<ClInclude Include="IWTitleBar.h" />
158+
<ClInclude Include="IWCdeTitleBar.h" />
159+
<ClInclude Include="IWVisualization.h" />
160+
<ClInclude Include="IWX11TitleBar.h" />
161+
<ClInclude Include="IWX11Window.h" />
148162
<ClInclude Include="pch.h" />
163+
<ClInclude Include="RenderUtils.h" />
149164
<ClInclude Include="Resource.h" />
150165
<ClInclude Include="targetver.h" />
151166
<ClInclude Include="IWUtils.h" />

ILS_Window_Plugin/ILS_Window_Plugin.vcxproj.filters

Lines changed: 78 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,24 @@
1313
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
1414
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
1515
</Filter>
16+
<Filter Include="Source Files\Theme">
17+
<UniqueIdentifier>{06d11cba-76c2-4d9e-8107-6c5da2101bc1}</UniqueIdentifier>
18+
</Filter>
19+
<Filter Include="Source Files\Theme\X11">
20+
<UniqueIdentifier>{8a7ca98b-50af-466b-a2f2-04eb78eba59e}</UniqueIdentifier>
21+
</Filter>
22+
<Filter Include="Header Files\Theme">
23+
<UniqueIdentifier>{687be561-bac8-411d-8e4a-810fa08569b5}</UniqueIdentifier>
24+
</Filter>
25+
<Filter Include="Header Files\Theme\X11">
26+
<UniqueIdentifier>{c34849c8-8ad4-4f4f-acc9-2f8e9c582a1c}</UniqueIdentifier>
27+
</Filter>
28+
<Filter Include="Source Files\Theme\SolarisCDE">
29+
<UniqueIdentifier>{a1845d6f-0de7-4b25-9cd4-7b9629d2bf5e}</UniqueIdentifier>
30+
</Filter>
31+
<Filter Include="Header Files\Theme\SolarisCDE">
32+
<UniqueIdentifier>{f133707e-7c1a-4d8b-8a78-bdfd116acce5}</UniqueIdentifier>
33+
</Filter>
1634
</ItemGroup>
1735
<ItemGroup>
1836
<ClCompile Include="IWPluginDLL.cpp">
@@ -21,9 +39,6 @@
2139
<ClCompile Include="pch.cpp">
2240
<Filter>Source Files</Filter>
2341
</ClCompile>
24-
<ClCompile Include="IWTitleBar.cpp">
25-
<Filter>Source Files</Filter>
26-
</ClCompile>
2742
<ClCompile Include="IWPlugin.cpp">
2843
<Filter>Source Files</Filter>
2944
</ClCompile>
@@ -33,14 +48,38 @@
3348
<ClCompile Include="IWTitleBarBtn.cpp">
3449
<Filter>Source Files</Filter>
3550
</ClCompile>
36-
<ClCompile Include="IWCloseBtn.cpp">
51+
<ClCompile Include="IWVisualization.cpp">
3752
<Filter>Source Files</Filter>
3853
</ClCompile>
39-
<ClCompile Include="IWMenuBtn.cpp">
54+
<ClCompile Include="IWTitleBar.cpp">
4055
<Filter>Source Files</Filter>
4156
</ClCompile>
42-
<ClCompile Include="IWResizeBtn.cpp">
43-
<Filter>Source Files</Filter>
57+
<ClCompile Include="IWCdeIconifyBtn.cpp">
58+
<Filter>Source Files\Theme\SolarisCDE</Filter>
59+
</ClCompile>
60+
<ClCompile Include="IWCdeMenuBtn.cpp">
61+
<Filter>Source Files\Theme\SolarisCDE</Filter>
62+
</ClCompile>
63+
<ClCompile Include="IWCdeTitleBar.cpp">
64+
<Filter>Source Files\Theme\SolarisCDE</Filter>
65+
</ClCompile>
66+
<ClCompile Include="IWX11ResizeBtn.cpp">
67+
<Filter>Source Files\Theme\X11</Filter>
68+
</ClCompile>
69+
<ClCompile Include="IWX11IconifyBtn.cpp">
70+
<Filter>Source Files\Theme\X11</Filter>
71+
</ClCompile>
72+
<ClCompile Include="IWX11MenuBtn.cpp">
73+
<Filter>Source Files\Theme\X11</Filter>
74+
</ClCompile>
75+
<ClCompile Include="IWX11TitleBar.cpp">
76+
<Filter>Source Files\Theme\X11</Filter>
77+
</ClCompile>
78+
<ClCompile Include="IWCdeWindow.cpp">
79+
<Filter>Source Files\Theme\SolarisCDE</Filter>
80+
</ClCompile>
81+
<ClCompile Include="IWX11Window.cpp">
82+
<Filter>Source Files\Theme\X11</Filter>
4483
</ClCompile>
4584
</ItemGroup>
4685
<ItemGroup>
@@ -70,9 +109,6 @@
70109
<ClInclude Include="IWWindow.h">
71110
<Filter>Header Files</Filter>
72111
</ClInclude>
73-
<ClInclude Include="IWTitleBar.h">
74-
<Filter>Header Files</Filter>
75-
</ClInclude>
76112
<ClInclude Include="IWUtils.h">
77113
<Filter>Header Files</Filter>
78114
</ClInclude>
@@ -88,18 +124,45 @@
88124
<ClInclude Include="..\lib\json.hpp">
89125
<Filter>Header Files</Filter>
90126
</ClInclude>
91-
<ClInclude Include="IWTitleBarBtn.h">
127+
<ClInclude Include="IWVisualization.h">
92128
<Filter>Header Files</Filter>
93129
</ClInclude>
94-
<ClInclude Include="IWCloseBtn.h">
95-
<Filter>Header Files</Filter>
130+
<ClInclude Include="IWCdeMenuBtn.h">
131+
<Filter>Header Files\Theme\SolarisCDE</Filter>
132+
</ClInclude>
133+
<ClInclude Include="IWCdeIconifyBtn.h">
134+
<Filter>Header Files\Theme\SolarisCDE</Filter>
96135
</ClInclude>
97-
<ClInclude Include="IWMenuBtn.h">
136+
<ClInclude Include="IWCdeTitleBar.h">
137+
<Filter>Header Files\Theme\SolarisCDE</Filter>
138+
</ClInclude>
139+
<ClInclude Include="IWTitleBarBtn.h">
98140
<Filter>Header Files</Filter>
99141
</ClInclude>
100-
<ClInclude Include="IWResizeBtn.h">
142+
<ClInclude Include="IWX11ResizeBtn.h">
143+
<Filter>Header Files\Theme\X11</Filter>
144+
</ClInclude>
145+
<ClInclude Include="IWX11MenuBtn.h">
146+
<Filter>Header Files\Theme\X11</Filter>
147+
</ClInclude>
148+
<ClInclude Include="IWX11IconifyBtn.h">
149+
<Filter>Header Files\Theme\X11</Filter>
150+
</ClInclude>
151+
<ClInclude Include="IWTitleBar.h">
101152
<Filter>Header Files</Filter>
102153
</ClInclude>
154+
<ClInclude Include="RenderUtils.h">
155+
<Filter>Header Files\Theme\SolarisCDE</Filter>
156+
</ClInclude>
157+
<ClInclude Include="IWX11TitleBar.h">
158+
<Filter>Header Files\Theme\X11</Filter>
159+
</ClInclude>
160+
<ClInclude Include="IWCdeWindow.h">
161+
<Filter>Header Files\Theme\SolarisCDE</Filter>
162+
</ClInclude>
163+
<ClInclude Include="IWX11Window.h">
164+
<Filter>Header Files\Theme\X11</Filter>
165+
</ClInclude>
103166
</ItemGroup>
104167
<ItemGroup>
105168
<ResourceCompile Include="ILS_Window_Plugin.rc">
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
#include "pch.h"
2+
#include "IWCdeIconifyBtn.h"
3+
#include "RenderUtils.h"
4+
5+
IWCdeIconifyBtn::IWCdeIconifyBtn(COLORREF backgroundColor, COLORREF lightColor, COLORREF darkColor) : IWTitleBarBtn(backgroundColor)
6+
{
7+
this->lightColor = lightColor;
8+
this->darkColor = darkColor;
9+
}
10+
11+
void IWCdeIconifyBtn::DrawSymbol(CDC* pdc, CRect rect)
12+
{
13+
CRect buttonFrame = rect;
14+
buttonFrame.left = rect.right - rect.Height();
15+
16+
CRect icon = buttonFrame;
17+
icon.left = buttonFrame.left + buttonFrame.Width() * 0.4;
18+
icon.right = icon.right - buttonFrame.Width() * 0.4;
19+
icon.top = buttonFrame.top + buttonFrame.Width() * 0.4;
20+
icon.bottom = buttonFrame.bottom - buttonFrame.Width() * 0.4;
21+
22+
Draw3dRect(pdc, buttonFrame, 1, lightColor, darkColor);
23+
Draw3dRect(pdc, icon, 1, lightColor, darkColor);
24+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
#pragma once
2+
3+
#include "IWTitleBarBtn.h"
4+
5+
class IWCdeIconifyBtn : public IWTitleBarBtn
6+
{
7+
public:
8+
IWCdeIconifyBtn(COLORREF backgroundColor, COLORREF lightColor, COLORREF darkColor);
9+
10+
private:
11+
void DrawSymbol(CDC* pDC, CRect rect) override;
12+
13+
COLORREF lightColor;
14+
COLORREF darkColor;
15+
};
16+

ILS_Window_Plugin/IWCdeMenuBtn.cpp

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
#include "pch.h"
2+
#include "IWCdeMenuBtn.h"
3+
#include "RenderUtils.h"
4+
5+
IWCdeMenuBtn::IWCdeMenuBtn(COLORREF backgroundColor, COLORREF lightColor, COLORREF darkColor) : IWTitleBarBtn(backgroundColor)
6+
{
7+
this->lightColor = lightColor;
8+
this->darkColor = darkColor;
9+
}
10+
11+
void IWCdeMenuBtn::DrawSymbol(CDC* pdc, CRect rect)
12+
{
13+
CRect barIcon = rect;
14+
barIcon.left = rect.left + rect.Width() * 0.25;
15+
barIcon.right = rect.right - rect.Width() * 0.25;
16+
barIcon.top = rect.top + rect.Height() / 2 - 2;
17+
barIcon.bottom = barIcon.top + 4;
18+
19+
Draw3dRect(pdc, rect, 1, lightColor, darkColor);
20+
Draw3dRect(pdc, barIcon, 1, lightColor, darkColor);
21+
}

ILS_Window_Plugin/IWCdeMenuBtn.h

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
#pragma once
2+
3+
#include "IWTitleBarBtn.h"
4+
5+
class IWCdeMenuBtn : public IWTitleBarBtn
6+
{
7+
public:
8+
IWCdeMenuBtn(COLORREF backgroundColor, COLORREF lightColor, COLORREF darkColor);
9+
10+
private:
11+
void DrawSymbol(CDC* pDC, CRect rect) override;
12+
13+
COLORREF lightColor;
14+
COLORREF darkColor;
15+
};
16+
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
#include "pch.h"
2+
#include "IWCdeTitleBar.h"
3+
#include "RenderUtils.h"
4+
#include "IWCdeIconifyBtn.h"
5+
#include "IWCdeMenuBtn.h"
6+
#include "IWX11ResizeBtn.h"
7+
8+
IWCdeTitleBar::IWCdeTitleBar(COLORREF backgroundColor, COLORREF textColor, COLORREF lightColor, COLORREF darkcolor, IWTitleBarEventListener* listener) :
9+
IWTitleBar(backgroundColor, 13, listener)
10+
{
11+
this->lightColor = lightColor;
12+
this->darkColor = darkcolor;
13+
this->textColor = textColor;
14+
15+
this->iconifyButton = new IWCdeIconifyBtn(backgroundColor, lightColor, darkColor);
16+
this->menuButton = new IWCdeMenuBtn(backgroundColor, lightColor, darkColor);
17+
this->resizeButton = new IWX11ResizeBtn(backgroundColor);
18+
}
19+
20+
void IWCdeTitleBar::PositionButtons(const CRect& rect)
21+
{
22+
CRect menuButtonRect(rect.left, rect.top, rect.left + rect.Height(), rect.bottom);
23+
if (menuButton->GetSafeHwnd())
24+
menuButton->MoveWindow(menuButtonRect);
25+
26+
CRect iconifyButtonRect(rect.right - rect.Height(), rect.top, rect.right, rect.bottom);
27+
if (iconifyButton->GetSafeHwnd())
28+
iconifyButton->MoveWindow(iconifyButtonRect);
29+
30+
titleArea = rect;
31+
titleArea.left = menuButtonRect.right;
32+
titleArea.right = iconifyButtonRect.left;
33+
}
34+
35+
void IWCdeTitleBar::DrawTitle(CDC* pdc, CRect rect, CString title)
36+
{
37+
Draw3dRect(pdc, titleArea, 1, lightColor, darkColor);
38+
39+
auto oldFont = pdc->SelectObject(this->font);
40+
pdc->SetTextColor(this->textColor);
41+
pdc->SetBkMode(TRANSPARENT);
42+
pdc->DrawText(_T(title), -1, titleArea, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
43+
pdc->SelectObject(oldFont);
44+
}

ILS_Window_Plugin/IWCdeTitleBar.h

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
#pragma once
2+
#include <afxwin.h>
3+
#include <string>
4+
#include "IWTitleBar.h"
5+
6+
class IWTitleBarEventListener;
7+
8+
class IWCdeTitleBar : public IWTitleBar {
9+
public:
10+
IWCdeTitleBar(COLORREF backgroundColor, COLORREF textColor, COLORREF lightColor, COLORREF darkcolor, IWTitleBarEventListener* listener);
11+
virtual ~IWCdeTitleBar() {}
12+
13+
private:
14+
void PositionButtons(const CRect& rect) override;
15+
void DrawTitle(CDC* pdc, CRect rect, CString title) override;
16+
17+
COLORREF backgroundColor;
18+
COLORREF textColor;
19+
COLORREF lightColor;
20+
COLORREF darkColor;
21+
22+
CRect titleArea;
23+
};

0 commit comments

Comments
 (0)