diff --git a/examples/basic/periodic.c b/examples/basic/periodic.c index 06a115b..5b65265 100644 --- a/examples/basic/periodic.c +++ b/examples/basic/periodic.c @@ -7,6 +7,7 @@ #define PaddingContent 2 MwWidget window, menu, table; +MwWidget wcal, wclock; MwMenu e; static void MWAPI resize(MwWidget handle, void* user, void* call) { @@ -21,6 +22,24 @@ static void MWAPI resize(MwWidget handle, void* user, void* call) { NULL); } +static void MWAPI tick(MwWidget handle, void* user, void* call) { + time_t t = time(NULL); + struct tm tm = *localtime(&t); + + MwVaApply(wcal, + MwNyear, (int)tm.tm_year + 1900, + MwNmonth, (int)tm.tm_mon, + MwNdate, (int)tm.tm_mday, + MwNday, (int)tm.tm_wday, + NULL); + + MwVaApply(wclock, + MwNhour, (int)tm.tm_hour, + MwNminute, (int)tm.tm_min, + MwNsecond, (int)tm.tm_sec, + NULL); +} + static void MWAPI resize_content(MwWidget handle, void* user, void* call) { MwWidget* ws = MwGetChildren(handle); if(ws != NULL) { @@ -241,17 +260,15 @@ int main() { } } - f = frame("Calendar", -PaddingContent, -PaddingContent, MwCalendarClass, - MwNscale, 1, - NULL); + f = frame("Calendar", -PaddingContent, -PaddingContent, MwCalendarClass, + MwNscale, 1, + NULL); + wcal = child(f); - f = frame("Clock", -PaddingContent, -PaddingContent, MwClockClass, - MwNhour, 15, - MwNminute, 0, - MwNsecond, 10, - NULL); + f = frame("Clock", -PaddingContent, -PaddingContent, MwClockClass, NULL); + wclock = child(f); - f = frame("Chart", -PaddingContent, -PaddingContent, MwCalendarClass, + f = frame("Chart", -PaddingContent, -PaddingContent, MwChartClass, NULL); f = frame("ComboBox", -PaddingContent, 24, MwComboBoxClass, NULL); @@ -321,7 +338,9 @@ int main() { NULL); MwAddUserHandler(window, MwNresizeHandler, resize, NULL); + MwAddUserHandler(window, MwNtickHandler, tick, NULL); + tick(window, NULL, NULL); resize(window, NULL, NULL); MwVaApply(table, diff --git a/include/Mw/Milsko.h b/include/Mw/Milsko.h index 7997bb6..abdc073 100644 --- a/include/Mw/Milsko.h +++ b/include/Mw/Milsko.h @@ -36,6 +36,7 @@ #include #include #include +#include #include #include #include diff --git a/include/Mw/Widget/Chart.h b/include/Mw/Widget/Chart.h new file mode 100644 index 0000000..6ab404b --- /dev/null +++ b/include/Mw/Widget/Chart.h @@ -0,0 +1,24 @@ +/*! + * @file Mw/Widget/Chart.h + * @brief Chart widget + */ +#ifndef __MW_WIDGET_CHART_H__ +#define __MW_WIDGET_CHART_H__ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/*! + * @brief Chart widget class + */ +MWDECL MwClass MwChartClass; + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/backend/gdi.c b/src/backend/gdi.c index eace1d3..660a0fc 100644 --- a/src/backend/gdi.c +++ b/src/backend/gdi.c @@ -1000,11 +1000,11 @@ static void MwLLMakeToolWindowImpl(MwLL handle) { RECT rc; int w, h; + GetClientRect(handle->gdi.hWnd, &rc); + SetWindowLongPtr(handle->gdi.hWnd, GWL_STYLE, (LPARAM)lp); SetWindowLongPtr(handle->gdi.hWnd, GWL_EXSTYLE, (LPARAM)WS_EX_TOOLWINDOW); - GetClientRect(handle->gdi.hWnd, &rc); - w = rc.right - rc.left; h = rc.bottom - rc.top; diff --git a/src/backend/wayland/wayland.c b/src/backend/wayland/wayland.c index 2b5fce9..3c2d9bd 100644 --- a/src/backend/wayland/wayland.c +++ b/src/backend/wayland/wayland.c @@ -1984,7 +1984,7 @@ static int MwLLWaylandCallInitImpl(void) { #ifdef MW_OPENGL if(getenv("WSLENV") || getenv("WSL_DISTRO_NAME")) { - loadWayland = 1; + loadWayland = 0; } #endif diff --git a/src/core.c b/src/core.c index 21b16ea..481fa34 100644 --- a/src/core.c +++ b/src/core.c @@ -5,7 +5,7 @@ #ifdef USE_COCOA #define PERIODIC #endif -//#define USE_CLASSIC_THEME +// #define USE_CLASSIC_THEME #define RESIZE_ON_TICK #define DRAW(handle) \ diff --git a/src/widget/chart.c b/src/widget/chart.c index e69de29..46f248e 100644 --- a/src/widget/chart.c +++ b/src/widget/chart.c @@ -0,0 +1,45 @@ +#include + +static int wcreate(MwWidget handle) { + return 0; +} + +static void draw(MwWidget handle) { + MwLLColor base = MwParseColor(handle, MwGetText(handle, MwNbackground)); + MwRect r; + + r.x = 0; + r.y = 0; + r.width = MwGetInteger(handle, MwNwidth); + r.height = MwGetInteger(handle, MwNheight); + MwDrawRect(handle, &r, base); + + MwLLFreeColor(base); +} + +static void prop_change(MwWidget handle, const char* key) { + if(strcmp(key, MwNhour) == 0 || strcmp(key, MwNminute) == 0 || strcmp(key, MwNsecond) == 0) MwForceRender(handle); +} + +MwClassRec MwChartClassRec = { + wcreate, /* create */ + NULL, /* destroy */ + draw, /* draw */ + NULL, /* click */ + NULL, /* parent_resize */ + prop_change, /* prop_change */ + NULL, /* mouse_move */ + NULL, /* mouse_up */ + NULL, /* mouse_down */ + NULL, /* key */ + NULL, /* execute */ + NULL, /* tick */ + NULL, /* resize */ + NULL, /* children_update */ + NULL, /* children_prop_change */ + NULL, /* clipboard */ + NULL, /* props_change */ + NULL, + NULL, + NULL}; +MwClass MwChartClass = &MwChartClassRec;