forked from jcowgar/go-iup
/
core.go
92 lines (70 loc) · 1.92 KB
/
core.go
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
/*
Copyright (C) 2011 by Jeremy Cowgar <jeremy@cowgar.com>
This file is part of go-iup.
go-iup is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
published by the Free Software Foundation, either version 3 of
the License, or (at your option) any later version.
go-iup is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with go-iup. If not, see <http://www.gnu.org/licenses/>.
*/
package iup
/*
#cgo linux CFLAGS: -I/usr/include/iup -I/usr/include/cd -I/usr/include/im
#cgo LDFLAGS: -liup -liupcontrols -liupcd -liupim -lcd -lim
#cgo windows LDFLAGS: -lgdi32 -lole32 -lcomdlg32 -lcomctl32
#include <stdlib.h>
#include <iup.h>
#include <iupcontrols.h>
*/
import "C"
import (
"errors"
"unsafe"
)
func Open() int {
return int(C.IupOpen(nil, nil))
}
var controlsLibOpened = false
func OpenControlLib() {
if controlsLibOpened == false {
C.IupControlsOpen()
controlsLibOpened = true
}
}
func Close() {
C.IupClose()
}
func Version() string {
return C.GoString(C.IupVersion())
}
func Load(filename string) (err error) {
cFilename := C.CString(filename)
defer C.free(unsafe.Pointer(cFilename))
cResult := C.IupLoad(cFilename)
if cResult != nil {
err = errors.New(C.GoString(cResult))
}
return
}
func LoadBuffer(buffer string) (err error) {
cBuffer := C.CString(buffer)
defer C.free(unsafe.Pointer(cBuffer))
cResult := C.IupLoadBuffer(cBuffer)
if cResult != nil {
err = errors.New(C.GoString(cResult))
}
return
}
func SetLanguage(lng string) {
cLng := C.CString(lng)
defer C.free(unsafe.Pointer(cLng))
C.IupSetLanguage(cLng)
}
func GetLanguage() string {
return C.GoString(C.IupGetLanguage())
}