diff --git a/gtk/gtk.go b/gtk/gtk.go index 4d35d06..6d85522 100644 --- a/gtk/gtk.go +++ b/gtk/gtk.go @@ -1048,6 +1048,44 @@ func (v *Clipboard) SetText(text string) { C.gint(len(text))) } +/* + * GtkCssProvider + */ + +type CssProvider struct { + GtkCssProvider C.GtkCssProvider +} + +func (v *CssProvider) Native() *C.GtkCssProvider { + return &v.GtkCssProvider +} + +func NewCssProvider() (*CssProvider, error) { + c := C.gtk_css_provider_new() + if c == nil { + return nil, nilPtrErr + } + t := &CssProvider{*c} + return t, nil +} + +func (v *CssProvider) LoadFromData(cssText string) bool { + cstr := C.CString(cssText) + return gobool(C.gtk_css_provider_load_from_data(v.Native(), (*C.gchar)(cstr), -1, nil)) +} + +func (v *CssProvider) LoadFromPath(path string) bool { + cstr := C.CString(path) + var err *C.GError = nil + return gobool(C.gtk_css_provider_load_from_path(v.Native(), (*C.gchar)(cstr), &err)) +} + +// AddToScreen() is wrapper around gtk_style_context_add_provider_for_screen() +func (v *CssProvider) AddToScreen(screen *gdk.Screen) { + p := unsafe.Pointer(v) + C.gtk_style_context_add_provider_for_screen(screen.Native(), C.toGtkStyleProvider(p), 0) +} + /* * GtkComboBox */ diff --git a/gtk/gtk.go.h b/gtk/gtk.go.h index 5e1e184..9aeff5b 100644 --- a/gtk/gtk.go.h +++ b/gtk/gtk.go.h @@ -224,6 +224,12 @@ toGtkClipboard(void *p) return (GTK_CLIPBOARD(p)); } +static GtkStyleProvider * +toGtkStyleProvider(void *p) +{ + return (GTK_STYLE_PROVIDER(p)); +} + static GtkDialog * toGtkDialog(void *p) {