Mercurial > godwindows
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 }