summaryrefslogtreecommitdiffstatshomepage
path: root/declarative/lineedit.go
blob: d4f52e7f813cdca50768d645a237ce56c9e542a2 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
// Copyright 2012 The Walk Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// +build windows

package declarative

import (
	"github.com/lxn/walk"
)

type CaseMode uint32

const (
	CaseModeMixed CaseMode = CaseMode(walk.CaseModeMixed)
	CaseModeUpper CaseMode = CaseMode(walk.CaseModeUpper)
	CaseModeLower CaseMode = CaseMode(walk.CaseModeLower)
)

type LineEdit struct {
	// Window

	Background         Brush
	ContextMenuItems   []MenuItem
	DoubleBuffering    bool
	Enabled            Property
	Font               Font
	MaxSize            Size
	MinSize            Size
	Name               string
	OnBoundsChanged    walk.EventHandler
	OnKeyDown          walk.KeyEventHandler
	OnKeyPress         walk.KeyEventHandler
	OnKeyUp            walk.KeyEventHandler
	OnMouseDown        walk.MouseEventHandler
	OnMouseMove        walk.MouseEventHandler
	OnMouseUp          walk.MouseEventHandler
	OnSizeChanged      walk.EventHandler
	Persistent         bool
	RightToLeftReading bool
	ToolTipText        Property
	Visible            Property

	// Widget

	Alignment          Alignment2D
	AlwaysConsumeSpace bool
	Column             int
	ColumnSpan         int
	GraphicsEffects    []walk.WidgetGraphicsEffect
	Row                int
	RowSpan            int
	StretchFactor      int

	// LineEdit

	AssignTo          **walk.LineEdit
	CaseMode          CaseMode
	CueBanner         string
	MaxLength         int
	OnEditingFinished walk.EventHandler
	OnTextChanged     walk.EventHandler
	PasswordMode      bool
	ReadOnly          Property
	Text              Property
	TextAlignment     Alignment1D
	TextColor         walk.Color
}

func (le LineEdit) Create(builder *Builder) error {
	w, err := walk.NewLineEdit(builder.Parent())
	if err != nil {
		return err
	}

	if le.AssignTo != nil {
		*le.AssignTo = w
	}

	return builder.InitWidget(le, w, func() error {
		w.SetTextColor(le.TextColor)

		if err := w.SetTextAlignment(walk.Alignment1D(le.TextAlignment)); err != nil {
			return err
		}

		if le.CueBanner != "" {
			if err := w.SetCueBanner(le.CueBanner); err != nil {
				return err
			}
		}
		w.SetMaxLength(le.MaxLength)
		w.SetPasswordMode(le.PasswordMode)

		if err := w.SetCaseMode(walk.CaseMode(le.CaseMode)); err != nil {
			return err
		}

		if le.OnEditingFinished != nil {
			w.EditingFinished().Attach(le.OnEditingFinished)
		}
		if le.OnTextChanged != nil {
			w.TextChanged().Attach(le.OnTextChanged)
		}

		return nil
	})
}