summaryrefslogtreecommitdiff
path: root/widgetfactory.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'widgetfactory.cpp')
-rw-r--r--widgetfactory.cpp115
1 files changed, 113 insertions, 2 deletions
diff --git a/widgetfactory.cpp b/widgetfactory.cpp
index b2c3396..12c08d9 100644
--- a/widgetfactory.cpp
+++ b/widgetfactory.cpp
@@ -11,6 +11,7 @@ enum {
PANE_GROUPBOX,
PANE_ICONVIEW,
PANE_SPINBOX,
+ PANE_PROGRESS,
PANE__MAX
};
@@ -22,7 +23,8 @@ static const TCHAR *g_paneLabels[PANE__MAX] = {
TEXT("Checkbox"), //PANE_CHECKBOX,
TEXT("GroupBox"), //PANE_GROUPBOX,
TEXT("Icon View"), //PANE_ICONVIEW,
- TEXT("Spin Box") //PANE_SPINBOX
+ TEXT("Spin Box"), //PANE_SPINBOX
+ TEXT("Progress") //PANE_PROGRESS
};
enum {
@@ -34,6 +36,14 @@ enum {
ID_HELLO,
ID_SPINBOX,
ID_SPINBOXOUT,
+ ID_PROGRESS_SPINBOX,
+ ID_PROGRESS_BAR,
+ ID_PROGRESS_GAUGE,
+ ID_PROGRESS_NATIVE_BAR,
+ ID_PROGRESS_NORMAL,
+ ID_PROGRESS_PAUSED,
+ ID_PROGRESS_ERROR,
+ ID_PROGRESS_INDETERMINATE,
IDM_FILE,
IDM_FILE_CLOSE,
IDM_HELP,
@@ -868,6 +878,105 @@ spinboxPanelInit(HWND panel)
ALF_Panel_SetVTable(panel, &spinboxPanelVtbl, priv);
}
+/* progress panel */
+
+static LRESULT
+progressPanelCommand(void *closure, HWND panel, WORD notificationcode, WORD sourceid, HWND control)
+{
+ (void)closure;
+
+ if (notificationcode == EN_CHANGE && sourceid == ID_PROGRESS_SPINBOX) {
+ ALF_Progress_SetValue(ALF_ControlHwndById(panel, ID_PROGRESS_BAR), (int)ALF_SpinBox_Pos(control));
+ ALF_Progress_SetValue(ALF_ControlHwndById(panel, ID_PROGRESS_NATIVE_BAR), (int)ALF_SpinBox_Pos(control));
+ ALF_Progress_SetValue(ALF_ControlHwndById(panel, ID_PROGRESS_GAUGE), (int)ALF_SpinBox_Pos(control));
+
+ TCHAR buf[4];
+ wsprintf(buf, TEXT("%d"), (int)ALF_SpinBox_Pos(control));
+ ALF_SetText(ALF_ControlHwndById(panel, ID_PROGRESS_GAUGE), buf);
+
+ return 1;
+ }
+
+ if (notificationcode == BN_CLICKED) {
+ if (sourceid == ID_PROGRESS_NORMAL) {
+ ALF_Progress_SetState(ALF_ControlHwndById(panel, ID_PROGRESS_BAR), ALF_PROGRESS_STATE_NORMAL);
+ ALF_Progress_SetState(ALF_ControlHwndById(panel, ID_PROGRESS_NATIVE_BAR), ALF_PROGRESS_STATE_NORMAL);
+ ALF_Progress_SetState(ALF_ControlHwndById(panel, ID_PROGRESS_GAUGE), ALF_PROGRESS_STATE_NORMAL);
+ }
+ if (sourceid == ID_PROGRESS_PAUSED) {
+ ALF_Progress_SetState(ALF_ControlHwndById(panel, ID_PROGRESS_BAR), ALF_PROGRESS_STATE_PAUSED);
+ ALF_Progress_SetState(ALF_ControlHwndById(panel, ID_PROGRESS_NATIVE_BAR), ALF_PROGRESS_STATE_PAUSED);
+ ALF_Progress_SetState(ALF_ControlHwndById(panel, ID_PROGRESS_GAUGE), ALF_PROGRESS_STATE_PAUSED);
+ }
+ if (sourceid == ID_PROGRESS_ERROR) {
+ ALF_Progress_SetState(ALF_ControlHwndById(panel, ID_PROGRESS_BAR), ALF_PROGRESS_STATE_ERROR);
+ ALF_Progress_SetState(ALF_ControlHwndById(panel, ID_PROGRESS_NATIVE_BAR), ALF_PROGRESS_STATE_ERROR);
+ ALF_Progress_SetState(ALF_ControlHwndById(panel, ID_PROGRESS_GAUGE), ALF_PROGRESS_STATE_ERROR);
+ }
+ if (sourceid == ID_PROGRESS_INDETERMINATE) {
+ ALF_Progress_SetState(ALF_ControlHwndById(panel, ID_PROGRESS_BAR), ALF_PROGRESS_STATE_INDETERMINATE);
+ ALF_Progress_SetState(ALF_ControlHwndById(panel, ID_PROGRESS_NATIVE_BAR), ALF_PROGRESS_STATE_INDETERMINATE);
+ ALF_Progress_SetState(ALF_ControlHwndById(panel, ID_PROGRESS_GAUGE), ALF_PROGRESS_STATE_INDETERMINATE);
+ }
+
+ return 1;
+ }
+
+ return 0;
+}
+
+static void
+progressPanelAttach(void *closure, HWND panel)
+{
+ (void)closure;
+
+ HWND bar = ALF_AddProgressBar(panel, ID_PROGRESS_BAR, 1, 1);
+ ALF_Progress_SetRange(bar, -50, 50);
+ HWND native = ALF_AddNativeProgressBar(panel, ID_PROGRESS_NATIVE_BAR, 1, 3);
+ ALF_Progress_SetRange(native, -50, 50);
+ HWND gauge = ALF_AddProgressGauge(panel, ID_PROGRESS_GAUGE, 1, 5);
+ ALF_Progress_SetRange(gauge, -50, 50);
+ ALF_AddNumericSpinBox(panel, ID_PROGRESS_SPINBOX, 1, 7, 12, -50, 50);
+
+ ALF_AddNativeButton(panel, ID_PROGRESS_NORMAL, 1, 9, TEXT("Normal"));
+ ALF_AddNativeButton(panel, ID_PROGRESS_PAUSED, 1, 11, TEXT("Paused"));
+ ALF_AddNativeButton(panel, ID_PROGRESS_ERROR, 1, 13, TEXT("Error"));
+ ALF_AddNativeButton(panel, ID_PROGRESS_INDETERMINATE, 1, 15, TEXT("Indeterminate"));
+
+ ALF_Layout_SetRowMinSize(panel, 0, 825);
+ ALF_Layout_SetRowMinSize(panel, 2, 825);
+ ALF_Layout_SetRowMinSize(panel, 4, 825);
+ ALF_Layout_SetRowMinSize(panel, 6, 825);
+ ALF_Layout_SetRowMinSize(panel, 8, 825);
+ ALF_Layout_SetRowMinSize(panel, 10, 825);
+ ALF_Layout_SetRowMinSize(panel, 12, 825);
+ ALF_Layout_SetRowMinSize(panel, 14, 825);
+ ALF_Layout_SetRowMinSize(panel, 16, 825);
+ ALF_Layout_SetColumnMinSize(panel, 0, 825);
+ ALF_Layout_SetColumnMinSize(panel, 2, 525);
+ ALF_Layout_SetColumnMinSize(panel, 4, 825);
+ ALF_Layout_SetRowExpandNumerator(panel, 16, 1);
+ ALF_Layout_SetColumnExpandNumerator(panel, 1, 1);
+ ALF_Layout_SetColumnExpandNumerator(panel, 3, 1);
+}
+
+static ALFPanelVTable progressPanelVtbl = {
+ progressPanelAttach,
+ commonPanelDestroy,
+ commonPanelMessage,
+ progressPanelCommand,
+ NULL,
+ commonPanelPaint,
+ NULL
+};
+
+static void
+progressPanelInit(HWND panel)
+{
+ CommonPanelPriv *priv = ALF_New(CommonPanelPriv, 1);
+ ALF_Panel_SetVTable(panel, &progressPanelVtbl, priv);
+}
+
void (*g_paneInitTable[PANE__MAX])(HWND) = {
buttonPanelInit, //PANE_BUTTONS
labelPanelInit, //PANE_LABEL,
@@ -876,7 +985,8 @@ void (*g_paneInitTable[PANE__MAX])(HWND) = {
checkboxPanelInit, //PANE_CHECKBOX,
groupboxPanelInit, //PANE_GROUPBOX,
iconviewPanelInit, //PANE_ICONVIEW,
- spinboxPanelInit //PANE_SPINBOX
+ spinboxPanelInit, //PANE_SPINBOX
+ progressPanelInit //PANE_PROGRESS
};
static void
@@ -1156,6 +1266,7 @@ WinMain
addPaneToNotebook(hwndNtbk, PANE_GROUPBOX);
addPaneToNotebook(hwndNtbk, PANE_ICONVIEW);
addPaneToNotebook(hwndNtbk, PANE_SPINBOX);
+ addPaneToNotebook(hwndNtbk, PANE_PROGRESS);
ALF_AddNativeButton(win, ID_HELLO, 1, 3, TEXT("&Hello World!"));
ALF_AddNativeButton(win, (WORD)-1, 3, 3, TEXT("Goodbye, World"));