Mercurial > godwindows
changeset 111:a01a9f21ed83
Add word wrap, color, font style and size options to the container tab.
author | Brian Smith <brian@dbsoft.org> |
---|---|
date | Fri, 12 Nov 2021 03:09:46 -0600 |
parents | 692733612332 |
children | 2307b192b129 |
files | dw/dw.go dwootest/dwootest.go dwtest/dwtest.go |
diffstat | 3 files changed, 370 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/dw/dw.go Thu Nov 11 18:24:09 2021 -0600 +++ b/dw/dw.go Fri Nov 12 03:09:46 2021 -0600 @@ -1252,8 +1252,13 @@ } // Check if two window handles are the same window -func Window_compare(handle1 HANDLE, handle2 HANDLE) int { - return int(C.go_window_compare(handle1.GetHandle(), handle2.GetHandle())) +func Window_compare(handle1 HANDLE, handle2 HANDLE) bool { + return C.go_window_compare(handle1.GetHandle(), handle2.GetHandle()) != 0 +} + +// Check if two window handles are the same window +func (window HWND) Compare(other HANDLE) bool { + return Window_compare(window, other) } // Causes entire window to be invalidated and redrawn.
--- a/dwootest/dwootest.go Thu Nov 11 18:24:09 2021 -0600 +++ b/dwootest/dwootest.go Fri Nov 12 03:09:46 2021 -0600 @@ -477,6 +477,105 @@ return "none" } +func color_combobox() dw.HLISTBOX { + combobox := dw.ComboboxNew("DW_CLR_DEFAULT", 0) + + combobox.Append("DW_CLR_DEFAULT") + combobox.Append("DW_CLR_BLACK") + combobox.Append("DW_CLR_DARKRED") + combobox.Append("DW_CLR_DARKGREEN") + combobox.Append("DW_CLR_BROWN") + combobox.Append("DW_CLR_DARKBLUE") + combobox.Append("DW_CLR_DARKPINK") + combobox.Append("DW_CLR_DARKCYAN") + combobox.Append("DW_CLR_PALEGRAY") + combobox.Append("DW_CLR_DARKGRAY") + combobox.Append("DW_CLR_RED") + combobox.Append("DW_CLR_GREEN") + combobox.Append("DW_CLR_YELLOW") + combobox.Append("DW_CLR_BLUE") + combobox.Append("DW_CLR_PINK") + combobox.Append("DW_CLR_CYAN") + combobox.Append("DW_CLR_WHITE") + return combobox +} + +func combobox_color(colortext string) dw.COLOR { + color := dw.CLR_DEFAULT + + if colortext == "DW_CLR_BLACK" { + color = dw.CLR_BLACK + } else if colortext == "DW_CLR_DARKRED" { + color = dw.CLR_DARKRED + } else if colortext == "DW_CLR_DARKGREEN" { + color = dw.CLR_DARKGREEN + } else if colortext == "DW_CLR_BROWN" { + color = dw.CLR_BROWN + } else if colortext == "DW_CLR_DARKBLUE" { + color = dw.CLR_DARKBLUE + } else if colortext == "DW_CLR_DARKPINK" { + color = dw.CLR_DARKPINK + } else if colortext == "DW_CLR_DARKCYAN" { + color = dw.CLR_DARKCYAN + } else if colortext == "DW_CLR_PALEGRAY" { + color = dw.CLR_PALEGRAY + } else if colortext == "DW_CLR_DARKGRAY" { + color = dw.CLR_DARKGRAY + } else if colortext == "DW_CLR_RED" { + color = dw.CLR_RED + } else if colortext == "DW_CLR_GREEN" { + color = dw.CLR_GREEN + } else if colortext == "DW_CLR_YELLOW" { + color = dw.CLR_YELLOW + } else if colortext == "DW_CLR_BLUE" { + color = dw.CLR_BLUE + } else if colortext == "DW_CLR_PINK" { + color = dw.CLR_PINK + } else if colortext == "DW_CLR_CYAN" { + color = dw.CLR_CYAN + } else if colortext == "DW_CLR_WHITE" { + color = dw.CLR_WHITE + } + + return color +} + +func mle_color(hwnd dw.HLISTBOX, mlefore dw.HLISTBOX, mleback dw.HLISTBOX, container_mle dw.HMLE, pos int) { + fore := dw.CLR_DEFAULT + back := dw.CLR_DEFAULT + + if dw.HWND(hwnd).Compare(mlefore) { + colortext := mlefore.GetText(pos) + fore = combobox_color(colortext) + } else { + text := dw.HWND(mlefore).GetText() + + if text != "" { + fore = combobox_color(text) + } + } + if dw.HWND(hwnd).Compare(mleback) { + colortext := mleback.GetText(pos) + back = combobox_color(colortext) + } else { + text := dw.HWND(mleback).GetText() + + if text != "" { + back = combobox_color(text) + } + } + + container_mle.SetColor(fore, back) +} + +func mle_font_set(mle dw.HMLE, fontsize int, fontname string) { + if fontname != "" { + mle.SetFont(fmt.Sprintf("%d.%s", fontsize, fontname)) + } else { + mle.SetFont(fontname) + } +} + func button_callback(combobox1 dw.HLISTBOX, combobox2 dw.HLISTBOX, spinbutton dw.HSPINBUTTON, cal dw.HCALENDAR) { idx := combobox1.Selected() buf1 := combobox1.GetText(idx) @@ -946,6 +1045,43 @@ containerbox := dw.BoxNew(dw.HORZ, 2) notebookbox4.PackStart(containerbox, 500, 200, dw.TRUE, dw.TRUE, 0) + /* Add a word wrap/font style box */ + hbox := dw.BoxNew(dw.HORZ, 0) + + checkbox := dw.CheckButtonNew("Word wrap", 0) + hbox.PackStart(checkbox, -1, -1, dw.FALSE, dw.TRUE, 1) + text := dw.TextNew("Foreground:", 0) + text.SetStyle(dw.DT_VCENTER, dw.DT_VCENTER) + hbox.PackStart(text, -1, -1, dw.FALSE, dw.TRUE, 1) + mlefore := color_combobox() + hbox.PackStart(mlefore, 150, -1, dw.TRUE, dw.FALSE, 1) + text = dw.TextNew("Background:", 0) + text.SetStyle(dw.DT_VCENTER, dw.DT_VCENTER) + hbox.PackStart(text, -1, -1, dw.FALSE, dw.TRUE, 1) + mleback := color_combobox() + hbox.PackStart(mleback, 150, -1, dw.TRUE, dw.FALSE, 1) + checkbox.Set(dw.TRUE) + text = dw.TextNew("Font:", 0) + text.SetStyle(dw.DT_VCENTER, dw.DT_VCENTER) + hbox.PackStart(text, -1, -1, dw.FALSE, dw.TRUE, 1) + fontsize := dw.SpinButtonNew("9", 0) + hbox.PackStart(fontsize, -1, -1, dw.FALSE, dw.FALSE, 1) + fontsize.SetLimits(100, 5) + fontsize.SetPos(9) + fontname := dw.ComboboxNew("Default", 0) + fontname.Append("Default") + fontname.Append("Arial") + fontname.Append("Geneva") + fontname.Append("Verdana") + fontname.Append("Helvetica") + fontname.Append("DejaVu Sans") + fontname.Append("Times New Roman") + fontname.Append("Times New Roman Bold") + fontname.Append("Times New Roman Italic") + fontname.Append("Times New Roman Bold Italic") + hbox.PackStart(fontname, 150, -1, dw.TRUE, dw.FALSE, 1) + notebookbox4.PackStart(hbox, -1, -1, dw.TRUE, dw.FALSE, 1) + /* now a container area under this box */ container := dw.ContainerNew(100, dw.TRUE) notebookbox4.PackStart(container, 500, 200, dw.TRUE, dw.FALSE, 1) @@ -1054,6 +1190,46 @@ dw.HANDLE_TO_UINTPTR(window), column_num, stype)) return dw.FALSE }) + + checkbox.ConnectClicked(func(window dw.HBUTTON) int { + container_mle.SetWordWrap(checkbox.Get()) + return dw.TRUE + }) + + mlefore.ConnectListSelect(func(window dw.HLISTBOX, index int) int { + mle_color(window, mlefore, mleback, container_mle, index) + return dw.FALSE + }) + + mleback.ConnectListSelect(func(window dw.HLISTBOX, index int) int { + mle_color(window, mlefore, mleback, container_mle, index) + return dw.FALSE + }) + + fontname.ConnectListSelect(func(window dw.HLISTBOX, pos int) int { + font := fontname.GetText(pos) + + if font == "Default" { + font = "" + } + + mle_font_set(container_mle, fontsize.GetPos(), font) + return dw.FALSE + }) + + fontsize.ConnectValueChanged(func(window dw.HSPINBUTTON, size int) int { + font := dw.HWND(fontname).GetText() + + if font != "" { + if font == "Default" { + font = "" + } + mle_font_set(container_mle, size, font) + } else { + mle_font_set(container_mle, size, "") + } + return dw.FALSE + }) } // Page 5
--- a/dwtest/dwtest.go Thu Nov 11 18:24:09 2021 -0600 +++ b/dwtest/dwtest.go Fri Nov 12 03:09:46 2021 -0600 @@ -755,6 +755,146 @@ } // Page 3 and 4 Callbacks +func word_wrap_click_cb(wordwrap dw.HBUTTON, data dw.POINTER) int { + container_mle := dw.POINTER_TO_HANDLE(data) + + dw.Mle_set_word_wrap(container_mle, dw.Checkbox_get(wordwrap)) + return TRUE +} + +func color_combobox() dw.HLISTBOX { + combobox := dw.Combobox_new("DW_CLR_DEFAULT", 0) + + dw.Listbox_append(combobox, "DW_CLR_DEFAULT") + dw.Listbox_append(combobox, "DW_CLR_BLACK") + dw.Listbox_append(combobox, "DW_CLR_DARKRED") + dw.Listbox_append(combobox, "DW_CLR_DARKGREEN") + dw.Listbox_append(combobox, "DW_CLR_BROWN") + dw.Listbox_append(combobox, "DW_CLR_DARKBLUE") + dw.Listbox_append(combobox, "DW_CLR_DARKPINK") + dw.Listbox_append(combobox, "DW_CLR_DARKCYAN") + dw.Listbox_append(combobox, "DW_CLR_PALEGRAY") + dw.Listbox_append(combobox, "DW_CLR_DARKGRAY") + dw.Listbox_append(combobox, "DW_CLR_RED") + dw.Listbox_append(combobox, "DW_CLR_GREEN") + dw.Listbox_append(combobox, "DW_CLR_YELLOW") + dw.Listbox_append(combobox, "DW_CLR_BLUE") + dw.Listbox_append(combobox, "DW_CLR_PINK") + dw.Listbox_append(combobox, "DW_CLR_CYAN") + dw.Listbox_append(combobox, "DW_CLR_WHITE") + return combobox +} + +func combobox_color(colortext string) dw.COLOR { + color := dw.CLR_DEFAULT + + if colortext == "DW_CLR_BLACK" { + color = dw.CLR_BLACK + } else if colortext == "DW_CLR_DARKRED" { + color = dw.CLR_DARKRED + } else if colortext == "DW_CLR_DARKGREEN" { + color = dw.CLR_DARKGREEN + } else if colortext == "DW_CLR_BROWN" { + color = dw.CLR_BROWN + } else if colortext == "DW_CLR_DARKBLUE" { + color = dw.CLR_DARKBLUE + } else if colortext == "DW_CLR_DARKPINK" { + color = dw.CLR_DARKPINK + } else if colortext == "DW_CLR_DARKCYAN" { + color = dw.CLR_DARKCYAN + } else if colortext == "DW_CLR_PALEGRAY" { + color = dw.CLR_PALEGRAY + } else if colortext == "DW_CLR_DARKGRAY" { + color = dw.CLR_DARKGRAY + } else if colortext == "DW_CLR_RED" { + color = dw.CLR_RED + } else if colortext == "DW_CLR_GREEN" { + color = dw.CLR_GREEN + } else if colortext == "DW_CLR_YELLOW" { + color = dw.CLR_YELLOW + } else if colortext == "DW_CLR_BLUE" { + color = dw.CLR_BLUE + } else if colortext == "DW_CLR_PINK" { + color = dw.CLR_PINK + } else if colortext == "DW_CLR_CYAN" { + color = dw.CLR_CYAN + } else if colortext == "DW_CLR_WHITE" { + color = dw.CLR_WHITE + } + + return color +} + +func mle_color_cb(hwnd dw.HLISTBOX, pos int, data dw.POINTER) int { + hbox := dw.POINTER_TO_HANDLE(data) + mlefore := dw.POINTER_TO_HANDLE(dw.Window_get_data(hbox, "mlefore")) + mleback := dw.POINTER_TO_HANDLE(dw.Window_get_data(hbox, "mleback")) + fore := dw.CLR_DEFAULT + back := dw.CLR_DEFAULT + + if dw.Window_compare(hwnd, mlefore) { + colortext := dw.Listbox_get_text(mlefore, pos) + fore = combobox_color(colortext) + } else { + text := dw.Window_get_text(mlefore) + + if text != "" { + fore = combobox_color(text) + } + } + if dw.Window_compare(hwnd, mleback) { + colortext := dw.Listbox_get_text(mleback, pos) + back = combobox_color(colortext) + } else { + text := dw.Window_get_text(mleback) + + if text != "" { + back = combobox_color(text) + } + } + + dw.Window_set_color(container_mle, fore, back) + return FALSE +} + +func mle_font_set(mle dw.HMLE, fontsize int, fontname string) { + if fontname != "" { + dw.Window_set_font(mle, fmt.Sprintf("%d.%s", fontsize, fontname)) + } else { + dw.Window_set_font(mle, fontname) + } +} + +func mle_fontname_cb(hwnd dw.HLISTBOX, pos int, data dw.POINTER) int { + hbox := dw.POINTER_TO_HANDLE(data) + fontsize := dw.POINTER_TO_HANDLE(dw.Window_get_data(hbox, "fontsize")) + fontname := dw.POINTER_TO_HANDLE(dw.Window_get_data(hbox, "fontname")) + font := dw.Listbox_get_text(fontname, pos) + + if font == "Default" { + font = "" + } + + mle_font_set(container_mle, dw.Spinbutton_get_pos(fontsize), font) + return FALSE +} + +func mle_fontsize_cb(hwnd dw.HSPINBUTTON, size int, data dw.POINTER) int { + hbox := dw.POINTER_TO_HANDLE(data) + fontname := dw.POINTER_TO_HANDLE(dw.Window_get_data(hbox, "fontname")) + font := dw.Window_get_text(fontname) + + if font != "" { + if font == "Default" { + font = "" + } + mle_font_set(container_mle, size, font) + } else { + mle_font_set(container_mle, size, "") + } + return FALSE +} + func item_enter_cb(window dw.HCONTAINER, text string, data dw.POINTER, itemdata dw.POINTER) int { message := fmt.Sprintf("DW_SIGNAL_ITEM_ENTER: Window: %x Text: %s Itemdata: %x", dw.HANDLE_TO_UINTPTR(window), text, uintptr(itemdata)) dw.Window_set_text(dw.POINTER_TO_HANDLE(data), message) @@ -1352,6 +1492,48 @@ containerbox := dw.Box_new(dw.HORZ, 2) dw.Box_pack_start(notebookbox4, containerbox, 500, 200, TRUE, TRUE, 0) + /* Add a word wrap/font style box */ + hbox := dw.Box_new(dw.HORZ, 0) + + checkbox := dw.Checkbox_new("Word wrap", 0) + dw.Box_pack_start(hbox, checkbox, -1, -1, FALSE, TRUE, 1) + text := dw.Text_new("Foreground:", 0) + dw.Window_set_style(text, dw.DT_VCENTER, dw.DT_VCENTER) + dw.Box_pack_start(hbox, text, -1, -1, FALSE, TRUE, 1) + mlefore := color_combobox() + dw.Box_pack_start(hbox, mlefore, 150, -1, TRUE, FALSE, 1) + text = dw.Text_new("Background:", 0) + dw.Window_set_style(text, dw.DT_VCENTER, dw.DT_VCENTER) + dw.Box_pack_start(hbox, text, -1, -1, FALSE, TRUE, 1) + mleback := color_combobox() + dw.Box_pack_start(hbox, mleback, 150, -1, TRUE, FALSE, 1) + dw.Checkbox_set(checkbox, TRUE) + text = dw.Text_new("Font:", 0) + dw.Window_set_style(text, dw.DT_VCENTER, dw.DT_VCENTER) + dw.Box_pack_start(hbox, text, -1, -1, FALSE, TRUE, 1) + fontsize := dw.Spinbutton_new("9", 0) + dw.Box_pack_start(hbox, fontsize, -1, -1, FALSE, FALSE, 1) + dw.Spinbutton_set_limits(fontsize, 100, 5) + dw.Spinbutton_set_pos(fontsize, 9) + fontname := dw.Combobox_new("Default", 0) + dw.Listbox_append(fontname, "Default") + dw.Listbox_append(fontname, "Arial") + dw.Listbox_append(fontname, "Geneva") + dw.Listbox_append(fontname, "Verdana") + dw.Listbox_append(fontname, "Helvetica") + dw.Listbox_append(fontname, "DejaVu Sans") + dw.Listbox_append(fontname, "Times New Roman") + dw.Listbox_append(fontname, "Times New Roman Bold") + dw.Listbox_append(fontname, "Times New Roman Italic") + dw.Listbox_append(fontname, "Times New Roman Bold Italic") + dw.Box_pack_start(hbox, fontname, 150, -1, TRUE, FALSE, 1) + dw.Box_pack_start(notebookbox4, hbox, -1, -1, TRUE, FALSE, 1) + + dw.Window_set_data(hbox, "mlefore", dw.HANDLE_TO_POINTER(mlefore)) + dw.Window_set_data(hbox, "mleback", dw.HANDLE_TO_POINTER(mleback)) + dw.Window_set_data(hbox, "fontsize", dw.HANDLE_TO_POINTER(fontsize)) + dw.Window_set_data(hbox, "fontname", dw.HANDLE_TO_POINTER(fontname)) + /* now a container area under this box */ container = dw.Container_new(100, TRUE) dw.Box_pack_start(notebookbox4, container, 500, 200, TRUE, FALSE, 1) @@ -1411,6 +1593,11 @@ dw.Signal_connect(container, dw.SIGNAL_ITEM_CONTEXT, dw.SIGNAL_FUNC(item_context_cb), dw.HANDLE_TO_POINTER(container_status)) dw.Signal_connect(container, dw.SIGNAL_ITEM_SELECT, dw.SIGNAL_FUNC(container_select_cb), dw.HANDLE_TO_POINTER(container_status)) dw.Signal_connect(container, dw.SIGNAL_COLUMN_CLICK, dw.SIGNAL_FUNC(column_click_cb), dw.HANDLE_TO_POINTER(container_status)) + dw.Signal_connect(checkbox, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(word_wrap_click_cb), dw.HANDLE_TO_POINTER(container_mle)) + dw.Signal_connect(mlefore, dw.SIGNAL_LIST_SELECT, dw.SIGNAL_FUNC(mle_color_cb), dw.HANDLE_TO_POINTER(hbox)) + dw.Signal_connect(mleback, dw.SIGNAL_LIST_SELECT, dw.SIGNAL_FUNC(mle_color_cb), dw.HANDLE_TO_POINTER(hbox)) + dw.Signal_connect(fontname, dw.SIGNAL_LIST_SELECT, dw.SIGNAL_FUNC(mle_fontname_cb), dw.HANDLE_TO_POINTER(hbox)) + dw.Signal_connect(fontsize, dw.SIGNAL_VALUE_CHANGED, dw.SIGNAL_FUNC(mle_fontsize_cb), dw.HANDLE_TO_POINTER(hbox)) } // Page 5