Mercurial > godwindows
changeset 65:4960219e245b
Renamed what had been dwootest to hello, since it was basically a hello
world example. dwootest is now a Go style version of the dwtest program
instead of the C style dwtest.
author | Brian Smith <brian@dbsoft.org> |
---|---|
date | Sat, 16 Mar 2013 23:32:05 -0500 |
parents | ba5915851073 |
children | e9b21845873e |
files | src/dw/dw.go src/dwootest/dwootest.go src/hello/hello.exe.x64.manifest src/hello/hello.exe.x86.manifest src/hello/hello.go src/hello/hello.rc src/hello/makesyso.bat |
diffstat | 7 files changed, 2594 insertions(+), 85 deletions(-) [+] |
line wrap: on
line diff
--- a/src/dw/dw.go Sat Mar 16 16:33:05 2013 -0500 +++ b/src/dw/dw.go Sat Mar 16 23:32:05 2013 -0500 @@ -19,6 +19,18 @@ GetHandle() unsafe.Pointer GetType() C.uint } +type DRAWABLE interface { + DrawPoint(x int, y int) + DrawLine(x1 int, y1 int, x2 int, y2 int) + DrawPolygon(flags int, x []int, y []int) + DrawRect(fill int, x int, y int, width int, height int) + DrawArc(flags int, xorigin int, yorigin int, x1 int, y1 int, x2 int, y2 int) + DrawText(x int, y int, text string) + BitBltStretchWindow(xdest int, ydest int, width int, height int, src HANDLE, xsrc int, ysrc int, srcwidth int, srcheight int) int + BitBltStretchPixmap(xdest int, ydest int, width int, height int, srcp HPIXMAP, xsrc int, ysrc int, srcwidth int, srcheight int) int + BitBltWindow(xdest int, ydest int, width int, height int, src HANDLE, xsrc int, ysrc int) + BitBltPixmap(xdest int, ydest int, width int, height int, srcp HPIXMAP, xsrc int, ysrc int) +} type HWND struct { hwnd unsafe.Pointer } @@ -649,6 +661,10 @@ return HWND{C.go_window_new(unsafe.Pointer(owner.hwnd), ctitle, C.ulong(flags))}; } +func WindowNew(owner HWND, title string, flags uint) HWND { + return Window_new(owner, title, flags); +} + func Window_show(handle HANDLE) int { return int(C.go_window_show(handle.GetHandle())); } @@ -854,7 +870,11 @@ C.go_window_set_bitmap(window.GetHandle(), C.ulong(id), cfilename); } -func (window HWND) SetBitmap(id uint, filename string) { +func (window HBUTTON) SetBitmap(id uint, filename string) { + Window_set_bitmap(window, id, filename); +} + +func (window HBITMAP) SetBitmap(id uint, filename string) { Window_set_bitmap(window, id, filename); } @@ -948,6 +968,926 @@ func (window HWND) SetStyle(style uint, mask uint) { Window_set_style(window, style, mask); } + +func (window HENTRYFIELD) Destroy() int { + return Window_destroy(window); +} + +func (window HENTRYFIELD) Disable() { + Window_disable(window); +} + +func (window HENTRYFIELD) Enable() { + Window_enable(window); +} + +func (window HENTRYFIELD) GetData(dataname string) POINTER { + return Window_get_data(window, dataname); +} + +func (window HENTRYFIELD) GetFont() string { + return Window_get_font(window); +} + +func (window HENTRYFIELD) GetPreferredSize() (int, int) { + return Window_get_preferred_size(window); +} + +func (window HENTRYFIELD) GetText() string { + return Window_get_text(window); +} + +func (window HENTRYFIELD) SetColor(fore COLOR, back COLOR) int { + return Window_set_color(window, fore, back); +} + +func (window HENTRYFIELD) SetFocus() { + Window_set_focus(window); +} + +func (window HENTRYFIELD) SetFont(fontname string) int { + return Window_set_font(window, fontname); +} + +func (window HENTRYFIELD) SetText(text string) { + Window_set_text(window, text); +} + +func (window HENTRYFIELD) SetTooltip(bubbletext string) { + Window_set_tooltip(window, bubbletext); +} + +func (window HENTRYFIELD) SetPointer(cursortype int) { + Window_set_pointer(window, cursortype); +} + +func (window HENTRYFIELD) SetStyle(style uint, mask uint) { + Window_set_style(window, style, mask); +} + +func (window HENTRYFIELD) Unpack() int { + return Box_unpack(window); +} + +func (window HTEXT) Destroy() int { + return Window_destroy(window); +} + +func (window HTEXT) Disable() { + Window_disable(window); +} + +func (window HTEXT) Enable() { + Window_enable(window); +} + +func (window HTEXT) GetData(dataname string) POINTER { + return Window_get_data(window, dataname); +} + +func (window HTEXT) GetFont() string { + return Window_get_font(window); +} + +func (window HTEXT) GetPreferredSize() (int, int) { + return Window_get_preferred_size(window); +} + +func (window HTEXT) GetText() string { + return Window_get_text(window); +} + +func (window HTEXT) SetColor(fore COLOR, back COLOR) int { + return Window_set_color(window, fore, back); +} + +func (window HTEXT) SetFocus() { + Window_set_focus(window); +} + +func (window HTEXT) SetFont(fontname string) int { + return Window_set_font(window, fontname); +} + +func (window HTEXT) SetText(text string) { + Window_set_text(window, text); +} + +func (window HTEXT) SetPointer(cursortype int) { + Window_set_pointer(window, cursortype); +} + +func (window HTEXT) SetStyle(style uint, mask uint) { + Window_set_style(window, style, mask); +} + +func (window HTEXT) Unpack() int { + return Box_unpack(window); +} + +func (window HTREE) Destroy() int { + return Window_destroy(window); +} + +func (window HTREE) Disable() { + Window_disable(window); +} + +func (window HTREE) Enable() { + Window_enable(window); +} + +func (window HTREE) GetData(dataname string) POINTER { + return Window_get_data(window, dataname); +} + +func (window HTREE) GetFont() string { + return Window_get_font(window); +} + +func (window HTREE) GetPreferredSize() (int, int) { + return Window_get_preferred_size(window); +} + +func (window HTREE) GetText() string { + return Window_get_text(window); +} + +func (window HTREE) SetColor(fore COLOR, back COLOR) int { + return Window_set_color(window, fore, back); +} + +func (window HTREE) SetFocus() { + Window_set_focus(window); +} + +func (window HTREE) SetFont(fontname string) int { + return Window_set_font(window, fontname); +} + +func (window HTREE) SetText(text string) { + Window_set_text(window, text); +} + +func (window HTREE) SetTooltip(bubbletext string) { + Window_set_tooltip(window, bubbletext); +} + +func (window HTREE) SetPointer(cursortype int) { + Window_set_pointer(window, cursortype); +} + +func (window HTREE) SetStyle(style uint, mask uint) { + Window_set_style(window, style, mask); +} + +func (window HTREE) Unpack() int { + return Box_unpack(window); +} + +func (window HCONTAINER) Destroy() int { + return Window_destroy(window); +} + +func (window HCONTAINER) Disable() { + Window_disable(window); +} + +func (window HCONTAINER) Enable() { + Window_enable(window); +} + +func (window HCONTAINER) GetData(dataname string) POINTER { + return Window_get_data(window, dataname); +} + +func (window HCONTAINER) GetFont() string { + return Window_get_font(window); +} + +func (window HCONTAINER) GetPreferredSize() (int, int) { + return Window_get_preferred_size(window); +} + +func (window HCONTAINER) GetText() string { + return Window_get_text(window); +} + +func (window HCONTAINER) SetColor(fore COLOR, back COLOR) int { + return Window_set_color(window, fore, back); +} + +func (window HCONTAINER) SetFocus() { + Window_set_focus(window); +} + +func (window HCONTAINER) SetFont(fontname string) int { + return Window_set_font(window, fontname); +} + +func (window HCONTAINER) SetText(text string) { + Window_set_text(window, text); +} + +func (window HCONTAINER) SetTooltip(bubbletext string) { + Window_set_tooltip(window, bubbletext); +} + +func (window HCONTAINER) SetPointer(cursortype int) { + Window_set_pointer(window, cursortype); +} + +func (window HCONTAINER) SetStyle(style uint, mask uint) { + Window_set_style(window, style, mask); +} + +func (window HCONTAINER) Unpack() int { + return Box_unpack(window); +} + +func (window HMLE) Destroy() int { + return Window_destroy(window); +} + +func (window HMLE) Disable() { + Window_disable(window); +} + +func (window HMLE) Enable() { + Window_enable(window); +} + +func (window HMLE) GetData(dataname string) POINTER { + return Window_get_data(window, dataname); +} + +func (window HMLE) GetFont() string { + return Window_get_font(window); +} + +func (window HMLE) GetPreferredSize() (int, int) { + return Window_get_preferred_size(window); +} + +func (window HMLE) GetText() string { + return Window_get_text(window); +} + +func (window HMLE) SetColor(fore COLOR, back COLOR) int { + return Window_set_color(window, fore, back); +} + +func (window HMLE) SetFocus() { + Window_set_focus(window); +} + +func (window HMLE) SetFont(fontname string) int { + return Window_set_font(window, fontname); +} + +func (window HMLE) SetText(text string) { + Window_set_text(window, text); +} + +func (window HMLE) SetTooltip(bubbletext string) { + Window_set_tooltip(window, bubbletext); +} + +func (window HMLE) SetPointer(cursortype int) { + Window_set_pointer(window, cursortype); +} + +func (window HMLE) SetStyle(style uint, mask uint) { + Window_set_style(window, style, mask); +} + +func (window HMLE) Unpack() int { + return Box_unpack(window); +} + +func (window HBUTTON) Destroy() int { + return Window_destroy(window); +} + +func (window HBUTTON) Disable() { + Window_disable(window); +} + +func (window HBUTTON) Enable() { + Window_enable(window); +} + +func (window HBUTTON) GetData(dataname string) POINTER { + return Window_get_data(window, dataname); +} + +func (window HBUTTON) GetFont() string { + return Window_get_font(window); +} + +func (window HBUTTON) GetPreferredSize() (int, int) { + return Window_get_preferred_size(window); +} + +func (window HBUTTON) GetText() string { + return Window_get_text(window); +} + +func (window HBUTTON) SetColor(fore COLOR, back COLOR) int { + return Window_set_color(window, fore, back); +} + +func (window HBUTTON) SetFocus() { + Window_set_focus(window); +} + +func (window HBUTTON) SetFont(fontname string) int { + return Window_set_font(window, fontname); +} + +func (window HBUTTON) SetText(text string) { + Window_set_text(window, text); +} + +func (window HBUTTON) SetTooltip(bubbletext string) { + Window_set_tooltip(window, bubbletext); +} + +func (window HBUTTON) SetPointer(cursortype int) { + Window_set_pointer(window, cursortype); +} + +func (window HBUTTON) SetStyle(style uint, mask uint) { + Window_set_style(window, style, mask); +} + +func (window HBUTTON) Unpack() int { + return Box_unpack(window); +} + +func (window HSPINBUTTON) Destroy() int { + return Window_destroy(window); +} + +func (window HSPINBUTTON) Disable() { + Window_disable(window); +} + +func (window HSPINBUTTON) Enable() { + Window_enable(window); +} + +func (window HSPINBUTTON) GetData(dataname string) POINTER { + return Window_get_data(window, dataname); +} + +func (window HSPINBUTTON) GetFont() string { + return Window_get_font(window); +} + +func (window HSPINBUTTON) GetPreferredSize() (int, int) { + return Window_get_preferred_size(window); +} + +func (window HSPINBUTTON) GetText() string { + return Window_get_text(window); +} + +func (window HSPINBUTTON) SetColor(fore COLOR, back COLOR) int { + return Window_set_color(window, fore, back); +} + +func (window HSPINBUTTON) SetFocus() { + Window_set_focus(window); +} + +func (window HSPINBUTTON) SetFont(fontname string) int { + return Window_set_font(window, fontname); +} + +func (window HSPINBUTTON) SetText(text string) { + Window_set_text(window, text); +} + +func (window HSPINBUTTON) SetTooltip(bubbletext string) { + Window_set_tooltip(window, bubbletext); +} + +func (window HSPINBUTTON) SetPointer(cursortype int) { + Window_set_pointer(window, cursortype); +} + +func (window HSPINBUTTON) SetStyle(style uint, mask uint) { + Window_set_style(window, style, mask); +} + +func (window HSPINBUTTON) Unpack() int { + return Box_unpack(window); +} + +func (window HNOTEBOOK) Destroy() int { + return Window_destroy(window); +} + +func (window HNOTEBOOK) Disable() { + Window_disable(window); +} + +func (window HNOTEBOOK) Enable() { + Window_enable(window); +} + +func (window HNOTEBOOK) GetData(dataname string) POINTER { + return Window_get_data(window, dataname); +} + +func (window HNOTEBOOK) GetFont() string { + return Window_get_font(window); +} + +func (window HNOTEBOOK) GetPreferredSize() (int, int) { + return Window_get_preferred_size(window); +} + +func (window HNOTEBOOK) GetText() string { + return Window_get_text(window); +} + +func (window HNOTEBOOK) SetColor(fore COLOR, back COLOR) int { + return Window_set_color(window, fore, back); +} + +func (window HNOTEBOOK) SetFocus() { + Window_set_focus(window); +} + +func (window HNOTEBOOK) SetFont(fontname string) int { + return Window_set_font(window, fontname); +} + +func (window HNOTEBOOK) SetText(text string) { + Window_set_text(window, text); +} + +func (window HNOTEBOOK) SetTooltip(bubbletext string) { + Window_set_tooltip(window, bubbletext); +} + +func (window HNOTEBOOK) SetPointer(cursortype int) { + Window_set_pointer(window, cursortype); +} + +func (window HNOTEBOOK) SetStyle(style uint, mask uint) { + Window_set_style(window, style, mask); +} + +func (window HNOTEBOOK) Unpack() int { + return Box_unpack(window); +} + +func (window HLISTBOX) Destroy() int { + return Window_destroy(window); +} + +func (window HLISTBOX) Disable() { + Window_disable(window); +} + +func (window HLISTBOX) Enable() { + Window_enable(window); +} + +func (window HLISTBOX) GetData(dataname string) POINTER { + return Window_get_data(window, dataname); +} + +func (window HLISTBOX) GetFont() string { + return Window_get_font(window); +} + +func (window HLISTBOX) GetPreferredSize() (int, int) { + return Window_get_preferred_size(window); +} + +func (window HLISTBOX) SetColor(fore COLOR, back COLOR) int { + return Window_set_color(window, fore, back); +} + +func (window HLISTBOX) SetFocus() { + Window_set_focus(window); +} + +func (window HLISTBOX) SetFont(fontname string) int { + return Window_set_font(window, fontname); +} + +func (window HLISTBOX) SetTooltip(bubbletext string) { + Window_set_tooltip(window, bubbletext); +} + +func (window HLISTBOX) SetPointer(cursortype int) { + Window_set_pointer(window, cursortype); +} + +func (window HLISTBOX) SetStyle(style uint, mask uint) { + Window_set_style(window, style, mask); +} + +func (window HLISTBOX) Unpack() int { + return Box_unpack(window); +} + +func (window HPERCENT) Destroy() int { + return Window_destroy(window); +} + +func (window HPERCENT) Disable() { + Window_disable(window); +} + +func (window HPERCENT) Enable() { + Window_enable(window); +} + +func (window HPERCENT) GetData(dataname string) POINTER { + return Window_get_data(window, dataname); +} + +func (window HPERCENT) GetFont() string { + return Window_get_font(window); +} + +func (window HPERCENT) GetPreferredSize() (int, int) { + return Window_get_preferred_size(window); +} + +func (window HPERCENT) GetText() string { + return Window_get_text(window); +} + +func (window HPERCENT) SetColor(fore COLOR, back COLOR) int { + return Window_set_color(window, fore, back); +} + +func (window HPERCENT) SetFocus() { + Window_set_focus(window); +} + +func (window HPERCENT) SetFont(fontname string) int { + return Window_set_font(window, fontname); +} + +func (window HPERCENT) SetText(text string) { + Window_set_text(window, text); +} + +func (window HPERCENT) SetTooltip(bubbletext string) { + Window_set_tooltip(window, bubbletext); +} + +func (window HPERCENT) SetPointer(cursortype int) { + Window_set_pointer(window, cursortype); +} + +func (window HPERCENT) SetStyle(style uint, mask uint) { + Window_set_style(window, style, mask); +} + +func (window HPERCENT) Unpack() int { + return Box_unpack(window); +} + +func (window HSLIDER) Destroy() int { + return Window_destroy(window); +} + +func (window HSLIDER) Disable() { + Window_disable(window); +} + +func (window HSLIDER) Enable() { + Window_enable(window); +} + +func (window HSLIDER) GetData(dataname string) POINTER { + return Window_get_data(window, dataname); +} + +func (window HSLIDER) GetFont() string { + return Window_get_font(window); +} + +func (window HSLIDER) GetPreferredSize() (int, int) { + return Window_get_preferred_size(window); +} + +func (window HSLIDER) GetText() string { + return Window_get_text(window); +} + +func (window HSLIDER) SetColor(fore COLOR, back COLOR) int { + return Window_set_color(window, fore, back); +} + +func (window HSLIDER) SetFocus() { + Window_set_focus(window); +} + +func (window HSLIDER) SetFont(fontname string) int { + return Window_set_font(window, fontname); +} + +func (window HSLIDER) SetText(text string) { + Window_set_text(window, text); +} + +func (window HSLIDER) SetTooltip(bubbletext string) { + Window_set_tooltip(window, bubbletext); +} + +func (window HSLIDER) SetPointer(cursortype int) { + Window_set_pointer(window, cursortype); +} + +func (window HSLIDER) SetStyle(style uint, mask uint) { + Window_set_style(window, style, mask); +} + +func (window HSLIDER) Unpack() int { + return Box_unpack(window); +} + +func (window HSCROLLBAR) Destroy() int { + return Window_destroy(window); +} + +func (window HSCROLLBAR) Disable() { + Window_disable(window); +} + +func (window HSCROLLBAR) Enable() { + Window_enable(window); +} + +func (window HSCROLLBAR) GetData(dataname string) POINTER { + return Window_get_data(window, dataname); +} + +func (window HSCROLLBAR) GetFont() string { + return Window_get_font(window); +} + +func (window HSCROLLBAR) GetPreferredSize() (int, int) { + return Window_get_preferred_size(window); +} + +func (window HSCROLLBAR) GetText() string { + return Window_get_text(window); +} + +func (window HSCROLLBAR) SetColor(fore COLOR, back COLOR) int { + return Window_set_color(window, fore, back); +} + +func (window HSCROLLBAR) SetFocus() { + Window_set_focus(window); +} + +func (window HSCROLLBAR) SetFont(fontname string) int { + return Window_set_font(window, fontname); +} + +func (window HSCROLLBAR) SetText(text string) { + Window_set_text(window, text); +} + +func (window HSCROLLBAR) SetTooltip(bubbletext string) { + Window_set_tooltip(window, bubbletext); +} + +func (window HSCROLLBAR) SetPointer(cursortype int) { + Window_set_pointer(window, cursortype); +} + +func (window HSCROLLBAR) SetStyle(style uint, mask uint) { + Window_set_style(window, style, mask); +} + +func (window HSCROLLBAR) Unpack() int { + return Box_unpack(window); +} + +func (window HCALENDAR) Destroy() int { + return Window_destroy(window); +} + +func (window HCALENDAR) Disable() { + Window_disable(window); +} + +func (window HCALENDAR) Enable() { + Window_enable(window); +} + +func (window HCALENDAR) GetData(dataname string) POINTER { + return Window_get_data(window, dataname); +} + +func (window HCALENDAR) GetFont() string { + return Window_get_font(window); +} + +func (window HCALENDAR) GetPreferredSize() (int, int) { + return Window_get_preferred_size(window); +} + +func (window HCALENDAR) SetColor(fore COLOR, back COLOR) int { + return Window_set_color(window, fore, back); +} + +func (window HCALENDAR) SetFocus() { + Window_set_focus(window); +} + +func (window HCALENDAR) SetFont(fontname string) int { + return Window_set_font(window, fontname); +} + +func (window HCALENDAR) SetTooltip(bubbletext string) { + Window_set_tooltip(window, bubbletext); +} + +func (window HCALENDAR) SetPointer(cursortype int) { + Window_set_pointer(window, cursortype); +} + +func (window HCALENDAR) SetStyle(style uint, mask uint) { + Window_set_style(window, style, mask); +} + +func (window HCALENDAR) Unpack() int { + return Box_unpack(window); +} + +func (window HBITMAP) Destroy() int { + return Window_destroy(window); +} + +func (window HBITMAP) Disable() { + Window_disable(window); +} + +func (window HBITMAP) Enable() { + Window_enable(window); +} + +func (window HBITMAP) GetData(dataname string) POINTER { + return Window_get_data(window, dataname); +} + +func (window HBITMAP) GetFont() string { + return Window_get_font(window); +} + +func (window HBITMAP) GetPreferredSize() (int, int) { + return Window_get_preferred_size(window); +} + +func (window HBITMAP) SetColor(fore COLOR, back COLOR) int { + return Window_set_color(window, fore, back); +} + +func (window HBITMAP) SetFocus() { + Window_set_focus(window); +} + +func (window HBITMAP) SetFont(fontname string) int { + return Window_set_font(window, fontname); +} + +func (window HBITMAP) SetTooltip(bubbletext string) { + Window_set_tooltip(window, bubbletext); +} + +func (window HBITMAP) SetPointer(cursortype int) { + Window_set_pointer(window, cursortype); +} + +func (window HBITMAP) SetStyle(style uint, mask uint) { + Window_set_style(window, style, mask); +} + +func (window HBITMAP) Unpack() int { + return Box_unpack(window); +} + +func (window HHTML) Destroy() int { + return Window_destroy(window); +} + +func (window HHTML) Disable() { + Window_disable(window); +} + +func (window HHTML) Enable() { + Window_enable(window); +} + +func (window HHTML) GetData(dataname string) POINTER { + return Window_get_data(window, dataname); +} + +func (window HHTML) GetFont() string { + return Window_get_font(window); +} + +func (window HHTML) GetPreferredSize() (int, int) { + return Window_get_preferred_size(window); +} + +func (window HHTML) SetFocus() { + Window_set_focus(window); +} + +func (window HHTML) SetStyle(style uint, mask uint) { + Window_set_style(window, style, mask); +} + +func (window HHTML) Unpack() int { + return Box_unpack(window); +} + +func (window HSPLITBAR) Destroy() int { + return Window_destroy(window); +} + +func (window HSPLITBAR) GetData(dataname string) POINTER { + return Window_get_data(window, dataname); +} + +func (window HSPLITBAR) Unpack() int { + return Box_unpack(window); +} + +func (window HBOX) Destroy() int { + return Window_destroy(window); +} + +func (window HBOX) GetData(dataname string) POINTER { + return Window_get_data(window, dataname); +} + +func (window HBOX) SetColor(fore COLOR, back COLOR) int { + return Window_set_color(window, fore, back); +} + +func (window HBOX) Unpack() int { + return Box_unpack(window); +} + +func (window HSCROLLBOX) Destroy() int { + return Window_destroy(window); +} + +func (window HSCROLLBOX) GetData(dataname string) POINTER { + return Window_get_data(window, dataname); +} + +func (window HSCROLLBOX) Unpack() int { + return Box_unpack(window); +} + +func (window HRENDER) Destroy() int { + return Window_destroy(window); +} + +func (window HRENDER) GetData(dataname string) POINTER { + return Window_get_data(window, dataname); +} + +func (window HRENDER) GetFont() string { + return Window_get_font(window); +} + +func (window HRENDER) GetTextExtents(text string) (int, int) { + return Font_text_extents_get(window, NOHPIXMAP, text); +} + +func (window HRENDER) SetFont(fontname string) int { + return Window_set_font(window, fontname); +} + +func (window HRENDER) Unpack() int { + return Box_unpack(window); +} + +func (window HMENUITEM) Destroy() int { + return Window_destroy(window); +} + +func (window HMENUITEM) SetStyle(style uint, mask uint) { + Window_set_style(window, style, mask); +} /* End Generic Section */ func Main() { @@ -970,6 +1910,10 @@ return HBOX{C.go_box_new(C.int(btype), C.int(pad))}; } +func BoxNew(btype int, pad int) HBOX { + return Box_new(btype, pad); +} + func Box_pack_at_index(box HANDLE, item HANDLE, index int, width int, height int, hsize int, vsize int, pad int) { C.go_box_pack_at_index(box.GetHandle(), item.GetHandle(), C.int(index), C.int(width), C.int(height), C.int(hsize), C.int(vsize), C.int(pad)); } @@ -978,6 +1922,14 @@ Box_pack_at_index(window, item, index, width, height, hsize, vsize, pad); } +func (window HBOX) PackAtIndex(item HANDLE, index int, width int, height int, hsize int, vsize int, pad int) { + Box_pack_at_index(window, item, index, width, height, hsize, vsize, pad); +} + +func (window HSCROLLBOX) PackAtIndex(item HANDLE, index int, width int, height int, hsize int, vsize int, pad int) { + Box_pack_at_index(window, item, index, width, height, hsize, vsize, pad); +} + func Box_pack_end(box HANDLE, item HANDLE, width int, height int, hsize int, vsize int, pad int) { C.go_box_pack_end(box.GetHandle(), item.GetHandle(), C.int(width), C.int(height), C.int(hsize), C.int(vsize), C.int(pad)); } @@ -986,6 +1938,14 @@ Box_pack_end(window, item, width, height, hsize, vsize, pad); } +func (window HBOX) PackEnd(item HANDLE, width int, height int, hsize int, vsize int, pad int) { + Box_pack_end(window, item, width, height, hsize, vsize, pad); +} + +func (window HSCROLLBOX) PackEnd(item HANDLE, width int, height int, hsize int, vsize int, pad int) { + Box_pack_end(window, item, width, height, hsize, vsize, pad); +} + func Box_pack_start(box HANDLE, item HANDLE, width int, height int, hsize int, vsize int, pad int) { C.go_box_pack_start(box.GetHandle(), item.GetHandle(), C.int(width), C.int(height), C.int(hsize), C.int(vsize), C.int(pad)); } @@ -994,14 +1954,18 @@ Box_pack_start(window, item, width, height, hsize, vsize, pad); } +func (window HBOX) PackStart(item HANDLE, width int, height int, hsize int, vsize int, pad int) { + Box_pack_start(window, item, width, height, hsize, vsize, pad); +} + +func (window HSCROLLBOX) PackStart(item HANDLE, width int, height int, hsize int, vsize int, pad int) { + Box_pack_start(window, item, width, height, hsize, vsize, pad); +} + func Box_unpack(handle HANDLE) int { return int(C.go_box_unpack(handle.GetHandle())); } -func (window HWND) Unpack() int { - return Box_unpack(window); -} - func Box_unpack_at_index(handle HANDLE, index int) HANDLE { return HANDLE(HWND{C.go_box_unpack_at_index(handle.GetHandle(), C.int(index))}); } @@ -1010,6 +1974,14 @@ return Box_unpack_at_index(window, index); } +func (window HBOX) UnpackAtIndex(index int) HANDLE { + return Box_unpack_at_index(window, index); +} + +func (window HSCROLLBOX) UnpackAtIndex(index int) HANDLE { + return Box_unpack_at_index(window, index); +} + func Text_new(text string, id uint) HTEXT { ctext := C.CString(text); defer C.free(unsafe.Pointer(ctext)); @@ -1017,6 +1989,10 @@ return HTEXT{C.go_text_new(ctext, C.ulong(id))}; } +func TextNew(text string, id uint) HTEXT { + return Text_new(text, id); +} + func Status_text_new(text string, id uint) HTEXT { ctext := C.CString(text); defer C.free(unsafe.Pointer(ctext)); @@ -1024,6 +2000,10 @@ return HTEXT{C.go_status_text_new(ctext, C.ulong(id))}; } +func StatusTextNew(text string, id uint) HTEXT { + return Status_text_new(text, id); +} + func Entryfield_new(text string, id uint) HENTRYFIELD { ctext := C.CString(text); defer C.free(unsafe.Pointer(ctext)); @@ -1469,6 +2449,10 @@ return HSPINBUTTON{C.go_spinbutton_new(ctext, id)}; } +func SpinButtonNew(text string, id C.ulong) HSPINBUTTON { + return Spinbutton_new(text, id); +} + func Spinbutton_set_pos(handle HANDLE, position int) { C.go_spinbutton_set_pos(handle.GetHandle(), C.long(position)); } @@ -1607,6 +2591,10 @@ return HSCROLLBOX{C.go_scrollbox_new(C.int(btype), C.int(pad))}; } +func ScrollBoxNew(btype int, pad int) HSCROLLBOX { + return Scrollbox_new(btype, pad); +} + func Scrollbox_get_pos(handle HANDLE) (int, int) { return int(C.go_scrollbox_get_pos(handle.GetHandle(), C.int(C.DW_HORZ))), int(C.go_scrollbox_get_pos(handle.GetHandle(), C.int(C.DW_VERT))); } @@ -1674,10 +2662,6 @@ return int(width), int(height); } -func (window HWND) GetTextExtents(text string) (int, int) { - return Font_text_extents_get(window, NOHPIXMAP, text); -} - func (pixmap HPIXMAP) GetTextExtents(text string) (int, int) { return Font_text_extents_get(NOHWND, pixmap, text); } @@ -1709,7 +2693,7 @@ return Pixmap_grab(handle, id); } -func (window HWND) PixmapGrab(id uint) HPIXMAP { +func (window HRENDER) PixmapGrab(id uint) HPIXMAP { return Pixmap_grab(window, id); } @@ -1721,11 +2705,11 @@ return int(C.go_pixmap_stretch_bitblt(dest.GetHandle(), unsafe.Pointer(destp.hpixmap), C.int(xdest), C.int(ydest), C.int(width), C.int(height), src.GetHandle(), unsafe.Pointer(srcp.hpixmap), C.int(xsrc), C.int(ysrc), C.int(srcwidth), C.int(srcheight))); } -func (window HWND) BitBltStretchPixmap(xdest int, ydest int, width int, height int, srcp HPIXMAP, xsrc int, ysrc int, srcwidth int, srcheight int) int { +func (window HRENDER) BitBltStretchPixmap(xdest int, ydest int, width int, height int, srcp HPIXMAP, xsrc int, ysrc int, srcwidth int, srcheight int) int { return Pixmap_stretch_bitblt(window, NOHPIXMAP, xdest, ydest, width, height, NOHWND, srcp, xsrc, ysrc, srcwidth, srcheight); } -func (window HWND) BitBltStretchWindow(xdest int, ydest int, width int, height int, src HWND, xsrc int, ysrc int, srcwidth int, srcheight int) int { +func (window HRENDER) BitBltStretchWindow(xdest int, ydest int, width int, height int, src HANDLE, xsrc int, ysrc int, srcwidth int, srcheight int) int { return Pixmap_stretch_bitblt(window, NOHPIXMAP, xdest, ydest, width, height, src, NOHPIXMAP, xsrc, ysrc, srcwidth, srcheight); } @@ -1733,15 +2717,15 @@ return Pixmap_stretch_bitblt(NOHWND, pixmap, xdest, ydest, width, height, NOHWND, srcp, xsrc, ysrc, srcwidth, srcheight); } -func (pixmap HPIXMAP) BitBltStretchWindow(xdest int, ydest int, width int, height int, src HWND, xsrc int, ysrc int, srcwidth int, srcheight int) int { +func (pixmap HPIXMAP) BitBltStretchWindow(xdest int, ydest int, width int, height int, src HANDLE, xsrc int, ysrc int, srcwidth int, srcheight int) int { return Pixmap_stretch_bitblt(NOHWND, pixmap, xdest, ydest, width, height, src, NOHPIXMAP, xsrc, ysrc, srcwidth, srcheight); } -func (window HWND) BitBltPixmap(xdest int, ydest int, width int, height int, srcp HPIXMAP, xsrc int, ysrc int) { +func (window HRENDER) BitBltPixmap(xdest int, ydest int, width int, height int, srcp HPIXMAP, xsrc int, ysrc int) { Pixmap_bitblt(window, NOHPIXMAP, xdest, ydest, width, height, NOHWND, srcp, xsrc, ysrc); } -func (window HWND) BitBltWindow(xdest int, ydest int, width int, height int, src HANDLE, xsrc int, ysrc int) { +func (window HRENDER) BitBltWindow(xdest int, ydest int, width int, height int, src HANDLE, xsrc int, ysrc int) { Pixmap_bitblt(window, NOHPIXMAP, xdest, ydest, width, height, src, NOHPIXMAP, xsrc, ysrc); } @@ -1800,7 +2784,7 @@ C.go_draw_point(handle.GetHandle(), unsafe.Pointer(pixmap.hpixmap), C.int(x), C.int(y)); } -func (window HWND) DrawPoint(x int, y int) { +func (window HRENDER) DrawPoint(x int, y int) { Draw_point(window, NOHPIXMAP, x, y); } @@ -1812,7 +2796,7 @@ C.go_draw_line(handle.GetHandle(), unsafe.Pointer(pixmap.hpixmap), C.int(x1), C.int(y1), C.int(x2), C.int(y2)); } -func (window HWND) DrawLine(x1 int, y1 int, x2 int, y2 int) { +func (window HRENDER) DrawLine(x1 int, y1 int, x2 int, y2 int) { Draw_line(window, NOHPIXMAP, x1, y1, x2, y2); } @@ -1837,7 +2821,7 @@ C.go_draw_polygon(handle.GetHandle(), unsafe.Pointer(pixmap.hpixmap), C.int(flags), C.int(count), (*C.int)(unsafe.Pointer(xHeader.Data)), (*C.int)(unsafe.Pointer(yHeader.Data))); } -func (window HWND) DrawPolygon(flags int, x []int, y []int) { +func (window HRENDER) DrawPolygon(flags int, x []int, y []int) { Draw_polygon(window, NOHPIXMAP, flags, x, y); } @@ -1849,7 +2833,7 @@ C.go_draw_rect(handle.GetHandle(), unsafe.Pointer(pixmap.hpixmap), C.int(fill), C.int(x), C.int(y), C.int(width), C.int(height)); } -func (window HWND) DrawRect(fill int, x int, y int, width int, height int) { +func (window HRENDER) DrawRect(fill int, x int, y int, width int, height int) { Draw_rect(window, NOHPIXMAP, fill, x, y, width, height); } @@ -1861,7 +2845,7 @@ C.go_draw_arc(handle.GetHandle(), unsafe.Pointer(pixmap.hpixmap), C.int(flags), C.int(xorigin), C.int(yorigin), C.int(x1), C.int(y1), C.int(x2), C.int(y2)); } -func (window HWND) DrawArc(flags int, xorigin int, yorigin int, x1 int, y1 int, x2 int, y2 int) { +func (window HRENDER) DrawArc(flags int, xorigin int, yorigin int, x1 int, y1 int, x2 int, y2 int) { Draw_arc(window, NOHPIXMAP, flags, xorigin, yorigin, x1, y1, x2, y2); } @@ -1876,7 +2860,7 @@ C.go_draw_text(handle.GetHandle(), unsafe.Pointer(pixmap.hpixmap), C.int(x), C.int(y), ctext); } -func (window HWND) DrawText(x int, y int, text string) { +func (window HRENDER) DrawText(x int, y int, text string) { Draw_text(window, NOHPIXMAP, x, y, text); } @@ -1910,6 +2894,10 @@ return HTREE{C.go_tree_new(C.ulong(id))}; } +func TreeNew(id uint) HTREE { + return Tree_new(id); +} + func Tree_insert(handle HANDLE, title string, icon HICN, parent HTREEITEM, itemdata POINTER) HTREEITEM { ctitle := C.CString(title); defer C.free(unsafe.Pointer(ctitle)); @@ -2217,7 +3205,7 @@ return int(C.go_filesystem_setup(handle.GetHandle(), (*C.ulong)(unsafe.Pointer(flagsHeader.Data)), ctitles, C.int(count))); } -func (handle HCONTAINER) FileSytemSetup(flags []uint, titles []string) int { +func (handle HCONTAINER) FileSystemSetup(flags []uint, titles []string) int { handle.filesystem = true; return Filesystem_setup(handle, flags, titles); } @@ -2501,6 +3489,12 @@ C.go_filesystem_set_column_title(handle.GetHandle(), ctitle); } +func (handle HCONTAINER) SetColumnTitle(title string) { + if handle.filesystem == true { + Filesystem_set_column_title(handle, title); + } +} + func Filesystem_set_item(handle HANDLE, contins HCONTINS, column int, row int, data POINTER) { C.go_filesystem_set_item(handle.GetHandle(), contins.ptr, C.int(column), C.int(row), unsafe.Pointer(data)); } @@ -2681,7 +3675,7 @@ var go_flags_no_data C.uint = 1; -func (window HWND) ConnectDelete(sigfunc func(window HANDLE) int) { +func (window HWND) ConnectDelete(sigfunc func(window HWND) int) { csigname := C.CString(C.DW_SIGNAL_DELETE); defer C.free(unsafe.Pointer(csigname)); @@ -2689,7 +3683,7 @@ C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(&sigfunc), nil, (window.GetType() << 8) | go_flags_no_data); } -func (window HWND) ConnectClicked(sigfunc func(window HANDLE) int) { +func (window HBUTTON) ConnectClicked(sigfunc func(window HBUTTON) int) { csigname := C.CString(C.DW_SIGNAL_CLICKED); defer C.free(unsafe.Pointer(csigname)); @@ -2697,7 +3691,7 @@ C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(&sigfunc), nil, (window.GetType() << 8) | go_flags_no_data); } -func (window HWND) ConnectSetFocus(sigfunc func(window HANDLE) int) { +func (window HWND) ConnectSetFocus(sigfunc func(window HWND) int) { csigname := C.CString(C.DW_SIGNAL_SET_FOCUS); defer C.free(unsafe.Pointer(csigname)); @@ -2705,7 +3699,15 @@ C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(&sigfunc), nil, (window.GetType() << 8) | go_flags_no_data); } -func (window HWND) ConnectKeyPress(sigfunc func(window HANDLE, ch uint8, vk int, state int, utf8 string) int) { +func (window HWND) ConnectKeyPress(sigfunc func(window HWND, ch uint8, vk int, state int, utf8 string) int) { + csigname := C.CString(C.DW_SIGNAL_KEY_PRESS); + defer C.free(unsafe.Pointer(csigname)); + + backs = append(backs, unsafe.Pointer(&sigfunc)); + C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(&sigfunc), nil, (window.GetType() << 8) | go_flags_no_data); +} + +func (window HRENDER) ConnectKeyPress(sigfunc func(window HRENDER, ch uint8, vk int, state int, utf8 string) int) { csigname := C.CString(C.DW_SIGNAL_KEY_PRESS); defer C.free(unsafe.Pointer(csigname)); @@ -2713,7 +3715,7 @@ C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(&sigfunc), nil, (window.GetType() << 8) | go_flags_no_data); } -func (window HWND) ConnectMotion(sigfunc func(window HANDLE, x int, y int, mask int) int) { +func (window HRENDER) ConnectMotion(sigfunc func(window HRENDER, x int, y int, mask int) int) { csigname := C.CString(C.DW_SIGNAL_MOTION_NOTIFY); defer C.free(unsafe.Pointer(csigname)); @@ -2721,7 +3723,7 @@ C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(&sigfunc), nil, (window.GetType() << 8) | go_flags_no_data); } -func (window HWND) ConnectButtonPress(sigfunc func(window HWND, x int, y int, mask int) int) { +func (window HRENDER) ConnectButtonPress(sigfunc func(window HRENDER, x int, y int, mask int) int) { csigname := C.CString(C.DW_SIGNAL_BUTTON_PRESS); defer C.free(unsafe.Pointer(csigname)); @@ -2729,7 +3731,7 @@ C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(&sigfunc), nil, (window.GetType() << 8) | go_flags_no_data); } -func (window HWND) ConnectButtonRelease(sigfunc func(window HWND, x int, y int, mask int) int) { +func (window HRENDER) ConnectButtonRelease(sigfunc func(window HRENDER, x int, y int, mask int) int) { csigname := C.CString(C.DW_SIGNAL_BUTTON_RELEASE); defer C.free(unsafe.Pointer(csigname)); @@ -2737,7 +3739,7 @@ C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(&sigfunc), nil, (window.GetType() << 8) | go_flags_no_data); } -func (window HWND) ConnectExpose(sigfunc func(window HWND, x int, y int, width int, height int) int) { +func (window HRENDER) ConnectExpose(sigfunc func(window HRENDER, x int, y int, width int, height int) int) { csigname := C.CString(C.DW_SIGNAL_EXPOSE); defer C.free(unsafe.Pointer(csigname)); @@ -2745,7 +3747,15 @@ C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(&sigfunc), nil, (window.GetType() << 8) | go_flags_no_data); } -func (window HWND) ConnectItemEnter(sigfunc func(window HWND, str string) int) { +func (window HTREE) ConnectItemEnter(sigfunc func(window HTREE, str string) int) { + csigname := C.CString(C.DW_SIGNAL_ITEM_ENTER); + defer C.free(unsafe.Pointer(csigname)); + + backs = append(backs, unsafe.Pointer(&sigfunc)); + C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(&sigfunc), nil, (window.GetType() << 8) | go_flags_no_data); +} + +func (window HCONTAINER) ConnectItemEnter(sigfunc func(window HCONTAINER, str string) int) { csigname := C.CString(C.DW_SIGNAL_ITEM_ENTER); defer C.free(unsafe.Pointer(csigname)); @@ -2753,7 +3763,7 @@ C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(&sigfunc), nil, (window.GetType() << 8) | go_flags_no_data); } -func (window HWND) ConnectItemContext(sigfunc func(window HWND, text string, x int, y int, itemdata POINTER) int) { +func (window HTREE) ConnectItemContext(sigfunc func(window HTREE, text string, x int, y int, itemdata POINTER) int) { csigname := C.CString(C.DW_SIGNAL_ITEM_CONTEXT); defer C.free(unsafe.Pointer(csigname)); @@ -2761,7 +3771,14 @@ C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(&sigfunc), nil, (window.GetType() << 8) | go_flags_no_data); } -func (window HWND) ConnectItemSelect(sigfunc func(window HWND, item HTREEITEM, text string, itemdata POINTER) int) { +func (window HCONTAINER) ConnectItemContext(sigfunc func(window HCONTAINER, text string, x int, y int, itemdata POINTER) int) { + csigname := C.CString(C.DW_SIGNAL_ITEM_CONTEXT); + defer C.free(unsafe.Pointer(csigname)); + + backs = append(backs, unsafe.Pointer(&sigfunc)); + C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(&sigfunc), nil, (window.GetType() << 8) | go_flags_no_data); +} +func (window HTREE) ConnectItemSelect(sigfunc func(window HTREE, item HTREEITEM, text string, itemdata POINTER) int) { csigname := C.CString(C.DW_SIGNAL_ITEM_SELECT); defer C.free(unsafe.Pointer(csigname)); @@ -2769,7 +3786,7 @@ C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(&sigfunc), nil, (window.GetType() << 8) | go_flags_no_data); } -func (window HWND) ConnectListSelect(sigfunc func(window HWND, index int) int) { +func (window HLISTBOX) ConnectListSelect(sigfunc func(window HLISTBOX, index int) int) { csigname := C.CString(C.DW_SIGNAL_LIST_SELECT); defer C.free(unsafe.Pointer(csigname)); @@ -2777,7 +3794,15 @@ C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(&sigfunc), nil, (window.GetType() << 8) | go_flags_no_data); } -func (window HWND) ConnectValueChanged(sigfunc func(window HWND, index int) int) { +func (window HSCROLLBAR) ConnectValueChanged(sigfunc func(window HSCROLLBAR, index int) int) { + csigname := C.CString(C.DW_SIGNAL_VALUE_CHANGED); + defer C.free(unsafe.Pointer(csigname)); + + backs = append(backs, unsafe.Pointer(&sigfunc)); + C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(&sigfunc), nil, (window.GetType() << 8) | go_flags_no_data); +} + +func (window HSLIDER) ConnectValueChanged(sigfunc func(window HSLIDER, index int) int) { csigname := C.CString(C.DW_SIGNAL_VALUE_CHANGED); defer C.free(unsafe.Pointer(csigname)); @@ -2785,7 +3810,15 @@ C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(&sigfunc), nil, (window.GetType() << 8) | go_flags_no_data); } -func (window HWND) ConnectColumnClick(sigfunc func(window HWND, index int) int) { +func (window HSPINBUTTON) ConnectValueChanged(sigfunc func(window HSPINBUTTON, index int) int) { + csigname := C.CString(C.DW_SIGNAL_VALUE_CHANGED); + defer C.free(unsafe.Pointer(csigname)); + + backs = append(backs, unsafe.Pointer(&sigfunc)); + C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(&sigfunc), nil, (window.GetType() << 8) | go_flags_no_data); +} + +func (window HCONTAINER) ConnectColumnClick(sigfunc func(window HCONTAINER, index int) int) { csigname := C.CString(C.DW_SIGNAL_COLUMN_CLICK); defer C.free(unsafe.Pointer(csigname)); @@ -2793,7 +3826,7 @@ C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(&sigfunc), nil, (window.GetType() << 8) | go_flags_no_data); } -func (window HWND) ConnectSwitchPage(sigfunc func(window HWND, index uint) int) { +func (window HNOTEBOOK) ConnectSwitchPage(sigfunc func(window HNOTEBOOK, index uint) int) { csigname := C.CString(C.DW_SIGNAL_SWITCH_PAGE); defer C.free(unsafe.Pointer(csigname)); @@ -2801,7 +3834,7 @@ C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(&sigfunc), nil, (window.GetType() << 8) | go_flags_no_data); } -func (window HWND) ConnectTreeExpand(sigfunc func(window HWND, item HTREEITEM) int) { +func (window HTREE) ConnectTreeExpand(sigfunc func(window HTREE, item HTREEITEM) int) { csigname := C.CString(C.DW_SIGNAL_TREE_EXPAND); defer C.free(unsafe.Pointer(csigname)); @@ -2809,6 +3842,14 @@ C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(&sigfunc), nil, (window.GetType() << 8) | go_flags_no_data); } +func (window HMENUITEM) ConnectClicked(sigfunc func(window HMENUITEM) int) { + csigname := C.CString(C.DW_SIGNAL_CLICKED); + defer C.free(unsafe.Pointer(csigname)); + + backs = append(backs, unsafe.Pointer(&sigfunc)); + C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(&sigfunc), nil, (window.GetType() << 8) | go_flags_no_data); +} + func (id HTIMER) Connect(sigfunc func() int, interval int) { if id.tid == 0 { backs = append(backs, unsafe.Pointer(&sigfunc));
--- a/src/dwootest/dwootest.go Sat Mar 16 16:33:05 2013 -0500 +++ b/src/dwootest/dwootest.go Sat Mar 16 23:32:05 2013 -0500 @@ -1,47 +1,1415 @@ -package main - -import ( - "dw" -) - -// Global variables -var APP_NAME = "DW Object Oriented Example" - -/* Handle exiting the application */ -func exit_handler(win dw.HWND, message string) int { - if dw.Messagebox(APP_NAME, dw.MB_YESNO | dw.MB_QUESTION, message) == dw.MB_RETURN_YES { - /* Exit the application cleanly */ - dw.Main_quit(); - } - return dw.TRUE; -} - -func main() { - var message = "Are you sure you want to exit?"; - - /* Initialize Dynamic Windows */ - dw.Init(dw.TRUE); - - /* Create our window */ - window := dw.Window_new(dw.DESKTOP, APP_NAME, dw.FCF_SYSMENU | dw.FCF_TITLEBAR | dw.FCF_TASKLIST | dw.FCF_DLGBORDER | dw.FCF_SIZEBORDER | dw.FCF_MINMAX); - - label := dw.Text_new("Hello, 世界", 0); - window.PackStart(label, 0, 0, dw.TRUE, dw.TRUE, 0); - - /* Connect the signal handlers */ - window.ConnectDelete(func(window dw.HWND) int { return exit_handler(window, message); }); - - /* Set the size and show the window */ - window.SetSize(640, 550); - window.Show(); - - dw.Main(); - - /* Destroy the main window */ - window.Destroy(); - - /* Call dw.Shutdown() to shutdown the Dynamic Windows engine */ - dw.Shutdown(); - return; -} - +package main + +import ( + "dw" + "fmt" + "os" + "bufio" + "bytes" + "io" + "runtime" + "go/build" +) + +var FIXEDFONT = "10.monospace" + +var mainwindow dw.HWND + +// Page 1 +var notebookbox1 dw.HBOX +var cursortogglebutton dw.HBUTTON +var noncheckable_menuitem, checkable_menuitem dw.HMENUITEM +var copypastefield, entryfield dw.HENTRYFIELD +var current_color dw.COLOR = dw.RGB(100, 100, 100) +var cursor_arrow bool = true +var timerid dw.HTIMER + +// Page 2 +var notebookbox2 dw.HBOX +var textbox1, textbox2 dw.HRENDER +var status1, status2 dw.HTEXT +var vscrollbar, hscrollbar dw.HSCROLLBAR +var rendcombo dw.HLISTBOX +var imagexspin, imageyspin dw.HSPINBUTTON +var imagestretchcheck dw.HBUTTON +var text1pm, text2pm, image dw.HPIXMAP +var image_x = 20 +var image_y = 20 +var image_stretch int = dw.FALSE +var font_width = 8 +var font_height = 12 +var rows = 10 +var width1 = 6 +var cols = 80 +var render_type = 0 +var current_row = 0 +var current_col = 0 +var max_linewidth = 0 + +// Page 3 +var notebookbox3 dw.HBOX +var tree dw.HTREE + +// Page 4 +var notebookbox4 dw.HBOX +var container_mle dw.HMLE +var container dw.HCONTAINER +var mle_point = 0 + +// Page 5 +var notebookbox5, buttonboxperm, buttonsbox dw.HBOX +var combobox1, combobox2 dw.HLISTBOX +var cal dw.HCALENDAR +var spinbutton dw.HSPINBUTTON +var slider dw.HSLIDER +var percent dw.HPERCENT + +// Page 7 +var notebookbox7 dw.HBOX +var html dw.HHTML + +// Page 8 +var notebookbox8 dw.HBOX +var scrollbox dw.HSCROLLBOX +var MAX_WIDGETS = 20 + +var iteration = 0; + + +// Miscellaneous +var fileicon, foldericon dw.HICN +var current_file string +var lines []string +var menu_enabled bool = true + +var FOLDER_ICON_NAME string = "folder" +var FILE_ICON_NAME string = "file" +var SRCROOT string + +func read_file() { + var ( + file *os.File + part []byte + prefix bool + length int + err error + ) + + lines = nil; + max_linewidth = 0; + + if file, err = os.Open(current_file); err != nil { + return; + } + reader := bufio.NewReader(file); + buffer := bytes.NewBuffer(make([]byte, 1024)); + buffer.Reset(); + for { + if part, prefix, err = reader.ReadLine(); err != nil { + break; + } + buffer.Write(part); + if !prefix { + lines = append(lines, buffer.String()); + length = len(buffer.String()); + if length > max_linewidth { + max_linewidth = length; + } + buffer.Reset(); + } + } + if err == io.EOF { + err = nil; + } + hscrollbar.SetRange(uint(max_linewidth), uint(cols)); + hscrollbar.SetPos(0); + vscrollbar.SetRange(uint(len(lines)), uint(rows)); + vscrollbar.SetPos(0); +} + +// Call back section +func exit_callback(window dw.HWND, data dw.POINTER) int { + if dw.Messagebox("dwtest", dw.MB_YESNO | dw.MB_QUESTION, "Are you sure you want to exit?") != 0 { + dw.Main_quit(); + } + return dw.TRUE; +} + +func switch_page_callback(window dw.HNOTEBOOK, page_num dw.HNOTEPAGE, itemdata dw.POINTER) int { + fmt.Printf("DW_SIGNAL_SWITCH_PAGE: PageNum: %d\n", dw.HNOTEPAGE_TO_UINT(page_num)); + return dw.FALSE; +} + +func menu_callback(window dw.HMENUITEM, data dw.POINTER) int { + info:= *(*string)(data); + buf := fmt.Sprintf("%s menu item selected", info); + dw.Messagebox("Menu Item Callback", dw.MB_OK | dw.MB_INFORMATION, buf); + return dw.FALSE; +} + +func menutoggle_callback(window dw.HMENUITEM, data dw.POINTER) int { + if menu_enabled { + checkable_menuitem.SetStyle(dw.MIS_DISABLED, dw.MIS_DISABLED); + noncheckable_menuitem.SetStyle(dw.MIS_DISABLED, dw.MIS_DISABLED); + menu_enabled = false; + } else { + checkable_menuitem.SetStyle(dw.MIS_DISABLED, dw.MIS_ENABLED); + noncheckable_menuitem.SetStyle(dw.MIS_DISABLED, dw.MIS_ENABLED); + menu_enabled = true; + } + return dw.FALSE; +} + +func helpabout_callback(window dw.HMENUITEM, data dw.POINTER) int { + var env dw.Env; + + dw.Environment_query(&env); + message := fmt.Sprintf("dwindows test\n\nOS: %s %s %s Version: %d.%d.%d.%d\n\ndwindows Version: %d.%d.%d", + env.OSName, env.BuildDate, env.BuildTime, + env.MajorVersion, env.MinorVersion, env.MajorBuild, env.MinorBuild, + env.DWMajorVersion, env.DWMinorVersion, env.DWSubVersion); + dw.Messagebox("About dwindows", dw.MB_OK | dw.MB_INFORMATION, message); + return dw.FALSE; +} + +// Page 1 Callbacks +func paste_clicked_callback(button dw.HBUTTON, data dw.POINTER) int { + test := dw.ClipboardGetText(); + + if len(test) > 0 { + copypastefield.SetText(test); + } + return dw.TRUE; +} + +func copy_clicked_callback(button dw.HBUTTON, data dw.POINTER) int { + test := copypastefield.GetText(); + + if len(test) > 0 { + dw.ClipboardSetText(test); + } + entryfield.SetFocus(); + return dw.TRUE; +} + +func browse_file_callback(window dw.HBUTTON, data dw.POINTER) int { + tmp := dw.FileBrowse("Pick a file", "dwtest.c", "c", dw.FILE_OPEN); + if len(tmp) > 0 { + current_file = tmp; + entryfield.SetText(current_file); + read_file(); + current_col = 0; + current_row = 0; + update_render(); + } + copypastefield.SetFocus(); + return dw.FALSE; +} + +func browse_folder_callback(window dw.HBUTTON, data dw.POINTER) int { + tmp := dw.FileBrowse("Pick a folder", ".", "c", dw.DIRECTORY_OPEN); + fmt.Printf("Folder picked: %s\n", tmp); + return dw.FALSE; +} + +func colorchoose_callback(window dw.HBUTTON, data dw.POINTER) int { + current_color = dw.Color_choose(current_color); + return dw.FALSE; +} + +func cursortoggle_callback(window dw.HBUTTON, data dw.POINTER) int { + if cursor_arrow { + dw.Window_set_text(cursortogglebutton, "Set Cursor pointer - ARROW"); + dw.Window_set_pointer(dw.POINTER_TO_HANDLE(data), dw.POINTER_CLOCK); + cursor_arrow = false; + } else { + dw.Window_set_text(cursortogglebutton, "Set Cursor pointer - CLOCK"); + dw.Window_set_pointer(dw.POINTER_TO_HANDLE(data), dw.POINTER_DEFAULT); + cursor_arrow = true; + } + return dw.FALSE; +} + +func beep_callback(window dw.HBUTTON, data dw.POINTER) int { + dw.Timer_disconnect(timerid); + return dw.TRUE; +} + +/* Beep every second */ +func timer_callback(data dw.POINTER) int { + dw.Beep(200, 200); + + /* Return dw.TRUE so we get called again */ + return dw.TRUE; +} + +// Page 2 Callbacks +func motion_notify_event(window dw.HRENDER, x int, y int, buttonmask int, data dw.POINTER) int { + var which = "button_press"; + + if(uintptr(data) > 0) { + which = "motion_notify"; + } + status2.SetText(fmt.Sprintf("%s: %dx%d", which, x, y)); + return dw.FALSE; +} + +func context_menu_event(window dw.HANDLE, x int, y int, buttonmask int, data dw.POINTER) int { + hwndMenu := dw.MenuNew(0); + menuitem := hwndMenu.AppendItem("~Quit", dw.MENU_POPUP, 0, dw.TRUE, dw.FALSE, dw.NOMENU); + + dw.Signal_connect(menuitem, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(&exit_callback_func), dw.HANDLE_TO_POINTER(mainwindow)); + hwndMenu.AppendItem(dw.MENU_SEPARATOR, dw.MENU_POPUP, 0, dw.TRUE, dw.FALSE, dw.NOMENU); + menuitem = hwndMenu.AppendItem("~Show Window", dw.MENU_POPUP, 0, dw.TRUE, dw.FALSE, dw.NOMENU); + menuitem.ConnectClicked(func(window dw.HMENUITEM) int { + mainwindow.Show(); + mainwindow.Raise(); + return dw.TRUE; + }); + px, py := dw.PointerGetPos(); + /* Use the toplevel window handle here.... because on the Mac.. + * using the control itself, when a different tab is active + * the control is removed from the window and can no longer + * handle the messages. + */ + hwndMenu.Popup(mainwindow, px, py); + return dw.TRUE; +} + +/* When hpma is not NULL we are printing.. so handle things differently */ +func draw_file(row int, col int, nrows int, fheight int, hpma dw.HPIXMAP) { + var hpm dw.HPIXMAP + + if hpma == dw.NOHPIXMAP { + hpm = text2pm; + } else { + hpm = hpma; + } + + if len(current_file) > 0 { + var i int + + dw.ColorForegroundSet(dw.CLR_WHITE); + if hpma == dw.NOHPIXMAP { + text1pm.DrawRect(dw.DRAW_FILL | dw.DRAW_NOAA, 0, 0, dw.Pixmap_width(text1pm), dw.Pixmap_height(text1pm)); + } + hpm.DrawRect(dw.DRAW_FILL | dw.DRAW_NOAA, 0, 0, dw.Pixmap_width(hpm), dw.Pixmap_height(hpm)); + + for i = 0; (i < nrows) && (i+row < len(lines)); i++ { + fileline := i + row - 1; + y := i*fheight; + dw.ColorBackgroundSet(dw.COLOR(1 + (fileline % 15))); + dw.ColorForegroundSet(dw.COLOR(fileline % 16)); + if hpma == dw.NOHPIXMAP { + text1pm.DrawText(0, y, fmt.Sprintf("%6.6d", i+row)); + } + thisline := lines[i+row]; + if len(thisline) > col { + hpm.DrawText(0, y, thisline[col:]); + } + } + if hpma == dw.NOHPIXMAP { + text_expose(textbox1, 0, 0, 0, 0, nil); + text_expose(textbox2, 0, 0, 0, 0, nil); + } + } +} + +/* When hpma is not NULL we are printing.. so handle things differently */ +func draw_shapes(direct int, hpma dw.HPIXMAP) { + var hpm dw.HPIXMAP = dw.NOHPIXMAP + var drawable dw.DRAWABLE = textbox2 + if hpma != dw.NOHPIXMAP { + hpm = hpma; + } else { + hpm = text2pm; + } + if direct != dw.TRUE { + drawable = hpm; + } + + width := hpm.GetWidth(); + height := hpm.GetHeight(); + + x := []int{ 20, 180, 180, 230, 180, 180, 20 }; + y := []int{ 50, 50, 20, 70, 120, 90, 90 }; + + image_x = imagexspin.GetPos(); + image_y = imageyspin.GetPos(); + image_stretch = imagestretchcheck.Get(); + + dw.ColorForegroundSet(dw.CLR_WHITE); + drawable.DrawRect(dw.DRAW_FILL | dw.DRAW_NOAA, 0, 0, width, height); + dw.ColorForegroundSet(dw.CLR_DARKPINK); + drawable.DrawRect(dw.DRAW_FILL | dw.DRAW_NOAA, 10, 10, width - 20, height - 20); + dw.ColorForegroundSet(dw.CLR_GREEN); + dw.ColorBackgroundSet(dw.CLR_DARKRED); + drawable.DrawText(10, 10, "This should be aligned with the edges."); + dw.ColorForegroundSet(dw.CLR_YELLOW); + drawable.DrawLine(width - 10, 10, 10, height - 10); + dw.ColorForegroundSet(dw.CLR_BLUE); + drawable.DrawPolygon(dw.DRAW_FILL, x, y); + dw.ColorForegroundSet(dw.CLR_BLACK); + drawable.DrawRect(dw.DRAW_FILL | dw.DRAW_NOAA, 80, 80, 80, 40); + dw.ColorForegroundSet(dw.CLR_CYAN); + /* Bottom right corner */ + drawable.DrawArc(0, width - 30, height - 30, width - 10, height - 30, width - 30, height - 10); + /* Top right corner */ + drawable.DrawArc(0, width - 30, 30, width - 30, 10, width - 10, 30); + /* Bottom left corner */ + drawable.DrawArc(0, 30, height - 30, 30, height - 10, 10, height - 30); + /* Full circle in the left top area */ + drawable.DrawArc(dw.DRAW_FULL, 120, 100, 80, 80, 160, 120); + if image != dw.NOHPIXMAP { + if image_stretch == dw.TRUE { + drawable.BitBltStretchPixmap(10, 10, width - 20, height - 20, image, 0, 0, image.GetWidth(), image.GetHeight()); + } else { + drawable.BitBltPixmap(image_x, image_y, image.GetWidth(), image.GetHeight(), image, 0, 0); + } + } + + /* If we aren't drawing direct do a bitblt */ + if direct == dw.FALSE && hpma == dw.NOHPIXMAP { + text_expose(textbox2, 0, 0, 0, 0, nil); + } +} + +func update_render() { + switch render_type { + case 0: + draw_shapes(dw.FALSE, dw.NOHPIXMAP); + case 1: + draw_shapes(dw.TRUE, dw.NOHPIXMAP); + case 2: + draw_file(current_row, current_col, rows, font_height, dw.NOHPIXMAP); + } +} + +func print_callback(window dw.HANDLE, data dw.POINTER) int { + print := dw.PrintNew("DWTest Job"); + print.Connect(func(print dw.HPRINT, pixmap dw.HPIXMAP, page_num int) int { + pixmap.SetFont(FIXEDFONT); + if page_num == 0 { + draw_shapes(dw.FALSE, pixmap); + } else if page_num == 1 { + /* If we have a file to display... */ + if len(current_file) > 0 { + /* Calculate new dimensions */ + _, fheight := pixmap.GetTextExtents("(g"); + nrows := int(pixmap.GetHeight() / fheight); + + /* Do the actual drawing */ + draw_file(0, 0, nrows, fheight, pixmap); + } else { + /* We don't have a file so center an error message on the page */ + var text = "No file currently selected!"; + + /* Get the font size for this printer context... */ + fwidth, fheight := pixmap.GetTextExtents(text); + + posx := int(pixmap.GetWidth() - fwidth)/2; + posy := int(pixmap.GetHeight() - fheight)/2; + + dw.ColorForegroundSet(dw.CLR_BLACK); + dw.ColorBackgroundSet(dw.CLR_WHITE); + pixmap.DrawText(posx, posy, text); + } + } + return dw.TRUE; + }, 0, 2); + dw.Print_run(print, 0); + return dw.FALSE; +} + + +/* This gets called when a part of the graph needs to be repainted. */ +func text_expose(hwnd dw.HRENDER, x int, y int, width int, height int, data dw.POINTER) int { + if render_type != 1 { + var hpm dw.HPIXMAP + + if hwnd == textbox1 { + hpm = text1pm; + } else if hwnd == textbox2 { + hpm = text2pm; + } else { + return dw.TRUE; + } + + width = hpm.GetWidth(); + height = hpm.GetHeight(); + + hwnd.BitBltPixmap(0, 0, width, height, hpm, 0, 0); + dw.Flush(); + } else { + update_render(); + } + return dw.TRUE; +} + +/* Handle size change of the main render window */ +func configure_event(hwnd dw.HRENDER, width int, height int, data dw.POINTER) int { + old1 := text1pm; + old2 := text2pm; + depth := dw.ColorDepthGet(); + + rows = height / font_height; + cols = width / font_width; + + /* Create new pixmaps with the current sizes */ + text1pm = dw.PixmapNew(textbox1, uint(font_width*(width1)), uint(height), depth); + text2pm = dw.PixmapNew(textbox2, uint(width), uint(height), depth); + + /* Make sure the side area is cleared */ + dw.ColorForegroundSet(dw.CLR_WHITE); + text1pm.DrawRect(dw.DRAW_FILL | dw.DRAW_NOAA, 0, 0, dw.Pixmap_width(text1pm), dw.Pixmap_height(text1pm)); + + /* Destroy the old pixmaps */ + old1.Destroy(); + old2.Destroy(); + + /* Update scrollbar ranges with new values */ + hscrollbar.SetRange(uint(max_linewidth), uint(cols)); + vscrollbar.SetRange(uint(len(lines)), uint(rows)); + + /* Redraw the window */ + update_render(); + return dw.TRUE; +} + +func refresh_callback(window dw.HBUTTON, data dw.POINTER) int { + update_render(); + return dw.FALSE; +} + +func render_select_event_callback(window dw.HLISTBOX, index int, data dw.POINTER) int { + if index != render_type { + if index == 2 { + hscrollbar.SetRange(uint(max_linewidth), uint(cols)); + hscrollbar.SetPos(0); + vscrollbar.SetRange(uint(len(lines)), uint(rows)); + vscrollbar.SetPos(0); + current_col = 0; + current_row = 0; + } else { + hscrollbar.SetRange(0, 0); + hscrollbar.SetPos(0); + vscrollbar.SetRange(0, 0); + vscrollbar.SetPos(0); + } + render_type = index; + update_render(); + } + return dw.FALSE; +} + +/* Callback to handle user selection of the scrollbar position */ +func scrollbar_valuechanged_callback(hwnd dw.HSCROLLBAR, value int, data dw.POINTER) int { + if data != nil { + stext := dw.POINTER_TO_HANDLE(data); + + if hwnd == vscrollbar { + current_row = value; + } else { + current_col = value; + } + dw.Window_set_text(stext, fmt.Sprintf("Row:%d Col:%d Lines:%d Cols:%d", current_row, current_col, len(lines), max_linewidth)); + update_render(); + } + return dw.FALSE; +} + +func resolve_keyname(vk int) string { + var keyname string = "<unknown>" + + switch vk { + case dw.VK_LBUTTON : keyname = "VK_LBUTTON"; + case dw.VK_RBUTTON : keyname = "VK_RBUTTON"; + case dw.VK_CANCEL : keyname = "VK_CANCEL"; + case dw.VK_MBUTTON : keyname = "VK_MBUTTON"; + case dw.VK_TAB : keyname = "VK_TAB"; + case dw.VK_CLEAR : keyname = "VK_CLEAR"; + case dw.VK_RETURN : keyname = "VK_RETURN"; + case dw.VK_PAUSE : keyname = "VK_PAUSE"; + case dw.VK_CAPITAL : keyname = "VK_CAPITAL"; + case dw.VK_ESCAPE : keyname = "VK_ESCAPE"; + case dw.VK_SPACE : keyname = "VK_SPACE"; + case dw.VK_PRIOR : keyname = "VK_PRIOR"; + case dw.VK_NEXT : keyname = "VK_NEXT"; + case dw.VK_END : keyname = "VK_END"; + case dw.VK_HOME : keyname = "VK_HOME"; + case dw.VK_LEFT : keyname = "VK_LEFT"; + case dw.VK_UP : keyname = "VK_UP"; + case dw.VK_RIGHT : keyname = "VK_RIGHT"; + case dw.VK_DOWN : keyname = "VK_DOWN"; + case dw.VK_SELECT : keyname = "VK_SELECT"; + case dw.VK_PRINT : keyname = "VK_PRINT"; + case dw.VK_EXECUTE : keyname = "VK_EXECUTE"; + case dw.VK_SNAPSHOT: keyname = "VK_SNAPSHOT"; + case dw.VK_INSERT : keyname = "VK_INSERT"; + case dw.VK_DELETE : keyname = "VK_DELETE"; + case dw.VK_HELP : keyname = "VK_HELP"; + case dw.VK_LWIN : keyname = "VK_LWIN"; + case dw.VK_RWIN : keyname = "VK_RWIN"; + case dw.VK_NUMPAD0 : keyname = "VK_NUMPAD0"; + case dw.VK_NUMPAD1 : keyname = "VK_NUMPAD1"; + case dw.VK_NUMPAD2 : keyname = "VK_NUMPAD2"; + case dw.VK_NUMPAD3 : keyname = "VK_NUMPAD3"; + case dw.VK_NUMPAD4 : keyname = "VK_NUMPAD4"; + case dw.VK_NUMPAD5 : keyname = "VK_NUMPAD5"; + case dw.VK_NUMPAD6 : keyname = "VK_NUMPAD6"; + case dw.VK_NUMPAD7 : keyname = "VK_NUMPAD7"; + case dw.VK_NUMPAD8 : keyname = "VK_NUMPAD8"; + case dw.VK_NUMPAD9 : keyname = "VK_NUMPAD9"; + case dw.VK_MULTIPLY: keyname = "VK_MULTIPLY"; + case dw.VK_ADD : keyname = "VK_ADD"; + case dw.VK_SEPARATOR: keyname = "VK_SEPARATOR"; + case dw.VK_SUBTRACT: keyname = "VK_SUBTRACT"; + case dw.VK_DECIMAL : keyname = "VK_DECIMAL"; + case dw.VK_DIVIDE : keyname = "VK_DIVIDE"; + case dw.VK_F1 : keyname = "VK_F1"; + case dw.VK_F2 : keyname = "VK_F2"; + case dw.VK_F3 : keyname = "VK_F3"; + case dw.VK_F4 : keyname = "VK_F4"; + case dw.VK_F5 : keyname = "VK_F5"; + case dw.VK_F6 : keyname = "VK_F6"; + case dw.VK_F7 : keyname = "VK_F7"; + case dw.VK_F8 : keyname = "VK_F8"; + case dw.VK_F9 : keyname = "VK_F9"; + case dw.VK_F10 : keyname = "VK_F10"; + case dw.VK_F11 : keyname = "VK_F11"; + case dw.VK_F12 : keyname = "VK_F12"; + case dw.VK_F13 : keyname = "VK_F13"; + case dw.VK_F14 : keyname = "VK_F14"; + case dw.VK_F15 : keyname = "VK_F15"; + case dw.VK_F16 : keyname = "VK_F16"; + case dw.VK_F17 : keyname = "VK_F17"; + case dw.VK_F18 : keyname = "VK_F18"; + case dw.VK_F19 : keyname = "VK_F19"; + case dw.VK_F20 : keyname = "VK_F20"; + case dw.VK_F21 : keyname = "VK_F21"; + case dw.VK_F22 : keyname = "VK_F22"; + case dw.VK_F23 : keyname = "VK_F23"; + case dw.VK_F24 : keyname = "VK_F24"; + case dw.VK_NUMLOCK : keyname = "VK_NUMLOCK"; + case dw.VK_SCROLL : keyname = "VK_SCROLL"; + case dw.VK_LSHIFT : keyname = "VK_LSHIFT"; + case dw.VK_RSHIFT : keyname = "VK_RSHIFT"; + case dw.VK_LCONTROL: keyname = "VK_LCONTROL"; + case dw.VK_RCONTROL: keyname = "VK_RCONTROL"; + } + return keyname; +} + +func resolve_keymodifiers(mask int) string { + if (mask & dw.KC_CTRL) == dw.KC_CTRL && (mask & dw.KC_SHIFT) == dw.KC_SHIFT && (mask & dw.KC_ALT) == dw.KC_ALT { + return "KC_CTRL KC_SHIFT KC_ALT"; + } else if (mask & dw.KC_CTRL) == dw.KC_CTRL && (mask & dw.KC_SHIFT) == dw.KC_SHIFT { + return "KC_CTRL KC_SHIFT"; + } else if (mask & dw.KC_CTRL) == dw.KC_CTRL && (mask & dw.KC_ALT) == dw.KC_ALT { + return "KC_CTRL KC_ALT"; + } else if (mask & dw.KC_SHIFT) == dw.KC_SHIFT && (mask & dw.KC_ALT) == dw.KC_ALT { + return "KC_SHIFT KC_ALT"; + } else if (mask & dw.KC_SHIFT) == dw.KC_SHIFT { + return "KC_SHIFT"; + } else if (mask & dw.KC_CTRL) == dw.KC_CTRL { + return "KC_CTRL"; + } else if (mask & dw.KC_ALT) == dw.KC_ALT { + return "KC_ALT"; + } + return "none"; +} + +func keypress_callback(window dw.HWND, ch uint8, vk int, state int, data dw.POINTER, utf8 string) int { + var message string + + if ch != 0 { + message = fmt.Sprintf("Key: %c(%d) Modifiers: %s(%d) utf8 %s", ch, ch, resolve_keymodifiers(state), state, utf8); + } else { + message = fmt.Sprintf("Key: %s(%d) Modifiers: %s(%d) utf8 %s", resolve_keyname(vk), vk, resolve_keymodifiers(state), state, utf8); + } + status1.SetText(message); + return dw.FALSE; +} + +// Page 3 and 4 Callbacks +func item_enter_cb(window dw.HCONTAINER, text string, data dw.POINTER) int { + message := fmt.Sprintf("DW_SIGNAL_ITEM_ENTER: Window: %x Text: %s", dw.HANDLE_TO_UINTPTR(window), text); + dw.Window_set_text(dw.POINTER_TO_HANDLE(data), message); + return dw.FALSE; +} + +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)); + dw.Window_set_text(dw.POINTER_TO_HANDLE(data), message); + return dw.FALSE; +} + +func list_select_cb(window dw.HLISTBOX, item int, data dw.POINTER) int { + message := fmt.Sprintf("DW_SIGNAL_LIST_SELECT: Window: %x Item: %d", dw.HANDLE_TO_UINTPTR(window), item); + dw.Window_set_text(dw.POINTER_TO_HANDLE(data), message); + return dw.FALSE; +} + +func item_select_cb(window dw.HTREE, item dw.HTREEITEM, text string, data dw.POINTER, itemdata dw.POINTER) int { + message := fmt.Sprintf("DW_SIGNAL_ITEM_SELECT: Window: %x Item: %x Text: %s Itemdata: %x", dw.HANDLE_TO_UINTPTR(window), + dw.HANDLE_TO_UINTPTR(item), text, uintptr(itemdata)); + dw.Window_set_text(dw.POINTER_TO_HANDLE(data), message); + return dw.FALSE; +} + +func container_select_cb(window dw.HCONTAINER, item dw.HTREEITEM, text string, data dw.POINTER, itemdata dw.POINTER) int { + message := fmt.Sprintf("DW_SIGNAL_ITEM_SELECT: Window: %x Item: %x Text: %s Itemdata: %x", dw.HANDLE_TO_UINTPTR(window), + dw.HANDLE_TO_UINTPTR(item), text, uintptr(itemdata)); + dw.Window_set_text(dw.POINTER_TO_HANDLE(data), message); + mle_point = container_mle.Import(message, mle_point); + str := container.QueryStart(dw.CRA_SELECTED); + for len(str) > 0 { + mle_point = container_mle.Import(fmt.Sprintf("Selected: %s\r\n", str), mle_point); + str = container.QueryNext(dw.CRA_SELECTED); + } + /* Make the last inserted point the cursor location */ + container_mle.SetCursor(mle_point); + /* set the details of item 0 to new data */ + container.ChangeFile(0, "new data", fileicon); + container.ChangeItemULong(1, 0, 999); + return dw.FALSE; +} + +func combobox_select_event_callback(window dw.HLISTBOX, index int, data dw.POINTER) int { + fmt.Printf("got combobox_select_event for index: %d, iteration: %d\n", index, iteration); + iteration++; + return dw.FALSE; +} + +func column_click_cb(window dw.HCONTAINER, column_num int, data dw.POINTER) int { + var stype = "Unknown"; + + if column_num == 0 { + stype = "Filename"; + } else { + column_type := window.GetColumnType(column_num-1); + if column_type == dw.CFA_STRING { + stype = "String"; + } else if column_type == dw.CFA_ULONG { + stype = "ULong"; + } else if column_type == dw.CFA_DATE { + stype = "Date"; + } else if column_type == dw.CFA_TIME { + stype = "Time"; + } else if column_type == dw.CFA_BITMAPORICON { + stype = "BitmapOrIcon"; + } + } + message := fmt.Sprintf("DW_SIGNAL_COLUMN_CLICK: Window: %x Column: %d Type: %s Itemdata: %x", dw.HANDLE_TO_UINTPTR(window), + column_num, stype); + dw.Window_set_text(dw.POINTER_TO_HANDLE(data), message); + return dw.FALSE; +} + +// Page 5 Callbacks +func button_callback(window dw.HBUTTON, data dw.POINTER) int { + idx := combobox1.Selected(); + buf1 := combobox1.GetText(idx); + idx = combobox2.Selected(); + buf2 := combobox2.GetText(idx); + y, m, d := cal.GetDate(); + spvalue := spinbutton.GetPos(); + message := fmt.Sprintf("spinbutton: %d\ncombobox1: \"%s\"\ncombobox2: \"%s\"\ncalendar: %d-%d-%d", + spvalue, + buf1, buf2, + y, m, d ); + dw.Messagebox( "Values", dw.MB_OK | dw.MB_INFORMATION, message); + return dw.FALSE; +} + +var isfoldericon bool = true + +func bitmap_toggle_callback(window dw.HBUTTON, data dw.POINTER) int { + if isfoldericon == true { + isfoldericon = false; + window.SetBitmap(0, FILE_ICON_NAME); + window.SetTooltip("File Icon" ); + } else { + isfoldericon = true; + //dw.Window_set_bitmap_from_data(window, 0, folder_ico, sizeof(folder_ico)); + window.SetTooltip("Folder Icon"); + } + return dw.FALSE; +} + +func percent_button_box_callback(window dw.HBUTTON, data dw.POINTER) int { + percent.SetPos(dw.PERCENT_INDETERMINATE); + return dw.FALSE; +} + +func change_color_red_callback(window dw.HBUTTON, data dw.POINTER) int { + buttonsbox.SetColor(dw.CLR_RED, dw.CLR_RED); + return dw.FALSE; +} + +func change_color_yellow_callback(window dw.HBUTTON, data dw.POINTER) int { + buttonsbox.SetColor(dw.CLR_YELLOW, dw.CLR_YELLOW); + return dw.FALSE; +} + +/* Callback to handle user selection of the spinbutton position */ +func spinbutton_valuechanged_callback(hwnd dw.HSPINBUTTON, value int, data dw.POINTER) int { + dw.Messagebox("DWTest", dw.MB_OK, fmt.Sprintf("New value from spinbutton: %d\n", value)); + return dw.FALSE; +} + +/* Callback to handle user selection of the slider position */ +func slider_valuechanged_callback(hwnd dw.HSLIDER, value int, data dw.POINTER) int { + percent.SetPos(uint(value * 10)); + return dw.FALSE; +} + +// Page 8 Callbacks +func scrollbox_button_callback(window dw.HBUTTON, data dw.POINTER) int { + _, pos := scrollbox.GetPos(); + _, rng := scrollbox.GetRange(); + fmt.Printf("Pos %d Range %d\n", pos, rng); + return dw.FALSE; +} + +var exit_callback_func = exit_callback; +var copy_clicked_callback_func = copy_clicked_callback; +var paste_clicked_callback_func = paste_clicked_callback; +var browse_file_callback_func = browse_file_callback; +var browse_folder_callback_func = browse_folder_callback; +var colorchoose_callback_func = colorchoose_callback; +var cursortoggle_callback_func = cursortoggle_callback; +var beep_callback_func = beep_callback; +var timer_callback_func = timer_callback; +var switch_page_callback_func = switch_page_callback; +var helpabout_callback_func = helpabout_callback; +var menu_callback_func = menu_callback; +var menutoggle_callback_func = menutoggle_callback; +var text_expose_func = text_expose; +var configure_event_func = configure_event; +var motion_notify_event_func = motion_notify_event; +var context_menu_event_func = context_menu_event; +var refresh_callback_func = refresh_callback; +var render_select_event_callback_func = render_select_event_callback; +var scrollbar_valuechanged_callback_func = scrollbar_valuechanged_callback; +var keypress_callback_func = keypress_callback; +var item_enter_cb_func = item_enter_cb; +var item_context_cb_func = item_context_cb; +var list_select_cb_func = list_select_cb; +var item_select_cb_func = item_select_cb; +var column_click_cb_func = column_click_cb; +var container_select_cb_func = container_select_cb; +var combobox_select_event_callback_func = combobox_select_event_callback; +var scrollbox_button_callback_func = scrollbox_button_callback; +var button_callback_func = button_callback; +var bitmap_toggle_callback_func = bitmap_toggle_callback; +var percent_button_box_callback_func = percent_button_box_callback; +var change_color_red_callback_func = change_color_red_callback; +var change_color_yellow_callback_func = change_color_yellow_callback; +var spinbutton_valuechanged_callback_func = spinbutton_valuechanged_callback; +var slider_valuechanged_callback_func = slider_valuechanged_callback; +var print_callback_func = print_callback; + +var checkable_string = "checkable"; +var noncheckable_string = "non-checkable"; + +// Create the menu +func menu_add() { + mainmenubar := mainwindow.MenubarNew(); + /* add menus to the menubar */ + menu := dw.MenuNew(0); + menuitem := menu.AppendItem("~Quit", dw.MENU_AUTO, 0, dw.TRUE, dw.FALSE, dw.NOMENU); + dw.Signal_connect(menuitem, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(&exit_callback_func), dw.HANDLE_TO_POINTER(mainwindow)); + /* + * Add the "File" menu to the menubar... + */ + mainmenubar.AppendItem("~File", dw.MENU_AUTO, 0, dw.TRUE, dw.FALSE, menu); + + changeable_menu := dw.MenuNew(0); + checkable_menuitem = changeable_menu.AppendItem("~Checkable Menu Item", dw.MENU_AUTO, 0, dw.TRUE, dw.TRUE, dw.NOMENU); + dw.Signal_connect(checkable_menuitem, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(&menu_callback_func), dw.POINTER(&checkable_string)); + noncheckable_menuitem = changeable_menu.AppendItem("~Non-checkable Menu Item", dw.MENU_AUTO, 0, dw.TRUE, dw.FALSE, dw.NOMENU); + dw.Signal_connect(noncheckable_menuitem, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(&menu_callback_func), dw.POINTER(&noncheckable_string)); + changeable_menu.AppendItem("~Disabled menu Item", dw.MENU_AUTO, dw.MIS_DISABLED | dw.MIS_CHECKED, dw.TRUE, dw.TRUE, dw.NOMENU); + /* seperator */ + changeable_menu.AppendItem(dw.MENU_SEPARATOR, dw.MENU_AUTO, 0, dw.TRUE, dw.FALSE, dw.NOMENU); + menuitem = changeable_menu.AppendItem("~Menu Items Disabled", dw.MENU_AUTO, 0, dw.TRUE, dw.TRUE, dw.NOMENU); + dw.Signal_connect(menuitem, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(&menutoggle_callback_func), nil); + /* + * Add the "Menu" menu to the menubar... + */ + mainmenubar.AppendItem("~Menu", dw.MENU_AUTO, 0, dw.TRUE, dw.FALSE, changeable_menu); + + menu = dw.MenuNew(0); + menuitem = menu.AppendItem("~About", dw.MENU_AUTO, 0, dw.TRUE, dw.FALSE, dw.NOMENU); + dw.Signal_connect(menuitem, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(&helpabout_callback_func), dw.HANDLE_TO_POINTER(mainwindow)); + /* + * Add the "Help" menu to the menubar... + */ + mainmenubar.AppendItem("~Help", dw.MENU_AUTO, 0, dw.TRUE, dw.FALSE, menu); +} + +// Create Page 1 +func archive_add() { + lbbox := dw.Box_new(dw.VERT, 10); + + dw.Box_pack_start(notebookbox1, lbbox, 150, 70, dw.TRUE, dw.TRUE, 0); + + /* Copy and Paste */ + browsebox := dw.Box_new(dw.HORZ, 0); + + dw.Box_pack_start(lbbox, browsebox, 0, 0, dw.FALSE, dw.FALSE, 0); + + copypastefield = dw.Entryfield_new("", 0); + + dw.Entryfield_set_limit(copypastefield, 260); + + dw.Box_pack_start(browsebox, copypastefield, -1, -1, dw.TRUE, dw.FALSE, 4); + + copybutton := dw.Button_new("Copy", 0); + + dw.Box_pack_start(browsebox, copybutton, -1, -1, dw.FALSE, dw.FALSE, 0); + + pastebutton := dw.Button_new("Paste", 0); + + dw.Box_pack_start(browsebox, pastebutton, -1, -1, dw.FALSE, dw.FALSE, 0); + + /* Archive Name */ + stext := dw.TextNew("File to browse", 0); + + stext.SetStyle(dw.DT_VCENTER, dw.DT_VCENTER); + + lbbox.PackStart(stext, 130, 15, dw.TRUE, dw.TRUE, 2); + + browsebox = dw.BoxNew(dw.HORZ, 0); + + lbbox.PackStart(browsebox, 0, 0, dw.TRUE, dw.TRUE, 0); + + entryfield = dw.EntryfieldNew("", 100); + + entryfield.SetLimit(260); + + browsebox.PackStart(entryfield, 100, 15, dw.TRUE, dw.TRUE, 4); + + browsefilebutton := dw.ButtonNew("Browse File", 1001); + + browsebox.PackStart(browsefilebutton, 40, 15, dw.TRUE, dw.TRUE, 0); + + browsefolderbutton := dw.ButtonNew("Browse Folder", 1001); + + browsebox.PackStart(browsefolderbutton, 40, 15, dw.TRUE, dw.TRUE, 0); + + browsebox.SetColor(dw.CLR_PALEGRAY, dw.CLR_PALEGRAY); + stext.SetColor(dw.CLR_BLACK, dw.CLR_PALEGRAY); + + /* Buttons */ + buttonbox := dw.BoxNew(dw.HORZ, 10); + + lbbox.PackStart(buttonbox, 0, 0, dw.TRUE, dw.TRUE, 0); + + cancelbutton := dw.ButtonNew("Exit", 1002); + buttonbox.PackStart(cancelbutton, 130, 30, dw.TRUE, dw.TRUE, 2); + + cursortogglebutton = dw.ButtonNew("Set Cursor pointer - CLOCK", 1003); + buttonbox.PackStart(cursortogglebutton, 130, 30, dw.TRUE, dw.TRUE, 2); + + okbutton := dw.ButtonNew("Turn Off Annoying Beep!", 1001); + buttonbox.PackStart(okbutton, 130, 30, dw.TRUE, dw.TRUE, 2); + + cancelbutton.Unpack(); + buttonbox.PackStart(cancelbutton, 130, 30, dw.TRUE, dw.TRUE, 2); + mainwindow.ClickDefault(cancelbutton); + + colorchoosebutton := dw.ButtonNew("Color Chooser Dialog", 1004); + buttonbox.PackAtIndex(colorchoosebutton, 1, 130, 30, dw.TRUE, dw.TRUE, 2); + + /* Set some nice fonts and colors */ + lbbox.SetColor(dw.CLR_DARKCYAN, dw.CLR_PALEGRAY); + buttonbox.SetColor(dw.CLR_DARKCYAN, dw.CLR_PALEGRAY); + okbutton.SetColor(dw.CLR_PALEGRAY, dw.CLR_DARKCYAN); + + dw.Signal_connect(browsefilebutton, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(&browse_file_callback_func), nil); + dw.Signal_connect(browsefolderbutton, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(&browse_folder_callback_func), nil); + dw.Signal_connect(copybutton, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(©_clicked_callback_func), dw.HANDLE_TO_POINTER(copypastefield)); + dw.Signal_connect(pastebutton, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(&paste_clicked_callback_func), dw.HANDLE_TO_POINTER(copypastefield)); + dw.Signal_connect(okbutton, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(&beep_callback_func), nil); + dw.Signal_connect(cancelbutton, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(&exit_callback_func), dw.HANDLE_TO_POINTER(mainwindow)); + dw.Signal_connect(cursortogglebutton, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(&cursortoggle_callback_func), dw.HANDLE_TO_POINTER(mainwindow)); + dw.Signal_connect(colorchoosebutton, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(&colorchoose_callback_func), dw.HANDLE_TO_POINTER(mainwindow)); +} + +// Create Page 2 +func text_add() { + depth := dw.ColorDepthGet(); + + /* create a box to pack into the notebook page */ + pagebox := dw.BoxNew(dw.HORZ, 2); + notebookbox2.PackStart(pagebox, 0, 0, dw.TRUE, dw.TRUE, 0); + /* now a status area under this box */ + hbox := dw.BoxNew(dw.HORZ, 1); + notebookbox2.PackStart(hbox, 100, 20, dw.TRUE, dw.FALSE, 1); + status1 = dw.StatusTextNew("", 0); + hbox.PackStart(status1, 100, -1, dw.TRUE, dw.FALSE, 1); + status2 = dw.StatusTextNew("", 0); + hbox.PackStart(status2, 100, -1, dw.TRUE, dw.FALSE, 1); + /* a box with combobox and button */ + hbox = dw.BoxNew(dw.HORZ, 1); + notebookbox2.PackStart(hbox, 100, 25, dw.TRUE, dw.FALSE, 1); + rendcombo := dw.ComboboxNew("Shapes Double Buffered", 0); + hbox.PackStart(rendcombo, 80, 25, dw.TRUE, dw.FALSE, 0); + rendcombo.Append("Shapes Double Buffered"); + rendcombo.Append("Shapes Direct"); + rendcombo.Append("File Display"); + label := dw.TextNew("Image X:", 100); + label.SetStyle(dw.DT_VCENTER | dw.DT_CENTER, dw.DT_VCENTER | dw.DT_CENTER); + hbox.PackStart(label, -1, 25, dw.FALSE, dw.FALSE, 0); + imagexspin = dw.SpinButtonNew("20", 1021); + hbox.PackStart(imagexspin, 25, 25, dw.TRUE, dw.FALSE, 0); + label = dw.TextNew("Y:", 100); + label.SetStyle(dw.DT_VCENTER | dw.DT_CENTER, dw.DT_VCENTER | dw.DT_CENTER); + hbox.PackStart(label, -1, 25, dw.FALSE, dw.FALSE, 0); + imageyspin = dw.SpinButtonNew("20", 1021); + hbox.PackStart(imageyspin, 25, 25, dw.TRUE, dw.FALSE, 0); + imagexspin.SetLimits(2000, 0); + imageyspin.SetLimits(2000, 0); + imagexspin.SetPos(20); + imageyspin.SetPos(20); + imagestretchcheck = dw.CheckButtonNew("Stretch", 1021); + hbox.PackStart(imagestretchcheck, -1, 25, dw.FALSE, dw.FALSE, 0); + + button1 := dw.ButtonNew("Refresh", 1223); + hbox.PackStart(button1, 100, 25, dw.FALSE, dw.FALSE, 0); + button2 := dw.ButtonNew("Print", 1224); + hbox.PackStart(button2, 100, 25, dw.FALSE, dw.FALSE, 0); + + /* Pre-create the scrollbars so we can query their sizes */ + vscrollbar = dw.ScrollbarNew(dw.VERT, 50); + hscrollbar = dw.ScrollbarNew(dw.HORZ, 50); + vscrollbarwidth, _ := vscrollbar.GetPreferredSize(); + _, hscrollbarheight := hscrollbar.GetPreferredSize(); + + /* On GTK with overlay scrollbars enabled this returns us 0... + * so in that case we need to give it some real values. + */ + if vscrollbarwidth == 0 { + vscrollbarwidth = 8; + } + if hscrollbarheight == 0 { + hscrollbarheight = 8; + } + + /* create render box for number pixmap */ + textbox1 = dw.RenderNew(100); + textbox1.SetFont(FIXEDFONT); + font_width, font_height = textbox1.GetTextExtents("(g"); + font_width = font_width / 2; + vscrollbox := dw.BoxNew(dw.VERT, 0); + vscrollbox.PackStart(textbox1, font_width * width1, font_height * rows, dw.FALSE, dw.TRUE, 0); + vscrollbox.PackStart(dw.NOHWND, font_width * (width1 + 1), hscrollbarheight, dw.FALSE, dw.FALSE, 0); + pagebox.PackStart(vscrollbox, 0, 0, dw.FALSE, dw.TRUE, 0); + + /* pack empty space 1 character wide */ + pagebox.PackStart(dw.NOHWND, font_width, 0, dw.FALSE, dw.TRUE, 0); + + /* create box for filecontents and horz scrollbar */ + textboxA := dw.BoxNew(dw.VERT, 0); + pagebox.PackStart(textboxA, 0, 0, dw.TRUE, dw.TRUE, 0); + + /* create render box for filecontents pixmap */ + textbox2 = dw.RenderNew(101); + textboxA.PackStart(textbox2, 10, 10, dw.TRUE, dw.TRUE, 0); + textbox2.SetFont(FIXEDFONT); + /* create horizonal scrollbar */ + textboxA.PackStart(hscrollbar, -1, -1, dw.TRUE, dw.FALSE, 0); + + /* create vertical scrollbar */ + vscrollbox = dw.BoxNew(dw.VERT, 0); + vscrollbox.PackStart(vscrollbar, -1, -1, dw.FALSE, dw.TRUE, 0); + /* Pack an area of empty space 14x14 pixels */ + vscrollbox.PackStart(dw.NOHWND, vscrollbarwidth, hscrollbarheight, dw.FALSE, dw.FALSE, 0); + pagebox.PackStart(vscrollbox, 0, 0, dw.FALSE, dw.TRUE, 0); + + text1pm = dw.PixmapNew(textbox1, uint(font_width * width1), uint(font_height * rows), depth); + text2pm = dw.PixmapNew(textbox2, uint(font_width * cols), uint(font_height * rows), depth); + image = dw.PixmapNewFromFile(textbox2, "test"); + if image == dw.NOHPIXMAP && len(SRCROOT) > 0 { + image = dw.PixmapNewFromFile(textbox2, fmt.Sprintf("%s/test", SRCROOT)); + } + if image != dw.NOHPIXMAP { + image.SetTransparentColor(dw.CLR_WHITE); + } + + dw.Messagebox("DWTest", dw.MB_OK | dw.MB_INFORMATION, fmt.Sprintf("Width: %d Height: %d\n", font_width, font_height)); + text1pm.DrawRect(dw.DRAW_FILL | dw.DRAW_NOAA, 0, 0, font_width * width1, font_height * rows); + text2pm.DrawRect(dw.DRAW_FILL | dw.DRAW_NOAA, 0, 0, font_width * cols, font_height * rows); + dw.Signal_connect(textbox1, dw.SIGNAL_BUTTON_PRESS, dw.SIGNAL_FUNC(&context_menu_event_func), nil); + dw.Signal_connect(textbox1, dw.SIGNAL_EXPOSE, dw.SIGNAL_FUNC(&text_expose_func), nil); + dw.Signal_connect(textbox2, dw.SIGNAL_EXPOSE, dw.SIGNAL_FUNC(&text_expose_func), nil); + dw.Signal_connect(textbox2, dw.SIGNAL_CONFIGURE, dw.SIGNAL_FUNC(&configure_event_func), nil); + dw.Signal_connect(textbox2, dw.SIGNAL_MOTION_NOTIFY, dw.SIGNAL_FUNC(&motion_notify_event_func), dw.POINTER(uintptr(1))); + dw.Signal_connect(textbox2, dw.SIGNAL_BUTTON_PRESS, dw.SIGNAL_FUNC(&motion_notify_event_func), nil); + dw.Signal_connect(hscrollbar, dw.SIGNAL_VALUE_CHANGED, dw.SIGNAL_FUNC(&scrollbar_valuechanged_callback_func), dw.HANDLE_TO_POINTER(status1)); + dw.Signal_connect(vscrollbar, dw.SIGNAL_VALUE_CHANGED, dw.SIGNAL_FUNC(&scrollbar_valuechanged_callback_func), dw.HANDLE_TO_POINTER(status1)); + dw.Signal_connect(imagestretchcheck, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(&refresh_callback_func), nil); + dw.Signal_connect(button1, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(&refresh_callback_func), nil); + dw.Signal_connect(button2, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(&print_callback_func), nil); + dw.Signal_connect(rendcombo, dw.SIGNAL_LIST_SELECT, dw.SIGNAL_FUNC(&render_select_event_callback_func), nil); + dw.Signal_connect(mainwindow, dw.SIGNAL_KEY_PRESS, dw.SIGNAL_FUNC(&keypress_callback_func), nil); + + dw.Taskbar_insert(textbox1, fileicon, "DWTest"); +} + +// Page 3 +func tree_add() { + /* create a box to pack into the notebook page */ + listbox := dw.ListboxNew(1024, dw.TRUE); + notebookbox3.PackStart(listbox, 500, 200, dw.TRUE, dw.TRUE, 0); + listbox.Append("Test 1"); + listbox.Append("Test 2"); + listbox.Append("Test 3"); + listbox.Append("Test 4"); + listbox.Append("Test 5"); + + /* now a tree area under this box */ + tree = dw.TreeNew(101); + notebookbox3.PackStart(tree, 500, 200, dw.TRUE, dw.TRUE, 1); + + /* and a status area to see whats going on */ + tree_status := dw.StatusTextNew("", 0); + notebookbox3.PackStart(tree_status, 100, -1, dw.TRUE, dw.FALSE, 1); + + /* set up our signal trappers... */ + dw.Signal_connect(tree, dw.SIGNAL_ITEM_CONTEXT, dw.SIGNAL_FUNC(&item_context_cb_func), dw.HANDLE_TO_POINTER(tree_status)); + dw.Signal_connect(tree, dw.SIGNAL_ITEM_SELECT, dw.SIGNAL_FUNC(&item_select_cb_func), dw.HANDLE_TO_POINTER(tree_status)); + + t1 := tree.Insert("tree folder 1", foldericon, dw.NOHTREEITEM, dw.POINTER(uintptr(1))); + t2 := tree.Insert("tree folder 2", foldericon, dw.NOHTREEITEM, dw.POINTER(uintptr(2))); + tree.Insert("tree file 1", fileicon, t1, dw.POINTER(uintptr(3))); + tree.Insert("tree file 2", fileicon, t1, dw.POINTER(uintptr(4))); + tree.Insert("tree file 3", fileicon, t2, dw.POINTER(uintptr(5))); + tree.Insert("tree file 4", fileicon, t2, dw.POINTER(uintptr(6))); + t1.Change("tree folder 1", foldericon); + t2.Change("tree folder 2", foldericon); +} + +// Page 4 +func container_add() { + var z int + titles := []string{ "Type", "Size", "Time", "Date" }; + flags := []uint{ dw.CFA_BITMAPORICON | dw.CFA_LEFT | dw.CFA_HORZSEPARATOR | dw.CFA_SEPARATOR, + dw.CFA_ULONG | dw.CFA_RIGHT | dw.CFA_HORZSEPARATOR | dw.CFA_SEPARATOR, + dw.CFA_TIME | dw.CFA_CENTER | dw.CFA_HORZSEPARATOR | dw.CFA_SEPARATOR, + dw.CFA_DATE | dw.CFA_LEFT | dw.CFA_HORZSEPARATOR | dw.CFA_SEPARATOR }; + + + /* create a box to pack into the notebook page */ + containerbox := dw.BoxNew(dw.HORZ, 2); + notebookbox4.PackStart(containerbox, 500, 200, dw.TRUE, dw.TRUE, 0); + + /* now a container area under this box */ + container = dw.ContainerNew(100, dw.TRUE); + notebookbox4.PackStart(container, 500, 200, dw.TRUE, dw.FALSE, 1); + + /* and a status area to see whats going on */ + container_status := dw.StatusTextNew("", 0); + notebookbox4.PackStart(container_status, 100, -1, dw.TRUE, dw.FALSE, 1); + + container.SetColumnTitle("Test"); + container.FileSystemSetup(flags, titles); + container.SetStripe(dw.CLR_DEFAULT, dw.CLR_DEFAULT); + containerinfo := container.Alloc(3); + + for z=0; z<3; z++ { + var thisicon dw.HICN = fileicon; + + if z == 0 { + thisicon = foldericon; + } + fmt.Printf("Initial: container: %x containerinfo: %x icon: %x\n", uintptr(dw.HANDLE_TO_POINTER(container)), + dw.HANDLE_TO_UINTPTR(containerinfo), uintptr(dw.POINTER(thisicon))); + containerinfo.SetFile(z, fmt.Sprintf("Filename %d", z+1), thisicon); + containerinfo.SetItemIcon(0, z, thisicon); + containerinfo.SetItemULong(1, z, uint(z*100)); + containerinfo.SetItemTime(2, z, z+10, z+10, z+10); + containerinfo.SetItemDate(3, z, z+10, z+10, z+2000); + containerinfo.SetRowTitle(z, fmt.Sprintf("Don't allocate from stack: Item: %d", z)); + } + containerinfo.Insert(); + + container.Alloc(1); + containerinfo.SetFile(0, "Yikes", foldericon); + containerinfo.SetItemIcon(0, 0, foldericon); + containerinfo.SetItemULong(1, 0, 324); + containerinfo.SetItemTime(2, 0, z+10, z+10, z+10); + containerinfo.SetItemDate(3, 0, z+10, z+10, z+2000); + containerinfo.SetRowTitle(0, "Extra"); + + containerinfo.Insert(); + container.Optimize(); + + container_mle = dw.MLENew(111); + containerbox.PackStart(container_mle, 500, 200, dw.TRUE, dw.TRUE, 0); + + mle_point = container_mle.Import("", -1); + mle_point = container_mle.Import(fmt.Sprintf("[%d]", mle_point), mle_point); + mle_point = container_mle.Import(fmt.Sprintf("[%d]abczxydefijkl", mle_point), mle_point); + dw.Mle_delete(container_mle, 9, 3); + mle_point = container_mle.Import("gh", 12); + newpoint, _ := container_mle.GetSize(); + mle_point = newpoint; + mle_point = container_mle.Import(fmt.Sprintf("[%d]\r\n\r\n", mle_point), mle_point); + container_mle.SetCursor(mle_point); + /* connect our event trappers... */ + dw.Signal_connect(container, dw.SIGNAL_ITEM_ENTER, dw.SIGNAL_FUNC(&item_enter_cb_func), dw.HANDLE_TO_POINTER(container_status)); + dw.Signal_connect(container, dw.SIGNAL_ITEM_CONTEXT, dw.SIGNAL_FUNC(&item_context_cb_func), dw.HANDLE_TO_POINTER(container_status)); + dw.Signal_connect(container, dw.SIGNAL_ITEM_SELECT, dw.SIGNAL_FUNC(&container_select_cb_func), dw.HANDLE_TO_POINTER(container_status)); + dw.Signal_connect(container, dw.SIGNAL_COLUMN_CLICK, dw.SIGNAL_FUNC(&column_click_cb_func), dw.HANDLE_TO_POINTER(container_status)); +} + +// Page 5 +func buttons_add() { + var i int; + + /* create a box to pack into the notebook page */ + buttonsbox = dw.BoxNew(dw.VERT, 2); + notebookbox5.PackStart(buttonsbox, 25, 200, dw.TRUE, dw.TRUE, 0); + buttonsbox.SetColor(dw.CLR_RED, dw.CLR_RED); + + calbox := dw.BoxNew(dw.HORZ, 0); + notebookbox5.PackStart(calbox, 500, 200, dw.TRUE, dw.TRUE, 1); + cal = dw.CalendarNew(100); + calbox.PackStart(cal, 180, 120, dw.TRUE, dw.TRUE, 0); + /* + dw.Calendar_set_date(cal, 2001, 1, 1); + */ + /* + * Create our file toolbar boxes... + */ + buttonboxperm = dw.BoxNew(dw.VERT, 0); + buttonsbox.PackStart(buttonboxperm, 25, 0, dw.FALSE, dw.TRUE, 2); + buttonboxperm.SetColor(dw.CLR_WHITE, dw.CLR_WHITE); + abutton1 := dw.BitmapButtonNewFromFile("Top Button", 0, fmt.Sprintf("%s/%s", SRCROOT, FILE_ICON_NAME)); + buttonboxperm.PackStart(abutton1, 100, 30, dw.FALSE, dw.FALSE, 0); + dw.Signal_connect(abutton1, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(&button_callback_func), nil); + buttonboxperm.PackStart(dw.NOHWND, 25, 5, dw.FALSE, dw.FALSE, 0); + abutton2 := dw.BitmapButtonNewFromFile("Bottom", 0, fmt.Sprintf("%s/%s", SRCROOT, FOLDER_ICON_NAME)); + buttonsbox.PackStart(abutton2, 25, 25, dw.FALSE, dw.FALSE, 0); + dw.Signal_connect(abutton2, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(&button_callback_func), nil); + abutton2.SetBitmap(0, FILE_ICON_NAME); + + create_button(); + /* make a combobox */ + combox := dw.BoxNew(dw.VERT, 2); + notebookbox5.PackStart(combox, 25, 200, dw.TRUE, dw.FALSE, 0); + combobox1 = dw.ComboboxNew("fred", 0 ); /* no point in specifying an initial value */ + combobox1.Append("fred" ); + combox.PackStart(combobox1, -1, -1, dw.TRUE, dw.FALSE, 0); + /* + dw_window_set_text( combobox, "initial value"); + */ + dw.Signal_connect(combobox1, dw.SIGNAL_LIST_SELECT, dw.SIGNAL_FUNC(&combobox_select_event_callback_func), nil); + + combobox2 = dw.ComboboxNew("joe", 0); /* no point in specifying an initial value */ + combox.PackStart(combobox2, -1, -1, dw.TRUE, dw.FALSE, 0); + /* + dw_window_set_text( combobox, "initial value"); + */ + dw.Signal_connect(combobox2, dw.SIGNAL_LIST_SELECT, dw.SIGNAL_FUNC(&combobox_select_event_callback_func), nil); + /* add LOTS of items */ + fmt.Printf("before appending 500 items to combobox using dw_listbox_list_append()\n"); + text := make([]string, 500); + for i = 0; i < 500; i++ { + text[i] = fmt.Sprintf("item %d", i); + } + combobox2.AppendList(text); + fmt.Printf("after appending 500 items to combobox\n"); + /* now insert a couple of items */ + combobox2.Insert("inserted item 2", 2 ); + combobox2.Insert("inserted item 5", 5 ); + /* make a spinbutton */ + spinbutton = dw.SpinButtonNew("", 0); /* no point in specifying text */ + combox.PackStart(spinbutton, -1, -1, dw.TRUE, dw.FALSE, 0); + spinbutton.SetLimits(100, 1); + spinbutton.SetPos(30); + dw.Signal_connect(spinbutton, dw.SIGNAL_VALUE_CHANGED, dw.SIGNAL_FUNC(&spinbutton_valuechanged_callback_func), nil); + /* make a slider */ + slider = dw.SliderNew(dw.FALSE, 11, 0); /* no point in specifying text */ + combox.PackStart(slider, -1, -1, dw.TRUE, dw.FALSE, 0); + dw.Signal_connect(slider, dw.SIGNAL_VALUE_CHANGED, dw.SIGNAL_FUNC(&slider_valuechanged_callback_func), nil); + /* make a percent */ + percent = dw.PercentNew(0); + combox.PackStart(percent, -1, -1, dw.TRUE, dw.FALSE, 0); +} + +func create_button() { + filetoolbarbox := dw.BoxNew(dw.VERT, 0); + buttonboxperm.PackStart(filetoolbarbox, 0, 0, dw.TRUE, dw.TRUE, 0); + + abutton1 := dw.BitmapButtonNewFromFile("Empty image. Should be under Top button", 0, "junk"); + filetoolbarbox.PackStart(abutton1, 25, 25, dw.FALSE, dw.FALSE, 0); + dw.Signal_connect(abutton1, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(&change_color_red_callback_func), nil); + filetoolbarbox.PackStart(dw.NOHWND, 25, 5, dw.FALSE, dw.FALSE, 0); + + abutton1 = dw.BitmapButtonNewFromFile("A borderless bitmapbitton", 0, fmt.Sprintf("%s/%s", SRCROOT, FOLDER_ICON_NAME)); + filetoolbarbox.PackStart(abutton1, 25, 25, dw.FALSE, dw.FALSE, 0); + dw.Signal_connect(abutton1, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(&change_color_yellow_callback_func), nil); + filetoolbarbox.PackStart(dw.NOHWND, 25, 5, dw.FALSE, dw.FALSE, 0); + abutton1.SetStyle(dw.BS_NOBORDER, dw.BS_NOBORDER); + + //abutton1 = dw.Bitmapbutton_new_from_data("A button from data", 0, folder_ico, 1718 ); + abutton1 = dw.BitmapButtonNewFromFile("A button from data", 0, "junk"); + filetoolbarbox.PackStart(abutton1, 25, 25, dw.FALSE, dw.FALSE, 0); + dw.Signal_connect(abutton1, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(&percent_button_box_callback_func), nil); + filetoolbarbox.PackStart(dw.NOHWND, 25, 5, dw.FALSE, dw.FALSE, 0); +} + +// Page 8 +func scrollbox_add() { + var i int; + + /* create a box to pack into the notebook page */ + scrollbox = dw.ScrollBoxNew(dw.VERT, 0); + notebookbox8.PackStart(scrollbox, 0, 0, dw.TRUE, dw.TRUE, 1); + + abutton1 := dw.ButtonNew("Show Adjustments", 0); + scrollbox.PackStart(abutton1, -1, 30, dw.FALSE, dw.FALSE, 0 ); + dw.Signal_connect(abutton1, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(&scrollbox_button_callback_func), nil); + + for i = 0; i < MAX_WIDGETS; i++ { + tmpbox := dw.BoxNew(dw.HORZ, 0); + scrollbox.PackStart(tmpbox, 0, 24, dw.TRUE, dw.FALSE, 2); + label := dw.TextNew(fmt.Sprintf("Label %d", i), 0 ); + tmpbox.PackStart(label, 0, 20, dw.TRUE, dw.FALSE, 0); + item := dw.EntryfieldNew(fmt.Sprintf("Entry %d", i), uint(i)); + tmpbox.PackStart(item, 0, 20, dw.TRUE, dw.FALSE, 0); + } +} + +func main() { + /* Pick an approriate font for our platform */ + if runtime.GOOS == "windows" { + FIXEDFONT = "10.Lucida Console"; + } else if runtime.GOOS == "darwin" { + FIXEDFONT = "9.Monaco"; + } + + /* Locate the source root of the package */ + pkg, err := build.Import("dwtest", "", build.FindOnly); + if err == nil && len(pkg.SrcRoot) > 0 { + SRCROOT = fmt.Sprintf("%s/dwtest", pkg.SrcRoot); + } + + /* Initialize the Dynamic Windows engine */ + dw.Init(dw.TRUE); + + /* Create our window */ + mainwindow = dw.WindowNew(dw.DESKTOP, "dwindows test UTF8 中国語 (繁体) cañón", dw.FCF_SYSMENU | dw.FCF_TITLEBAR | dw.FCF_TASKLIST | dw.FCF_DLGBORDER | dw.FCF_SIZEBORDER | dw.FCF_MINMAX); + + menu_add(); + + notebookbox := dw.BoxNew(dw.VERT, 5); + mainwindow.PackStart(notebookbox, 0, 0, dw.TRUE, dw.TRUE, 0); + + foldericon = dw.IconLoadFromFile(FOLDER_ICON_NAME); + if foldericon == dw.NOHICN && len(SRCROOT) > 0 { + foldericon = dw.IconLoadFromFile(fmt.Sprintf("%s/%s", SRCROOT, FOLDER_ICON_NAME)); + } + fileicon = dw.IconLoadFromFile(FILE_ICON_NAME); + if fileicon == dw.NOHICN && len(SRCROOT) > 0 { + fileicon = dw.IconLoadFromFile(fmt.Sprintf("%s/%s", SRCROOT, FILE_ICON_NAME)); + } + notebook := dw.NotebookNew(1, dw.TRUE); + notebookbox.PackStart(notebook, 100, 100, dw.TRUE, dw.TRUE, 0); + dw.Signal_connect(notebook, dw.SIGNAL_SWITCH_PAGE, dw.SIGNAL_FUNC(&switch_page_callback_func), nil); + + notebookbox1 = dw.BoxNew(dw.VERT, 5); + notebookpage1 := notebook.PageNew(0, dw.TRUE); + notebookpage1.Pack(notebookbox1); + notebookpage1.SetText("buttons and entry"); + archive_add(); + + notebookbox2 = dw.BoxNew(dw.VERT, 5); + notebookpage2 := notebook.PageNew(1, dw.FALSE); + notebookpage2.Pack(notebookbox2); + notebookpage2.SetText("render"); + text_add(); + + notebookbox3 = dw.BoxNew(dw.VERT, 5); + notebookpage3 := notebook.PageNew(1, dw.FALSE); + notebookpage3.Pack(notebookbox3); + notebookpage3.SetText("tree"); + tree_add(); + + notebookbox4 = dw.BoxNew(dw.VERT, 5); + notebookpage4 := notebook.PageNew(1, dw.FALSE); + notebookpage4.Pack(notebookbox4); + notebookpage4.SetText("container"); + container_add(); + + notebookbox5 = dw.BoxNew(dw.VERT, 5); + notebookpage5 := notebook.PageNew(1, dw.FALSE); + notebookpage5.Pack(notebookbox5); + notebookpage5.SetText("buttons"); + buttons_add(); + +/* DEPRECATED + notebookbox6 = dw.BoxNew(dw.VERT, 5); + notebookpage6 := notebook.PageNew(1, dw.FALSE ); + notebookpage6.Pack(notebookbox6); + notebookpage6.SetText("mdi"); + mdi_add(); +*/ + + notebookbox7 = dw.BoxNew(dw.VERT, 6); + notebookpage7 := notebook.PageNew(1, dw.FALSE); + notebookpage7.Pack(notebookbox7); + notebookpage7.SetText("html"); + + rawhtml := dw.HtmlNew(1001); + if rawhtml.GetHandle() != nil { + notebookbox7.PackStart(rawhtml, 0, 100, dw.TRUE, dw.FALSE, 0); + rawhtml.Raw("<html><body><center><h1>dwtest</h1></center></body></html>"); + html = dw.HtmlNew(1002); + notebookbox7.PackStart(html, 0, 100, dw.TRUE, dw.TRUE, 0); + html.URL("http://dwindows.netlabs.org"); + } else { + label := dw.Text_new("HTML widget not available.", 0); + notebookbox7.PackStart(label, 0, 100, dw.TRUE, dw.TRUE, 0); + } + + notebookbox8 = dw.BoxNew(dw.VERT, 7); + notebookpage8 := notebook.PageNew(1, dw.FALSE); + notebookpage8.Pack(notebookbox8); + notebookpage8.SetText("scrollbox"); + scrollbox_add(); + + /* Set the default field */ + mainwindow.Default(copypastefield); + + dw.Signal_connect(mainwindow, dw.SIGNAL_DELETE, dw.SIGNAL_FUNC(&exit_callback_func), dw.HANDLE_TO_POINTER(mainwindow)); + /* + * The following is a special case handler for the Mac and other platforms which contain + * an application object which can be closed. It function identically to a window delete/close + * request except it applies to the entire application not an individual window. If it is not + * handled or you allow the default handler to take place the entire application will close. + * On platforms which do not have an application object this line will be ignored. + */ + dw.Signal_connect(dw.DESKTOP, dw.SIGNAL_DELETE, dw.SIGNAL_FUNC(&exit_callback_func), dw.HANDLE_TO_POINTER(mainwindow)); + timerid = dw.Timer_connect(2000, dw.SIGNAL_FUNC(&timer_callback_func), nil); + mainwindow.SetSize(640, 550); + mainwindow.Show(); + + /* Now that the window is created and shown... + * run the main loop until we get dw_main_quit() + */ + dw.Main(); + + /* Now that the loop is done we can cleanup */ + dw.Taskbar_delete(textbox1, fileicon); + mainwindow.Destroy(); + + fmt.Printf("dwtest exiting...\n"); + /* Call dw.Shutdown() to shutdown the Dynamic Windows engine */ + dw.Shutdown(); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/hello/hello.exe.x64.manifest Sat Mar 16 23:32:05 2013 -0500 @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> +<assemblyIdentity + version="1.1.0.0" + processorArchitecture="AMD64" + name="hello" + type="win32" +/> +<description>Dynamic Windows Hello World Example</description> +<dependency> + <dependentAssembly> + <assemblyIdentity + type="win32" + name="Microsoft.Windows.Common-Controls" + version="6.0.0.0" + processorArchitecture="AMD64" + publicKeyToken="6595b64144ccf1df" + language="*" + /> + </dependentAssembly> +</dependency> +</assembly> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/hello/hello.exe.x86.manifest Sat Mar 16 23:32:05 2013 -0500 @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> +<assemblyIdentity + version="1.1.0.0" + processorArchitecture="X86" + name="hello" + type="win32" +/> +<description>Dynamic Windows Hello World Example</description> +<dependency> + <dependentAssembly> + <assemblyIdentity + type="win32" + name="Microsoft.Windows.Common-Controls" + version="6.0.0.0" + processorArchitecture="X86" + publicKeyToken="6595b64144ccf1df" + language="*" + /> + </dependentAssembly> +</dependency> +</assembly> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/hello/hello.go Sat Mar 16 23:32:05 2013 -0500 @@ -0,0 +1,47 @@ +package main + +import ( + "dw" +) + +// Global variables +var APP_NAME = "DW Hello World Example" + +/* Handle exiting the application */ +func exit_handler(win dw.HWND, message string) int { + if dw.Messagebox(APP_NAME, dw.MB_YESNO | dw.MB_QUESTION, message) == dw.MB_RETURN_YES { + /* Exit the application cleanly */ + dw.Main_quit(); + } + return dw.TRUE; +} + +func main() { + var message = "Are you sure you want to exit?"; + + /* Initialize Dynamic Windows */ + dw.Init(dw.TRUE); + + /* Create our window */ + window := dw.WindowNew(dw.DESKTOP, APP_NAME, dw.FCF_SYSMENU | dw.FCF_TITLEBAR | dw.FCF_TASKLIST | dw.FCF_DLGBORDER | dw.FCF_SIZEBORDER | dw.FCF_MINMAX); + + label := dw.TextNew("Hello, 世界", 0); + window.PackStart(label, 0, 0, dw.TRUE, dw.TRUE, 0); + + /* Connect the signal handlers */ + window.ConnectDelete(func(window dw.HWND) int { return exit_handler(window, message); }); + + /* Set the size and show the window */ + window.SetSize(640, 550); + window.Show(); + + dw.Main(); + + /* Destroy the main window */ + window.Destroy(); + + /* Call dw.Shutdown() to shutdown the Dynamic Windows engine */ + dw.Shutdown(); + return; +} +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/hello/hello.rc Sat Mar 16 23:32:05 2013 -0500 @@ -0,0 +1,6 @@ +#include "winuser.h" +#ifdef DW64 +1 RT_MANIFEST hello.exe.x64.manifest +#else +1 RT_MANIFEST hello.exe.x86.manifest +#endif \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/hello/makesyso.bat Sat Mar 16 23:32:05 2013 -0500 @@ -0,0 +1,3 @@ +@echo off +windres -i hello.rc -o hello_windows_amd64.syso --input-format=rc --output-format=coff --target=pe-x86-64 -DDW64 +windres -i hello.rc -o hello_windows_386.syso --input-format=rc --output-format=coff --target=pe-i386