mirror of
https://github.com/wailsapp/wails.git
synced 2025-05-02 19:50:15 +08:00

* 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>
114 lines
2.6 KiB
Go
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)
|
|
}
|