changeset 2908:1567f787b965

C++: Add Notebook class and add named event support to the Event class. Also update the readme.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Tue, 27 Dec 2022 00:33:29 +0000
parents afd2d900d1e9
children 3fe7641f027c
files dw.hpp readme.txt
diffstat 2 files changed, 48 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/dw.hpp	Mon Dec 26 22:35:25 2022 +0000
+++ b/dw.hpp	Tue Dec 27 00:33:29 2022 +0000
@@ -1095,6 +1095,24 @@
     void SetWordWrap(int state) { dw_mle_set_word_wrap(hwnd, state); }
 };
 
+class Notebook : public Widget
+{
+public:
+    // Constructors
+    Notebook(unsigned long id, int top) { SetHWND(dw_notebook_new(id, top)); }
+    Notebook(unsigned long id) { SetHWND(dw_notebook_new(id, TRUE)); }
+    Notebook() { SetHWND(dw_notebook_new(0, TRUE)); }
+
+    // User functions
+    void Pack(unsigned long pageid, HWND page) { dw_notebook_pack(hwnd, pageid, page); }
+    void PageDestroy(unsigned long pageid) { dw_notebook_page_destroy(hwnd, pageid); }
+    unsigned long PageGet() { return dw_notebook_page_get(hwnd); }
+    unsigned long PageNew(unsigned long flags, int front) { return dw_notebook_page_new(hwnd, flags, front); }
+    void PageSet(unsigned long pageid) { dw_notebook_page_set(hwnd, pageid); }
+    void PageSetStatusText(unsigned long pageid, const char *text) { dw_notebook_page_set_status_text(hwnd, pageid, text); }
+    void PageSetText(unsigned long pageid, const char *text) { dw_notebook_page_set_text(hwnd, pageid, text); }
+};
+
 class ObjectView : virtual public Widget
 {
 private:
@@ -1415,18 +1433,39 @@
 class Event : public Handle
 {
 private:
-    HEV event;
+    HEV event, named;
 public:
     // Constructors
-    Event() { event = dw_event_new(); SetHandle(reinterpret_cast<void *>(event)); }
+    Event() { event = dw_event_new(); named = DW_NULL; SetHandle(reinterpret_cast<void *>(event)); }
+    Event(const char *name) {
+        // Try to attach to an existing event
+        named = dw_named_event_get(name);
+        if(!named) {
+            // Otherwise try to create a new one
+            named = dw_named_event_new(name);
+        }
+        event = DW_NULL;
+        SetHandle(reinterpret_cast<void *>(named));
+    }
     // Destructor
-    virtual ~Event() { if(event) dw_event_close(&event); }
+    virtual ~Event() { if(event) { dw_event_close(&event); } if(named) { dw_named_event_close(named); } }
 
     // User functions
-    int Close() { int retval = dw_event_close(&event); delete this; return retval; }
-    int Post() { return dw_event_post(event); }
-    int Reset() { return dw_event_reset(event); }
-    int Wait(unsigned long timeout) { return dw_event_wait(event, timeout); }
+    int Close() { 
+        int retval = DW_ERROR_UNKNOWN;
+        
+        if(event) {
+            retval = dw_event_close(&event);
+        } else if(named) {
+            retval = dw_named_event_close(named);
+            named = DW_NULL;
+        }
+        delete this;
+        return retval;
+    }
+    int Post() { return (named ? dw_named_event_post(named) : dw_event_post(event)); }
+    int Reset() { return (named ? dw_named_event_reset(named) : dw_event_reset(event)); }
+    int Wait(unsigned long timeout) { return (named ? dw_named_event_wait(named, timeout) : dw_event_wait(event, timeout)); }
 };
 
 class Timer : public Handle
--- a/readme.txt	Mon Dec 26 22:35:25 2022 +0000
+++ b/readme.txt	Tue Dec 27 00:33:29 2022 +0000
@@ -6,7 +6,7 @@
 
 Build Recommendations:
 MacOS:
-    11-12: configure --with-arch=modern --with-minver=10.14
+    11-13: configure --with-arch=modern --with-minver=10.14
         64bit Intel and Apple Silicon (ARM64) with Dark Mode.
     10.13-10.15: configure --with-minver=10.8
         64bit Intel with Notifications, Dark Mode for 10.14-15.
@@ -69,6 +69,7 @@
 Added variadic versions of dw_debug() and dw_messagebox().
     This is how the standard library does it so we can call the new
     va_list versions from C++: dw_vdebug() and dw_vmessagebox().
+Added support for MacOS 13 Ventura and iOS 16.
 
 Dynamic Windows Documentation is available at: