changeset 117:8727f47ee3ce

Add the basic popup menu on container context for testing purposes.
author Brian Smith <brian@dbsoft.org>
date Fri, 12 Nov 2021 06:54:27 -0600
parents 58c641fa31ba
children 5962894873f1
files dwootest/dwootest.go dwtest/dwtest.go
diffstat 2 files changed, 77 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/dwootest/dwootest.go	Fri Nov 12 05:27:13 2021 -0600
+++ b/dwootest/dwootest.go	Fri Nov 12 06:54:27 2021 -0600
@@ -1034,7 +1034,7 @@
 }
 
 // Page 4
-func container_add(notebookbox4 dw.HBOX) {
+func container_add(notebookbox4 dw.HBOX, mainwindow dw.HWND) {
 	var z int
 	titles := []string{"Type", "Size", "Time", "Date"}
 	flags := []uint{dw.CFA_BITMAPORICON | dw.CFA_LEFT | dw.CFA_HORZSEPARATOR | dw.CFA_SEPARATOR,
@@ -1143,8 +1143,41 @@
 		return dw.FALSE
 	})
 	container.ConnectItemContext(func(window dw.HCONTAINER, text string, x int, y int, itemdata dw.POINTER) int {
+		hwndMenu := dw.MenuNew(0)
+		hwndSubMenu := dw.MenuNew(0)
+
 		container_status.SetText(fmt.Sprintf("DW_SIGNAL_ITEM_CONTEXT: Window: %x Text: %s x: %d y: %d Itemdata: %x",
 			dw.HANDLE_TO_UINTPTR(window), text, x, y, uintptr(itemdata)))
+		popupfunc := func(window dw.HMENUITEM) int {
+			container_status.SetText(fmt.Sprintf("DW_SIGNAL_CLICKED: Menu: %x Container context menu clicked", dw.HANDLE_TO_UINTPTR(window)))
+			return dw.FALSE
+		}
+
+		menuitem := hwndSubMenu.AppendItem("File", dw.MENU_POPUP, 0, dw.TRUE, dw.TRUE, dw.NOMENU)
+		menuitem.ConnectClicked(popupfunc)
+		menuitem = hwndSubMenu.AppendItem("Date", dw.MENU_POPUP, 0, dw.TRUE, dw.TRUE, dw.NOMENU)
+		menuitem.ConnectClicked(popupfunc)
+		menuitem = hwndSubMenu.AppendItem("Size", dw.MENU_POPUP, 0, dw.TRUE, dw.TRUE, dw.NOMENU)
+		menuitem.ConnectClicked(popupfunc)
+		menuitem = hwndSubMenu.AppendItem("None", dw.MENU_POPUP, 0, dw.TRUE, dw.TRUE, dw.NOMENU)
+		menuitem.ConnectClicked(popupfunc)
+
+		menuitem = hwndMenu.AppendItem("Sort", dw.MENU_POPUP, 0, dw.TRUE, dw.FALSE, hwndSubMenu)
+
+		menuitem = hwndMenu.AppendItem("Make Directory", dw.MENU_POPUP, 0, dw.TRUE, dw.FALSE, dw.NOMENU)
+		menuitem.ConnectClicked(popupfunc)
+
+		hwndMenu.AppendItem("", 0, 0, dw.TRUE, dw.FALSE, dw.NOMENU)
+		menuitem = hwndMenu.AppendItem("Rename Entry", dw.MENU_POPUP, 0, dw.TRUE, dw.FALSE, dw.NOMENU)
+		menuitem.ConnectClicked(popupfunc)
+
+		menuitem = hwndMenu.AppendItem("Delete Entry", dw.MENU_POPUP, 0, dw.TRUE, dw.FALSE, dw.NOMENU)
+		menuitem.ConnectClicked(popupfunc)
+
+		hwndMenu.AppendItem("", 0, 0, dw.TRUE, dw.FALSE, dw.NOMENU)
+		menuitem = hwndMenu.AppendItem("View File", dw.MENU_POPUP, 0, dw.TRUE, dw.FALSE, dw.NOMENU)
+		menuitem.ConnectClicked(popupfunc)
+		hwndMenu.Popup(mainwindow, x, y)
 		return dw.FALSE
 	})
 
@@ -1693,7 +1726,7 @@
 	notebookpage4 := notebook.PageNew(1, dw.FALSE)
 	notebookpage4.Pack(notebookbox4)
 	notebookpage4.SetText("container")
-	container_add(notebookbox4)
+	container_add(notebookbox4, mainwindow)
 
 	notebookbox5 := dw.BoxNew(dw.VERT, 5)
 	notebookpage5 := notebook.PageNew(1, dw.FALSE)
--- a/dwtest/dwtest.go	Fri Nov 12 05:27:13 2021 -0600
+++ b/dwtest/dwtest.go	Fri Nov 12 06:54:27 2021 -0600
@@ -902,10 +902,50 @@
 	return FALSE
 }
 
+/* Context menus */
+func context_menu_cb(hwnd dw.HMENUITEM, data dw.POINTER) int {
+	statline := dw.POINTER_TO_HANDLE(data)
+
+	dw.Window_set_text(statline, fmt.Sprintf("DW_SIGNAL_CLICKED: Menu: %x Container context menu clicked", dw.HANDLE_TO_UINTPTR(hwnd)))
+	return FALSE;
+}
+
+func item_context_menu_new(text string, data dw.POINTER) dw.HMENUI {
+	hwndMenu := dw.Menu_new(0)
+	hwndSubMenu := dw.Menu_new(0)
+	menuitem := dw.Menu_append_item(hwndSubMenu, "File", dw.MENU_POPUP, 0, TRUE, TRUE, dw.NOMENU)
+	dw.Signal_connect(menuitem, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(context_menu_cb), data)
+	menuitem = dw.Menu_append_item(hwndSubMenu, "Date", dw.MENU_POPUP, 0, TRUE, TRUE, dw.NOMENU)
+	dw.Signal_connect(menuitem, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(context_menu_cb), data)
+	menuitem = dw.Menu_append_item(hwndSubMenu, "Size", dw.MENU_POPUP, 0, TRUE, TRUE, dw.NOMENU)
+	dw.Signal_connect(menuitem, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(context_menu_cb), data)
+	menuitem = dw.Menu_append_item(hwndSubMenu, "None", dw.MENU_POPUP, 0, TRUE, TRUE, dw.NOMENU)
+	dw.Signal_connect(menuitem, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(context_menu_cb), data)
+
+	menuitem = dw.Menu_append_item(hwndMenu, "Sort", dw.MENU_POPUP, 0, TRUE, FALSE, hwndSubMenu)
+
+	menuitem = dw.Menu_append_item(hwndMenu, "Make Directory", dw.MENU_POPUP, 0, TRUE, FALSE, dw.NOMENU)
+	dw.Signal_connect(menuitem, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(context_menu_cb), data)
+
+	dw.Menu_append_item(hwndMenu, "", 0, 0, TRUE, FALSE, dw.NOMENU)
+	menuitem = dw.Menu_append_item(hwndMenu, "Rename Entry", dw.MENU_POPUP, 0, TRUE, FALSE, dw.NOMENU)
+	dw.Signal_connect(menuitem, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(context_menu_cb), data)
+
+	menuitem = dw.Menu_append_item(hwndMenu, "Delete Entry", dw.MENU_POPUP, 0, TRUE, FALSE, dw.NOMENU)
+	dw.Signal_connect(menuitem, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(context_menu_cb), data)
+
+	dw.Menu_append_item(hwndMenu, "", 0, 0, TRUE, FALSE, dw.NOMENU)
+	menuitem = dw.Menu_append_item(hwndMenu, "View File", dw.MENU_POPUP, 0, TRUE, FALSE, dw.NOMENU)
+	dw.Signal_connect(menuitem, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(context_menu_cb), data)
+
+	return hwndMenu
+}
+
 func item_context_cb(window dw.HCONTAINER, text string, x int, y int, data dw.POINTER, itemdata dw.POINTER) int {
-	message := fmt.Sprintf("DW_SIGNAL_ITEM_CONTEXT: Window: %x Text: %s x: %d y: %d Itemdata: %x", dw.HANDLE_TO_UINTPTR(window),
-		text, x, y, uintptr(itemdata))
+	message := fmt.Sprintf("DW_SIGNAL_ITEM_CONTEXT: Window: %x Text: %s x: %d y: %d Itemdata: %x", dw.HANDLE_TO_UINTPTR(window), text, x, y, uintptr(itemdata))
+	popupmenu := item_context_menu_new(text, data)
 	dw.Window_set_text(dw.POINTER_TO_HANDLE(data), message)
+	dw.Menu_popup(popupmenu, mainwindow, x, y)
 	return FALSE
 }