annotate dwtestoo.cpp @ 2988:dfab2dfa9bc1

Check DW_FEATURE_HTML_MESSAGE to decide if the raw html widget should have the javascript code or not. This prevents error popups when clicking the "dwtest" text when using the IE HTML widget.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Tue, 04 Apr 2023 01:08:14 +0000
parents ae4d6856b983
children 392f0b3dd502
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2923
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
1 // An example Dynamic Windows application and testing
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
2 // ground for Dynamic Windows features in C++.
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
3 // By: Brian Smith and Mark Hessling
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"
2956
afe9c20294ca Win: Fix building dwtestoo with MinGW32/64. Need to use __cdecl in C++ mode.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2951
diff changeset
5 #include <cstdio>
2973
ac880987a2c4 Mac: Fix compiling with Xcode 8.2.1, needed #include <stdlib.h> and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2964
diff changeset
6 #include <errno.h>
2861
ef7a414f9b71 Add initial C++ binding header and example program.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7
2923
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
8 // Select a fixed width font for our platform
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
9 #ifdef __OS2__
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
10 #define FIXEDFONT "5.System VIO"
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
11 #define PLATFORMFOLDER "os2\\"
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
12 #elif defined(__WIN32__)
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
13 #define FIXEDFONT "10.Lucida Console"
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
14 #define PLATFORMFOLDER "win\\"
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
15 #elif defined(__MAC__)
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
16 #define FIXEDFONT "9.Monaco"
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
17 #define PLATFORMFOLDER "mac/"
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
18 #elif defined(__IOS__)
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
19 #define FIXEDFONT "9.Monaco"
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
20 #elif defined(__ANDROID__)
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 #elif GTK_MAJOR_VERSION > 1
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
23 #define FIXEDFONT "10.monospace"
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
24 #define PLATFORMFOLDER "gtk/"
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
25 #else
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
26 #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
27 #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
28
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
29 #define SHAPES_DOUBLE_BUFFERED 0
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
30 #define SHAPES_DIRECT 1
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
31 #define DRAW_FILE 2
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
32
2915
0cde119fc945 C++: Fix initialization and #define reused strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2914
diff changeset
33 #define APP_TITLE "Dynamic Windows C++"
0cde119fc945 C++: Fix initialization and #define reused strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2914
diff changeset
34 #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
35
2932
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
36 #define MAX_WIDGETS 20
2933
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
37 #define BUF_SIZE 1024
2932
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
38
2923
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
39 // Handle the case of very old compilers by using
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
40 // A simple non-lambda example instead.
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
41 #ifndef DW_LAMBDA
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
42
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
43 // Simple C++ Dynamic Windows Example
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
44
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
45 class DWTest : public DW::Window
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
46 {
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
47 public:
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
48 DW::App *app;
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
49
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
50 DWTest() {
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
51 app = DW::App::Init();
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
52
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
53 SetText(APP_TITLE);
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
54 SetSize(200, 200);
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
55 }
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
56 int OnDelete() override {
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
57 if(app->MessageBox(APP_TITLE, DW_MB_YESNO | DW_MB_QUESTION, APP_EXIT) != 0) {
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
58 app->MainQuit();
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
59 }
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
60 return FALSE;
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
61 }
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
62 };
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
63
2924
248e32f744f0 C++: Attempt to get dwtestoo working with old pre-lambda compilers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2923
diff changeset
64 int button_clicked(DW::Clickable *classptr)
2923
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
65 {
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
66 DW::App *app = DW::App::Init();
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
67 app->MessageBox("Button", DW_MB_OK | DW_MB_INFORMATION, "Clicked!");
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
68 return TRUE;
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
69 }
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
70
2924
248e32f744f0 C++: Attempt to get dwtestoo working with old pre-lambda compilers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2923
diff changeset
71 int exit_handler(DW::Clickable *classptr)
2923
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
72 {
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
73 DW::App *app = DW::App::Init();
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
74 if(app->MessageBox(APP_TITLE, DW_MB_YESNO | DW_MB_QUESTION, APP_EXIT) != 0) {
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
75 app->MainQuit();
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
76 }
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
77 return TRUE;
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
78 }
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
79
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
80 int dwmain(int argc, char* argv[])
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
81 {
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
82 DW::App *app = DW::App::Init(argc, argv, "org.dbsoft.dwindows.dwtestoo");
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
83
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
84 app->MessageBox(APP_TITLE, DW_MB_OK | DW_MB_INFORMATION,
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
85 "Warning: You are viewing the simplified version of this sample program.\n\n" \
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
86 "This is because your compiler does not have lambda support.\n\n" \
2957
217ebbee034f Win: Reenable -DAEROGLASS support, it was accidentally removed while testing on Win2k.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2956
diff changeset
87 "Please upgrade to Clang 3.3, GCC 5 or Visual Studio 2015 to see the full sample.");
2923
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
88
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
89 DWTest *window = new DWTest();
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
90 DW::Button *button = new DW::Button("Test window");
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
91
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
92 window->PackStart(button, DW_SIZE_AUTO, DW_SIZE_AUTO, TRUE, TRUE, 0);
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
93 button->ConnectClicked(&button_clicked);
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
94
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
95 DW::MenuBar *mainmenubar = window->MenuBarNew();
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
96
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
97 // add menus to the menubar
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
98 DW::Menu *menu = new DW::Menu();
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
99 DW::MenuItem *menuitem = menu->AppendItem("~Quit");
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
100 menuitem->ConnectClicked(&exit_handler);
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
101
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
102 // Add the "File" menu to the menubar...
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
103 mainmenubar->AppendItem("~File", menu);
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
104
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
105 window->Show();
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
106
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
107 app->Main();
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
108 app->Exit(0);
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
109
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
110 return 0;
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
111 }
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
112 #else
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
113 class DWTest : public DW::Window
2861
ef7a414f9b71 Add initial C++ binding header and example program.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
114 {
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
115 private:
2962
e6072eb914ce C++: Step 4 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2961
diff changeset
116 std::string ResolveKeyName(int vk) {
e6072eb914ce C++: Step 4 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2961
diff changeset
117 std::string keyname;
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
118 switch(vk) {
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
119 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
120 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
121 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
122 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
123 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
124 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
125 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
126 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
127 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
128 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
129 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
130 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
131 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
132 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
133 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
134 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
135 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
136 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
137 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
138 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
139 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
140 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
141 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
142 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
143 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
144 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
145 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
146 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
147 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
148 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
149 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
150 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
151 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
152 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
153 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
154 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
155 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
156 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
157 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
158 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
159 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
160 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
161 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
162 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
163 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
164 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
165 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
166 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
167 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
168 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
169 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
170 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
171 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
172 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
173 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
174 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
175 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
176 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
177 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
178 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
179 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
180 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
181 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
182 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
183 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
184 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
185 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
186 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
187 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
188 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
189 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
190 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
191 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
192 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
193 default: keyname = "<unknown>"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
194 }
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
195 return keyname;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
196 }
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
197
2962
e6072eb914ce C++: Step 4 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2961
diff changeset
198 std::string ResolveKeyModifiers(int mask) {
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
199 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
200 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
201 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
202 return "KC_CTRL KC_SHIFT";
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
203 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
204 return "KC_CTRL KC_ALT";
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
205 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
206 return "KC_SHIFT KC_ALT";
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
207 else if((mask & KC_SHIFT))
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
208 return "KC_SHIFT";
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
209 else if((mask & KC_CTRL))
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
210 return "KC_CTRL";
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
211 else if((mask & KC_ALT))
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
212 return "KC_ALT";
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
213 else return "none";
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
214 }
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
215
2964
2d9521396112 C++: Step 6 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2963
diff changeset
216 char *ReadFile(std::string filename) {
2916
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
217 char *errors = NULL;
2919
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
218 FILE *fp=NULL;
2916
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
219 #ifdef __ANDROID__
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
220 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
221
2919
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
222 // Special way to open for URIs on Android
2964
2d9521396112 C++: Step 6 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2963
diff changeset
223 if(strstr(filename.c_str(), "://"))
2916
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
224 {
2964
2d9521396112 C++: Step 6 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2963
diff changeset
225 fd = dw_file_open(filename.c_str(), O_RDONLY);
2916
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
226 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
227 }
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
228 else
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
229 #endif
2964
2d9521396112 C++: Step 6 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2963
diff changeset
230 fp = fopen(filename.c_str(), "r");
2916
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
231 if(!fp)
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
232 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
233 else
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
234 {
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
235 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
236
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
237 lp = (char **)calloc(1000,sizeof(char *));
2919
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
238 // should test for out of memory
2916
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
239 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
240 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
241 {
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
242 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
243 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
244 break;
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
245 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
246 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
247 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
248 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
249 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
250 }
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
251 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
252 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
253
2916
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
254 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
255 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
256 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
257 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
258 }
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
259 #ifdef __ANDROID__
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
260 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
261 close(fd);
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
262 #endif
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
263 return errors;
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
264 }
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
265
2919
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
266 // When hpm is not NULL we are printing.. so handle things differently
2940
60e90b783cb1 C++: ListBox and ComboBoxes need to call Setup() to configure the handlers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2939
diff changeset
267 void DrawFile(int row, int col, int nrows, int fheight, DW::Pixmap *hpm) {
2919
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
268 DW::Pixmap *pixmap = hpm ? hpm : pixmap2;
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
269 char buf[16] = {0};
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
270 int i,y,fileline;
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
271 char *pLine;
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
272
2964
2d9521396112 C++: Step 6 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2963
diff changeset
273 if(current_file.size())
2919
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
274 {
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
275 pixmap->SetForegroundColor(DW_CLR_WHITE);
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
276 if(!hpm)
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
277 pixmap1->DrawRect(DW_DRAW_FILL | DW_DRAW_NOAA, 0, 0, (int)pixmap1->GetWidth(), (int)pixmap1->GetHeight());
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
278 pixmap->DrawRect(DW_DRAW_FILL | DW_DRAW_NOAA, 0, 0, (int)pixmap->GetWidth(), (int)pixmap->GetHeight());
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
279
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
280 for(i = 0;(i < nrows) && (i+row < num_lines); i++)
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
281 {
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
282 fileline = i + row - 1;
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
283 y = i*fheight;
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
284 pixmap->SetColor(fileline < 0 ? DW_CLR_WHITE : fileline % 16, 1 + (fileline % 15));
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
285 if(!hpm)
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
286 {
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
287 snprintf(buf, 15, "%6.6d", i+row);
2920
c6b699a441fe C++: Fix a couple minor errors while attempting to fix Mac crash.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2919
diff changeset
288 pixmap1->DrawText(0, y, buf);
2919
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
289 }
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
290 pLine = lp[i+row];
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
291 pixmap->DrawText(0, y, pLine+col);
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
292 }
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
293 }
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
294 }
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
295
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
296 // When hpm is not NULL we are printing.. so handle things differently
2940
60e90b783cb1 C++: ListBox and ComboBoxes need to call Setup() to configure the handlers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2939
diff changeset
297 void DrawShapes(int direct, DW::Pixmap *hpm) {
2919
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
298 DW::Pixmap *pixmap = hpm ? hpm : pixmap2;
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
299 int width = (int)pixmap->GetWidth(), height = (int)pixmap->GetHeight();
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
300 int x[7] = { 20, 180, 180, 230, 180, 180, 20 };
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
301 int y[7] = { 50, 50, 20, 70, 120, 90, 90 };
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
302 DW::Drawable *drawable = direct ? static_cast<DW::Drawable *>(render2) : static_cast<DW::Drawable *>(pixmap);
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
303
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
304 drawable->SetForegroundColor(DW_CLR_WHITE);
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
305 drawable->DrawRect(DW_DRAW_FILL | DW_DRAW_NOAA, 0, 0, width, height);
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
306 drawable->SetForegroundColor(DW_CLR_DARKPINK);
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
307 drawable->DrawRect(DW_DRAW_FILL | DW_DRAW_NOAA, 10, 10, width - 20, height - 20);
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
308 drawable->SetColor(DW_CLR_GREEN, DW_CLR_DARKRED);
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
309 drawable->DrawText(10, 10, "This should be aligned with the edges.");
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
310 drawable->SetForegroundColor(DW_CLR_YELLOW);
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
311 drawable->DrawLine(width - 10, 10, 10, height - 10);
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
312 drawable->SetForegroundColor(DW_CLR_BLUE);
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
313 drawable->DrawPolygon(DW_DRAW_FILL, 7, x, y);
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
314 drawable->SetForegroundColor(DW_CLR_BLACK);
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
315 drawable->DrawRect(DW_DRAW_FILL | DW_DRAW_NOAA, 80, 80, 80, 40);
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
316 drawable->SetForegroundColor(DW_CLR_CYAN);
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
317 // Bottom right corner
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
318 drawable->DrawArc(0, width - 30, height - 30, width - 10, height - 30, width - 30, height - 10);
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
319 // Top right corner
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
320 drawable->DrawArc(0, width - 30, 30, width - 30, 10, width - 10, 30);
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
321 // Bottom left corner
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
322 drawable->DrawArc(0, 30, height - 30, 30, height - 10, 10, height - 30);
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
323 // Full circle in the left top area
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
324 drawable->DrawArc(DW_DRAW_FULL, 120, 100, 80, 80, 160, 120);
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
325 if(image && image->GetHPIXMAP())
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
326 {
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
327 if(imagestretchcheck->Get())
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
328 drawable->BitBltStretch(0, 10, width - 20, height - 20, image, 0, 0, (int)image->GetWidth(), (int)image->GetHeight());
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
329 else
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
330 drawable->BitBlt(imagexspin->GetPos(), imageyspin->GetPos(), (int)image->GetWidth(), (int)image->GetHeight(), image, 0, 0);
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
331 }
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
332 }
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
333
2940
60e90b783cb1 C++: ListBox and ComboBoxes need to call Setup() to configure the handlers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2939
diff changeset
334 void UpdateRender(void) {
2919
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
335 switch(render_type)
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
336 {
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
337 case SHAPES_DOUBLE_BUFFERED:
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
338 DrawShapes(FALSE, NULL);
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
339 break;
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
340 case SHAPES_DIRECT:
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
341 DrawShapes(TRUE, NULL);
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
342 break;
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
343 case DRAW_FILE:
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
344 DrawFile(current_row, current_col, rows, font_height, NULL);
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
345 break;
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
346 }
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
347 }
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
348
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
349 // Request that the render widgets redraw...
2938
1184f58135ba C++: Eliminate remnants of C code I missed while porting to C++.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2935
diff changeset
350 // If not using direct rendering, call UpdateRender() to
2919
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
351 // redraw the in memory pixmaps. Then trigger the expose events.
2939
ebbc5b16899e C++: Another couple fixes, context menus and PackAtIndex that got lost during porting.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2938
diff changeset
352 // Expose will call UpdateRender() to draw directly or bitblt the pixmaps.
2916
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
353 void RenderDraw() {
2919
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
354 // If we are double buffered, draw to the pixmaps
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
355 if(render_type != SHAPES_DIRECT)
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
356 UpdateRender();
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
357 // Trigger expose event
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
358 render1->Redraw();
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
359 render2->Redraw();
2916
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
360 }
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
361
2963
531d36ebf37a C++: Step 5 of the std::string transition. Hopefully the last step.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2962
diff changeset
362 DW::Menu *ItemContextMenu(DW::StatusText *status_text, std::string text) {
2929
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
363 DW::Menu *menu = new DW::Menu();
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
364 DW::Menu *submenu = new DW::Menu();
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
365 DW::MenuItem *menuitem = submenu->AppendItem("File", 0L, TRUE);
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
366 menuitem->ConnectClicked([status_text, text]() -> int { status_text->SetText(text); return TRUE; });
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
367 menuitem->ConnectClicked([status_text, text]() -> int { status_text->SetText(text); return TRUE; });
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
368 menuitem = submenu->AppendItem("Date", 0L, TRUE);
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
369 menuitem->ConnectClicked([status_text, text]() -> int { status_text->SetText(text); return TRUE; });
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
370 menuitem = submenu->AppendItem("Size", 0L, TRUE);
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
371 menuitem->ConnectClicked([status_text, text]() -> int { status_text->SetText(text); return TRUE; });
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
372 menuitem = submenu->AppendItem("None", 0L, TRUE);
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
373 menuitem->ConnectClicked([status_text, text]() -> int { status_text->SetText(text); return TRUE; });
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
374
2942
63d7baebb0d4 C++: Fix the popup menu code, was putting items on the wrong menu.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2940
diff changeset
375 menuitem = menu->AppendItem("Sort", submenu);
2929
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
376
2942
63d7baebb0d4 C++: Fix the popup menu code, was putting items on the wrong menu.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2940
diff changeset
377 menuitem = menu->AppendItem("Make Directory");
2929
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
378 menuitem->ConnectClicked([status_text, text]() -> int { status_text->SetText(text); return TRUE; });
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
379
2942
63d7baebb0d4 C++: Fix the popup menu code, was putting items on the wrong menu.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2940
diff changeset
380 menuitem = menu->AppendItem(DW_MENU_SEPARATOR);
63d7baebb0d4 C++: Fix the popup menu code, was putting items on the wrong menu.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2940
diff changeset
381 menuitem = menu->AppendItem("Rename Entry");
2929
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
382 menuitem->ConnectClicked([status_text, text]() -> int { status_text->SetText(text); return TRUE; });
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
383
2942
63d7baebb0d4 C++: Fix the popup menu code, was putting items on the wrong menu.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2940
diff changeset
384 menuitem = menu->AppendItem("Delete Entry");
2929
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
385 menuitem->ConnectClicked([status_text, text]() -> int { status_text->SetText(text); return TRUE; });
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
386
2942
63d7baebb0d4 C++: Fix the popup menu code, was putting items on the wrong menu.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2940
diff changeset
387 menuitem = menu->AppendItem(DW_MENU_SEPARATOR);
63d7baebb0d4 C++: Fix the popup menu code, was putting items on the wrong menu.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2940
diff changeset
388 menuitem = menu->AppendItem("View File");
2929
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
389 menuitem->ConnectClicked([status_text, text]() -> int { status_text->SetText(text); return TRUE; });
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
390
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
391 return menu;
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
392 }
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
393
2940
60e90b783cb1 C++: ListBox and ComboBoxes need to call Setup() to configure the handlers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2939
diff changeset
394 DW::ComboBox *ColorCombobox(void) {
2930
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
395 DW::ComboBox *combobox = new DW::ComboBox("DW_CLR_DEFAULT");
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
396
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
397 combobox->Append("DW_CLR_DEFAULT");
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
398 combobox->Append("DW_CLR_BLACK");
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
399 combobox->Append("DW_CLR_DARKRED");
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
400 combobox->Append("DW_CLR_DARKGREEN");
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
401 combobox->Append("DW_CLR_BROWN");
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
402 combobox->Append("DW_CLR_DARKBLUE");
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
403 combobox->Append("DW_CLR_DARKPINK");
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
404 combobox->Append("DW_CLR_DARKCYAN");
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
405 combobox->Append("DW_CLR_PALEGRAY");
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
406 combobox->Append("DW_CLR_DARKGRAY");
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
407 combobox->Append("DW_CLR_RED");
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
408 combobox->Append("DW_CLR_GREEN");
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
409 combobox->Append("DW_CLR_YELLOW");
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
410 combobox->Append("DW_CLR_BLUE");
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
411 combobox->Append("DW_CLR_PINK");
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
412 combobox->Append("DW_CLR_CYAN");
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
413 combobox->Append("DW_CLR_WHITE");
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
414 return combobox;
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
415 }
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
416
2961
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
417 unsigned long ComboboxColor(std::string colortext) {
2930
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
418 unsigned long color = DW_CLR_DEFAULT;
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
419
2961
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
420 if(colortext.compare("DW_CLR_BLACK") == 0)
2930
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
421 color = DW_CLR_BLACK;
2961
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
422 else if(colortext.compare("DW_CLR_DARKRED") == 0)
2930
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
423 color = DW_CLR_DARKRED;
2961
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
424 else if(colortext.compare("DW_CLR_DARKGREEN") == 0)
2930
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
425 color = DW_CLR_DARKGREEN;
2961
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
426 else if(colortext.compare("DW_CLR_BROWN") == 0)
2930
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
427 color = DW_CLR_BROWN;
2961
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
428 else if(colortext.compare("DW_CLR_DARKBLUE") == 0)
2930
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
429 color = DW_CLR_DARKBLUE;
2961
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
430 else if(colortext.compare("DW_CLR_DARKPINK") == 0)
2930
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
431 color = DW_CLR_DARKPINK;
2961
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
432 else if(colortext.compare("DW_CLR_DARKCYAN") == 0)
2930
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
433 color = DW_CLR_DARKCYAN;
2961
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
434 else if(colortext.compare("DW_CLR_PALEGRAY") == 0)
2930
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
435 color = DW_CLR_PALEGRAY;
2961
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
436 else if(colortext.compare("DW_CLR_DARKGRAY") == 0)
2930
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
437 color = DW_CLR_DARKGRAY;
2961
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
438 else if(colortext.compare("DW_CLR_RED") == 0)
2930
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
439 color = DW_CLR_RED;
2961
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
440 else if(colortext.compare("DW_CLR_GREEN") == 0)
2930
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
441 color = DW_CLR_GREEN;
2961
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
442 else if(colortext.compare("DW_CLR_YELLOW") == 0)
2930
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
443 color = DW_CLR_YELLOW;
2961
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
444 else if(colortext.compare("DW_CLR_BLUE") == 0)
2930
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
445 color = DW_CLR_BLUE;
2961
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
446 else if(colortext.compare("DW_CLR_PINK") == 0)
2930
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
447 color = DW_CLR_PINK;
2961
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
448 else if(colortext.compare("DW_CLR_CYAN") == 0)
2930
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
449 color = DW_CLR_CYAN;
2961
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
450 else if(colortext.compare("DW_CLR_WHITE") == 0)
2930
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
451 color = DW_CLR_WHITE;
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
452
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
453 return color;
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
454 }
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
455
2961
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
456 void MLESetFont(DW::MLE *mle, int fontsize, std::string fontname) {
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
457 if(fontname.size() && fontsize > 0) {
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
458 mle->SetFont(std::to_string(fontsize) + "." + fontname);
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
459 }
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
460 mle->SetFont(NULL);
2930
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
461 }
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
462
2933
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
463 // Thread and Event functions
2963
531d36ebf37a C++: Step 5 of the std::string transition. Hopefully the last step.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2962
diff changeset
464 void UpdateMLE(DW::MLE *threadmle, std::string text, DW::Mutex *mutex) {
2933
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
465 static unsigned int pos = 0;
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
466
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
467 // Protect pos from being changed by different threads
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
468 if(mutex)
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
469 mutex->Lock();
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
470 pos = threadmle->Import(text, pos);
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
471 threadmle->SetCursor(pos);
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
472 if(mutex)
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
473 mutex->Unlock();
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
474 }
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
475
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
476 void RunThread(int threadnum, DW::Mutex *mutex, DW::Event *controlevent, DW::Event *workevent, DW::MLE *threadmle) {
2963
531d36ebf37a C++: Step 5 of the std::string transition. Hopefully the last step.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2962
diff changeset
477 std::string buf;
2933
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
478
2963
531d36ebf37a C++: Step 5 of the std::string transition. Hopefully the last step.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2962
diff changeset
479 buf = "Thread " + std::to_string(threadnum) + " started.\r\n";
2933
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
480 UpdateMLE(threadmle, buf, mutex);
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
481
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
482 // Increment the ready count while protected by mutex
2934
6d3da42f63af C++: Fix a couple issues reported by GCC 6 on PPC Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2933
diff changeset
483 mutex->Lock();
2933
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
484 ready++;
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
485 // If all 4 threads have incrememted the ready count...
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
486 // Post the control event semaphore so things will get started.
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
487 if(ready == 4)
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
488 controlevent->Post();
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
489 mutex->Unlock();
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
490
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
491 while(!finished)
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
492 {
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
493 int result = workevent->Wait(2000);
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
494
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
495 if(result == DW_ERROR_TIMEOUT)
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
496 {
2963
531d36ebf37a C++: Step 5 of the std::string transition. Hopefully the last step.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2962
diff changeset
497 buf = "Thread " + std::to_string(threadnum) + " timeout waiting for event.\r\n";
2933
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
498 UpdateMLE(threadmle, buf, mutex);
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
499 }
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
500 else if(result == DW_ERROR_NONE)
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
501 {
2963
531d36ebf37a C++: Step 5 of the std::string transition. Hopefully the last step.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2962
diff changeset
502 buf = "Thread " + std::to_string(threadnum) + " doing some work.\r\n";
2933
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
503 UpdateMLE(threadmle, buf, mutex);
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
504 // Pretend to do some work
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
505 app->MainSleep(1000 * threadnum);
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
506
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
507 // Increment the ready count while protected by mutex
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
508 mutex->Lock();
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
509 ready++;
2963
531d36ebf37a C++: Step 5 of the std::string transition. Hopefully the last step.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2962
diff changeset
510 buf = "Thread " + std::to_string(threadnum) + " work done. ready=" + std::to_string(ready);
2933
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
511 // If all 4 threads have incrememted the ready count...
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
512 // Post the control event semaphore so things will get started.
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
513 if(ready == 4)
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
514 {
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
515 controlevent->Post();
2963
531d36ebf37a C++: Step 5 of the std::string transition. Hopefully the last step.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2962
diff changeset
516 buf += " Control posted.";
2933
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
517 }
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
518 mutex->Unlock();
2963
531d36ebf37a C++: Step 5 of the std::string transition. Hopefully the last step.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2962
diff changeset
519 buf += "\r\n";
2933
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
520 UpdateMLE(threadmle, buf, mutex);
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
521 }
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
522 else
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
523 {
2963
531d36ebf37a C++: Step 5 of the std::string transition. Hopefully the last step.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2962
diff changeset
524 buf = "Thread " + std::to_string(threadnum) + " error " + std::to_string(result) + ".\r\n";
2933
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
525 UpdateMLE(threadmle, buf, mutex);
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
526 app->MainSleep(10000);
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
527 }
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
528 }
2963
531d36ebf37a C++: Step 5 of the std::string transition. Hopefully the last step.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2962
diff changeset
529 buf = "Thread " + std::to_string(threadnum) + " finished.\r\n";
2933
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
530 UpdateMLE(threadmle, buf, mutex);
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
531 }
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
532
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
533 void ControlThread(DW::Mutex *mutex, DW::Event *controlevent, DW::Event *workevent, DW::MLE *threadmle) {
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
534 int inprogress = 5;
2963
531d36ebf37a C++: Step 5 of the std::string transition. Hopefully the last step.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2962
diff changeset
535 std::string buf;
2933
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
536
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
537 while(inprogress)
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
538 {
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
539 int result = controlevent->Wait(2000);
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
540
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
541 if(result == DW_ERROR_TIMEOUT)
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
542 {
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
543 UpdateMLE(threadmle, "Control thread timeout waiting for event.\r\n", mutex);
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
544 }
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
545 else if(result == DW_ERROR_NONE)
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
546 {
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
547 // Reset the control event
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
548 controlevent->Reset();
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
549 ready = 0;
2963
531d36ebf37a C++: Step 5 of the std::string transition. Hopefully the last step.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2962
diff changeset
550 buf = "Control thread starting worker threads. Inprogress=" + std::to_string(inprogress) + "\r\n";
2933
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
551 UpdateMLE(threadmle, buf, mutex);
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
552 // Start the work threads
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
553 workevent->Post();
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
554 app->MainSleep(100);
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
555 // Reset the work event
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
556 workevent->Reset();
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
557 inprogress--;
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
558 }
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
559 else
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
560 {
2963
531d36ebf37a C++: Step 5 of the std::string transition. Hopefully the last step.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2962
diff changeset
561 buf = "Control thread error " + std::to_string(result) + ".\r\n";
2933
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
562 UpdateMLE(threadmle, buf, mutex);
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
563 app->MainSleep(10000);
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
564 }
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
565 }
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
566 // Tell the other threads we are done
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
567 finished = TRUE;
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
568 workevent->Post();
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
569 // Close the control event
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
570 controlevent->Close();
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
571 UpdateMLE(threadmle, "Control thread finished.\r\n", mutex);
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
572 }
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
573
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
574 // 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
575 void CreateMenus() {
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
576 // Setup the menu
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
577 DW::MenuBar *menubar = this->MenuBarNew();
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
578
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
579 // add menus to the menubar
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
580 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
581 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
582 menuitem->ConnectClicked([this] () -> int
2915
0cde119fc945 C++: Fix initialization and #define reused strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2914
diff changeset
583 {
0cde119fc945 C++: Fix initialization and #define reused strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2914
diff changeset
584 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
585 this->app->MainQuit();
0cde119fc945 C++: Fix initialization and #define reused strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2914
diff changeset
586 }
0cde119fc945 C++: Fix initialization and #define reused strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2914
diff changeset
587 return TRUE;
0cde119fc945 C++: Fix initialization and #define reused strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2914
diff changeset
588 });
2889
4b075e64536c C++: Add some simple menu code to see if things are working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2883
diff changeset
589
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
590 // 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
591 menubar->AppendItem("~File", menu);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
592
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
593 menu = new DW::Menu();
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
594 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
595 checkable_menuitem->ConnectClicked([this]() -> int
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
596 {
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
597 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
598 return FALSE;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
599 });
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
600 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
601 noncheckable_menuitem->ConnectClicked([this]() -> int
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
602 {
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
603 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
604 return FALSE;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
605 });
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
606 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
607 // separator
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
608 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
609 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
610 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
611 {
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
612 // Toggle the variable
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
613 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
614 // 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
615 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
616 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
617 return FALSE;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
618 });
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
619 // 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
620 menubar->AppendItem("~Menu", menu);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
621
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
622 menu = new DW::Menu();
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
623 menuitem = menu->AppendItem("~About");
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
624 menuitem->ConnectClicked([this]() -> int
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
625 {
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
626 DWEnv env;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
627
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
628 this->app->GetEnvironment(&env);
2915
0cde119fc945 C++: Fix initialization and #define reused strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2914
diff changeset
629 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
630 "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
631 env.osName, env.buildDate, env.buildTime,
0cde119fc945 C++: Fix initialization and #define reused strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2914
diff changeset
632 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
633 env.htmlEngine,
0cde119fc945 C++: Fix initialization and #define reused strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2914
diff changeset
634 env.DWMajorVersion, env.DWMinorVersion, env.DWSubVersion,
0cde119fc945 C++: Fix initialization and #define reused strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2914
diff changeset
635 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
636 return FALSE;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
637 });
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
638 // 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
639 menubar->AppendItem("~Help", menu);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
640 }
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
641
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
642 // Notebook page 1
2940
60e90b783cb1 C++: ListBox and ComboBoxes need to call Setup() to configure the handlers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2939
diff changeset
643 void CreateInput(DW::Box *notebookbox) {
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
644 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
645
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
646 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
647
2933
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
648 // Copy and Paste
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
649 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
650 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
651
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
652 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
653 copypastefield->SetLimit(260);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
654 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
655
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
656 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
657 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
658
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
659 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
660 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
661
2933
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
662 // Archive Name
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
663 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
664 stext->SetStyle(DW_DT_VCENTER);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
665 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
666
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
667 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
668 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
669
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
670 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
671 entryfield->SetLimit(260);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
672 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
673
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
674 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
675 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
676
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
677 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
678 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
679
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
680 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
681 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
682
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
683 // Buttons
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
684 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
685 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
686
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
687 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
688 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
689
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
690 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
691 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
692
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
693 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
694 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
695
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
696 cancelbutton->Unpack();
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
697 buttonbox->PackStart(cancelbutton, 130, 30, TRUE, TRUE, 2);
2939
ebbc5b16899e C++: Another couple fixes, context menus and PackAtIndex that got lost during porting.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2938
diff changeset
698 this->ClickDefault(cancelbutton);
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
699
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
700 DW::Button *colorchoosebutton = new DW::Button("Color Chooser Dialog");
2939
ebbc5b16899e C++: Another couple fixes, context menus and PackAtIndex that got lost during porting.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2938
diff changeset
701 buttonbox->PackAtIndex(colorchoosebutton, 1, 130, 30, TRUE, TRUE, 2);
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
702
2933
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
703 // Set some nice fonts and colors
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
704 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
705 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
706 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
707 #ifdef COLOR_DEBUG
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
708 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
709 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
710 // 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
711 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
712 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
713 // 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
714 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
715 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
716 #endif
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
717
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
718 // Connect signals
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
719 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
720 {
2964
2d9521396112 C++: Step 6 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2963
diff changeset
721 std::string tmp = this->app->FileBrowse("Pick a file", "dwtest.c", "c", DW_FILE_OPEN);
2d9521396112 C++: Step 6 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2963
diff changeset
722 if(tmp.size())
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
723 {
2916
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
724 char *errors = ReadFile(tmp);
2963
531d36ebf37a C++: Step 5 of the std::string transition. Hopefully the last step.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2962
diff changeset
725 std::string title = "New file load";
531d36ebf37a C++: Step 5 of the std::string transition. Hopefully the last step.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2962
diff changeset
726 std::string image = "image/test.png";
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
727 DW::Notification *notification;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
728
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
729 if(errors)
2963
531d36ebf37a C++: Step 5 of the std::string transition. Hopefully the last step.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2962
diff changeset
730 notification = new DW::Notification(title, image, std::string(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
731 else
2963
531d36ebf37a C++: Step 5 of the std::string transition. Hopefully the last step.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2962
diff changeset
732 notification = new DW::Notification(title, image, std::string(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
733
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
734 current_file = tmp;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
735 entryfield->SetText(current_file);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
736 current_col = current_row = 0;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
737
2916
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
738 RenderDraw();
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
739 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
740 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
741 return TRUE;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
742 });
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
743 notification->Send();
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
744 }
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
745 copypastefield->SetFocus();
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
746 return FALSE;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
747 });
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
748
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
749 browsefolderbutton->ConnectClicked([this]() -> int
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
750 {
2964
2d9521396112 C++: Step 6 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2963
diff changeset
751 std::string tmp = this->app->FileBrowse("Pick a folder", ".", "c", DW_DIRECTORY_OPEN);
2d9521396112 C++: Step 6 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2963
diff changeset
752 this->app->Debug("Folder picked: " + (tmp.size() ? tmp : "None") + "\n");
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
753 return FALSE;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
754 });
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
755
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
756 copybutton->ConnectClicked([this, copypastefield, entryfield]() -> int {
2961
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
757 std::string test = copypastefield->GetText();
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
758
2961
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
759 if(test.size()) {
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
760 this->app->SetClipboard(test);
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 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
763 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
764 });
2889
4b075e64536c C++: Add some simple menu code to see if things are working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2883
diff changeset
765
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
766 pastebutton->ConnectClicked([this, copypastefield]() -> int
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
767 {
2961
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
768 std::string test = this->app->GetClipboard();
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
769 if(test.size()) {
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
770 copypastefield->SetText(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
771 }
4b075e64536c C++: Add some simple menu code to see if things are working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2883
diff changeset
772 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
773 });
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
774
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
775 okbutton->ConnectClicked([this]() -> int
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 if(this->timer) {
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
778 delete this->timer;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
779 this->timer = DW_NULL;
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 return TRUE;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
782 });
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
783
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
784 cancelbutton->ConnectClicked([this] () -> int
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
785 {
2915
0cde119fc945 C++: Fix initialization and #define reused strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2914
diff changeset
786 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
787 this->app->MainQuit();
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
788 }
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
789 return TRUE;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
790 });
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
791
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
792 cursortogglebutton->ConnectClicked([this, cursortogglebutton] () -> int
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 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
795 "Set Cursor pointer - CLOCK");
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
796 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
797 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
798 return FALSE;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
799 });
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 colorchoosebutton->ConnectClicked([this]() -> int
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
802 {
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
803 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
804 return FALSE;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
805 });
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
806 }
2917
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
807
2929
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
808 // Notebook 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
809 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
810 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
811 wchar_t widestring[100] = L"DWTest Wide";
2938
1184f58135ba C++: Eliminate remnants of C code I missed while porting to C++.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2935
diff changeset
812 char *utf8string = app->WideToUTF8(widestring);
2917
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
813
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
814 // 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
815 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
816 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
817
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
818 // 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
819 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
820 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
821
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
822 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
823 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
824
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
825 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
826 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
827 // 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
828 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
829 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
830
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
831 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
832 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
833 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
834 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
835 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
836
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
837 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
838 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
839 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
840
2919
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
841 imagexspin = new DW::SpinButton("20");
2917
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
842 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
843
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
844 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
845 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
846 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
847
2919
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
848 imageyspin = new DW::SpinButton("20");
2917
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
849 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
850 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
851 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
852 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
853 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
854
2919
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
855 imagestretchcheck = new DW::CheckBox("Stretch");
2917
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
856 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
857
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
858 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
859 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
860
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
861 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
862 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
863
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
864 // 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
865 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
866 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
867 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
868 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
869
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
870 // 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
871 // 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
872 if(!vscrollbarwidth)
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
873 vscrollbarwidth = 8;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
874 if(!hscrollbarheight)
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
875 hscrollbarheight = 8;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
876
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
877 // Create render box for line number pixmap
2919
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
878 render1 = new DW::Render();
2917
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
879 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
880 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
881 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
882
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
883 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
884 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
885 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
886 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
887
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
888 // 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
889 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
890
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
891 // 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
892 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
893 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
894
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
895 // create render box for filecontents pixmap
2919
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
896 render2 = new DW::Render();
2917
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
897 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
898 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
899 // 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
900 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
901
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
902 // 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
903 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
904 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
905 // 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
906 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
907 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
908
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
909 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
910 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
911 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
912 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
913 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
914 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
915 {
2961
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
916 std::string appdir = app->GetDir();
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
917 appdir.append(std::string(1, DW_DIR_SEPARATOR));
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
918 appdir.append("test");
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
919 image = new DW::Pixmap(render1, appdir);
2917
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
920 }
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
921 if(image)
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
922 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
923
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
924 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
925 if(utf8string)
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
926 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
927 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
928 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
929
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
930 // 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
931 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
932 {
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
933 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
934 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
935 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
936
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
937 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
938 {
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
939 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
940 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
941 }
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
942 return TRUE;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
943 });
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
944
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
945
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
946 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
947 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
948 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
949 {
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
950 this->Show();
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
951 this->Raise();
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
952 return TRUE;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
953 });
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
954
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
955 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
956 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
957 return TRUE;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
958 });
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
959
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
960 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
961 {
2919
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
962 if(render_type != SHAPES_DIRECT)
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
963 {
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
964 this->render1->BitBlt(0, 0, (int)pixmap1->GetWidth(), (int)pixmap1->GetHeight(), pixmap1, 0, 0);
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
965 render1->Flush();
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
966 }
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
967 else
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
968 {
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
969 UpdateRender();
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
970 }
2917
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
971 return TRUE;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
972 });
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
973
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
974 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
975 {
2919
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
976 if(render_type != SHAPES_DIRECT)
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
977 {
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
978 this->render2->BitBlt(0, 0, (int)pixmap2->GetWidth(), (int)pixmap2->GetHeight(), pixmap2, 0, 0);
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
979 render2->Flush();
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
980 }
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
981 else
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
982 {
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
983 UpdateRender();
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
984 }
2917
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
985 return TRUE;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
986 });
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
987
2962
e6072eb914ce C++: Step 4 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2961
diff changeset
988 render2->ConnectKeyPress([this, status1](char ch, int vk, int state, std::string utf8) -> int
2917
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
989 {
2962
e6072eb914ce C++: Step 4 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2961
diff changeset
990 std::string buf = "Key: ";
e6072eb914ce C++: Step 4 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2961
diff changeset
991
2917
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
992 if(ch)
2962
e6072eb914ce C++: Step 4 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2961
diff changeset
993 buf += std::string(1, ch) + "(" + std::to_string((int)ch) + ")";
2917
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
994 else
2962
e6072eb914ce C++: Step 4 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2961
diff changeset
995 buf += ResolveKeyName(vk) + "(" + std::to_string(vk) + ")";
e6072eb914ce C++: Step 4 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2961
diff changeset
996
e6072eb914ce C++: Step 4 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2961
diff changeset
997 buf += " Modifiers: " + ResolveKeyModifiers(state) + "(" + std::to_string(state) + ") utf8 " + utf8;
e6072eb914ce C++: Step 4 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2961
diff changeset
998
e6072eb914ce C++: Step 4 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2961
diff changeset
999 status1->SetText(buf);
2917
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1000 return FALSE;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1001 });
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1002
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1003 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
1004 {
2963
531d36ebf37a C++: Step 5 of the std::string transition. Hopefully the last step.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2962
diff changeset
1005 std::string buf = "Row:" + std::to_string(current_row) + " Col:" + std::to_string(current_col) + " Lines:" + std::to_string(num_lines) + " Cols:" + std::to_string(max_linewidth);
2917
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1006
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1007 this->current_col = value;
2963
531d36ebf37a C++: Step 5 of the std::string transition. Hopefully the last step.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2962
diff changeset
1008 status1->SetText(buf);
2917
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1009 this->RenderDraw();
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1010 return TRUE;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1011 });
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1012
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1013 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
1014 {
2963
531d36ebf37a C++: Step 5 of the std::string transition. Hopefully the last step.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2962
diff changeset
1015 std::string buf = "Row:" + std::to_string(current_row) + " Col:" + std::to_string(current_col) + " Lines:" + std::to_string(num_lines) + " Cols:" + std::to_string(max_linewidth);
2917
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1016
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1017 this->current_row = value;
2963
531d36ebf37a C++: Step 5 of the std::string transition. Hopefully the last step.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2962
diff changeset
1018 status1->SetText(buf);
2917
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1019 this->RenderDraw();
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1020 return TRUE;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1021 });
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1022
2919
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
1023 render2->ConnectMotionNotify([status2](int x, int y, int buttonmask) -> int
2917
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1024 {
2963
531d36ebf37a C++: Step 5 of the std::string transition. Hopefully the last step.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2962
diff changeset
1025 std::string buf = "motion_notify: " + std::to_string(x) + "x" + std::to_string(y) + " buttons " + std::to_string(buttonmask);
2917
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1026
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1027 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
1028 return FALSE;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1029 });
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1030
2919
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
1031 render2->ConnectButtonPress([status2](int x, int y, int buttonmask) -> int
2917
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1032 {
2963
531d36ebf37a C++: Step 5 of the std::string transition. Hopefully the last step.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2962
diff changeset
1033 std::string buf = "button_press: " + std::to_string(x) + "x" + std::to_string(y) + " buttons " + std::to_string(buttonmask);
2917
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1034
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1035 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
1036 return FALSE;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1037 });
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1038
2919
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
1039 render2->ConnectConfigure([this](int width, int height) -> int
2917
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1040 {
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1041 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
1042
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1043 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
1044 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
1045
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1046 // Create new pixmaps with the current sizes
2919
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
1047 this->pixmap1 = new DW::Pixmap(this->render1, (unsigned long)(font_width*(width1)), (unsigned long)height);
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
1048 this->pixmap2 = new DW::Pixmap(this->render2, (unsigned long)width, (unsigned long)height);
2917
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1049
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1050 // 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
1051 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
1052 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
1053
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1054 // 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
1055 delete old1;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1056 delete old2;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1057
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1058 // 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
1059 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
1060 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
1061
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1062 // 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
1063 this->RenderDraw();
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1064 return TRUE;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1065 });
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1066
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1067 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
1068 {
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1069 this->RenderDraw();
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1070 return TRUE;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1071 });
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1072
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1073 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
1074 {
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1075 this->RenderDraw();
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1076 return TRUE;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1077 });
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1078
2921
235fef840df2 C++: Implement Print class and enable the print code in dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2920
diff changeset
1079 printbutton->ConnectClicked([this]() -> int
2917
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1080 {
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1081 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
1082 {
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1083 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
1084 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
1085 {
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1086 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
1087 }
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1088 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
1089 {
2933
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
1090 // Get the font size for this printer context...
2917
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1091 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
1092
2933
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
1093 // If we have a file to display...
2964
2d9521396112 C++: Step 6 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2963
diff changeset
1094 if(current_file.size())
2917
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1095 {
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1096 int nrows;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1097
2933
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
1098 // Calculate new dimensions
2917
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1099 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
1100 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
1101
2933
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
1102 // Do the actual drawing
2917
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1103 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
1104 }
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1105 else
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1106 {
2933
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
1107 // We don't have a file so center an error message on the page
2963
531d36ebf37a C++: Step 5 of the std::string transition. Hopefully the last step.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2962
diff changeset
1108 std::string text = "No file currently selected!";
2917
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1109 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
1110
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1111 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
1112
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1113 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
1114 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
1115
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1116 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
1117 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
1118 }
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1119 }
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1120 return TRUE;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1121 });
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1122 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
1123 return TRUE;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1124 });
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1125
2930
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1126 rendcombo->ConnectListSelect([this](unsigned int index) -> int
2919
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
1127 {
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
1128 if(index != this->render_type)
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
1129 {
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
1130 if(index == DRAW_FILE)
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
1131 {
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
1132 this->hscrollbar->SetRange(max_linewidth, cols);
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
1133 this->hscrollbar->SetPos(0);
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
1134 this->vscrollbar->SetRange(num_lines, rows);
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
1135 this->vscrollbar->SetPos(0);
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
1136 this->current_col = this->current_row = 0;
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
1137 }
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
1138 else
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
1139 {
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
1140 this->hscrollbar->SetRange(0, 0);
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
1141 this->hscrollbar->SetPos(0);
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
1142 this->vscrollbar->SetRange(0, 0);
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
1143 this->vscrollbar->SetPos(0);
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
1144 }
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
1145 this->render_type = index;
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
1146 this->RenderDraw();
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
1147 }
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
1148 return FALSE;
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
1149 });
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
1150
2917
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1151 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
1152 }
2929
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
1153
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
1154 // Notebook page 3
2940
60e90b783cb1 C++: ListBox and ComboBoxes need to call Setup() to configure the handlers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2939
diff changeset
1155 void CreateTree(DW::Box *notebookbox) {
2929
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
1156 // create a box to pack into the notebook page
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
1157 DW::ListBox *listbox = new DW::ListBox(TRUE);
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
1158 notebookbox->PackStart(listbox, 500, 200, TRUE, TRUE, 0);
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
1159 listbox->Append("Test 1");
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
1160 listbox->Append("Test 2");
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
1161 listbox->Append("Test 3");
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
1162 listbox->Append("Test 4");
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
1163 listbox->Append("Test 5");
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
1164
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
1165 // now a tree area under this box
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
1166 DW::Tree *tree = new DW::Tree();
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
1167 if(tree->GetHWND())
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
1168 {
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
1169 notebookbox->PackStart(tree, 500, 200, TRUE, TRUE, 1);
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
1170
2933
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
1171 // and a status area to see whats going on
2929
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
1172 DW::StatusText *tree_status = new DW::StatusText();
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
1173 notebookbox->PackStart(tree_status, 100, DW_SIZE_AUTO, TRUE, FALSE, 1);
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
1174
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
1175 // set up our signal trappers...
2961
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
1176 tree->ConnectItemContext([this, tree_status](std::string text, int x, int y, void *data) -> int
2929
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
1177 {
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
1178 DW::Menu *popupmenu = ItemContextMenu(tree_status, "Item context menu clicked.");
2961
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
1179 std::string buf = "DW_SIGNAL_ITEM_CONTEXT: Text: " + text + " x: " + std::to_string(x) + " y: " + std::to_string(y);
2929
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
1180 tree_status->SetText(buf);
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
1181 popupmenu->Popup(this, x, y);
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
1182 return FALSE;
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
1183 });
2961
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
1184 tree->ConnectItemSelect([tree_status](HTREEITEM item, std::string text, void *itemdata)
2929
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
1185 {
2961
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
1186 std::string sitem = std::to_string(DW_POINTER_TO_UINT(item));
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
1187 std::string sitemdata = std::to_string(DW_POINTER_TO_UINT(itemdata));
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
1188 std::string buf = "DW_SIGNAL_ITEM_SELECT: Item: " + sitem + " Text: " + text + " Itemdata: " + sitemdata;
2929
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
1189 tree_status->SetText(buf);
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
1190 return FALSE;
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
1191 });
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
1192
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
1193 HTREEITEM t1 = tree->Insert("tree folder 1", foldericon, DW_NULL, DW_INT_TO_POINTER(1));
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
1194 HTREEITEM t2 = tree->Insert("tree folder 2", foldericon, DW_NULL, DW_INT_TO_POINTER(2));
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
1195 tree->Insert("tree file 1", fileicon, t1, DW_INT_TO_POINTER(3));
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
1196 tree->Insert("tree file 2", fileicon, t1, DW_INT_TO_POINTER(4));
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
1197 tree->Insert("tree file 3", fileicon, t2, DW_INT_TO_POINTER(5));
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
1198 tree->Insert("tree file 4", fileicon, t2, DW_INT_TO_POINTER(6));
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
1199 tree->Change(t1, "tree folder 1", foldericon);
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
1200 tree->Change(t2, "tree folder 2", foldericon);
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
1201 tree->SetData(t2, DW_INT_TO_POINTER(100));
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
1202 tree->Expand(t1);
2961
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
1203 int t1data = DW_POINTER_TO_INT(tree->GetData(t1));
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
1204 int t2data = DW_POINTER_TO_INT(tree->GetData(t2));
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
1205 std::string message = "t1 title \"" + tree->GetTitle(t1) + "\" data " + std::to_string(t1data) + " t2 data " + std::to_string(t2data) + "\n";
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
1206
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
1207 this->app->Debug(message);
2929
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
1208 }
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
1209 else
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
1210 {
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
1211 DW::Text *text = new DW::Text("Tree widget not available.");
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
1212 notebookbox->PackStart(text, 500, 200, TRUE, TRUE, 1);
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
1213 }
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
1214 }
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
1215
2930
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1216 // Page 4 - Container
2940
60e90b783cb1 C++: ListBox and ComboBoxes need to call Setup() to configure the handlers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2939
diff changeset
1217 void CreateContainer(DW::Box *notebookbox) {
2930
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1218 CTIME time;
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1219 CDATE date;
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1220
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1221 // create a box to pack into the notebook page
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1222 DW::Box *containerbox = new DW::Box(DW_HORZ, 2);
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1223 notebookbox->PackStart(containerbox, 500, 200, TRUE, TRUE, 0);
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1224
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1225 // Add a word wrap checkbox
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1226 DW::Box *hbox = new DW::Box(DW_HORZ, 0);
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1227
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1228 DW::CheckBox *checkbox = new DW::CheckBox("Word wrap");
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1229 hbox->PackStart(checkbox, FALSE, TRUE, 1);
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1230 DW::Text *text = new DW::Text("Foreground:");
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1231 text->SetStyle(DW_DT_VCENTER);
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1232 hbox->PackStart(text, FALSE, TRUE, 1);
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1233 DW::ComboBox *mlefore = ColorCombobox();
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1234 hbox->PackStart(mlefore, 150, DW_SIZE_AUTO, TRUE, FALSE, 1);
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1235 text = new DW::Text("Background:");
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1236 text->SetStyle(DW_DT_VCENTER);
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1237 hbox->PackStart(text, FALSE, TRUE, 1);
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1238 DW::ComboBox *mleback = ColorCombobox();
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1239 hbox->PackStart(mleback, 150, DW_SIZE_AUTO, TRUE, FALSE, 1);
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1240 checkbox->Set(TRUE);
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1241 text = new DW::Text("Font:");
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1242 text->SetStyle(DW_DT_VCENTER);
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1243 hbox->PackStart(text, FALSE, TRUE, 1);
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1244 DW::SpinButton *fontsize = new DW::SpinButton("9");
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1245 hbox->PackStart(fontsize, FALSE, FALSE, 1);
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1246 fontsize->SetLimits(100, 5);
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1247 fontsize->SetPos(9);
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1248 DW::ComboBox *fontname = new DW::ComboBox("Default");
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1249 fontname->Append("Default");
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1250 fontname->Append("Arial");
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1251 fontname->Append("Geneva");
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1252 fontname->Append("Verdana");
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1253 fontname->Append("Helvetica");
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1254 fontname->Append("DejaVu Sans");
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1255 fontname->Append("Times New Roman");
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1256 fontname->Append("Times New Roman Bold");
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1257 fontname->Append("Times New Roman Italic");
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1258 fontname->Append("Times New Roman Bold Italic");
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1259 hbox->PackStart(fontname, 150, DW_SIZE_AUTO, TRUE, FALSE, 1);
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1260 notebookbox->PackStart(hbox, TRUE, FALSE, 1);
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1261
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1262 // now a container area under this box
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1263 DW::Filesystem *container = new DW::Filesystem(TRUE);
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1264 notebookbox->PackStart(container, 500, 200, TRUE, FALSE, 1);
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1265
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1266 // and a status area to see whats going on
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1267 DW::StatusText *container_status = new DW::StatusText();
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1268 notebookbox->PackStart(container_status, 100, DW_SIZE_AUTO, TRUE, FALSE, 1);
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1269
2961
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
1270 std::vector<std::string> titles = { "Type", "Size", "Time", "Date" };
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
1271 std::vector<unsigned long> flags = {
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
1272 DW_CFA_BITMAPORICON | DW_CFA_LEFT | DW_CFA_HORZSEPARATOR | DW_CFA_SEPARATOR,
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
1273 DW_CFA_ULONG | DW_CFA_RIGHT | DW_CFA_HORZSEPARATOR | DW_CFA_SEPARATOR,
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
1274 DW_CFA_TIME | DW_CFA_CENTER | DW_CFA_HORZSEPARATOR | DW_CFA_SEPARATOR,
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
1275 DW_CFA_DATE | DW_CFA_LEFT | DW_CFA_HORZSEPARATOR | DW_CFA_SEPARATOR };
2930
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1276
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1277
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1278 container->SetColumnTitle("Test");
2961
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
1279 container->Setup(flags, titles);
2930
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1280 container->SetStripe(DW_CLR_DEFAULT, DW_CLR_DEFAULT);
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1281 container->Alloc(3);
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1282
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1283 for(int z=0;z<3;z++)
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1284 {
2963
531d36ebf37a C++: Step 5 of the std::string transition. Hopefully the last step.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2962
diff changeset
1285 std::string names = "We can now allocate from the stack: Item: " + std::to_string(z);
2930
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1286 HICN thisicon = (z == 0 ? foldericon : fileicon);
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1287
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1288 unsigned long size = z*100;
2963
531d36ebf37a C++: Step 5 of the std::string transition. Hopefully the last step.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2962
diff changeset
1289 container->SetFile(z, "Filename " + std::to_string(z+1), thisicon);
2930
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1290 container->SetItem(0, z, &thisicon);
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1291 container->SetItem(1, z, &size);
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1292
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1293 time.seconds = z+10;
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1294 time.minutes = z+10;
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1295 time.hours = z+10;
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1296 container->SetItem(2, z, &time);
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1297
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1298 date.day = z+10;
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1299 date.month = z+10;
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1300 date.year = z+2000;
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1301 container->SetItem(3, z, &date);
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1302
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1303 container->SetRowTitle(z, names);
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1304 container->SetRowData(z, DW_INT_TO_POINTER(z));
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1305 }
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1306
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1307 container->Insert();
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1308
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1309 container->Alloc(1);
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1310 container->SetFile(0, "Yikes", foldericon);
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1311 unsigned long size = 324;
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1312 container->SetItem(0, 0, &foldericon);
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1313 container->SetItem(1, 0, &size);
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1314 container->SetItem(2, 0, &time);
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1315 container->SetItem(3, 0, &date);
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1316 container->SetRowTitle(0, "Extra");
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1317
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1318 container->Insert();
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1319 container->Optimize();
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1320
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1321 DW::MLE *container_mle = new DW::MLE();
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1322 containerbox->PackStart(container_mle, 500, 200, TRUE, TRUE, 0);
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1323
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1324 mle_point = container_mle->Import("", -1);
2963
531d36ebf37a C++: Step 5 of the std::string transition. Hopefully the last step.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2962
diff changeset
1325 mle_point = container_mle->Import("[" + std::to_string(mle_point) + "]", mle_point);
531d36ebf37a C++: Step 5 of the std::string transition. Hopefully the last step.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2962
diff changeset
1326 mle_point = container_mle->Import("[" + std::to_string(mle_point) + "]abczxydefijkl", mle_point);
2930
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1327 container_mle->Delete(9, 3);
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1328 mle_point = container_mle->Import("gh", 12);
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1329 unsigned long newpoint;
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1330 container_mle->GetSize(&newpoint, NULL);
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1331 mle_point = (int)newpoint;
2963
531d36ebf37a C++: Step 5 of the std::string transition. Hopefully the last step.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2962
diff changeset
1332 mle_point = container_mle->Import("[" + std::to_string(mle_point) + "]\r\n\r\n", mle_point);
2930
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1333 container_mle->SetCursor(mle_point);
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1334
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1335 // connect our event trappers...
2961
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
1336 container->ConnectItemEnter([container_status](std::string text, void *itemdata) -> int
2930
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1337 {
2961
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
1338 std::string buf = "DW_SIGNAL_ITEM_ENTER: Text: " + text + "Itemdata: " + std::to_string(DW_POINTER_TO_UINT(itemdata));
2930
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1339 container_status->SetText(buf);
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1340 return FALSE;
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1341 });
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1342
2961
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
1343 container->ConnectItemContext([this, container_status](std::string text, int x, int y, void *itemdata) -> int
2930
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1344 {
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1345 DW::Menu *popupmenu = ItemContextMenu(container_status, "Item context menu clicked.");
2961
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
1346 std::string buf = "DW_SIGNAL_ITEM_CONTEXT: Text: " + text + " x: " + std::to_string(x) + " y: " +
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
1347 std::to_string(y) + " Itemdata: " + std::to_string(DW_POINTER_TO_UINT(itemdata));
2930
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1348
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1349 container_status->SetText(buf);
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1350 popupmenu->Popup(this, x, y);
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1351 return FALSE;
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1352 });
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1353
2961
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
1354 container->ConnectItemSelect([this, container_mle, container, container_status](HTREEITEM item, std::string text, void *itemdata) -> int
2930
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1355 {
2961
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
1356 std::string sitemdata = std::to_string(DW_POINTER_TO_UINT(itemdata));
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
1357 std::string sitem = std::to_string(DW_POINTER_TO_UINT(item));
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
1358 std::string buf = "DW_SIGNAL_ITEM_SELECT:Item: " + sitem + " Text: " + text + " Itemdata: " + sitemdata;
2930
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1359 container_status->SetText(buf);
2961
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
1360 buf = "\r\nDW_SIGNAL_ITEM_SELECT: Item: " + sitem + " Text: " + text + " Itemdata: " + sitemdata + "\r\n";
2930
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1361 this->mle_point = container_mle->Import(buf, mle_point);
2961
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
1362 std::string str = container->QueryStart(DW_CRA_SELECTED);
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
1363 while(str.size())
2930
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1364 {
2964
2d9521396112 C++: Step 6 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2963
diff changeset
1365 std::string buf = "Selected: " + str + "\r\n";
2930
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1366 mle_point = container_mle->Import(buf, mle_point);
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1367 str = container->QueryNext(DW_CRA_SELECTED);
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1368 }
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1369 // Make the last inserted point the cursor location
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1370 container_mle->SetCursor(mle_point);
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1371 // set the details of item 0 to new data
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1372 this->app->Debug("In cb: icon: %x\n", DW_POINTER_TO_INT(fileicon));
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1373 container->ChangeFile(0, "new data", fileicon);
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1374 unsigned long size = 999;
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1375 this->app->Debug("In cb: icon: %x\n", DW_POINTER_TO_INT(fileicon));
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1376 container->ChangeItem(1, 0, &size);
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1377 return FALSE;
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1378 });
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1379
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1380 container->ConnectColumnClick([container, container_status](int column_num) -> int
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1381 {
2963
531d36ebf37a C++: Step 5 of the std::string transition. Hopefully the last step.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2962
diff changeset
1382 std::string type_string = "Filename";
2930
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1383
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1384 if(column_num != 0)
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1385 {
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1386 int column_type = container->GetColumnType(column_num-1);
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1387
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1388 if(column_type == DW_CFA_STRING)
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1389 type_string = "String";
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1390 else if(column_type == DW_CFA_ULONG)
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1391 type_string ="ULong";
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1392 else if(column_type == DW_CFA_DATE)
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1393 type_string = "Date";
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1394 else if(column_type == DW_CFA_TIME)
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1395 type_string ="Time";
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1396 else if(column_type == DW_CFA_BITMAPORICON)
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1397 type_string = "BitmapOrIcon";
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1398 else
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1399 type_string = "Unknown";
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1400 }
2963
531d36ebf37a C++: Step 5 of the std::string transition. Hopefully the last step.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2962
diff changeset
1401 std::string buf = "DW_SIGNAL_COLUMN_CLICK: Column: " + std::to_string(column_num) + " Type: " + type_string;
2930
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1402 container_status->SetText(buf);
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1403 return FALSE;
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1404 });
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1405
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1406 mlefore->ConnectListSelect([this, mlefore, mleback, container_mle](unsigned int pos) -> int
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1407 {
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1408 ULONG fore = DW_CLR_DEFAULT, back = DW_CLR_DEFAULT;
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1409
2961
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
1410 std::string colortext = mlefore->GetListText(pos);
2930
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1411 fore = ComboboxColor(colortext);
2961
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
1412 std::string text = mleback->GetText();
2930
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1413
2961
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
1414 if(text.size()) {
2930
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1415 back = ComboboxColor(text);
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1416 }
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1417 container_mle->SetColor(fore, back);
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1418 return FALSE;
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1419 });
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1420
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1421 mleback->ConnectListSelect([this, mlefore, mleback, container_mle](unsigned int pos) -> int
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1422 {
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1423 ULONG fore = DW_CLR_DEFAULT, back = DW_CLR_DEFAULT;
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1424
2961
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
1425 std::string colortext = mleback->GetListText(pos);
2930
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1426 back = ComboboxColor(colortext);
2961
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
1427 std::string text = mlefore->GetText();
2930
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1428
2961
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
1429 if(text.size()) {
2930
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1430 fore = ComboboxColor(text);
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1431 }
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1432 container_mle->SetColor(fore, back);
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1433 return FALSE;
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1434 });
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1435
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1436 fontname->ConnectListSelect([this, fontname, fontsize, container_mle](unsigned int pos) -> int
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1437 {
2961
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
1438 std::string font = fontname->GetListText(pos);
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
1439 MLESetFont(container_mle, (int)fontsize->GetPos(), font.compare("Default") == 0 ? NULL : font);
2930
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1440 return FALSE;
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1441 });
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1442
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1443 fontsize->ConnectValueChanged([this, fontname, container_mle](int size) -> int
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1444 {
2961
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
1445 std::string font = fontname->GetText();
2930
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1446
2961
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
1447 if(font.size()) {
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
1448 MLESetFont(container_mle, size, font.compare("Default") == 0 ? NULL : font);
2930
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1449 }
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1450 else
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1451 MLESetFont(container_mle, size, NULL);
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1452 return FALSE;
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1453 });
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1454 }
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1455
2931
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1456 // Page 5 - Buttons
2940
60e90b783cb1 C++: ListBox and ComboBoxes need to call Setup() to configure the handlers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2939
diff changeset
1457 void CreateButtons(DW::Box *notebookbox) {
2931
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1458 // create a box to pack into the notebook page
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1459 DW::Box *buttonsbox = new DW::Box(DW_VERT, 2);
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1460 notebookbox->PackStart(buttonsbox, 25, 200, TRUE, TRUE, 0);
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1461 buttonsbox->SetColor(DW_CLR_RED, DW_CLR_RED);
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1462
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1463 DW::Box *calbox = new DW::Box(DW_HORZ, 0);
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1464 notebookbox->PackStart(calbox, 0, 0, TRUE, FALSE, 1);
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1465 DW::Calendar *cal = new DW::Calendar();
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1466 calbox->PackStart(cal, TRUE, FALSE, 0);
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1467
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1468 cal->SetDate(2019, 4, 30);
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1469
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1470 // Create our file toolbar boxes...
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1471 DW::Box *buttonboxperm = new DW::Box(DW_VERT, 0);
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1472 buttonsbox->PackStart(buttonboxperm, 25, 0, FALSE, TRUE, 2);
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1473 buttonboxperm->SetColor(DW_CLR_WHITE, DW_CLR_WHITE);
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1474 DW::BitmapButton *topbutton = new DW::BitmapButton("Top Button", fileiconpath);
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1475 buttonboxperm->PackStart(topbutton, 100, 30, FALSE, FALSE, 0 );
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1476 buttonboxperm->PackStart(DW_NOHWND, 25, 5, FALSE, FALSE, 0);
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1477 DW::BitmapButton *iconbutton = new DW::BitmapButton( "Folder Icon", foldericonpath);
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1478 buttonsbox->PackStart(iconbutton, 25, 25, FALSE, FALSE, 0);
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1479 iconbutton->ConnectClicked([this, iconbutton]() -> int
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1480 {
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1481 static int isfoldericon = 0;
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1482
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1483 isfoldericon = !isfoldericon;
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1484 if(isfoldericon)
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1485 {
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1486 iconbutton->Set(this->fileiconpath);
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1487 iconbutton->SetTooltip("File Icon");
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1488 }
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1489 else
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1490 {
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1491 iconbutton->Set(this->foldericonpath);
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1492 iconbutton->SetTooltip("Folder Icon");
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1493 }
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1494 return FALSE;
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1495 });
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1496
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1497 DW::Box *filetoolbarbox = new DW::Box(DW_VERT, 0);
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1498 buttonboxperm->PackStart(filetoolbarbox, 0, 0, TRUE, TRUE, 0);
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1499
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1500 DW::BitmapButton *button = new DW::BitmapButton("Empty image. Should be under Top button", 0, "junk");
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1501 filetoolbarbox->PackStart(button, 25, 25, FALSE, FALSE, 0);
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1502 button->ConnectClicked([buttonsbox]() -> int
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1503 {
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1504 buttonsbox->SetColor(DW_CLR_RED, DW_CLR_RED);
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1505 return TRUE;
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1506 });
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1507 filetoolbarbox->PackStart(DW_NOHWND, 25, 5, FALSE, FALSE, 0);
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1508
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1509 button = new DW::BitmapButton("A borderless bitmapbitton", 0, foldericonpath);
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1510 filetoolbarbox->PackStart(button, 25, 25, FALSE, FALSE, 0);
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1511 button->ConnectClicked([buttonsbox]() -> int
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1512 {
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1513 buttonsbox->SetColor(DW_CLR_YELLOW, DW_CLR_YELLOW);
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1514 return TRUE;
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1515 });
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1516 filetoolbarbox->PackStart(DW_NOHWND, 25, 5, FALSE, FALSE, 0);
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1517 button->SetStyle(DW_BS_NOBORDER);
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1518
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1519 DW::BitmapButton *perbutton = new DW::BitmapButton("A button from data", 0, foldericonpath);
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1520 filetoolbarbox->PackStart(perbutton, 25, 25, FALSE, FALSE, 0);
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1521 filetoolbarbox->PackStart(DW_NOHWND, 25, 5, FALSE, FALSE, 0 );
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1522
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1523 // make a combobox
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1524 DW::Box *combox = new DW::Box(DW_VERT, 2);
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1525 notebookbox->PackStart(combox, 25, 200, TRUE, FALSE, 0);
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1526 DW::ComboBox *combobox1 = new DW::ComboBox("fred");
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1527 combobox1->Append("fred");
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1528 combox->PackStart(combobox1, TRUE, FALSE, 0);
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1529
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1530 int iteration = 0;
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1531 combobox1->ConnectListSelect([this, &iteration](unsigned int index) -> int
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1532 {
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1533 this->app->Debug("got combobox_select_event for index: %d, iteration: %d\n", index, iteration++);
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1534 return FALSE;
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1535 });
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1536
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1537 DW::ComboBox *combobox2 = new DW::ComboBox("joe");
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1538 combox->PackStart(combobox2, TRUE, FALSE, 0);
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1539 combobox2->ConnectListSelect([this, &iteration](unsigned int index) -> int
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1540 {
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1541 this->app->Debug("got combobox_select_event for index: %d, iteration: %d\n", index, iteration++);
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1542 return FALSE;
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1543 });
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1544
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1545 // add LOTS of items
2938
1184f58135ba C++: Eliminate remnants of C code I missed while porting to C++.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2935
diff changeset
1546 app->Debug("before appending 500 items to combobox using DW::ListBox::ListAppend()\n");
2963
531d36ebf37a C++: Step 5 of the std::string transition. Hopefully the last step.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2962
diff changeset
1547 std::vector<std::string> text;
2931
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1548 for(int i = 0; i < 500; i++)
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1549 {
2963
531d36ebf37a C++: Step 5 of the std::string transition. Hopefully the last step.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2962
diff changeset
1550 text.push_back("item " + std::to_string(i));
2931
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1551 }
2963
531d36ebf37a C++: Step 5 of the std::string transition. Hopefully the last step.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2962
diff changeset
1552 combobox2->ListAppend(text);
2931
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1553 app->Debug("after appending 500 items to combobox\n");
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1554 // now insert a couple of items
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1555 combobox2->Insert("inserted item 2", 2);
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1556 combobox2->Insert("inserted item 5", 5);
2933
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
1557 // make a spinbutton
2931
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1558 DW::SpinButton *spinbutton = new DW::SpinButton();
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1559 combox->PackStart(spinbutton, TRUE, FALSE, 0);
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1560 spinbutton->SetLimits(100, 1);
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1561 spinbutton->SetPos(30);
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1562
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1563 spinbutton->ConnectValueChanged([this](int value) -> int
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1564 {
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1565 this->app->MessageBox("DWTest", DW_MB_OK, "New value from spinbutton: %d\n", value);
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1566 return TRUE;
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1567 });
2933
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
1568 // make a slider
2931
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1569 DW::Slider *slider = new DW::Slider(FALSE, 11, 0);
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1570 combox->PackStart(slider, TRUE, FALSE, 0);
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1571
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1572 // make a percent
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1573 DW::Percent *percent = new DW::Percent();
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1574 combox->PackStart(percent, TRUE, FALSE, 0);
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1575
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1576 topbutton->ConnectClicked([this, combobox1, combobox2, spinbutton, cal]() -> int
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1577 {
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1578 unsigned int idx = combobox1->Selected();
2963
531d36ebf37a C++: Step 5 of the std::string transition. Hopefully the last step.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2962
diff changeset
1579 std::string buf1 = combobox1->GetListText(idx);
2931
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1580 idx = combobox2->Selected();
2963
531d36ebf37a C++: Step 5 of the std::string transition. Hopefully the last step.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2962
diff changeset
1581 std::string buf2 = combobox2->GetListText(idx);
2931
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1582 unsigned int y,m,d;
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1583 cal->GetDate(&y, &m, &d);
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1584 long spvalue = spinbutton->GetPos();
2963
531d36ebf37a C++: Step 5 of the std::string transition. Hopefully the last step.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2962
diff changeset
1585 std::string buf3 = "spinbutton: " + std::to_string(spvalue) + "\ncombobox1: \"" + buf1 +
531d36ebf37a C++: Step 5 of the std::string transition. Hopefully the last step.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2962
diff changeset
1586 "\"\ncombobox2: \"" + buf2 + "\"\ncalendar: " + std::to_string(y) + "-" +
531d36ebf37a C++: Step 5 of the std::string transition. Hopefully the last step.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2962
diff changeset
1587 std::to_string(m) + "-" + std::to_string(d);
2931
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1588 this->app->MessageBox("Values", DW_MB_OK | DW_MB_INFORMATION, buf3);
2963
531d36ebf37a C++: Step 5 of the std::string transition. Hopefully the last step.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2962
diff changeset
1589 this->app->SetClipboard(buf3);
2931
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1590 return 0;
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1591 });
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1592
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1593 perbutton->ConnectClicked([percent]() -> int
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1594 {
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1595 percent->SetPos(DW_PERCENT_INDETERMINATE);
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1596 return TRUE;
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1597 });
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1598
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1599 slider->ConnectValueChanged([percent](int value) -> int
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1600 {
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1601 percent->SetPos(value * 10);
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1602 return TRUE;
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1603 });
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1604 }
2932
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1605
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1606 // Page 6 - HTML
2940
60e90b783cb1 C++: ListBox and ComboBoxes need to call Setup() to configure the handlers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2939
diff changeset
1607 void CreateHTML(DW::Box *notebookbox) {
2932
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1608 DW::HTML *rawhtml = new DW::HTML();
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1609 if(rawhtml && rawhtml->GetHWND())
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1610 {
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1611 DW::Box *hbox = new DW::Box(DW_HORZ, 0);
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1612 DW::ComboBox *javascript = new DW::ComboBox();
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1613
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1614 javascript->Append("window.scrollTo(0,500);");
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1615 javascript->Append("window.document.title;");
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1616 javascript->Append("window.navigator.userAgent;");
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1617
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1618 notebookbox->PackStart(rawhtml, 0, 100, TRUE, FALSE, 0);
2974
fffb4904c90b Mac: Initial support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2973
diff changeset
1619 rawhtml->JavascriptAdd("test");
fffb4904c90b Mac: Initial support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2973
diff changeset
1620 rawhtml->ConnectMessage([this](std::string name, std::string message) -> int
fffb4904c90b Mac: Initial support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2973
diff changeset
1621 {
fffb4904c90b Mac: Initial support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2973
diff changeset
1622 this->app->MessageBox("Javascript Message", DW_MB_OK | DW_MB_INFORMATION,
fffb4904c90b Mac: Initial support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2973
diff changeset
1623 "Name: " + name + " Message: " + message);
fffb4904c90b Mac: Initial support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2973
diff changeset
1624 return TRUE;
fffb4904c90b Mac: Initial support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2973
diff changeset
1625 });
2988
dfab2dfa9bc1 Check DW_FEATURE_HTML_MESSAGE to decide if the raw html widget
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2975
diff changeset
1626 rawhtml->Raw(dw_feature_get(DW_FEATURE_HTML_MESSAGE) == DW_FEATURE_ENABLED ?
dfab2dfa9bc1 Check DW_FEATURE_HTML_MESSAGE to decide if the raw html widget
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2975
diff changeset
1627 "<html><body><center><h1><a href=\"javascript:test('This is the message');\">dwtest</a></h1></center></body></html>" :
dfab2dfa9bc1 Check DW_FEATURE_HTML_MESSAGE to decide if the raw html widget
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2975
diff changeset
1628 "<html><body><center><h1>dwtest</h1></center></body></html>");
2932
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1629 DW::HTML *html = new DW::HTML();
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1630
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1631 notebookbox->PackStart(hbox, 0, 0, TRUE, FALSE, 0);
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1632
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1633 // Add navigation buttons
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1634 DW::Button *button = new DW::Button("Back");
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1635 hbox->PackStart(button, FALSE, FALSE, 0);
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1636 button->ConnectClicked([html]() -> int
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1637 {
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1638 html->Action(DW_HTML_GOBACK);
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1639 return TRUE;
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1640 });
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1641
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1642 button = new DW::Button("Forward");
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1643 hbox->PackStart(button, FALSE, FALSE, 0);
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1644 button->ConnectClicked([html]() -> int
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1645 {
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1646 html->Action(DW_HTML_GOFORWARD);
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1647 return TRUE;
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1648 });
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1649
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1650 // Put in some extra space
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1651 hbox->PackStart(0, 5, 1, FALSE, FALSE, 0);
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1652
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1653 button = new DW::Button("Reload");
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1654 hbox->PackStart(button, FALSE, FALSE, 0);
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1655 button->ConnectClicked([html]() -> int
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1656 {
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1657 html->Action(DW_HTML_RELOAD);
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1658 return TRUE;
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1659 });
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1660
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1661 // Put in some extra space
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1662 hbox->PackStart(0, 5, 1, FALSE, FALSE, 0);
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1663 hbox->PackStart(javascript, TRUE, FALSE, 0);
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1664
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1665 button = new DW::Button("Run");
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1666 hbox->PackStart(button, FALSE, FALSE, 0);
2961
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
1667 button->ConnectClicked([javascript, html]() -> int
2932
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1668 {
2961
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
1669 std::string script = javascript->GetText();
2932
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1670
2961
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
1671 if(script.size()) {
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
1672 html->JavascriptRun(script);
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
1673 }
2932
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1674 return FALSE;
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1675 });
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1676 javascript->ClickDefault(button);
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1677
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1678 notebookbox->PackStart(html, 0, 100, TRUE, TRUE, 0);
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1679 html->URL("https://dbsoft.org/dw_help.php");
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1680 DW::StatusText *htmlstatus = new DW::StatusText("HTML status loading...");
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1681 notebookbox->PackStart(htmlstatus, 100, DW_SIZE_AUTO, TRUE, FALSE, 1);
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1682
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1683 // Connect the signal handlers
2961
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
1684 html->ConnectChanged([htmlstatus](int status, std::string url) -> int
2932
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1685 {
2961
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
1686 std::vector<std::string> statusnames = { "none", "started", "redirect", "loading", "complete" };
2932
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1687
2961
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
1688 if(htmlstatus && status < 5) {
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
1689 htmlstatus->SetText("Status " + statusnames[status] + ": " + url);
2932
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1690 }
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1691 return FALSE;
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1692 });
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1693
2974
fffb4904c90b Mac: Initial support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2973
diff changeset
1694 html->ConnectResult([this](int status, std::string result, void *script_data) -> int
2932
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1695 {
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1696 this->app->MessageBox("Javascript Result", DW_MB_OK | (status ? DW_MB_ERROR : DW_MB_INFORMATION),
2961
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
1697 result.size() ? result : "Javascript result is not a string value");
2932
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1698 return TRUE;
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1699 });
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1700 }
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1701 else
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1702 {
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1703 DW::Text *htmltext = new DW::Text("HTML widget not available.");
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1704 notebookbox->PackStart(htmltext, 0, 100, TRUE, TRUE, 0);
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1705 }
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1706 }
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1707
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1708 // Page 7 - ScrollBox
2940
60e90b783cb1 C++: ListBox and ComboBoxes need to call Setup() to configure the handlers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2939
diff changeset
1709 void CreateScrollBox(DW::Box *notebookbox) {
2933
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
1710 // create a box to pack into the notebook page
2932
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1711 DW::ScrollBox *scrollbox = new DW::ScrollBox(DW_VERT, 0);
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1712 notebookbox->PackStart(scrollbox, 0, 0, TRUE, TRUE, 1);
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1713
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1714 DW::Button *adjbutton = new DW::Button("Show Adjustments", 0);
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1715 scrollbox->PackStart(adjbutton, FALSE, FALSE, 0);
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1716 adjbutton->ConnectClicked([this, scrollbox]() -> int
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1717 {
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1718 int pos = scrollbox->GetPos(DW_VERT);
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1719 int range = scrollbox->GetRange(DW_VERT);
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1720 this->app->Debug("Pos %d Range %d\n", pos, range);
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1721 return FALSE;
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1722 });
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1723
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1724 for(int i = 0; i < MAX_WIDGETS; i++)
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1725 {
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1726 DW::Box *tmpbox = new DW::Box(DW_HORZ, 0);
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1727 scrollbox->PackStart(tmpbox, 0, 0, TRUE, FALSE, 2);
2963
531d36ebf37a C++: Step 5 of the std::string transition. Hopefully the last step.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2962
diff changeset
1728 DW::Text *label = new DW::Text("Label " + std::to_string(i));
2932
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1729 tmpbox->PackStart(label, 0, DW_SIZE_AUTO, TRUE, FALSE, 0);
2963
531d36ebf37a C++: Step 5 of the std::string transition. Hopefully the last step.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2962
diff changeset
1730 DW::Entryfield *entry = new DW::Entryfield("Entry " + std::to_string(i) , i);
2932
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1731 tmpbox->PackStart(entry, 0, DW_SIZE_AUTO, TRUE, FALSE, 0);
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1732 }
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1733 }
2933
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
1734
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
1735 // Page 8 - Thread and Event
2940
60e90b783cb1 C++: ListBox and ComboBoxes need to call Setup() to configure the handlers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2939
diff changeset
1736 void CreateThreadEvent(DW::Box *notebookbox) {
2933
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
1737 // create a box to pack into the notebook page
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
1738 DW::Box *tmpbox = new DW::Box(DW_VERT, 0);
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
1739 notebookbox->PackStart(tmpbox, 0, 0, TRUE, TRUE, 1);
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
1740
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
1741 DW::Button *startbutton = new DW::Button("Start Threads");
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
1742 tmpbox->PackStart(startbutton, FALSE, FALSE, 0);
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
1743
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
1744 // Create the base threading components
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
1745 DW::MLE *threadmle = new DW::MLE();
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
1746 tmpbox->PackStart(threadmle, 1, 1, TRUE, TRUE, 0);
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
1747 DW::Mutex *mutex = new DW::Mutex();
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
1748 DW::Event *workevent = new DW::Event();
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
1749
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
1750 startbutton->ConnectClicked([this, mutex, workevent, threadmle, startbutton]() -> int
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
1751 {
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
1752 startbutton->Disable();
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
1753 mutex->Lock();
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
1754 DW::Event *controlevent = new DW::Event();
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
1755 workevent->Reset();
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
1756 finished = FALSE;
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
1757 ready = 0;
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
1758 UpdateMLE(threadmle, "Starting thread 1\r\n", DW_NULL);
2935
440de3640522 C++: Fix warnings reported by clang on FreeBSD of unused capture variables.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2934
diff changeset
1759 new DW::Thread([this, mutex, controlevent, workevent, threadmle](DW::Thread *thread) -> void {
2933
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
1760 this->RunThread(1, mutex, controlevent, workevent, threadmle);
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
1761 });
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
1762 UpdateMLE(threadmle, "Starting thread 2\r\n", DW_NULL);
2935
440de3640522 C++: Fix warnings reported by clang on FreeBSD of unused capture variables.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2934
diff changeset
1763 new DW::Thread([this, mutex, controlevent, workevent, threadmle](DW::Thread *thread) -> void {
2933
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
1764 this->RunThread(2, mutex, controlevent, workevent, threadmle);
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
1765 });
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
1766 UpdateMLE(threadmle, "Starting thread 3\r\n", DW_NULL);
2935
440de3640522 C++: Fix warnings reported by clang on FreeBSD of unused capture variables.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2934
diff changeset
1767 new DW::Thread([this, mutex, controlevent, workevent, threadmle](DW::Thread *thread) -> void {
2933
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
1768 this->RunThread(3, mutex, controlevent, workevent, threadmle);
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
1769 });
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
1770 UpdateMLE(threadmle, "Starting thread 4\r\n", DW_NULL);
2935
440de3640522 C++: Fix warnings reported by clang on FreeBSD of unused capture variables.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2934
diff changeset
1771 new DW::Thread([this, mutex, controlevent, workevent, threadmle](DW::Thread *thread) -> void {
2933
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
1772 this->RunThread(4, mutex, controlevent, workevent, threadmle);
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
1773 });
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
1774 UpdateMLE(threadmle, "Starting control thread\r\n", DW_NULL);
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
1775 new DW::Thread([this, startbutton, mutex, controlevent, workevent, threadmle](DW::Thread *thread) -> void {
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
1776 this->ControlThread(mutex, controlevent, workevent, threadmle);
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
1777 startbutton->Enable();
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
1778 });
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
1779 mutex->Unlock();
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
1780 return FALSE;
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
1781 });
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
1782 }
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1783 public:
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1784 // Constructor creates the application
2963
531d36ebf37a C++: Step 5 of the std::string transition. Hopefully the last step.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2962
diff changeset
1785 DWTest(std::string title): DW::Window(title) {
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1786 // Get our application singleton
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1787 app = DW::App::Init();
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1788
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1789 // Add menus to the window
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1790 CreateMenus();
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1791
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1792 // 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
1793 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
1794 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
1795
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1796 /* First try the current directory */
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1797 foldericon = app->LoadIcon(foldericonpath);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1798 fileicon = app->LoadIcon(fileiconpath);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1799
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1800 #ifdef PLATFORMFOLDER
2933
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
1801 // In case we are running from the build directory...
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
1802 // also check the appropriate platform subfolder
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1803 if(!foldericon)
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1804 {
2961
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
1805 foldericonpath = std::string(PLATFORMFOLDER) + "folder";
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1806 foldericon = app->LoadIcon(foldericonpath);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1807 }
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1808 if(!fileicon)
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1809 {
2961
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
1810 fileiconpath = std::string(PLATFORMFOLDER) + "file";
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1811 fileicon = app->LoadIcon(fileiconpath);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1812 }
2889
4b075e64536c C++: Add some simple menu code to see if things are working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2883
diff changeset
1813 #endif
4b075e64536c C++: Add some simple menu code to see if things are working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2883
diff changeset
1814
2933
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
1815 // Finally try from the platform application directory
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1816 if(!foldericon && !fileicon)
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1817 {
2961
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
1818 std::string appdir = app->GetDir();
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
1819
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
1820 appdir.append(std::string(1, DW_DIR_SEPARATOR));
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
1821 std::string folderpath = appdir + "folder";
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
1822 foldericon = app->LoadIcon(folderpath);
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1823 if(foldericon)
2961
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
1824 foldericonpath = folderpath;
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
1825 std::string filepath = appdir + "file";
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
1826 fileicon = app->LoadIcon(filepath);
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1827 if(fileicon)
2961
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
1828 fileiconpath = filepath;
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1829 }
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1830
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1831 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
1832 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
1833 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
1834 {
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1835 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
1836 return TRUE;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1837 });
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1838
2917
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1839 // 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
1840 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
1841 CreateInput(notebookbox);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1842 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
1843 notebook->Pack(notebookpage, notebookbox);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1844 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
1845
2917
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1846 // 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
1847 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
1848 CreateRender(notebookbox);
2920
c6b699a441fe C++: Fix a couple minor errors while attempting to fix Mac crash.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2919
diff changeset
1849 notebookpage = notebook->PageNew();
2917
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1850 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
1851 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
1852
2929
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
1853 // Create Notebook Page 3 - Tree
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
1854 notebookbox = new DW::Box(DW_VERT, 5);
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
1855 CreateTree(notebookbox);
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
1856 notebookpage = notebook->PageNew();
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
1857 notebook->Pack(notebookpage, notebookbox);
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
1858 notebook->PageSetText(notebookpage, "tree");
2ab97b349958 C++: Add Page 3 - Tree to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2928
diff changeset
1859
2930
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1860 // Create Notebook Page 4 - Container
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1861 notebookbox = new DW::Box(DW_VERT, 5);
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1862 CreateContainer(notebookbox);
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1863 notebookpage = notebook->PageNew();
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1864 notebook->Pack(notebookpage, notebookbox);
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1865 notebook->PageSetText(notebookpage, "container");
d8117d36ed27 C++: Add Page 4 - Container to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2929
diff changeset
1866
2931
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1867 // Create Notebook Page 5 - Buttons
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1868 notebookbox = new DW::Box(DW_VERT, 5);
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1869 CreateButtons(notebookbox);
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1870 notebookpage = notebook->PageNew();
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1871 notebook->Pack(notebookpage, notebookbox);
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1872 notebook->PageSetText(notebookpage, "buttons");
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1873
2932
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1874 // Create Notebook Page 6 - HTML
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1875 notebookbox = new DW::Box(DW_VERT, 5);
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1876 CreateHTML(notebookbox);
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1877 notebookpage = notebook->PageNew();
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1878 notebook->Pack(notebookpage, notebookbox);
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1879 notebook->PageSetText(notebookpage, "html");
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1880
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1881 // Create Notebook Page 7 - ScrollBox
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1882 notebookbox = new DW::Box(DW_VERT, 5);
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1883 CreateScrollBox(notebookbox);
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1884 notebookpage = notebook->PageNew();
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1885 notebook->Pack(notebookpage, notebookbox);
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1886 notebook->PageSetText(notebookpage, "scrollbox");
3f660f47a45f C++: Add HTML and ScrollBox pages to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2931
diff changeset
1887
2933
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
1888 // Create Notebook Page 8 - Thread and Event
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
1889 notebookbox = new DW::Box(DW_VERT, 5);
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
1890 CreateThreadEvent(notebookbox);
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
1891 notebookpage = notebook->PageNew();
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
1892 notebook->Pack(notebookpage, notebookbox);
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
1893 notebook->PageSetText(notebookpage, "thread/event");
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
1894
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1895 // Finalize the window
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1896 this->SetSize(640, 550);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1897
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1898 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
1899 {
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1900 this->app->Beep(200, 200);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1901
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1902 // 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
1903 return TRUE;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1904 });
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1905 }
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1906
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1907 DW::App *app;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1908
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1909 // Page 1
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1910 DW::Timer *timer;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1911 int cursor_arrow = TRUE;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1912 unsigned long current_color;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1913
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1914 // Page 2
2919
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
1915 DW::Render *render1, *render2;
2917
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1916 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
1917 DW::ScrollBar *hscrollbar, *vscrollbar;
2919
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
1918 DW::SpinButton *imagexspin, *imageyspin;
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
1919 DW::CheckBox *imagestretchcheck;
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1920
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1921 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
1922 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
1923 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
1924 int current_row=0,current_col=0;
2931
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1925 unsigned int render_type = SHAPES_DOUBLE_BUFFERED;
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1926
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1927 char **lp;
2964
2d9521396112 C++: Step 6 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2963
diff changeset
1928 std::string current_file;
2889
4b075e64536c C++: Add some simple menu code to see if things are working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2883
diff changeset
1929
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1930 // Page 4
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1931 int mle_point=-1;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1932
2933
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
1933 // Page 8
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
1934 int finished = FALSE, ready = 0;
3cdb02171b01 C++: Implement Thread class and add the last page Thread/Event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2932
diff changeset
1935
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1936 // Miscellaneous
2917
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1937 int menu_enabled = TRUE;
2931
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1938 HICN fileicon, foldericon;
2961
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
1939 std::string fileiconpath = "file";
b9bd130f438a C++: Step 3 of the std::string transition.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2960
diff changeset
1940 std::string foldericonpath = "folder";
2931
30c1f37713b6 C++: Add page 5 - Buttons to dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2930
diff changeset
1941
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1942
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1943 int OnDelete() override {
2915
0cde119fc945 C++: Fix initialization and #define reused strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2914
diff changeset
1944 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
1945 app->MainQuit();
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1946 }
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1947 return TRUE;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1948 }
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1949 };
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1950
2923
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
1951 // Pretty list of features corresponding to the DWFEATURE enum in dw.h
2963
531d36ebf37a C++: Step 5 of the std::string transition. Hopefully the last step.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2962
diff changeset
1952 std::vector<std::string> DWFeatureList = {
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1953 "Supports the HTML Widget",
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1954 "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
1955 "Supports custom window border sizes",
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1956 "Supports window frame transparency",
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1957 "Supports Dark Mode user interface",
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1958 "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
1959 "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
1960 "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
1961 "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
1962 "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
1963 "Supports sending system notifications",
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1964 "Supports UTF8 encoded Unicode text",
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1965 "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
1966 "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
1967 "Supports the Tree Widget",
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1968 "Supports arbitrary window placement",
2975
ae4d6856b983 iOS: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2974
diff changeset
1969 "Supports alternate container view modes",
ae4d6856b983 iOS: Support for dw_html_javascript_add() and DW_SIGNAL_HTML_MESSAGE.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2974
diff changeset
1970 "Supports the DW_SIGNAL_HTML_MESSAGE callback"
2963
531d36ebf37a C++: Step 5 of the std::string transition. Hopefully the last step.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2962
diff changeset
1971 };
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1972
2923
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
1973 // Let's demonstrate the functionality of this library. :)
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1974 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
1975 {
2923
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
1976 // Initialize the Dynamic Windows engine
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1977 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
1978
2923
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
1979 // Enable full dark mode on platforms that support it
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1980 if(getenv("DW_DARK_MODE"))
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1981 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
1982
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1983 #ifdef DW_MOBILE
2923
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
1984 // Enable multi-line container display on Mobile platforms
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1985 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
1986 #endif
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1987
2923
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
1988 // Test all the features and display the results
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1989 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
1990 {
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1991 DWFEATURE feat = static_cast<DWFEATURE>(intfeat);
2938
1184f58135ba C++: Eliminate remnants of C code I missed while porting to C++.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2935
diff changeset
1992 int result = app->GetFeature(feat);
2963
531d36ebf37a C++: Step 5 of the std::string transition. Hopefully the last step.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2962
diff changeset
1993 std::string status = "Unsupported";
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1994
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1995 if(result == 0)
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1996 status = "Disabled";
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1997 else if(result > 0)
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1998 status = "Enabled";
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1999
2963
531d36ebf37a C++: Step 5 of the std::string transition. Hopefully the last step.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2962
diff changeset
2000 app->Debug(DWFeatureList[intfeat] + ": " + status + " (" + std::to_string(result) + ")\n");
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
2001 }
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
2002
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
2003 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
2004 window->Show();
2861
ef7a414f9b71 Add initial C++ binding header and example program.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2005
2869
c873b6f862b9 C++: Add text widget and packing to the window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2868
diff changeset
2006 app->Main();
c873b6f862b9 C++: Add text widget and packing to the window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2868
diff changeset
2007 app->Exit(0);
2861
ef7a414f9b71 Add initial C++ binding header and example program.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2008
2869
c873b6f862b9 C++: Add text widget and packing to the window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2868
diff changeset
2009 return 0;
2861
ef7a414f9b71 Add initial C++ binding header and example program.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2010 }
2923
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
2011 #endif