2014-12-02 23:51:56 +03:00
|
|
|
package qt
|
|
|
|
|
|
|
|
import (
|
2015-12-15 04:01:51 +03:00
|
|
|
"log"
|
2014-12-02 23:51:56 +03:00
|
|
|
"runtime"
|
2015-11-12 03:29:32 +03:00
|
|
|
"strconv"
|
2014-12-02 23:51:56 +03:00
|
|
|
"strings"
|
2016-04-13 18:33:41 +03:00
|
|
|
"sync"
|
2015-11-09 20:23:42 +03:00
|
|
|
|
|
|
|
_ "github.com/therecipe/qt/internal/android/cgo"
|
2014-12-02 23:51:56 +03:00
|
|
|
)
|
|
|
|
|
2015-11-12 03:29:32 +03:00
|
|
|
var (
|
2016-04-13 18:33:41 +03:00
|
|
|
signals = make(map[string]interface{})
|
|
|
|
signalsMutex = new(sync.Mutex)
|
|
|
|
ids int
|
2015-11-12 03:29:32 +03:00
|
|
|
)
|
2014-12-02 23:51:56 +03:00
|
|
|
|
|
|
|
func init() { runtime.LockOSThread() }
|
|
|
|
|
2016-04-28 20:43:44 +03:00
|
|
|
func ConnectSignal(name, signal string, function interface{}) {
|
2016-04-13 18:33:41 +03:00
|
|
|
signalsMutex.Lock()
|
2015-11-19 21:29:30 +03:00
|
|
|
signals[name+":"+signal] = function
|
2016-04-13 18:33:41 +03:00
|
|
|
signalsMutex.Unlock()
|
2014-12-02 23:51:56 +03:00
|
|
|
}
|
|
|
|
|
2016-04-28 20:43:44 +03:00
|
|
|
func GetSignal(name, signal string) interface{} {
|
2016-05-11 16:33:24 +03:00
|
|
|
if signal == "destroyed" || signal == "deleteLater" {
|
2015-11-09 20:23:42 +03:00
|
|
|
defer DisconnectAllSignals(name)
|
2014-12-02 23:51:56 +03:00
|
|
|
}
|
2016-04-13 18:33:41 +03:00
|
|
|
var s interface{}
|
|
|
|
signalsMutex.Lock()
|
|
|
|
s = signals[name+":"+signal]
|
|
|
|
signalsMutex.Unlock()
|
|
|
|
return s
|
2014-12-02 23:51:56 +03:00
|
|
|
}
|
|
|
|
|
2016-04-28 20:43:44 +03:00
|
|
|
func DisconnectSignal(name, signal string) {
|
2016-04-13 18:33:41 +03:00
|
|
|
signalsMutex.Lock()
|
2015-11-19 21:29:30 +03:00
|
|
|
delete(signals, name+":"+signal)
|
2016-04-13 18:33:41 +03:00
|
|
|
signalsMutex.Unlock()
|
2014-12-02 23:51:56 +03:00
|
|
|
}
|
|
|
|
|
2015-11-09 20:23:42 +03:00
|
|
|
func DisconnectAllSignals(name string) {
|
2015-11-19 21:29:30 +03:00
|
|
|
for entry := range signals {
|
2014-12-02 23:51:56 +03:00
|
|
|
if strings.Contains(entry, name) {
|
2016-04-13 18:33:41 +03:00
|
|
|
signalsMutex.Lock()
|
2015-11-19 21:29:30 +03:00
|
|
|
delete(signals, entry)
|
2016-04-13 18:33:41 +03:00
|
|
|
signalsMutex.Unlock()
|
2014-12-02 23:51:56 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2015-12-15 04:01:51 +03:00
|
|
|
func Identifier() string {
|
2015-11-12 03:29:32 +03:00
|
|
|
ids++
|
|
|
|
return strconv.Itoa(ids)
|
2014-12-02 23:51:56 +03:00
|
|
|
}
|
|
|
|
|
2015-11-19 21:29:30 +03:00
|
|
|
func DumpSignals() {
|
2015-12-16 04:02:59 +03:00
|
|
|
log.Println("##############################\tDUMP_SIGNALTABLE_START\t##############################")
|
2015-11-19 21:29:30 +03:00
|
|
|
for entry := range signals {
|
2015-12-16 04:02:59 +03:00
|
|
|
log.Println(entry)
|
2014-12-02 23:51:56 +03:00
|
|
|
}
|
2015-12-16 04:02:59 +03:00
|
|
|
log.Println("##############################\tDUMP_SIGNALTABLE_END\t##############################")
|
2014-12-02 23:51:56 +03:00
|
|
|
}
|
|
|
|
|
2015-10-24 18:18:24 +03:00
|
|
|
func GoBoolToInt(b bool) int {
|
2014-12-02 23:51:56 +03:00
|
|
|
if b {
|
2015-10-24 18:18:24 +03:00
|
|
|
return 1
|
2014-12-02 23:51:56 +03:00
|
|
|
}
|
2015-10-24 18:18:24 +03:00
|
|
|
return 0
|
2014-12-02 23:51:56 +03:00
|
|
|
}
|
2015-12-15 04:01:51 +03:00
|
|
|
|
|
|
|
func Recovering(fn string) {
|
|
|
|
if recover() != nil {
|
2015-12-16 04:02:59 +03:00
|
|
|
log.Println("recovered in:", fn)
|
2015-12-15 04:01:51 +03:00
|
|
|
}
|
|
|
|
}
|