5
0
mirror of https://github.com/wailsapp/wails.git synced 2025-05-02 18:10:48 +08:00
wails/v2/internal/frontend/desktop/windows/winc/edit.go
Misite Bao f70d9de366
fix: fix go test errors (#2169)
* fix: fix go test errors

* Add flags to mac test

* Run on all branches

* Update PR workflow

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2022-12-06 06:45:06 +11:00

114 lines
2.6 KiB
Go

//go:build windows
/*
* Copyright (C) 2019 The Winc Authors. All Rights Reserved.
* Copyright (C) 2010-2013 Allen Dang. All Rights Reserved.
*/
package winc
import "github.com/wailsapp/wails/v2/internal/frontend/desktop/windows/winc/w32"
type Edit struct {
ControlBase
onChange EventManager
}
const passwordChar = '*'
const nopasswordChar = ' '
func NewEdit(parent Controller) *Edit {
edt := new(Edit)
edt.InitControl("EDIT", parent, w32.WS_EX_CLIENTEDGE, w32.WS_CHILD|w32.WS_VISIBLE|w32.WS_TABSTOP|w32.ES_LEFT|
w32.ES_AUTOHSCROLL)
RegMsgHandler(edt)
edt.SetFont(DefaultFont)
edt.SetSize(200, 22)
return edt
}
// Events.
func (ed *Edit) OnChange() *EventManager {
return &ed.onChange
}
// Public methods.
func (ed *Edit) SetReadOnly(isReadOnly bool) {
w32.SendMessage(ed.hwnd, w32.EM_SETREADONLY, uintptr(w32.BoolToBOOL(isReadOnly)), 0)
}
// Public methods
func (ed *Edit) SetPassword(isPassword bool) {
if isPassword {
w32.SendMessage(ed.hwnd, w32.EM_SETPASSWORDCHAR, uintptr(passwordChar), 0)
} else {
w32.SendMessage(ed.hwnd, w32.EM_SETPASSWORDCHAR, 0, 0)
}
}
func (ed *Edit) WndProc(msg uint32, wparam, lparam uintptr) uintptr {
switch msg {
case w32.WM_COMMAND:
switch w32.HIWORD(uint32(wparam)) {
case w32.EN_CHANGE:
ed.onChange.Fire(NewEvent(ed, nil))
}
/*case w32.WM_GETDLGCODE:
println("Edit")
if wparam == w32.VK_RETURN {
return w32.DLGC_WANTALLKEYS
}*/
}
return w32.DefWindowProc(ed.hwnd, msg, wparam, lparam)
}
// MultiEdit is multiline text edit.
type MultiEdit struct {
ControlBase
onChange EventManager
}
func NewMultiEdit(parent Controller) *MultiEdit {
med := new(MultiEdit)
med.InitControl("EDIT", parent, w32.WS_EX_CLIENTEDGE, w32.WS_CHILD|w32.WS_VISIBLE|w32.WS_TABSTOP|w32.ES_LEFT|
w32.WS_VSCROLL|w32.WS_HSCROLL|w32.ES_MULTILINE|w32.ES_WANTRETURN|w32.ES_AUTOHSCROLL|w32.ES_AUTOVSCROLL)
RegMsgHandler(med)
med.SetFont(DefaultFont)
med.SetSize(200, 400)
return med
}
// Events
func (med *MultiEdit) OnChange() *EventManager {
return &med.onChange
}
// Public methods
func (med *MultiEdit) SetReadOnly(isReadOnly bool) {
w32.SendMessage(med.hwnd, w32.EM_SETREADONLY, uintptr(w32.BoolToBOOL(isReadOnly)), 0)
}
func (med *MultiEdit) AddLine(text string) {
if len(med.Text()) == 0 {
med.SetText(text)
} else {
med.SetText(med.Text() + "\r\n" + text)
}
}
func (med *MultiEdit) WndProc(msg uint32, wparam, lparam uintptr) uintptr {
switch msg {
case w32.WM_COMMAND:
switch w32.HIWORD(uint32(wparam)) {
case w32.EN_CHANGE:
med.onChange.Fire(NewEvent(med, nil))
}
}
return w32.DefWindowProc(med.hwnd, msg, wparam, lparam)
}