summaryrefslogtreecommitdiff
path: root/widgetfactory.cpp
diff options
context:
space:
mode:
authorJonas Kümmerlin <jonas@kuemmerlin.eu>2020-06-26 14:28:27 +0200
committerJonas Kümmerlin <jonas@kuemmerlin.eu>2020-06-26 14:29:32 +0200
commit960f0cef228a64ea598c4531d0a7d159dfb7ed0d (patch)
tree9baf7baa580723487fcb5da95b555580830d1942 /widgetfactory.cpp
parentcd9b72745abd06012777f130f1f19c4ae853489d (diff)
spin box: initial implementation
Diffstat (limited to 'widgetfactory.cpp')
-rw-r--r--widgetfactory.cpp66
1 files changed, 64 insertions, 2 deletions
diff --git a/widgetfactory.cpp b/widgetfactory.cpp
index 3298d81..b2c3396 100644
--- a/widgetfactory.cpp
+++ b/widgetfactory.cpp
@@ -10,6 +10,7 @@ enum {
PANE_CHECKBOX,
PANE_GROUPBOX,
PANE_ICONVIEW,
+ PANE_SPINBOX,
PANE__MAX
};
@@ -20,7 +21,8 @@ static const TCHAR *g_paneLabels[PANE__MAX] = {
TEXT("Notebook"), //PANE_NOTEBOOK,
TEXT("Checkbox"), //PANE_CHECKBOX,
TEXT("GroupBox"), //PANE_GROUPBOX,
- TEXT("Icon View") //PANE_ICONVIEW
+ TEXT("Icon View"), //PANE_ICONVIEW,
+ TEXT("Spin Box") //PANE_SPINBOX
};
enum {
@@ -30,6 +32,8 @@ enum {
ID_BTNCOMBOCLEAR,
ID_NOTEBOOK,
ID_HELLO,
+ ID_SPINBOX,
+ ID_SPINBOXOUT,
IDM_FILE,
IDM_FILE_CLOSE,
IDM_HELP,
@@ -808,6 +812,62 @@ iconviewPanelInit(HWND panel)
ALF_Panel_SetVTable(panel, &iconviewPanelVtbl, priv);
}
+/* spinbox panel */
+
+static LRESULT
+spinboxPanelCommand(void *closure, HWND panel, WORD notificationcode, WORD sourceid, HWND control)
+{
+ (void)closure;
+
+ if (notificationcode == EN_CHANGE && sourceid == ID_SPINBOX) {
+ HWND out = ALF_ControlHwndById(panel, ID_SPINBOXOUT);
+ TCHAR buf[12];
+ wsprintf(buf, TEXT("%d"), (int)ALF_SpinBox_Pos(control));
+ ALF_SetText(out, buf);
+ return 1;
+ }
+
+ return 0;
+}
+
+static void
+spinboxPanelAttach(void *closure, HWND panel)
+{
+ (void)closure;
+
+ ALF_AddLabel(panel, (WORD)-1, 1, 1, TEXT("Spin Box -10 to +42"));
+ ALF_AddNumericSpinBox(panel, ID_SPINBOX, 3, 1, 12, -10, 42);
+ ALF_AddLabel(panel, ID_SPINBOXOUT, 3, 3, TEXT("initial"));
+
+ ALF_Layout_SetRowMinSize(panel, 0, 825);
+ ALF_Layout_SetRowMinSize(panel, 2, 825);
+ ALF_Layout_SetRowMinSize(panel, 4, 825);
+ ALF_Layout_SetColumnMinSize(panel, 0, 825);
+ ALF_Layout_SetColumnMinSize(panel, 2, 525);
+ ALF_Layout_SetColumnMinSize(panel, 4, 825);
+ ALF_Layout_SetRowExpandNumerator(panel, 1, 1);
+ ALF_Layout_SetRowExpandNumerator(panel, 3, 1);
+ ALF_Layout_SetColumnExpandNumerator(panel, 3, 1);
+ ALF_Layout_SetColumnExpandNumerator(panel, 4, 1);
+}
+
+static ALFPanelVTable spinboxPanelVtbl = {
+ spinboxPanelAttach,
+ commonPanelDestroy,
+ commonPanelMessage,
+ spinboxPanelCommand,
+ NULL,
+ commonPanelPaint,
+ NULL
+};
+
+static void
+spinboxPanelInit(HWND panel)
+{
+ CommonPanelPriv *priv = ALF_New(CommonPanelPriv, 1);
+ ALF_Panel_SetVTable(panel, &spinboxPanelVtbl, priv);
+}
+
void (*g_paneInitTable[PANE__MAX])(HWND) = {
buttonPanelInit, //PANE_BUTTONS
labelPanelInit, //PANE_LABEL,
@@ -815,7 +875,8 @@ void (*g_paneInitTable[PANE__MAX])(HWND) = {
notebookPanelInit, //PANE_NOTEBOOK,
checkboxPanelInit, //PANE_CHECKBOX,
groupboxPanelInit, //PANE_GROUPBOX,
- iconviewPanelInit //PANE_ICONVIEW
+ iconviewPanelInit, //PANE_ICONVIEW,
+ spinboxPanelInit //PANE_SPINBOX
};
static void
@@ -1094,6 +1155,7 @@ WinMain
addPaneToNotebook(hwndNtbk, PANE_COMBO);
addPaneToNotebook(hwndNtbk, PANE_GROUPBOX);
addPaneToNotebook(hwndNtbk, PANE_ICONVIEW);
+ addPaneToNotebook(hwndNtbk, PANE_SPINBOX);
ALF_AddNativeButton(win, ID_HELLO, 1, 3, TEXT("&Hello World!"));
ALF_AddNativeButton(win, (WORD)-1, 3, 3, TEXT("Goodbye, World"));