annotate dwtestoo.cpp @ 2928:102b96d77f89

C++: Visual Studio 2013 lambda support also did not work, bump to 2015. My Windows 8.1 virtual machine had 2012 and 2013 versions, but did not work.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Fri, 30 Dec 2022 04:15:27 +0000
parents 03167ee949fd
children 2ab97b349958
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"
2861
ef7a414f9b71 Add initial C++ binding header and example program.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5
2923
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
6 // 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
7 #ifdef __OS2__
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
8 #define FIXEDFONT "5.System VIO"
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
9 #define PLATFORMFOLDER "os2\\"
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
10 #elif defined(__WIN32__)
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
11 #define FIXEDFONT "10.Lucida Console"
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
12 #define PLATFORMFOLDER "win\\"
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
13 #elif defined(__MAC__)
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
14 #define FIXEDFONT "9.Monaco"
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
15 #define PLATFORMFOLDER "mac/"
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
16 #elif defined(__IOS__)
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
17 #define FIXEDFONT "9.Monaco"
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
18 #elif defined(__ANDROID__)
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
19 #define FIXEDFONT "10.Monospace"
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
20 #elif GTK_MAJOR_VERSION > 1
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
21 #define FIXEDFONT "10.monospace"
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
22 #define PLATFORMFOLDER "gtk/"
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
23 #else
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
24 #define FIXEDFONT "fixed"
2882
99311a9091af C++: Add lambda support via Connect functions on C++11, on older compilers
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2873
diff changeset
25 #endif
99311a9091af C++: Add lambda support via Connect functions on C++11, on older compilers
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2873
diff changeset
26
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
27 #define SHAPES_DOUBLE_BUFFERED 0
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
28 #define SHAPES_DIRECT 1
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
29 #define DRAW_FILE 2
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
30
2915
0cde119fc945 C++: Fix initialization and #define reused strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2914
diff changeset
31 #define APP_TITLE "Dynamic Windows C++"
0cde119fc945 C++: Fix initialization and #define reused strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2914
diff changeset
32 #define APP_EXIT "Are you sure you want to exit?"
0cde119fc945 C++: Fix initialization and #define reused strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2914
diff changeset
33
2923
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
34 // 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
35 // 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
36 #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
37
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
38 // 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
39
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
40 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
41 {
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
42 public:
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
43 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
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 DWTest() {
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
46 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
47
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
48 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
49 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
50 }
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
51 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
52 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
53 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
54 }
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
55 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
56 }
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
57 };
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
58
2924
248e32f744f0 C++: Attempt to get dwtestoo working with old pre-lambda compilers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2923
diff changeset
59 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
60 {
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
61 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
62 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
63 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
64 }
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
65
2924
248e32f744f0 C++: Attempt to get dwtestoo working with old pre-lambda compilers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2923
diff changeset
66 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
67 {
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
68 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
69 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
70 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
71 }
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
72 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
73 }
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
74
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
75 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
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 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
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 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
80 "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
81 "This is because your compiler does not have lambda support.\n\n" \
2928
102b96d77f89 C++: Visual Studio 2013 lambda support also did not work, bump to 2015.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2927
diff changeset
82 "Please upgrade to Clang, GCC 4.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
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 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
85 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
86
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
87 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
88 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
89
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::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
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 // 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
93 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
94 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
95 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
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 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
98 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
99
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
100 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
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 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
103 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
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 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
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 #else
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
108 class DWTest : public DW::Window
2861
ef7a414f9b71 Add initial C++ binding header and example program.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
109 {
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
110 private:
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
111 const char *ResolveKeyName(int vk) {
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
112 const char *keyname;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
113 switch(vk) {
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
114 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
115 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
116 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
117 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
118 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
119 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
120 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
121 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
122 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
123 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
124 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
125 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
126 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
127 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
128 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
129 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
130 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
131 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
132 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
133 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
134 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
135 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
136 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
137 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
138 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
139 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
140 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
141 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
142 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
143 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
144 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
145 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
146 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
147 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
148 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
149 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
150 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
151 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
152 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
153 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
154 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
155 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
156 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
157 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
158 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
159 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
160 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
161 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
162 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
163 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
164 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
165 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
166 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
167 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
168 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
169 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
170 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
171 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
172 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
173 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
174 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
175 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
176 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
177 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
178 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
179 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
180 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
181 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
182 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
183 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
184 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
185 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
186 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
187 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
188 default: keyname = "<unknown>"; break;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
189 }
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
190 return keyname;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
191 }
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
192
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
193 const char *ResolveKeyModifiers(int mask) {
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
194 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
195 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
196 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
197 return "KC_CTRL KC_SHIFT";
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
198 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
199 return "KC_CTRL KC_ALT";
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
200 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
201 return "KC_SHIFT KC_ALT";
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
202 else if((mask & KC_SHIFT))
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
203 return "KC_SHIFT";
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
204 else if((mask & KC_CTRL))
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
205 return "KC_CTRL";
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
206 else if((mask & KC_ALT))
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
207 return "KC_ALT";
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
208 else return "none";
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
209 }
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
210
2916
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
211 char *ReadFile(char *filename)
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
212 {
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
213 char *errors = NULL;
2919
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
214 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
215 #ifdef __ANDROID__
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
216 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
217
2919
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
218 // Special way to open for URIs on Android
2916
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
219 if(strstr(filename, "://"))
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
220 {
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
221 fd = dw_file_open(filename, O_RDONLY);
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
222 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
223 }
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
224 else
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
225 #endif
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
226 fp = fopen(filename, "r");
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
227 if(!fp)
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
228 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
229 else
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
230 {
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
231 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
232
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
233 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
234 // 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
235 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
236 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
237 {
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
238 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
239 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
240 break;
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
241 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
242 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
243 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
244 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
245 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
246 }
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
247 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
248 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
249
2916
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
250 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
251 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
252 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
253 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
254 }
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
255 #ifdef __ANDROID__
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
256 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
257 close(fd);
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
258 #endif
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
259 return errors;
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
260 }
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
261
2919
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
262 // When hpm is not NULL we are printing.. so handle things differently
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
263 void DrawFile(int row, int col, int nrows, int fheight, DW::Pixmap *hpm)
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
264 {
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
265 DW::Pixmap *pixmap = hpm ? hpm : pixmap2;
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
266 char buf[16] = {0};
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
267 int i,y,fileline;
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
268 char *pLine;
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
269
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
270 if(current_file)
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
271 {
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
272 pixmap->SetForegroundColor(DW_CLR_WHITE);
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
273 if(!hpm)
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
274 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
275 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
276
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
277 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
278 {
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
279 fileline = i + row - 1;
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
280 y = i*fheight;
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
281 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
282 if(!hpm)
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
283 {
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
284 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
285 pixmap1->DrawText(0, y, buf);
2919
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 pLine = lp[i+row];
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
288 pixmap->DrawText(0, y, pLine+col);
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 }
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
291 }
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 // When hpm is not NULL we are printing.. so handle things differently
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
294 void DrawShapes(int direct, DW::Pixmap *hpm)
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 DW::Pixmap *pixmap = hpm ? hpm : pixmap2;
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
297 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
298 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
299 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
300 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
301
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
302 drawable->SetForegroundColor(DW_CLR_WHITE);
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
303 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
304 drawable->SetForegroundColor(DW_CLR_DARKPINK);
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, 10, 10, width - 20, height - 20);
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
306 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
307 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
308 drawable->SetForegroundColor(DW_CLR_YELLOW);
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
309 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
310 drawable->SetForegroundColor(DW_CLR_BLUE);
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
311 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
312 drawable->SetForegroundColor(DW_CLR_BLACK);
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
313 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
314 drawable->SetForegroundColor(DW_CLR_CYAN);
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
315 // Bottom right corner
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
316 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
317 // Top 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, 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
319 // Bottom left corner
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
320 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
321 // 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
322 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
323 if(image && image->GetHPIXMAP())
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
324 {
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
325 if(imagestretchcheck->Get())
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
326 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
327 else
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
328 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
329 }
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
330 }
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 void UpdateRender(void)
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
333 {
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
334 switch(render_type)
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
335 {
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
336 case SHAPES_DOUBLE_BUFFERED:
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
337 DrawShapes(FALSE, NULL);
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
338 break;
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
339 case SHAPES_DIRECT:
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
340 DrawShapes(TRUE, NULL);
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
341 break;
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
342 case DRAW_FILE:
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
343 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
344 break;
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
345 }
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 // Request that the render widgets redraw...
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
349 // If not using direct rendering, call update_render() to
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
350 // redraw the in memory pixmaps. Then trigger the expose events.
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
351 // Expose will call update_render() 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
352 void RenderDraw() {
2919
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
353 // 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
354 if(render_type != SHAPES_DIRECT)
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
355 UpdateRender();
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
356 // Trigger expose event
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
357 render1->Redraw();
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
358 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
359 }
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
360
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
361 // 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
362 void CreateMenus() {
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
363 // Setup the menu
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
364 DW::MenuBar *menubar = this->MenuBarNew();
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
365
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
366 // add menus to the menubar
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
367 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
368 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
369 menuitem->ConnectClicked([this] () -> int
2915
0cde119fc945 C++: Fix initialization and #define reused strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2914
diff changeset
370 {
0cde119fc945 C++: Fix initialization and #define reused strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2914
diff changeset
371 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
372 this->app->MainQuit();
0cde119fc945 C++: Fix initialization and #define reused strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2914
diff changeset
373 }
0cde119fc945 C++: Fix initialization and #define reused strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2914
diff changeset
374 return TRUE;
0cde119fc945 C++: Fix initialization and #define reused strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2914
diff changeset
375 });
2889
4b075e64536c C++: Add some simple menu code to see if things are working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2883
diff changeset
376
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
377 // 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
378 menubar->AppendItem("~File", menu);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
379
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
380 menu = new DW::Menu();
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
381 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
382 checkable_menuitem->ConnectClicked([this]() -> int
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
383 {
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
384 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
385 return FALSE;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
386 });
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
387 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
388 noncheckable_menuitem->ConnectClicked([this]() -> int
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
389 {
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
390 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
391 return FALSE;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
392 });
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
393 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
394 // separator
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
395 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
396 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
397 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
398 {
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
399 // Toggle the variable
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
400 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
401 // 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
402 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
403 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
404 return FALSE;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
405 });
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
406 // 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
407 menubar->AppendItem("~Menu", menu);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
408
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
409 menu = new DW::Menu();
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
410 menuitem = menu->AppendItem("~About");
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
411 menuitem->ConnectClicked([this]() -> int
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
412 {
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
413 DWEnv env;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
414
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
415 this->app->GetEnvironment(&env);
2915
0cde119fc945 C++: Fix initialization and #define reused strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2914
diff changeset
416 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
417 "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
418 env.osName, env.buildDate, env.buildTime,
0cde119fc945 C++: Fix initialization and #define reused strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2914
diff changeset
419 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
420 env.htmlEngine,
0cde119fc945 C++: Fix initialization and #define reused strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2914
diff changeset
421 env.DWMajorVersion, env.DWMinorVersion, env.DWSubVersion,
0cde119fc945 C++: Fix initialization and #define reused strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2914
diff changeset
422 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
423 return FALSE;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
424 });
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
425 // 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
426 menubar->AppendItem("~Help", menu);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
427 }
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
428
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
429 // Notebook page 1
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
430 void CreateInput(DW::Box *notebookbox)
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
431 {
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
432 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
433
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
434 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
435
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
436 /* Copy and Paste */
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
437 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
438 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
439
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
440 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
441 copypastefield->SetLimit(260);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
442 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
443
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
444 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
445 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
446
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
447 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
448 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
449
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
450 /* Archive Name */
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
451 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
452 stext->SetStyle(DW_DT_VCENTER);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
453 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
454
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
455 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
456 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
457
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
458 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
459 entryfield->SetLimit(260);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
460 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
461
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
462 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
463 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
464
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
465 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
466 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
467
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
468 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
469 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
470
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
471 // Buttons
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
472 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
473 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
474
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
475 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
476 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
477
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
478 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
479 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
480
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
481 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
482 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
483
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
484 cancelbutton->Unpack();
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
485 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
486 //this->ClickDefault(cancelbutton);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
487
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
488 DW::Button *colorchoosebutton = new DW::Button("Color Chooser Dialog");
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
489 buttonbox->PackStart(colorchoosebutton, 130, 30, TRUE, TRUE, 2);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
490
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
491 /* Set some nice fonts and colors */
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
492 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
493 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
494 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
495 #ifdef COLOR_DEBUG
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
496 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
497 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
498 // 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
499 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
500 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
501 // 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
502 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
503 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
504 #endif
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
505
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
506 // Connect signals
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
507 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
508 {
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
509 char *tmp = this->app->FileBrowse("Pick a file", "dwtest.c", "c", DW_FILE_OPEN);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
510 if(tmp)
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
511 {
2916
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
512 char *errors = ReadFile(tmp);
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
513 const char *title = "New file load";
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
514 const char *image = "image/test.png";
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
515 DW::Notification *notification;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
516
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
517 if(errors)
2916
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
518 notification = new DW::Notification(title, image, APP_TITLE " failed to load the file into the file browser.");
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
519 else
2916
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
520 notification = new DW::Notification(title, image, APP_TITLE " loaded the file into the file browser on the Render tab, with \"File Display\" selected from the drop down list.");
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
521
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
522 if(current_file)
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
523 this->app->Free(current_file);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
524 current_file = tmp;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
525 entryfield->SetText(current_file);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
526 current_col = current_row = 0;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
527
2916
fe43f8667d3d C++: Implement Notification class, and enable dwtestoo code that relied on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2915
diff changeset
528 RenderDraw();
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
529 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
530 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
531 return TRUE;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
532 });
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
533 notification->Send();
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
534 }
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
535 copypastefield->SetFocus();
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
536 return FALSE;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
537 });
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
538
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
539 browsefolderbutton->ConnectClicked([this]() -> int
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
540 {
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
541 char *tmp = this->app->FileBrowse("Pick a folder", ".", "c", DW_DIRECTORY_OPEN);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
542 this->app->Debug("Folder picked: %s\n", tmp ? tmp : "None");
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
543 return FALSE;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
544 });
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
545
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
546 copybutton->ConnectClicked([this, copypastefield, entryfield]() -> int {
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
547 char *test = copypastefield->GetText();
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
548
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
549 if(test) {
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
550 this->app->SetClipboard(test);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
551 this->app->Free(test);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
552 }
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
553 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
554 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
555 });
2889
4b075e64536c C++: Add some simple menu code to see if things are working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2883
diff changeset
556
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
557 pastebutton->ConnectClicked([this, copypastefield]() -> int
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
558 {
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
559 char *test = this->app->GetClipboard();
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
560 if(test) {
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
561 copypastefield->SetText(test);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
562 this->app->Free(test);
2889
4b075e64536c C++: Add some simple menu code to see if things are working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2883
diff changeset
563 }
4b075e64536c C++: Add some simple menu code to see if things are working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2883
diff changeset
564 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
565 });
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
566
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
567 okbutton->ConnectClicked([this]() -> int
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
568 {
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
569 if(this->timer) {
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
570 delete this->timer;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
571 this->timer = DW_NULL;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
572 }
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
573 return TRUE;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
574 });
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
575
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
576 cancelbutton->ConnectClicked([this] () -> int
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
577 {
2915
0cde119fc945 C++: Fix initialization and #define reused strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2914
diff changeset
578 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
579 this->app->MainQuit();
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
580 }
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
581 return TRUE;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
582 });
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
583
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
584 cursortogglebutton->ConnectClicked([this, cursortogglebutton] () -> int
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
585 {
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
586 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
587 "Set Cursor pointer - CLOCK");
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
588 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
589 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
590 return FALSE;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
591 });
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 colorchoosebutton->ConnectClicked([this]() -> int
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
594 {
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
595 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
596 return FALSE;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
597 });
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
598 }
2917
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
599
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
600 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
601 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
602 wchar_t widestring[100] = L"DWTest Wide";
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
603 char *utf8string = dw_wchar_to_utf8(widestring);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
604
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
605 // 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
606 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
607 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
608
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
609 // 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
610 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
611 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
612
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
613 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
614 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
615
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
616 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
617 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
618 // 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
619 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
620 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
621
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
622 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
623 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
624 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
625 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
626 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
627
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
628 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
629 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
630 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
631
2919
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
632 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
633 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
634
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
635 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
636 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
637 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
638
2919
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
639 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
640 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
641 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
642 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
643 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
644 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
645
2919
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
646 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
647 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
648
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
649 DW::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
650 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
651
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
652 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
653 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
654
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
655 // 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
656 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
657 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
658 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
659 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
660
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
661 // 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
662 // 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
663 if(!vscrollbarwidth)
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
664 vscrollbarwidth = 8;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
665 if(!hscrollbarheight)
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
666 hscrollbarheight = 8;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
667
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
668 // 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
669 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
670 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
671 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
672 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
673
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
674 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
675 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
676 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
677 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
678
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
679 // 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
680 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
681
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
682 // 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
683 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
684 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
685
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
686 // 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
687 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
688 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
689 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
690 // 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
691 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
692
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
693 // 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
694 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
695 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
696 // 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
697 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
698 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
699
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
700 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
701 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
702 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
703 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
704 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
705 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
706 {
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
707 char *appdir = app->GetDir();
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
708 char pathbuff[1025] = {0};
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
709 int pos = (int)strlen(appdir);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
710
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
711 strncpy(pathbuff, appdir, 1024);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
712 pathbuff[pos] = DW_DIR_SEPARATOR;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
713 pos++;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
714 strncpy(&pathbuff[pos], "test", 1024-pos);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
715 image = new DW::Pixmap(render1, pathbuff);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
716 }
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
717 if(image)
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
718 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
719
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
720 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
721 if(utf8string)
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
722 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
723 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
724 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
725
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
726 // 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
727 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
728 {
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
729 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
730 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
731 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
732
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
733 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
734 {
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
735 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
736 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
737 }
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
738 return TRUE;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
739 });
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
740
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
741
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
742 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
743 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
744 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
745 {
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
746 this->Show();
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
747 this->Raise();
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
748 return TRUE;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
749 });
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
750
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
751 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
752 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
753 return TRUE;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
754 });
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
755
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
756 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
757 {
2919
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
758 if(render_type != SHAPES_DIRECT)
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
759 {
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
760 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
761 render1->Flush();
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
762 }
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
763 else
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
764 {
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
765 UpdateRender();
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
766 }
2917
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
767 return TRUE;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
768 });
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
769
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
770 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
771 {
2919
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
772 if(render_type != SHAPES_DIRECT)
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
773 {
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
774 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
775 render2->Flush();
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
776 }
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
777 else
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
778 {
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
779 UpdateRender();
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
780 }
2917
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
781 return TRUE;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
782 });
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
783
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
784 render2->ConnectKeyPress([this, status1](char ch, int vk, int state, char *utf8) -> int
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
785 {
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
786 char tmpbuf[101] = {0};
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
787 if(ch)
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
788 snprintf(tmpbuf, 100, "Key: %c(%d) Modifiers: %s(%d) utf8 %s", ch, ch, this->ResolveKeyModifiers(state), state, utf8);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
789 else
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
790 snprintf(tmpbuf, 100, "Key: %s(%d) Modifiers: %s(%d) utf8 %s", this->ResolveKeyName(vk), vk, ResolveKeyModifiers(state), state, utf8);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
791 status1->SetText(tmpbuf);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
792 return FALSE;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
793 });
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
794
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
795 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
796 {
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
797 char tmpbuf[101] = {0};
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
798
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
799 this->current_col = value;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
800 snprintf(tmpbuf, 100, "Row:%d Col:%d Lines:%d Cols:%d", current_row,current_col,num_lines,max_linewidth);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
801 status1->SetText(tmpbuf);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
802 this->RenderDraw();
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
803 return TRUE;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
804 });
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
805
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
806 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
807 {
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
808 char tmpbuf[101] = {0};
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
809
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
810 this->current_row = value;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
811 snprintf(tmpbuf, 100, "Row:%d Col:%d Lines:%d Cols:%d", current_row,current_col,num_lines,max_linewidth);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
812 status1->SetText(tmpbuf);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
813 this->RenderDraw();
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
814 return TRUE;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
815 });
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
816
2919
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
817 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
818 {
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
819 char buf[201] = {0};
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
820
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
821 snprintf(buf, 200, "motion_notify: %dx%d buttons %d", x, y, buttonmask);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
822 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
823 return FALSE;
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
2919
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
826 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
827 {
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
828 char buf[201] = {0};
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
829
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
830 snprintf(buf, 200, "button_press: %dx%d buttons %d", x, y, buttonmask);
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
831 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
832 return FALSE;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
833 });
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
834
2919
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
835 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
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::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
838
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
839 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
840 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
841
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
842 // 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
843 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
844 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
845
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
846 // 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
847 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
848 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
849
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
850 // 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
851 delete old1;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
852 delete old2;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
853
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
854 // 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
855 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
856 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
857
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
858 // 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
859 this->RenderDraw();
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
860 return TRUE;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
861 });
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
862
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
863 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
864 {
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
865 this->RenderDraw();
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
866 return TRUE;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
867 });
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
868
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
869 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
870 {
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
871 this->RenderDraw();
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
872 return TRUE;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
873 });
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
874
2921
235fef840df2 C++: Implement Print class and enable the print code in dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2920
diff changeset
875 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
876 {
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
877 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
878 {
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
879 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
880 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
881 {
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
882 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
883 }
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
884 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
885 {
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
886 /* Get the font size for this printer context... */
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
887 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
888
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
889 /* If we have a file to display... */
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
890 if(current_file)
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
891 {
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
892 int nrows;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
893
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
894 /* Calculate new dimensions */
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
895 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
896 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
897
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
898 /* Do the actual drawing */
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
899 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
900 }
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
901 else
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
902 {
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
903 /* We don't have a file so center an error message on the page */
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
904 const char *text = "No file currently selected!";
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
905 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
906
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
907 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
908
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
909 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
910 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
911
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
912 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
913 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
914 }
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
915 }
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
916 return TRUE;
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
917 });
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
918 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
919 return TRUE;
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
2919
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
922 rendcombo->ConnectListSelect([this](int index) -> int
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
923 {
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
924 if(index != this->render_type)
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
925 {
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
926 if(index == DRAW_FILE)
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
927 {
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
928 this->hscrollbar->SetRange(max_linewidth, cols);
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
929 this->hscrollbar->SetPos(0);
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
930 this->vscrollbar->SetRange(num_lines, rows);
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
931 this->vscrollbar->SetPos(0);
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
932 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
933 }
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
934 else
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
935 {
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
936 this->hscrollbar->SetRange(0, 0);
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
937 this->hscrollbar->SetPos(0);
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
938 this->vscrollbar->SetRange(0, 0);
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
939 this->vscrollbar->SetPos(0);
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
940 }
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
941 this->render_type = index;
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
942 this->RenderDraw();
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
943 }
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
944 return FALSE;
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
945 });
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
946
2917
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
947 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
948 }
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
949 public:
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
950 // Constructor creates the application
2915
0cde119fc945 C++: Fix initialization and #define reused strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2914
diff changeset
951 DWTest(const char *title): DW::Window(title) {
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
952 char fileiconpath[1025] = "file";
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
953 char foldericonpath[1025] = "folder";
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
954
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
955 // Get our application singleton
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
956 app = DW::App::Init();
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
957
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
958 // Add menus to the window
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
959 CreateMenus();
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
960
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
961 // 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
962 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
963 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
964
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
965 /* First try the current directory */
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
966 foldericon = app->LoadIcon(foldericonpath);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
967 fileicon = app->LoadIcon(fileiconpath);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
968
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
969 #ifdef PLATFORMFOLDER
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
970 /* In case we are running from the build directory...
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
971 * also check the appropriate platform subfolder
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
972 */
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
973 if(!foldericon)
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
974 {
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
975 strncpy(foldericonpath, PLATFORMFOLDER "folder", 1024);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
976 foldericon = app->LoadIcon(foldericonpath);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
977 }
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
978 if(!fileicon)
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
979 {
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
980 strncpy(fileiconpath, PLATFORMFOLDER "file", 1024);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
981 fileicon = app->LoadIcon(fileiconpath);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
982 }
2889
4b075e64536c C++: Add some simple menu code to see if things are working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2883
diff changeset
983 #endif
4b075e64536c C++: Add some simple menu code to see if things are working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2883
diff changeset
984
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
985 /* Finally try from the platform application directory */
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
986 if(!foldericon && !fileicon)
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
987 {
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
988 char *appdir = app->GetDir();
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
989 char pathbuff[1025] = {0};
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
990 int pos = (int)strlen(appdir);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
991
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
992 strncpy(pathbuff, appdir, 1024);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
993 pathbuff[pos] = DW_DIR_SEPARATOR;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
994 pos++;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
995 strncpy(&pathbuff[pos], "folder", 1024-pos);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
996 foldericon = app->LoadIcon(pathbuff);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
997 if(foldericon)
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
998 strncpy(foldericonpath, pathbuff, 1025);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
999 strncpy(&pathbuff[pos], "file", 1024-pos);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1000 fileicon = app->LoadIcon(pathbuff);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1001 if(fileicon)
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1002 strncpy(fileiconpath, pathbuff, 1025);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1003 }
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1004
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1005 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
1006 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
1007 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
1008 {
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1009 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
1010 return TRUE;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1011 });
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1012
2917
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1013 // 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
1014 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
1015 CreateInput(notebookbox);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1016 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
1017 notebook->Pack(notebookpage, notebookbox);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1018 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
1019
2917
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1020 // 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
1021 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
1022 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
1023 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
1024 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
1025 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
1026
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1027 // Finalize the window
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1028 this->SetSize(640, 550);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1029
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1030 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
1031 {
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1032 this->app->Beep(200, 200);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1033
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1034 // 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
1035 return TRUE;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1036 });
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1037 }
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1038
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1039 DW::App *app;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1040
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1041 // Page 1
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1042 DW::Timer *timer;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1043 int cursor_arrow = TRUE;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1044 unsigned long current_color;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1045
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1046 // Page 2
2919
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
1047 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
1048 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
1049 DW::ScrollBar *hscrollbar, *vscrollbar;
2919
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
1050 DW::SpinButton *imagexspin, *imageyspin;
e609aa6a5b93 C++: Attempt to implement page 2 rendering...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2917
diff changeset
1051 DW::CheckBox *imagestretchcheck;
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1052
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1053 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
1054 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
1055 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
1056 int current_row=0,current_col=0;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1057 int render_type = SHAPES_DOUBLE_BUFFERED;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1058
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1059 char **lp;
2917
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1060 char *current_file = NULL;
2889
4b075e64536c C++: Add some simple menu code to see if things are working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2883
diff changeset
1061
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1062 // Page 4
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1063 int mle_point=-1;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1064
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1065 // Miscellaneous
2917
77e5d6743013 C++: Implement most of Page 2 (Render) except the actual rendering.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2916
diff changeset
1066 int menu_enabled = TRUE;
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1067 HICN fileicon,foldericon;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1068
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1069 int OnDelete() override {
2915
0cde119fc945 C++: Fix initialization and #define reused strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2914
diff changeset
1070 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
1071 app->MainQuit();
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1072 }
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1073 return TRUE;
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1074 }
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1075 };
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1076
2923
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
1077 // Pretty list of features corresponding to the DWFEATURE enum in dw.h
2914
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1078 const char *DWFeatureList[] = {
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1079 "Supports the HTML Widget",
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1080 "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
1081 "Supports custom window border sizes",
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1082 "Supports window frame transparency",
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1083 "Supports Dark Mode user interface",
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1084 "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
1085 "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
1086 "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
1087 "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
1088 "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
1089 "Supports sending system notifications",
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1090 "Supports UTF8 encoded Unicode text",
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1091 "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
1092 "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
1093 "Supports the Tree Widget",
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1094 "Supports arbitrary window placement",
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1095 "Supports alternate container view modes",
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1096 NULL };
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1097
2923
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
1098 // 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
1099 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
1100 {
2923
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
1101 // 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
1102 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
1103
2923
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
1104 // 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
1105 if(getenv("DW_DARK_MODE"))
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1106 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
1107
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1108 #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
1109 // 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
1110 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
1111 #endif
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1112
2923
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
1113 // 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
1114 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
1115 {
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1116 DWFEATURE feat = static_cast<DWFEATURE>(intfeat);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1117 int result = dw_feature_get(feat);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1118 const char *status = "Unsupported";
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1119
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1120 if(result == 0)
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1121 status = "Disabled";
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1122 else if(result > 0)
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1123 status = "Enabled";
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1124
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1125 app->Debug("%s: %s (%d)\n", DWFeatureList[feat], status, result);
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1126 }
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1127
8af64b6d75a9 C++: Start rewriting dwtest in C++ as dwtestoo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2895
diff changeset
1128 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
1129 window->Show();
2861
ef7a414f9b71 Add initial C++ binding header and example program.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1130
2869
c873b6f862b9 C++: Add text widget and packing to the window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2868
diff changeset
1131 app->Main();
c873b6f862b9 C++: Add text widget and packing to the window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2868
diff changeset
1132 app->Exit(0);
2861
ef7a414f9b71 Add initial C++ binding header and example program.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1133
2869
c873b6f862b9 C++: Add text widget and packing to the window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2868
diff changeset
1134 return 0;
2861
ef7a414f9b71 Add initial C++ binding header and example program.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1135 }
2923
969cc3b8bec2 C++: Include the old style function support even when lambdas are available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2921
diff changeset
1136 #endif