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
|
package layershell
// #cgo pkg-config: gtk+-3.0 gtk-layer-shell-0
// #include <gtk/gtk.h>
// #include "gtk-layer-shell.h"
import "C"
import (
"github.com/gotk3/gotk3/gdk"
"github.com/gotk3/gotk3/gtk"
"unsafe"
)
type LayerShellEdgeFlags int
const (
LAYER_SHELL_EDGE_LEFT LayerShellEdgeFlags = iota
LAYER_SHELL_EDGE_RIGHT
LAYER_SHELL_EDGE_TOP
LAYER_SHELL_EDGE_BOTTOM
)
type LayerShellLayerFlags int
const (
LAYER_SHELL_LAYER_BACKGROUND LayerShellLayerFlags = iota
LAYER_SHELL_LAYER_BOTTOM
LAYER_SHELL_LAYER_TOP
LAYER_SHELL_LAYER_OVERLAY
)
type LayerShellKeyboardMode int
const (
LAYER_SHELL_KEYBOARD_MODE_NONE LayerShellKeyboardMode= iota
LAYER_SHELL_KEYBOARD_MODE_EXCLUSIVE
LAYER_SHELL_KEYBOARD_MODE_ON_DEMAND
LAYER_SHELL_KEYBOARD_MODE_ENTRY_NUMBER
)
func nativeWindow(window *gtk.Window) *C.GtkWindow {
w := window.Native()
wp := (*C.GtkWindow)(unsafe.Pointer(w))
return wp;
}
func nativeMonitor(monitor *gdk.Monitor) *C.GdkMonitor {
m := monitor.Native()
mp := (*C.GdkMonitor)(unsafe.Pointer(m))
return mp;
}
func boolConv(b bool) C.int {
if (b) { return C.int(1)}
return C.int(0)
}
func InitForWindow(window *gtk.Window) {
w := nativeWindow(window);
C.gtk_layer_init_for_window(w)
}
func SetLayer(window *gtk.Window, layer LayerShellLayerFlags) {
w := nativeWindow(window)
C.gtk_layer_set_layer(w, C.GtkLayerShellLayer(layer))
}
func AutoExclusiveZoneEnable(window *gtk.Window) {
w := nativeWindow(window)
C.gtk_layer_auto_exclusive_zone_enable(w)
}
func SetExclusiveZone(window *gtk.Window, size int) {
w := nativeWindow(window)
C.gtk_layer_set_exclusive_zone(w, C.int(size))
}
func SetAnchor(window *gtk.Window, side LayerShellEdgeFlags, pinned bool) {
w := nativeWindow(window)
C.gtk_layer_set_anchor(w, C.GtkLayerShellEdge(side), boolConv(pinned))
}
func SetMargin(window *gtk.Window, side LayerShellEdgeFlags, margin int) {
w := nativeWindow(window)
C.gtk_layer_set_margin(w, C.GtkLayerShellEdge(side), C.int(margin))
}
func SetMonitor(window *gtk.Window, monitor *gdk.Monitor) {
C.gtk_layer_set_monitor(nativeWindow(window), nativeMonitor(monitor))
}
func SetKeyboardMode(window *gtk.Window, mode LayerShellKeyboardMode) {
w := nativeWindow(window)
C.gtk_layer_set_keyboard_mode(w, C.GtkLayerShellKeyboardMode(mode))
}
|