summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--controls_windows.go82
-rw-r--r--label.go40
-rw-r--r--main.go3
-rw-r--r--sysdata.go1
-rw-r--r--sysdata_windows.go5
5 files changed, 89 insertions, 42 deletions
diff --git a/controls_windows.go b/controls_windows.go
index 9b96c22..6aec909 100644
--- a/controls_windows.go
+++ b/controls_windows.go
@@ -371,54 +371,54 @@ const (
LBN_SETFOCUS = 4
LBN_KILLFOCUS = 5
)
+*/
// Static control styles.
const (
// from winuser.h
- SS_LEFT = 0x00000000
- SS_CENTER = 0x00000001
- SS_RIGHT = 0x00000002
- SS_ICON = 0x00000003
- SS_BLACKRECT = 0x00000004
- SS_GRAYRECT = 0x00000005
- SS_WHITERECT = 0x00000006
- SS_BLACKFRAME = 0x00000007
- SS_GRAYFRAME = 0x00000008
- SS_WHITEFRAME = 0x00000009
- SS_USERITEM = 0x0000000A
- SS_SIMPLE = 0x0000000B
- SS_LEFTNOWORDWRAP = 0x0000000C
- SS_OWNERDRAW = 0x0000000D
- SS_BITMAP = 0x0000000E
- SS_ENHMETAFILE = 0x0000000F
- SS_ETCHEDHORZ = 0x00000010
- SS_ETCHEDVERT = 0x00000011
- SS_ETCHEDFRAME = 0x00000012
- SS_TYPEMASK = 0x0000001F
- SS_REALSIZECONTROL = 0x00000040
- SS_NOPREFIX = 0x00000080
- SS_NOTIFY = 0x00000100
- SS_CENTERIMAGE = 0x00000200
- SS_RIGHTJUST = 0x00000400
- SS_REALSIZEIMAGE = 0x00000800
- SS_SUNKEN = 0x00001000
- SS_EDITCONTROL = 0x00002000
- SS_ENDELLIPSIS = 0x00004000
- SS_PATHELLIPSIS = 0x00008000
- SS_WORDELLIPSIS = 0x0000C000
- SS_ELLIPSISMASK = 0x0000C000
+ _SS_LEFT = 0x00000000
+ _SS_CENTER = 0x00000001
+ _SS_RIGHT = 0x00000002
+ _SS_ICON = 0x00000003
+ _SS_BLACKRECT = 0x00000004
+ _SS_GRAYRECT = 0x00000005
+ _SS_WHITERECT = 0x00000006
+ _SS_BLACKFRAME = 0x00000007
+ _SS_GRAYFRAME = 0x00000008
+ _SS_WHITEFRAME = 0x00000009
+ _SS_USERITEM = 0x0000000A
+ _SS_SIMPLE = 0x0000000B
+ _SS_LEFTNOWORDWRAP = 0x0000000C
+ _SS_OWNERDRAW = 0x0000000D
+ _SS_BITMAP = 0x0000000E
+ _SS_ENHMETAFILE = 0x0000000F
+ _SS_ETCHEDHORZ = 0x00000010
+ _SS_ETCHEDVERT = 0x00000011
+ _SS_ETCHEDFRAME = 0x00000012
+ _SS_TYPEMASK = 0x0000001F
+ _SS_REALSIZECONTROL = 0x00000040
+ _SS_NOPREFIX = 0x00000080
+ _SS_NOTIFY = 0x00000100
+ _SS_CENTERIMAGE = 0x00000200
+ _SS_RIGHTJUST = 0x00000400
+ _SS_REALSIZEIMAGE = 0x00000800
+ _SS_SUNKEN = 0x00001000
+ _SS_EDITCONTROL = 0x00002000
+ _SS_ENDELLIPSIS = 0x00004000
+ _SS_PATHELLIPSIS = 0x00008000
+ _SS_WORDELLIPSIS = 0x0000C000
+ _SS_ELLIPSISMASK = 0x0000C000
)
// Static control messages and WM_COMMAND notifications.
const (
// from winuser.h
- STM_SETICON = 0x0170
- STM_GETICON = 0x0171
- STM_SETIMAGE = 0x0172
- STM_GETIMAGE = 0x0173
- STN_CLICKED = 0
- STN_DBLCLK = 1
- STN_ENABLE = 2
- STN_DISABLE = 3
+ _STM_SETICON = 0x0170
+ _STM_GETICON = 0x0171
+ _STM_SETIMAGE = 0x0172
+ _STM_GETIMAGE = 0x0173
+ _STN_CLICKED = 0
+ _STN_DBLCLK = 1
+ _STN_ENABLE = 2
+ _STN_DISABLE = 3
)
-*/
diff --git a/label.go b/label.go
new file mode 100644
index 0000000..b2cf05b
--- /dev/null
+++ b/label.go
@@ -0,0 +1,40 @@
+// 14 february 2014
+//package ui
+package main
+
+import (
+ "sync"
+)
+
+// A Label is a static line of text used to mark other controls.
+type Label struct {
+ lock sync.Mutex
+ created bool
+ sysData *sysData
+ initText string
+}
+
+// NewLabel creates a new Label with the specified text.
+func NewLabel(text string) *Label {
+ return &Label{
+ sysData: mksysdata(c_label),
+ initText: text,
+ }
+}
+
+// TODO SetText()/Text()?
+
+// TODO adorn error messages
+func (l *Label) make(window *sysData) error {
+ l.lock.Lock()
+ defer l.lock.Unlock()
+
+ return l.sysData.make(l.initText, 300, 300, window)
+}
+
+func (l *Label) setRect(x int, y int, width int, height int) error {
+ l.lock.Lock()
+ defer l.lock.Unlock()
+
+ return l.sysData.setRect(x, y, width, height)
+}
diff --git a/main.go b/main.go
index e541bd4..2cdff5b 100644
--- a/main.go
+++ b/main.go
@@ -13,7 +13,8 @@ func main() {
cb1 := NewCombobox(true, "You can edit me!", "Yes you can!", "Yes you will!")
cb2 := NewCombobox(false, "You can't edit me!", "No you can't!", "No you won't!")
e := NewLineEdit("Enter text here too")
- s := NewStack(Vertical, b, c, cb1, cb2, e)
+ l := NewLabel("This is a label")
+ s := NewStack(Vertical, b, c, cb1, cb2, e, l)
err := w.Open(s)
if err != nil {
panic(err)
diff --git a/sysdata.go b/sysdata.go
index 4b60676..1ff257e 100644
--- a/sysdata.go
+++ b/sysdata.go
@@ -44,6 +44,7 @@ const (
c_checkbox
c_combobox
c_lineedit
+ c_label
nctypes
)
diff --git a/sysdata_windows.go b/sysdata_windows.go
index a3aeab0..86187b5 100644
--- a/sysdata_windows.go
+++ b/sysdata_windows.go
@@ -61,6 +61,11 @@ var classTypes = [nctypes]*classData{
style: _ES_AUTOHSCROLL | _WS_BORDER | controlstyle,
xstyle: 0 | controlxstyle,
},
+ c_label: &classData{
+ name: "STATIC",
+ style: _SS_NOPREFIX | controlstyle,
+ xstyle: 0 | controlxstyle,
+ },
}
func (s *sysData) addChild(child *sysData) _HMENU {