From c670e745ecab21154bdf008f2e1d15bd54fed104 Mon Sep 17 00:00:00 2001 From: solusipse Date: Sat, 30 Nov 2013 06:52:29 +0100 Subject: [PATCH 1/2] added basic support of GtkCssProvider --- gtk/gtk.go | 32 ++++++++++++++++++++++++++++++++ gtk/gtk.go.h | 6 ++++++ 2 files changed, 38 insertions(+) diff --git a/gtk/gtk.go b/gtk/gtk.go index 4d35d06..e7a7f5c 100644 --- a/gtk/gtk.go +++ b/gtk/gtk.go @@ -1048,6 +1048,38 @@ 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 (v *CssProvider) LoadFromData(cssText string) { + cstr := C.CString(cssText) + C.gtk_css_provider_load_from_data(v.Native(), (*C.gchar)(cstr), -1, nil) +} + +func NewCssProvider() (*CssProvider, error) { + c := C.gtk_css_provider_new() + if c == nil { + return nil, nilPtrErr + } + t := &CssProvider{*c} + return t, nil +} + +// 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) { From d31146143f51c3de40e6e9cd6a4d2ba9d3d599fe Mon Sep 17 00:00:00 2001 From: solusipse Date: Sat, 30 Nov 2013 07:30:57 +0100 Subject: [PATCH 2/2] added LoadFromPath() method --- gtk/gtk.go | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/gtk/gtk.go b/gtk/gtk.go index e7a7f5c..6d85522 100644 --- a/gtk/gtk.go +++ b/gtk/gtk.go @@ -1060,11 +1060,6 @@ func (v *CssProvider) Native() *C.GtkCssProvider { return &v.GtkCssProvider } -func (v *CssProvider) LoadFromData(cssText string) { - cstr := C.CString(cssText) - C.gtk_css_provider_load_from_data(v.Native(), (*C.gchar)(cstr), -1, nil) -} - func NewCssProvider() (*CssProvider, error) { c := C.gtk_css_provider_new() if c == nil { @@ -1074,7 +1069,18 @@ func NewCssProvider() (*CssProvider, error) { return t, nil } -// gtk_style_context_add_provider_for_screen() +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)