summaryrefslogtreecommitdiff
path: root/widgetfactory.cpp
diff options
context:
space:
mode:
authorJonas Kümmerlin <jonas@kuemmerlin.eu>2020-06-12 17:05:26 +0200
committerJonas Kümmerlin <jonas@kuemmerlin.eu>2020-06-12 17:05:26 +0200
commit253b9857e7b4317275b50795ddc53508e1cbd181 (patch)
tree8258de0a3f311ba621051f8130d115b61608d6e5 /widgetfactory.cpp
parentb7e4e6fb0bbfdd91f969be5011c0b76ef0ab2e2d (diff)
icon view and helper functions
initial implementation, needs more testing
Diffstat (limited to 'widgetfactory.cpp')
-rw-r--r--widgetfactory.cpp49
1 files changed, 47 insertions, 2 deletions
diff --git a/widgetfactory.cpp b/widgetfactory.cpp
index 67d5c5c..ab362f1 100644
--- a/widgetfactory.cpp
+++ b/widgetfactory.cpp
@@ -9,6 +9,7 @@ enum {
PANE_NOTEBOOK,
PANE_CHECKBOX,
PANE_GROUPBOX,
+ PANE_ICONVIEW,
PANE__MAX
};
@@ -18,7 +19,8 @@ static const TCHAR *g_paneLabels[PANE__MAX] = {
TEXT("Combo Box"), //PANE_COMBO,
TEXT("Notebook"), //PANE_NOTEBOOK,
TEXT("Checkbox"), //PANE_CHECKBOX,
- TEXT("GroupBox") //PANE_GROUPBOX
+ TEXT("GroupBox"), //PANE_GROUPBOX,
+ TEXT("Icon View") //PANE_ICONVIEW
};
enum {
@@ -759,13 +761,55 @@ groupboxPanelInit(HWND panel)
ALF_Panel_SetVTable(panel, &groupboxPanelVtbl, priv);
}
+/* iconview panel */
+
+static void
+iconviewPanelAttach(void *closure, HWND panel)
+{
+ (void)closure;
+
+ HICON winlogo = ALF_LoadIcon(NULL, IDI_WINLOGO, 64, 64);
+ // FIXME! memory leak here
+ ALF_AddIconView(panel, (WORD)-1, 1, 3, winlogo);
+
+ 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_SetColumnMinSize(panel, 0, 825);
+ ALF_Layout_SetColumnMinSize(panel, 2, 825);
+ ALF_Layout_SetColumnMinSize(panel, 4, 825);
+ ALF_Layout_SetRowExpandNumerator(panel, 3, 1);
+ ALF_Layout_SetRowExpandNumerator(panel, 5, 1);
+ ALF_Layout_SetColumnExpandNumerator(panel, 1, 1);
+ ALF_Layout_SetColumnExpandNumerator(panel, 3, 1);
+}
+
+static ALFPanelVTable iconviewPanelVtbl = {
+ iconviewPanelAttach,
+ commonPanelDestroy,
+ commonPanelMessage,
+ NULL,
+ NULL,
+ commonPanelPaint,
+ NULL
+};
+
+static void
+iconviewPanelInit(HWND panel)
+{
+ CommonPanelPriv *priv = ALF_New(CommonPanelPriv, 1);
+ ALF_Panel_SetVTable(panel, &iconviewPanelVtbl, priv);
+}
+
void (*g_paneInitTable[PANE__MAX])(HWND) = {
buttonPanelInit, //PANE_BUTTONS
labelPanelInit, //PANE_LABEL,
comboPanelInit, //PANE_COMBO,
notebookPanelInit, //PANE_NOTEBOOK,
checkboxPanelInit, //PANE_CHECKBOX,
- groupboxPanelInit //PANE_GROUPBOX,
+ groupboxPanelInit, //PANE_GROUPBOX,
+ iconviewPanelInit //PANE_ICONVIEW
};
static void
@@ -1006,6 +1050,7 @@ WinMain
addPaneToNotebook(hwndNtbk, PANE_NOTEBOOK);
addPaneToNotebook(hwndNtbk, PANE_COMBO);
addPaneToNotebook(hwndNtbk, PANE_GROUPBOX);
+ addPaneToNotebook(hwndNtbk, PANE_ICONVIEW);
ALF_AddNativeButton(win, ID_HELLO, 1, 3, TEXT("&Hello World!"));
ALF_AddNativeButton(win, (WORD)-1, 3, 3, TEXT("Goodbye, World"));