changeset 2889:4b075e64536c

C++: Add some simple menu code to see if things are working.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Thu, 22 Dec 2022 19:20:39 +0000
parents ec0d34798706
children ab4c86ddc63a
files dw.hpp dwtest.c dwtestoo.cpp
diffstat 3 files changed, 45 insertions(+), 14 deletions(-) [+]
line wrap: on
line diff
--- a/dw.hpp	Thu Dec 22 19:08:39 2022 +0000
+++ b/dw.hpp	Thu Dec 22 19:20:39 2022 +0000
@@ -167,9 +167,9 @@
 public:
     // User functions
     HMENUI GetHMENUI() { return menu; }
-    MenuItem *MenuItemNew(const char *title, unsigned long id, unsigned long flags, int end, int check, Menus *submenu);
-    MenuItem *MenuItemNew(const char *title, Menus *submenu);
-    MenuItem *MenuItemNew(const char *title);
+    MenuItem *AppendItem(const char *title, unsigned long id, unsigned long flags, int end, int check, Menus *submenu);
+    MenuItem *AppendItem(const char *title, Menus *submenu);
+    MenuItem *AppendItem(const char *title);
 };
 
 class Menu : public Menus
@@ -199,7 +199,7 @@
         SetHWND(dw_menu_append_item(menu->GetHMENUI(), title, id, flags, end, check, submenu ? submenu->GetHMENUI() : DW_NOMENU)); 
     }
     MenuItem(Menus *menu, const char *title, Menus *submenu) {
-        SetHWND(dw_menu_append_item(menu->GetHMENUI(), title, DW_MENU_AUTO, 0, TRUE, FALSE, submenu));
+        SetHWND(dw_menu_append_item(menu->GetHMENUI(), title, DW_MENU_AUTO, 0, TRUE, FALSE, submenu ? submenu->GetHMENUI() : DW_NOMENU));
     }
     MenuItem(Menus *menu, const char *title) {
         SetHWND(dw_menu_append_item(menu->GetHMENUI(), title, DW_MENU_AUTO, 0, TRUE, FALSE, DW_NOMENU));
@@ -210,14 +210,14 @@
     void SetStyle(unsigned long flags, unsigned long mask) { dw_window_set_style(hwnd, flags, mask); }
 };
 
-MenuItem *Menus::MenuItemNew(const char *title, unsigned long id, unsigned long flags, int end, int check, Menus *submenu) {
+MenuItem *Menus::AppendItem(const char *title, unsigned long id, unsigned long flags, int end, int check, Menus *submenu) {
     return new MenuItem((Menus *)menu, title, id, flags, end, check, submenu);
 }
 
-MenuItem *Menus::MenuItemNew(const char *title, Menus *submenu) {
+MenuItem *Menus::AppendItem(const char *title, Menus *submenu) {
     return new MenuItem((Menus *)menu, title, submenu);
 }
-MenuItem *Menus::MenuItemNew(const char *title) {
+MenuItem *Menus::AppendItem(const char *title) {
     return new MenuItem((Menus *)menu, title);
 }
 
@@ -276,8 +276,8 @@
     void Redraw() { dw_window_redraw(hwnd); }
     void Default(Widget *defaultitem) { if(defaultitem) dw_window_default(hwnd, defaultitem->GetHWND()); }
     void SetIcon(HICN icon) { dw_window_set_icon(hwnd, icon); }
-    Menus *MenuBarNew() { if(!menu) menu = new MenuBar(hwnd); return menu; }
-    void Popup(Menus *menu, int x, int y) {
+    MenuBar *MenuBarNew() { if(!menu) menu = new MenuBar(hwnd); return menu; }
+    void Popup(Menu *menu, int x, int y) {
         if(menu) {
             HMENUI pmenu = menu;
 
@@ -285,7 +285,8 @@
             delete menu; 
         }
     }
-    void Popup(Menus *menu) { if(menu) {
+    void Popup(Menu *menu) {
+        if(menu) {
             long x, y;
             HMENUI pmenu = menu;
 
--- a/dwtest.c	Thu Dec 22 19:08:39 2022 +0000
+++ b/dwtest.c	Thu Dec 22 19:20:39 2022 +0000
@@ -1779,7 +1779,7 @@
     mainmenubar = dw_menubar_new(mainwindow);
     /* add menus to the menubar */
     menu = dw_menu_new(0);
-    menuitem = dw_menu_append_item( menu, "~Quit", 1019, 0, TRUE, FALSE, 0);
+    menuitem = dw_menu_append_item(menu, "~Quit", 1019, 0, TRUE, FALSE, 0);
     dw_signal_connect(menuitem, DW_SIGNAL_CLICKED, DW_SIGNAL_FUNC(exit_callback), DW_POINTER(mainwindow));
     /*
      * Add the "File" menu to the menubar...
--- a/dwtestoo.cpp	Thu Dec 22 19:08:39 2022 +0000
+++ b/dwtestoo.cpp	Thu Dec 22 19:20:39 2022 +0000
@@ -18,7 +18,16 @@
 int button_clicked()
 {
     DW::App *app = DW::App::Init();
-    app->MessageBox("Button", DW_MB_OK | DW_MB_WARNING, "Clicked!"); 
+    app->MessageBox("Button", DW_MB_OK | DW_MB_INFORMATION, "Clicked!"); 
+    return TRUE; 
+}
+
+int exit_handler()
+{
+    DW::App *app = DW::App::Init();
+    if(app->MessageBox("dwtest", DW_MB_YESNO | DW_MB_QUESTION, "Are you sure you want to exit?") != 0) {
+        app->MainQuit();
+    }
     return TRUE; 
 }
 #endif
@@ -28,7 +37,7 @@
     DW::App *app = DW::App::Init(argc, argv, "org.dbsoft.dwindows.dwtestoo");
     MyWindow *window = new MyWindow();
     DW::Button *button = new DW::Button("Test window");
-    
+
     window->PackStart(button, DW_SIZE_AUTO, DW_SIZE_AUTO, TRUE, TRUE, 0);
 #ifdef DW_CPP11
     button->ConnectClicked([app] () -> int 
@@ -37,8 +46,29 @@
             return TRUE; 
         });
 #else
-    button ->ConnectClicked(&button_clicked);
+    button->ConnectClicked(&button_clicked);
 #endif
+
+    DW::MenuBar *mainmenubar = window->MenuBarNew();
+
+    // add menus to the menubar
+    DW::Menu *menu = new DW::Menu();
+    DW::MenuItem *menuitem = menu->AppendItem("~Quit");
+#ifdef DW_CPP11
+    menuitem->ConnectClicked([app] () -> int 
+        { 
+            if(app->MessageBox("dwtest", DW_MB_YESNO | DW_MB_QUESTION, "Are you sure you want to exit?") != 0) {
+                app->MainQuit();
+            }
+            return TRUE;
+        });
+#else
+    menuitem->ConnectClicked(&exit_handler);
+#endif
+
+    // Add the "File" menu to the menubar...
+    mainmenubar->AppendItem("~File", menu);
+
     window->Show();
 
     app->Main();