diff options
author | Sean Hall <r.sean.hall@gmail.com> | 2021-10-27 15:29:19 -0500 |
---|---|---|
committer | Sean Hall <r.sean.hall@gmail.com> | 2021-11-01 16:34:09 -0500 |
commit | dce1c97c7d3e76c18e4f80d4ffe288d2933a74bc (patch) | |
tree | 68dc0653ee1a6fe962d82dac2159c8ab00a95808 /src/test | |
parent | bad2e93524f376cfeb76d5231d4b08510bdad033 (diff) | |
download | wix-dce1c97c7d3e76c18e4f80d4ffe288d2933a74bc.tar.gz wix-dce1c97c7d3e76c18e4f80d4ffe288d2933a74bc.tar.bz2 wix-dce1c97c7d3e76c18e4f80d4ffe288d2933a74bc.zip |
Make thmutil automatically load controls during window creation.
Add control loaded event.
Diffstat (limited to 'src/test')
3 files changed, 234 insertions, 48 deletions
diff --git a/src/test/burn/TestData/Manual/BafThmutilTesting/BafThmUtilTesting.cpp b/src/test/burn/TestData/Manual/BafThmutilTesting/BafThmUtilTesting.cpp index a5bcba3e..8304403a 100644 --- a/src/test/burn/TestData/Manual/BafThmutilTesting/BafThmUtilTesting.cpp +++ b/src/test/burn/TestData/Manual/BafThmutilTesting/BafThmUtilTesting.cpp | |||
@@ -230,18 +230,14 @@ private: | |||
230 | return lres; | 230 | return lres; |
231 | } | 231 | } |
232 | 232 | ||
233 | case WM_CREATE: | ||
234 | if (!pBaf->OnCreate(hWnd)) | ||
235 | { | ||
236 | return -1; | ||
237 | } | ||
238 | break; | ||
239 | |||
240 | case WM_THMUTIL_LOADING_CONTROL: | 233 | case WM_THMUTIL_LOADING_CONTROL: |
241 | return pBaf->OnThemeLoadingControl(reinterpret_cast<THEME_LOADINGCONTROL_ARGS*>(wParam), reinterpret_cast<THEME_LOADINGCONTROL_RESULTS*>(lParam)); | 234 | return pBaf->OnThemeLoadingControl(reinterpret_cast<THEME_LOADINGCONTROL_ARGS*>(wParam), reinterpret_cast<THEME_LOADINGCONTROL_RESULTS*>(lParam)); |
242 | 235 | ||
236 | case WM_THMUTIL_LOADED_CONTROL: | ||
237 | return pBaf->OnThemeLoadedControl(hWnd, reinterpret_cast<THEME_LOADEDCONTROL_ARGS*>(wParam), reinterpret_cast<THEME_LOADEDCONTROL_RESULTS*>(lParam)); | ||
238 | |||
243 | case WM_TIMER: | 239 | case WM_TIMER: |
244 | if (!lParam && pBaf) | 240 | if (!lParam && BAFTHMUTILTESTING_CONTROL_PROGRESSBAR_IMAGE == wParam && pBaf) |
245 | { | 241 | { |
246 | pBaf->UpdateProgressBarProgress(); | 242 | pBaf->UpdateProgressBarProgress(); |
247 | 243 | ||
@@ -253,33 +249,14 @@ private: | |||
253 | return ThemeDefWindowProc(pBaf ? pBaf->m_pBafTheme : NULL, hWnd, uMsg, wParam, lParam); | 249 | return ThemeDefWindowProc(pBaf ? pBaf->m_pBafTheme : NULL, hWnd, uMsg, wParam, lParam); |
254 | } | 250 | } |
255 | 251 | ||
256 | BOOL OnCreate( | 252 | HRESULT OnCreatedListView( |
257 | __in HWND hWnd | 253 | __in HWND hWndListView |
258 | ) | 254 | ) |
259 | { | 255 | { |
260 | HRESULT hr = S_OK; | 256 | HRESULT hr = S_OK; |
261 | LVITEMW lvitem = { }; | 257 | LVITEMW lvitem = { }; |
262 | LVGROUP lvgroup = { }; | 258 | LVGROUP lvgroup = { }; |
263 | static UINT puColumns[] = { 0, 1, 2 }; | 259 | static UINT puColumns[] = { 0, 1, 2 }; |
264 | HWND hwndTopLeft = NULL; | ||
265 | HWND hwndTopRight = NULL; | ||
266 | HWND hwndBottomLeft = NULL; | ||
267 | HWND hwndBottomRight = NULL; | ||
268 | |||
269 | hr = ThemeLoadControls(m_pBafTheme); | ||
270 | BalExitOnFailure(hr, "Failed to load theme controls."); | ||
271 | |||
272 | hwndTopLeft = ::GetDlgItem(m_pBafTheme->hwndParent, BAFTHMUTILTESTING_CONTROL_LISTVIEW_TOP_LEFT); | ||
273 | BalExitOnNull(hwndTopLeft, hr, E_INVALIDSTATE, "Failed to get top left list view hWnd."); | ||
274 | |||
275 | hwndTopRight = ::GetDlgItem(m_pBafTheme->hwndParent, BAFTHMUTILTESTING_CONTROL_LISTVIEW_TOP_RIGHT); | ||
276 | BalExitOnNull(hwndTopRight, hr, E_INVALIDSTATE, "Failed to get top right list view hWnd."); | ||
277 | |||
278 | hwndBottomLeft = ::GetDlgItem(m_pBafTheme->hwndParent, BAFTHMUTILTESTING_CONTROL_LISTVIEW_BOTTOM_LEFT); | ||
279 | BalExitOnNull(hwndBottomLeft, hr, E_INVALIDSTATE, "Failed to get bottom left list view hWnd."); | ||
280 | |||
281 | hwndBottomRight = ::GetDlgItem(m_pBafTheme->hwndParent, BAFTHMUTILTESTING_CONTROL_LISTVIEW_BOTTOM_RIGHT); | ||
282 | BalExitOnNull(hwndBottomRight, hr, E_INVALIDSTATE, "Failed to get bottom right list view hWnd."); | ||
283 | 260 | ||
284 | lvgroup.cbSize = sizeof(LVGROUP); | 261 | lvgroup.cbSize = sizeof(LVGROUP); |
285 | lvgroup.mask = LVGF_GROUPID | LVGF_TITLEIMAGE | LVGF_DESCRIPTIONTOP | LVGF_HEADER; | 262 | lvgroup.mask = LVGF_GROUPID | LVGF_TITLEIMAGE | LVGF_DESCRIPTIONTOP | LVGF_HEADER; |
@@ -295,10 +272,7 @@ private: | |||
295 | hr = StrAllocFormatted(&lvgroup.pszHeader, L"Header_%d", i); | 272 | hr = StrAllocFormatted(&lvgroup.pszHeader, L"Header_%d", i); |
296 | BalExitOnFailure(hr, "Failed to alloc list view group header."); | 273 | BalExitOnFailure(hr, "Failed to alloc list view group header."); |
297 | 274 | ||
298 | ListView_InsertGroup(hwndTopLeft, -1, &lvgroup); | 275 | ListView_InsertGroup(hWndListView, -1, &lvgroup); |
299 | ListView_InsertGroup(hwndTopRight, -1, &lvgroup); | ||
300 | ListView_InsertGroup(hwndBottomLeft, -1, &lvgroup); | ||
301 | ListView_InsertGroup(hwndBottomRight, -1, &lvgroup); | ||
302 | 276 | ||
303 | lvitem.mask = LVIF_COLUMNS | LVIF_GROUPID | LVIF_IMAGE | LVIF_TEXT; | 277 | lvitem.mask = LVIF_COLUMNS | LVIF_GROUPID | LVIF_IMAGE | LVIF_TEXT; |
304 | lvitem.iItem = i; | 278 | lvitem.iItem = i; |
@@ -312,10 +286,7 @@ private: | |||
312 | lvitem.cColumns = countof(puColumns); | 286 | lvitem.cColumns = countof(puColumns); |
313 | lvitem.puColumns = puColumns; | 287 | lvitem.puColumns = puColumns; |
314 | 288 | ||
315 | ListView_InsertItem(hwndTopLeft, &lvitem); | 289 | ListView_InsertItem(hWndListView, &lvitem); |
316 | ListView_InsertItem(hwndTopRight, &lvitem); | ||
317 | ListView_InsertItem(hwndBottomLeft, &lvitem); | ||
318 | ListView_InsertItem(hwndBottomRight, &lvitem); | ||
319 | 290 | ||
320 | for (int j = 0; j < 3; ++j) | 291 | for (int j = 0; j < 3; ++j) |
321 | { | 292 | { |
@@ -325,23 +296,16 @@ private: | |||
325 | hr = StrAllocFormatted(&lvitem.pszText, L"%d_%d", j, i); | 296 | hr = StrAllocFormatted(&lvitem.pszText, L"%d_%d", j, i); |
326 | BalExitOnFailure(hr, "Failed to alloc list view subitem text."); | 297 | BalExitOnFailure(hr, "Failed to alloc list view subitem text."); |
327 | 298 | ||
328 | ListView_InsertItem(hwndTopLeft, &lvitem); | 299 | ListView_InsertItem(hWndListView, &lvitem); |
329 | ListView_InsertItem(hwndTopRight, &lvitem); | ||
330 | ListView_InsertItem(hwndBottomLeft, &lvitem); | ||
331 | ListView_InsertItem(hwndBottomRight, &lvitem); | ||
332 | } | 300 | } |
333 | } | 301 | } |
334 | 302 | ||
335 | ListView_EnableGroupView(hwndTopRight, TRUE); | ||
336 | |||
337 | ::SetTimer(hWnd, BAFTHMUTILTESTING_CONTROL_PROGRESSBAR_IMAGE, 500, NULL); | ||
338 | |||
339 | LExit: | 303 | LExit: |
340 | ReleaseStr(lvgroup.pszDescriptionTop); | 304 | ReleaseStr(lvgroup.pszDescriptionTop); |
341 | ReleaseStr(lvgroup.pszHeader); | 305 | ReleaseStr(lvgroup.pszHeader); |
342 | ReleaseStr(lvitem.pszText); | 306 | ReleaseStr(lvitem.pszText); |
343 | 307 | ||
344 | return SUCCEEDED(hr); | 308 | return hr; |
345 | } | 309 | } |
346 | 310 | ||
347 | BOOL OnThemeLoadingControl( | 311 | BOOL OnThemeLoadingControl( |
@@ -349,17 +313,60 @@ private: | |||
349 | __in THEME_LOADINGCONTROL_RESULTS* pResults | 313 | __in THEME_LOADINGCONTROL_RESULTS* pResults |
350 | ) | 314 | ) |
351 | { | 315 | { |
316 | HRESULT hr = S_OK; | ||
317 | BOOL fProcessed = FALSE; | ||
318 | |||
352 | for (DWORD iAssignControl = 0; iAssignControl < countof(vrgInitControls); ++iAssignControl) | 319 | for (DWORD iAssignControl = 0; iAssignControl < countof(vrgInitControls); ++iAssignControl) |
353 | { | 320 | { |
354 | if (CSTR_EQUAL == ::CompareStringW(LOCALE_NEUTRAL, 0, pArgs->pThemeControl->sczName, -1, vrgInitControls[iAssignControl].wzName, -1)) | 321 | if (CSTR_EQUAL == ::CompareStringW(LOCALE_NEUTRAL, 0, pArgs->pThemeControl->sczName, -1, vrgInitControls[iAssignControl].wzName, -1)) |
355 | { | 322 | { |
323 | fProcessed = TRUE; | ||
356 | pResults->wId = vrgInitControls[iAssignControl].wId; | 324 | pResults->wId = vrgInitControls[iAssignControl].wId; |
357 | break; | 325 | break; |
358 | } | 326 | } |
359 | } | 327 | } |
360 | 328 | ||
361 | pResults->hr = S_OK; | 329 | pResults->hr = hr; |
362 | return TRUE; | 330 | return fProcessed || FAILED(hr); |
331 | } | ||
332 | |||
333 | BOOL OnThemeLoadedControl( | ||
334 | __in HWND hWndParent, | ||
335 | __in const THEME_LOADEDCONTROL_ARGS* pArgs, | ||
336 | __in THEME_LOADEDCONTROL_RESULTS* pResults | ||
337 | ) | ||
338 | { | ||
339 | HRESULT hr = S_OK; | ||
340 | BOOL fProcessed = FALSE; | ||
341 | |||
342 | switch (pArgs->pThemeControl->wId) | ||
343 | { | ||
344 | case BAFTHMUTILTESTING_CONTROL_LISTVIEW_TOP_LEFT: | ||
345 | case BAFTHMUTILTESTING_CONTROL_LISTVIEW_TOP_RIGHT: | ||
346 | case BAFTHMUTILTESTING_CONTROL_LISTVIEW_BOTTOM_LEFT: | ||
347 | case BAFTHMUTILTESTING_CONTROL_LISTVIEW_BOTTOM_RIGHT: | ||
348 | fProcessed = TRUE; | ||
349 | |||
350 | hr = OnCreatedListView(pArgs->pThemeControl->hWnd); | ||
351 | ExitOnFailure(hr, "Failed to populate list view."); | ||
352 | |||
353 | if (BAFTHMUTILTESTING_CONTROL_LISTVIEW_TOP_RIGHT == pArgs->pThemeControl->wId) | ||
354 | { | ||
355 | ListView_EnableGroupView(pArgs->pThemeControl->hWnd, TRUE); | ||
356 | } | ||
357 | |||
358 | break; | ||
359 | |||
360 | case BAFTHMUTILTESTING_CONTROL_PROGRESSBAR_STANDARD: | ||
361 | fProcessed = TRUE; | ||
362 | |||
363 | ::SetTimer(hWndParent, BAFTHMUTILTESTING_CONTROL_PROGRESSBAR_IMAGE, 500, NULL); | ||
364 | break; | ||
365 | } | ||
366 | |||
367 | LExit: | ||
368 | pResults->hr = hr; | ||
369 | return fProcessed || FAILED(hr); | ||
363 | } | 370 | } |
364 | 371 | ||
365 | void UpdateProgressBarProgress() | 372 | void UpdateProgressBarProgress() |
diff --git a/src/test/burn/TestData/Manual/BafThmutilTesting/theme/BafThmUtilTestingTheme.xml b/src/test/burn/TestData/Manual/BafThmutilTesting/theme/BafThmUtilTestingTheme.xml index 0d0dabf5..7491ab1c 100644 --- a/src/test/burn/TestData/Manual/BafThmutilTesting/theme/BafThmUtilTestingTheme.xml +++ b/src/test/burn/TestData/Manual/BafThmutilTesting/theme/BafThmUtilTestingTheme.xml | |||
@@ -124,6 +124,27 @@ There are currently four states for a button: default, focus, hover, and selecte | |||
124 | <Text>Back</Text> | 124 | <Text>Back</Text> |
125 | <ChangePageAction Page="Button" /> | 125 | <ChangePageAction Page="Button" /> |
126 | </Button> | 126 | </Button> |
127 | <Button Name="BillboardButton" X="-183" Y="-11" Width="75" Height="23" TabStop="yes" FontId="Default"> | ||
128 | <Text>Next</Text> | ||
129 | <ChangePageAction Page="Billboard" /> | ||
130 | </Button> | ||
131 | </Page> | ||
132 | <Page Name="Billboard"> | ||
133 | <Label X="6" Y="6" Width="-6" Height="43" FontId="Default"> | ||
134 | This page has a billboard. It loops between two panels every 1.5 seconds. Only one button should be visible at all times (this is currently broken). | ||
135 | </Label> | ||
136 | <Billboard Name="FirstBillboard" X="11" Y="59" Width="-11" Height="-39" Interval="1500" Loop="yes"> | ||
137 | <BillboardPanel> | ||
138 | <Button Name="FirstBillboardButton1" X="11" Y="11" Width="75" Height="23" TabStop="yes" FontId="Default">First Panel</Button> | ||
139 | </BillboardPanel> | ||
140 | <BillboardPanel> | ||
141 | <Button Name="FirstBillboardButton2" X="11" Y="39" Width="75" Height="23" TabStop="yes" FontId="Default">Second Panel</Button> | ||
142 | </BillboardPanel> | ||
143 | </Billboard> | ||
144 | <Button Name="BillboardBackButton" X="-269" Y="-11" Width="75" Height="23" TabStop="yes" FontId="Default"> | ||
145 | <Text>Back</Text> | ||
146 | <ChangePageAction Page="Progressbar" /> | ||
147 | </Button> | ||
127 | </Page> | 148 | </Page> |
128 | <Button Name="StartButton" X="-97" Y="-11" Width="75" Height="23" TabStop="yes" FontId="Default" Visible="yes"> | 149 | <Button Name="StartButton" X="-97" Y="-11" Width="75" Height="23" TabStop="yes" FontId="Default" Visible="yes"> |
129 | <Text>Start</Text> | 150 | <Text>Start</Text> |
diff --git a/src/test/burn/TestData/Manual/BafThmutilTesting/theme/BafThmUtilTestingThemeLoose.xml b/src/test/burn/TestData/Manual/BafThmutilTesting/theme/BafThmUtilTestingThemeLoose.xml new file mode 100644 index 00000000..7e360544 --- /dev/null +++ b/src/test/burn/TestData/Manual/BafThmutilTesting/theme/BafThmUtilTestingThemeLoose.xml | |||
@@ -0,0 +1,158 @@ | |||
1 | <?xml version="1.0" encoding="utf-8"?> | ||
2 | <!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> | ||
3 | |||
4 | |||
5 | <Theme xmlns="http://wixtoolset.org/schemas/v4/thmutil"> | ||
6 | <Font Id="Default" Height="-12" Weight="500" Foreground="windowtext" Background="window">Segoe UI</Font> | ||
7 | <Image Id="star_transparent.bmp" ImageFile="star_transparent.bmp" /> | ||
8 | <Image Id="star_opaque.bmp" ImageFile="star_opaque.bmp" /> | ||
9 | <Image Id="star_transparent.png" ImageFile="star_transparent.png" /> | ||
10 | <Image Id="square_default" ImageFile="16x16.png"> | ||
11 | <AlternateResolution ImageFile="32x32.png" /> | ||
12 | <AlternateResolution ImageFile="64x64.png" /> | ||
13 | <AlternateResolution ImageFile="128x128.png" /> | ||
14 | <AlternateResolution ImageFile="256x256.png" /> | ||
15 | </Image> | ||
16 | <Image Id="square_focus" ImageFile="64x64_focus.png"> | ||
17 | <AlternateResolution ImageFile="128x128_focus.png" /> | ||
18 | <AlternateResolution ImageFile="256x256_focus.png" /> | ||
19 | </Image> | ||
20 | <Image Id="square_hover" ImageFile="64x64_hover.png"> | ||
21 | <AlternateResolution ImageFile="128x128_hover.png" /> | ||
22 | <AlternateResolution ImageFile="256x256_hover.png" /> | ||
23 | </Image> | ||
24 | <Image Id="square_selected" ImageFile="64x64_selected.png"> | ||
25 | <AlternateResolution ImageFile="128x128_selected.png" /> | ||
26 | <AlternateResolution ImageFile="256x256_selected.png" /> | ||
27 | </Image> | ||
28 | <Image Id="progressbar" ImageFile="progressbar.bmp" /> | ||
29 | <Image Id="progressbar_reverse" ImageFile="progressbar_reverse.bmp" /> | ||
30 | |||
31 | <Window Width="600" Height="450" FontId="Default" Caption="BafThmUtilTestingTheme" HexStyle="10cf0000" AutoResize="yes"> | ||
32 | <ImageList Name="Stars"> | ||
33 | <ImageListItem ImageFile="star_transparent.bmp" /> | ||
34 | <ImageListItem ImageFile="star_opaque.bmp" /> | ||
35 | <ImageListItem ImageFile="star_transparent.png" /> | ||
36 | </ImageList> | ||
37 | <Page Name="Transparency"> | ||
38 | <Label X="6" Y="6" Width="-6" Height="94" FontId="Default"> | ||
39 | This page has three versions of an image. The top image is a bitmap with a transparent background, the yellow star should be visible but its black background should not (this is currently broken). The middle image is the same bitmap except the black background is fully opaque so the yellow star should be visible on a black background. The bottom image in a PNG version of the top image and should look exactly the same. | ||
40 | </Label> | ||
41 | <ImageControl X="6" Y="106" Width="64" Height="64" ImageId="star_transparent.bmp" /> | ||
42 | <ImageControl X="6" Y="176" Width="64" Height="64" ImageId="star_opaque.bmp" /> | ||
43 | <ImageControl X="6" Y="246" Width="64" Height="64" ImageId="star_transparent.png" /> | ||
44 | <Button Name="ListViewButton" X="-183" Y="-11" Width="75" Height="23" TabStop="yes" FontId="Default"> | ||
45 | <Text>Next</Text> | ||
46 | <ChangePageAction Page="ListView" /> | ||
47 | </Button> | ||
48 | </Page> | ||
49 | <Page Name="ListView"> | ||
50 | <Label X="6" Y="6" Width="-6" Height="18" FontId="Default"> | ||
51 | This page is for testing ListView. | ||
52 | </Label> | ||
53 | <ListView Name="ListViewTopLeft" X="6" Y="30" Width="288" Height="176" FontId="Default" HexStyle="00" ImageList="Stars"> | ||
54 | <Column Width="100">TL One</Column> | ||
55 | <Column Width="100">TL Two</Column> | ||
56 | <Column Width="88">TL Three</Column> | ||
57 | </ListView> | ||
58 | <ListView Name="ListViewTopRight" X="300" Y="30" Width="-11" Height="176" FontId="Default" HexStyle="01" ImageListGroupHeader="Stars"> | ||
59 | <Column Width="100">TR One</Column> | ||
60 | <Column Width="100">TR Two</Column> | ||
61 | <Column Width="88" Expands="yes">TR Exp</Column> | ||
62 | </ListView> | ||
63 | <ListView Name="ListViewBottomLeft" X="6" Y="212" Width="288" Height="176" FontId="Default" HexStyle="02" ImageListSmall="Stars"> | ||
64 | <Column Width="100">BL One</Column> | ||
65 | <Column Width="100">BL Two</Column> | ||
66 | <Column Width="88">BL Three</Column> | ||
67 | </ListView> | ||
68 | <ListView Name="ListViewBottomRight" X="300" Y="212" Width="-11" Height="176" FontId="Default" HexStyle="03"> | ||
69 | <Column Width="100">BR One</Column> | ||
70 | <Column Width="100">BR Two</Column> | ||
71 | <Column Width="88" Expands="yes">BR Exp</Column> | ||
72 | </ListView> | ||
73 | <Button Name="ListViewBackButton" X="-269" Y="-11" Width="75" Height="23" TabStop="yes" FontId="Default"> | ||
74 | <Text>Back</Text> | ||
75 | <ChangePageAction Page="Transparency" /> | ||
76 | </Button> | ||
77 | <Button Name="ButtonButton" X="-183" Y="-11" Width="75" Height="23" TabStop="yes" FontId="Default"> | ||
78 | <Text>Next</Text> | ||
79 | <ChangePageAction Page="Button" /> | ||
80 | </Button> | ||
81 | </Page> | ||
82 | <Page Name="Button"> | ||
83 | <Label X="6" Y="6" Width="-6" Height="132" FontId="Default"> | ||
84 | This page is for testing graphical buttons. The left image is 16x16 at 100% scaling, the middle image is 32x32 at 100% scaling. The images for the buttons display their dimensions, so the left should be 16x16 at 100% but 32x32 at 200%. The right button starts at 32x32 at 100%, but grows and shrinks with the window and its image should also change. | ||
85 | |||
86 | There are currently four states for a button: default, focus, hover, and selected (in that priority order). There should be a different image for each state, although the left button should have a focus rectangle over the default image since it didn't specify an image for the focused state. | ||
87 | </Label> | ||
88 | <Button Name="Square16Button" X="6" Y="140" Width="16" Height="16" FontId="Default" TabStop="yes"> | ||
89 | <ButtonImage ImageId="square_default" /> | ||
90 | <ButtonHoverImage ImageId="square_hover" /> | ||
91 | <ButtonSelectedImage ImageId="square_selected" /> | ||
92 | </Button> | ||
93 | <Button Name="Square32Button" X="54" Y="140" Width="32" Height="32" FontId="Default" TabStop="yes"> | ||
94 | <ButtonImage ImageId="square_default" /> | ||
95 | <ButtonFocusImage ImageId="square_focus" /> | ||
96 | <ButtonHoverImage ImageId="square_hover" /> | ||
97 | <ButtonSelectedImage ImageId="square_selected" /> | ||
98 | </Button> | ||
99 | <Button Name="SquareExpandButton" X="92" Y="140" Width="-476" Height="-278" FontId="Default" TabStop="yes"> | ||
100 | <ButtonImage ImageId="square_default" /> | ||
101 | <ButtonFocusImage ImageId="square_focus" /> | ||
102 | <ButtonHoverImage ImageId="square_hover" /> | ||
103 | <ButtonSelectedImage ImageId="square_selected" /> | ||
104 | </Button> | ||
105 | <Button Name="ButtonBackButton" X="-269" Y="-11" Width="75" Height="23" TabStop="yes" FontId="Default"> | ||
106 | <Text>Back</Text> | ||
107 | <ChangePageAction Page="ListView" /> | ||
108 | </Button> | ||
109 | <Button Name="ProgressbarButton" X="-183" Y="-11" Width="75" Height="23" TabStop="yes" FontId="Default"> | ||
110 | <Text>Next</Text> | ||
111 | <ChangePageAction Page="Progressbar" /> | ||
112 | </Button> | ||
113 | </Page> | ||
114 | <Page Name="Progressbar"> | ||
115 | <Label X="6" Y="6" Width="-6" Height="94" FontId="Default"> | ||
116 | This page has two progress bars. The top progress bar is a standard control, the bottom one is custom drawn from an image. The bottom one should have its left side one pixel wide as black, the right side one pixel wide as grey, the progress as green, and the remaining as blue. The colors should be reversed when the progress goes backward (this is a way to test different colors, not a standard feature of thmutil). | ||
117 | </Label> | ||
118 | <Progressbar Name="StandardProgressBar" X="6" Y="106" Width="-6" Height="23" /> | ||
119 | <Progressbar Name="ImageProgressBar" X="6" Y="141" Width="-6" Height="23"> | ||
120 | <ProgressbarImage ImageId="progressbar" /> | ||
121 | <ProgressbarImage ImageId="progressbar_reverse" /> | ||
122 | </Progressbar> | ||
123 | <Button Name="ProgressbarBackButton" X="-269" Y="-11" Width="75" Height="23" TabStop="yes" FontId="Default"> | ||
124 | <Text>Back</Text> | ||
125 | <ChangePageAction Page="Button" /> | ||
126 | </Button> | ||
127 | <Button Name="BillboardButton" X="-183" Y="-11" Width="75" Height="23" TabStop="yes" FontId="Default"> | ||
128 | <Text>Next</Text> | ||
129 | <ChangePageAction Page="Billboard" /> | ||
130 | </Button> | ||
131 | </Page> | ||
132 | <Page Name="Billboard"> | ||
133 | <Label X="6" Y="6" Width="-6" Height="43" FontId="Default"> | ||
134 | This page has a billboard. It loops between two panels every 1.5 seconds. Only one button should be visible at all times (this is currently broken). | ||
135 | </Label> | ||
136 | <Billboard Name="FirstBillboard" X="11" Y="59" Width="-11" Height="-39" Interval="1500" Loop="yes"> | ||
137 | <BillboardPanel> | ||
138 | <Button Name="FirstBillboardButton1" X="11" Y="11" Width="75" Height="23" TabStop="yes" FontId="Default">First Panel</Button> | ||
139 | </BillboardPanel> | ||
140 | <BillboardPanel> | ||
141 | <Button Name="FirstBillboardButton2" X="11" Y="39" Width="75" Height="23" TabStop="yes" FontId="Default">Second Panel</Button> | ||
142 | </BillboardPanel> | ||
143 | </Billboard> | ||
144 | <Button Name="BillboardBackButton" X="-269" Y="-11" Width="75" Height="23" TabStop="yes" FontId="Default"> | ||
145 | <Text>Back</Text> | ||
146 | <ChangePageAction Page="Progressbar" /> | ||
147 | </Button> | ||
148 | </Page> | ||
149 | <Button Name="StartButton" X="-97" Y="-11" Width="75" Height="23" TabStop="yes" FontId="Default" Visible="yes"> | ||
150 | <Text>Start</Text> | ||
151 | <ChangePageAction Page="Transparency" /> | ||
152 | </Button> | ||
153 | <Button Name="CloseButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="Default" Visible="yes"> | ||
154 | <Text>ThemeClose</Text> | ||
155 | <CloseWindowAction /> | ||
156 | </Button> | ||
157 | </Window> | ||
158 | </Theme> | ||