Mercurial > godwindows
changeset 62:fff7c3e22421
Mostly finished and fixed the OO changes... some problems still exist and
need to copy some methods for some types.:
author | Brian Smith <brian@dbsoft.org> |
---|---|
date | Thu, 14 Mar 2013 19:30:41 -0500 |
parents | 1c4bbae2ab88 |
children | cb3d23459780 |
files | src/dw/dw.go src/dw/dwglue.c src/dwib/dwib.go src/dwtest/dwtest.go |
diffstat | 4 files changed, 487 insertions(+), 217 deletions(-) [+] |
line wrap: on
line diff
--- a/src/dw/dw.go Thu Mar 14 12:58:49 2013 -0500 +++ b/src/dw/dw.go Thu Mar 14 19:30:41 2013 -0500 @@ -24,7 +24,7 @@ type HENTRYFIELD struct { hwnd unsafe.Pointer } -type HGENERIC struct { +type HTEXT struct { hwnd unsafe.Pointer } type HTREE struct { @@ -52,7 +52,7 @@ type HSCROLLBOX struct { hwnd unsafe.Pointer } -type HMENU struct { +type HMENUITEM struct { hwnd unsafe.Pointer } type HLISTBOX struct { @@ -76,10 +76,22 @@ type HCALENDAR struct { hwnd unsafe.Pointer } +type HBITMAP struct { + hwnd unsafe.Pointer +} +type HSPLITBAR struct { + hwnd unsafe.Pointer +} type HTREEITEM struct { htreeitem unsafe.Pointer htree HANDLE } +type HCONTINS struct { + ptr unsafe.Pointer + rowcount int + hcont HANDLE + filesystem bool +} type HICN unsafe.Pointer type HTIMER struct { tid C.int @@ -123,6 +135,7 @@ var NOHPIXMAP HPIXMAP var NOHMENUI HMENUI var NOMENU HMENUI +var NOHTREEITEM HTREEITEM var NOHICN HICN = nil // Import as much as we can from C @@ -399,6 +412,10 @@ return POINTER(handle.GetHandle()); } +func HNOTEPAGE_TO_UINT(handle HNOTEPAGE) uint { + return uint(handle.pageid); +} + func (window HWND) GetHandle() unsafe.Pointer { return window.hwnd; } @@ -407,7 +424,7 @@ return window.hwnd; } -func (window HGENERIC) GetHandle() unsafe.Pointer { +func (window HTEXT) GetHandle() unsafe.Pointer { return window.hwnd; } @@ -443,7 +460,7 @@ return window.hwnd; } -func (window HMENU) GetHandle() unsafe.Pointer { +func (window HMENUITEM) GetHandle() unsafe.Pointer { return window.hwnd; } @@ -475,6 +492,22 @@ return window.hwnd; } +func (window HBITMAP) GetHandle() unsafe.Pointer { + return window.hwnd; +} + +func (window HSPLITBAR) GetHandle() unsafe.Pointer { + return window.hwnd; +} + +func (treeitem HTREEITEM) GetHandle() unsafe.Pointer { + return treeitem.htreeitem; +} + +func (contins HCONTINS) GetHandle() unsafe.Pointer { + return contins.ptr; +} + func Init(newthread int) int { if len(os.Args) > 0 { var argc C.int = C.int(len(os.Args)); @@ -697,8 +730,8 @@ C.go_window_set_tooltip(handle.GetHandle(), cbubbletext); } -func Window_redraw(handle HWND) { - C.go_window_redraw(unsafe.Pointer(handle.hwnd)); +func Window_redraw(handle HANDLE) { + C.go_window_redraw(handle.GetHandle()); } func (window HWND) Redraw() { @@ -840,8 +873,8 @@ C.dw_main_sleep(C.int(milliseconds)); } -func Box_new(btype int, pad int) HWND { - return HWND{C.go_box_new(C.int(btype), C.int(pad))}; +func Box_new(btype int, pad int) HBOX { + return HBOX{C.go_box_new(C.int(btype), C.int(pad))}; } func Box_pack_at_index(box HANDLE, item HANDLE, index int, width int, height int, hsize int, vsize int, pad int) { @@ -884,18 +917,18 @@ return Box_unpack_at_index(window, index); } -func Text_new(text string, id uint) HGENERIC { +func Text_new(text string, id uint) HTEXT { ctext := C.CString(text); defer C.free(unsafe.Pointer(ctext)); - return HGENERIC{C.go_text_new(ctext, C.ulong(id))}; -} - -func Status_text_new(text string, id uint) HGENERIC { + return HTEXT{C.go_text_new(ctext, C.ulong(id))}; +} + +func Status_text_new(text string, id uint) HTEXT { ctext := C.CString(text); defer C.free(unsafe.Pointer(ctext)); - return HGENERIC{C.go_status_text_new(ctext, C.ulong(id))}; + return HTEXT{C.go_status_text_new(ctext, C.ulong(id))}; } func Entryfield_new(text string, id uint) HENTRYFIELD { @@ -1025,14 +1058,14 @@ return Menubar_new(window); } -func Menu_append_item(menu HMENUI, title string, id uint, flags uint, end int, check int, submenu HMENUI) HMENU { +func Menu_append_item(menu HMENUI, title string, id uint, flags uint, end int, check int, submenu HMENUI) HMENUITEM { ctitle := C.CString(title); defer C.free(unsafe.Pointer(ctitle)); - return HMENU{C.go_menu_append_item(menu.hmenui, ctitle, C.ulong(id), C.ulong(flags), C.int(end), C.int(check), submenu.hmenui)}; -} - -func (menui HMENUI) AppendItem(title string, id uint, flags uint, end int, check int, submenu HMENUI) HMENU { + return HMENUITEM{C.go_menu_append_item(menu.hmenui, ctitle, C.ulong(id), C.ulong(flags), C.int(end), C.int(check), submenu.hmenui)}; +} + +func (menui HMENUI) AppendItem(title string, id uint, flags uint, end int, check int, submenu HMENUI) HMENUITEM { return Menu_append_item(menui, title, id, flags, end, check, submenu); } @@ -1504,10 +1537,18 @@ return HBOX{C.go_groupbox_new(btype, C.int(pad), ctitle)}; } +func GroupboxNew(btype C.int, pad int, title string) HBOX { + return Groupbox_new(btype, pad, title); +} + func Render_new(id uint) HRENDER { return HRENDER{C.go_render_new(C.ulong(id))}; } +func RenderNew(id uint) HRENDER { + return Render_new(id); +} + func Font_choose(currfont string) string { ccurrfont := C.CString(currfont); defer C.free(unsafe.Pointer(ccurrfont)); @@ -1530,13 +1571,13 @@ Font_set_default(fontname); } -func Font_text_extents_get(handle HWND, pixmap HPIXMAP, text string) (int, int) { +func Font_text_extents_get(handle HANDLE, pixmap HPIXMAP, text string) (int, int) { var width, height C.int; ctext := C.CString(text); defer C.free(unsafe.Pointer(ctext)); - C.go_font_text_extents_get(unsafe.Pointer(handle.hwnd), unsafe.Pointer(pixmap.hpixmap), ctext, &width, &height); + C.go_font_text_extents_get(handle.GetHandle(), unsafe.Pointer(pixmap.hpixmap), ctext, &width, &height); return int(width), int(height); } @@ -1579,12 +1620,12 @@ return Pixmap_grab(window, id); } -func Pixmap_bitblt(dest HWND, destp HPIXMAP, xdest int, ydest int, width int, height int, src HWND, srcp HPIXMAP, xsrc int, ysrc int) { - C.go_pixmap_bitblt(unsafe.Pointer(dest.hwnd), unsafe.Pointer(destp.hpixmap), C.int(xdest), C.int(ydest), C.int(width), C.int(height), unsafe.Pointer(src.hwnd), unsafe.Pointer(srcp.hpixmap), C.int(xsrc), C.int(ysrc)); -} - -func Pixmap_stretch_bitblt(dest HWND, destp HPIXMAP, xdest int, ydest int, width int, height int, src HWND, srcp HPIXMAP, xsrc int, ysrc int, srcwidth int, srcheight int) int { - return int(C.go_pixmap_stretch_bitblt(unsafe.Pointer(dest.hwnd), unsafe.Pointer(destp.hpixmap), C.int(xdest), C.int(ydest), C.int(width), C.int(height), unsafe.Pointer(src.hwnd), unsafe.Pointer(srcp.hpixmap), C.int(xsrc), C.int(ysrc), C.int(srcwidth), C.int(srcheight))); +func Pixmap_bitblt(dest HANDLE, destp HPIXMAP, xdest int, ydest int, width int, height int, src HANDLE, srcp HPIXMAP, xsrc int, ysrc int) { + C.go_pixmap_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)); +} + +func Pixmap_stretch_bitblt(dest HANDLE, destp HPIXMAP, xdest int, ydest int, width int, height int, src HANDLE, srcp HPIXMAP, xsrc int, ysrc int, srcwidth int, srcheight int) int { + 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 { @@ -1662,8 +1703,8 @@ return Pixmap_height(pixmap); } -func Draw_point(handle HWND, pixmap HPIXMAP, x int, y int) { - C.go_draw_point(unsafe.Pointer(handle.hwnd), unsafe.Pointer(pixmap.hpixmap), C.int(x), C.int(y)); +func Draw_point(handle HANDLE, pixmap HPIXMAP, x int, y int) { + C.go_draw_point(handle.GetHandle(), unsafe.Pointer(pixmap.hpixmap), C.int(x), C.int(y)); } func (window HWND) DrawPoint(x int, y int) { @@ -1674,8 +1715,8 @@ Draw_point(NOHWND, pixmap, x, y); } -func Draw_line(handle HWND, pixmap HPIXMAP, x1 int, y1 int, x2 int, y2 int) { - C.go_draw_line(unsafe.Pointer(handle.hwnd), unsafe.Pointer(pixmap.hpixmap), C.int(x1), C.int(y1), C.int(x2), C.int(y2)); +func Draw_line(handle HANDLE, pixmap HPIXMAP, x1 int, y1 int, x2 int, y2 int) { + 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) { @@ -1686,7 +1727,7 @@ Draw_line(NOHWND, pixmap, x1, y1, x2, y2); } -func Draw_polygon(handle HWND, pixmap HPIXMAP, flags int, x []int, y []int) { +func Draw_polygon(handle HANDLE, pixmap HPIXMAP, flags int, x []int, y []int) { count := len(x); if len(y) < count { count = len(y); @@ -1700,7 +1741,7 @@ xHeader := (*reflect.SliceHeader)((unsafe.Pointer(&cx))); yHeader := (*reflect.SliceHeader)((unsafe.Pointer(&cy))); - C.go_draw_polygon(unsafe.Pointer(handle.hwnd), unsafe.Pointer(pixmap.hpixmap), C.int(flags), C.int(count), (*C.int)(unsafe.Pointer(xHeader.Data)), (*C.int)(unsafe.Pointer(yHeader.Data))); + 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) { @@ -1711,8 +1752,8 @@ Draw_polygon(NOHWND, pixmap, flags, x, y); } -func Draw_rect(handle HWND, pixmap HPIXMAP, fill int, x int, y int, width int, height int) { - C.go_draw_rect(unsafe.Pointer(handle.hwnd), unsafe.Pointer(pixmap.hpixmap), C.int(fill), C.int(x), C.int(y), C.int(width), C.int(height)); +func Draw_rect(handle HANDLE, pixmap HPIXMAP, fill int, x int, y int, width int, height int) { + 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) { @@ -1723,8 +1764,8 @@ Draw_rect(NOHWND, pixmap, fill, x, y, width, height); } -func Draw_arc(handle HWND, pixmap HPIXMAP, flags int, xorigin int, yorigin int, x1 int, y1 int, x2 int, y2 int) { - C.go_draw_arc(unsafe.Pointer(handle.hwnd), 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 Draw_arc(handle HANDLE, pixmap HPIXMAP, flags int, xorigin int, yorigin int, x1 int, y1 int, x2 int, y2 int) { + 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) { @@ -1735,11 +1776,11 @@ Draw_arc(NOHWND, pixmap, flags, xorigin, yorigin, x1, y1, x2, y2); } -func Draw_text(handle HWND, pixmap HPIXMAP, x int, y int, text string) { +func Draw_text(handle HANDLE, pixmap HPIXMAP, x int, y int, text string) { ctext := C.CString(text); defer C.free(unsafe.Pointer(ctext)); - C.go_draw_text(unsafe.Pointer(handle.hwnd), unsafe.Pointer(pixmap.hpixmap), C.int(x), C.int(y), ctext); + 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) { @@ -2087,66 +2128,150 @@ return Filesystem_setup(handle, flags, titles); } -func Container_alloc(handle HANDLE, rowcount int) POINTER { - return POINTER(C.go_container_alloc(handle.GetHandle(), C.int(rowcount))); -} - -func (handle HCONTAINER) Alloc(rowcount int) POINTER { - return Container_alloc(handle, rowcount); -} - -func Container_set_item(handle HANDLE, ptr POINTER, column int, row int, data unsafe.Pointer) { - C.go_container_set_item(handle.GetHandle(), unsafe.Pointer(ptr), C.int(column), C.int(row), data); -} - -func Container_set_item_ulong(handle HANDLE, ptr POINTER, column int, row int, val uint) { - C.go_container_set_item_ulong(handle.GetHandle(), unsafe.Pointer(ptr), C.int(column), C.int(row), C.ulong(val)); -} - -func Container_set_item_icon(handle HANDLE, ptr POINTER, column int, row int, icon HICN) { - C.go_container_set_item_icon(handle.GetHandle(), unsafe.Pointer(ptr), C.int(column), C.int(row), unsafe.Pointer(icon)); -} - -func Container_set_item_time(handle HANDLE, ptr POINTER, column int, row int, seconds int, minutes int, hours int) { - C.go_container_set_item_time(handle.GetHandle(), unsafe.Pointer(ptr), C.int(column), C.int(row), C.int(seconds), C.int(minutes), C.int(hours)); -} - -func Container_set_item_date(handle HANDLE, ptr POINTER, column int, row int, day int, month int, year int) { - C.go_container_set_item_date(handle.GetHandle(), unsafe.Pointer(ptr), C.int(column), C.int(row), C.int(day), C.int(month), C.int(year)); -} - -func Container_change_item(handle HANDLE, column int, row int, data unsafe.Pointer) { - C.go_container_change_item(handle.GetHandle(), C.int(column), C.int(row), data); +func Container_alloc(handle HANDLE, rowcount int) HCONTINS { + return HCONTINS{C.go_container_alloc(handle.GetHandle(), C.int(rowcount)), rowcount, handle, false}; +} + +func (handle HCONTAINER) Alloc(rowcount int) HCONTINS { + contins := Container_alloc(handle, rowcount); + contins.filesystem = handle.filesystem; + return contins; +} + +func Container_set_item(handle HANDLE, contins HCONTINS, column int, row int, data POINTER) { + C.go_container_set_item(handle.GetHandle(), contins.ptr, C.int(column), C.int(row), unsafe.Pointer(data)); +} + +func (handle HCONTINS) SetItem(column int, row int, data POINTER) { + if handle.filesystem == true { + Filesystem_set_item(handle.hcont, handle, column, row, data); + } + Container_set_item(handle.hcont, handle, column, row, data); +} + +func Container_set_item_ulong(handle HANDLE, contins HCONTINS, column int, row int, val uint) { + C.go_container_set_item_ulong(handle.GetHandle(), contins.ptr, C.int(column), C.int(row), C.ulong(val)); +} + +func (handle HCONTINS) SetItemULong(column int, row int, val uint) { + if handle.filesystem == true { + Filesystem_set_item_ulong(handle.hcont, handle, column, row, val); + } + Container_set_item_ulong(handle.hcont, handle, column, row, val); +} + +func Container_set_item_icon(handle HANDLE, contins HCONTINS, column int, row int, icon HICN) { + C.go_container_set_item_icon(handle.GetHandle(), contins.ptr, C.int(column), C.int(row), unsafe.Pointer(icon)); +} + +func (handle HCONTINS) SetItemIcon(column int, row int, icon HICN) { + if handle.filesystem == true { + Filesystem_set_item_icon(handle.hcont, handle, column, row, icon); + } + Container_set_item_icon(handle.hcont, handle, column, row, icon); +} + +func Container_set_item_time(handle HANDLE, contins HCONTINS, column int, row int, seconds int, minutes int, hours int) { + C.go_container_set_item_time(handle.GetHandle(), contins.ptr, C.int(column), C.int(row), C.int(seconds), C.int(minutes), C.int(hours)); +} + +func (handle HCONTINS) SetItemTime(column int, row int, seconds int, minutes int, hours int) { + if handle.filesystem == true { + Filesystem_set_item_time(handle.hcont, handle, column, row, seconds, minutes, hours); + } + Container_set_item_time(handle.hcont, handle, column, row, seconds, minutes, hours); +} + +func Container_set_item_date(handle HANDLE, contins HCONTINS, column int, row int, day int, month int, year int) { + C.go_container_set_item_date(handle.GetHandle(), contins.ptr, C.int(column), C.int(row), C.int(day), C.int(month), C.int(year)); +} + +func (handle HCONTINS) SetItemDate(column int, row int, day int, month int, year int) { + if handle.filesystem == true { + Filesystem_set_item_date(handle.hcont, handle, column, row, day, month, year); + } + Container_set_item_date(handle.hcont, handle, column, row, day, month, year); +} + +func Container_change_item(handle HANDLE, column int, row int, data POINTER) { + C.go_container_change_item(handle.GetHandle(), C.int(column), C.int(row), unsafe.Pointer(data)); +} + +func (handle HCONTAINER) ChangeItem(column int, row int, data POINTER) { + if handle.filesystem == true { + Filesystem_change_item(handle, column, row, data); + } + Container_change_item(handle, column, row, data); } func Container_change_item_ulong(handle HANDLE, column int, row int, val uint) { C.go_container_change_item_ulong(handle.GetHandle(), C.int(column), C.int(row), C.ulong(val)); } +func (handle HCONTAINER) ChangeItemULong(column int, row int, val uint) { + if handle.filesystem == true { + Filesystem_change_item_ulong(handle, column, row, val); + } + Container_change_item_ulong(handle, column, row, val); +} + func Container_change_item_icon(handle HANDLE, column int, row int, icon HICN) { C.go_container_change_item_icon(handle.GetHandle(), C.int(column), C.int(row), unsafe.Pointer(icon)); } +func (handle HCONTAINER) ChangeItemIcon(column int, row int, icon HICN) { + if handle.filesystem == true { + Filesystem_change_item_icon(handle, column, row, icon); + } + Container_change_item_icon(handle, column, row, icon); +} + func Container_change_item_time(handle HANDLE, column int, row int, seconds int, minutes int, hours int) { C.go_container_change_item_time(handle.GetHandle(), C.int(column), C.int(row), C.int(seconds), C.int(minutes), C.int(hours)); } +func (handle HCONTAINER) ChangeItemTime(column int, row int, seconds int, minutes int, hours int) { + if handle.filesystem == true { + Filesystem_change_item_time(handle, column, row, seconds, minutes, hours); + } + Container_change_item_time(handle, column, row, seconds, minutes, hours); +} + func Container_change_item_date(handle HANDLE, column int, row int, day int, month int, year int) { C.go_container_change_item_date(handle.GetHandle(), C.int(column), C.int(row), C.int(day), C.int(month), C.int(year)); } +func (handle HCONTAINER) ChangeItemDate(column int, row int, day int, month int, year int) { + if handle.filesystem == true { + Filesystem_change_item_date(handle, column, row, day, month, year); + } + Container_change_item_date(handle, column, row, day, month, year); +} + func Container_set_column_width(handle HANDLE, column int, width int) { C.go_container_set_column_width(handle.GetHandle(), C.int(column), C.int(width)); } -func Container_set_row_title(ptr POINTER, row int, title string) { +func (handle HCONTAINER) SetColumnWidth(column int, width int) { + Container_set_column_width(handle, column, width); +} + +func Container_set_row_title(contins HCONTINS, row int, title string) { ctitle := C.CString(title); - C.dw_container_set_row_title(unsafe.Pointer(ptr), C.int(row), ctitle); + C.dw_container_set_row_title(contins.ptr, C.int(row), ctitle); /* TODO: Probably need to have a way to free this or leak */ } -func Container_set_row_data(ptr POINTER, row int, data POINTER) { - C.dw_container_set_row_title(unsafe.Pointer(ptr), C.int(row), (*C.char)(data)); +func (handle HCONTINS) SetRowTitle(row int, title string) { + Container_set_row_title(handle, row, title); +} + +func Container_set_row_data(contins HCONTINS, row int, data POINTER) { + C.dw_container_set_row_title(contins.ptr, C.int(row), (*C.char)(data)); +} + +func (handle HCONTINS) SetRowData(row int, data POINTER) { + Container_set_row_data(handle, row, data); } func Container_change_row_title(handle HANDLE, row int, title string) { @@ -2154,22 +2279,44 @@ C.go_container_change_row_title(handle.GetHandle(), C.int(row), ctitle); } +func (handle HCONTAINER) ChangeRowTitle(row int, title string) { + Container_change_row_title(handle, row, title); +} + func Container_change_row_data(handle HANDLE, row int, data unsafe.Pointer) { C.go_container_change_row_data(handle.GetHandle(), C.int(row), data); } -func Container_insert(handle HANDLE, ptr POINTER, rowcount int) { - C.go_container_insert(handle.GetHandle(), unsafe.Pointer(ptr), C.int(rowcount)); +func (handle HCONTAINER) ChangeRowData(row int, data POINTER) { + Container_change_row_data(handle, row, unsafe.Pointer(data)); +} + +func Container_insert(handle HANDLE, contins HCONTINS, rowcount int) { + C.go_container_insert(handle.GetHandle(), contins.ptr, C.int(rowcount)); + contins.ptr = nil; + contins.rowcount = 0; +} + +func (handle HCONTINS) Insert() { + Container_insert(handle.hcont, handle, handle.rowcount); } func Container_clear(handle HANDLE, redraw int) { C.go_container_clear(handle.GetHandle(), C.int(redraw)); } +func (handle HCONTAINER) Clear(redraw int) { + Container_clear(handle, redraw); +} + func Container_delete(handle HANDLE, rowcount int) { C.go_container_delete(handle.GetHandle(), C.int(rowcount)); } +func (handle HCONTAINER) Delete(rowcount int) { + Container_delete(handle, rowcount); +} + func Container_query_start(handle HANDLE, flags uint) string { cresult := C.go_container_query_start(handle.GetHandle(), C.ulong(flags)); result := C.GoString(cresult); @@ -2177,6 +2324,10 @@ return result; } +func (handle HCONTAINER) QueryStart(flags uint) string { + return Container_query_start(handle, flags); +} + func Container_query_next(handle HANDLE, flags uint) string { cresult := C.go_container_query_next(handle.GetHandle(), C.ulong(flags)); result := C.GoString(cresult); @@ -2184,10 +2335,18 @@ return result; } +func (handle HCONTAINER) QueryNext(flags uint) string { + return Container_query_next(handle, flags); +} + func Container_scroll(handle HANDLE, direction int, rows int) { C.go_container_scroll(handle.GetHandle(), C.int(direction), C.long(rows)); } +func (handle HCONTAINER) Scroll(direction int, rows int) { + Container_scroll(handle, direction, rows); +} + func Container_cursor(handle HANDLE, text string) { ctext := C.CString(text); defer C.free(unsafe.Pointer(ctext)); @@ -2195,6 +2354,10 @@ C.go_container_cursor(handle.GetHandle(), ctext); } +func (handle HCONTAINER) Cursor(text string) { + Container_cursor(handle, text); +} + func Container_delete_row(handle HANDLE, text string) { ctext := C.CString(text); defer C.free(unsafe.Pointer(ctext)); @@ -2202,18 +2365,37 @@ C.go_container_delete_row(handle.GetHandle(), ctext); } +func (handle HCONTAINER) DeleteRow(text string) { + Container_delete_row(handle, text); +} + func Container_optimize(handle HANDLE) { C.go_container_optimize(handle.GetHandle()); } +func (handle HCONTAINER) Optimize() { + Container_optimize(handle); +} + func Container_set_stripe(handle HANDLE, oddcolor COLOR, evencolor COLOR) { C.go_container_set_stripe(handle.GetHandle(), C.ulong(oddcolor), C.ulong(evencolor)); } +func (handle HCONTAINER) SetStripe(oddcolor COLOR, evencolor COLOR) { + Container_set_stripe(handle, oddcolor, evencolor); +} + func Container_get_column_type(handle HANDLE, column int) uint { return uint(C.go_container_get_column_type(handle.GetHandle(), C.int(column))); } +func (handle HCONTAINER) GetColumnType(column int) uint { + if handle.filesystem == true { + return Filesystem_get_column_type(handle, column); + } + return Container_get_column_type(handle, column); +} + func Filesystem_get_column_type(handle HANDLE, column int) uint { return uint(C.go_filesystem_get_column_type(handle.GetHandle(), C.int(column))); } @@ -2225,35 +2407,41 @@ C.go_filesystem_set_column_title(handle.GetHandle(), ctitle); } -func Filesystem_set_item(handle HANDLE, ptr POINTER, column int, row int, data unsafe.Pointer) { - C.go_filesystem_set_item(handle.GetHandle(), unsafe.Pointer(ptr), C.int(column), C.int(row), data); -} - -func Filesystem_set_item_ulong(handle HANDLE, ptr POINTER, column int, row int, val uint) { - C.go_filesystem_set_item_ulong(handle.GetHandle(), unsafe.Pointer(ptr), C.int(column), C.int(row), C.ulong(val)); -} - -func Filesystem_set_item_icon(handle HANDLE, ptr POINTER, column int, row int, icon HICN) { - C.go_filesystem_set_item_icon(handle.GetHandle(), unsafe.Pointer(ptr), C.int(column), C.int(row), unsafe.Pointer(icon)); -} - -func Filesystem_set_item_time(handle HANDLE, ptr POINTER, column int, row int, seconds int, minutes int, hours int) { - C.go_filesystem_set_item_time(handle.GetHandle(), unsafe.Pointer(ptr), C.int(column), C.int(row), C.int(seconds), C.int(minutes), C.int(hours)); -} - -func Filesystem_set_item_date(handle HANDLE, ptr POINTER, column int, row int, day int, month int, year int) { - C.go_filesystem_set_item_date(handle.GetHandle(), unsafe.Pointer(ptr), C.int(column), C.int(row), C.int(day), C.int(month), C.int(year)); -} - -func Filesystem_set_file(handle HANDLE, ptr POINTER, row int, filename string, icon HICN) { +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)); +} + +func Filesystem_set_item_ulong(handle HANDLE, contins HCONTINS, column int, row int, val uint) { + C.go_filesystem_set_item_ulong(handle.GetHandle(), contins.ptr, C.int(column), C.int(row), C.ulong(val)); +} + +func Filesystem_set_item_icon(handle HANDLE, contins HCONTINS, column int, row int, icon HICN) { + C.go_filesystem_set_item_icon(handle.GetHandle(), contins.ptr, C.int(column), C.int(row), unsafe.Pointer(icon)); +} + +func Filesystem_set_item_time(handle HANDLE, contins HCONTINS, column int, row int, seconds int, minutes int, hours int) { + C.go_filesystem_set_item_time(handle.GetHandle(), contins.ptr, C.int(column), C.int(row), C.int(seconds), C.int(minutes), C.int(hours)); +} + +func Filesystem_set_item_date(handle HANDLE, contins HCONTINS, column int, row int, day int, month int, year int) { + C.go_filesystem_set_item_date(handle.GetHandle(), contins.ptr, C.int(column), C.int(row), C.int(day), C.int(month), C.int(year)); +} + +func Filesystem_set_file(handle HANDLE, contins HCONTINS, row int, filename string, icon HICN) { cfilename := C.CString(filename); defer C.free(unsafe.Pointer(cfilename)); - C.go_filesystem_set_file(handle.GetHandle(), unsafe.Pointer(ptr), C.int(row), cfilename, unsafe.Pointer(icon)); -} - -func Filesystem_change_item(handle HANDLE, column int, row int, data unsafe.Pointer) { - C.go_filesystem_change_item(handle.GetHandle(), C.int(column), C.int(row), data); + C.go_filesystem_set_file(handle.GetHandle(), contins.ptr, C.int(row), cfilename, unsafe.Pointer(icon)); +} + +func (handle HCONTINS) SetFile(row int, filename string, icon HICN) { + if handle.filesystem == true { + Filesystem_set_file(handle.hcont, handle, row, filename, icon); + } +} + +func Filesystem_change_item(handle HANDLE, column int, row int, data POINTER) { + C.go_filesystem_change_item(handle.GetHandle(), C.int(column), C.int(row), unsafe.Pointer(data)); } func Filesystem_change_item_ulong(handle HANDLE, column int, row int, val uint) { @@ -2279,14 +2467,28 @@ C.go_filesystem_change_file(handle.GetHandle(), C.int(row), cfilename, unsafe.Pointer(icon)); } +func (handle HCONTAINER) ChangeFile(row int, filename string, icon HICN) { + if handle.filesystem == true { + Filesystem_change_file(handle, row, filename, icon); + } +} + func Calendar_new(id uint) HCALENDAR { return HCALENDAR{C.go_calendar_new(C.ulong(id))}; } +func CalendarNew(id uint) HCALENDAR { + return Calendar_new(id); +} + func Calendar_set_date(handle HANDLE, year uint, month uint, day uint) { C.go_calendar_set_date(handle.GetHandle(), C.uint(year), C.uint(month), C.uint(day)); } +func (handle HCALENDAR) SetDate(year uint, month uint, day uint) { + Calendar_set_date(handle, year, month, day); +} + func Calendar_get_date(handle HANDLE) (uint, uint, uint) { var year, month, day C.uint; @@ -2294,44 +2496,71 @@ return uint(year), uint(month), uint(day); } -func Bitmap_new(id uint) HWND { - return HWND{C.go_bitmap_new(C.ulong(id))}; -} - -func Bitmapbutton_new(text string, id uint) HWND { +func (handle HCALENDAR) GetDate() (uint, uint, uint) { + return Calendar_get_date(handle); +} + +func Bitmap_new(id uint) HBITMAP { + return HBITMAP{C.go_bitmap_new(C.ulong(id))}; +} + +func BitmapNew(id uint) HBITMAP { + return Bitmap_new(id); +} + +func Bitmapbutton_new(text string, id uint) HBUTTON { ctext := C.CString(text); defer C.free(unsafe.Pointer(ctext)); - return HWND{C.go_bitmapbutton_new(ctext, C.ulong(id))}; -} - -func Bitmapbutton_new_from_file(text string, id uint, filename string) HWND { + return HBUTTON{C.go_bitmapbutton_new(ctext, C.ulong(id))}; +} + +func BitmapButtonNew(text string, id uint) HBUTTON { + return Bitmapbutton_new(text, id); +} + +func Bitmapbutton_new_from_file(text string, id uint, filename string) HBUTTON { ctext := C.CString(text); defer C.free(unsafe.Pointer(ctext)); cfilename := C.CString(filename); defer C.free(unsafe.Pointer(cfilename)); - return HWND{C.go_bitmapbutton_new_from_file(ctext, C.ulong(id), cfilename)}; -} - -func Splitbar_new(btype int, topleft HWND, bottomright HWND, id uint) HWND { - return HWND{C.go_splitbar_new(C.int(btype), unsafe.Pointer(topleft.hwnd), unsafe.Pointer(bottomright.hwnd), C.ulong(id))}; -} - -func Splitbar_set(handle HWND, position float32) { - C.go_splitbar_set(unsafe.Pointer(handle.hwnd), C.float(position)); -} - -func Splitbar_get(handle HWND) float32 { - return float32(C.go_splitbar_get(unsafe.Pointer(handle.hwnd))); -} - -func Print_new(jobname string) HPRINT { + return HBUTTON{C.go_bitmapbutton_new_from_file(ctext, C.ulong(id), cfilename)}; +} + +func BitmapButtonNewFromFile(text string, id uint, filename string) HBUTTON { + return Bitmapbutton_new_from_file(text, id, filename); +} + +func Splitbar_new(btype int, topleft HWND, bottomright HWND, id uint) HSPLITBAR { + return HSPLITBAR{C.go_splitbar_new(C.int(btype), unsafe.Pointer(topleft.hwnd), unsafe.Pointer(bottomright.hwnd), C.ulong(id))}; +} + +func SplitbarNew(btype int, topleft HWND, bottomright HWND, id uint) HSPLITBAR { + return Splitbar_new(btype, topleft, bottomright, id); +} + +func Splitbar_set(handle HANDLE, position float32) { + C.go_splitbar_set(handle.GetHandle(), C.float(position)); +} + +func (handle HSPLITBAR) Set(position float32) { + Splitbar_set(handle, position); +} + +func Splitbar_get(handle HANDLE) float32 { + return float32(C.go_splitbar_get(handle.GetHandle())); +} + +func (handle HSPLITBAR) Get() float32 { + return Splitbar_get(handle); +} + +func PrintNew(jobname string) HPRINT { return HPRINT{nil, jobname}; } -/* Classic version... */ -func Print_new2(jobname string, flags uint, pages uint, drawfunc SIGNAL_FUNC, drawdata POINTER) HPRINT { +func Print_new(jobname string, flags uint, pages uint, drawfunc SIGNAL_FUNC, drawdata POINTER) HPRINT { backs = append(backs, unsafe.Pointer(drawfunc)); cjobname := C.CString(jobname); defer C.free(unsafe.Pointer(cjobname)); @@ -2536,110 +2765,120 @@ //export go_int_callback_basic func go_int_callback_basic(pfunc unsafe.Pointer, window unsafe.Pointer, data unsafe.Pointer, flags C.int) C.int { if (flags & go_flags_no_data) == go_flags_no_data { - thisfunc := *(*func(HWND) int)(pfunc); + thisfunc := *(*func(HANDLE) int)(pfunc); return C.int(thisfunc(HWND{window})); } - thisfunc := *(*func(HWND, POINTER) int)(pfunc); + thisfunc := *(*func(HANDLE, POINTER) int)(pfunc); return C.int(thisfunc(HWND{window}, POINTER(data))); } //export go_int_callback_configure func go_int_callback_configure(pfunc unsafe.Pointer, window unsafe.Pointer, width C.int, height C.int, data unsafe.Pointer, flags C.int) C.int { if (flags & go_flags_no_data) == go_flags_no_data { - thisfunc := *(*func(HWND, int, int) C.int)(pfunc); + thisfunc := *(*func(HANDLE, int, int) C.int)(pfunc); return C.int(thisfunc(HWND{window}, int(width), int(height))); } - thisfunc := *(*func(HWND, int, int, POINTER) C.int)(pfunc); + thisfunc := *(*func(HANDLE, int, int, POINTER) C.int)(pfunc); return C.int(thisfunc(HWND{window}, int(width), int(height), POINTER(data))); } //export go_int_callback_keypress func go_int_callback_keypress(pfunc unsafe.Pointer, window unsafe.Pointer, ch C.char, vk C.int, state C.int, data unsafe.Pointer, utf8 *C.char, flags C.int) C.int { if (flags & go_flags_no_data) == go_flags_no_data { - thisfunc := *(*func(HWND, uint8, int, int, string) int)(pfunc); + thisfunc := *(*func(HANDLE, uint8, int, int, string) int)(pfunc); return C.int(thisfunc(HWND{window}, uint8(ch), int(vk), int(state), C.GoString(utf8))); } - thisfunc := *(*func(HWND, uint8, int, int, POINTER, string) int)(pfunc); + thisfunc := *(*func(HANDLE, uint8, int, int, POINTER, string) int)(pfunc); return C.int(thisfunc(HWND{window}, uint8(ch), int(vk), int(state), POINTER(data), C.GoString(utf8))); } //export go_int_callback_mouse func go_int_callback_mouse(pfunc unsafe.Pointer, window unsafe.Pointer, x C.int, y C.int, mask C.int, data unsafe.Pointer, flags C.int) C.int { if (flags & go_flags_no_data) == go_flags_no_data { - thisfunc := *(*func(HWND, int, int, int) int)(pfunc); + thisfunc := *(*func(HANDLE, int, int, int) int)(pfunc); return C.int(thisfunc(HWND{window}, int(x), int(y), int(mask))); } - thisfunc := *(*func(HWND, int, int, int, POINTER) int)(pfunc); + thisfunc := *(*func(HANDLE, int, int, int, POINTER) int)(pfunc); return C.int(thisfunc(HWND{window}, int(x), int(y), int(mask), POINTER(data))); } //export go_int_callback_expose func go_int_callback_expose(pfunc unsafe.Pointer, window unsafe.Pointer, x C.int, y C.int, width C.int, height C.int, data unsafe.Pointer, flags C.int) C.int { if (flags & go_flags_no_data) == go_flags_no_data { - thisfunc := *(*func(HWND, int, int, int, int) int)(pfunc); + thisfunc := *(*func(HANDLE, int, int, int, int) int)(pfunc); return C.int(thisfunc(HWND{window}, int(x), int(y), int(width), int(height))); } - thisfunc := *(*func(HWND, int, int, int, int, POINTER) int)(pfunc); + thisfunc := *(*func(HANDLE, int, int, int, int, POINTER) int)(pfunc); return C.int(thisfunc(HWND{window}, int(x), int(y), int(width), int(height), POINTER(data))); } //export go_int_callback_string func go_int_callback_string(pfunc unsafe.Pointer, window unsafe.Pointer, str *C.char, data unsafe.Pointer, flags C.int) C.int { if (flags & go_flags_no_data) == go_flags_no_data { - thisfunc := *(*func(HWND, string) int)(pfunc); + thisfunc := *(*func(HANDLE, string) int)(pfunc); return C.int(thisfunc(HWND{window}, C.GoString(str))); } - thisfunc := *(*func(HWND, string, POINTER) int)(pfunc); + thisfunc := *(*func(HANDLE, string, POINTER) int)(pfunc); return C.int(thisfunc(HWND{window}, C.GoString(str), POINTER(data))); } //export go_int_callback_item_context func go_int_callback_item_context(pfunc unsafe.Pointer, window unsafe.Pointer, text *C.char, x C.int, y C.int, data unsafe.Pointer, itemdata unsafe.Pointer, flags C.int) C.int { if (flags & go_flags_no_data) == go_flags_no_data { - thisfunc := *(*func(HWND, string, int, int, POINTER) int)(pfunc); + thisfunc := *(*func(HANDLE, string, int, int, POINTER) int)(pfunc); return C.int(thisfunc(HWND{window}, C.GoString(text), int(x), int(y), POINTER(itemdata))); } - thisfunc := *(*func(HWND, string, int, int, POINTER, POINTER) int)(pfunc); + thisfunc := *(*func(HANDLE, string, int, int, POINTER, POINTER) int)(pfunc); return C.int(thisfunc(HWND{window}, C.GoString(text), int(x), int(y), POINTER(data), POINTER(itemdata))); } //export go_int_callback_item_select func go_int_callback_item_select(pfunc unsafe.Pointer, window unsafe.Pointer, item unsafe.Pointer, text *C.char, data unsafe.Pointer, itemdata unsafe.Pointer, flags C.int) C.int { if (flags & go_flags_no_data) == go_flags_no_data { - thisfunc := *(*func(HWND, HTREEITEM, string, POINTER) int)(pfunc); + thisfunc := *(*func(HANDLE, HTREEITEM, string, POINTER) int)(pfunc); return C.int(thisfunc(HWND{window}, HTREEITEM{item, HWND{window}}, C.GoString(text), POINTER(itemdata))); } - thisfunc := *(*func(HWND, HTREEITEM, string, POINTER, POINTER) int)(pfunc); + thisfunc := *(*func(HANDLE, HTREEITEM, string, POINTER, POINTER) int)(pfunc); return C.int(thisfunc(HWND{window}, HTREEITEM{item, HWND{window}}, C.GoString(text), POINTER(data), POINTER(itemdata))); } //export go_int_callback_numeric func go_int_callback_numeric(pfunc unsafe.Pointer, window unsafe.Pointer, val C.int, data unsafe.Pointer, flags C.int) C.int { if (flags & go_flags_no_data) == go_flags_no_data { - thisfunc := *(*func(HWND, int) int)(pfunc); + thisfunc := *(*func(HANDLE, int) int)(pfunc); return C.int(thisfunc(HWND{window}, int(val))); } - thisfunc := *(*func(HWND, int, POINTER) int)(pfunc); + thisfunc := *(*func(HANDLE, int, POINTER) int)(pfunc); return C.int(thisfunc(HWND{window}, int(val), POINTER(data))); } //export go_int_callback_ulong func go_int_callback_ulong(pfunc unsafe.Pointer, window unsafe.Pointer, val C.ulong, data unsafe.Pointer, flags C.int) C.int { if (flags & go_flags_no_data) == go_flags_no_data { - thisfunc := *(*func(HWND, uint) int)(pfunc); + thisfunc := *(*func(HANDLE, uint) int)(pfunc); return C.int(thisfunc(HWND{window}, uint(val))); } - thisfunc := *(*func(HWND, uint, POINTER) int)(pfunc); + thisfunc := *(*func(HANDLE, uint, POINTER) int)(pfunc); return C.int(thisfunc(HWND{window}, uint(val), POINTER(data))); } +//export go_int_callback_notepage +func go_int_callback_notepage(pfunc unsafe.Pointer, window unsafe.Pointer, val C.ulong, data unsafe.Pointer, flags C.int) C.int { + if (flags & go_flags_no_data) == go_flags_no_data { + thisfunc := *(*func(HANDLE, HNOTEPAGE) int)(pfunc); + return C.int(thisfunc(HWND{window}, HNOTEPAGE{val, HWND{window}})); + } + thisfunc := *(*func(HANDLE, HNOTEPAGE, POINTER) int)(pfunc); + return C.int(thisfunc(HWND{window}, HNOTEPAGE{val, HWND{window}}, POINTER(data))); +} + //export go_int_callback_tree func go_int_callback_tree(pfunc unsafe.Pointer, window unsafe.Pointer, tree unsafe.Pointer, data unsafe.Pointer, flags C.int) C.int { if (flags & go_flags_no_data) == go_flags_no_data { - thisfunc := *(*func(HWND, HTREEITEM) int)(pfunc); + thisfunc := *(*func(HANDLE, HTREEITEM) int)(pfunc); return C.int(thisfunc(HWND{window}, HTREEITEM{tree, HWND{window}})); } - thisfunc := *(*func(HWND, HTREEITEM, POINTER) int)(pfunc); + thisfunc := *(*func(HANDLE, HTREEITEM, POINTER) int)(pfunc); return C.int(thisfunc(HWND{window}, HTREEITEM{tree, HWND{window}}, POINTER(data))); }
--- a/src/dw/dwglue.c Thu Mar 14 12:58:49 2013 -0500 +++ b/src/dw/dwglue.c Thu Mar 14 19:30:41 2013 -0500 @@ -1101,6 +1101,7 @@ extern int go_int_callback_item_select(void *pfunc, void *window, void *item, char *text, void *data, void *itemdata, int flags); extern int go_int_callback_numeric(void *pfunc, void* window, int val, void *data, int flags); extern int go_int_callback_ulong(void *pfunc, void* window, unsigned long val, void *data, int flags); +extern int go_int_callback_notepage(void *pfunc, void* window, unsigned long val, void *data, int flags); extern int go_int_callback_tree(void *pfunc, void* window, void *item, void *data, int flags); extern int go_int_callback_timer(void *pfunc, void *data, int flags); extern int go_int_callback_print(void *pfunc, void *print, void *pixmap, int page_num, void *data, int flags); @@ -1196,7 +1197,7 @@ return 0; } -static int DWSIGNAL go_callback_ulong(HWND window, unsigned long val, void *data) +/*static int DWSIGNAL go_callback_ulong(HWND window, unsigned long val, void *data) { if(data) { @@ -1204,6 +1205,16 @@ return go_int_callback_ulong(param[0], (void *)window, val, param[1], DW_POINTER_TO_INT(param[2])); } return 0; +}*/ + +static int DWSIGNAL go_callback_notepage(HWND window, unsigned long val, void *data) +{ + if(data) + { + void **param = (void **)data; + return go_int_callback_notepage(param[0], (void *)window, val, param[1], DW_POINTER_TO_INT(param[2])); + } + return 0; } static int DWSIGNAL go_callback_tree(HWND window, HTREEITEM tree, void *data) @@ -1323,7 +1334,7 @@ } else if(strcmp(signame, DW_SIGNAL_SWITCH_PAGE) == 0) { - func = (void *)go_callback_ulong; + func = (void *)go_callback_notepage; } else if(strcmp(signame, DW_SIGNAL_TREE_EXPAND) == 0) {
--- a/src/dwib/dwib.go Thu Mar 14 12:58:49 2013 -0500 +++ b/src/dwib/dwib.go Thu Mar 14 19:30:41 2013 -0500 @@ -15,11 +15,11 @@ type DWIB unsafe.Pointer -func Load(handle DWIB, name string) dw.HWND { +func Load(handle DWIB, name string) dw.HANDLE { cname := C.CString(name); defer C.free(unsafe.Pointer(cname)); - return dw.POINTER_TO_HWND(dw.POINTER(C.goib_load(unsafe.Pointer(handle), cname))); + return dw.POINTER_TO_HANDLE(dw.POINTER(C.goib_load(unsafe.Pointer(handle), cname))); } func Load_at_index(handle DWIB, name string, dataname string, window dw.HWND, box dw.HWND, index int) int { @@ -28,11 +28,11 @@ cdataname := C.CString(dataname); defer C.free(unsafe.Pointer(cdataname)); - return int(C.goib_load_at_index(unsafe.Pointer(handle), cname, cdataname, unsafe.Pointer(dw.HWND_TO_POINTER(window)), unsafe.Pointer(dw.HWND_TO_POINTER(box)), C.int(index))); + return int(C.goib_load_at_index(unsafe.Pointer(handle), cname, cdataname, unsafe.Pointer(dw.HANDLE_TO_POINTER(window)), unsafe.Pointer(dw.HANDLE_TO_POINTER(box)), C.int(index))); } -func Show(handle dw.HWND) { - C.goib_show(unsafe.Pointer(dw.HWND_TO_POINTER(handle))); +func Show(handle dw.HANDLE) { + C.goib_show(unsafe.Pointer(dw.HANDLE_TO_POINTER(handle))); } func Open(filename string) DWIB { @@ -60,10 +60,10 @@ return int(C.goib_locale_set(cloc)); } -func Window_get_handle(handle dw.HWND, dataname string) dw.HWND { +func Window_get_handle(handle dw.HANDLE, dataname string) dw.HANDLE { cdataname := C.CString(dataname); defer C.free(unsafe.Pointer(cdataname)); - return dw.POINTER_TO_HWND(dw.POINTER(C.goib_window_get_handle(unsafe.Pointer(dw.HWND_TO_POINTER(handle)), cdataname))); + return dw.POINTER_TO_HANDLE(dw.POINTER(C.goib_window_get_handle(unsafe.Pointer(dw.HANDLE_TO_POINTER(handle)), cdataname))); }
--- a/src/dwtest/dwtest.go Thu Mar 14 12:58:49 2013 -0500 +++ b/src/dwtest/dwtest.go Thu Mar 14 19:30:41 2013 -0500 @@ -19,15 +19,25 @@ var FIXEDFONT = "10.monospace" +var mainwindow dw.HWND + // Page 1 -var notebookbox1, cursortogglebutton, mainwindow, noncheckable_menuitem, checkable_menuitem dw.HWND +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, textbox1, textbox2, status1, status2, vscrollbar, hscrollbar, rendcombo, imagexspin, imageyspin, imagestretchcheck dw.HWND +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 @@ -43,20 +53,30 @@ var max_linewidth = 0 // Page 3 -var notebookbox3, tree dw.HWND +var notebookbox3 dw.HBOX +var tree dw.HTREE // Page 4 -var notebookbox4, container_mle, container dw.HWND +var notebookbox4 dw.HBOX +var container_mle dw.HMLE +var container dw.HCONTAINER var mle_point = 0 // Page 5 -var notebookbox5, combobox1, combobox2, cal, spinbutton, slider, percent, buttonsbox, buttonboxperm dw.HWND +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, html dw.HWND +var notebookbox7 dw.HBOX +var html dw.HHTML // Page 8 -var notebookbox8, scrollbox dw.HWND +var notebookbox8 dw.HBOX +var scrollbox dw.HSCROLLBOX var MAX_WIDGETS = 20 var iteration = 0; @@ -114,26 +134,26 @@ } // Call back section -func exit_callback(window dw.HWND, data dw.POINTER) int { +func exit_callback(window dw.HANDLE, 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 TRUE; } -func switch_page_callback(window dw.HWND, page_num dw.HNOTEPAGE, itemdata dw.POINTER) int { - fmt.Printf("DW_SIGNAL_SWITCH_PAGE: PageNum: %d\n", uint(page_num)); +func switch_page_callback(window dw.HANDLE, page_num dw.HNOTEPAGE, itemdata dw.POINTER) int { + fmt.Printf("DW_SIGNAL_SWITCH_PAGE: PageNum: %d\n", dw.HNOTEPAGE_TO_UINT(page_num)); return FALSE; } -func menu_callback(window dw.HWND, data dw.POINTER) int { +func menu_callback(window dw.HANDLE, 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 FALSE; } -func menutoggle_callback(window dw.HWND, data dw.POINTER) int { +func menutoggle_callback(window dw.HANDLE, data dw.POINTER) int { if menu_enabled { dw.Window_set_style(checkable_menuitem, dw.MIS_DISABLED, dw.MIS_DISABLED); dw.Window_set_style(noncheckable_menuitem, dw.MIS_DISABLED, dw.MIS_DISABLED); @@ -146,7 +166,7 @@ return FALSE; } -func helpabout_callback(window dw.HWND, data dw.POINTER) int { +func helpabout_callback(window dw.HANDLE, data dw.POINTER) int { var env dw.Env; dw.Environment_query(&env); @@ -159,7 +179,7 @@ } // Page 1 Callbacks -func paste_clicked_callback(button dw.HWND, data dw.POINTER) int { +func paste_clicked_callback(button dw.HANDLE, data dw.POINTER) int { test := dw.Clipboard_get_text(); if len(test) > 0 { @@ -168,7 +188,7 @@ return TRUE; } -func copy_clicked_callback(button dw.HWND, data dw.POINTER) int { +func copy_clicked_callback(button dw.HANDLE, data dw.POINTER) int { test := dw.Window_get_text(copypastefield); if len(test) > 0 { @@ -178,7 +198,7 @@ return TRUE; } -func browse_file_callback(window dw.HWND, data dw.POINTER) int { +func browse_file_callback(window dw.HANDLE, data dw.POINTER) int { tmp := dw.File_browse("Pick a file", "dwtest.c", "c", dw.FILE_OPEN); if len(tmp) > 0 { current_file = tmp; @@ -192,18 +212,18 @@ return FALSE; } -func browse_folder_callback(window dw.HWND, data dw.POINTER) int { +func browse_folder_callback(window dw.HANDLE, data dw.POINTER) int { tmp := dw.File_browse("Pick a folder", ".", "c", dw.DIRECTORY_OPEN); fmt.Printf("Folder picked: %s\n", tmp); return FALSE; } -func colorchoose_callback(window dw.HWND, data dw.POINTER) int { +func colorchoose_callback(window dw.HANDLE, data dw.POINTER) int { current_color = dw.Color_choose(current_color); return FALSE; } -func cursortoggle_callback(window dw.HWND, data dw.POINTER) int { +func cursortoggle_callback(window dw.HANDLE, 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); @@ -216,7 +236,7 @@ return FALSE; } -func beep_callback(window dw.HWND, data dw.POINTER) int { +func beep_callback(window dw.HANDLE, data dw.POINTER) int { dw.Timer_disconnect(timerid); return TRUE; } @@ -230,7 +250,7 @@ } // Page 2 Callbacks -func motion_notify_event(window dw.HWND, x int, y int, buttonmask int, data dw.POINTER) int { +func motion_notify_event(window dw.HANDLE, x int, y int, buttonmask int, data dw.POINTER) int { var which = "button_press"; if(uintptr(data) > 0) { @@ -240,7 +260,7 @@ return FALSE; } -func show_window_callback(window dw.HWND, data dw.POINTER) int { +func show_window_callback(window dw.HANDLE, data dw.POINTER) int { thiswindow := dw.POINTER_TO_HANDLE(data); if thiswindow != dw.NOHWND { @@ -250,7 +270,7 @@ return TRUE; } -func context_menu_event(window dw.HWND, x int, y int, buttonmask int, data dw.POINTER) int { +func context_menu_event(window dw.HANDLE, x int, y int, buttonmask int, data dw.POINTER) int { hwndMenu := dw.Menu_new(0); menuitem := dw.Menu_append_item(hwndMenu, "~Quit", dw.MENU_POPUP, 0, TRUE, FALSE, dw.NOMENU); @@ -310,7 +330,7 @@ /* When hpma is not NULL we are printing.. so handle things differently */ func draw_shapes(direct int, hpma dw.HPIXMAP) { var hpm, pixmap dw.HPIXMAP = dw.NOHPIXMAP, dw.NOHPIXMAP - var window dw.HWND + var window dw.HRENDER if hpma != dw.NOHPIXMAP { hpm = hpma; } else { @@ -410,15 +430,15 @@ return TRUE; } -func print_callback(window dw.HWND, data dw.POINTER) int { - print := dw.Print_new2("DWTest Job", 0, 2, dw.SIGNAL_FUNC(&draw_page_func), nil); +func print_callback(window dw.HANDLE, data dw.POINTER) int { + print := dw.Print_new("DWTest Job", 0, 2, dw.SIGNAL_FUNC(&draw_page_func), nil); dw.Print_run(print, 0); return FALSE; } /* This gets called when a part of the graph needs to be repainted. */ -func text_expose(hwnd dw.HWND, x int, y int, width int, height int, data dw.POINTER) int { +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 @@ -442,7 +462,7 @@ } /* Handle size change of the main render window */ -func configure_event(hwnd dw.HWND, width int, height int, data dw.POINTER) int { +func configure_event(hwnd dw.HANDLE, width int, height int, data dw.POINTER) int { old1 := text1pm; old2 := text2pm; depth := dw.Color_depth_get(); @@ -471,12 +491,12 @@ return TRUE; } -func refresh_callback(window dw.HWND, data dw.POINTER) int { +func refresh_callback(window dw.HANDLE, data dw.POINTER) int { update_render(); return FALSE; } -func render_select_event_callback(window dw.HWND, index int, data dw.POINTER) int { +func render_select_event_callback(window dw.HANDLE, index int, data dw.POINTER) int { if index != render_type { if index == 2 { dw.Scrollbar_set_range(hscrollbar, uint(max_linewidth), uint(cols)); @@ -498,11 +518,11 @@ } /* Callback to handle user selection of the scrollbar position */ -func scrollbar_valuechanged_callback(hwnd dw.HWND, value int, data dw.POINTER) int { +func scrollbar_valuechanged_callback(hwnd dw.HANDLE, value int, data dw.POINTER) int { if data != nil { stext := dw.POINTER_TO_HANDLE(data); - if hwnd == vscrollbar { + if hwnd.GetHandle() == vscrollbar.GetHandle() { current_row = value; } else { current_col = value; @@ -614,7 +634,7 @@ return "none"; } -func keypress_callback(window dw.HWND, ch uint8, vk int, state int, data dw.POINTER, utf8 string) int { +func keypress_callback(window dw.HANDLE, ch uint8, vk int, state int, data dw.POINTER, utf8 string) int { var message string if ch != 0 { @@ -627,35 +647,35 @@ } // Page 3 and 4 Callbacks -func item_enter_cb(window dw.HWND, text string, data dw.POINTER) int { +func item_enter_cb(window dw.HANDLE, 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 FALSE; } -func item_context_cb(window dw.HWND, text string, x int, y int, data dw.POINTER, itemdata dw.POINTER) int { +func item_context_cb(window dw.HANDLE, 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 FALSE; } -func list_select_cb(window dw.HWND, item int, data dw.POINTER) int { +func list_select_cb(window dw.HANDLE, 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 FALSE; } -func item_select_cb(window dw.HWND, item dw.HTREEITEM, text string, data dw.POINTER, itemdata dw.POINTER) int { +func item_select_cb(window dw.HANDLE, 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), - uintptr(dw.POINTER(item)), text, uintptr(itemdata)); + dw.HANDLE_TO_UINTPTR(item), text, uintptr(itemdata)); dw.Window_set_text(dw.POINTER_TO_HANDLE(data), message); return FALSE; } -func container_select_cb(window dw.HWND, item dw.HTREEITEM, text string, data dw.POINTER, itemdata dw.POINTER) int { +func container_select_cb(window dw.HANDLE, 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), - uintptr(dw.POINTER(item)), text, uintptr(itemdata)); + dw.HANDLE_TO_UINTPTR(item), text, uintptr(itemdata)); dw.Window_set_text(dw.POINTER_TO_HANDLE(data), message); mle_point = dw.Mle_import(container_mle, message, mle_point); str := dw.Container_query_start(container, dw.CRA_SELECTED); @@ -671,13 +691,13 @@ return FALSE; } -func combobox_select_event_callback(window dw.HWND, index int, data dw.POINTER) int { +func combobox_select_event_callback(window dw.HANDLE, index int, data dw.POINTER) int { fmt.Printf("got combobox_select_event for index: %d, iteration: %d\n", index, iteration); iteration++; return FALSE; } -func column_click_cb(window dw.HWND, column_num int, data dw.POINTER) int { +func column_click_cb(window dw.HANDLE, column_num int, data dw.POINTER) int { var stype = "Unknown"; if column_num == 0 { @@ -703,7 +723,7 @@ } // Page 5 Callbacks -func button_callback(window dw.HWND, data dw.POINTER) int { +func button_callback(window dw.HANDLE, data dw.POINTER) int { idx := dw.Listbox_selected(combobox1); buf1 := dw.Listbox_get_text(combobox1, idx); idx = dw.Listbox_selected( combobox2 ); @@ -720,7 +740,7 @@ var isfoldericon bool = true -func bitmap_toggle_callback(window dw.HWND, data dw.POINTER) int { +func bitmap_toggle_callback(window dw.HANDLE, data dw.POINTER) int { if isfoldericon == true { isfoldericon = false; dw.Window_set_bitmap(window, 0, FILE_ICON_NAME); @@ -733,37 +753,37 @@ return FALSE; } -func percent_button_box_callback(window dw.HWND, data dw.POINTER) int { +func percent_button_box_callback(window dw.HANDLE, data dw.POINTER) int { dw.Percent_set_pos(percent, dw.PERCENT_INDETERMINATE); return FALSE; } -func change_color_red_callback(window dw.HWND, data dw.POINTER) int { +func change_color_red_callback(window dw.HANDLE, data dw.POINTER) int { dw.Window_set_color(buttonsbox, dw.CLR_RED, dw.CLR_RED); return FALSE; } -func change_color_yellow_callback(window dw.HWND, data dw.POINTER) int { +func change_color_yellow_callback(window dw.HANDLE, data dw.POINTER) int { dw.Window_set_color(buttonsbox, dw.CLR_YELLOW, dw.CLR_YELLOW); return FALSE; } /* Callback to handle user selection of the spinbutton position */ -func spinbutton_valuechanged_callback(hwnd dw.HWND, value int, data dw.POINTER) int { +func spinbutton_valuechanged_callback(hwnd dw.HANDLE, value int, data dw.POINTER) int { dw.Messagebox("DWTest", dw.MB_OK, fmt.Sprintf("New value from spinbutton: %d\n", value)); return FALSE; } /* Callback to handle user selection of the slider position */ -func slider_valuechanged_callback(hwnd dw.HWND, value int, data dw.POINTER) int { +func slider_valuechanged_callback(hwnd dw.HANDLE, value int, data dw.POINTER) int { dw.Percent_set_pos(percent, uint(value * 10)); return FALSE; } // Page 8 Callbacks -func scrollbox_button_callback(window dw.HWND, data dw.POINTER) int { - pos := dw.Scrollbox_get_pos(scrollbox, dw.VERT); - rng := dw.Scrollbox_get_range(scrollbox, dw.VERT); +func scrollbox_button_callback(window dw.HANDLE, data dw.POINTER) int { + _, pos := dw.Scrollbox_get_pos(scrollbox); + _, rng := dw.Scrollbox_get_range(scrollbox); fmt.Printf("Pos %d Range %d\n", pos, rng); return FALSE; } @@ -1080,8 +1100,8 @@ 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 := dw.Tree_insert(tree, "tree folder 1", foldericon, nil, dw.POINTER(uintptr(1))); - t2 := dw.Tree_insert(tree, "tree folder 2", foldericon, nil, dw.POINTER(uintptr(2))); + t1 := dw.Tree_insert(tree, "tree folder 1", foldericon, dw.NOHTREEITEM, dw.POINTER(uintptr(1))); + t2 := dw.Tree_insert(tree, "tree folder 2", foldericon, dw.NOHTREEITEM, dw.POINTER(uintptr(2))); dw.Tree_insert(tree, "tree file 1", fileicon, t1, dw.POINTER(uintptr(3))); dw.Tree_insert(tree, "tree file 2", fileicon, t1, dw.POINTER(uintptr(4))); dw.Tree_insert(tree, "tree file 3", fileicon, t2, dw.POINTER(uintptr(5))); @@ -1124,7 +1144,7 @@ thisicon = foldericon; } fmt.Printf("Initial: container: %x containerinfo: %x icon: %x\n", uintptr(dw.HANDLE_TO_POINTER(container)), - uintptr(containerinfo), uintptr(dw.POINTER(thisicon))); + dw.HANDLE_TO_UINTPTR(containerinfo), uintptr(dw.POINTER(thisicon))); dw.Filesystem_set_file(container, containerinfo, z, fmt.Sprintf("Filename %d", z+1), thisicon); dw.Filesystem_set_item_icon(container, containerinfo, 0, z, thisicon); dw.Filesystem_set_item_ulong(container, containerinfo, 1, z, uint(z*100)); @@ -1368,15 +1388,15 @@ dw.Notebook_page_set_text(notebook, notebookpage7, "html"); rawhtml := dw.Html_new(1001); - if rawhtml != dw.NOHWND { + if rawhtml.GetHandle() != nil { dw.Box_pack_start(notebookbox7, rawhtml, 0, 100, TRUE, FALSE, 0); dw.Html_raw(rawhtml, "<html><body><center><h1>dwtest</h1></center></body></html>"); html = dw.Html_new(1002); dw.Box_pack_start(notebookbox7, html, 0, 100, TRUE, TRUE, 0); dw.Html_url(html, "http://dwindows.netlabs.org"); } else { - html = dw.Text_new("HTML widget not available.", 0); - dw.Box_pack_start(notebookbox7, html, 0, 100, TRUE, TRUE, 0); + label := dw.Text_new("HTML widget not available.", 0); + dw.Box_pack_start(notebookbox7, label, 0, 100, TRUE, TRUE, 0); } notebookbox8 = dw.Box_new(dw.VERT, 7);