comparison dw.hpp @ 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 f27fe14eef82
comparison
equal deleted inserted replaced
2907:afd2d900d1e9 2908:1567f787b965
1093 void SetEditable(int state) { dw_mle_set_editable(hwnd, state); } 1093 void SetEditable(int state) { dw_mle_set_editable(hwnd, state); }
1094 void SetVisible(int line) { dw_mle_set_visible(hwnd, line); } 1094 void SetVisible(int line) { dw_mle_set_visible(hwnd, line); }
1095 void SetWordWrap(int state) { dw_mle_set_word_wrap(hwnd, state); } 1095 void SetWordWrap(int state) { dw_mle_set_word_wrap(hwnd, state); }
1096 }; 1096 };
1097 1097
1098 class Notebook : public Widget
1099 {
1100 public:
1101 // Constructors
1102 Notebook(unsigned long id, int top) { SetHWND(dw_notebook_new(id, top)); }
1103 Notebook(unsigned long id) { SetHWND(dw_notebook_new(id, TRUE)); }
1104 Notebook() { SetHWND(dw_notebook_new(0, TRUE)); }
1105
1106 // User functions
1107 void Pack(unsigned long pageid, HWND page) { dw_notebook_pack(hwnd, pageid, page); }
1108 void PageDestroy(unsigned long pageid) { dw_notebook_page_destroy(hwnd, pageid); }
1109 unsigned long PageGet() { return dw_notebook_page_get(hwnd); }
1110 unsigned long PageNew(unsigned long flags, int front) { return dw_notebook_page_new(hwnd, flags, front); }
1111 void PageSet(unsigned long pageid) { dw_notebook_page_set(hwnd, pageid); }
1112 void PageSetStatusText(unsigned long pageid, const char *text) { dw_notebook_page_set_status_text(hwnd, pageid, text); }
1113 void PageSetText(unsigned long pageid, const char *text) { dw_notebook_page_set_text(hwnd, pageid, text); }
1114 };
1115
1098 class ObjectView : virtual public Widget 1116 class ObjectView : virtual public Widget
1099 { 1117 {
1100 private: 1118 private:
1101 bool ItemSelectConnected, ItemContextConnected; 1119 bool ItemSelectConnected, ItemContextConnected;
1102 #ifdef DW_LAMBDA 1120 #ifdef DW_LAMBDA
1413 }; 1431 };
1414 1432
1415 class Event : public Handle 1433 class Event : public Handle
1416 { 1434 {
1417 private: 1435 private:
1418 HEV event; 1436 HEV event, named;
1419 public: 1437 public:
1420 // Constructors 1438 // Constructors
1421 Event() { event = dw_event_new(); SetHandle(reinterpret_cast<void *>(event)); } 1439 Event() { event = dw_event_new(); named = DW_NULL; SetHandle(reinterpret_cast<void *>(event)); }
1440 Event(const char *name) {
1441 // Try to attach to an existing event
1442 named = dw_named_event_get(name);
1443 if(!named) {
1444 // Otherwise try to create a new one
1445 named = dw_named_event_new(name);
1446 }
1447 event = DW_NULL;
1448 SetHandle(reinterpret_cast<void *>(named));
1449 }
1422 // Destructor 1450 // Destructor
1423 virtual ~Event() { if(event) dw_event_close(&event); } 1451 virtual ~Event() { if(event) { dw_event_close(&event); } if(named) { dw_named_event_close(named); } }
1424 1452
1425 // User functions 1453 // User functions
1426 int Close() { int retval = dw_event_close(&event); delete this; return retval; } 1454 int Close() {
1427 int Post() { return dw_event_post(event); } 1455 int retval = DW_ERROR_UNKNOWN;
1428 int Reset() { return dw_event_reset(event); } 1456
1429 int Wait(unsigned long timeout) { return dw_event_wait(event, timeout); } 1457 if(event) {
1458 retval = dw_event_close(&event);
1459 } else if(named) {
1460 retval = dw_named_event_close(named);
1461 named = DW_NULL;
1462 }
1463 delete this;
1464 return retval;
1465 }
1466 int Post() { return (named ? dw_named_event_post(named) : dw_event_post(event)); }
1467 int Reset() { return (named ? dw_named_event_reset(named) : dw_event_reset(event)); }
1468 int Wait(unsigned long timeout) { return (named ? dw_named_event_wait(named, timeout) : dw_event_wait(event, timeout)); }
1430 }; 1469 };
1431 1470
1432 class Timer : public Handle 1471 class Timer : public Handle
1433 { 1472 {
1434 private: 1473 private: