annotate dwtestoo.cpp @ 2917:77e5d6743013

C++: Implement most of Page 2 (Render) except the actual rendering.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Wed, 28 Dec 2022 09:32:27 +0000
parents fe43f8667d3d
children e609aa6a5b93
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2869
c873b6f862b9 C++: Add text widget and packing to the window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2868
diff changeset
1 /*
c873b6f862b9 C++: Add text widget and packing to the window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2868
diff changeset
2 * Simple C++ Dynamic Windows Example
c873b6f862b9 C++: Add text widget and packing to the window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2868
diff changeset
3 */
2871
4b7c4cd7a11d OS2: Fix building the C++ bindings on OS/2 with GCC.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2869
diff changeset
4 #include "dw.hpp"
2861
ef7a414f9b71 Add initial C++ binding header and example program.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
6 /* Select a fixed width font for our platform */
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
7 #ifdef __OS2__
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
8 #define FIXEDFONT "5.System VIO"
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
9 #define PLATFORMFOLDER "os2\\"
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
10 #elif defined(__WIN32__)
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
11 #define FIXEDFONT "10.Lucida Console"
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
12 #define PLATFORMFOLDER "win\\"
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
13 #elif defined(__MAC__)
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
14 #define FIXEDFONT "9.Monaco"
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
15 #define PLATFORMFOLDER "mac/"
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
16 #elif defined(__IOS__)
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
17 #define FIXEDFONT "9.Monaco"
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
18 #elif defined(__ANDROID__)
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
19 #define FIXEDFONT "10.Monospace"
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
20 #elif GTK_MAJOR_VERSION > 1
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
21 #define FIXEDFONT "10.monospace"
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
22 #define PLATFORMFOLDER "gtk/"
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
23 #else
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
24 #define FIXEDFONT "fixed"
2882
99311a9091af C++: Add lambda support via Connect functions on C++11, on older compilers
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2873
diff changeset
25 #endif
99311a9091af C++: Add lambda support via Connect functions on C++11, on older compilers
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2873
diff changeset
26
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
27 #define SHAPES_DOUBLE_BUFFERED 0
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
28 #define SHAPES_DIRECT 1
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
29 #define DRAW_FILE 2
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
30
2915
0cde119fc945 C++: Fix initialization and #define reused strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2914
diff changeset
31 #define APP_TITLE "Dynamic Windows C++"
0cde119fc945 C++: Fix initialization and #define reused strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2914
diff changeset
32 #define APP_EXIT "Are you sure you want to exit?"
0cde119fc945 C++: Fix initialization and #define reused strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2914
diff changeset
33
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
34 class DWTest : public DW::Window
2861
ef7a414f9b71 Add initial C++ binding header and example program.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
35 {
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
36 private:
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
37 const char *ResolveKeyName(int vk) {
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
38 const char *keyname;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
39 switch(vk) {
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
40 case VK_LBUTTON : keyname = "VK_LBUTTON"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
41 case VK_RBUTTON : keyname = "VK_RBUTTON"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
42 case VK_CANCEL : keyname = "VK_CANCEL"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
43 case VK_MBUTTON : keyname = "VK_MBUTTON"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
44 case VK_TAB : keyname = "VK_TAB"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
45 case VK_CLEAR : keyname = "VK_CLEAR"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
46 case VK_RETURN : keyname = "VK_RETURN"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
47 case VK_PAUSE : keyname = "VK_PAUSE"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
48 case VK_CAPITAL : keyname = "VK_CAPITAL"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
49 case VK_ESCAPE : keyname = "VK_ESCAPE"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
50 case VK_SPACE : keyname = "VK_SPACE"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
51 case VK_PRIOR : keyname = "VK_PRIOR"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
52 case VK_NEXT : keyname = "VK_NEXT"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
53 case VK_END : keyname = "VK_END"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
54 case VK_HOME : keyname = "VK_HOME"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
55 case VK_LEFT : keyname = "VK_LEFT"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
56 case VK_UP : keyname = "VK_UP"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
57 case VK_RIGHT : keyname = "VK_RIGHT"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
58 case VK_DOWN : keyname = "VK_DOWN"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
59 case VK_SELECT : keyname = "VK_SELECT"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
60 case VK_PRINT : keyname = "VK_PRINT"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
61 case VK_EXECUTE : keyname = "VK_EXECUTE"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
62 case VK_SNAPSHOT: keyname = "VK_SNAPSHOT"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
63 case VK_INSERT : keyname = "VK_INSERT"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
64 case VK_DELETE : keyname = "VK_DELETE"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
65 case VK_HELP : keyname = "VK_HELP"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
66 case VK_LWIN : keyname = "VK_LWIN"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
67 case VK_RWIN : keyname = "VK_RWIN"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
68 case VK_NUMPAD0 : keyname = "VK_NUMPAD0"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
69 case VK_NUMPAD1 : keyname = "VK_NUMPAD1"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
70 case VK_NUMPAD2 : keyname = "VK_NUMPAD2"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
71 case VK_NUMPAD3 : keyname = "VK_NUMPAD3"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
72 case VK_NUMPAD4 : keyname = "VK_NUMPAD4"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
73 case VK_NUMPAD5 : keyname = "VK_NUMPAD5"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
74 case VK_NUMPAD6 : keyname = "VK_NUMPAD6"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
75 case VK_NUMPAD7 : keyname = "VK_NUMPAD7"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
76 case VK_NUMPAD8 : keyname = "VK_NUMPAD8"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
77 case VK_NUMPAD9 : keyname = "VK_NUMPAD9"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
78 case VK_MULTIPLY: keyname = "VK_MULTIPLY"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
79 case VK_ADD : keyname = "VK_ADD"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
80 case VK_SEPARATOR: keyname = "VK_SEPARATOR"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
81 case VK_SUBTRACT: keyname = "VK_SUBTRACT"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
82 case VK_DECIMAL : keyname = "VK_DECIMAL"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
83 case VK_DIVIDE : keyname = "VK_DIVIDE"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
84 case VK_F1 : keyname = "VK_F1"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
85 case VK_F2 : keyname = "VK_F2"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
86 case VK_F3 : keyname = "VK_F3"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
87 case VK_F4 : keyname = "VK_F4"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
88 case VK_F5 : keyname = "VK_F5"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
89 case VK_F6 : keyname = "VK_F6"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
90 case VK_F7 : keyname = "VK_F7"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
91 case VK_F8 : keyname = "VK_F8"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
92 case VK_F9 : keyname = "VK_F9"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
93 case VK_F10 : keyname = "VK_F10"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
94 case VK_F11 : keyname = "VK_F11"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
95 case VK_F12 : keyname = "VK_F12"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
96 case VK_F13 : keyname = "VK_F13"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
97 case VK_F14 : keyname = "VK_F14"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
98 case VK_F15 : keyname = "VK_F15"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
99 case VK_F16 : keyname = "VK_F16"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
100 case VK_F17 : keyname = "VK_F17"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
101 case VK_F18 : keyname = "VK_F18"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
102 case VK_F19 : keyname = "VK_F19"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
103 case VK_F20 : keyname = "VK_F20"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
104 case VK_F21 : keyname = "VK_F21"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
105 case VK_F22 : keyname = "VK_F22"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
106 case VK_F23 : keyname = "VK_F23"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
107 case VK_F24 : keyname = "VK_F24"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
108 case VK_NUMLOCK : keyname = "VK_NUMLOCK"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
109 case VK_SCROLL : keyname = "VK_SCROLL"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
110 case VK_LSHIFT : keyname = "VK_LSHIFT"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
111 case VK_RSHIFT : keyname = "VK_RSHIFT"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
112 case VK_LCONTROL: keyname = "VK_LCONTROL"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
113 case VK_RCONTROL: keyname = "VK_RCONTROL"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
114 default: keyname = "<unknown>"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
115 }
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
116 return keyname;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
117 }
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
118
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
119 const char *ResolveKeyModifiers(int mask) {
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
120 if((mask & KC_CTRL) && (mask & KC_SHIFT) && (mask & KC_ALT))
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
121 return "KC_CTRL KC_SHIFT KC_ALT";
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
122 else if((mask & KC_CTRL) && (mask & KC_SHIFT))
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
123 return "KC_CTRL KC_SHIFT";
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
124 else if((mask & KC_CTRL) && (mask & KC_ALT))
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
125 return "KC_CTRL KC_ALT";
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
126 else if((mask & KC_SHIFT) && (mask & KC_ALT))
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
127 return "KC_SHIFT KC_ALT";
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
128 else if((mask & KC_SHIFT))
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
129 return "KC_SHIFT";
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
130 else if((mask & KC_CTRL))
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
131 return "KC_CTRL";
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
132 else if((mask & KC_ALT))
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
133 return "KC_ALT";
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
134 else return "none";
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
135 }
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
136
2916
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
137 char *ReadFile(char *filename)
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
138 {
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
139 char *errors = NULL;
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
140 #ifdef __ANDROID__
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
141 int fd = -1;
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
142
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
143 /* Special way to open for URIs on Android */
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
144 if(strstr(filename, "://"))
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
145 {
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
146 fd = dw_file_open(filename, O_RDONLY);
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
147 fp = fdopen(fd, "r");
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
148 }
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
149 else
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
150 #endif
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
151 fp = fopen(filename, "r");
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
152 if(!fp)
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
153 errors = strerror(errno);
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
154 else
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
155 {
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
156 int i,len;
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
157
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
158 lp = (char **)calloc(1000,sizeof(char *));
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
159 /* should test for out of memory */
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
160 max_linewidth=0;
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
161 for(i=0; i<1000; i++)
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
162 {
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
163 lp[i] = (char *)calloc(1, 1025);
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
164 if (fgets(lp[i], 1024, fp) == NULL)
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
165 break;
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
166 len = (int)strlen(lp[i]);
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
167 if (len > max_linewidth)
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
168 max_linewidth = len;
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
169 if(lp[i][len - 1] == '\n')
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
170 lp[i][len - 1] = '\0';
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
171 }
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
172 num_lines = i;
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
173 fclose(fp);
2917
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
174
2916
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
175 hscrollbar->SetRange(max_linewidth, cols);
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
176 hscrollbar->SetPos(0);
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
177 vscrollbar->SetRange(num_lines, rows);
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
178 vscrollbar->SetPos(0);
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
179 }
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
180 #ifdef __ANDROID__
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
181 if(fd != -1)
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
182 close(fd);
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
183 #endif
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
184 return errors;
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
185 }
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
186
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
187 void RenderDraw() {
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
188 // Draw page 2
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
189 }
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
190
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
191 // Add the menus to the window
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
192 void CreateMenus() {
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
193 // Setup the menu
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
194 DW::MenuBar *menubar = this->MenuBarNew();
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
195
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
196 // add menus to the menubar
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
197 DW::Menu *menu = new DW::Menu();
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
198 DW::MenuItem *menuitem = menu->AppendItem("~Quit");
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
199 menuitem->ConnectClicked([this] () -> int
2915
0cde119fc945 C++: Fix initialization and #define reused strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2914
diff changeset
200 {
0cde119fc945 C++: Fix initialization and #define reused strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2914
diff changeset
201 if(this->app->MessageBox(APP_TITLE, DW_MB_YESNO | DW_MB_QUESTION, APP_EXIT) != 0) {
0cde119fc945 C++: Fix initialization and #define reused strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2914
diff changeset
202 this->app->MainQuit();
0cde119fc945 C++: Fix initialization and #define reused strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2914
diff changeset
203 }
0cde119fc945 C++: Fix initialization and #define reused strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2914
diff changeset
204 return TRUE;
0cde119fc945 C++: Fix initialization and #define reused strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2914
diff changeset
205 });
2889
4b075e64536c C++: Add some simple menu code to see if things are working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2883
diff changeset
206
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
207 // Add the "File" menu to the menubar...
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
208 menubar->AppendItem("~File", menu);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
209
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
210 menu = new DW::Menu();
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
211 DW::MenuItem *checkable_menuitem = menu->AppendItem("~Checkable Menu Item", 0, TRUE);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
212 checkable_menuitem->ConnectClicked([this]() -> int
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
213 {
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
214 this->app->MessageBox("Menu Item Callback", DW_MB_OK | DW_MB_INFORMATION, "\"Checkable Menu Item\" selected");
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
215 return FALSE;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
216 });
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
217 DW::MenuItem *noncheckable_menuitem = menu->AppendItem("~Non-Checkable Menu Item");
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
218 noncheckable_menuitem->ConnectClicked([this]() -> int
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
219 {
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
220 this->app->MessageBox("Menu Item Callback", DW_MB_OK | DW_MB_INFORMATION, "\"Non-Checkable Menu Item\" selected");
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
221 return FALSE;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
222 });
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
223 menuitem = menu->AppendItem("~Disabled menu Item", DW_MIS_DISABLED|DW_MIS_CHECKED, TRUE);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
224 // separator
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
225 menuitem = menu->AppendItem(DW_MENU_SEPARATOR);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
226 menuitem = menu->AppendItem("~Menu Items Disabled", 0, TRUE);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
227 menuitem->ConnectClicked([this, checkable_menuitem, noncheckable_menuitem]() -> int
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
228 {
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
229 // Toggle the variable
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
230 this->menu_enabled = !this->menu_enabled;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
231 // Set the ENABLED/DISABLED state on the menu items
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
232 checkable_menuitem->SetStyle(menu_enabled ? DW_MIS_ENABLED : DW_MIS_DISABLED);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
233 noncheckable_menuitem->SetStyle(menu_enabled ? DW_MIS_ENABLED : DW_MIS_DISABLED);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
234 return FALSE;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
235 });
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
236 // Add the "Menu" menu to the menubar...
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
237 menubar->AppendItem("~Menu", menu);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
238
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
239 menu = new DW::Menu();
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
240 menuitem = menu->AppendItem("~About");
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
241 menuitem->ConnectClicked([this]() -> int
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
242 {
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
243 DWEnv env;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
244
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
245 this->app->GetEnvironment(&env);
2915
0cde119fc945 C++: Fix initialization and #define reused strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2914
diff changeset
246 this->app->MessageBox("About dwindows", DW_MB_OK | DW_MB_INFORMATION,
0cde119fc945 C++: Fix initialization and #define reused strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2914
diff changeset
247 "dwindows test\n\nOS: %s %s %s Version: %d.%d.%d.%d\n\nHTML: %s\n\ndwindows Version: %d.%d.%d\n\nScreen: %dx%d %dbpp",
0cde119fc945 C++: Fix initialization and #define reused strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2914
diff changeset
248 env.osName, env.buildDate, env.buildTime,
0cde119fc945 C++: Fix initialization and #define reused strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2914
diff changeset
249 env.MajorVersion, env.MinorVersion, env.MajorBuild, env.MinorBuild,
0cde119fc945 C++: Fix initialization and #define reused strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2914
diff changeset
250 env.htmlEngine,
0cde119fc945 C++: Fix initialization and #define reused strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2914
diff changeset
251 env.DWMajorVersion, env.DWMinorVersion, env.DWSubVersion,
0cde119fc945 C++: Fix initialization and #define reused strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2914
diff changeset
252 this->app->GetScreenWidth(), this->app->GetScreenHeight(), this->app->GetColorDepth());
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
253 return FALSE;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
254 });
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
255 // Add the "Help" menu to the menubar...
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
256 menubar->AppendItem("~Help", menu);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
257 }
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
258
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
259 // Notebook page 1
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
260 void CreateInput(DW::Box *notebookbox)
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
261 {
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
262 DW::Box *lbbox = new DW::Box(DW_VERT, 10);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
263
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
264 notebookbox->PackStart(lbbox, 150, 70, TRUE, TRUE, 0);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
265
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
266 /* Copy and Paste */
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
267 DW::Box *browsebox = new DW::Box(DW_HORZ, 0);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
268 lbbox->PackStart(browsebox, 0, 0, FALSE, FALSE, 0);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
269
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
270 DW::Entryfield *copypastefield = new DW::Entryfield();
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
271 copypastefield->SetLimit(260);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
272 browsebox->PackStart(copypastefield, TRUE, FALSE, 4);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
273
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
274 DW::Button *copybutton = new DW::Button("Copy");
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
275 browsebox->PackStart(copybutton, FALSE, FALSE, 0);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
276
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
277 DW::Button *pastebutton = new DW::Button("Paste");
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
278 browsebox->PackStart(pastebutton, FALSE, FALSE, 0);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
279
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
280 /* Archive Name */
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
281 DW::Text *stext = new DW::Text("File to browse");
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
282 stext->SetStyle(DW_DT_VCENTER);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
283 lbbox->PackStart(stext, 130, 15, TRUE, TRUE, 2);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
284
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
285 browsebox = new DW::Box(DW_HORZ, 0);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
286 lbbox->PackStart(browsebox, 0, 0, TRUE, TRUE, 0);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
287
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
288 DW::Entryfield *entryfield = new DW::Entryfield();
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
289 entryfield->SetLimit(260);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
290 browsebox->PackStart(entryfield, 100, 15, TRUE, TRUE, 4);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
291
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
292 DW::Button *browsefilebutton = new DW::Button("Browse File");
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
293 browsebox->PackStart(browsefilebutton, 40, 15, TRUE, TRUE, 0);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
294
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
295 DW::Button *browsefolderbutton = new DW::Button("Browse Folder");
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
296 browsebox->PackStart(browsefolderbutton, 40, 15, TRUE, TRUE, 0);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
297
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
298 browsebox->SetColor(DW_CLR_PALEGRAY, DW_CLR_PALEGRAY);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
299 stext->SetColor(DW_CLR_BLACK, DW_CLR_PALEGRAY);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
300
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
301 // Buttons
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
302 DW::Box *buttonbox = new DW::Box(DW_HORZ, 10);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
303 lbbox->PackStart(buttonbox, 0, 0, TRUE, TRUE, 0);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
304
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
305 DW::Button *cancelbutton = new DW::Button("Exit");
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
306 buttonbox->PackStart(cancelbutton, 130, 30, TRUE, TRUE, 2);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
307
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
308 DW::Button *cursortogglebutton = new DW::Button("Set Cursor pointer - CLOCK");
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
309 buttonbox->PackStart(cursortogglebutton, 130, 30, TRUE, TRUE, 2);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
310
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
311 DW::Button *okbutton = new DW::Button("Turn Off Annoying Beep!");
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
312 buttonbox->PackStart(okbutton, 130, 30, TRUE, TRUE, 2);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
313
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
314 cancelbutton->Unpack();
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
315 buttonbox->PackStart(cancelbutton, 130, 30, TRUE, TRUE, 2);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
316 //this->ClickDefault(cancelbutton);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
317
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
318 DW::Button *colorchoosebutton = new DW::Button("Color Chooser Dialog");
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
319 buttonbox->PackStart(colorchoosebutton, 130, 30, TRUE, TRUE, 2);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
320
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
321 /* Set some nice fonts and colors */
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
322 lbbox->SetColor(DW_CLR_DARKCYAN, DW_CLR_PALEGRAY);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
323 buttonbox->SetColor(DW_CLR_DARKCYAN, DW_CLR_PALEGRAY);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
324 okbutton->SetColor(DW_CLR_PALEGRAY, DW_CLR_DARKCYAN);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
325 #ifdef COLOR_DEBUG
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
326 copypastefield->SetColor(DW_CLR_WHITE, DW_CLR_RED);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
327 copybutton->SetColor(DW_CLR_WHITE, DW_CLR_RED);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
328 // Set a color then clear it to make sure it clears correctly
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
329 entryfield->SetColor(DW_CLR_WHITE, DW_CLR_RED);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
330 entryfield->SetColor(DW_CLR_DEFAULT, DW_CLR_DEFAULT);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
331 // Set a color then clear it to make sure it clears correctly... again
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
332 pastebutton->SetColor(DW_CLR_WHITE, DW_CLR_RED);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
333 pastebutton->SetColor(DW_CLR_DEFAULT, DW_CLR_DEFAULT);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
334 #endif
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
335
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
336 // Connect signals
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
337 browsefilebutton->ConnectClicked([this, entryfield, copypastefield]() -> int
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
338 {
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
339 char *tmp = this->app->FileBrowse("Pick a file", "dwtest.c", "c", DW_FILE_OPEN);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
340 if(tmp)
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
341 {
2916
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
342 char *errors = ReadFile(tmp);
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
343 const char *title = "New file load";
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
344 const char *image = "image/test.png";
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
345 DW::Notification *notification;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
346
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
347 if(errors)
2916
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
348 notification = new DW::Notification(title, image, APP_TITLE " failed to load the file into the file browser.");
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
349 else
2916
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
350 notification = new DW::Notification(title, image, APP_TITLE " loaded the file into the file browser on the Render tab, with \"File Display\" selected from the drop down list.");
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
351
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
352 if(current_file)
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
353 this->app->Free(current_file);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
354 current_file = tmp;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
355 entryfield->SetText(current_file);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
356 current_col = current_row = 0;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
357
2916
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
358 RenderDraw();
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
359 notification->ConnectClicked([this]() -> int {
2916
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
360 this->app->Debug("Notification clicked\n");
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
361 return TRUE;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
362 });
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
363 notification->Send();
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
364 }
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
365 copypastefield->SetFocus();
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
366 return FALSE;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
367 });
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
368
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
369 browsefolderbutton->ConnectClicked([this]() -> int
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
370 {
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
371 char *tmp = this->app->FileBrowse("Pick a folder", ".", "c", DW_DIRECTORY_OPEN);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
372 this->app->Debug("Folder picked: %s\n", tmp ? tmp : "None");
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
373 return FALSE;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
374 });
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
375
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
376 copybutton->ConnectClicked([this, copypastefield, entryfield]() -> int {
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
377 char *test = copypastefield->GetText();
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
378
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
379 if(test) {
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
380 this->app->SetClipboard(test);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
381 this->app->Free(test);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
382 }
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
383 entryfield->SetFocus();
2882
99311a9091af C++: Add lambda support via Connect functions on C++11, on older compilers
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2873
diff changeset
384 return TRUE;
99311a9091af C++: Add lambda support via Connect functions on C++11, on older compilers
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2873
diff changeset
385 });
2889
4b075e64536c C++: Add some simple menu code to see if things are working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2883
diff changeset
386
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
387 pastebutton->ConnectClicked([this, copypastefield]() -> int
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
388 {
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
389 char *test = this->app->GetClipboard();
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
390 if(test) {
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
391 copypastefield->SetText(test);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
392 this->app->Free(test);
2889
4b075e64536c C++: Add some simple menu code to see if things are working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2883
diff changeset
393 }
4b075e64536c C++: Add some simple menu code to see if things are working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2883
diff changeset
394 return TRUE;
4b075e64536c C++: Add some simple menu code to see if things are working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2883
diff changeset
395 });
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
396
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
397 okbutton->ConnectClicked([this]() -> int
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
398 {
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
399 if(this->timer) {
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
400 delete this->timer;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
401 this->timer = DW_NULL;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
402 }
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
403 return TRUE;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
404 });
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
405
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
406 cancelbutton->ConnectClicked([this] () -> int
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
407 {
2915
0cde119fc945 C++: Fix initialization and #define reused strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2914
diff changeset
408 if(this->app->MessageBox(APP_TITLE, DW_MB_YESNO | DW_MB_QUESTION, APP_EXIT) != 0) {
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
409 this->app->MainQuit();
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
410 }
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
411 return TRUE;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
412 });
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
413
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
414 cursortogglebutton->ConnectClicked([this, cursortogglebutton] () -> int
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
415 {
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
416 cursortogglebutton->SetText(this->cursor_arrow ? "Set Cursor pointer - ARROW" :
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
417 "Set Cursor pointer - CLOCK");
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
418 this->SetPointer(this->cursor_arrow ? DW_POINTER_CLOCK : DW_POINTER_DEFAULT);
2917
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
419 this->cursor_arrow = !this->cursor_arrow;
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
420 return FALSE;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
421 });
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
422
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
423 colorchoosebutton->ConnectClicked([this]() -> int
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
424 {
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
425 this->current_color = this->app->ColorChoose(this->current_color);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
426 return FALSE;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
427 });
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
428 }
2917
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
429
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
430 void CreateRender(DW::Box *notebookbox) {
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
431 int vscrollbarwidth, hscrollbarheight;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
432 wchar_t widestring[100] = L"DWTest Wide";
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
433 char *utf8string = dw_wchar_to_utf8(widestring);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
434
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
435 // create a box to pack into the notebook page
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
436 DW::Box *pagebox = new DW::Box(DW_HORZ, 2);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
437 notebookbox->PackStart(pagebox, 0, 0, TRUE, TRUE, 0);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
438
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
439 // now a status area under this box
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
440 DW::Box *hbox = new DW::Box(DW_HORZ, 1);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
441 notebookbox->PackStart(hbox, 100, 20, TRUE, FALSE, 1);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
442
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
443 DW::StatusText *status1 = new DW::StatusText();
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
444 hbox->PackStart(status1, 100, DW_SIZE_AUTO, TRUE, FALSE, 1);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
445
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
446 DW::StatusText *status2 = new DW::StatusText();
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
447 hbox->PackStart(status2, 100, DW_SIZE_AUTO, TRUE, FALSE, 1);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
448 // a box with combobox and button
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
449 hbox = new DW::Box(DW_HORZ, 1 );
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
450 notebookbox->PackStart(hbox, 100, 25, TRUE, FALSE, 1);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
451
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
452 DW::ComboBox *rendcombo = new DW::ComboBox( "Shapes Double Buffered");
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
453 hbox->PackStart(rendcombo, 80, 25, TRUE, TRUE, 0);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
454 rendcombo->Append("Shapes Double Buffered");
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
455 rendcombo->Append("Shapes Direct");
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
456 rendcombo->Append("File Display");
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
457
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
458 DW::Text *label = new DW::Text("Image X:");
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
459 label->SetStyle(DW_DT_VCENTER | DW_DT_CENTER);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
460 hbox->PackStart(label, DW_SIZE_AUTO, 25, FALSE, TRUE, 0);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
461
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
462 DW::SpinButton *imagexspin = new DW::SpinButton("20");
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
463 hbox->PackStart(imagexspin, 25, 25, TRUE, TRUE, 0);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
464
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
465 label = new DW::Text("Y:");
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
466 label->SetStyle(DW_DT_VCENTER | DW_DT_CENTER);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
467 hbox->PackStart(label, DW_SIZE_AUTO, 25, FALSE, TRUE, 0);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
468
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
469 DW::SpinButton *imageyspin = new DW::SpinButton("20");
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
470 hbox->PackStart(imageyspin, 25, 25, TRUE, TRUE, 0);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
471 imagexspin->SetLimits(2000, 0);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
472 imageyspin->SetLimits(2000, 0);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
473 imagexspin->SetPos(20);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
474 imageyspin->SetPos(20);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
475
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
476 DW::CheckBox *imagestretchcheck = new DW::CheckBox("Stretch");
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
477 hbox->PackStart(imagestretchcheck, DW_SIZE_AUTO, 25, FALSE, TRUE, 0);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
478
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
479 DW::Button *refreshbutton = new DW::Button("Refresh");
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
480 hbox->PackStart(refreshbutton, DW_SIZE_AUTO, 25, FALSE, TRUE, 0);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
481
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
482 DW::Button *printbutton = new DW::Button("Print");
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
483 hbox->PackStart(printbutton, DW_SIZE_AUTO, 25, FALSE, TRUE, 0);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
484
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
485 // Pre-create the scrollbars so we can query their sizes
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
486 vscrollbar = new DW::ScrollBar(DW_VERT, 50);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
487 hscrollbar = new DW::ScrollBar(DW_HORZ, 50);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
488 vscrollbar->GetPreferredSize(&vscrollbarwidth, NULL);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
489 hscrollbar->GetPreferredSize(NULL, &hscrollbarheight);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
490
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
491 // On GTK with overlay scrollbars enabled this returns us 0...
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
492 // so in that case we need to give it some real values.
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
493 if(!vscrollbarwidth)
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
494 vscrollbarwidth = 8;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
495 if(!hscrollbarheight)
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
496 hscrollbarheight = 8;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
497
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
498 // Create render box for line number pixmap
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
499 DW::Render *render1 = new DW::Render();
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
500 render1->SetFont(FIXEDFONT);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
501 render1->GetTextExtents("(g", &font_width, &font_height);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
502 font_width = font_width / 2;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
503
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
504 DW::Box *vscrollbox = new DW::Box(DW_VERT, 0);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
505 vscrollbox->PackStart(render1, font_width*width1, font_height*rows, FALSE, TRUE, 0);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
506 vscrollbox->PackStart(DW_NOHWND, (font_width*(width1+1)), hscrollbarheight, FALSE, FALSE, 0);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
507 pagebox->PackStart(vscrollbox, 0, 0, FALSE, TRUE, 0);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
508
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
509 // pack empty space 1 character wide
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
510 pagebox->PackStart(DW_NOHWND, font_width, 0, FALSE, TRUE, 0);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
511
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
512 // create box for filecontents and horz scrollbar
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
513 DW::Box *textbox = new DW::Box(DW_VERT,0 );
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
514 pagebox->PackStart(textbox, 0, 0, TRUE, TRUE, 0);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
515
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
516 // create render box for filecontents pixmap
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
517 DW::Render *render2 = new DW::Render();
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
518 textbox->PackStart(render2, 10, 10, TRUE, TRUE, 0);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
519 render2->SetFont(FIXEDFONT);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
520 // create horizonal scrollbar
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
521 textbox->PackStart(hscrollbar, TRUE, FALSE, 0);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
522
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
523 // create vertical scrollbar
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
524 vscrollbox = new DW::Box(DW_VERT, 0);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
525 vscrollbox->PackStart(vscrollbar, FALSE, TRUE, 0);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
526 // Pack an area of empty space of the scrollbar dimensions
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
527 vscrollbox->PackStart(DW_NOHWND, vscrollbarwidth, hscrollbarheight, FALSE, FALSE, 0);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
528 pagebox->PackStart(vscrollbox, 0, 0, FALSE, TRUE, 0);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
529
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
530 pixmap1 = new DW::Pixmap(render1, font_width*width1, font_height*rows);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
531 pixmap2 = new DW::Pixmap(render2, font_width*cols, font_height*rows);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
532 image = new DW::Pixmap(render1, "image/test");
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
533 if(!image || !image->GetHPIXMAP())
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
534 image = new DW::Pixmap(render1, "~/test");
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
535 if(!image || !image->GetHPIXMAP())
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
536 {
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
537 char *appdir = app->GetDir();
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
538 char pathbuff[1025] = {0};
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
539 int pos = (int)strlen(appdir);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
540
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
541 strncpy(pathbuff, appdir, 1024);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
542 pathbuff[pos] = DW_DIR_SEPARATOR;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
543 pos++;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
544 strncpy(&pathbuff[pos], "test", 1024-pos);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
545 image = new DW::Pixmap(render1, pathbuff);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
546 }
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
547 if(image)
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
548 image->SetTransparentColor(DW_CLR_WHITE);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
549
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
550 app->MessageBox(utf8string ? utf8string : "DWTest", DW_MB_OK|DW_MB_INFORMATION, "Width: %d Height: %d\n", font_width, font_height);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
551 if(utf8string)
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
552 app->Free(utf8string);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
553 pixmap1->DrawRect(DW_DRAW_FILL | DW_DRAW_NOAA, 0, 0, font_width*width1, font_height*rows);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
554 pixmap2->DrawRect(DW_DRAW_FILL | DW_DRAW_NOAA, 0, 0, font_width*cols, font_height*rows);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
555
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
556 // Signal handler lambdas
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
557 render1->ConnectButtonPress([this](int x, int y, int buttonmask) -> int
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
558 {
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
559 DW::Menu *menu = new DW::Menu();
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
560 DW::MenuItem *menuitem = menu->AppendItem("~Quit");
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
561 long px, py;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
562
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
563 menuitem->ConnectClicked([this] () -> int
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
564 {
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
565 if(this->app->MessageBox(APP_TITLE, DW_MB_YESNO | DW_MB_QUESTION, APP_EXIT) != 0) {
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
566 this->app->MainQuit();
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
567 }
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
568 return TRUE;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
569 });
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
570
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
571
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
572 menu->AppendItem(DW_MENU_SEPARATOR);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
573 menuitem = menu->AppendItem("~Show Window");
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
574 menuitem->ConnectClicked([this]() -> int
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
575 {
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
576 this->Show();
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
577 this->Raise();
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
578 return TRUE;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
579 });
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
580
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
581 this->app->GetPointerPos(&px, &py);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
582 menu->Popup(this, (int)px, (int)py);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
583 return TRUE;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
584 });
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
585
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
586 render1->ConnectExpose([this](DWExpose *exp) -> int
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
587 {
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
588 return TRUE;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
589 });
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
590
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
591 render2->ConnectExpose([this](DWExpose *exp) -> int
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
592 {
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
593 return TRUE;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
594 });
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
595
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
596 render2->ConnectKeyPress([this, status1](char ch, int vk, int state, char *utf8) -> int
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
597 {
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
598 char tmpbuf[101] = {0};
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
599 if(ch)
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
600 snprintf(tmpbuf, 100, "Key: %c(%d) Modifiers: %s(%d) utf8 %s", ch, ch, this->ResolveKeyModifiers(state), state, utf8);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
601 else
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
602 snprintf(tmpbuf, 100, "Key: %s(%d) Modifiers: %s(%d) utf8 %s", this->ResolveKeyName(vk), vk, ResolveKeyModifiers(state), state, utf8);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
603 status1->SetText(tmpbuf);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
604 return FALSE;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
605 });
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
606
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
607 hscrollbar->ConnectValueChanged([this, status1](int value) -> int
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
608 {
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
609 char tmpbuf[101] = {0};
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
610
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
611 this->current_col = value;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
612 snprintf(tmpbuf, 100, "Row:%d Col:%d Lines:%d Cols:%d", current_row,current_col,num_lines,max_linewidth);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
613 status1->SetText(tmpbuf);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
614 this->RenderDraw();
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
615 return TRUE;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
616 });
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
617
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
618 vscrollbar->ConnectValueChanged([this, status1](int value) -> int
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
619 {
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
620 char tmpbuf[101] = {0};
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
621
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
622 this->current_row = value;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
623 snprintf(tmpbuf, 100, "Row:%d Col:%d Lines:%d Cols:%d", current_row,current_col,num_lines,max_linewidth);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
624 status1->SetText(tmpbuf);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
625 this->RenderDraw();
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
626 return TRUE;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
627 });
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
628
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
629 render2->ConnectMotionNotify([this, status2](int x, int y, int buttonmask) -> int
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
630 {
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
631 char buf[201] = {0};
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
632
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
633 snprintf(buf, 200, "motion_notify: %dx%d buttons %d", x, y, buttonmask);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
634 status2->SetText(buf);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
635 return FALSE;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
636 });
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
637
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
638 render2->ConnectButtonPress([this, status2](int x, int y, int buttonmask) -> int
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
639 {
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
640 char buf[201] = {0};
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
641
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
642 snprintf(buf, 200, "button_press: %dx%d buttons %d", x, y, buttonmask);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
643 status2->SetText(buf);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
644 return FALSE;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
645 });
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
646
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
647 render2->ConnectConfigure([this, render1, render2](int width, int height) -> int
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
648 {
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
649 DW::Pixmap *old1 = this->pixmap1, *old2 = this->pixmap2;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
650
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
651 rows = height / font_height;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
652 cols = width / font_width;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
653
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
654 // Create new pixmaps with the current sizes
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
655 this->pixmap1 = new DW::Pixmap(render1, (unsigned long)(font_width*(width1)), (unsigned long)height);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
656 this->pixmap2 = new DW::Pixmap(render2, (unsigned long)width, (unsigned long)height);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
657
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
658 // Make sure the side area is cleared
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
659 this->pixmap1->SetForegroundColor(DW_CLR_WHITE);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
660 this->pixmap1->DrawRect(DW_DRAW_FILL | DW_DRAW_NOAA, 0, 0, (int)this->pixmap1->GetWidth(), (int)this->pixmap1->GetHeight());
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
661
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
662 // Destroy the old pixmaps
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
663 delete old1;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
664 delete old2;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
665
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
666 // Update scrollbar ranges with new values
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
667 this->hscrollbar->SetRange(max_linewidth, cols);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
668 this->vscrollbar->SetRange(num_lines, rows);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
669
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
670 // Redraw the render widgets
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
671 this->RenderDraw();
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
672 return TRUE;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
673 });
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
674
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
675 imagestretchcheck->ConnectClicked([this]() -> int
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
676 {
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
677 this->RenderDraw();
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
678 return TRUE;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
679 });
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
680
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
681 refreshbutton->ConnectClicked([this]() -> int
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
682 {
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
683 this->RenderDraw();
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
684 return TRUE;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
685 });
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
686
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
687 printbutton->ConnectClicked([this]() -> int
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
688 {
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
689 #if 0 // TODO
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
690 DW::Print *print = new DW::Print("DWTest Job", 0, 2, [this](DW::Pixmap *pixmap, int page_num) -> int
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
691 {
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
692 pixmap->SetFont(FIXEDFONT);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
693 if(page_num == 0)
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
694 {
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
695 this->DrawShapes(FALSE, pixmap);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
696 }
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
697 else if(page_num == 1)
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
698 {
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
699 /* Get the font size for this printer context... */
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
700 int fheight, fwidth;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
701
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
702 /* If we have a file to display... */
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
703 if(current_file)
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
704 {
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
705 int nrows;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
706
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
707 /* Calculate new dimensions */
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
708 pixmap->GetTextExtents("(g", NULL, &fheight);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
709 nrows = (int)(pixmap->GetHeight() / fheight);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
710
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
711 /* Do the actual drawing */
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
712 this->DrawFile(0, 0, nrows, fheight, pixmap);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
713 }
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
714 else
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
715 {
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
716 /* We don't have a file so center an error message on the page */
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
717 const char *text = "No file currently selected!";
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
718 int posx, posy;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
719
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
720 pixmap->GetTextExtents(text, &fwidth, &fheight);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
721
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
722 posx = (int)(pixmap->GetWidth() - fwidth)/2;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
723 posy = (int)(pixmap->GetHeight() - fheight)/2;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
724
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
725 pixmap->SetColor(DW_CLR_BLACK, DW_CLR_WHITE);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
726 pixmap->DrawText(posx, posy, text);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
727 }
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
728 }
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
729 return TRUE;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
730 });
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
731 print->Run(0);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
732 #endif
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
733 return TRUE;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
734 });
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
735
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
736 app->TaskBarInsert(render1, fileicon, "DWTest");
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
737 }
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
738 public:
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
739 // Constructor creates the application
2915
0cde119fc945 C++: Fix initialization and #define reused strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2914
diff changeset
740 DWTest(const char *title): DW::Window(title) {
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
741 char fileiconpath[1025] = "file";
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
742 char foldericonpath[1025] = "folder";
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
743
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
744 // Get our application singleton
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
745 app = DW::App::Init();
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
746
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
747 // Add menus to the window
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
748 CreateMenus();
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
749
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
750 // Create our notebook and add it to the window
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
751 DW::Box *notebookbox = new DW::Box(DW_VERT, 5);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
752 this->PackStart(notebookbox, 0, 0, TRUE, TRUE, 0);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
753
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
754 /* First try the current directory */
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
755 foldericon = app->LoadIcon(foldericonpath);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
756 fileicon = app->LoadIcon(fileiconpath);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
757
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
758 #ifdef PLATFORMFOLDER
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
759 /* In case we are running from the build directory...
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
760 * also check the appropriate platform subfolder
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
761 */
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
762 if(!foldericon)
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
763 {
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
764 strncpy(foldericonpath, PLATFORMFOLDER "folder", 1024);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
765 foldericon = app->LoadIcon(foldericonpath);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
766 }
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
767 if(!fileicon)
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
768 {
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
769 strncpy(fileiconpath, PLATFORMFOLDER "file", 1024);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
770 fileicon = app->LoadIcon(fileiconpath);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
771 }
2889
4b075e64536c C++: Add some simple menu code to see if things are working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2883
diff changeset
772 #endif
4b075e64536c C++: Add some simple menu code to see if things are working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2883
diff changeset
773
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
774 /* Finally try from the platform application directory */
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
775 if(!foldericon && !fileicon)
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
776 {
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
777 char *appdir = app->GetDir();
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
778 char pathbuff[1025] = {0};
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
779 int pos = (int)strlen(appdir);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
780
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
781 strncpy(pathbuff, appdir, 1024);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
782 pathbuff[pos] = DW_DIR_SEPARATOR;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
783 pos++;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
784 strncpy(&pathbuff[pos], "folder", 1024-pos);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
785 foldericon = app->LoadIcon(pathbuff);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
786 if(foldericon)
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
787 strncpy(foldericonpath, pathbuff, 1025);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
788 strncpy(&pathbuff[pos], "file", 1024-pos);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
789 fileicon = app->LoadIcon(pathbuff);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
790 if(fileicon)
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
791 strncpy(fileiconpath, pathbuff, 1025);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
792 }
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
793
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
794 DW::Notebook *notebook = new DW::Notebook();
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
795 notebookbox->PackStart(notebook, TRUE, TRUE, 0);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
796 notebook->ConnectSwitchPage([this](unsigned long page_num) -> int
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
797 {
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
798 this->app->Debug("DW_SIGNAL_SWITCH_PAGE: PageNum: %u\n", page_num);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
799 return TRUE;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
800 });
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
801
2917
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
802 // Create Notebook Page 1 - Input
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
803 notebookbox = new DW::Box(DW_VERT, 5);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
804 CreateInput(notebookbox);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
805 unsigned long notebookpage = notebook->PageNew(0, TRUE);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
806 notebook->Pack(notebookpage, notebookbox);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
807 notebook->PageSetText(notebookpage, "buttons and entry");
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
808
2917
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
809 // Create Notebook Page 2 - Render
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
810 notebookbox = new DW::Box(DW_VERT, 5);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
811 CreateRender(notebookbox);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
812 notebookpage = notebook->PageNew(0, TRUE);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
813 notebook->Pack(notebookpage, notebookbox);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
814 notebook->PageSetText(notebookpage, "render");
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
815
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
816 // Finalize the window
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
817 this->SetSize(640, 550);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
818
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
819 timer = new DW::Timer(2000, [this]() -> int
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
820 {
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
821 this->app->Beep(200, 200);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
822
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
823 // Return TRUE so we get called again
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
824 return TRUE;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
825 });
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
826 }
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
827
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
828 DW::App *app;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
829
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
830 // Page 1
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
831 DW::Timer *timer;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
832 int cursor_arrow = TRUE;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
833 unsigned long current_color;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
834
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
835 // Page 2
2917
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
836 DW::Pixmap *pixmap1, *pixmap2, *image;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
837 DW::ScrollBar *hscrollbar, *vscrollbar;
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
838 int image_x = 20, image_y = 20, image_stretch = 0;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
839
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
840 int font_width = 8, font_height=12;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
841 int rows=10,width1=6,cols=80;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
842 int num_lines=0, max_linewidth=0;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
843 int current_row=0,current_col=0;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
844 int render_type = SHAPES_DOUBLE_BUFFERED;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
845
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
846 FILE *fp=NULL;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
847 char **lp;
2917
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
848 char *current_file = NULL;
2889
4b075e64536c C++: Add some simple menu code to see if things are working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2883
diff changeset
849
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
850 // Page 4
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
851 int mle_point=-1;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
852
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
853 // Miscellaneous
2917
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
854 int menu_enabled = TRUE;
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
855 HICN fileicon,foldericon;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
856
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
857 int OnDelete() override {
2915
0cde119fc945 C++: Fix initialization and #define reused strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2914
diff changeset
858 if(app->MessageBox(APP_TITLE, DW_MB_YESNO | DW_MB_QUESTION, APP_EXIT) != 0) {
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
859 app->MainQuit();
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
860 }
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
861 return TRUE;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
862 }
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
863 };
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
864
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
865 /* Pretty list of features corresponding to the DWFEATURE enum in dw.h */
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
866 const char *DWFeatureList[] = {
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
867 "Supports the HTML Widget",
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
868 "Supports the DW_SIGNAL_HTML_RESULT callback",
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
869 "Supports custom window border sizes",
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
870 "Supports window frame transparency",
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
871 "Supports Dark Mode user interface",
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
872 "Supports auto completion in Multi-line Edit boxes",
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
873 "Supports word wrapping in Multi-line Edit boxes",
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
874 "Supports striped line display in container widgets",
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
875 "Supports Multiple Document Interface window frame",
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
876 "Supports status text area on notebook/tabbed controls",
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
877 "Supports sending system notifications",
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
878 "Supports UTF8 encoded Unicode text",
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
879 "Supports Rich Edit based MLE control (Windows)",
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
880 "Supports icons in the taskbar or similar system widget",
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
881 "Supports the Tree Widget",
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
882 "Supports arbitrary window placement",
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
883 "Supports alternate container view modes",
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
884 NULL };
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
885
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
886 /*
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
887 * Let's demonstrate the functionality of this library. :)
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
888 */
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
889 int dwmain(int argc, char* argv[])
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
890 {
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
891 /* Initialize the Dynamic Windows engine */
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
892 DW::App *app = DW::App::Init(argc, argv, "org.dbsoft.dwindows.dwtestoo", "Dynamic Windows Test C++");
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
893
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
894 /* Enable full dark mode on platforms that support it */
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
895 if(getenv("DW_DARK_MODE"))
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
896 app->SetFeature(DW_FEATURE_DARK_MODE, DW_DARK_MODE_FULL);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
897
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
898 #ifdef DW_MOBILE
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
899 /* Enable multi-line container display on Mobile platforms */
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
900 app->SetFeature(DW_FEATURE_CONTAINER_MODE, DW_CONTAINER_MODE_MULTI);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
901 #endif
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
902
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
903 /* Test all the features and display the results */
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
904 for(int intfeat=DW_FEATURE_HTML; intfeat<DW_FEATURE_MAX; intfeat++)
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
905 {
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
906 DWFEATURE feat = static_cast<DWFEATURE>(intfeat);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
907 int result = dw_feature_get(feat);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
908 const char *status = "Unsupported";
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
909
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
910 if(result == 0)
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
911 status = "Disabled";
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
912 else if(result > 0)
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
913 status = "Enabled";
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
915 app->Debug("%s: %s (%d)\n", DWFeatureList[feat], status, result);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
916 }
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
917
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
918 DWTest *window = new DWTest("dwindows test UTF8 中国語 (繁体) cañón");
2869
c873b6f862b9 C++: Add text widget and packing to the window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2868
diff changeset
919 window->Show();
2861
ef7a414f9b71 Add initial C++ binding header and example program.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
920
2869
c873b6f862b9 C++: Add text widget and packing to the window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2868
diff changeset
921 app->Main();
c873b6f862b9 C++: Add text widget and packing to the window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2868
diff changeset
922 app->Exit(0);
2861
ef7a414f9b71 Add initial C++ binding header and example program.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
923
2869
c873b6f862b9 C++: Add text widget and packing to the window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2868
diff changeset
924 return 0;
2861
ef7a414f9b71 Add initial C++ binding header and example program.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
925 }