/
clipboard.go
47 lines (42 loc) · 997 Bytes
/
clipboard.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
// Package clipboard uses Qt's facilities to store or load text in/out of system's clipboard
package clipboard
// #cgo LDFLAGS: -lstdc++
// #cgo pkg-config: Qt5Core Qt5Widgets
//
// #include "clipboard.h"
import "C"
import (
"errors"
"fmt"
"gopkg.in/qml.v0"
)
type Clipboard struct {
engine *qml.Engine
helper qml.Common
}
func New(engine *qml.Engine) *Clipboard {
return &Clipboard{
engine: engine,
helper: *qml.CommonOf(C.clipboardHelper(), engine),
}
}
// ReadAll reads string from QApplication::clipboard
func (c *Clipboard) ReadAll() (text string, err error) {
defer func() {
if x := recover(); x != nil {
err = errors.New(fmt.Sprintf("panic: %v", x))
}
}()
text = c.helper.Call("getText").(string)
return
}
// WriteAll writes string to QApplication::clipboard
func (c *Clipboard) WriteAll(text string) (err error) {
defer func() {
if x := recover(); x != nil {
err = errors.New(fmt.Sprintf("panic: %v", x))
}
}()
c.helper.Call("setText", text)
return
}