# HG changeset patch # User bsmith@81767d24-ef19-dc11-ae90-00e081727c95 # Date 1672101209 0 # Node ID 1567f787b965e818ec0bca5a033a656e13cba932 # Parent afd2d900d1e982b3384381fbabb4363937ccec2f C++: Add Notebook class and add named event support to the Event class. Also update the readme. diff -r afd2d900d1e9 -r 1567f787b965 dw.hpp --- 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(event)); } + Event() { event = dw_event_new(); named = DW_NULL; SetHandle(reinterpret_cast(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(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 diff -r afd2d900d1e9 -r 1567f787b965 readme.txt --- 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: