mirror of https://github.com/subgraph/fw-daemon
Updated gotk3 vendor dependency (fixed some bug conditions).shw_dev
parent
e3833190bf
commit
aba795fa97
@ -0,0 +1,13 @@
|
|||||||
|
Copyright (c) 2013-2014 Conformal Systems LLC.
|
||||||
|
|
||||||
|
Permission to use, copy, modify, and distribute this software for any
|
||||||
|
purpose with or without fee is hereby granted, provided that the above
|
||||||
|
copyright notice and this permission notice appear in all copies.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||||
|
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||||
|
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||||
|
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||||
|
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||||
|
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||||
|
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
@ -0,0 +1,28 @@
|
|||||||
|
package cairo
|
||||||
|
|
||||||
|
// #cgo pkg-config: cairo cairo-gobject
|
||||||
|
// #include <stdlib.h>
|
||||||
|
// #include <cairo.h>
|
||||||
|
// #include <cairo-gobject.h>
|
||||||
|
import "C"
|
||||||
|
import (
|
||||||
|
"unsafe"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Antialias is a representation of Cairo's cairo_antialias_t.
|
||||||
|
type Antialias int
|
||||||
|
|
||||||
|
const (
|
||||||
|
ANTIALIAS_DEFAULT Antialias = C.CAIRO_ANTIALIAS_DEFAULT
|
||||||
|
ANTIALIAS_NONE Antialias = C.CAIRO_ANTIALIAS_NONE
|
||||||
|
ANTIALIAS_GRAY Antialias = C.CAIRO_ANTIALIAS_GRAY
|
||||||
|
ANTIALIAS_SUBPIXEL Antialias = C.CAIRO_ANTIALIAS_SUBPIXEL
|
||||||
|
// ANTIALIAS_FAST Antialias = C.CAIRO_ANTIALIAS_FAST (since 1.12)
|
||||||
|
// ANTIALIAS_GOOD Antialias = C.CAIRO_ANTIALIAS_GOOD (since 1.12)
|
||||||
|
// ANTIALIAS_BEST Antialias = C.CAIRO_ANTIALIAS_BEST (since 1.12)
|
||||||
|
)
|
||||||
|
|
||||||
|
func marshalAntialias(p uintptr) (interface{}, error) {
|
||||||
|
c := C.g_value_get_enum((*C.GValue)(unsafe.Pointer(p)))
|
||||||
|
return Antialias(c), nil
|
||||||
|
}
|
@ -0,0 +1,65 @@
|
|||||||
|
// Copyright (c) 2013-2014 Conformal Systems <info@conformal.com>
|
||||||
|
//
|
||||||
|
// This file originated from: http://opensource.conformal.com/
|
||||||
|
//
|
||||||
|
// Permission to use, copy, modify, and distribute this software for any
|
||||||
|
// purpose with or without fee is hereby granted, provided that the above
|
||||||
|
// copyright notice and this permission notice appear in all copies.
|
||||||
|
//
|
||||||
|
// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||||
|
// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||||
|
// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||||
|
// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||||
|
// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||||
|
// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||||
|
// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
|
||||||
|
// Package cairo implements Go bindings for Cairo. Supports version 1.10 and
|
||||||
|
// later.
|
||||||
|
package cairo
|
||||||
|
|
||||||
|
// #cgo pkg-config: cairo cairo-gobject
|
||||||
|
// #include <stdlib.h>
|
||||||
|
// #include <cairo.h>
|
||||||
|
// #include <cairo-gobject.h>
|
||||||
|
import "C"
|
||||||
|
import (
|
||||||
|
"unsafe"
|
||||||
|
|
||||||
|
"github.com/gotk3/gotk3/glib"
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
tm := []glib.TypeMarshaler{
|
||||||
|
// Enums
|
||||||
|
{glib.Type(C.cairo_gobject_antialias_get_type()), marshalAntialias},
|
||||||
|
{glib.Type(C.cairo_gobject_content_get_type()), marshalContent},
|
||||||
|
{glib.Type(C.cairo_gobject_fill_rule_get_type()), marshalFillRule},
|
||||||
|
{glib.Type(C.cairo_gobject_line_cap_get_type()), marshalLineCap},
|
||||||
|
{glib.Type(C.cairo_gobject_line_join_get_type()), marshalLineJoin},
|
||||||
|
{glib.Type(C.cairo_gobject_operator_get_type()), marshalOperator},
|
||||||
|
{glib.Type(C.cairo_gobject_status_get_type()), marshalStatus},
|
||||||
|
{glib.Type(C.cairo_gobject_surface_type_get_type()), marshalSurfaceType},
|
||||||
|
|
||||||
|
// Boxed
|
||||||
|
{glib.Type(C.cairo_gobject_context_get_type()), marshalContext},
|
||||||
|
{glib.Type(C.cairo_gobject_surface_get_type()), marshalSurface},
|
||||||
|
}
|
||||||
|
glib.RegisterGValueMarshalers(tm)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Constants
|
||||||
|
|
||||||
|
// Content is a representation of Cairo's cairo_content_t.
|
||||||
|
type Content int
|
||||||
|
|
||||||
|
const (
|
||||||
|
CONTENT_COLOR Content = C.CAIRO_CONTENT_COLOR
|
||||||
|
CONTENT_ALPHA Content = C.CAIRO_CONTENT_ALPHA
|
||||||
|
CONTENT_COLOR_ALPHA Content = C.CAIRO_CONTENT_COLOR_ALPHA
|
||||||
|
)
|
||||||
|
|
||||||
|
func marshalContent(p uintptr) (interface{}, error) {
|
||||||
|
c := C.g_value_get_enum((*C.GValue)(unsafe.Pointer(p)))
|
||||||
|
return Content(c), nil
|
||||||
|
}
|
@ -0,0 +1,401 @@
|
|||||||
|
package cairo
|
||||||
|
|
||||||
|
// #cgo pkg-config: cairo cairo-gobject
|
||||||
|
// #include <stdlib.h>
|
||||||
|
// #include <cairo.h>
|
||||||
|
// #include <cairo-gobject.h>
|
||||||
|
import "C"
|
||||||
|
|
||||||
|
import (
|
||||||
|
"reflect"
|
||||||
|
"runtime"
|
||||||
|
"unsafe"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Context is a representation of Cairo's cairo_t.
|
||||||
|
type Context struct {
|
||||||
|
context *C.cairo_t
|
||||||
|
}
|
||||||
|
|
||||||
|
// native returns a pointer to the underlying cairo_t.
|
||||||
|
func (v *Context) native() *C.cairo_t {
|
||||||
|
if v == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return v.context
|
||||||
|
}
|
||||||
|
|
||||||
|
func (v *Context) GetCContext() *C.cairo_t {
|
||||||
|
return v.native()
|
||||||
|
}
|
||||||
|
|
||||||
|
// Native returns a pointer to the underlying cairo_t.
|
||||||
|
func (v *Context) Native() uintptr {
|
||||||
|
return uintptr(unsafe.Pointer(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
func marshalContext(p uintptr) (interface{}, error) {
|
||||||
|
c := C.g_value_get_boxed((*C.GValue)(unsafe.Pointer(p)))
|
||||||
|
context := (*C.cairo_t)(unsafe.Pointer(c))
|
||||||
|
return wrapContext(context), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func wrapContext(context *C.cairo_t) *Context {
|
||||||
|
return &Context{context}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create is a wrapper around cairo_create().
|
||||||
|
func Create(target *Surface) *Context {
|
||||||
|
c := C.cairo_create(target.native())
|
||||||
|
ctx := wrapContext(c)
|
||||||
|
runtime.SetFinalizer(ctx, (*Context).destroy)
|
||||||
|
return ctx
|
||||||
|
}
|
||||||
|
|
||||||
|
// reference is a wrapper around cairo_reference().
|
||||||
|
func (v *Context) reference() {
|
||||||
|
v.context = C.cairo_reference(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// destroy is a wrapper around cairo_destroy().
|
||||||
|
func (v *Context) destroy() {
|
||||||
|
C.cairo_destroy(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// Status is a wrapper around cairo_status().
|
||||||
|
func (v *Context) Status() Status {
|
||||||
|
c := C.cairo_status(v.native())
|
||||||
|
return Status(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Save is a wrapper around cairo_save().
|
||||||
|
func (v *Context) Save() {
|
||||||
|
C.cairo_save(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// Restore is a wrapper around cairo_restore().
|
||||||
|
func (v *Context) Restore() {
|
||||||
|
C.cairo_restore(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetTarget is a wrapper around cairo_get_target().
|
||||||
|
func (v *Context) GetTarget() *Surface {
|
||||||
|
c := C.cairo_get_target(v.native())
|
||||||
|
s := wrapSurface(c)
|
||||||
|
s.reference()
|
||||||
|
runtime.SetFinalizer(s, (*Surface).destroy)
|
||||||
|
return s
|
||||||
|
}
|
||||||
|
|
||||||
|
// PushGroup is a wrapper around cairo_push_group().
|
||||||
|
func (v *Context) PushGroup() {
|
||||||
|
C.cairo_push_group(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// PushGroupWithContent is a wrapper around cairo_push_group_with_content().
|
||||||
|
func (v *Context) PushGroupWithContent(content Content) {
|
||||||
|
C.cairo_push_group_with_content(v.native(), C.cairo_content_t(content))
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO(jrick) PopGroup (depends on Pattern)
|
||||||
|
|
||||||
|
// PopGroupToSource is a wrapper around cairo_pop_group_to_source().
|
||||||
|
func (v *Context) PopGroupToSource() {
|
||||||
|
C.cairo_pop_group_to_source(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetGroupTarget is a wrapper around cairo_get_group_target().
|
||||||
|
func (v *Context) GetGroupTarget() *Surface {
|
||||||
|
c := C.cairo_get_group_target(v.native())
|
||||||
|
s := wrapSurface(c)
|
||||||
|
s.reference()
|
||||||
|
runtime.SetFinalizer(s, (*Surface).destroy)
|
||||||
|
return s
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetSourceRGB is a wrapper around cairo_set_source_rgb().
|
||||||
|
func (v *Context) SetSourceRGB(red, green, blue float64) {
|
||||||
|
C.cairo_set_source_rgb(v.native(), C.double(red), C.double(green),
|
||||||
|
C.double(blue))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetSourceRGBA is a wrapper around cairo_set_source_rgba().
|
||||||
|
func (v *Context) SetSourceRGBA(red, green, blue, alpha float64) {
|
||||||
|
C.cairo_set_source_rgba(v.native(), C.double(red), C.double(green),
|
||||||
|
C.double(blue), C.double(alpha))
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO(jrick) SetSource (depends on Pattern)
|
||||||
|
|
||||||
|
// SetSourceSurface is a wrapper around cairo_set_source_surface().
|
||||||
|
func (v *Context) SetSourceSurface(surface *Surface, x, y float64) {
|
||||||
|
C.cairo_set_source_surface(v.native(), surface.native(), C.double(x),
|
||||||
|
C.double(y))
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO(jrick) GetSource (depends on Pattern)
|
||||||
|
|
||||||
|
// SetAntialias is a wrapper around cairo_set_antialias().
|
||||||
|
func (v *Context) SetAntialias(antialias Antialias) {
|
||||||
|
C.cairo_set_antialias(v.native(), C.cairo_antialias_t(antialias))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetAntialias is a wrapper around cairo_get_antialias().
|
||||||
|
func (v *Context) GetAntialias() Antialias {
|
||||||
|
c := C.cairo_get_antialias(v.native())
|
||||||
|
return Antialias(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetDash is a wrapper around cairo_set_dash().
|
||||||
|
func (v *Context) SetDash(dashes []float64, offset float64) {
|
||||||
|
header := (*reflect.SliceHeader)(unsafe.Pointer(&dashes))
|
||||||
|
cdashes := (*C.double)(unsafe.Pointer(header.Data))
|
||||||
|
C.cairo_set_dash(v.native(), cdashes, C.int(header.Len),
|
||||||
|
C.double(offset))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetDashCount is a wrapper around cairo_get_dash_count().
|
||||||
|
func (v *Context) GetDashCount() int {
|
||||||
|
c := C.cairo_get_dash_count(v.native())
|
||||||
|
return int(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetDash is a wrapper around cairo_get_dash().
|
||||||
|
func (v *Context) GetDash() (dashes []float64, offset float64) {
|
||||||
|
dashCount := v.GetDashCount()
|
||||||
|
cdashes := (*C.double)(C.calloc(8, C.size_t(dashCount)))
|
||||||
|
var coffset C.double
|
||||||
|
C.cairo_get_dash(v.native(), cdashes, &coffset)
|
||||||
|
header := (*reflect.SliceHeader)((unsafe.Pointer(&dashes)))
|
||||||
|
header.Data = uintptr(unsafe.Pointer(cdashes))
|
||||||
|
header.Len = dashCount
|
||||||
|
header.Cap = dashCount
|
||||||
|
return dashes, float64(coffset)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetFillRule is a wrapper around cairo_set_fill_rule().
|
||||||
|
func (v *Context) SetFillRule(fillRule FillRule) {
|
||||||
|
C.cairo_set_fill_rule(v.native(), C.cairo_fill_rule_t(fillRule))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetFillRule is a wrapper around cairo_get_fill_rule().
|
||||||
|
func (v *Context) GetFillRule() FillRule {
|
||||||
|
c := C.cairo_get_fill_rule(v.native())
|
||||||
|
return FillRule(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetLineCap is a wrapper around cairo_set_line_cap().
|
||||||
|
func (v *Context) SetLineCap(lineCap LineCap) {
|
||||||
|
C.cairo_set_line_cap(v.native(), C.cairo_line_cap_t(lineCap))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetLineCap is a wrapper around cairo_get_line_cap().
|
||||||
|
func (v *Context) GetLineCap() LineCap {
|
||||||
|
c := C.cairo_get_line_cap(v.native())
|
||||||
|
return LineCap(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetLineJoin is a wrapper around cairo_set_line_join().
|
||||||
|
func (v *Context) SetLineJoin(lineJoin LineJoin) {
|
||||||
|
C.cairo_set_line_join(v.native(), C.cairo_line_join_t(lineJoin))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetLineJoin is a wrapper around cairo_get_line_join().
|
||||||
|
func (v *Context) GetLineJoin() LineJoin {
|
||||||
|
c := C.cairo_get_line_join(v.native())
|
||||||
|
return LineJoin(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetLineWidth is a wrapper around cairo_set_line_width().
|
||||||
|
func (v *Context) SetLineWidth(width float64) {
|
||||||
|
C.cairo_set_line_width(v.native(), C.double(width))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetLineWidth is a wrapper cairo_get_line_width().
|
||||||
|
func (v *Context) GetLineWidth() float64 {
|
||||||
|
c := C.cairo_get_line_width(v.native())
|
||||||
|
return float64(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetMiterLimit is a wrapper around cairo_set_miter_limit().
|
||||||
|
func (v *Context) SetMiterLimit(limit float64) {
|
||||||
|
C.cairo_set_miter_limit(v.native(), C.double(limit))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetMiterLimit is a wrapper around cairo_get_miter_limit().
|
||||||
|
func (v *Context) GetMiterLimit() float64 {
|
||||||
|
c := C.cairo_get_miter_limit(v.native())
|
||||||
|
return float64(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetOperator is a wrapper around cairo_set_operator().
|
||||||
|
func (v *Context) SetOperator(op Operator) {
|
||||||
|
C.cairo_set_operator(v.native(), C.cairo_operator_t(op))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetOperator is a wrapper around cairo_get_operator().
|
||||||
|
func (v *Context) GetOperator() Operator {
|
||||||
|
c := C.cairo_get_operator(v.native())
|
||||||
|
return Operator(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetTolerance is a wrapper around cairo_set_tolerance().
|
||||||
|
func (v *Context) SetTolerance(tolerance float64) {
|
||||||
|
C.cairo_set_tolerance(v.native(), C.double(tolerance))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetTolerance is a wrapper around cairo_get_tolerance().
|
||||||
|
func (v *Context) GetTolerance() float64 {
|
||||||
|
c := C.cairo_get_tolerance(v.native())
|
||||||
|
return float64(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Clip is a wrapper around cairo_clip().
|
||||||
|
func (v *Context) Clip() {
|
||||||
|
C.cairo_clip(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// ClipPreserve is a wrapper around cairo_clip_preserve().
|
||||||
|
func (v *Context) ClipPreserve() {
|
||||||
|
C.cairo_clip_preserve(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// ClipExtents is a wrapper around cairo_clip_extents().
|
||||||
|
func (v *Context) ClipExtents() (x1, y1, x2, y2 float64) {
|
||||||
|
var cx1, cy1, cx2, cy2 C.double
|
||||||
|
C.cairo_clip_extents(v.native(), &cx1, &cy1, &cx2, &cy2)
|
||||||
|
return float64(cx1), float64(cy1), float64(cx2), float64(cy2)
|
||||||
|
}
|
||||||
|
|
||||||
|
// InClip is a wrapper around cairo_in_clip().
|
||||||
|
func (v *Context) InClip(x, y float64) bool {
|
||||||
|
c := C.cairo_in_clip(v.native(), C.double(x), C.double(y))
|
||||||
|
return gobool(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ResetClip is a wrapper around cairo_reset_clip().
|
||||||
|
func (v *Context) ResetClip() {
|
||||||
|
C.cairo_reset_clip(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// Rectangle is a wrapper around cairo_rectangle().
|
||||||
|
func (v *Context) Rectangle(x, y, w, h float64) {
|
||||||
|
C.cairo_rectangle(v.native(), C.double(x), C.double(y), C.double(w), C.double(h))
|
||||||
|
}
|
||||||
|
|
||||||
|
// Arc is a wrapper around cairo_arc().
|
||||||
|
func (v *Context) Arc(xc, yc, radius, angle1, angle2 float64) {
|
||||||
|
C.cairo_arc(v.native(), C.double(xc), C.double(yc), C.double(radius), C.double(angle1), C.double(angle2))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ArcNegative is a wrapper around cairo_arc_negative().
|
||||||
|
func (v *Context) ArcNegative(xc, yc, radius, angle1, angle2 float64) {
|
||||||
|
C.cairo_arc_negative(v.native(), C.double(xc), C.double(yc), C.double(radius), C.double(angle1), C.double(angle2))
|
||||||
|
}
|
||||||
|
|
||||||
|
// LineTo is a wrapper around cairo_line_to().
|
||||||
|
func (v *Context) LineTo(x, y float64) {
|
||||||
|
C.cairo_line_to(v.native(), C.double(x), C.double(y))
|
||||||
|
}
|
||||||
|
|
||||||
|
// CurveTo is a wrapper around cairo_curve_to().
|
||||||
|
func (v *Context) CurveTo(x1, y1, x2, y2, x3, y3 float64) {
|
||||||
|
C.cairo_curve_to(v.native(), C.double(x1), C.double(y1), C.double(x2), C.double(y2), C.double(x3), C.double(y3))
|
||||||
|
}
|
||||||
|
|
||||||
|
// MoveTo is a wrapper around cairo_move_to().
|
||||||
|
func (v *Context) MoveTo(x, y float64) {
|
||||||
|
C.cairo_move_to(v.native(), C.double(x), C.double(y))
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO(jrick) CopyRectangleList (depends on RectangleList)
|
||||||
|
|
||||||
|
// Fill is a wrapper around cairo_fill().
|
||||||
|
func (v *Context) Fill() {
|
||||||
|
C.cairo_fill(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// ClosePath is a wrapper around cairo_close_path().
|
||||||
|
func (v *Context) ClosePath() {
|
||||||
|
C.cairo_close_path(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewPath is a wrapper around cairo_new_path().
|
||||||
|
func (v *Context) NewPath() {
|
||||||
|
C.cairo_new_path(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetCurrentPoint is a wrapper around cairo_get_current_point().
|
||||||
|
func (v *Context) GetCurrentPoint() (x, y float64) {
|
||||||
|
C.cairo_get_current_point(v.native(), (*C.double)(&x), (*C.double)(&y))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// FillPreserve is a wrapper around cairo_fill_preserve().
|
||||||
|
func (v *Context) FillPreserve() {
|
||||||
|
C.cairo_fill_preserve(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// FillExtents is a wrapper around cairo_fill_extents().
|
||||||
|
func (v *Context) FillExtents() (x1, y1, x2, y2 float64) {
|
||||||
|
var cx1, cy1, cx2, cy2 C.double
|
||||||
|
C.cairo_fill_extents(v.native(), &cx1, &cy1, &cx2, &cy2)
|
||||||
|
return float64(cx1), float64(cy1), float64(cx2), float64(cy2)
|
||||||
|
}
|
||||||
|
|
||||||
|
// InFill is a wrapper around cairo_in_fill().
|
||||||
|
func (v *Context) InFill(x, y float64) bool {
|
||||||
|
c := C.cairo_in_fill(v.native(), C.double(x), C.double(y))
|
||||||
|
return gobool(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO(jrick) Mask (depends on Pattern)
|
||||||
|
|
||||||
|
// MaskSurface is a wrapper around cairo_mask_surface().
|
||||||
|
func (v *Context) MaskSurface(surface *Surface, surfaceX, surfaceY float64) {
|
||||||
|
C.cairo_mask_surface(v.native(), surface.native(), C.double(surfaceX),
|
||||||
|
C.double(surfaceY))
|
||||||
|
}
|
||||||
|
|
||||||
|
// Paint is a wrapper around cairo_paint().
|
||||||
|
func (v *Context) Paint() {
|
||||||
|
C.cairo_paint(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// PaintWithAlpha is a wrapper around cairo_paint_with_alpha().
|
||||||
|
func (v *Context) PaintWithAlpha(alpha float64) {
|
||||||
|
C.cairo_paint_with_alpha(v.native(), C.double(alpha))
|
||||||
|
}
|
||||||
|
|
||||||
|
// Stroke is a wrapper around cairo_stroke().
|
||||||
|
func (v *Context) Stroke() {
|
||||||
|
C.cairo_stroke(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// StrokePreserve is a wrapper around cairo_stroke_preserve().
|
||||||
|
func (v *Context) StrokePreserve() {
|
||||||
|
C.cairo_stroke_preserve(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// StrokeExtents is a wrapper around cairo_stroke_extents().
|
||||||
|
func (v *Context) StrokeExtents() (x1, y1, x2, y2 float64) {
|
||||||
|
var cx1, cy1, cx2, cy2 C.double
|
||||||
|
C.cairo_stroke_extents(v.native(), &cx1, &cy1, &cx2, &cy2)
|
||||||
|
return float64(cx1), float64(cy1), float64(cx2), float64(cy2)
|
||||||
|
}
|
||||||
|
|
||||||
|
// InStroke is a wrapper around cairo_in_stroke().
|
||||||
|
func (v *Context) InStroke(x, y float64) bool {
|
||||||
|
c := C.cairo_in_stroke(v.native(), C.double(x), C.double(y))
|
||||||
|
return gobool(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// CopyPage is a wrapper around cairo_copy_page().
|
||||||
|
func (v *Context) CopyPage() {
|
||||||
|
C.cairo_copy_page(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// ShowPage is a wrapper around cairo_show_page().
|
||||||
|
func (v *Context) ShowPage() {
|
||||||
|
C.cairo_show_page(v.native())
|
||||||
|
}
|
@ -0,0 +1,7 @@
|
|||||||
|
package cairo
|
||||||
|
|
||||||
|
type ErrorStatus Status
|
||||||
|
|
||||||
|
func (e ErrorStatus) Error() string {
|
||||||
|
return StatusToString(Status(e))
|
||||||
|
}
|
@ -0,0 +1,23 @@
|
|||||||
|
package cairo
|
||||||
|
|
||||||
|
// #cgo pkg-config: cairo cairo-gobject
|
||||||
|
// #include <stdlib.h>
|
||||||
|
// #include <cairo.h>
|
||||||
|
// #include <cairo-gobject.h>
|
||||||
|
import "C"
|
||||||
|
import (
|
||||||
|
"unsafe"
|
||||||
|
)
|
||||||
|
|
||||||
|
// FillRule is a representation of Cairo's cairo_fill_rule_t.
|
||||||
|
type FillRule int
|
||||||
|
|
||||||
|
const (
|
||||||
|
FILL_RULE_WINDING FillRule = C.CAIRO_FILL_RULE_WINDING
|
||||||
|
FILL_RULE_EVEN_ODD FillRule = C.CAIRO_FILL_RULE_EVEN_ODD
|
||||||
|
)
|
||||||
|
|
||||||
|
func marshalFillRule(p uintptr) (interface{}, error) {
|
||||||
|
c := C.g_value_get_enum((*C.GValue)(unsafe.Pointer(p)))
|
||||||
|
return FillRule(c), nil
|
||||||
|
}
|
@ -0,0 +1,28 @@
|
|||||||
|
package cairo
|
||||||
|
|
||||||
|
// #cgo pkg-config: cairo cairo-gobject
|
||||||
|
// #include <stdlib.h>
|
||||||
|
// #include <cairo.h>
|
||||||
|
// #include <cairo-gobject.h>
|
||||||
|
import "C"
|
||||||
|
import (
|
||||||
|
"unsafe"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Format is a representation of Cairo's cairo_format_t.
|
||||||
|
type Format int
|
||||||
|
|
||||||
|
const (
|
||||||
|
FORMAT_INVALID Format = C.CAIRO_FORMAT_INVALID
|
||||||
|
FORMAT_ARGB32 Format = C.CAIRO_FORMAT_ARGB32
|
||||||
|
FORMAT_RGB24 Format = C.CAIRO_FORMAT_RGB24
|
||||||
|
FORMAT_A8 Format = C.CAIRO_FORMAT_A8
|
||||||
|
FORMAT_A1 Format = C.CAIRO_FORMAT_A1
|
||||||
|
FORMAT_RGB16_565 Format = C.CAIRO_FORMAT_RGB16_565
|
||||||
|
FORMAT_RGB30 Format = C.CAIRO_FORMAT_RGB30
|
||||||
|
)
|
||||||
|
|
||||||
|
func marshalFormat(p uintptr) (interface{}, error) {
|
||||||
|
c := C.g_value_get_enum((*C.GValue)(unsafe.Pointer(p)))
|
||||||
|
return Format(c), nil
|
||||||
|
}
|
@ -0,0 +1,24 @@
|
|||||||
|
package cairo
|
||||||
|
|
||||||
|
// #cgo pkg-config: cairo cairo-gobject
|
||||||
|
// #include <stdlib.h>
|
||||||
|
// #include <cairo.h>
|
||||||
|
// #include <cairo-gobject.h>
|
||||||
|
import "C"
|
||||||
|
import (
|
||||||
|
"unsafe"
|
||||||
|
)
|
||||||
|
|
||||||
|
// LineCap is a representation of Cairo's cairo_line_cap_t.
|
||||||
|
type LineCap int
|
||||||
|
|
||||||
|
const (
|
||||||
|
LINE_CAP_BUTT LineCap = C.CAIRO_LINE_CAP_BUTT
|
||||||
|
LINE_CAP_ROUND LineCap = C.CAIRO_LINE_CAP_ROUND
|
||||||
|
LINE_CAP_SQUARE LineCap = C.CAIRO_LINE_CAP_SQUARE
|
||||||
|
)
|
||||||
|
|
||||||
|
func marshalLineCap(p uintptr) (interface{}, error) {
|
||||||
|
c := C.g_value_get_enum((*C.GValue)(unsafe.Pointer(p)))
|
||||||
|
return LineCap(c), nil
|
||||||
|
}
|
@ -0,0 +1,24 @@
|
|||||||
|
package cairo
|
||||||
|
|
||||||
|
// #cgo pkg-config: cairo cairo-gobject
|
||||||
|
// #include <stdlib.h>
|
||||||
|
// #include <cairo.h>
|
||||||
|
// #include <cairo-gobject.h>
|
||||||
|
import "C"
|
||||||
|
import (
|
||||||
|
"unsafe"
|
||||||
|
)
|
||||||
|
|
||||||
|
// LineJoin is a representation of Cairo's cairo_line_join_t.
|
||||||
|
type LineJoin int
|
||||||
|
|
||||||
|
const (
|
||||||
|
LINE_JOIN_MITER LineJoin = C.CAIRO_LINE_JOIN_MITER
|
||||||
|
LINE_JOIN_ROUND LineJoin = C.CAIRO_LINE_JOIN_ROUND
|
||||||
|
LINE_JOIN_BEVEL LineJoin = C.CAIRO_LINE_JOIN_BEVEL
|
||||||
|
)
|
||||||
|
|
||||||
|
func marshalLineJoin(p uintptr) (interface{}, error) {
|
||||||
|
c := C.g_value_get_enum((*C.GValue)(unsafe.Pointer(p)))
|
||||||
|
return LineJoin(c), nil
|
||||||
|
}
|
@ -0,0 +1,13 @@
|
|||||||
|
package cairo
|
||||||
|
|
||||||
|
// MimeType is a representation of Cairo's CAIRO_MIME_TYPE_*
|
||||||
|
// preprocessor constants.
|
||||||
|
type MimeType string
|
||||||
|
|
||||||
|
const (
|
||||||
|
MIME_TYPE_JP2 MimeType = "image/jp2"
|
||||||
|
MIME_TYPE_JPEG MimeType = "image/jpeg"
|
||||||
|
MIME_TYPE_PNG MimeType = "image/png"
|
||||||
|
MIME_TYPE_URI MimeType = "image/x-uri"
|
||||||
|
MIME_TYPE_UNIQUE_ID MimeType = "application/x-cairo.uuid"
|
||||||
|
)
|
@ -0,0 +1,50 @@
|
|||||||
|
package cairo
|
||||||
|
|
||||||
|
// #cgo pkg-config: cairo cairo-gobject
|
||||||
|
// #include <stdlib.h>
|
||||||
|
// #include <cairo.h>
|
||||||
|
// #include <cairo-gobject.h>
|
||||||
|
import "C"
|
||||||
|
import (
|
||||||
|
"unsafe"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Operator is a representation of Cairo's cairo_operator_t.
|
||||||
|
type Operator int
|
||||||
|
|
||||||
|
const (
|
||||||
|
OPERATOR_CLEAR Operator = C.CAIRO_OPERATOR_CLEAR
|
||||||
|
OPERATOR_SOURCE Operator = C.CAIRO_OPERATOR_SOURCE
|
||||||
|
OPERATOR_OVER Operator = C.CAIRO_OPERATOR_OVER
|
||||||
|
OPERATOR_IN Operator = C.CAIRO_OPERATOR_IN
|
||||||
|
OPERATOR_OUT Operator = C.CAIRO_OPERATOR_OUT
|
||||||
|
OPERATOR_ATOP Operator = C.CAIRO_OPERATOR_ATOP
|
||||||
|
OPERATOR_DEST Operator = C.CAIRO_OPERATOR_DEST
|
||||||
|
OPERATOR_DEST_OVER Operator = C.CAIRO_OPERATOR_DEST_OVER
|
||||||
|
OPERATOR_DEST_IN Operator = C.CAIRO_OPERATOR_DEST_IN
|
||||||
|
OPERATOR_DEST_OUT Operator = C.CAIRO_OPERATOR_DEST_OUT
|
||||||
|
OPERATOR_DEST_ATOP Operator = C.CAIRO_OPERATOR_DEST_ATOP
|
||||||
|
OPERATOR_XOR Operator = C.CAIRO_OPERATOR_XOR
|
||||||
|
OPERATOR_ADD Operator = C.CAIRO_OPERATOR_ADD
|
||||||
|
OPERATOR_SATURATE Operator = C.CAIRO_OPERATOR_SATURATE
|
||||||
|
OPERATOR_MULTIPLY Operator = C.CAIRO_OPERATOR_MULTIPLY
|
||||||
|
OPERATOR_SCREEN Operator = C.CAIRO_OPERATOR_SCREEN
|
||||||
|
OPERATOR_OVERLAY Operator = C.CAIRO_OPERATOR_OVERLAY
|
||||||
|
OPERATOR_DARKEN Operator = C.CAIRO_OPERATOR_DARKEN
|
||||||
|
OPERATOR_LIGHTEN Operator = C.CAIRO_OPERATOR_LIGHTEN
|
||||||
|
OPERATOR_COLOR_DODGE Operator = C.CAIRO_OPERATOR_COLOR_DODGE
|
||||||
|
OPERATOR_COLOR_BURN Operator = C.CAIRO_OPERATOR_COLOR_BURN
|
||||||
|
OPERATOR_HARD_LIGHT Operator = C.CAIRO_OPERATOR_HARD_LIGHT
|
||||||
|
OPERATOR_SOFT_LIGHT Operator = C.CAIRO_OPERATOR_SOFT_LIGHT
|
||||||
|
OPERATOR_DIFFERENCE Operator = C.CAIRO_OPERATOR_DIFFERENCE
|
||||||
|
OPERATOR_EXCLUSION Operator = C.CAIRO_OPERATOR_EXCLUSION
|
||||||
|
OPERATOR_HSL_HUE Operator = C.CAIRO_OPERATOR_HSL_HUE
|
||||||
|
OPERATOR_HSL_SATURATION Operator = C.CAIRO_OPERATOR_HSL_SATURATION
|
||||||
|
OPERATOR_HSL_COLOR Operator = C.CAIRO_OPERATOR_HSL_COLOR
|
||||||
|
OPERATOR_HSL_LUMINOSITY Operator = C.CAIRO_OPERATOR_HSL_LUMINOSITY
|
||||||
|
)
|
||||||
|
|
||||||
|
func marshalOperator(p uintptr) (interface{}, error) {
|
||||||
|
c := C.g_value_get_enum((*C.GValue)(unsafe.Pointer(p)))
|
||||||
|
return Operator(c), nil
|
||||||
|
}
|
@ -0,0 +1,109 @@
|
|||||||
|
package cairo
|
||||||
|
|
||||||
|
// #cgo pkg-config: cairo cairo-gobject
|
||||||
|
// #include <stdlib.h>
|
||||||
|
// #include <cairo.h>
|
||||||
|
// #include <cairo-gobject.h>
|
||||||
|
import "C"
|
||||||
|
import (
|
||||||
|
"unsafe"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Status is a representation of Cairo's cairo_status_t.
|
||||||
|
type Status int
|
||||||
|
|
||||||
|
const (
|
||||||
|
STATUS_SUCCESS Status = C.CAIRO_STATUS_SUCCESS
|
||||||
|
STATUS_NO_MEMORY Status = C.CAIRO_STATUS_NO_MEMORY
|
||||||
|
STATUS_INVALID_RESTORE Status = C.CAIRO_STATUS_INVALID_RESTORE
|
||||||
|
STATUS_INVALID_POP_GROUP Status = C.CAIRO_STATUS_INVALID_POP_GROUP
|
||||||
|
STATUS_NO_CURRENT_POINT Status = C.CAIRO_STATUS_NO_CURRENT_POINT
|
||||||
|
STATUS_INVALID_MATRIX Status = C.CAIRO_STATUS_INVALID_MATRIX
|
||||||
|
STATUS_INVALID_STATUS Status = C.CAIRO_STATUS_INVALID_STATUS
|
||||||
|
STATUS_NULL_POINTER Status = C.CAIRO_STATUS_NULL_POINTER
|
||||||
|
STATUS_INVALID_STRING Status = C.CAIRO_STATUS_INVALID_STRING
|
||||||
|
STATUS_INVALID_PATH_DATA Status = C.CAIRO_STATUS_INVALID_PATH_DATA
|
||||||
|
STATUS_READ_ERROR Status = C.CAIRO_STATUS_READ_ERROR
|
||||||
|
STATUS_WRITE_ERROR Status = C.CAIRO_STATUS_WRITE_ERROR
|
||||||
|
STATUS_SURFACE_FINISHED Status = C.CAIRO_STATUS_SURFACE_FINISHED
|
||||||
|
STATUS_SURFACE_TYPE_MISMATCH Status = C.CAIRO_STATUS_SURFACE_TYPE_MISMATCH
|
||||||
|
STATUS_PATTERN_TYPE_MISMATCH Status = C.CAIRO_STATUS_PATTERN_TYPE_MISMATCH
|
||||||
|
STATUS_INVALID_CONTENT Status = C.CAIRO_STATUS_INVALID_CONTENT
|
||||||
|
STATUS_INVALID_FORMAT Status = C.CAIRO_STATUS_INVALID_FORMAT
|
||||||
|
STATUS_INVALID_VISUAL Status = C.CAIRO_STATUS_INVALID_VISUAL
|
||||||
|
STATUS_FILE_NOT_FOUND Status = C.CAIRO_STATUS_FILE_NOT_FOUND
|
||||||
|
STATUS_INVALID_DASH Status = C.CAIRO_STATUS_INVALID_DASH
|
||||||
|
STATUS_INVALID_DSC_COMMENT Status = C.CAIRO_STATUS_INVALID_DSC_COMMENT
|
||||||
|
STATUS_INVALID_INDEX Status = C.CAIRO_STATUS_INVALID_INDEX
|
||||||
|
STATUS_CLIP_NOT_REPRESENTABLE Status = C.CAIRO_STATUS_CLIP_NOT_REPRESENTABLE
|
||||||
|
STATUS_TEMP_FILE_ERROR Status = C.CAIRO_STATUS_TEMP_FILE_ERROR
|
||||||
|
STATUS_INVALID_STRIDE Status = C.CAIRO_STATUS_INVALID_STRIDE
|
||||||
|
STATUS_FONT_TYPE_MISMATCH Status = C.CAIRO_STATUS_FONT_TYPE_MISMATCH
|
||||||
|
STATUS_USER_FONT_IMMUTABLE Status = C.CAIRO_STATUS_USER_FONT_IMMUTABLE
|
||||||
|
STATUS_USER_FONT_ERROR Status = C.CAIRO_STATUS_USER_FONT_ERROR
|
||||||
|
STATUS_NEGATIVE_COUNT Status = C.CAIRO_STATUS_NEGATIVE_COUNT
|
||||||
|
STATUS_INVALID_CLUSTERS Status = C.CAIRO_STATUS_INVALID_CLUSTERS
|
||||||
|
STATUS_INVALID_SLANT Status = C.CAIRO_STATUS_INVALID_SLANT
|
||||||
|
STATUS_INVALID_WEIGHT Status = C.CAIRO_STATUS_INVALID_WEIGHT
|
||||||
|
STATUS_INVALID_SIZE Status = C.CAIRO_STATUS_INVALID_SIZE
|
||||||
|
STATUS_USER_FONT_NOT_IMPLEMENTED Status = C.CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED
|
||||||
|
STATUS_DEVICE_TYPE_MISMATCH Status = C.CAIRO_STATUS_DEVICE_TYPE_MISMATCH
|
||||||
|
STATUS_DEVICE_ERROR Status = C.CAIRO_STATUS_DEVICE_ERROR
|
||||||
|
// STATUS_INVALID_MESH_CONSTRUCTION Status = C.CAIRO_STATUS_INVALID_MESH_CONSTRUCTION (since 1.12)
|
||||||
|
// STATUS_DEVICE_FINISHED Status = C.CAIRO_STATUS_DEVICE_FINISHED (since 1.12)
|
||||||
|
)
|
||||||
|
|
||||||
|
var key_Status = map[Status]string{
|
||||||
|
|
||||||
|
STATUS_SUCCESS: "CAIRO_STATUS_SUCCESS",
|
||||||
|
STATUS_NO_MEMORY: "CAIRO_STATUS_NO_MEMORY",
|
||||||
|
STATUS_INVALID_RESTORE: "CAIRO_STATUS_INVALID_RESTORE",
|
||||||
|
STATUS_INVALID_POP_GROUP: "CAIRO_STATUS_INVALID_POP_GROUP",
|
||||||
|
STATUS_NO_CURRENT_POINT: "CAIRO_STATUS_NO_CURRENT_POINT",
|
||||||
|
STATUS_INVALID_MATRIX: "CAIRO_STATUS_INVALID_MATRIX",
|
||||||
|
STATUS_INVALID_STATUS: "CAIRO_STATUS_INVALID_STATUS",
|
||||||
|
STATUS_NULL_POINTER: "CAIRO_STATUS_NULL_POINTER",
|
||||||
|
STATUS_INVALID_STRING: "CAIRO_STATUS_INVALID_STRING",
|
||||||
|
STATUS_INVALID_PATH_DATA: "CAIRO_STATUS_INVALID_PATH_DATA",
|
||||||
|
STATUS_READ_ERROR: "CAIRO_STATUS_READ_ERROR",
|
||||||
|
STATUS_WRITE_ERROR: "CAIRO_STATUS_WRITE_ERROR",
|
||||||
|
STATUS_SURFACE_FINISHED: "CAIRO_STATUS_SURFACE_FINISHED",
|
||||||
|
STATUS_SURFACE_TYPE_MISMATCH: "CAIRO_STATUS_SURFACE_TYPE_MISMATCH",
|
||||||
|
STATUS_PATTERN_TYPE_MISMATCH: "CAIRO_STATUS_PATTERN_TYPE_MISMATCH",
|
||||||
|
STATUS_INVALID_CONTENT: "CAIRO_STATUS_INVALID_CONTENT",
|
||||||
|
STATUS_INVALID_FORMAT: "CAIRO_STATUS_INVALID_FORMAT",
|
||||||
|
STATUS_INVALID_VISUAL: "CAIRO_STATUS_INVALID_VISUAL",
|
||||||
|
STATUS_FILE_NOT_FOUND: "CAIRO_STATUS_FILE_NOT_FOUND",
|
||||||
|
STATUS_INVALID_DASH: "CAIRO_STATUS_INVALID_DASH",
|
||||||
|
STATUS_INVALID_DSC_COMMENT: "CAIRO_STATUS_INVALID_DSC_COMMENT",
|
||||||
|
STATUS_INVALID_INDEX: "CAIRO_STATUS_INVALID_INDEX",
|
||||||
|
STATUS_CLIP_NOT_REPRESENTABLE: "CAIRO_STATUS_CLIP_NOT_REPRESENTABLE",
|
||||||
|
STATUS_TEMP_FILE_ERROR: "CAIRO_STATUS_TEMP_FILE_ERROR",
|
||||||
|
STATUS_INVALID_STRIDE: "CAIRO_STATUS_INVALID_STRIDE",
|
||||||
|
STATUS_FONT_TYPE_MISMATCH: "CAIRO_STATUS_FONT_TYPE_MISMATCH",
|
||||||
|
STATUS_USER_FONT_IMMUTABLE: "CAIRO_STATUS_USER_FONT_IMMUTABLE",
|
||||||
|
STATUS_USER_FONT_ERROR: "CAIRO_STATUS_USER_FONT_ERROR",
|
||||||
|
STATUS_NEGATIVE_COUNT: "CAIRO_STATUS_NEGATIVE_COUNT",
|
||||||
|
STATUS_INVALID_CLUSTERS: "CAIRO_STATUS_INVALID_CLUSTERS",
|
||||||
|
STATUS_INVALID_SLANT: "CAIRO_STATUS_INVALID_SLANT",
|
||||||
|
STATUS_INVALID_WEIGHT: "CAIRO_STATUS_INVALID_WEIGHT",
|
||||||
|
STATUS_INVALID_SIZE: "CAIRO_STATUS_INVALID_SIZE",
|
||||||
|
STATUS_USER_FONT_NOT_IMPLEMENTED: "CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED",
|
||||||
|
STATUS_DEVICE_TYPE_MISMATCH: "CAIRO_STATUS_DEVICE_TYPE_MISMATCH",
|
||||||
|
STATUS_DEVICE_ERROR: "CAIRO_STATUS_DEVICE_ERROR",
|
||||||
|
}
|
||||||
|
|
||||||
|
func StatusToString(status Status) string {
|
||||||
|
|
||||||
|
s, ok := key_Status[status]
|
||||||
|
if !ok {
|
||||||
|
s = "CAIRO_STATUS_UNDEFINED"
|
||||||
|
}
|
||||||
|
|
||||||
|
return s
|
||||||
|
}
|
||||||
|
|
||||||
|
func marshalStatus(p uintptr) (interface{}, error) {
|
||||||
|
c := C.g_value_get_enum((*C.GValue)(unsafe.Pointer(p)))
|
||||||
|
return Status(c), nil
|
||||||
|
}
|
@ -0,0 +1,215 @@
|
|||||||
|
package cairo
|
||||||
|
|
||||||
|
// #cgo pkg-config: cairo cairo-gobject
|
||||||
|
// #include <stdlib.h>
|
||||||
|
// #include <cairo.h>
|
||||||
|
// #include <cairo-gobject.h>
|
||||||
|
import "C"
|
||||||
|
|
||||||
|
import (
|
||||||
|
"runtime"
|
||||||
|
"unsafe"
|
||||||
|
)
|
||||||
|
|
||||||
|
// TODO(jrick) SetUserData (depends on UserDataKey and DestroyFunc)
|
||||||
|
|
||||||
|
// TODO(jrick) GetUserData (depends on UserDataKey)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* cairo_surface_t
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Surface is a representation of Cairo's cairo_surface_t.
|
||||||
|
type Surface struct {
|
||||||
|
surface *C.cairo_surface_t
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewSurfaceFromPNG(fileName string) (*Surface, error) {
|
||||||
|
|
||||||
|
cstr := C.CString(fileName)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
|
||||||
|
surfaceNative := C.cairo_image_surface_create_from_png(cstr)
|
||||||
|
|
||||||
|
status := Status(C.cairo_surface_status(surfaceNative))
|
||||||
|
if status != STATUS_SUCCESS {
|
||||||
|
return nil, ErrorStatus(status)
|
||||||
|
}
|
||||||
|
|
||||||
|
return &Surface{surfaceNative}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateImageSurface is a wrapper around cairo_image_surface_create().
|
||||||
|
func CreateImageSurface(format Format, width, height int) *Surface {
|
||||||
|
c := C.cairo_image_surface_create(C.cairo_format_t(format),
|
||||||
|
C.int(width), C.int(height))
|
||||||
|
s := wrapSurface(c)
|
||||||
|
runtime.SetFinalizer(s, (*Surface).destroy)
|
||||||
|
return s
|
||||||
|
}
|
||||||
|
|
||||||
|
// native returns a pointer to the underlying cairo_surface_t.
|
||||||
|
func (v *Surface) native() *C.cairo_surface_t {
|
||||||
|
if v == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return v.surface
|
||||||
|
}
|
||||||
|
|
||||||
|
// Native returns a pointer to the underlying cairo_surface_t.
|
||||||
|
func (v *Surface) Native() uintptr {
|
||||||
|
return uintptr(unsafe.Pointer(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
func marshalSurface(p uintptr) (interface{}, error) {
|
||||||
|
c := C.g_value_get_boxed((*C.GValue)(unsafe.Pointer(p)))
|
||||||
|
surface := (*C.cairo_surface_t)(unsafe.Pointer(c))
|
||||||
|
return wrapSurface(surface), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func wrapSurface(surface *C.cairo_surface_t) *Surface {
|
||||||
|
return &Surface{surface}
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewSurface creates a gotk3 cairo Surface from a pointer to a
|
||||||
|
// C cairo_surface_t. This is primarily designed for use with other
|
||||||
|
// gotk3 packages and should be avoided by applications.
|
||||||
|
func NewSurface(s uintptr, needsRef bool) *Surface {
|
||||||
|
ptr := (*C.cairo_surface_t)(unsafe.Pointer(s))
|
||||||
|
surface := wrapSurface(ptr)
|
||||||
|
if needsRef {
|
||||||
|
surface.reference()
|
||||||
|
}
|
||||||
|
runtime.SetFinalizer(surface, (*Surface).destroy)
|
||||||
|
return surface
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateSimilar is a wrapper around cairo_surface_create_similar().
|
||||||
|
func (v *Surface) CreateSimilar(content Content, width, height int) *Surface {
|
||||||
|
c := C.cairo_surface_create_similar(v.native(),
|
||||||
|
C.cairo_content_t(content), C.int(width), C.int(height))
|
||||||
|
s := wrapSurface(c)
|
||||||
|
runtime.SetFinalizer(s, (*Surface).destroy)
|
||||||
|
return s
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO cairo_surface_create_similar_image (since 1.12)
|
||||||
|
|
||||||
|
// CreateForRectangle is a wrapper around cairo_surface_create_for_rectangle().
|
||||||
|
func (v *Surface) CreateForRectangle(x, y, width, height float64) *Surface {
|
||||||
|
c := C.cairo_surface_create_for_rectangle(v.native(), C.double(x),
|
||||||
|
C.double(y), C.double(width), C.double(height))
|
||||||
|
s := wrapSurface(c)
|
||||||
|
runtime.SetFinalizer(s, (*Surface).destroy)
|
||||||
|
return s
|
||||||
|
}
|
||||||
|
|
||||||
|
// reference is a wrapper around cairo_surface_reference().
|
||||||
|
func (v *Surface) reference() {
|
||||||
|
v.surface = C.cairo_surface_reference(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// destroy is a wrapper around cairo_surface_destroy().
|
||||||
|
func (v *Surface) destroy() {
|
||||||
|
C.cairo_surface_destroy(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// Status is a wrapper around cairo_surface_status().
|
||||||
|
func (v *Surface) Status() Status {
|
||||||
|
c := C.cairo_surface_status(v.native())
|
||||||
|
return Status(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Flush is a wrapper around cairo_surface_flush().
|
||||||
|
func (v *Surface) Flush() {
|
||||||
|
C.cairo_surface_flush(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO(jrick) GetDevice (requires Device bindings)
|
||||||
|
|
||||||
|
// TODO(jrick) GetFontOptions (require FontOptions bindings)
|
||||||
|
|
||||||
|
// TODO(jrick) GetContent (requires Content bindings)
|
||||||
|
|
||||||
|
// MarkDirty is a wrapper around cairo_surface_mark_dirty().
|
||||||
|
func (v *Surface) MarkDirty() {
|
||||||
|
C.cairo_surface_mark_dirty(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// MarkDirtyRectangle is a wrapper around cairo_surface_mark_dirty_rectangle().
|
||||||
|
func (v *Surface) MarkDirtyRectangle(x, y, width, height int) {
|
||||||
|
C.cairo_surface_mark_dirty_rectangle(v.native(), C.int(x), C.int(y),
|
||||||
|
C.int(width), C.int(height))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetDeviceOffset is a wrapper around cairo_surface_set_device_offset().
|
||||||
|
func (v *Surface) SetDeviceOffset(x, y float64) {
|
||||||
|
C.cairo_surface_set_device_offset(v.native(), C.double(x), C.double(y))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetDeviceOffset is a wrapper around cairo_surface_get_device_offset().
|
||||||
|
func (v *Surface) GetDeviceOffset() (x, y float64) {
|
||||||
|
var xOffset, yOffset C.double
|
||||||
|
C.cairo_surface_get_device_offset(v.native(), &xOffset, &yOffset)
|
||||||
|
return float64(xOffset), float64(yOffset)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetFallbackResolution is a wrapper around
|
||||||
|
// cairo_surface_set_fallback_resolution().
|
||||||
|
func (v *Surface) SetFallbackResolution(xPPI, yPPI float64) {
|
||||||
|
C.cairo_surface_set_fallback_resolution(v.native(), C.double(xPPI),
|
||||||
|
C.double(yPPI))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetFallbackResolution is a wrapper around
|
||||||
|
// cairo_surface_get_fallback_resolution().
|
||||||
|
func (v *Surface) GetFallbackResolution() (xPPI, yPPI float64) {
|
||||||
|
var x, y C.double
|
||||||
|
C.cairo_surface_get_fallback_resolution(v.native(), &x, &y)
|
||||||
|
return float64(x), float64(y)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetType is a wrapper around cairo_surface_get_type().
|
||||||
|
func (v *Surface) GetType() SurfaceType {
|
||||||
|
c := C.cairo_surface_get_type(v.native())
|
||||||
|
return SurfaceType(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO(jrick) SetUserData (depends on UserDataKey and DestroyFunc)
|
||||||
|
|
||||||
|
// TODO(jrick) GetUserData (depends on UserDataKey)
|
||||||
|
|
||||||
|
// CopyPage is a wrapper around cairo_surface_copy_page().
|
||||||
|
func (v *Surface) CopyPage() {
|
||||||
|
C.cairo_surface_copy_page(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// ShowPage is a wrapper around cairo_surface_show_page().
|
||||||
|
func (v *Surface) ShowPage() {
|
||||||
|
C.cairo_surface_show_page(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// HasShowTextGlyphs is a wrapper around cairo_surface_has_show_text_glyphs().
|
||||||
|
func (v *Surface) HasShowTextGlyphs() bool {
|
||||||
|
c := C.cairo_surface_has_show_text_glyphs(v.native())
|
||||||
|
return gobool(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO(jrick) SetMimeData (depends on DestroyFunc)
|
||||||
|
|
||||||
|
// GetMimeData is a wrapper around cairo_surface_get_mime_data(). The
|
||||||
|
// returned mimetype data is returned as a Go byte slice.
|
||||||
|
func (v *Surface) GetMimeData(mimeType MimeType) []byte {
|
||||||
|
cstr := C.CString(string(mimeType))
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
var data *C.uchar
|
||||||
|
var length C.ulong
|
||||||
|
C.cairo_surface_get_mime_data(v.native(), cstr, &data, &length)
|
||||||
|
return C.GoBytes(unsafe.Pointer(data), C.int(length))
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO(jrick) SupportsMimeType (since 1.12)
|
||||||
|
|
||||||
|
// TODO(jrick) MapToImage (since 1.12)
|
||||||
|
|
||||||
|
// TODO(jrick) UnmapImage (since 1.12)
|
@ -0,0 +1,46 @@
|
|||||||
|
package cairo
|
||||||
|
|
||||||
|
// #cgo pkg-config: cairo cairo-gobject
|
||||||
|
// #include <stdlib.h>
|
||||||
|
// #include <cairo.h>
|
||||||
|
// #include <cairo-gobject.h>
|
||||||
|
import "C"
|
||||||
|
import (
|
||||||
|
"unsafe"
|
||||||
|
)
|
||||||
|
|
||||||
|
// SurfaceType is a representation of Cairo's cairo_surface_type_t.
|
||||||
|
type SurfaceType int
|
||||||
|
|
||||||
|
const (
|
||||||
|
SURFACE_TYPE_IMAGE SurfaceType = C.CAIRO_SURFACE_TYPE_IMAGE
|
||||||
|
SURFACE_TYPE_PDF SurfaceType = C.CAIRO_SURFACE_TYPE_PDF
|
||||||
|
SURFACE_TYPE_PS SurfaceType = C.CAIRO_SURFACE_TYPE_PS
|
||||||
|
SURFACE_TYPE_XLIB SurfaceType = C.CAIRO_SURFACE_TYPE_XLIB
|
||||||
|
SURFACE_TYPE_XCB SurfaceType = C.CAIRO_SURFACE_TYPE_XCB
|
||||||
|
SURFACE_TYPE_GLITZ SurfaceType = C.CAIRO_SURFACE_TYPE_GLITZ
|
||||||
|
SURFACE_TYPE_QUARTZ SurfaceType = C.CAIRO_SURFACE_TYPE_QUARTZ
|
||||||
|
SURFACE_TYPE_WIN32 SurfaceType = C.CAIRO_SURFACE_TYPE_WIN32
|
||||||
|
SURFACE_TYPE_BEOS SurfaceType = C.CAIRO_SURFACE_TYPE_BEOS
|
||||||
|
SURFACE_TYPE_DIRECTFB SurfaceType = C.CAIRO_SURFACE_TYPE_DIRECTFB
|
||||||
|
SURFACE_TYPE_SVG SurfaceType = C.CAIRO_SURFACE_TYPE_SVG
|
||||||
|
SURFACE_TYPE_OS2 SurfaceType = C.CAIRO_SURFACE_TYPE_OS2
|
||||||
|
SURFACE_TYPE_WIN32_PRINTING SurfaceType = C.CAIRO_SURFACE_TYPE_WIN32_PRINTING
|
||||||
|
SURFACE_TYPE_QUARTZ_IMAGE SurfaceType = C.CAIRO_SURFACE_TYPE_QUARTZ_IMAGE
|
||||||
|
SURFACE_TYPE_SCRIPT SurfaceType = C.CAIRO_SURFACE_TYPE_SCRIPT
|
||||||
|
SURFACE_TYPE_QT SurfaceType = C.CAIRO_SURFACE_TYPE_QT
|
||||||
|
SURFACE_TYPE_RECORDING SurfaceType = C.CAIRO_SURFACE_TYPE_RECORDING
|
||||||
|
SURFACE_TYPE_VG SurfaceType = C.CAIRO_SURFACE_TYPE_VG
|
||||||
|
SURFACE_TYPE_GL SurfaceType = C.CAIRO_SURFACE_TYPE_GL
|
||||||
|
SURFACE_TYPE_DRM SurfaceType = C.CAIRO_SURFACE_TYPE_DRM
|
||||||
|
SURFACE_TYPE_TEE SurfaceType = C.CAIRO_SURFACE_TYPE_TEE
|
||||||
|
SURFACE_TYPE_XML SurfaceType = C.CAIRO_SURFACE_TYPE_XML
|
||||||
|
SURFACE_TYPE_SKIA SurfaceType = C.CAIRO_SURFACE_TYPE_SKIA
|
||||||
|
SURFACE_TYPE_SUBSURFACE SurfaceType = C.CAIRO_SURFACE_TYPE_SUBSURFACE
|
||||||
|
// SURFACE_TYPE_COGL SurfaceType = C.CAIRO_SURFACE_TYPE_COGL (since 1.12)
|
||||||
|
)
|
||||||
|
|
||||||
|
func marshalSurfaceType(p uintptr) (interface{}, error) {
|
||||||
|
c := C.g_value_get_enum((*C.GValue)(unsafe.Pointer(p)))
|
||||||
|
return SurfaceType(c), nil
|
||||||
|
}
|
@ -0,0 +1,127 @@
|
|||||||
|
package cairo
|
||||||
|
|
||||||
|
// #cgo pkg-config: cairo cairo-gobject
|
||||||
|
// #include <stdlib.h>
|
||||||
|
// #include <cairo.h>
|
||||||
|
// #include <cairo-gobject.h>
|
||||||
|
import "C"
|
||||||
|
|
||||||
|
import (
|
||||||
|
"unsafe"
|
||||||
|
)
|
||||||
|
|
||||||
|
// FontSlant is a representation of Cairo's cairo_font_slant_t
|
||||||
|
type FontSlant int
|
||||||
|
|
||||||
|
const (
|
||||||
|
FONT_SLANT_NORMAL FontSlant = C.CAIRO_FONT_SLANT_NORMAL
|
||||||
|
FONT_SLANT_ITALIC FontSlant = C.CAIRO_FONT_SLANT_ITALIC
|
||||||
|
FONT_SLANT_OBLIQUE FontSlant = C.CAIRO_FONT_SLANT_OBLIQUE
|
||||||
|
)
|
||||||
|
|
||||||
|
// FontWeight is a representation of Cairo's cairo_font_weight_t
|
||||||
|
type FontWeight int
|
||||||
|
|
||||||
|
const (
|
||||||
|
FONT_WEIGHT_NORMAL FontWeight = C.CAIRO_FONT_WEIGHT_NORMAL
|
||||||
|
FONT_WEIGHT_BOLD FontWeight = C.CAIRO_FONT_WEIGHT_BOLD
|
||||||
|
)
|
||||||
|
|
||||||
|
func (v *Context) SelectFontFace(family string, slant FontSlant, weight FontWeight) {
|
||||||
|
cstr := C.CString(family)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
C.cairo_select_font_face(v.native(), (*C.char)(cstr), C.cairo_font_slant_t(slant), C.cairo_font_weight_t(weight))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (v *Context) SetFontSize(size float64) {
|
||||||
|
C.cairo_set_font_size(v.native(), C.double(size))
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: cairo_set_font_matrix
|
||||||
|
|
||||||
|
// TODO: cairo_get_font_matrix
|
||||||
|
|
||||||
|
// TODO: cairo_set_font_options
|
||||||
|
|
||||||
|
// TODO: cairo_get_font_options
|
||||||
|
|
||||||
|
// TODO: cairo_set_font_face
|
||||||
|
|
||||||
|
// TODO: cairo_get_font_face
|
||||||
|
|
||||||
|
// TODO: cairo_set_scaled_font
|
||||||
|
|
||||||
|
// TODO: cairo_get_scaled_font
|
||||||
|
|
||||||
|
func (v *Context) ShowText(utf8 string) {
|
||||||
|
cstr := C.CString(utf8)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
C.cairo_show_text(v.native(), (*C.char)(cstr))
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: cairo_show_glyphs
|
||||||
|
|
||||||
|
// TODO: cairo_show_text_glyphs
|
||||||
|
|
||||||
|
type FontExtents struct {
|
||||||
|
Ascent float64
|
||||||
|
Descent float64
|
||||||
|
Height float64
|
||||||
|
MaxXAdvance float64
|
||||||
|
MaxYAdvance float64
|
||||||
|
}
|
||||||
|
|
||||||
|
func (v *Context) FontExtents() FontExtents {
|
||||||
|
var extents C.cairo_font_extents_t
|
||||||
|
C.cairo_font_extents(v.native(), &extents)
|
||||||
|
return FontExtents{
|
||||||
|
Ascent: float64(extents.ascent),
|
||||||
|
Descent: float64(extents.descent),
|
||||||
|
Height: float64(extents.height),
|
||||||
|
MaxXAdvance: float64(extents.max_x_advance),
|
||||||
|
MaxYAdvance: float64(extents.max_y_advance),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
type TextExtents struct {
|
||||||
|
XBearing float64
|
||||||
|
YBearing float64
|
||||||
|
Width float64
|
||||||
|
Height float64
|
||||||
|
XAdvance float64
|
||||||
|
YAdvance float64
|
||||||
|
}
|
||||||
|
|
||||||
|
func (v *Context) TextExtents(utf8 string) TextExtents {
|
||||||
|
cstr := C.CString(utf8)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
var extents C.cairo_text_extents_t
|
||||||
|
C.cairo_text_extents(v.native(), (*C.char)(cstr), &extents)
|
||||||
|
return TextExtents{
|
||||||
|
XBearing: float64(extents.x_bearing),
|
||||||
|
YBearing: float64(extents.y_bearing),
|
||||||
|
Width: float64(extents.width),
|
||||||
|
Height: float64(extents.height),
|
||||||
|
XAdvance: float64(extents.x_advance),
|
||||||
|
YAdvance: float64(extents.y_advance),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: cairo_glyph_extents
|
||||||
|
|
||||||
|
// TODO: cairo_toy_font_face_create
|
||||||
|
|
||||||
|
// TODO: cairo_toy_font_face_get_family
|
||||||
|
|
||||||
|
// TODO: cairo_toy_font_face_get_slant
|
||||||
|
|
||||||
|
// TODO: cairo_toy_font_face_get_weight
|
||||||
|
|
||||||
|
// TODO: cairo_glyph_allocate
|
||||||
|
|
||||||
|
// TODO: cairo_glyph_free
|
||||||
|
|
||||||
|
// TODO: cairo_text_cluster_allocate
|
||||||
|
|
||||||
|
// TODO: cairo_text_cluster_free
|
||||||
|
|
@ -0,0 +1,32 @@
|
|||||||
|
package cairo
|
||||||
|
|
||||||
|
// #cgo pkg-config: cairo cairo-gobject
|
||||||
|
// #include <stdlib.h>
|
||||||
|
// #include <cairo.h>
|
||||||
|
// #include <cairo-gobject.h>
|
||||||
|
import "C"
|
||||||
|
|
||||||
|
// Translate is a wrapper around cairo_translate.
|
||||||
|
func (v *Context) Translate(tx, ty float64) {
|
||||||
|
C.cairo_translate(v.native(), C.double(tx), C.double(ty))
|
||||||
|
}
|
||||||
|
|
||||||
|
// Scale is a wrapper around cairo_scale.
|
||||||
|
func (v *Context) Scale(sx, sy float64) {
|
||||||
|
C.cairo_scale(v.native(), C.double(sx), C.double(sy))
|
||||||
|
}
|
||||||
|
|
||||||
|
// Rotate is a wrapper around cairo_rotate.
|
||||||
|
func (v *Context) Rotate(angle float64) {
|
||||||
|
C.cairo_rotate(v.native(), C.double(angle))
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: The following depend on cairo_matrix_t:
|
||||||
|
//void cairo_transform ()
|
||||||
|
//void cairo_set_matrix ()
|
||||||
|
//void cairo_get_matrix ()
|
||||||
|
//void cairo_identity_matrix ()
|
||||||
|
//void cairo_user_to_device ()
|
||||||
|
//void cairo_user_to_device_distance ()
|
||||||
|
//void cairo_device_to_user ()
|
||||||
|
//void cairo_device_to_user_distance ()
|
@ -0,0 +1,21 @@
|
|||||||
|
package cairo
|
||||||
|
|
||||||
|
// #cgo pkg-config: cairo cairo-gobject
|
||||||
|
// #include <stdlib.h>
|
||||||
|
// #include <cairo.h>
|
||||||
|
// #include <cairo-gobject.h>
|
||||||
|
import "C"
|
||||||
|
|
||||||
|
func cairobool(b bool) C.cairo_bool_t {
|
||||||
|
if b {
|
||||||
|
return C.cairo_bool_t(1)
|
||||||
|
}
|
||||||
|
return C.cairo_bool_t(0)
|
||||||
|
}
|
||||||
|
|
||||||
|
func gobool(b C.cairo_bool_t) bool {
|
||||||
|
if b != 0 {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,100 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2013-2014 Conformal Systems <info@conformal.com>
|
||||||
|
*
|
||||||
|
* This file originated from: http://opensource.conformal.com/
|
||||||
|
*
|
||||||
|
* Permission to use, copy, modify, and distribute this software for any
|
||||||
|
* purpose with or without fee is hereby granted, provided that the above
|
||||||
|
* copyright notice and this permission notice appear in all copies.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||||
|
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||||
|
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||||
|
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||||
|
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||||
|
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||||
|
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
// Type Casting
|
||||||
|
static GdkAtom
|
||||||
|
toGdkAtom(void *p)
|
||||||
|
{
|
||||||
|
return ((GdkAtom)p);
|
||||||
|
}
|
||||||
|
|
||||||
|
static GdkDevice *
|
||||||
|
toGdkDevice(void *p)
|
||||||
|
{
|
||||||
|
return (GDK_DEVICE(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GdkCursor *
|
||||||
|
toGdkCursor(void *p)
|
||||||
|
{
|
||||||
|
return (GDK_CURSOR(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GdkDeviceManager *
|
||||||
|
toGdkDeviceManager(void *p)
|
||||||
|
{
|
||||||
|
return (GDK_DEVICE_MANAGER(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GdkDisplay *
|
||||||
|
toGdkDisplay(void *p)
|
||||||
|
{
|
||||||
|
return (GDK_DISPLAY(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GdkDragContext *
|
||||||
|
toGdkDragContext(void *p)
|
||||||
|
{
|
||||||
|
return (GDK_DRAG_CONTEXT(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GdkPixbuf *
|
||||||
|
toGdkPixbuf(void *p)
|
||||||
|
{
|
||||||
|
return (GDK_PIXBUF(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
_gdk_pixbuf_save_png(GdkPixbuf *pixbuf,
|
||||||
|
const char *filename, GError ** err, const char *compression)
|
||||||
|
{
|
||||||
|
return gdk_pixbuf_save(pixbuf, filename, "png", err, "compression", compression, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
_gdk_pixbuf_save_jpeg(GdkPixbuf *pixbuf,
|
||||||
|
const char *filename, GError ** err, const char *quality)
|
||||||
|
{
|
||||||
|
return gdk_pixbuf_save(pixbuf, filename, "jpeg", err, "quality", quality, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
static GdkPixbufLoader *
|
||||||
|
toGdkPixbufLoader(void *p)
|
||||||
|
{
|
||||||
|
return (GDK_PIXBUF_LOADER(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GdkScreen *
|
||||||
|
toGdkScreen(void *p)
|
||||||
|
{
|
||||||
|
return (GDK_SCREEN(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GdkVisual *
|
||||||
|
toGdkVisual(void *p)
|
||||||
|
{
|
||||||
|
return (GDK_VISUAL(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GdkWindow *
|
||||||
|
toGdkWindow(void *p)
|
||||||
|
{
|
||||||
|
return (GDK_WINDOW(p));
|
||||||
|
}
|
@ -0,0 +1,34 @@
|
|||||||
|
// Copyright (c) 2013-2014 Conformal Systems <info@conformal.com>
|
||||||
|
//
|
||||||
|
// This file originated from: http://opensource.conformal.com/
|
||||||
|
//
|
||||||
|
// Permission to use, copy, modify, and distribute this software for any
|
||||||
|
// purpose with or without fee is hereby granted, provided that the above
|
||||||
|
// copyright notice and this permission notice appear in all copies.
|
||||||
|
//
|
||||||
|
// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||||
|
// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||||
|
// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||||
|
// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||||
|
// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||||
|
// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||||
|
// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
|
||||||
|
// This file includes wrapers for symbols deprecated beginning with GTK 3.10,
|
||||||
|
// and should only be included in a build targeted intended to target GTK
|
||||||
|
// 3.8 or earlier. To target an earlier build build, use the build tag
|
||||||
|
// gtk_MAJOR_MINOR. For example, to target GTK 3.8, run
|
||||||
|
// 'go build -tags gtk_3_8'.
|
||||||
|
// +build gtk_3_6 gtk_3_8
|
||||||
|
|
||||||
|
package gdk
|
||||||
|
|
||||||
|
// #cgo pkg-config: gdk-3.0
|
||||||
|
// #include <gdk/gdk.h>
|
||||||
|
import "C"
|
||||||
|
|
||||||
|
// GetNScreens is a wrapper around gdk_display_get_n_screens().
|
||||||
|
func (v *Display) GetNScreens() int {
|
||||||
|
c := C.gdk_display_get_n_screens(v.native())
|
||||||
|
return int(c)
|
||||||
|
}
|
@ -0,0 +1,13 @@
|
|||||||
|
//+build gtk_3_6 gtk_3_8 gtk_3_10 gtk_3_12 gtk_3_14
|
||||||
|
|
||||||
|
package gdk
|
||||||
|
|
||||||
|
// #cgo pkg-config: gdk-3.0
|
||||||
|
// #include <gdk/gdk.h>
|
||||||
|
import "C"
|
||||||
|
|
||||||
|
// SupportsComposite() is a wrapper around gdk_display_supports_composite().
|
||||||
|
func (v *Display) SupportsComposite() bool {
|
||||||
|
c := C.gdk_display_supports_composite(v.native())
|
||||||
|
return gobool(c)
|
||||||
|
}
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,198 @@
|
|||||||
|
package gdk
|
||||||
|
|
||||||
|
// #cgo pkg-config: gdk-3.0
|
||||||
|
// #include <gdk/gdk.h>
|
||||||
|
// #include "gdk.go.h"
|
||||||
|
import "C"
|
||||||
|
import (
|
||||||
|
"runtime"
|
||||||
|
"unsafe"
|
||||||
|
|
||||||
|
"github.com/gotk3/gotk3/glib"
|
||||||
|
)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GdkScreen
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Screen is a representation of GDK's GdkScreen.
|
||||||
|
type Screen struct {
|
||||||
|
*glib.Object
|
||||||
|
}
|
||||||
|
|
||||||
|
// native returns a pointer to the underlying GdkScreen.
|
||||||
|
func (v *Screen) native() *C.GdkScreen {
|
||||||
|
if v == nil || v.GObject == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
p := unsafe.Pointer(v.GObject)
|
||||||
|
return C.toGdkScreen(p)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Native returns a pointer to the underlying GdkScreen.
|
||||||
|
func (v *Screen) Native() uintptr {
|
||||||
|
return uintptr(unsafe.Pointer(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
func marshalScreen(p uintptr) (interface{}, error) {
|
||||||
|
c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
|
||||||
|
obj := &glib.Object{glib.ToGObject(unsafe.Pointer(c))}
|
||||||
|
return &Screen{obj}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func toScreen(s *C.GdkScreen) (*Screen, error) {
|
||||||
|
if s == nil {
|
||||||
|
return nil, nilPtrErr
|
||||||
|
}
|
||||||
|
obj := &glib.Object{glib.ToGObject(unsafe.Pointer(s))}
|
||||||
|
return &Screen{obj}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetRGBAVisual is a wrapper around gdk_screen_get_rgba_visual().
|
||||||
|
func (v *Screen) GetRGBAVisual() (*Visual, error) {
|
||||||
|
c := C.gdk_screen_get_rgba_visual(v.native())
|
||||||
|
if c == nil {
|
||||||
|
return nil, nilPtrErr
|
||||||
|
}
|
||||||
|
obj := &glib.Object{glib.ToGObject(unsafe.Pointer(c))}
|
||||||
|
visual := &Visual{obj}
|
||||||
|
obj.Ref()
|
||||||
|
runtime.SetFinalizer(obj, (*glib.Object).Unref)
|
||||||
|
return visual, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetSystemVisual is a wrapper around gdk_screen_get_system_visual().
|
||||||
|
func (v *Screen) GetSystemVisual() (*Visual, error) {
|
||||||
|
c := C.gdk_screen_get_system_visual(v.native())
|
||||||
|
if c == nil {
|
||||||
|
return nil, nilPtrErr
|
||||||
|
}
|
||||||
|
obj := &glib.Object{glib.ToGObject(unsafe.Pointer(c))}
|
||||||
|
visual := &Visual{obj}
|
||||||
|
obj.Ref()
|
||||||
|
runtime.SetFinalizer(obj, (*glib.Object).Unref)
|
||||||
|
return visual, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetWidth is a wrapper around gdk_screen_get_width().
|
||||||
|
func (v *Screen) GetWidth() int {
|
||||||
|
c := C.gdk_screen_get_width(v.native())
|
||||||
|
return int(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetHeight is a wrapper around gdk_screen_get_height().
|
||||||
|
func (v *Screen) GetHeight() int {
|
||||||
|
c := C.gdk_screen_get_height(v.native())
|
||||||
|
return int(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ScreenGetDefault is a wrapper aroud gdk_screen_get_default().
|
||||||
|
func ScreenGetDefault() (*Screen, error) {
|
||||||
|
return toScreen(C.gdk_screen_get_default())
|
||||||
|
}
|
||||||
|
|
||||||
|
// IsComposited is a wrapper around gdk_screen_is_composited().
|
||||||
|
func (v *Screen) IsComposited() bool {
|
||||||
|
return gobool(C.gdk_screen_is_composited(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetRootWindow is a wrapper around gdk_screen_get_root_window().
|
||||||
|
func (v *Screen) GetRootWindow() (*Window, error) {
|
||||||
|
return toWindow(C.gdk_screen_get_root_window(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetDisplay is a wrapper around gdk_screen_get_display().
|
||||||
|
func (v *Screen) GetDisplay() (*Display, error) {
|
||||||
|
return toDisplay(C.gdk_screen_get_display(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetNumber is a wrapper around gdk_screen_get_number().
|
||||||
|
func (v *Screen) GetNumber() int {
|
||||||
|
return int(C.gdk_screen_get_number(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetWidthMM is a wrapper around gdk_screen_get_width_mm().
|
||||||
|
func (v *Screen) GetWidthMM() int {
|
||||||
|
return int(C.gdk_screen_get_width_mm(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetHeightMM is a wrapper around gdk_screen_get_height_mm().
|
||||||
|
func (v *Screen) GetHeightMM() int {
|
||||||
|
return int(C.gdk_screen_get_height_mm(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
func toString(c *C.gchar) (string, error) {
|
||||||
|
if c == nil {
|
||||||
|
return "", nilPtrErr
|
||||||
|
}
|
||||||
|
return C.GoString((*C.char)(c)), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// MakeDisplayName is a wrapper around gdk_screen_make_display_name().
|
||||||
|
func (v *Screen) MakeDisplayName() (string, error) {
|
||||||
|
return toString(C.gdk_screen_make_display_name(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetNMonitors is a wrapper around gdk_screen_get_n_monitors().
|
||||||
|
func (v *Screen) GetNMonitors() int {
|
||||||
|
return int(C.gdk_screen_get_n_monitors(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetPrimaryMonitor is a wrapper around gdk_screen_get_primary_monitor().
|
||||||
|
func (v *Screen) GetPrimaryMonitor() int {
|
||||||
|
return int(C.gdk_screen_get_primary_monitor(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetMonitorAtPoint is a wrapper around gdk_screen_get_monitor_at_point().
|
||||||
|
func (v *Screen) GetMonitorAtPoint(x, y int) int {
|
||||||
|
return int(C.gdk_screen_get_monitor_at_point(v.native(), C.gint(x), C.gint(y)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetMonitorAtWindow is a wrapper around gdk_screen_get_monitor_at_window().
|
||||||
|
func (v *Screen) GetMonitorAtWindow(w *Window) int {
|
||||||
|
return int(C.gdk_screen_get_monitor_at_window(v.native(), w.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetMonitorHeightMM is a wrapper around gdk_screen_get_monitor_height_mm().
|
||||||
|
func (v *Screen) GetMonitorHeightMM(m int) int {
|
||||||
|
return int(C.gdk_screen_get_monitor_height_mm(v.native(), C.gint(m)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetMonitorWidthMM is a wrapper around gdk_screen_get_monitor_width_mm().
|
||||||
|
func (v *Screen) GetMonitorWidthMM(m int) int {
|
||||||
|
return int(C.gdk_screen_get_monitor_width_mm(v.native(), C.gint(m)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetMonitorPlugName is a wrapper around gdk_screen_get_monitor_plug_name().
|
||||||
|
func (v *Screen) GetMonitorPlugName(m int) (string, error) {
|
||||||
|
return toString(C.gdk_screen_get_monitor_plug_name(v.native(), C.gint(m)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetMonitorScaleFactor is a wrapper around gdk_screen_get_monitor_scale_factor().
|
||||||
|
func (v *Screen) GetMonitorScaleFactor(m int) int {
|
||||||
|
return int(C.gdk_screen_get_monitor_scale_factor(v.native(), C.gint(m)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetResolution is a wrapper around gdk_screen_get_resolution().
|
||||||
|
func (v *Screen) GetResolution() float64 {
|
||||||
|
return float64(C.gdk_screen_get_resolution(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetResolution is a wrapper around gdk_screen_set_resolution().
|
||||||
|
func (v *Screen) SetResolution(r float64) {
|
||||||
|
C.gdk_screen_set_resolution(v.native(), C.gdouble(r))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetActiveWindow is a wrapper around gdk_screen_get_active_window().
|
||||||
|
func (v *Screen) GetActiveWindow() (*Window, error) {
|
||||||
|
return toWindow(C.gdk_screen_get_active_window(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// void gdk_screen_set_font_options ()
|
||||||
|
// gboolean gdk_screen_get_setting ()
|
||||||
|
// const cairo_font_options_t * gdk_screen_get_font_options ()
|
||||||
|
// GList * gdk_screen_get_window_stack ()
|
||||||
|
// GList * gdk_screen_list_visuals ()
|
||||||
|
// GList * gdk_screen_get_toplevel_windows ()
|
||||||
|
// void gdk_screen_get_monitor_geometry ()
|
||||||
|
// void gdk_screen_get_monitor_workarea ()
|
@ -0,0 +1,25 @@
|
|||||||
|
// +build !linux no_x11
|
||||||
|
|
||||||
|
package gdk
|
||||||
|
|
||||||
|
func WorkspaceControlSupported() bool {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetScreenNumber is a wrapper around gdk_x11_screen_get_screen_number().
|
||||||
|
// It only works on GDK versions compiled with X11 support - its return value can't be used if WorkspaceControlSupported returns false
|
||||||
|
func (v *Screen) GetScreenNumber() int {
|
||||||
|
return -1
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetNumberOfDesktops is a wrapper around gdk_x11_screen_get_number_of_desktops().
|
||||||
|
// It only works on GDK versions compiled with X11 support - its return value can't be used if WorkspaceControlSupported returns false
|
||||||
|
func (v *Screen) GetNumberOfDesktops() uint32 {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetCurrentDesktop is a wrapper around gdk_x11_screen_get_current_desktop().
|
||||||
|
// It only works on GDK versions compiled with X11 support - its return value can't be used if WorkspaceControlSupported returns false
|
||||||
|
func (v *Screen) GetCurrentDesktop() uint32 {
|
||||||
|
return 0
|
||||||
|
}
|
@ -0,0 +1,31 @@
|
|||||||
|
// +build linux
|
||||||
|
// +build !no_x11
|
||||||
|
|
||||||
|
package gdk
|
||||||
|
|
||||||
|
// #cgo pkg-config: gdk-x11-3.0
|
||||||
|
// #include <gdk/gdk.h>
|
||||||
|
// #include <gdk/gdkx.h>
|
||||||
|
import "C"
|
||||||
|
|
||||||
|
func WorkspaceControlSupported() bool {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetScreenNumber is a wrapper around gdk_x11_screen_get_screen_number().
|
||||||
|
// It only works on GDK versions compiled with X11 support - its return value can't be used if WorkspaceControlSupported returns false
|
||||||
|
func (v *Screen) GetScreenNumber() int {
|
||||||
|
return int(C.gdk_x11_screen_get_screen_number(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetNumberOfDesktops is a wrapper around gdk_x11_screen_get_number_of_desktops().
|
||||||
|
// It only works on GDK versions compiled with X11 support - its return value can't be used if WorkspaceControlSupported returns false
|
||||||
|
func (v *Screen) GetNumberOfDesktops() uint32 {
|
||||||
|
return uint32(C.gdk_x11_screen_get_number_of_desktops(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetCurrentDesktop is a wrapper around gdk_x11_screen_get_current_desktop().
|
||||||
|
// It only works on GDK versions compiled with X11 support - its return value can't be used if WorkspaceControlSupported returns false
|
||||||
|
func (v *Screen) GetCurrentDesktop() uint32 {
|
||||||
|
return uint32(C.gdk_x11_screen_get_current_desktop(v.native()))
|
||||||
|
}
|
@ -0,0 +1,17 @@
|
|||||||
|
// +build !linux no_x11
|
||||||
|
|
||||||
|
package gdk
|
||||||
|
|
||||||
|
func (v *Window) MoveToCurrentDesktop() {
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetDesktop is a wrapper around gdk_x11_window_get_desktop().
|
||||||
|
// It only works on GDK versions compiled with X11 support - its return value can't be used if WorkspaceControlSupported returns false
|
||||||
|
func (v *Window) GetDesktop() uint32 {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
// MoveToDesktop is a wrapper around gdk_x11_window_move_to_desktop().
|
||||||
|
// It only works on GDK versions compiled with X11 support - its return value can't be used if WorkspaceControlSupported returns false
|
||||||
|
func (v *Window) MoveToDesktop(d uint32) {
|
||||||
|
}
|
@ -0,0 +1,27 @@
|
|||||||
|
// +build linux
|
||||||
|
// +build !no_x11
|
||||||
|
|
||||||
|
package gdk
|
||||||
|
|
||||||
|
// #cgo pkg-config: gdk-x11-3.0
|
||||||
|
// #include <gdk/gdk.h>
|
||||||
|
// #include <gdk/gdkx.h>
|
||||||
|
import "C"
|
||||||
|
|
||||||
|
// MoveToCurrentDesktop is a wrapper around gdk_x11_window_move_to_current_desktop().
|
||||||
|
// It only works on GDK versions compiled with X11 support - its return value can't be used if WorkspaceControlSupported returns false
|
||||||
|
func (v *Window) MoveToCurrentDesktop() {
|
||||||
|
C.gdk_x11_window_move_to_current_desktop(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetDesktop is a wrapper around gdk_x11_window_get_desktop().
|
||||||
|
// It only works on GDK versions compiled with X11 support - its return value can't be used if WorkspaceControlSupported returns false
|
||||||
|
func (v *Window) GetDesktop() uint32 {
|
||||||
|
return uint32(C.gdk_x11_window_get_desktop(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// MoveToDesktop is a wrapper around gdk_x11_window_move_to_desktop().
|
||||||
|
// It only works on GDK versions compiled with X11 support - its return value can't be used if WorkspaceControlSupported returns false
|
||||||
|
func (v *Window) MoveToDesktop(d uint32) {
|
||||||
|
C.gdk_x11_window_move_to_desktop(v.native(), C.guint32(d))
|
||||||
|
}
|
@ -0,0 +1,216 @@
|
|||||||
|
package glib
|
||||||
|
|
||||||
|
// #cgo pkg-config: glib-2.0 gobject-2.0
|
||||||
|
// #include <gio/gio.h>
|
||||||
|
// #include <glib.h>
|
||||||
|
// #include <glib-object.h>
|
||||||
|
// #include "glib.go.h"
|
||||||
|
import "C"
|
||||||
|
import "unsafe"
|
||||||
|
|
||||||
|
// Application is a representation of GApplication.
|
||||||
|
type Application struct {
|
||||||
|
*Object
|
||||||
|
}
|
||||||
|
|
||||||
|
// native() returns a pointer to the underlying GApplication.
|
||||||
|
func (v *Application) native() *C.GApplication {
|
||||||
|
if v == nil || v.GObject == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return C.toGApplication(unsafe.Pointer(v.GObject))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (v *Application) Native() uintptr {
|
||||||
|
return uintptr(unsafe.Pointer(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
func marshalApplication(p uintptr) (interface{}, error) {
|
||||||
|
c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
|
||||||
|
return wrapApplication(wrapObject(unsafe.Pointer(c))), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func wrapApplication(obj *Object) *Application {
|
||||||
|
return &Application{obj}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ApplicationIDIsValid is a wrapper around g_application_id_is_valid().
|
||||||
|
func ApplicationIDIsValid(id string) bool {
|
||||||
|
cstr1 := (*C.gchar)(C.CString(id))
|
||||||
|
defer C.free(unsafe.Pointer(cstr1))
|
||||||
|
|
||||||
|
return gobool(C.g_application_id_is_valid(cstr1))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ApplicationNew is a wrapper around g_application_new().
|
||||||
|
func ApplicationNew(appID string, flags ApplicationFlags) *Application {
|
||||||
|
cstr1 := (*C.gchar)(C.CString(appID))
|
||||||
|
defer C.free(unsafe.Pointer(cstr1))
|
||||||
|
|
||||||
|
c := C.g_application_new(cstr1, C.GApplicationFlags(flags))
|
||||||
|
if c == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return wrapApplication(wrapObject(unsafe.Pointer(c)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetApplicationID is a wrapper around g_application_get_application_id().
|
||||||
|
func (v *Application) GetApplicationID() string {
|
||||||
|
c := C.g_application_get_application_id(v.native())
|
||||||
|
|
||||||
|
return C.GoString((*C.char)(c))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetApplicationID is a wrapper around g_application_set_application_id().
|
||||||
|
func (v *Application) SetApplicationID(id string) {
|
||||||
|
cstr1 := (*C.gchar)(C.CString(id))
|
||||||
|
defer C.free(unsafe.Pointer(cstr1))
|
||||||
|
|
||||||
|
C.g_application_set_application_id(v.native(), cstr1)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetInactivityTimeout is a wrapper around g_application_get_inactivity_timeout().
|
||||||
|
func (v *Application) GetInactivityTimeout() uint {
|
||||||
|
return uint(C.g_application_get_inactivity_timeout(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetInactivityTimeout is a wrapper around g_application_set_inactivity_timeout().
|
||||||
|
func (v *Application) SetInactivityTimeout(timeout uint) {
|
||||||
|
C.g_application_set_inactivity_timeout(v.native(), C.guint(timeout))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetFlags is a wrapper around g_application_get_flags().
|
||||||
|
func (v *Application) GetFlags() ApplicationFlags {
|
||||||
|
return ApplicationFlags(C.g_application_get_flags(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetFlags is a wrapper around g_application_set_flags().
|
||||||
|
func (v *Application) SetFlags(flags ApplicationFlags) {
|
||||||
|
C.g_application_set_flags(v.native(), C.GApplicationFlags(flags))
|
||||||
|
}
|
||||||
|
|
||||||
|
// Only available in GLib 2.42+
|
||||||
|
// // GetResourceBasePath is a wrapper around g_application_get_resource_base_path().
|
||||||
|
// func (v *Application) GetResourceBasePath() string {
|
||||||
|
// c := C.g_application_get_resource_base_path(v.native())
|
||||||
|
|
||||||
|
// return C.GoString((*C.char)(c))
|
||||||
|
// }
|
||||||
|
|
||||||
|
// Only available in GLib 2.42+
|
||||||
|
// // SetResourceBasePath is a wrapper around g_application_set_resource_base_path().
|
||||||
|
// func (v *Application) SetResourceBasePath(bp string) {
|
||||||
|
// cstr1 := (*C.gchar)(C.CString(bp))
|
||||||
|
// defer C.free(unsafe.Pointer(cstr1))
|
||||||
|
|
||||||
|
// C.g_application_set_resource_base_path(v.native(), cstr1)
|
||||||
|
// }
|
||||||
|
|
||||||
|
// GetDbusObjectPath is a wrapper around g_application_get_dbus_object_path().
|
||||||
|
func (v *Application) GetDbusObjectPath() string {
|
||||||
|
c := C.g_application_get_dbus_object_path(v.native())
|
||||||
|
|
||||||
|
return C.GoString((*C.char)(c))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetIsRegistered is a wrapper around g_application_get_is_registered().
|
||||||
|
func (v *Application) GetIsRegistered() bool {
|
||||||
|
return gobool(C.g_application_get_is_registered(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetIsRemote is a wrapper around g_application_get_is_remote().
|
||||||
|
func (v *Application) GetIsRemote() bool {
|
||||||
|
return gobool(C.g_application_get_is_remote(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// Hold is a wrapper around g_application_hold().
|
||||||
|
func (v *Application) Hold() {
|
||||||
|
C.g_application_hold(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// Release is a wrapper around g_application_release().
|
||||||
|
func (v *Application) Release() {
|
||||||
|
C.g_application_release(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// Quit is a wrapper around g_application_quit().
|
||||||
|
func (v *Application) Quit() {
|
||||||
|
C.g_application_quit(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// Activate is a wrapper around g_application_activate().
|
||||||
|
func (v *Application) Activate() {
|
||||||
|
C.g_application_activate(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// SendNotification is a wrapper around g_application_send_notification().
|
||||||
|
func (v *Application) SendNotification(id string, notification *Notification) {
|
||||||
|
cstr1 := (*C.gchar)(C.CString(id))
|
||||||
|
defer C.free(unsafe.Pointer(cstr1))
|
||||||
|
|
||||||
|
C.g_application_send_notification(v.native(), cstr1, notification.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// WithdrawNotification is a wrapper around g_application_withdraw_notification().
|
||||||
|
func (v *Application) WithdrawNotification(id string) {
|
||||||
|
cstr1 := (*C.gchar)(C.CString(id))
|
||||||
|
defer C.free(unsafe.Pointer(cstr1))
|
||||||
|
|
||||||
|
C.g_application_withdraw_notification(v.native(), cstr1)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetDefault is a wrapper around g_application_set_default().
|
||||||
|
func (v *Application) SetDefault() {
|
||||||
|
C.g_application_set_default(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// ApplicationGetDefault is a wrapper around g_application_get_default().
|
||||||
|
func ApplicationGetDefault() *Application {
|
||||||
|
c := C.g_application_get_default()
|
||||||
|
if c == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return wrapApplication(wrapObject(unsafe.Pointer(c)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// MarkBusy is a wrapper around g_application_mark_busy().
|
||||||
|
func (v *Application) MarkBusy() {
|
||||||
|
C.g_application_mark_busy(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// UnmarkBusy is a wrapper around g_application_unmark_busy().
|
||||||
|
func (v *Application) UnmarkBusy() {
|
||||||
|
C.g_application_unmark_busy(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// Run is a wrapper around g_application_run().
|
||||||
|
func (v *Application) Run(args []string) int {
|
||||||
|
cargs := C.make_strings(C.int(len(args)))
|
||||||
|
defer C.destroy_strings(cargs)
|
||||||
|
|
||||||
|
for i, arg := range args {
|
||||||
|
cstr := C.CString(arg)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
C.set_string(cargs, C.int(i), (*C.char)(cstr))
|
||||||
|
}
|
||||||
|
|
||||||
|
C.set_string(cargs, C.int(len(args)), nil)
|
||||||
|
|
||||||
|
return int(C.g_application_run(v.native(), C.int(len(args)), cargs))
|
||||||
|
}
|
||||||
|
|
||||||
|
// Only available in GLib 2.44+
|
||||||
|
// // GetIsBusy is a wrapper around g_application_get_is_busy().
|
||||||
|
// func (v *Application) GetIsBusy() bool {
|
||||||
|
// return gobool(C.g_application_get_is_busy(v.native()))
|
||||||
|
// }
|
||||||
|
|
||||||
|
// void g_application_bind_busy_property ()
|
||||||
|
// void g_application_unbind_busy_property ()
|
||||||
|
// gboolean g_application_register () // requires GCancellable
|
||||||
|
// void g_application_set_action_group () // Deprecated since 2.32
|
||||||
|
// GDBusConnection * g_application_get_dbus_connection () // No support for GDBusConnection
|
||||||
|
// void g_application_open () // Needs GFile
|
||||||
|
// void g_application_add_main_option_entries () //Needs GOptionEntry
|
||||||
|
// void g_application_add_main_option () //Needs GOptionFlags and GOptionArg
|
||||||
|
// void g_application_add_option_group () // Needs GOptionGroup
|
@ -0,0 +1,117 @@
|
|||||||
|
package glib
|
||||||
|
|
||||||
|
// #cgo pkg-config: glib-2.0 gobject-2.0
|
||||||
|
// #include <glib.h>
|
||||||
|
// #include <glib-object.h>
|
||||||
|
// #include "glib.go.h"
|
||||||
|
import "C"
|
||||||
|
import (
|
||||||
|
"errors"
|
||||||
|
"reflect"
|
||||||
|
"unsafe"
|
||||||
|
)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Events
|
||||||
|
*/
|
||||||
|
|
||||||
|
type SignalHandle uint
|
||||||
|
|
||||||
|
func (v *Object) connectClosure(after bool, detailedSignal string, f interface{}, userData ...interface{}) (SignalHandle, error) {
|
||||||
|
if len(userData) > 1 {
|
||||||
|
return 0, errors.New("userData len must be 0 or 1")
|
||||||
|
}
|
||||||
|
|
||||||
|
cstr := C.CString(detailedSignal)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
|
||||||
|
closure, err := ClosureNew(f, userData...)
|
||||||
|
if err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
|
||||||
|
C._g_closure_add_finalize_notifier(closure)
|
||||||
|
|
||||||
|
c := C.g_signal_connect_closure(C.gpointer(v.native()),
|
||||||
|
(*C.gchar)(cstr), closure, gbool(after))
|
||||||
|
handle := SignalHandle(c)
|
||||||
|
|
||||||
|
// Map the signal handle to the closure.
|
||||||
|
signals[handle] = closure
|
||||||
|
|
||||||
|
return handle, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Connect is a wrapper around g_signal_connect_closure(). f must be
|
||||||
|
// a function with a signaure matching the callback signature for
|
||||||
|
// detailedSignal. userData must either 0 or 1 elements which can
|
||||||
|
// be optionally passed to f. If f takes less arguments than it is
|
||||||
|
// passed from the GLib runtime, the extra arguments are ignored.
|
||||||
|
//
|
||||||
|
// Arguments for f must be a matching Go equivalent type for the
|
||||||
|
// C callback, or an interface type which the value may be packed in.
|
||||||
|
// If the type is not suitable, a runtime panic will occur when the
|
||||||
|
// signal is emitted.
|
||||||
|
func (v *Object) Connect(detailedSignal string, f interface{}, userData ...interface{}) (SignalHandle, error) {
|
||||||
|
return v.connectClosure(false, detailedSignal, f, userData...)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ConnectAfter is a wrapper around g_signal_connect_closure(). f must be
|
||||||
|
// a function with a signaure matching the callback signature for
|
||||||
|
// detailedSignal. userData must either 0 or 1 elements which can
|
||||||
|
// be optionally passed to f. If f takes less arguments than it is
|
||||||
|
// passed from the GLib runtime, the extra arguments are ignored.
|
||||||
|
//
|
||||||
|
// Arguments for f must be a matching Go equivalent type for the
|
||||||
|
// C callback, or an interface type which the value may be packed in.
|
||||||
|
// If the type is not suitable, a runtime panic will occur when the
|
||||||
|
// signal is emitted.
|
||||||
|
//
|
||||||
|
// The difference between Connect and ConnectAfter is that the latter
|
||||||
|
// will be invoked after the default handler, not before.
|
||||||
|
func (v *Object) ConnectAfter(detailedSignal string, f interface{}, userData ...interface{}) (SignalHandle, error) {
|
||||||
|
return v.connectClosure(true, detailedSignal, f, userData...)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ClosureNew creates a new GClosure and adds its callback function
|
||||||
|
// to the internally-maintained map. It's exported for visibility to other
|
||||||
|
// gotk3 packages and shouldn't be used in application code.
|
||||||
|
func ClosureNew(f interface{}, marshalData ...interface{}) (*C.GClosure, error) {
|
||||||
|
// Create a reflect.Value from f. This is called when the
|
||||||
|
// returned GClosure runs.
|
||||||
|
rf := reflect.ValueOf(f)
|
||||||
|
|
||||||
|
// Create closure context which points to the reflected func.
|
||||||
|
cc := closureContext{rf: rf}
|
||||||
|
|
||||||
|
// Closures can only be created from funcs.
|
||||||
|
if rf.Type().Kind() != reflect.Func {
|
||||||
|
return nil, errors.New("value is not a func")
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(marshalData) > 0 {
|
||||||
|
cc.userData = reflect.ValueOf(marshalData[0])
|
||||||
|
}
|
||||||
|
|
||||||
|
c := C._g_closure_new()
|
||||||
|
|
||||||
|
// Associate the GClosure with rf. rf will be looked up in this
|
||||||
|
// map by the closure when the closure runs.
|
||||||
|
closures.Lock()
|
||||||
|
closures.m[c] = cc
|
||||||
|
closures.Unlock()
|
||||||
|
|
||||||
|
return c, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// removeClosure removes a closure from the internal closures map. This is
|
||||||
|
// needed to prevent a leak where Go code can access the closure context
|
||||||
|
// (along with rf and userdata) even after an object has been destroyed and
|
||||||
|
// the GClosure is invalidated and will never run.
|
||||||
|
//
|
||||||
|
//export removeClosure
|
||||||
|
func removeClosure(_ C.gpointer, closure *C.GClosure) {
|
||||||
|
closures.Lock()
|
||||||
|
delete(closures.m, closure)
|
||||||
|
closures.Unlock()
|
||||||
|
}
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,219 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2013-2014 Conformal Systems <info@conformal.com>
|
||||||
|
*
|
||||||
|
* This file originated from: http://opensource.conformal.com/
|
||||||
|
*
|
||||||
|
* Permission to use, copy, modify, and distribute this software for any
|
||||||
|
* purpose with or without fee is hereby granted, provided that the above
|
||||||
|
* copyright notice and this permission notice appear in all copies.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||||
|
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||||
|
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||||
|
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||||
|
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||||
|
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||||
|
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __GLIB_GO_H__
|
||||||
|
#define __GLIB_GO_H__
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
#include <gio/gio.h>
|
||||||
|
#define G_SETTINGS_ENABLE_BACKEND
|
||||||
|
#include <gio/gsettingsbackend.h>
|
||||||
|
#include <glib.h>
|
||||||
|
#include <glib-object.h>
|
||||||
|
#include <glib/gi18n.h>
|
||||||
|
#include <locale.h>
|
||||||
|
|
||||||
|
/* GObject Type Casting */
|
||||||
|
static GObject *
|
||||||
|
toGObject(void *p)
|
||||||
|
{
|
||||||
|
return (G_OBJECT(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GMenuModel *
|
||||||
|
toGMenuModel(void *p)
|
||||||
|
{
|
||||||
|
return (G_MENU_MODEL(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GMenu *
|
||||||
|
toGMenu(void *p)
|
||||||
|
{
|
||||||
|
return (G_MENU(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GMenuItem *
|
||||||
|
toGMenuItem(void *p)
|
||||||
|
{
|
||||||
|
return (G_MENU_ITEM(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GNotification *
|
||||||
|
toGNotification(void *p)
|
||||||
|
{
|
||||||
|
return (G_NOTIFICATION(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GApplication *
|
||||||
|
toGApplication(void *p)
|
||||||
|
{
|
||||||
|
return (G_APPLICATION(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GSettings *
|
||||||
|
toGSettings(void *p)
|
||||||
|
{
|
||||||
|
return (G_SETTINGS(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GSettingsBackend *
|
||||||
|
toGSettingsBackend(void *p)
|
||||||
|
{
|
||||||
|
return (G_SETTINGS_BACKEND(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static GType
|
||||||
|
_g_type_from_instance(gpointer instance)
|
||||||
|
{
|
||||||
|
return (G_TYPE_FROM_INSTANCE(instance));
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Wrapper to avoid variable arg list */
|
||||||
|
static void
|
||||||
|
_g_object_set_one(gpointer object, const gchar *property_name, void *val)
|
||||||
|
{
|
||||||
|
g_object_set(object, property_name, *(gpointer **)val, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
static GValue *
|
||||||
|
alloc_gvalue_list(int n)
|
||||||
|
{
|
||||||
|
GValue *valv;
|
||||||
|
|
||||||
|
valv = g_new0(GValue, n);
|
||||||
|
return (valv);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
val_list_insert(GValue *valv, int i, GValue *val)
|
||||||
|
{
|
||||||
|
valv[i] = *val;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GValue
|
||||||
|
*/
|
||||||
|
|
||||||
|
static GValue *
|
||||||
|
_g_value_alloc()
|
||||||
|
{
|
||||||
|
return (g_new0(GValue, 1));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GValue *
|
||||||
|
_g_value_init(GType g_type)
|
||||||
|
{
|
||||||
|
GValue *value;
|
||||||
|
|
||||||
|
value = g_new0(GValue, 1);
|
||||||
|
return (g_value_init(value, g_type));
|
||||||
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
_g_is_value(GValue *val)
|
||||||
|
{
|
||||||
|
return (G_IS_VALUE(val));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GType
|
||||||
|
_g_value_type(GValue *val)
|
||||||
|
{
|
||||||
|
return (G_VALUE_TYPE(val));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GType
|
||||||
|
_g_value_fundamental(GType type)
|
||||||
|
{
|
||||||
|
return (G_TYPE_FUNDAMENTAL(type));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GObjectClass *
|
||||||
|
_g_object_get_class (GObject *object)
|
||||||
|
{
|
||||||
|
return (G_OBJECT_GET_CLASS(object));
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Closure support
|
||||||
|
*/
|
||||||
|
|
||||||
|
extern void goMarshal(GClosure *, GValue *, guint, GValue *, gpointer, GValue *);
|
||||||
|
|
||||||
|
static GClosure *
|
||||||
|
_g_closure_new()
|
||||||
|
{
|
||||||
|
GClosure *closure;
|
||||||
|
|
||||||
|
closure = g_closure_new_simple(sizeof(GClosure), NULL);
|
||||||
|
g_closure_set_marshal(closure, (GClosureMarshal)(goMarshal));
|
||||||
|
return (closure);
|
||||||
|
}
|
||||||
|
|
||||||
|
extern void removeClosure(gpointer, GClosure *);
|
||||||
|
|
||||||
|
static void
|
||||||
|
_g_closure_add_finalize_notifier(GClosure *closure)
|
||||||
|
{
|
||||||
|
g_closure_add_finalize_notifier(closure, NULL, removeClosure);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline guint _g_signal_new(const gchar *name) {
|
||||||
|
return g_signal_new(name,
|
||||||
|
G_TYPE_OBJECT,
|
||||||
|
G_SIGNAL_RUN_FIRST,
|
||||||
|
0, NULL, NULL,
|
||||||
|
g_cclosure_marshal_VOID__POINTER,
|
||||||
|
G_TYPE_NONE,
|
||||||
|
1,
|
||||||
|
G_TYPE_POINTER);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void init_i18n(const char *domain, const char *dir) {
|
||||||
|
setlocale(LC_ALL, "");
|
||||||
|
bindtextdomain(domain, dir);
|
||||||
|
bind_textdomain_codeset(domain, "UTF-8");
|
||||||
|
textdomain(domain);
|
||||||
|
}
|
||||||
|
|
||||||
|
static const char* localize(const char *string) {
|
||||||
|
return _(string);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline char** make_strings(int count) {
|
||||||
|
return (char**)malloc(sizeof(char*) * count);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void destroy_strings(char** strings) {
|
||||||
|
free(strings);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline char* get_string(char** strings, int n) {
|
||||||
|
return strings[n];
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void set_string(char** strings, int n, char* str) {
|
||||||
|
strings[n] = str;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline gchar** next_gcharptr(gchar** s) { return (s+1); }
|
||||||
|
|
||||||
|
#endif
|
@ -0,0 +1,18 @@
|
|||||||
|
//glib_extension contains definitions and functions to interface between glib/gtk/gio and go universe
|
||||||
|
|
||||||
|
package glib
|
||||||
|
|
||||||
|
import (
|
||||||
|
"reflect"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Should be implemented by any class which need special conversion like
|
||||||
|
// gtk.Application -> gio.Application
|
||||||
|
type IGlibConvert interface {
|
||||||
|
// If convertion can't be done, function have to panic with a message that it can't convert to type
|
||||||
|
Convert(reflect.Type) reflect.Value
|
||||||
|
}
|
||||||
|
|
||||||
|
var (
|
||||||
|
IGlibConvertType reflect.Type
|
||||||
|
)
|
@ -0,0 +1,32 @@
|
|||||||
|
package glib
|
||||||
|
|
||||||
|
// #cgo pkg-config: glib-2.0 gobject-2.0 gio-2.0
|
||||||
|
// #include <gio/gio.h>
|
||||||
|
// #include <glib.h>
|
||||||
|
// #include <glib-object.h>
|
||||||
|
// #include "glib.go.h"
|
||||||
|
import "C"
|
||||||
|
|
||||||
|
type MainContext C.GMainContext
|
||||||
|
|
||||||
|
// native returns a pointer to the underlying GMainContext.
|
||||||
|
func (v *MainContext) native() *C.GMainContext {
|
||||||
|
if v == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return (*C.GMainContext)(v)
|
||||||
|
}
|
||||||
|
|
||||||
|
// MainContextDefault is a wrapper around g_main_context_default().
|
||||||
|
func MainContextDefault() *MainContext {
|
||||||
|
c := C.g_main_context_default()
|
||||||
|
if c == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return (*MainContext)(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// MainDepth is a wrapper around g_main_depth().
|
||||||
|
func MainDepth() int {
|
||||||
|
return int(C.g_main_depth())
|
||||||
|
}
|
@ -0,0 +1,27 @@
|
|||||||
|
package glib
|
||||||
|
|
||||||
|
// #cgo pkg-config: glib-2.0 gobject-2.0 gio-2.0
|
||||||
|
// #include <gio/gio.h>
|
||||||
|
// #include <glib.h>
|
||||||
|
// #include <glib-object.h>
|
||||||
|
// #include "glib.go.h"
|
||||||
|
import "C"
|
||||||
|
|
||||||
|
type Source C.GSource
|
||||||
|
|
||||||
|
// native returns a pointer to the underlying GSource.
|
||||||
|
func (v *Source) native() *C.GSource {
|
||||||
|
if v == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return (*C.GSource)(v)
|
||||||
|
}
|
||||||
|
|
||||||
|
// MainCurrentSource is a wrapper around g_main_current_source().
|
||||||
|
func MainCurrentSource() *Source {
|
||||||
|
c := C.g_main_current_source()
|
||||||
|
if c == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return (*Source)(c)
|
||||||
|
}
|
@ -0,0 +1,186 @@
|
|||||||
|
//GVariant : GVariant — strongly typed value datatype
|
||||||
|
// https://developer.gnome.org/glib/2.26/glib-GVariant.html
|
||||||
|
|
||||||
|
package glib
|
||||||
|
|
||||||
|
// #cgo pkg-config: glib-2.0 gobject-2.0
|
||||||
|
// #include <glib.h>
|
||||||
|
// #include <glib-object.h>
|
||||||
|
// #include "glib.go.h"
|
||||||
|
// #include "gvariant.go.h"
|
||||||
|
//import "C"
|
||||||
|
//import "unsafe"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GVariant
|
||||||
|
*/
|
||||||
|
|
||||||
|
// IVariant is an interface type implemented by Variant and all types which embed
|
||||||
|
// an Variant. It is meant to be used as a type for function arguments which
|
||||||
|
// require GVariants or any subclasses thereof.
|
||||||
|
/* todo fix bugs
|
||||||
|
type IVariant interface {
|
||||||
|
ToGVariant() *C.GVariant
|
||||||
|
ToVariant() *Variant
|
||||||
|
}
|
||||||
|
|
||||||
|
// Variant is a representation of GLib's GVariant.
|
||||||
|
type Variant struct {
|
||||||
|
GVariant *C.GVariant
|
||||||
|
}
|
||||||
|
|
||||||
|
func (v *Variant) ToGVariant() *C.GVariant {
|
||||||
|
if v == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return v.native()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (v *Variant) ToVariant() *Variant {
|
||||||
|
return v
|
||||||
|
}
|
||||||
|
|
||||||
|
// newVariant creates a new Variant from a GVariant pointer.
|
||||||
|
func newVariant(p *C.GVariant) *Variant {
|
||||||
|
return &Variant{GVariant: p}
|
||||||
|
}
|
||||||
|
|
||||||
|
func VariantFromUnsafePointer(p unsafe.Pointer) *Variant {
|
||||||
|
return &Variant{C.toGVariant(p)}
|
||||||
|
}
|
||||||
|
|
||||||
|
// native returns a pointer to the underlying GVariant.
|
||||||
|
func (v *Variant) native() *C.GVariant {
|
||||||
|
if v == nil || v.GVariant == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
p := unsafe.Pointer(v.GVariant)
|
||||||
|
return C.toGVariant(p)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Native returns a pointer to the underlying GVariant.
|
||||||
|
func (v *Variant) Native() uintptr {
|
||||||
|
return uintptr(unsafe.Pointer(v.native()))
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
//void g_variant_unref ()
|
||||||
|
//GVariant * g_variant_ref ()
|
||||||
|
//GVariant * g_variant_ref_sink ()
|
||||||
|
//gboolean g_variant_is_floating ()
|
||||||
|
//GVariant * g_variant_take_ref ()
|
||||||
|
//const GVariantType * g_variant_get_type ()
|
||||||
|
//const gchar * g_variant_get_type_string ()
|
||||||
|
//gboolean g_variant_is_of_type ()
|
||||||
|
//gboolean g_variant_is_container ()
|
||||||
|
//gint g_variant_compare ()
|
||||||
|
//GVariantClass g_variant_classify ()
|
||||||
|
//gboolean g_variant_check_format_string ()
|
||||||
|
//void g_variant_get ()
|
||||||
|
//void g_variant_get_va ()
|
||||||
|
//GVariant * g_variant_new ()
|
||||||
|
//GVariant * g_variant_new_va ()
|
||||||
|
//GVariant * g_variant_new_boolean ()
|
||||||
|
//GVariant * g_variant_new_byte ()
|
||||||
|
//GVariant * g_variant_new_int16 ()
|
||||||
|
//GVariant * g_variant_new_uint16 ()
|
||||||
|
//GVariant * g_variant_new_int32 ()
|
||||||
|
//GVariant * g_variant_new_uint32 ()
|
||||||
|
//GVariant * g_variant_new_int64 ()
|
||||||
|
//GVariant * g_variant_new_uint64 ()
|
||||||
|
//GVariant * g_variant_new_handle ()
|
||||||
|
//GVariant * g_variant_new_double ()
|
||||||
|
//GVariant * g_variant_new_string ()
|
||||||
|
//GVariant * g_variant_new_take_string ()
|
||||||
|
//GVariant * g_variant_new_printf ()
|
||||||
|
//GVariant * g_variant_new_object_path ()
|
||||||
|
//gboolean g_variant_is_object_path ()
|
||||||
|
//GVariant * g_variant_new_signature ()
|
||||||
|
//gboolean g_variant_is_signature ()
|
||||||
|
//GVariant * g_variant_new_variant ()
|
||||||
|
//GVariant * g_variant_new_strv ()
|
||||||
|
//GVariant * g_variant_new_objv ()
|
||||||
|
//GVariant * g_variant_new_bytestring ()
|
||||||
|
//GVariant * g_variant_new_bytestring_array ()
|
||||||
|
//gboolean g_variant_get_boolean ()
|
||||||
|
//guchar g_variant_get_byte ()
|
||||||
|
//gint16 g_variant_get_int16 ()
|
||||||
|
//guint16 g_variant_get_uint16 ()
|
||||||
|
//gint32 g_variant_get_int32 ()
|
||||||
|
//guint32 g_variant_get_uint32 ()
|
||||||
|
//gint64 g_variant_get_int64 ()
|
||||||
|
//guint64 g_variant_get_uint64 ()
|
||||||
|
//gint32 g_variant_get_handle ()
|
||||||
|
//gdouble g_variant_get_double ()
|
||||||
|
//const gchar * g_variant_get_string ()
|
||||||
|
//gchar * g_variant_dup_string ()
|
||||||
|
//GVariant * g_variant_get_variant ()
|
||||||
|
//const gchar ** g_variant_get_strv ()
|
||||||
|
//gchar ** g_variant_dup_strv ()
|
||||||
|
//const gchar ** g_variant_get_objv ()
|
||||||
|
//gchar ** g_variant_dup_objv ()
|
||||||
|
//const gchar * g_variant_get_bytestring ()
|
||||||
|
//gchar * g_variant_dup_bytestring ()
|
||||||
|
//const gchar ** g_variant_get_bytestring_array ()
|
||||||
|
//gchar ** g_variant_dup_bytestring_array ()
|
||||||
|
//GVariant * g_variant_new_maybe ()
|
||||||
|
//GVariant * g_variant_new_array ()
|
||||||
|
//GVariant * g_variant_new_tuple ()
|
||||||
|
//GVariant * g_variant_new_dict_entry ()
|
||||||
|
//GVariant * g_variant_new_fixed_array ()
|
||||||
|
//GVariant * g_variant_get_maybe ()
|
||||||
|
//gsize g_variant_n_children ()
|
||||||
|
//GVariant * g_variant_get_child_value ()
|
||||||
|
//void g_variant_get_child ()
|
||||||
|
//GVariant * g_variant_lookup_value ()
|
||||||
|
//gboolean g_variant_lookup ()
|
||||||
|
//gconstpointer g_variant_get_fixed_array ()
|
||||||
|
//gsize g_variant_get_size ()
|
||||||
|
//gconstpointer g_variant_get_data ()
|
||||||
|
//GBytes * g_variant_get_data_as_bytes ()
|
||||||
|
//void g_variant_store ()
|
||||||
|
//GVariant * g_variant_new_from_data ()
|
||||||
|
//GVariant * g_variant_new_from_bytes ()
|
||||||
|
//GVariant * g_variant_byteswap ()
|
||||||
|
//GVariant * g_variant_get_normal_form ()
|
||||||
|
//gboolean g_variant_is_normal_form ()
|
||||||
|
//guint g_variant_hash ()
|
||||||
|
//gboolean g_variant_equal ()
|
||||||
|
//gchar * g_variant_print ()
|
||||||
|
//GString * g_variant_print_string ()
|
||||||
|
//GVariantIter * g_variant_iter_copy ()
|
||||||
|
//void g_variant_iter_free ()
|
||||||
|
//gsize g_variant_iter_init ()
|
||||||
|
//gsize g_variant_iter_n_children ()
|
||||||
|
//GVariantIter * g_variant_iter_new ()
|
||||||
|
//GVariant * g_variant_iter_next_value ()
|
||||||
|
//gboolean g_variant_iter_next ()
|
||||||
|
//gboolean g_variant_iter_loop ()
|
||||||
|
//void g_variant_builder_unref ()
|
||||||
|
//GVariantBuilder * g_variant_builder_ref ()
|
||||||
|
//GVariantBuilder * g_variant_builder_new ()
|
||||||
|
//void g_variant_builder_init ()
|
||||||
|
//void g_variant_builder_clear ()
|
||||||
|
//void g_variant_builder_add_value ()
|
||||||
|
//void g_variant_builder_add ()
|
||||||
|
//void g_variant_builder_add_parsed ()
|
||||||
|
//GVariant * g_variant_builder_end ()
|
||||||
|
//void g_variant_builder_open ()
|
||||||
|
//void g_variant_builder_close ()
|
||||||
|
//void g_variant_dict_unref ()
|
||||||
|
//GVariantDict * g_variant_dict_ref ()
|
||||||
|
//GVariantDict * g_variant_dict_new ()
|
||||||
|
//void g_variant_dict_init ()
|
||||||
|
//void g_variant_dict_clear ()
|
||||||
|
//gboolean g_variant_dict_contains ()
|
||||||
|
//gboolean g_variant_dict_lookup ()
|
||||||
|
//GVariant * g_variant_dict_lookup_value ()
|
||||||
|
//void g_variant_dict_insert ()
|
||||||
|
//void g_variant_dict_insert_value ()
|
||||||
|
//gboolean g_variant_dict_remove ()
|
||||||
|
//GVariant * g_variant_dict_end ()
|
||||||
|
//#define G_VARIANT_PARSE_ERROR
|
||||||
|
//GVariant * g_variant_parse ()
|
||||||
|
//GVariant * g_variant_new_parsed_va ()
|
||||||
|
//GVariant * g_variant_new_parsed ()
|
||||||
|
//gchar * g_variant_parse_error_print_context ()
|
@ -0,0 +1,41 @@
|
|||||||
|
// Same copyright and license as the rest of the files in this project
|
||||||
|
|
||||||
|
//GVariant : GVariant — strongly typed value datatype
|
||||||
|
// https://developer.gnome.org/glib/2.26/glib-GVariant.html
|
||||||
|
|
||||||
|
/* todo fix bugs
|
||||||
|
#ifndef __GVARIANT_GO_H__
|
||||||
|
#define __GVARIANT_GO_H__
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <glib/gvariant.h>
|
||||||
|
|
||||||
|
// Type Casting
|
||||||
|
static GVariant *
|
||||||
|
toGVariant(void *p)
|
||||||
|
{
|
||||||
|
return (_GVariant(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GVariantBuilder *
|
||||||
|
toGVariantBuilder(void *p)
|
||||||
|
{
|
||||||
|
return (GVariantBuilder(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GVariantDict *
|
||||||
|
toGVariantDict(void *p)
|
||||||
|
{
|
||||||
|
return (_GVariantDict(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GVariantIter *
|
||||||
|
toGVariantIter(void *p)
|
||||||
|
{
|
||||||
|
return (_GVariantIter(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
*/
|
@ -0,0 +1,54 @@
|
|||||||
|
// Same copyright and license as the rest of the files in this project
|
||||||
|
|
||||||
|
// GVariant : GVariant — strongly typed value datatype
|
||||||
|
// https://developer.gnome.org/glib/2.26/glib-GVariant.html
|
||||||
|
|
||||||
|
package glib
|
||||||
|
|
||||||
|
// #cgo pkg-config: glib-2.0 gobject-2.0
|
||||||
|
// #include <glib.h>
|
||||||
|
// #include <glib-object.h>
|
||||||
|
// #include "glib.go.h"
|
||||||
|
// #include "gvariant.go.h"
|
||||||
|
//import "C"
|
||||||
|
//import "unsafe"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GVariantBuilder
|
||||||
|
*/
|
||||||
|
/* todo fix bugs
|
||||||
|
// VariantBuilder is a representation of GLib's VariantBuilder.
|
||||||
|
type VariantBuilder struct {
|
||||||
|
GVariantBuilder *C.GVariantBuilder
|
||||||
|
}
|
||||||
|
|
||||||
|
func (v *VariantBuilder) toGVariantBuilder() *C.GVariantBuilder {
|
||||||
|
if v == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return v.native()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (v *VariantBuilder) toVariantBuilder() *VariantBuilder {
|
||||||
|
return v
|
||||||
|
}
|
||||||
|
|
||||||
|
// newVariantBuilder creates a new VariantBuilder from a GVariantBuilder pointer.
|
||||||
|
func newVariantBuilder(p *C.GVariantBuilder) *VariantBuilder {
|
||||||
|
return &VariantBuilder{GVariantBuilder: p}
|
||||||
|
}
|
||||||
|
|
||||||
|
// native returns a pointer to the underlying GVariantBuilder.
|
||||||
|
func (v *VariantBuilder) native() *C.GVariantBuilder {
|
||||||
|
if v == nil || v.GVariantBuilder == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
p := unsafe.Pointer(v.GVariantBuilder)
|
||||||
|
return C.toGVariantBuilder(p)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Native returns a pointer to the underlying GVariantBuilder.
|
||||||
|
func (v *VariantBuilder) Native() uintptr {
|
||||||
|
return uintptr(unsafe.Pointer(v.native()))
|
||||||
|
}
|
||||||
|
*/
|
@ -0,0 +1,39 @@
|
|||||||
|
// Same copyright and license as the rest of the files in this project
|
||||||
|
|
||||||
|
//GVariant : GVariant — strongly typed value datatype
|
||||||
|
// https://developer.gnome.org/glib/2.26/glib-GVariant.html
|
||||||
|
|
||||||
|
package glib
|
||||||
|
|
||||||
|
// #cgo pkg-config: glib-2.0 gobject-2.0
|
||||||
|
// #include <glib.h>
|
||||||
|
// #include <glib-object.h>
|
||||||
|
// #include "glib.go.h"
|
||||||
|
import "C"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GVariantClass
|
||||||
|
*/
|
||||||
|
|
||||||
|
type VariantClass int
|
||||||
|
|
||||||
|
const (
|
||||||
|
VARIANT_CLASS_BOOLEAN VariantClass = C.G_VARIANT_CLASS_BOOLEAN //The GVariant is a boolean.
|
||||||
|
VARIANT_CLASS_BYTE VariantClass = C.G_VARIANT_CLASS_BYTE //The GVariant is a byte.
|
||||||
|
VARIANT_CLASS_INT16 VariantClass = C.G_VARIANT_CLASS_INT16 //The GVariant is a signed 16 bit integer.
|
||||||
|
VARIANT_CLASS_UINT16 VariantClass = C.G_VARIANT_CLASS_UINT16 //The GVariant is an unsigned 16 bit integer.
|
||||||
|
VARIANT_CLASS_INT32 VariantClass = C.G_VARIANT_CLASS_INT32 //The GVariant is a signed 32 bit integer.
|
||||||
|
VARIANT_CLASS_UINT32 VariantClass = C.G_VARIANT_CLASS_UINT32 //The GVariant is an unsigned 32 bit integer.
|
||||||
|
VARIANT_CLASS_INT64 VariantClass = C.G_VARIANT_CLASS_INT64 //The GVariant is a signed 64 bit integer.
|
||||||
|
VARIANT_CLASS_UINT64 VariantClass = C.G_VARIANT_CLASS_UINT64 //The GVariant is an unsigned 64 bit integer.
|
||||||
|
VARIANT_CLASS_HANDLE VariantClass = C.G_VARIANT_CLASS_HANDLE //The GVariant is a file handle index.
|
||||||
|
VARIANT_CLASS_DOUBLE VariantClass = C.G_VARIANT_CLASS_DOUBLE //The GVariant is a double precision floating point value.
|
||||||
|
VARIANT_CLASS_STRING VariantClass = C.G_VARIANT_CLASS_STRING //The GVariant is a normal string.
|
||||||
|
VARIANT_CLASS_OBJECT_PATH VariantClass = C.G_VARIANT_CLASS_OBJECT_PATH //The GVariant is a D-Bus object path string.
|
||||||
|
VARIANT_CLASS_SIGNATURE VariantClass = C.G_VARIANT_CLASS_SIGNATURE //The GVariant is a D-Bus signature string.
|
||||||
|
VARIANT_CLASS_VARIANT VariantClass = C.G_VARIANT_CLASS_VARIANT //The GVariant is a variant.
|
||||||
|
VARIANT_CLASS_MAYBE VariantClass = C.G_VARIANT_CLASS_MAYBE //The GVariant is a maybe-typed value.
|
||||||
|
VARIANT_CLASS_ARRAY VariantClass = C.G_VARIANT_CLASS_ARRAY //The GVariant is an array.
|
||||||
|
VARIANT_CLASS_TUPLE VariantClass = C.G_VARIANT_CLASS_TUPLE //The GVariant is a tuple.
|
||||||
|
VARIANT_CLASS_DICT_ENTRY VariantClass = C.G_VARIANT_CLASS_DICT_ENTRY //The GVariant is a dictionary entry.
|
||||||
|
)
|
@ -0,0 +1,54 @@
|
|||||||
|
// Same copyright and license as the rest of the files in this project
|
||||||
|
|
||||||
|
//GVariant : GVariant — strongly typed value datatype
|
||||||
|
// https://developer.gnome.org/glib/2.26/glib-GVariant.html
|
||||||
|
|
||||||
|
package glib
|
||||||
|
|
||||||
|
// #cgo pkg-config: glib-2.0 gobject-2.0
|
||||||
|
// #include <glib.h>
|
||||||
|
// #include <glib-object.h>
|
||||||
|
// #include "glib.go.h"
|
||||||
|
// #include "gvariant.go.h"
|
||||||
|
//import "C"
|
||||||
|
//import "unsafe"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GVariantDict
|
||||||
|
*/
|
||||||
|
/* todo fix bugs
|
||||||
|
// VariantDict is a representation of GLib's VariantDict.
|
||||||
|
type VariantDict struct {
|
||||||
|
GVariantDict *C.GVariantDict
|
||||||
|
}
|
||||||
|
|
||||||
|
func (v *VariantDict) toGVariantDict() *C.GVariantDict {
|
||||||
|
if v == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return v.native()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (v *VariantDict) toVariantDict() *VariantDict {
|
||||||
|
return v
|
||||||
|
}
|
||||||
|
|
||||||
|
// newVariantDict creates a new VariantDict from a GVariantDict pointer.
|
||||||
|
func newVariantDict(p *C.GVariantDict) *VariantDict {
|
||||||
|
return &VariantDict{GVariantDict: p}
|
||||||
|
}
|
||||||
|
|
||||||
|
// native returns a pointer to the underlying GVariantDict.
|
||||||
|
func (v *VariantDict) native() *C.GVariantDict {
|
||||||
|
if v == nil || v.GVariantDict == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
p := unsafe.Pointer(v.GVariantDict)
|
||||||
|
return C.toGVariantDict(p)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Native returns a pointer to the underlying GVariantDict.
|
||||||
|
func (v *VariantDict) Native() uintptr {
|
||||||
|
return uintptr(unsafe.Pointer(v.native()))
|
||||||
|
}
|
||||||
|
*/
|
@ -0,0 +1,54 @@
|
|||||||
|
// Same copyright and license as the rest of the files in this project
|
||||||
|
|
||||||
|
//GVariant : GVariant — strongly typed value datatype
|
||||||
|
// https://developer.gnome.org/glib/2.26/glib-GVariant.html
|
||||||
|
|
||||||
|
package glib
|
||||||
|
|
||||||
|
// #cgo pkg-config: glib-2.0 gobject-2.0
|
||||||
|
// #include <glib.h>
|
||||||
|
// #include <glib-object.h>
|
||||||
|
// #include "glib.go.h"
|
||||||
|
// #include "gvariant.go.h"
|
||||||
|
//import "C"
|
||||||
|
//import "unsafe"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GVariantIter
|
||||||
|
*/
|
||||||
|
/* todo fix bugs
|
||||||
|
// VariantIter is a representation of GLib's GVariantIter.
|
||||||
|
type VariantIter struct {
|
||||||
|
GVariantIter *C.GVariantIter
|
||||||
|
}
|
||||||
|
|
||||||
|
func (v *VariantIter) toGVariantIter() *C.GVariantIter {
|
||||||
|
if v == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return v.native()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (v *VariantIter) toVariantIter() *VariantIter {
|
||||||
|
return v
|
||||||
|
}
|
||||||
|
|
||||||
|
// newVariantIter creates a new VariantIter from a GVariantIter pointer.
|
||||||
|
func newVariantIter(p *C.GVariantIter) *VariantIter {
|
||||||
|
return &VariantIter{GVariantIter: p}
|
||||||
|
}
|
||||||
|
|
||||||
|
// native returns a pointer to the underlying GVariantIter.
|
||||||
|
func (v *VariantIter) native() *C.GVariantIter {
|
||||||
|
if v == nil || v.GVariantIter == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
p := unsafe.Pointer(v.GVariantIter)
|
||||||
|
return C.toGVariantIter(p)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Native returns a pointer to the underlying GVariantIter.
|
||||||
|
func (v *VariantIter) Native() uintptr {
|
||||||
|
return uintptr(unsafe.Pointer(v.native()))
|
||||||
|
}
|
||||||
|
*/
|
@ -0,0 +1,156 @@
|
|||||||
|
package glib
|
||||||
|
|
||||||
|
// #cgo pkg-config: glib-2.0 gobject-2.0
|
||||||
|
// #include <glib.h>
|
||||||
|
// #include <glib-object.h>
|
||||||
|
// #include "glib.go.h"
|
||||||
|
import "C"
|
||||||
|
import "unsafe"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Linked Lists
|
||||||
|
*/
|
||||||
|
|
||||||
|
// List is a representation of Glib's GList.
|
||||||
|
type List struct {
|
||||||
|
list *C.struct__GList
|
||||||
|
// If set, dataWrap is called every time NthDataWrapped()
|
||||||
|
// or DataWrapped() is called to wrap raw underlying
|
||||||
|
// value into appropriate type.
|
||||||
|
dataWrap func(unsafe.Pointer) interface{}
|
||||||
|
}
|
||||||
|
|
||||||
|
func WrapList(obj uintptr) *List {
|
||||||
|
return wrapList((*C.struct__GList)(unsafe.Pointer(obj)))
|
||||||
|
}
|
||||||
|
|
||||||
|
func wrapList(obj *C.struct__GList) *List {
|
||||||
|
if obj == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return &List{list: obj}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (v *List) wrapNewHead(obj *C.struct__GList) *List {
|
||||||
|
if obj == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return &List{
|
||||||
|
list: obj,
|
||||||
|
dataWrap: v.dataWrap,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (v *List) Native() uintptr {
|
||||||
|
return uintptr(unsafe.Pointer(v.list))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (v *List) native() *C.struct__GList {
|
||||||
|
if v == nil || v.list == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return v.list
|
||||||
|
}
|
||||||
|
|
||||||
|
// DataWapper sets wrap functions, which is called during NthDataWrapped()
|
||||||
|
// and DataWrapped(). It's used to cast raw C data into appropriate
|
||||||
|
// Go structures and types every time that data is retreived.
|
||||||
|
func (v *List) DataWrapper(fn func(unsafe.Pointer) interface{}) {
|
||||||
|
if v == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
v.dataWrap = fn
|
||||||
|
}
|
||||||
|
|
||||||
|
// Append is a wrapper around g_list_append().
|
||||||
|
func (v *List) Append(data uintptr) *List {
|
||||||
|
glist := C.g_list_append(v.native(), C.gpointer(data))
|
||||||
|
return v.wrapNewHead(glist)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Prepend is a wrapper around g_list_prepend().
|
||||||
|
func (v *List) Prepend(data uintptr) *List {
|
||||||
|
glist := C.g_list_prepend(v.native(), C.gpointer(data))
|
||||||
|
return v.wrapNewHead(glist)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Insert is a wrapper around g_list_insert().
|
||||||
|
func (v *List) Insert(data uintptr, position int) *List {
|
||||||
|
glist := C.g_list_insert(v.native(), C.gpointer(data), C.gint(position))
|
||||||
|
return v.wrapNewHead(glist)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Length is a wrapper around g_list_length().
|
||||||
|
func (v *List) Length() uint {
|
||||||
|
return uint(C.g_list_length(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// nthDataRaw is a wrapper around g_list_nth_data().
|
||||||
|
func (v *List) nthDataRaw(n uint) unsafe.Pointer {
|
||||||
|
return unsafe.Pointer(C.g_list_nth_data(v.native(), C.guint(n)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// Nth() is a wrapper around g_list_nth().
|
||||||
|
func (v *List) Nth(n uint) *List {
|
||||||
|
list := wrapList(C.g_list_nth(v.native(), C.guint(n)))
|
||||||
|
list.DataWrapper(v.dataWrap)
|
||||||
|
return list
|
||||||
|
}
|
||||||
|
|
||||||
|
// NthDataWrapped acts the same as g_list_nth_data(), but passes
|
||||||
|
// retrieved value before returning through wrap function, set by DataWrapper().
|
||||||
|
// If no wrap function is set, it returns raw unsafe.Pointer.
|
||||||
|
func (v *List) NthData(n uint) interface{} {
|
||||||
|
ptr := v.nthDataRaw(n)
|
||||||
|
if v.dataWrap != nil {
|
||||||
|
return v.dataWrap(ptr)
|
||||||
|
}
|
||||||
|
return ptr
|
||||||
|
}
|
||||||
|
|
||||||
|
// Free is a wrapper around g_list_free().
|
||||||
|
func (v *List) Free() {
|
||||||
|
C.g_list_free(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// Next is a wrapper around the next struct field
|
||||||
|
func (v *List) Next() *List {
|
||||||
|
return v.wrapNewHead(v.native().next)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Previous is a wrapper around the prev struct field
|
||||||
|
func (v *List) Previous() *List {
|
||||||
|
return v.wrapNewHead(v.native().prev)
|
||||||
|
}
|
||||||
|
|
||||||
|
// dataRaw is a wrapper around the data struct field
|
||||||
|
func (v *List) dataRaw() unsafe.Pointer {
|
||||||
|
return unsafe.Pointer(v.native().data)
|
||||||
|
}
|
||||||
|
|
||||||
|
// DataWrapped acts the same as data struct field, but passes
|
||||||
|
// retrieved value before returning through wrap function, set by DataWrapper().
|
||||||
|
// If no wrap function is set, it returns raw unsafe.Pointer.
|
||||||
|
func (v *List) Data() interface{} {
|
||||||
|
ptr := v.dataRaw()
|
||||||
|
if v.dataWrap != nil {
|
||||||
|
return v.dataWrap(ptr)
|
||||||
|
}
|
||||||
|
return ptr
|
||||||
|
}
|
||||||
|
|
||||||
|
// Foreach acts the same as g_list_foreach().
|
||||||
|
// No user_data arguement is implemented because of Go clojure capabilities.
|
||||||
|
func (v *List) Foreach(fn func(item interface{})) {
|
||||||
|
for l := v; l != nil; l = l.Next() {
|
||||||
|
fn(l.Data())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// FreeFull acts the same as g_list_free_full().
|
||||||
|
// Calling list.FreeFull(fn) is equivalent to calling list.Foreach(fn) and
|
||||||
|
// list.Free() sequentially.
|
||||||
|
func (v *List) FreeFull(fn func(item interface{})) {
|
||||||
|
v.Foreach(fn)
|
||||||
|
v.Free()
|
||||||
|
}
|
@ -0,0 +1,333 @@
|
|||||||
|
package glib
|
||||||
|
|
||||||
|
// #cgo pkg-config: glib-2.0 gobject-2.0
|
||||||
|
// #include <gio/gio.h>
|
||||||
|
// #include <glib.h>
|
||||||
|
// #include <glib-object.h>
|
||||||
|
// #include "glib.go.h"
|
||||||
|
import "C"
|
||||||
|
import "unsafe"
|
||||||
|
|
||||||
|
// MenuModel is a representation of GMenuModel.
|
||||||
|
type MenuModel struct {
|
||||||
|
*Object
|
||||||
|
}
|
||||||
|
|
||||||
|
// native() returns a pointer to the underlying GMenuModel.
|
||||||
|
func (v *MenuModel) native() *C.GMenuModel {
|
||||||
|
if v == nil || v.GObject == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return C.toGMenuModel(unsafe.Pointer(v.GObject))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (v *MenuModel) Native() uintptr {
|
||||||
|
return uintptr(unsafe.Pointer(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
func marshalMenuModel(p uintptr) (interface{}, error) {
|
||||||
|
c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
|
||||||
|
return wrapMenuModel(wrapObject(unsafe.Pointer(c))), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func wrapMenuModel(obj *Object) *MenuModel {
|
||||||
|
return &MenuModel{obj}
|
||||||
|
}
|
||||||
|
|
||||||
|
// IsMutable is a wrapper around g_menu_model_is_mutable().
|
||||||
|
func (v *MenuModel) IsMutable() bool {
|
||||||
|
return gobool(C.g_menu_model_is_mutable(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetNItems is a wrapper around g_menu_model_get_n_items().
|
||||||
|
func (v *MenuModel) GetNItems() int {
|
||||||
|
return int(C.g_menu_model_get_n_items(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetItemLink is a wrapper around g_menu_model_get_item_link().
|
||||||
|
func (v *MenuModel) GetItemLink(index int, link string) *MenuModel {
|
||||||
|
cstr := (*C.gchar)(C.CString(link))
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
c := C.g_menu_model_get_item_link(v.native(), C.gint(index), cstr)
|
||||||
|
if c == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return wrapMenuModel(wrapObject(unsafe.Pointer(c)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ItemsChanged is a wrapper around g_menu_model_items_changed().
|
||||||
|
func (v *MenuModel) ItemsChanged(position, removed, added int) {
|
||||||
|
C.g_menu_model_items_changed(v.native(), C.gint(position), C.gint(removed), C.gint(added))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GVariant * g_menu_model_get_item_attribute_value ()
|
||||||
|
// gboolean g_menu_model_get_item_attribute ()
|
||||||
|
// GMenuAttributeIter * g_menu_model_iterate_item_attributes ()
|
||||||
|
// GMenuLinkIter * g_menu_model_iterate_item_links ()
|
||||||
|
|
||||||
|
// Menu is a representation of GMenu.
|
||||||
|
type Menu struct {
|
||||||
|
MenuModel
|
||||||
|
}
|
||||||
|
|
||||||
|
// native() returns a pointer to the underlying GMenu.
|
||||||
|
func (m *Menu) native() *C.GMenu {
|
||||||
|
if m == nil || m.GObject == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
p := unsafe.Pointer(m.GObject)
|
||||||
|
return C.toGMenu(p)
|
||||||
|
}
|
||||||
|
|
||||||
|
func marshalMenu(p uintptr) (interface{}, error) {
|
||||||
|
c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
|
||||||
|
return wrapMenu(wrapObject(unsafe.Pointer(c))), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func wrapMenu(obj *Object) *Menu {
|
||||||
|
return &Menu{MenuModel{obj}}
|
||||||
|
}
|
||||||
|
|
||||||
|
// MenuNew is a wrapper around g_menu_new().
|
||||||
|
func MenuNew() *Menu {
|
||||||
|
c := C.g_menu_new()
|
||||||
|
if c == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return wrapMenu(wrapObject(unsafe.Pointer(c)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// Freeze is a wrapper around g_menu_freeze().
|
||||||
|
func (v *Menu) Freeze() {
|
||||||
|
C.g_menu_freeze(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// Insert is a wrapper around g_menu_insert().
|
||||||
|
func (v *Menu) Insert(position int, label, detailed_action string) {
|
||||||
|
cstr1 := (*C.gchar)(C.CString(label))
|
||||||
|
defer C.free(unsafe.Pointer(cstr1))
|
||||||
|
|
||||||
|
cstr2 := (*C.gchar)(C.CString(detailed_action))
|
||||||
|
defer C.free(unsafe.Pointer(cstr2))
|
||||||
|
|
||||||
|
C.g_menu_insert(v.native(), C.gint(position), cstr1, cstr2)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Prepend is a wrapper around g_menu_prepend().
|
||||||
|
func (v *Menu) Prepend(label, detailed_action string) {
|
||||||
|
cstr1 := (*C.gchar)(C.CString(label))
|
||||||
|
defer C.free(unsafe.Pointer(cstr1))
|
||||||
|
|
||||||
|
cstr2 := (*C.gchar)(C.CString(detailed_action))
|
||||||
|
defer C.free(unsafe.Pointer(cstr2))
|
||||||
|
|
||||||
|
C.g_menu_prepend(v.native(), cstr1, cstr2)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Append is a wrapper around g_menu_append().
|
||||||
|
func (v *Menu) Append(label, detailed_action string) {
|
||||||
|
cstr1 := (*C.gchar)(C.CString(label))
|
||||||
|
defer C.free(unsafe.Pointer(cstr1))
|
||||||
|
|
||||||
|
cstr2 := (*C.gchar)(C.CString(detailed_action))
|
||||||
|
defer C.free(unsafe.Pointer(cstr2))
|
||||||
|
|
||||||
|
C.g_menu_append(v.native(), cstr1, cstr2)
|
||||||
|
}
|
||||||
|
|
||||||
|
// InsertItem is a wrapper around g_menu_insert_item().
|
||||||
|
func (v *Menu) InsertItem(position int, item *MenuItem) {
|
||||||
|
C.g_menu_insert_item(v.native(), C.gint(position), item.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// AppendItem is a wrapper around g_menu_append_item().
|
||||||
|
func (v *Menu) AppendItem(item *MenuItem) {
|
||||||
|
C.g_menu_append_item(v.native(), item.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// PrependItem is a wrapper around g_menu_prepend_item().
|
||||||
|
func (v *Menu) PrependItem(item *MenuItem) {
|
||||||
|
C.g_menu_prepend_item(v.native(), item.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// InsertSection is a wrapper around g_menu_insert_section().
|
||||||
|
func (v *Menu) InsertSection(position int, label string, section *MenuModel) {
|
||||||
|
cstr1 := (*C.gchar)(C.CString(label))
|
||||||
|
defer C.free(unsafe.Pointer(cstr1))
|
||||||
|
|
||||||
|
C.g_menu_insert_section(v.native(), C.gint(position), cstr1, section.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// PrependSection is a wrapper around g_menu_prepend_section().
|
||||||
|
func (v *Menu) PrependSection(label string, section *MenuModel) {
|
||||||
|
cstr1 := (*C.gchar)(C.CString(label))
|
||||||
|
defer C.free(unsafe.Pointer(cstr1))
|
||||||
|
|
||||||
|
C.g_menu_prepend_section(v.native(), cstr1, section.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// AppendSection is a wrapper around g_menu_append_section().
|
||||||
|
func (v *Menu) AppendSection(label string, section *MenuModel) {
|
||||||
|
cstr1 := (*C.gchar)(C.CString(label))
|
||||||
|
defer C.free(unsafe.Pointer(cstr1))
|
||||||
|
|
||||||
|
C.g_menu_append_section(v.native(), cstr1, section.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// InsertSubmenu is a wrapper around g_menu_insert_submenu().
|
||||||
|
func (v *Menu) InsertSubmenu(position int, label string, submenu *MenuModel) {
|
||||||
|
cstr1 := (*C.gchar)(C.CString(label))
|
||||||
|
defer C.free(unsafe.Pointer(cstr1))
|
||||||
|
|
||||||
|
C.g_menu_insert_submenu(v.native(), C.gint(position), cstr1, submenu.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// PrependSubmenu is a wrapper around g_menu_prepend_submenu().
|
||||||
|
func (v *Menu) PrependSubmenu(label string, submenu *MenuModel) {
|
||||||
|
cstr1 := (*C.gchar)(C.CString(label))
|
||||||
|
defer C.free(unsafe.Pointer(cstr1))
|
||||||
|
|
||||||
|
C.g_menu_prepend_submenu(v.native(), cstr1, submenu.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// AppendSubmenu is a wrapper around g_menu_append_submenu().
|
||||||
|
func (v *Menu) AppendSubmenu(label string, submenu *MenuModel) {
|
||||||
|
cstr1 := (*C.gchar)(C.CString(label))
|
||||||
|
defer C.free(unsafe.Pointer(cstr1))
|
||||||
|
|
||||||
|
C.g_menu_append_submenu(v.native(), cstr1, submenu.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// Remove is a wrapper around g_menu_remove().
|
||||||
|
func (v *Menu) Remove(position int) {
|
||||||
|
C.g_menu_remove(v.native(), C.gint(position))
|
||||||
|
}
|
||||||
|
|
||||||
|
// RemoveAll is a wrapper around g_menu_remove_all().
|
||||||
|
func (v *Menu) RemoveAll() {
|
||||||
|
C.g_menu_remove_all(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// MenuItem is a representation of GMenuItem.
|
||||||
|
type MenuItem struct {
|
||||||
|
*Object
|
||||||
|
}
|
||||||
|
|
||||||
|
// native() returns a pointer to the underlying GMenuItem.
|
||||||
|
func (m *MenuItem) native() *C.GMenuItem {
|
||||||
|
if m == nil || m.GObject == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
p := unsafe.Pointer(m.GObject)
|
||||||
|
return C.toGMenuItem(p)
|
||||||
|
}
|
||||||
|
|
||||||
|
func marshalMenuItem(p uintptr) (interface{}, error) {
|
||||||
|
c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
|
||||||
|
return wrapMenuItem(wrapObject(unsafe.Pointer(c))), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func wrapMenuItem(obj *Object) *MenuItem {
|
||||||
|
return &MenuItem{obj}
|
||||||
|
}
|
||||||
|
|
||||||
|
// MenuItemNew is a wrapper around g_menu_item_new().
|
||||||
|
func MenuItemNew(label, detailed_action string) *MenuItem {
|
||||||
|
cstr1 := (*C.gchar)(C.CString(label))
|
||||||
|
defer C.free(unsafe.Pointer(cstr1))
|
||||||
|
|
||||||
|
cstr2 := (*C.gchar)(C.CString(detailed_action))
|
||||||
|
defer C.free(unsafe.Pointer(cstr2))
|
||||||
|
|
||||||
|
c := C.g_menu_item_new(cstr1, cstr2)
|
||||||
|
if c == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return wrapMenuItem(wrapObject(unsafe.Pointer(c)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// MenuItemNewSection is a wrapper around g_menu_item_new_section().
|
||||||
|
func MenuItemNewSection(label string, section *MenuModel) *MenuItem {
|
||||||
|
cstr1 := (*C.gchar)(C.CString(label))
|
||||||
|
defer C.free(unsafe.Pointer(cstr1))
|
||||||
|
|
||||||
|
c := C.g_menu_item_new_section(cstr1, section.native())
|
||||||
|
if c == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return wrapMenuItem(wrapObject(unsafe.Pointer(c)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// MenuItemNewSubmenu is a wrapper around g_menu_item_new_submenu().
|
||||||
|
func MenuItemNewSubmenu(label string, submenu *MenuModel) *MenuItem {
|
||||||
|
cstr1 := (*C.gchar)(C.CString(label))
|
||||||
|
defer C.free(unsafe.Pointer(cstr1))
|
||||||
|
|
||||||
|
c := C.g_menu_item_new_submenu(cstr1, submenu.native())
|
||||||
|
if c == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return wrapMenuItem(wrapObject(unsafe.Pointer(c)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// MenuItemNewFromModel is a wrapper around g_menu_item_new_from_model().
|
||||||
|
func MenuItemNewFromModel(model *MenuModel, index int) *MenuItem {
|
||||||
|
c := C.g_menu_item_new_from_model(model.native(), C.gint(index))
|
||||||
|
if c == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return wrapMenuItem(wrapObject(unsafe.Pointer(c)))
|
||||||
|
}
|
||||||
|
|
||||||
|
//SetLabel is a wrapper around g_menu_item_set_label().
|
||||||
|
func (v *MenuItem) SetLabel(label string) {
|
||||||
|
cstr1 := (*C.gchar)(C.CString(label))
|
||||||
|
defer C.free(unsafe.Pointer(cstr1))
|
||||||
|
|
||||||
|
C.g_menu_item_set_label(v.native(), cstr1)
|
||||||
|
}
|
||||||
|
|
||||||
|
//SetDetailedAction is a wrapper around g_menu_item_set_detailed_action().
|
||||||
|
func (v *MenuItem) SetDetailedAction(act string) {
|
||||||
|
cstr1 := (*C.gchar)(C.CString(act))
|
||||||
|
defer C.free(unsafe.Pointer(cstr1))
|
||||||
|
|
||||||
|
C.g_menu_item_set_detailed_action(v.native(), cstr1)
|
||||||
|
}
|
||||||
|
|
||||||
|
//SetSection is a wrapper around g_menu_item_set_section().
|
||||||
|
func (v *MenuItem) SetSection(section *MenuModel) {
|
||||||
|
C.g_menu_item_set_section(v.native(), section.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
//SetSubmenu is a wrapper around g_menu_item_set_submenu().
|
||||||
|
func (v *MenuItem) SetSubmenu(submenu *MenuModel) {
|
||||||
|
C.g_menu_item_set_submenu(v.native(), submenu.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
//GetLink is a wrapper around g_menu_item_get_link().
|
||||||
|
func (v *MenuItem) GetLink(link string) *MenuModel {
|
||||||
|
cstr1 := (*C.gchar)(C.CString(link))
|
||||||
|
defer C.free(unsafe.Pointer(cstr1))
|
||||||
|
|
||||||
|
c := C.g_menu_item_get_link(v.native(), cstr1)
|
||||||
|
if c == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return wrapMenuModel(wrapObject(unsafe.Pointer(c)))
|
||||||
|
}
|
||||||
|
|
||||||
|
//SetLink is a wrapper around g_menu_item_Set_link().
|
||||||
|
func (v *MenuItem) SetLink(link string, model *MenuModel) {
|
||||||
|
cstr1 := (*C.gchar)(C.CString(link))
|
||||||
|
defer C.free(unsafe.Pointer(cstr1))
|
||||||
|
|
||||||
|
C.g_menu_item_set_link(v.native(), cstr1, model.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// void g_menu_item_set_action_and_target_value ()
|
||||||
|
// void g_menu_item_set_action_and_target ()
|
||||||
|
// GVariant * g_menu_item_get_attribute_value ()
|
||||||
|
// gboolean g_menu_item_get_attribute ()
|
||||||
|
// void g_menu_item_set_attribute_value ()
|
||||||
|
// void g_menu_item_set_attribute ()
|
@ -0,0 +1,106 @@
|
|||||||
|
package glib
|
||||||
|
|
||||||
|
// #cgo pkg-config: glib-2.0 gobject-2.0
|
||||||
|
// #include <gio/gio.h>
|
||||||
|
// #include <glib.h>
|
||||||
|
// #include <glib-object.h>
|
||||||
|
// #include "glib.go.h"
|
||||||
|
import "C"
|
||||||
|
import "unsafe"
|
||||||
|
|
||||||
|
// Only available from 2.42
|
||||||
|
// // NotificationPriority is a representation of GLib's GNotificationPriority.
|
||||||
|
// type NotificationPriority int
|
||||||
|
|
||||||
|
// const (
|
||||||
|
// NOTIFICATION_PRIORITY_NORMAL NotificationPriority = C.G_NOTIFICATION_PRIORITY_NORMAL
|
||||||
|
// NOTIFICATION_PRIORITY_LOW NotificationPriority = C.G_NOTIFICATION_PRIORITY_LOW
|
||||||
|
// NOTIFICATION_PRIORITY_HIGH NotificationPriority = C.G_NOTIFICATION_PRIORITY_HIGH
|
||||||
|
// NOTIFICATION_PRIORITY_URGENT NotificationPriority = C.G_NOTIFICATION_PRIORITY_URGENT
|
||||||
|
// )
|
||||||
|
|
||||||
|
// Notification is a representation of GNotification.
|
||||||
|
type Notification struct {
|
||||||
|
*Object
|
||||||
|
}
|
||||||
|
|
||||||
|
// native() returns a pointer to the underlying GNotification.
|
||||||
|
func (v *Notification) native() *C.GNotification {
|
||||||
|
if v == nil || v.GObject == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return C.toGNotification(unsafe.Pointer(v.GObject))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (v *Notification) Native() uintptr {
|
||||||
|
return uintptr(unsafe.Pointer(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
func marshalNotification(p uintptr) (interface{}, error) {
|
||||||
|
c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
|
||||||
|
return wrapNotification(wrapObject(unsafe.Pointer(c))), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func wrapNotification(obj *Object) *Notification {
|
||||||
|
return &Notification{obj}
|
||||||
|
}
|
||||||
|
|
||||||
|
// NotificationNew is a wrapper around g_notification_new().
|
||||||
|
func NotificationNew(title string) *Notification {
|
||||||
|
cstr1 := (*C.gchar)(C.CString(title))
|
||||||
|
defer C.free(unsafe.Pointer(cstr1))
|
||||||
|
|
||||||
|
c := C.g_notification_new(cstr1)
|
||||||
|
if c == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return wrapNotification(wrapObject(unsafe.Pointer(c)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetTitle is a wrapper around g_notification_set_title().
|
||||||
|
func (v *Notification) SetTitle(title string) {
|
||||||
|
cstr1 := (*C.gchar)(C.CString(title))
|
||||||
|
defer C.free(unsafe.Pointer(cstr1))
|
||||||
|
|
||||||
|
C.g_notification_set_title(v.native(), cstr1)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetBody is a wrapper around g_notification_set_body().
|
||||||
|
func (v *Notification) SetBody(body string) {
|
||||||
|
cstr1 := (*C.gchar)(C.CString(body))
|
||||||
|
defer C.free(unsafe.Pointer(cstr1))
|
||||||
|
|
||||||
|
C.g_notification_set_body(v.native(), cstr1)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Only available from 2.42
|
||||||
|
// // SetPriority is a wrapper around g_notification_set_priority().
|
||||||
|
// func (v *Notification) SetPriority(prio NotificationPriority) {
|
||||||
|
// C.g_notification_set_priority(v.native(), C.GNotificationPriority(prio))
|
||||||
|
// }
|
||||||
|
|
||||||
|
// SetDefaultAction is a wrapper around g_notification_set_default_action().
|
||||||
|
func (v *Notification) SetDefaultAction(detailedAction string) {
|
||||||
|
cstr1 := (*C.gchar)(C.CString(detailedAction))
|
||||||
|
defer C.free(unsafe.Pointer(cstr1))
|
||||||
|
|
||||||
|
C.g_notification_set_default_action(v.native(), cstr1)
|
||||||
|
}
|
||||||
|
|
||||||
|
// AddButton is a wrapper around g_notification_add_button().
|
||||||
|
func (v *Notification) AddButton(label, detailedAction string) {
|
||||||
|
cstr1 := (*C.gchar)(C.CString(label))
|
||||||
|
defer C.free(unsafe.Pointer(cstr1))
|
||||||
|
|
||||||
|
cstr2 := (*C.gchar)(C.CString(detailedAction))
|
||||||
|
defer C.free(unsafe.Pointer(cstr2))
|
||||||
|
|
||||||
|
C.g_notification_add_button(v.native(), cstr1, cstr2)
|
||||||
|
}
|
||||||
|
|
||||||
|
// void g_notification_set_default_action_and_target () // requires varargs
|
||||||
|
// void g_notification_set_default_action_and_target_value () // requires variant
|
||||||
|
// void g_notification_add_button_with_target () // requires varargs
|
||||||
|
// void g_notification_add_button_with_target_value () //requires variant
|
||||||
|
// void g_notification_set_urgent () // Deprecated, so not implemented
|
||||||
|
// void g_notification_set_icon () // Requires support for GIcon, which we don't have yet.
|
@ -0,0 +1,277 @@
|
|||||||
|
package glib
|
||||||
|
|
||||||
|
// #cgo pkg-config: glib-2.0 gobject-2.0
|
||||||
|
// #include <gio/gio.h>
|
||||||
|
// #include <glib.h>
|
||||||
|
// #include <glib-object.h>
|
||||||
|
// #include "glib.go.h"
|
||||||
|
import "C"
|
||||||
|
import "unsafe"
|
||||||
|
|
||||||
|
// Settings is a representation of GSettings.
|
||||||
|
type Settings struct {
|
||||||
|
*Object
|
||||||
|
}
|
||||||
|
|
||||||
|
// native() returns a pointer to the underlying GSettings.
|
||||||
|
func (v *Settings) native() *C.GSettings {
|
||||||
|
if v == nil || v.GObject == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return C.toGSettings(unsafe.Pointer(v.GObject))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (v *Settings) Native() uintptr {
|
||||||
|
return uintptr(unsafe.Pointer(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
func marshalSettings(p uintptr) (interface{}, error) {
|
||||||
|
c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
|
||||||
|
return wrapSettings(wrapObject(unsafe.Pointer(c))), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func wrapSettings(obj *Object) *Settings {
|
||||||
|
return &Settings{obj}
|
||||||
|
}
|
||||||
|
|
||||||
|
func wrapFullSettings(obj *C.GSettings) *Settings {
|
||||||
|
if obj == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return wrapSettings(wrapObject(unsafe.Pointer(obj)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SettingsNew is a wrapper around g_settings_new().
|
||||||
|
func SettingsNew(schemaID string) *Settings {
|
||||||
|
cstr := (*C.gchar)(C.CString(schemaID))
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
|
||||||
|
return wrapFullSettings(C.g_settings_new(cstr))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SettingsNewWithPath is a wrapper around g_settings_new_with_path().
|
||||||
|
func SettingsNewWithPath(schemaID, path string) *Settings {
|
||||||
|
cstr1 := (*C.gchar)(C.CString(schemaID))
|
||||||
|
defer C.free(unsafe.Pointer(cstr1))
|
||||||
|
|
||||||
|
cstr2 := (*C.gchar)(C.CString(path))
|
||||||
|
defer C.free(unsafe.Pointer(cstr2))
|
||||||
|
|
||||||
|
return wrapFullSettings(C.g_settings_new_with_path(cstr1, cstr2))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SettingsNewWithBackend is a wrapper around g_settings_new_with_backend().
|
||||||
|
func SettingsNewWithBackend(schemaID string, backend *SettingsBackend) *Settings {
|
||||||
|
cstr1 := (*C.gchar)(C.CString(schemaID))
|
||||||
|
defer C.free(unsafe.Pointer(cstr1))
|
||||||
|
|
||||||
|
return wrapFullSettings(C.g_settings_new_with_backend(cstr1, backend.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SettingsNewWithBackendAndPath is a wrapper around g_settings_new_with_backend_and_path().
|
||||||
|
func SettingsNewWithBackendAndPath(schemaID string, backend *SettingsBackend, path string) *Settings {
|
||||||
|
cstr1 := (*C.gchar)(C.CString(schemaID))
|
||||||
|
defer C.free(unsafe.Pointer(cstr1))
|
||||||
|
|
||||||
|
cstr2 := (*C.gchar)(C.CString(path))
|
||||||
|
defer C.free(unsafe.Pointer(cstr2))
|
||||||
|
|
||||||
|
return wrapFullSettings(C.g_settings_new_with_backend_and_path(cstr1, backend.native(), cstr2))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SettingsNewFull is a wrapper around g_settings_new_full().
|
||||||
|
func SettingsNewFull(schema *SettingsSchema, backend *SettingsBackend, path string) *Settings {
|
||||||
|
cstr1 := (*C.gchar)(C.CString(path))
|
||||||
|
defer C.free(unsafe.Pointer(cstr1))
|
||||||
|
|
||||||
|
return wrapFullSettings(C.g_settings_new_full(schema.native(), backend.native(), cstr1))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SettingsSync is a wrapper around g_settings_sync().
|
||||||
|
func SettingsSync() {
|
||||||
|
C.g_settings_sync()
|
||||||
|
}
|
||||||
|
|
||||||
|
// IsWritable is a wrapper around g_settings_is_writable().
|
||||||
|
func (v *Settings) IsWritable(name string) bool {
|
||||||
|
cstr1 := (*C.gchar)(C.CString(name))
|
||||||
|
defer C.free(unsafe.Pointer(cstr1))
|
||||||
|
|
||||||
|
return gobool(C.g_settings_is_writable(v.native(), cstr1))
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delay is a wrapper around g_settings_delay().
|
||||||
|
func (v *Settings) Delay() {
|
||||||
|
C.g_settings_delay(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// Apply is a wrapper around g_settings_apply().
|
||||||
|
func (v *Settings) Apply() {
|
||||||
|
C.g_settings_apply(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// Revert is a wrapper around g_settings_revert().
|
||||||
|
func (v *Settings) Revert() {
|
||||||
|
C.g_settings_revert(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetHasUnapplied is a wrapper around g_settings_get_has_unapplied().
|
||||||
|
func (v *Settings) GetHasUnapplied() bool {
|
||||||
|
return gobool(C.g_settings_get_has_unapplied(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetChild is a wrapper around g_settings_get_child().
|
||||||
|
func (v *Settings) GetChild(name string) *Settings {
|
||||||
|
cstr1 := (*C.gchar)(C.CString(name))
|
||||||
|
defer C.free(unsafe.Pointer(cstr1))
|
||||||
|
|
||||||
|
return wrapFullSettings(C.g_settings_get_child(v.native(), cstr1))
|
||||||
|
}
|
||||||
|
|
||||||
|
// Reset is a wrapper around g_settings_reset().
|
||||||
|
func (v *Settings) Reset(name string) {
|
||||||
|
cstr1 := (*C.gchar)(C.CString(name))
|
||||||
|
defer C.free(unsafe.Pointer(cstr1))
|
||||||
|
|
||||||
|
C.g_settings_reset(v.native(), cstr1)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListChildren is a wrapper around g_settings_list_children().
|
||||||
|
func (v *Settings) ListChildren() []string {
|
||||||
|
return toGoStringArray(C.g_settings_list_children(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetBoolean is a wrapper around g_settings_get_boolean().
|
||||||
|
func (v *Settings) GetBoolean(name string) bool {
|
||||||
|
cstr1 := (*C.gchar)(C.CString(name))
|
||||||
|
defer C.free(unsafe.Pointer(cstr1))
|
||||||
|
|
||||||
|
return gobool(C.g_settings_get_boolean(v.native(), cstr1))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetBoolean is a wrapper around g_settings_set_boolean().
|
||||||
|
func (v *Settings) SetBoolean(name string, value bool) bool {
|
||||||
|
cstr1 := (*C.gchar)(C.CString(name))
|
||||||
|
defer C.free(unsafe.Pointer(cstr1))
|
||||||
|
|
||||||
|
return gobool(C.g_settings_set_boolean(v.native(), cstr1, gbool(value)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetInt is a wrapper around g_settings_get_int().
|
||||||
|
func (v *Settings) GetInt(name string) int {
|
||||||
|
cstr1 := (*C.gchar)(C.CString(name))
|
||||||
|
defer C.free(unsafe.Pointer(cstr1))
|
||||||
|
|
||||||
|
return int(C.g_settings_get_int(v.native(), cstr1))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetInt is a wrapper around g_settings_set_int().
|
||||||
|
func (v *Settings) SetInt(name string, value int) bool {
|
||||||
|
cstr1 := (*C.gchar)(C.CString(name))
|
||||||
|
defer C.free(unsafe.Pointer(cstr1))
|
||||||
|
|
||||||
|
return gobool(C.g_settings_set_int(v.native(), cstr1, C.gint(value)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetUInt is a wrapper around g_settings_get_uint().
|
||||||
|
func (v *Settings) GetUInt(name string) uint {
|
||||||
|
cstr1 := (*C.gchar)(C.CString(name))
|
||||||
|
defer C.free(unsafe.Pointer(cstr1))
|
||||||
|
|
||||||
|
return uint(C.g_settings_get_uint(v.native(), cstr1))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetUInt is a wrapper around g_settings_set_uint().
|
||||||
|
func (v *Settings) SetUInt(name string, value uint) bool {
|
||||||
|
cstr1 := (*C.gchar)(C.CString(name))
|
||||||
|
defer C.free(unsafe.Pointer(cstr1))
|
||||||
|
|
||||||
|
return gobool(C.g_settings_set_uint(v.native(), cstr1, C.guint(value)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetDouble is a wrapper around g_settings_get_double().
|
||||||
|
func (v *Settings) GetDouble(name string) float64 {
|
||||||
|
cstr1 := (*C.gchar)(C.CString(name))
|
||||||
|
defer C.free(unsafe.Pointer(cstr1))
|
||||||
|
|
||||||
|
return float64(C.g_settings_get_double(v.native(), cstr1))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetDouble is a wrapper around g_settings_set_double().
|
||||||
|
func (v *Settings) SetDouble(name string, value float64) bool {
|
||||||
|
cstr1 := (*C.gchar)(C.CString(name))
|
||||||
|
defer C.free(unsafe.Pointer(cstr1))
|
||||||
|
|
||||||
|
return gobool(C.g_settings_set_double(v.native(), cstr1, C.gdouble(value)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetString is a wrapper around g_settings_get_string().
|
||||||
|
func (v *Settings) GetString(name string) string {
|
||||||
|
cstr1 := (*C.gchar)(C.CString(name))
|
||||||
|
defer C.free(unsafe.Pointer(cstr1))
|
||||||
|
|
||||||
|
return C.GoString((*C.char)(C.g_settings_get_string(v.native(), cstr1)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetString is a wrapper around g_settings_set_string().
|
||||||
|
func (v *Settings) SetString(name string, value string) bool {
|
||||||
|
cstr1 := (*C.gchar)(C.CString(name))
|
||||||
|
defer C.free(unsafe.Pointer(cstr1))
|
||||||
|
|
||||||
|
cstr2 := (*C.gchar)(C.CString(value))
|
||||||
|
defer C.free(unsafe.Pointer(cstr2))
|
||||||
|
|
||||||
|
return gobool(C.g_settings_set_string(v.native(), cstr1, cstr2))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetEnum is a wrapper around g_settings_get_enum().
|
||||||
|
func (v *Settings) GetEnum(name string) int {
|
||||||
|
cstr1 := (*C.gchar)(C.CString(name))
|
||||||
|
defer C.free(unsafe.Pointer(cstr1))
|
||||||
|
|
||||||
|
return int(C.g_settings_get_enum(v.native(), cstr1))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetEnum is a wrapper around g_settings_set_enum().
|
||||||
|
func (v *Settings) SetEnum(name string, value int) bool {
|
||||||
|
cstr1 := (*C.gchar)(C.CString(name))
|
||||||
|
defer C.free(unsafe.Pointer(cstr1))
|
||||||
|
|
||||||
|
return gobool(C.g_settings_set_enum(v.native(), cstr1, C.gint(value)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetFlags is a wrapper around g_settings_get_flags().
|
||||||
|
func (v *Settings) GetFlags(name string) uint {
|
||||||
|
cstr1 := (*C.gchar)(C.CString(name))
|
||||||
|
defer C.free(unsafe.Pointer(cstr1))
|
||||||
|
|
||||||
|
return uint(C.g_settings_get_flags(v.native(), cstr1))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetFlags is a wrapper around g_settings_set_flags().
|
||||||
|
func (v *Settings) SetFlags(name string, value uint) bool {
|
||||||
|
cstr1 := (*C.gchar)(C.CString(name))
|
||||||
|
defer C.free(unsafe.Pointer(cstr1))
|
||||||
|
|
||||||
|
return gobool(C.g_settings_set_flags(v.native(), cstr1, C.guint(value)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GVariant * g_settings_get_value ()
|
||||||
|
// gboolean g_settings_set_value ()
|
||||||
|
// GVariant * g_settings_get_user_value ()
|
||||||
|
// GVariant * g_settings_get_default_value ()
|
||||||
|
// const gchar * const * g_settings_list_schemas ()
|
||||||
|
// const gchar * const * g_settings_list_relocatable_schemas ()
|
||||||
|
// gchar ** g_settings_list_keys ()
|
||||||
|
// GVariant * g_settings_get_range ()
|
||||||
|
// gboolean g_settings_range_check ()
|
||||||
|
// void g_settings_get ()
|
||||||
|
// gboolean g_settings_set ()
|
||||||
|
// gpointer g_settings_get_mapped ()
|
||||||
|
// void g_settings_bind ()
|
||||||
|
// void g_settings_bind_with_mapping ()
|
||||||
|
// void g_settings_bind_writable ()
|
||||||
|
// void g_settings_unbind ()
|
||||||
|
// gaction * g_settings_create_action ()
|
||||||
|
// gchar ** g_settings_get_strv ()
|
||||||
|
// gboolean g_settings_set_strv ()
|
@ -0,0 +1,71 @@
|
|||||||
|
package glib
|
||||||
|
|
||||||
|
// #cgo pkg-config: glib-2.0 gobject-2.0
|
||||||
|
// #include <glib.h>
|
||||||
|
// #include <glib-object.h>
|
||||||
|
// #include "glib.go.h"
|
||||||
|
import "C"
|
||||||
|
import "unsafe"
|
||||||
|
|
||||||
|
// SettingsBackend is a representation of GSettingsBackend.
|
||||||
|
type SettingsBackend struct {
|
||||||
|
*Object
|
||||||
|
}
|
||||||
|
|
||||||
|
// native() returns a pointer to the underlying GSettingsBackend.
|
||||||
|
func (v *SettingsBackend) native() *C.GSettingsBackend {
|
||||||
|
if v == nil || v.GObject == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return C.toGSettingsBackend(unsafe.Pointer(v.GObject))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (v *SettingsBackend) Native() uintptr {
|
||||||
|
return uintptr(unsafe.Pointer(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
func marshalSettingsBackend(p uintptr) (interface{}, error) {
|
||||||
|
c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
|
||||||
|
return wrapSettingsBackend(wrapObject(unsafe.Pointer(c))), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func wrapSettingsBackend(obj *Object) *SettingsBackend {
|
||||||
|
return &SettingsBackend{obj}
|
||||||
|
}
|
||||||
|
|
||||||
|
// SettingsBackendGetDefault is a wrapper around g_settings_backend_get_default().
|
||||||
|
func SettingsBackendGetDefault() *SettingsBackend {
|
||||||
|
return wrapSettingsBackend(wrapObject(unsafe.Pointer(C.g_settings_backend_get_default())))
|
||||||
|
}
|
||||||
|
|
||||||
|
// KeyfileSettingsBackendNew is a wrapper around g_keyfile_settings_backend_new().
|
||||||
|
func KeyfileSettingsBackendNew(filename, rootPath, rootGroup string) *SettingsBackend {
|
||||||
|
cstr1 := (*C.gchar)(C.CString(filename))
|
||||||
|
defer C.free(unsafe.Pointer(cstr1))
|
||||||
|
|
||||||
|
cstr2 := (*C.gchar)(C.CString(rootPath))
|
||||||
|
defer C.free(unsafe.Pointer(cstr2))
|
||||||
|
|
||||||
|
cstr3 := (*C.gchar)(C.CString(rootGroup))
|
||||||
|
defer C.free(unsafe.Pointer(cstr3))
|
||||||
|
|
||||||
|
return wrapSettingsBackend(wrapObject(unsafe.Pointer(C.g_keyfile_settings_backend_new(cstr1, cstr2, cstr3))))
|
||||||
|
}
|
||||||
|
|
||||||
|
// MemorySettingsBackendNew is a wrapper around g_memory_settings_backend_new().
|
||||||
|
func MemorySettingsBackendNew() *SettingsBackend {
|
||||||
|
return wrapSettingsBackend(wrapObject(unsafe.Pointer(C.g_memory_settings_backend_new())))
|
||||||
|
}
|
||||||
|
|
||||||
|
// NullSettingsBackendNew is a wrapper around g_null_settings_backend_new().
|
||||||
|
func NullSettingsBackendNew() *SettingsBackend {
|
||||||
|
return wrapSettingsBackend(wrapObject(unsafe.Pointer(C.g_null_settings_backend_new())))
|
||||||
|
}
|
||||||
|
|
||||||
|
// void g_settings_backend_changed ()
|
||||||
|
// void g_settings_backend_path_changed ()
|
||||||
|
// void g_settings_backend_keys_changed ()
|
||||||
|
// void g_settings_backend_path_writable_changed ()
|
||||||
|
// void g_settings_backend_writable_changed ()
|
||||||
|
// void g_settings_backend_changed_tree ()
|
||||||
|
// void g_settings_backend_flatten_tree ()
|
@ -0,0 +1,96 @@
|
|||||||
|
package glib
|
||||||
|
|
||||||
|
// #cgo pkg-config: glib-2.0 gobject-2.0
|
||||||
|
// #include <gio/gio.h>
|
||||||
|
// #include <glib.h>
|
||||||
|
// #include <glib-object.h>
|
||||||
|
// #include "glib.go.h"
|
||||||
|
import "C"
|
||||||
|
import "unsafe"
|
||||||
|
|
||||||
|
// SettingsSchema is a representation of GSettingsSchema.
|
||||||
|
type SettingsSchema struct {
|
||||||
|
schema *C.GSettingsSchema
|
||||||
|
}
|
||||||
|
|
||||||
|
func wrapSettingsSchema(obj *C.GSettingsSchema) *SettingsSchema {
|
||||||
|
if obj == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return &SettingsSchema{obj}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (v *SettingsSchema) Native() uintptr {
|
||||||
|
return uintptr(unsafe.Pointer(v.schema))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (v *SettingsSchema) native() *C.GSettingsSchema {
|
||||||
|
if v == nil || v.schema == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return v.schema
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ref() is a wrapper around g_settings_schema_ref().
|
||||||
|
func (v *SettingsSchema) Ref() *SettingsSchema {
|
||||||
|
return wrapSettingsSchema(C.g_settings_schema_ref(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// Unref() is a wrapper around g_settings_schema_unref().
|
||||||
|
func (v *SettingsSchema) Unref() {
|
||||||
|
C.g_settings_schema_unref(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetID() is a wrapper around g_settings_schema_get_id().
|
||||||
|
func (v *SettingsSchema) GetID() string {
|
||||||
|
return C.GoString((*C.char)(C.g_settings_schema_get_id(v.native())))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetPath() is a wrapper around g_settings_schema_get_path().
|
||||||
|
func (v *SettingsSchema) GetPath() string {
|
||||||
|
return C.GoString((*C.char)(C.g_settings_schema_get_path(v.native())))
|
||||||
|
}
|
||||||
|
|
||||||
|
// HasKey() is a wrapper around g_settings_schema_has_key().
|
||||||
|
func (v *SettingsSchema) HasKey(v1 string) bool {
|
||||||
|
cstr := (*C.gchar)(C.CString(v1))
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
|
||||||
|
return gobool(C.g_settings_schema_has_key(v.native(), cstr))
|
||||||
|
}
|
||||||
|
|
||||||
|
func toGoStringArray(c **C.gchar) []string {
|
||||||
|
var strs []string
|
||||||
|
originalc := c
|
||||||
|
defer C.g_strfreev(originalc)
|
||||||
|
|
||||||
|
for *c != nil {
|
||||||
|
strs = append(strs, C.GoString((*C.char)(*c)))
|
||||||
|
c = C.next_gcharptr(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
return strs
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// // ListChildren() is a wrapper around g_settings_schema_list_children().
|
||||||
|
// func (v *SettingsSchema) ListChildren() []string {
|
||||||
|
// return toGoStringArray(C.g_settings_schema_list_children(v.native()))
|
||||||
|
// }
|
||||||
|
|
||||||
|
// // ListKeys() is a wrapper around g_settings_schema_list_keys().
|
||||||
|
// func (v *SettingsSchema) ListKeys() []string {
|
||||||
|
// return toGoStringArray(C.g_settings_schema_list_keys(v.native()))
|
||||||
|
// }
|
||||||
|
|
||||||
|
// const GVariantType * g_settings_schema_key_get_value_type ()
|
||||||
|
// GVariant * g_settings_schema_key_get_default_value ()
|
||||||
|
// GVariant * g_settings_schema_key_get_range ()
|
||||||
|
// gboolean g_settings_schema_key_range_check ()
|
||||||
|
// const gchar * g_settings_schema_key_get_name ()
|
||||||
|
// const gchar * g_settings_schema_key_get_summary ()
|
||||||
|
// const gchar * g_settings_schema_key_get_description ()
|
||||||
|
|
||||||
|
// GSettingsSchemaKey * g_settings_schema_get_key ()
|
||||||
|
// GSettingsSchemaKey * g_settings_schema_key_ref ()
|
||||||
|
// void g_settings_schema_key_unref ()
|
@ -0,0 +1,70 @@
|
|||||||
|
package glib
|
||||||
|
|
||||||
|
// #cgo pkg-config: glib-2.0 gobject-2.0
|
||||||
|
// #include <gio/gio.h>
|
||||||
|
// #include <glib.h>
|
||||||
|
// #include <glib-object.h>
|
||||||
|
// #include "glib.go.h"
|
||||||
|
import "C"
|
||||||
|
import "unsafe"
|
||||||
|
|
||||||
|
// SettingsSchemaSource is a representation of GSettingsSchemaSource.
|
||||||
|
type SettingsSchemaSource struct {
|
||||||
|
source *C.GSettingsSchemaSource
|
||||||
|
}
|
||||||
|
|
||||||
|
func wrapSettingsSchemaSource(obj *C.GSettingsSchemaSource) *SettingsSchemaSource {
|
||||||
|
if obj == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return &SettingsSchemaSource{obj}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (v *SettingsSchemaSource) Native() uintptr {
|
||||||
|
return uintptr(unsafe.Pointer(v.source))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (v *SettingsSchemaSource) native() *C.GSettingsSchemaSource {
|
||||||
|
if v == nil || v.source == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return v.source
|
||||||
|
}
|
||||||
|
|
||||||
|
// SettingsSchemaSourceGetDefault is a wrapper around g_settings_schema_source_get_default().
|
||||||
|
func SettingsSchemaSourceGetDefault() *SettingsSchemaSource {
|
||||||
|
return wrapSettingsSchemaSource(C.g_settings_schema_source_get_default())
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ref() is a wrapper around g_settings_schema_source_ref().
|
||||||
|
func (v *SettingsSchemaSource) Ref() *SettingsSchemaSource {
|
||||||
|
return wrapSettingsSchemaSource(C.g_settings_schema_source_ref(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// Unref() is a wrapper around g_settings_schema_source_unref().
|
||||||
|
func (v *SettingsSchemaSource) Unref() {
|
||||||
|
C.g_settings_schema_source_unref(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// SettingsSchemaSourceNewFromDirectory() is a wrapper around g_settings_schema_source_new_from_directory().
|
||||||
|
func SettingsSchemaSourceNewFromDirectory(dir string, parent *SettingsSchemaSource, trusted bool) *SettingsSchemaSource {
|
||||||
|
cstr := (*C.gchar)(C.CString(dir))
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
|
||||||
|
return wrapSettingsSchemaSource(C.g_settings_schema_source_new_from_directory(cstr, parent.native(), gbool(trusted), nil))
|
||||||
|
}
|
||||||
|
|
||||||
|
// Lookup() is a wrapper around g_settings_schema_source_lookup().
|
||||||
|
func (v *SettingsSchemaSource) Lookup(schema string, recursive bool) *SettingsSchema {
|
||||||
|
cstr := (*C.gchar)(C.CString(schema))
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
|
||||||
|
return wrapSettingsSchema(C.g_settings_schema_source_lookup(v.native(), cstr, gbool(recursive)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListSchemas is a wrapper around g_settings_schema_source_list_schemas().
|
||||||
|
func (v *SettingsSchemaSource) ListSchemas(recursive bool) (nonReolcatable, relocatable []string) {
|
||||||
|
var nonRel, rel **C.gchar
|
||||||
|
C.g_settings_schema_source_list_schemas(v.native(), gbool(recursive), &nonRel, &rel)
|
||||||
|
return toGoStringArray(nonRel), toGoStringArray(rel)
|
||||||
|
}
|
@ -0,0 +1,71 @@
|
|||||||
|
package glib
|
||||||
|
|
||||||
|
// #cgo pkg-config: glib-2.0 gobject-2.0
|
||||||
|
// #include <glib.h>
|
||||||
|
// #include <glib-object.h>
|
||||||
|
// #include "glib.go.h"
|
||||||
|
import "C"
|
||||||
|
import "unsafe"
|
||||||
|
|
||||||
|
// SList is a representation of Glib's GSList.
|
||||||
|
type SList struct {
|
||||||
|
list *C.struct__GSList
|
||||||
|
}
|
||||||
|
|
||||||
|
func WrapSList(obj uintptr) *SList {
|
||||||
|
return wrapSList((*C.struct__GSList)(unsafe.Pointer(obj)))
|
||||||
|
}
|
||||||
|
|
||||||
|
func wrapSList(obj *C.struct__GSList) *SList {
|
||||||
|
return &SList{obj}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (v *SList) Native() uintptr {
|
||||||
|
return uintptr(unsafe.Pointer(v.list))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (v *SList) native() *C.struct__GSList {
|
||||||
|
if v == nil || v.list == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return v.list
|
||||||
|
}
|
||||||
|
|
||||||
|
func (v *SList) Append(data uintptr) *SList {
|
||||||
|
ret := C.g_slist_append(v.native(), C.gpointer(data))
|
||||||
|
if ret == v.native() {
|
||||||
|
return v
|
||||||
|
} else {
|
||||||
|
return wrapSList(ret)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// GSList * g_slist_alloc ()
|
||||||
|
// GSList * g_slist_prepend ()
|
||||||
|
// GSList * g_slist_insert ()
|
||||||
|
// GSList * g_slist_insert_before ()
|
||||||
|
// GSList * g_slist_insert_sorted ()
|
||||||
|
// GSList * g_slist_remove ()
|
||||||
|
// GSList * g_slist_remove_link ()
|
||||||
|
// GSList * g_slist_delete_link ()
|
||||||
|
// GSList * g_slist_remove_all ()
|
||||||
|
// void g_slist_free ()
|
||||||
|
// void g_slist_free_full ()
|
||||||
|
// void g_slist_free_1 ()
|
||||||
|
// guint g_slist_length ()
|
||||||
|
// GSList * g_slist_copy ()
|
||||||
|
// GSList * g_slist_copy_deep ()
|
||||||
|
// GSList * g_slist_reverse ()
|
||||||
|
// GSList * g_slist_insert_sorted_with_data ()
|
||||||
|
// GSList * g_slist_sort ()
|
||||||
|
// GSList * g_slist_sort_with_data ()
|
||||||
|
// GSList * g_slist_concat ()
|
||||||
|
// void g_slist_foreach ()
|
||||||
|
// GSList * g_slist_last ()
|
||||||
|
// #define g_slist_next()
|
||||||
|
// GSList * g_slist_nth ()
|
||||||
|
// gpointer g_slist_nth_data ()
|
||||||
|
// GSList * g_slist_find ()
|
||||||
|
// GSList * g_slist_find_custom ()
|
||||||
|
// gint g_slist_position ()
|
||||||
|
// gint g_slist_index ()
|
@ -0,0 +1,313 @@
|
|||||||
|
package gtk
|
||||||
|
|
||||||
|
// #include <gtk/gtk.h>
|
||||||
|
// #include "gtk.go.h"
|
||||||
|
import "C"
|
||||||
|
import (
|
||||||
|
"unsafe"
|
||||||
|
|
||||||
|
"github.com/gotk3/gotk3/gdk"
|
||||||
|
"github.com/gotk3/gotk3/glib"
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
tm := []glib.TypeMarshaler{
|
||||||
|
{glib.Type(C.gtk_about_dialog_get_type()), marshalAboutDialog},
|
||||||
|
}
|
||||||
|
|
||||||
|
glib.RegisterGValueMarshalers(tm)
|
||||||
|
|
||||||
|
WrapMap["GtkAboutDialog"] = wrapAboutDialog
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GtkAboutDialog
|
||||||
|
*/
|
||||||
|
|
||||||
|
// AboutDialog is a representation of GTK's GtkAboutDialog.
|
||||||
|
type AboutDialog struct {
|
||||||
|
Dialog
|
||||||
|
}
|
||||||
|
|
||||||
|
// native returns a pointer to the underlying GtkAboutDialog.
|
||||||
|
func (v *AboutDialog) native() *C.GtkAboutDialog {
|
||||||
|
if v == nil || v.GObject == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
p := unsafe.Pointer(v.GObject)
|
||||||
|
return C.toGtkAboutDialog(p)
|
||||||
|
}
|
||||||
|
|
||||||
|
func marshalAboutDialog(p uintptr) (interface{}, error) {
|
||||||
|
c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
|
||||||
|
obj := wrapObject(unsafe.Pointer(c))
|
||||||
|
return wrapAboutDialog(obj), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func wrapAboutDialog(obj *glib.Object) *AboutDialog {
|
||||||
|
return &AboutDialog{Dialog{Window{Bin{Container{Widget{glib.InitiallyUnowned{obj}}}}}}}
|
||||||
|
}
|
||||||
|
|
||||||
|
// AboutDialogNew is a wrapper around gtk_about_dialog_new().
|
||||||
|
func AboutDialogNew() (*AboutDialog, error) {
|
||||||
|
c := C.gtk_about_dialog_new()
|
||||||
|
if c == nil {
|
||||||
|
return nil, nilPtrErr
|
||||||
|
}
|
||||||
|
obj := wrapObject(unsafe.Pointer(c))
|
||||||
|
return wrapAboutDialog(obj), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetComments is a wrapper around gtk_about_dialog_get_comments().
|
||||||
|
func (v *AboutDialog) GetComments() string {
|
||||||
|
c := C.gtk_about_dialog_get_comments(v.native())
|
||||||
|
return C.GoString((*C.char)(c))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetComments is a wrapper around gtk_about_dialog_set_comments().
|
||||||
|
func (v *AboutDialog) SetComments(comments string) {
|
||||||
|
cstr := C.CString(comments)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
C.gtk_about_dialog_set_comments(v.native(), (*C.gchar)(cstr))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetCopyright is a wrapper around gtk_about_dialog_get_copyright().
|
||||||
|
func (v *AboutDialog) GetCopyright() string {
|
||||||
|
c := C.gtk_about_dialog_get_copyright(v.native())
|
||||||
|
return C.GoString((*C.char)(c))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetCopyright is a wrapper around gtk_about_dialog_set_copyright().
|
||||||
|
func (v *AboutDialog) SetCopyright(copyright string) {
|
||||||
|
cstr := C.CString(copyright)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
C.gtk_about_dialog_set_copyright(v.native(), (*C.gchar)(cstr))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetLicense is a wrapper around gtk_about_dialog_get_license().
|
||||||
|
func (v *AboutDialog) GetLicense() string {
|
||||||
|
c := C.gtk_about_dialog_get_license(v.native())
|
||||||
|
return C.GoString((*C.char)(c))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetLicense is a wrapper around gtk_about_dialog_set_license().
|
||||||
|
func (v *AboutDialog) SetLicense(license string) {
|
||||||
|
cstr := C.CString(license)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
C.gtk_about_dialog_set_license(v.native(), (*C.gchar)(cstr))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetLicenseType is a wrapper around gtk_about_dialog_get_license_type().
|
||||||
|
func (v *AboutDialog) GetLicenseType() License {
|
||||||
|
c := C.gtk_about_dialog_get_license_type(v.native())
|
||||||
|
return License(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetLicenseType is a wrapper around gtk_about_dialog_set_license_type().
|
||||||
|
func (v *AboutDialog) SetLicenseType(license License) {
|
||||||
|
C.gtk_about_dialog_set_license_type(v.native(), C.GtkLicense(license))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetLogo is a wrapper around gtk_about_dialog_set_logo().
|
||||||
|
func (v *AboutDialog) SetLogo(logo *gdk.Pixbuf) {
|
||||||
|
logoPtr := (*C.GdkPixbuf)(unsafe.Pointer(logo.Native()))
|
||||||
|
C.gtk_about_dialog_set_logo(v.native(), logoPtr)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetLogoIconName is a wrapper around gtk_about_dialog_get_logo_icon_name().
|
||||||
|
func (v *AboutDialog) GetLogoIconName() string {
|
||||||
|
c := C.gtk_about_dialog_get_logo_icon_name(v.native())
|
||||||
|
return C.GoString((*C.char)(c))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetLogoIconName is a wrapper around gtk_about_dialog_set_logo_icon_name().
|
||||||
|
func (v *AboutDialog) SetLogoIconName(name string) {
|
||||||
|
cstr := C.CString(name)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
C.gtk_about_dialog_set_logo_icon_name(v.native(), (*C.gchar)(cstr))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetProgramName is a wrapper around gtk_about_dialog_get_program_name().
|
||||||
|
func (v *AboutDialog) GetProgramName() string {
|
||||||
|
c := C.gtk_about_dialog_get_program_name(v.native())
|
||||||
|
return C.GoString((*C.char)(c))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetProgramName is a wrapper around gtk_about_dialog_set_program_name().
|
||||||
|
func (v *AboutDialog) SetProgramName(name string) {
|
||||||
|
cstr := C.CString(name)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
C.gtk_about_dialog_set_program_name(v.native(), (*C.gchar)(cstr))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetAuthors is a wrapper around gtk_about_dialog_get_authors().
|
||||||
|
func (v *AboutDialog) GetAuthors() []string {
|
||||||
|
var authors []string
|
||||||
|
cauthors := C.gtk_about_dialog_get_authors(v.native())
|
||||||
|
if cauthors == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
for {
|
||||||
|
if *cauthors == nil {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
authors = append(authors, C.GoString((*C.char)(*cauthors)))
|
||||||
|
cauthors = C.next_gcharptr(cauthors)
|
||||||
|
}
|
||||||
|
return authors
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetAuthors is a wrapper around gtk_about_dialog_set_authors().
|
||||||
|
func (v *AboutDialog) SetAuthors(authors []string) {
|
||||||
|
cauthors := C.make_strings(C.int(len(authors) + 1))
|
||||||
|
for i, author := range authors {
|
||||||
|
cstr := C.CString(author)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
C.set_string(cauthors, C.int(i), (*C.gchar)(cstr))
|
||||||
|
}
|
||||||
|
|
||||||
|
C.set_string(cauthors, C.int(len(authors)), nil)
|
||||||
|
C.gtk_about_dialog_set_authors(v.native(), cauthors)
|
||||||
|
C.destroy_strings(cauthors)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetArtists is a wrapper around gtk_about_dialog_get_artists().
|
||||||
|
func (v *AboutDialog) GetArtists() []string {
|
||||||
|
var artists []string
|
||||||
|
cartists := C.gtk_about_dialog_get_artists(v.native())
|
||||||
|
if cartists == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
for {
|
||||||
|
if *cartists == nil {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
artists = append(artists, C.GoString((*C.char)(*cartists)))
|
||||||
|
cartists = C.next_gcharptr(cartists)
|
||||||
|
}
|
||||||
|
return artists
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetArtists is a wrapper around gtk_about_dialog_set_artists().
|
||||||
|
func (v *AboutDialog) SetArtists(artists []string) {
|
||||||
|
cartists := C.make_strings(C.int(len(artists) + 1))
|
||||||
|
for i, artist := range artists {
|
||||||
|
cstr := C.CString(artist)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
C.set_string(cartists, C.int(i), (*C.gchar)(cstr))
|
||||||
|
}
|
||||||
|
|
||||||
|
C.set_string(cartists, C.int(len(artists)), nil)
|
||||||
|
C.gtk_about_dialog_set_artists(v.native(), cartists)
|
||||||
|
C.destroy_strings(cartists)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetDocumenters is a wrapper around gtk_about_dialog_get_documenters().
|
||||||
|
func (v *AboutDialog) GetDocumenters() []string {
|
||||||
|
var documenters []string
|
||||||
|
cdocumenters := C.gtk_about_dialog_get_documenters(v.native())
|
||||||
|
if cdocumenters == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
for {
|
||||||
|
if *cdocumenters == nil {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
documenters = append(documenters, C.GoString((*C.char)(*cdocumenters)))
|
||||||
|
cdocumenters = C.next_gcharptr(cdocumenters)
|
||||||
|
}
|
||||||
|
return documenters
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetDocumenters is a wrapper around gtk_about_dialog_set_documenters().
|
||||||
|
func (v *AboutDialog) SetDocumenters(documenters []string) {
|
||||||
|
cdocumenters := C.make_strings(C.int(len(documenters) + 1))
|
||||||
|
for i, doc := range documenters {
|
||||||
|
cstr := C.CString(doc)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
C.set_string(cdocumenters, C.int(i), (*C.gchar)(cstr))
|
||||||
|
}
|
||||||
|
|
||||||
|
C.set_string(cdocumenters, C.int(len(documenters)), nil)
|
||||||
|
C.gtk_about_dialog_set_documenters(v.native(), cdocumenters)
|
||||||
|
C.destroy_strings(cdocumenters)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetTranslatorCredits is a wrapper around gtk_about_dialog_get_translator_credits().
|
||||||
|
func (v *AboutDialog) GetTranslatorCredits() string {
|
||||||
|
c := C.gtk_about_dialog_get_translator_credits(v.native())
|
||||||
|
return C.GoString((*C.char)(c))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetTranslatorCredits is a wrapper around gtk_about_dialog_set_translator_credits().
|
||||||
|
func (v *AboutDialog) SetTranslatorCredits(translatorCredits string) {
|
||||||
|
cstr := C.CString(translatorCredits)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
C.gtk_about_dialog_set_translator_credits(v.native(), (*C.gchar)(cstr))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetVersion is a wrapper around gtk_about_dialog_get_version().
|
||||||
|
func (v *AboutDialog) GetVersion() string {
|
||||||
|
c := C.gtk_about_dialog_get_version(v.native())
|
||||||
|
return C.GoString((*C.char)(c))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetVersion is a wrapper around gtk_about_dialog_set_version().
|
||||||
|
func (v *AboutDialog) SetVersion(version string) {
|
||||||
|
cstr := C.CString(version)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
C.gtk_about_dialog_set_version(v.native(), (*C.gchar)(cstr))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetWebsite is a wrapper around gtk_about_dialog_get_website().
|
||||||
|
func (v *AboutDialog) GetWebsite() string {
|
||||||
|
c := C.gtk_about_dialog_get_website(v.native())
|
||||||
|
return C.GoString((*C.char)(c))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetWebsite is a wrapper around gtk_about_dialog_set_website().
|
||||||
|
func (v *AboutDialog) SetWebsite(website string) {
|
||||||
|
cstr := C.CString(website)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
C.gtk_about_dialog_set_website(v.native(), (*C.gchar)(cstr))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetWebsiteLabel is a wrapper around gtk_about_dialog_get_website_label().
|
||||||
|
func (v *AboutDialog) GetWebsiteLabel() string {
|
||||||
|
c := C.gtk_about_dialog_get_website_label(v.native())
|
||||||
|
return C.GoString((*C.char)(c))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetWebsiteLabel is a wrapper around gtk_about_dialog_set_website_label().
|
||||||
|
func (v *AboutDialog) SetWebsiteLabel(websiteLabel string) {
|
||||||
|
cstr := C.CString(websiteLabel)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
C.gtk_about_dialog_set_website_label(v.native(), (*C.gchar)(cstr))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetWrapLicense is a wrapper around gtk_about_dialog_get_wrap_license().
|
||||||
|
func (v *AboutDialog) GetWrapLicense() bool {
|
||||||
|
return gobool(C.gtk_about_dialog_get_wrap_license(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetWrapLicense is a wrapper around gtk_about_dialog_set_wrap_license().
|
||||||
|
func (v *AboutDialog) SetWrapLicense(wrapLicense bool) {
|
||||||
|
C.gtk_about_dialog_set_wrap_license(v.native(), gbool(wrapLicense))
|
||||||
|
}
|
||||||
|
|
||||||
|
// AddCreditSection is a wrapper around gtk_about_dialog_add_credit_section().
|
||||||
|
func (v *AboutDialog) AddCreditSection(sectionName string, people []string) {
|
||||||
|
cname := (*C.gchar)(C.CString(sectionName))
|
||||||
|
defer C.free(unsafe.Pointer(cname))
|
||||||
|
|
||||||
|
cpeople := C.make_strings(C.int(len(people)) + 1)
|
||||||
|
defer C.destroy_strings(cpeople)
|
||||||
|
for i, p := range people {
|
||||||
|
cp := (*C.gchar)(C.CString(p))
|
||||||
|
defer C.free(unsafe.Pointer(cp))
|
||||||
|
C.set_string(cpeople, C.int(i), cp)
|
||||||
|
}
|
||||||
|
C.set_string(cpeople, C.int(len(people)), nil)
|
||||||
|
|
||||||
|
C.gtk_about_dialog_add_credit_section(v.native(), cname, cpeople)
|
||||||
|
}
|
@ -0,0 +1,435 @@
|
|||||||
|
// Same copyright and license as the rest of the files in this project
|
||||||
|
// This file contains accelerator related functions and structures
|
||||||
|
|
||||||
|
package gtk
|
||||||
|
|
||||||
|
// #include <gtk/gtk.h>
|
||||||
|
// #include "gtk.go.h"
|
||||||
|
import "C"
|
||||||
|
import (
|
||||||
|
"unsafe"
|
||||||
|
|
||||||
|
"github.com/gotk3/gotk3/gdk"
|
||||||
|
"github.com/gotk3/gotk3/glib"
|
||||||
|
)
|
||||||
|
|
||||||
|
// AccelFlags is a representation of GTK's GtkAccelFlags
|
||||||
|
type AccelFlags int
|
||||||
|
|
||||||
|
const (
|
||||||
|
ACCEL_VISIBLE AccelFlags = C.GTK_ACCEL_VISIBLE
|
||||||
|
ACCEL_LOCKED AccelFlags = C.GTK_ACCEL_LOCKED
|
||||||
|
ACCEL_MASK AccelFlags = C.GTK_ACCEL_MASK
|
||||||
|
)
|
||||||
|
|
||||||
|
func marshalAccelFlags(p uintptr) (interface{}, error) {
|
||||||
|
c := C.g_value_get_enum((*C.GValue)(unsafe.Pointer(p)))
|
||||||
|
return AccelFlags(c), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// AcceleratorName is a wrapper around gtk_accelerator_name().
|
||||||
|
func AcceleratorName(key uint, mods gdk.ModifierType) string {
|
||||||
|
c := C.gtk_accelerator_name(C.guint(key), C.GdkModifierType(mods))
|
||||||
|
defer C.free(unsafe.Pointer(c))
|
||||||
|
return C.GoString((*C.char)(c))
|
||||||
|
}
|
||||||
|
|
||||||
|
// AcceleratorValid is a wrapper around gtk_accelerator_valid().
|
||||||
|
func AcceleratorValid(key uint, mods gdk.ModifierType) bool {
|
||||||
|
return gobool(C.gtk_accelerator_valid(C.guint(key), C.GdkModifierType(mods)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// AcceleratorGetDefaultModMask is a wrapper around gtk_accelerator_get_default_mod_mask().
|
||||||
|
func AcceleratorGetDefaultModMask() gdk.ModifierType {
|
||||||
|
return gdk.ModifierType(C.gtk_accelerator_get_default_mod_mask())
|
||||||
|
}
|
||||||
|
|
||||||
|
// AcceleratorParse is a wrapper around gtk_accelerator_parse().
|
||||||
|
func AcceleratorParse(acc string) (key uint, mods gdk.ModifierType) {
|
||||||
|
cstr := C.CString(acc)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
|
||||||
|
k := C.guint(0)
|
||||||
|
m := C.GdkModifierType(0)
|
||||||
|
|
||||||
|
C.gtk_accelerator_parse((*C.gchar)(cstr), &k, &m)
|
||||||
|
return uint(k), gdk.ModifierType(m)
|
||||||
|
}
|
||||||
|
|
||||||
|
// AcceleratorGetLabel is a wrapper around gtk_accelerator_get_label().
|
||||||
|
func AcceleratorGetLabel(key uint, mods gdk.ModifierType) string {
|
||||||
|
c := C.gtk_accelerator_get_label(C.guint(key), C.GdkModifierType(mods))
|
||||||
|
defer C.free(unsafe.Pointer(c))
|
||||||
|
return C.GoString((*C.char)(c))
|
||||||
|
}
|
||||||
|
|
||||||
|
// AcceleratorSetDefaultModMask is a wrapper around gtk_accelerator_set_default_mod_mask().
|
||||||
|
func AcceleratorSetDefaultModMask(mods gdk.ModifierType) {
|
||||||
|
C.gtk_accelerator_set_default_mod_mask(C.GdkModifierType(mods))
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GtkAccelGroup
|
||||||
|
*/
|
||||||
|
|
||||||
|
// AccelGroup is a representation of GTK's GtkAccelGroup.
|
||||||
|
type AccelGroup struct {
|
||||||
|
*glib.Object
|
||||||
|
}
|
||||||
|
|
||||||
|
// native returns a pointer to the underlying GtkAccelGroup.
|
||||||
|
func (v *AccelGroup) native() *C.GtkAccelGroup {
|
||||||
|
if v == nil || v.GObject == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
p := unsafe.Pointer(v.GObject)
|
||||||
|
return C.toGtkAccelGroup(p)
|
||||||
|
}
|
||||||
|
|
||||||
|
func marshalAccelGroup(p uintptr) (interface{}, error) {
|
||||||
|
c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
|
||||||
|
obj := wrapObject(unsafe.Pointer(c))
|
||||||
|
return wrapAccelGroup(obj), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func wrapAccelGroup(obj *glib.Object) *AccelGroup {
|
||||||
|
return &AccelGroup{obj}
|
||||||
|
}
|
||||||
|
|
||||||
|
// AccelGroup is a wrapper around gtk_accel_group_new().
|
||||||
|
func AccelGroupNew() (*AccelGroup, error) {
|
||||||
|
c := C.gtk_accel_group_new()
|
||||||
|
if c == nil {
|
||||||
|
return nil, nilPtrErr
|
||||||
|
}
|
||||||
|
obj := wrapObject(unsafe.Pointer(c))
|
||||||
|
return wrapAccelGroup(obj), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Connect is a wrapper around gtk_accel_group_connect().
|
||||||
|
func (v *AccelGroup) Connect(key uint, mods gdk.ModifierType, flags AccelFlags, f interface{}) {
|
||||||
|
closure, _ := glib.ClosureNew(f)
|
||||||
|
cl := (*C.struct__GClosure)(unsafe.Pointer(closure))
|
||||||
|
C.gtk_accel_group_connect(
|
||||||
|
v.native(),
|
||||||
|
C.guint(key),
|
||||||
|
C.GdkModifierType(mods),
|
||||||
|
C.GtkAccelFlags(flags),
|
||||||
|
cl)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ConnectByPath is a wrapper around gtk_accel_group_connect_by_path().
|
||||||
|
func (v *AccelGroup) ConnectByPath(path string, f interface{}) {
|
||||||
|
closure, _ := glib.ClosureNew(f)
|
||||||
|
cl := (*C.struct__GClosure)(unsafe.Pointer(closure))
|
||||||
|
|
||||||
|
cstr := C.CString(path)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
|
||||||
|
C.gtk_accel_group_connect_by_path(
|
||||||
|
v.native(),
|
||||||
|
(*C.gchar)(cstr),
|
||||||
|
cl)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Disconnect is a wrapper around gtk_accel_group_disconnect().
|
||||||
|
func (v *AccelGroup) Disconnect(f interface{}) {
|
||||||
|
closure, _ := glib.ClosureNew(f)
|
||||||
|
cl := (*C.struct__GClosure)(unsafe.Pointer(closure))
|
||||||
|
C.gtk_accel_group_disconnect(v.native(), cl)
|
||||||
|
}
|
||||||
|
|
||||||
|
// DisconnectKey is a wrapper around gtk_accel_group_disconnect_key().
|
||||||
|
func (v *AccelGroup) DisconnectKey(key uint, mods gdk.ModifierType) {
|
||||||
|
C.gtk_accel_group_disconnect_key(v.native(), C.guint(key), C.GdkModifierType(mods))
|
||||||
|
}
|
||||||
|
|
||||||
|
// Lock is a wrapper around gtk_accel_group_lock().
|
||||||
|
func (v *AccelGroup) Lock() {
|
||||||
|
C.gtk_accel_group_lock(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// Unlock is a wrapper around gtk_accel_group_unlock().
|
||||||
|
func (v *AccelGroup) Unlock() {
|
||||||
|
C.gtk_accel_group_unlock(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// IsLocked is a wrapper around gtk_accel_group_get_is_locked().
|
||||||
|
func (v *AccelGroup) IsLocked() bool {
|
||||||
|
return gobool(C.gtk_accel_group_get_is_locked(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// AccelGroupFromClosure is a wrapper around gtk_accel_group_from_accel_closure().
|
||||||
|
func AccelGroupFromClosure(f interface{}) *AccelGroup {
|
||||||
|
closure, _ := glib.ClosureNew(f)
|
||||||
|
cl := (*C.struct__GClosure)(unsafe.Pointer(closure))
|
||||||
|
c := C.gtk_accel_group_from_accel_closure(cl)
|
||||||
|
if c == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return wrapAccelGroup(wrapObject(unsafe.Pointer(c)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetModifierMask is a wrapper around gtk_accel_group_get_modifier_mask().
|
||||||
|
func (v *AccelGroup) GetModifierMask() gdk.ModifierType {
|
||||||
|
return gdk.ModifierType(C.gtk_accel_group_get_modifier_mask(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// AccelGroupsActivate is a wrapper around gtk_accel_groups_activate().
|
||||||
|
func AccelGroupsActivate(obj *glib.Object, key uint, mods gdk.ModifierType) bool {
|
||||||
|
return gobool(C.gtk_accel_groups_activate((*C.GObject)(unsafe.Pointer(obj.Native())), C.guint(key), C.GdkModifierType(mods)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// Activate is a wrapper around gtk_accel_group_activate().
|
||||||
|
func (v *AccelGroup) Activate(quark glib.Quark, acceleratable *glib.Object, key uint, mods gdk.ModifierType) bool {
|
||||||
|
return gobool(C.gtk_accel_group_activate(v.native(), C.GQuark(quark), (*C.GObject)(unsafe.Pointer(acceleratable.Native())), C.guint(key), C.GdkModifierType(mods)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// AccelGroupsFromObject is a wrapper around gtk_accel_groups_from_object().
|
||||||
|
func AccelGroupsFromObject(obj *glib.Object) *glib.SList {
|
||||||
|
res := C.gtk_accel_groups_from_object((*C.GObject)(unsafe.Pointer(obj.Native())))
|
||||||
|
if res == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return (*glib.SList)(unsafe.Pointer(res))
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GtkAccelMap
|
||||||
|
*/
|
||||||
|
|
||||||
|
// AccelMap is a representation of GTK's GtkAccelMap.
|
||||||
|
type AccelMap struct {
|
||||||
|
*glib.Object
|
||||||
|
}
|
||||||
|
|
||||||
|
// native returns a pointer to the underlying GtkAccelMap.
|
||||||
|
func (v *AccelMap) native() *C.GtkAccelMap {
|
||||||
|
if v == nil || v.GObject == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
p := unsafe.Pointer(v.GObject)
|
||||||
|
return C.toGtkAccelMap(p)
|
||||||
|
}
|
||||||
|
|
||||||
|
func marshalAccelMap(p uintptr) (interface{}, error) {
|
||||||
|
c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
|
||||||
|
obj := wrapObject(unsafe.Pointer(c))
|
||||||
|
return wrapAccelMap(obj), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func wrapAccelMap(obj *glib.Object) *AccelMap {
|
||||||
|
return &AccelMap{obj}
|
||||||
|
}
|
||||||
|
|
||||||
|
// AccelMapAddEntry is a wrapper around gtk_accel_map_add_entry().
|
||||||
|
func AccelMapAddEntry(path string, key uint, mods gdk.ModifierType) {
|
||||||
|
cstr := C.CString(path)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
|
||||||
|
C.gtk_accel_map_add_entry((*C.gchar)(cstr), C.guint(key), C.GdkModifierType(mods))
|
||||||
|
}
|
||||||
|
|
||||||
|
type AccelKey struct {
|
||||||
|
key uint
|
||||||
|
mods gdk.ModifierType
|
||||||
|
flags uint16
|
||||||
|
}
|
||||||
|
|
||||||
|
func (v *AccelKey) native() *C.struct__GtkAccelKey {
|
||||||
|
if v == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
var val C.struct__GtkAccelKey
|
||||||
|
val.accel_key = C.guint(v.key)
|
||||||
|
val.accel_mods = C.GdkModifierType(v.mods)
|
||||||
|
val.accel_flags = v.flags
|
||||||
|
return &val
|
||||||
|
}
|
||||||
|
|
||||||
|
func wrapAccelKey(obj *C.struct__GtkAccelKey) *AccelKey {
|
||||||
|
var v AccelKey
|
||||||
|
|
||||||
|
v.key = uint(obj.accel_key)
|
||||||
|
v.mods = gdk.ModifierType(obj.accel_mods)
|
||||||
|
v.flags = uint16(obj.accel_flags)
|
||||||
|
|
||||||
|
return &v
|
||||||
|
}
|
||||||
|
|
||||||
|
// AccelMapLookupEntry is a wrapper around gtk_accel_map_lookup_entry().
|
||||||
|
func AccelMapLookupEntry(path string) *AccelKey {
|
||||||
|
cstr := C.CString(path)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
|
||||||
|
var v *C.struct__GtkAccelKey
|
||||||
|
|
||||||
|
C.gtk_accel_map_lookup_entry((*C.gchar)(cstr), v)
|
||||||
|
return wrapAccelKey(v)
|
||||||
|
}
|
||||||
|
|
||||||
|
// AccelMapChangeEntry is a wrapper around gtk_accel_map_change_entry().
|
||||||
|
func AccelMapChangeEntry(path string, key uint, mods gdk.ModifierType, replace bool) bool {
|
||||||
|
cstr := C.CString(path)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
|
||||||
|
return gobool(C.gtk_accel_map_change_entry((*C.gchar)(cstr), C.guint(key), C.GdkModifierType(mods), gbool(replace)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// AccelMapLoad is a wrapper around gtk_accel_map_load().
|
||||||
|
func AccelMapLoad(fileName string) {
|
||||||
|
cstr := C.CString(fileName)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
|
||||||
|
C.gtk_accel_map_load((*C.gchar)(cstr))
|
||||||
|
}
|
||||||
|
|
||||||
|
// AccelMapSave is a wrapper around gtk_accel_map_save().
|
||||||
|
func AccelMapSave(fileName string) {
|
||||||
|
cstr := C.CString(fileName)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
|
||||||
|
C.gtk_accel_map_save((*C.gchar)(cstr))
|
||||||
|
}
|
||||||
|
|
||||||
|
// AccelMapLoadFD is a wrapper around gtk_accel_map_load_fd().
|
||||||
|
func AccelMapLoadFD(fd int) {
|
||||||
|
C.gtk_accel_map_load_fd(C.gint(fd))
|
||||||
|
}
|
||||||
|
|
||||||
|
// AccelMapSaveFD is a wrapper around gtk_accel_map_save_fd().
|
||||||
|
func AccelMapSaveFD(fd int) {
|
||||||
|
C.gtk_accel_map_save_fd(C.gint(fd))
|
||||||
|
}
|
||||||
|
|
||||||
|
// AccelMapAddFilter is a wrapper around gtk_accel_map_add_filter().
|
||||||
|
func AccelMapAddFilter(filter string) {
|
||||||
|
cstr := C.CString(filter)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
|
||||||
|
C.gtk_accel_map_add_filter((*C.gchar)(cstr))
|
||||||
|
}
|
||||||
|
|
||||||
|
// AccelMapGet is a wrapper around gtk_accel_map_get().
|
||||||
|
func AccelMapGet() *AccelMap {
|
||||||
|
c := C.gtk_accel_map_get()
|
||||||
|
if c == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return wrapAccelMap(wrapObject(unsafe.Pointer(c)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// AccelMapLockPath is a wrapper around gtk_accel_map_lock_path().
|
||||||
|
func AccelMapLockPath(path string) {
|
||||||
|
cstr := C.CString(path)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
|
||||||
|
C.gtk_accel_map_lock_path((*C.gchar)(cstr))
|
||||||
|
}
|
||||||
|
|
||||||
|
// AccelMapUnlockPath is a wrapper around gtk_accel_map_unlock_path().
|
||||||
|
func AccelMapUnlockPath(path string) {
|
||||||
|
cstr := C.CString(path)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
|
||||||
|
C.gtk_accel_map_unlock_path((*C.gchar)(cstr))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetAccelGroup is a wrapper around gtk_menu_set_accel_group().
|
||||||
|
func (v *Menu) SetAccelGroup(accelGroup *AccelGroup) {
|
||||||
|
C.gtk_menu_set_accel_group(v.native(), accelGroup.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetAccelGroup is a wrapper around gtk_menu_get_accel_group().
|
||||||
|
func (v *Menu) GetAccelGroup() *AccelGroup {
|
||||||
|
c := C.gtk_menu_get_accel_group(v.native())
|
||||||
|
if c == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return wrapAccelGroup(wrapObject(unsafe.Pointer(c)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetAccelPath is a wrapper around gtk_menu_set_accel_path().
|
||||||
|
func (v *Menu) SetAccelPath(path string) {
|
||||||
|
cstr := C.CString(path)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
|
||||||
|
C.gtk_menu_set_accel_path(v.native(), (*C.gchar)(cstr))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetAccelPath is a wrapper around gtk_menu_get_accel_path().
|
||||||
|
func (v *Menu) GetAccelPath() string {
|
||||||
|
c := C.gtk_menu_get_accel_path(v.native())
|
||||||
|
return C.GoString((*C.char)(c))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetAccelPath is a wrapper around gtk_menu_item_set_accel_path().
|
||||||
|
func (v *MenuItem) SetAccelPath(path string) {
|
||||||
|
cstr := C.CString(path)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
|
||||||
|
C.gtk_menu_item_set_accel_path(v.native(), (*C.gchar)(cstr))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetAccelPath is a wrapper around gtk_menu_item_get_accel_path().
|
||||||
|
func (v *MenuItem) GetAccelPath() string {
|
||||||
|
c := C.gtk_menu_item_get_accel_path(v.native())
|
||||||
|
return C.GoString((*C.char)(c))
|
||||||
|
}
|
||||||
|
|
||||||
|
// AddAccelerator is a wrapper around gtk_widget_add_accelerator().
|
||||||
|
func (v *Widget) AddAccelerator(signal string, group *AccelGroup, key uint, mods gdk.ModifierType, flags AccelFlags) {
|
||||||
|
csignal := (*C.gchar)(C.CString(signal))
|
||||||
|
defer C.free(unsafe.Pointer(csignal))
|
||||||
|
|
||||||
|
C.gtk_widget_add_accelerator(v.native(),
|
||||||
|
csignal,
|
||||||
|
group.native(),
|
||||||
|
C.guint(key),
|
||||||
|
C.GdkModifierType(mods),
|
||||||
|
C.GtkAccelFlags(flags))
|
||||||
|
}
|
||||||
|
|
||||||
|
// RemoveAccelerator is a wrapper around gtk_widget_remove_accelerator().
|
||||||
|
func (v *Widget) RemoveAccelerator(group *AccelGroup, key uint, mods gdk.ModifierType) bool {
|
||||||
|
return gobool(C.gtk_widget_remove_accelerator(v.native(),
|
||||||
|
group.native(),
|
||||||
|
C.guint(key),
|
||||||
|
C.GdkModifierType(mods)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetAccelPath is a wrapper around gtk_widget_set_accel_path().
|
||||||
|
func (v *Widget) SetAccelPath(path string, group *AccelGroup) {
|
||||||
|
cstr := (*C.gchar)(C.CString(path))
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
|
||||||
|
C.gtk_widget_set_accel_path(v.native(), cstr, group.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// CanActivateAccel is a wrapper around gtk_widget_can_activate_accel().
|
||||||
|
func (v *Widget) CanActivateAccel(signalId uint) bool {
|
||||||
|
return gobool(C.gtk_widget_can_activate_accel(v.native(), C.guint(signalId)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// AddAccelGroup() is a wrapper around gtk_window_add_accel_group().
|
||||||
|
func (v *Window) AddAccelGroup(accelGroup *AccelGroup) {
|
||||||
|
C.gtk_window_add_accel_group(v.native(), accelGroup.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// RemoveAccelGroup() is a wrapper around gtk_window_add_accel_group().
|
||||||
|
func (v *Window) RemoveAccelGroup(accelGroup *AccelGroup) {
|
||||||
|
C.gtk_window_remove_accel_group(v.native(), accelGroup.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// These three functions are for system level access - thus not as high priority to implement
|
||||||
|
// TODO: void gtk_accelerator_parse_with_keycode ()
|
||||||
|
// TODO: gchar * gtk_accelerator_name_with_keycode ()
|
||||||
|
// TODO: gchar * gtk_accelerator_get_label_with_keycode ()
|
||||||
|
|
||||||
|
// TODO: GtkAccelKey * gtk_accel_group_find () - this function uses a function type - I don't know how to represent it in cgo
|
||||||
|
// TODO: gtk_accel_map_foreach_unfiltered - can't be done without a function type
|
||||||
|
// TODO: gtk_accel_map_foreach - can't be done without a function type
|
||||||
|
|
||||||
|
// TODO: gtk_accel_map_load_scanner
|
||||||
|
// TODO: gtk_widget_list_accel_closures
|
@ -0,0 +1,106 @@
|
|||||||
|
// +build !gtk_3_6,!gtk_3_8,!gtk_3_10
|
||||||
|
|
||||||
|
// Copyright (c) 2013-2014 Conformal Systems <info@conformal.com>
|
||||||
|
//
|
||||||
|
// This file originated from: http://opensource.conformal.com/
|
||||||
|
//
|
||||||
|
// Permission to use, copy, modify, and distribute this software for any
|
||||||
|
// purpose with or without fee is hereby granted, provided that the above
|
||||||
|
// copyright notice and this permission notice appear in all copies.
|
||||||
|
//
|
||||||
|
// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||||
|
// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||||
|
// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||||
|
// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||||
|
// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||||
|
// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||||
|
// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
|
||||||
|
// This file includes wrapers for symbols included since GTK 3.12, and
|
||||||
|
// and should not be included in a build intended to target any older GTK
|
||||||
|
// versions. To target an older build, such as 3.10, use
|
||||||
|
// 'go build -tags gtk_3_10'. Otherwise, if no build tags are used, GTK 3.12
|
||||||
|
// is assumed and this file is built.
|
||||||
|
// +build !gtk_3_6,!gtk_3_8,!gtk_3_10
|
||||||
|
|
||||||
|
package gtk
|
||||||
|
|
||||||
|
// #cgo pkg-config: gtk+-3.0
|
||||||
|
// #include <gtk/gtk.h>
|
||||||
|
// #include "actionbar_since_3_12.go.h"
|
||||||
|
import "C"
|
||||||
|
import (
|
||||||
|
"unsafe"
|
||||||
|
|
||||||
|
"github.com/gotk3/gotk3/glib"
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
tm := []glib.TypeMarshaler{
|
||||||
|
{glib.Type(C.gtk_action_bar_get_type()), marshalActionBar},
|
||||||
|
}
|
||||||
|
|
||||||
|
glib.RegisterGValueMarshalers(tm)
|
||||||
|
|
||||||
|
WrapMap["GtkActionBar"] = wrapActionBar
|
||||||
|
}
|
||||||
|
|
||||||
|
//GtkActionBar
|
||||||
|
type ActionBar struct {
|
||||||
|
Bin
|
||||||
|
}
|
||||||
|
|
||||||
|
func (v *ActionBar) native() *C.GtkActionBar {
|
||||||
|
if v == nil || v.GObject == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
p := unsafe.Pointer(v.GObject)
|
||||||
|
return C.toGtkActionBar(p)
|
||||||
|
}
|
||||||
|
|
||||||
|
func marshalActionBar(p uintptr) (interface{}, error) {
|
||||||
|
c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
|
||||||
|
return wrapActionBar(wrapObject(unsafe.Pointer(c))), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func wrapActionBar(obj *glib.Object) *ActionBar {
|
||||||
|
return &ActionBar{Bin{Container{Widget{glib.InitiallyUnowned{obj}}}}}
|
||||||
|
}
|
||||||
|
|
||||||
|
//gtk_action_bar_new()
|
||||||
|
func ActionBarNew() (*ActionBar, error) {
|
||||||
|
c := C.gtk_action_bar_new()
|
||||||
|
if c == nil {
|
||||||
|
return nil, nilPtrErr
|
||||||
|
}
|
||||||
|
return wrapActionBar(wrapObject(unsafe.Pointer(c))), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
//gtk_action_bar_pack_start(GtkActionBar *action_bar,GtkWidget *child)
|
||||||
|
func (a *ActionBar) PackStart(child IWidget) {
|
||||||
|
C.gtk_action_bar_pack_start(a.native(), child.toWidget())
|
||||||
|
}
|
||||||
|
|
||||||
|
//gtk_action_bar_pack_end(GtkActionBar *action_bar,GtkWidget *child)
|
||||||
|
func (a *ActionBar) PackEnd(child IWidget) {
|
||||||
|
C.gtk_action_bar_pack_end(a.native(), child.toWidget())
|
||||||
|
}
|
||||||
|
|
||||||
|
//gtk_action_bar_set_center_widget(GtkActionBar *action_bar,GtkWidget *center_widget)
|
||||||
|
func (a *ActionBar) SetCenterWidget(child IWidget) {
|
||||||
|
if child == nil {
|
||||||
|
C.gtk_action_bar_set_center_widget(a.native(), nil)
|
||||||
|
} else {
|
||||||
|
C.gtk_action_bar_set_center_widget(a.native(), child.toWidget())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//gtk_action_bar_get_center_widget(GtkActionBar *action_bar)
|
||||||
|
func (a *ActionBar) GetCenterWidget() *Widget {
|
||||||
|
w := C.gtk_action_bar_get_center_widget(a.native())
|
||||||
|
if w == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return &Widget{glib.InitiallyUnowned{wrapObject(unsafe.Pointer(w))}}
|
||||||
|
}
|
@ -0,0 +1,25 @@
|
|||||||
|
// +build !gtk_3_6,!gtk_3_8,!gtk_3_10,!gtk_3_12
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2013-2014 Conformal Systems <info@conformal.com>
|
||||||
|
*
|
||||||
|
* This file originated from: http://opensource.conformal.com/
|
||||||
|
*
|
||||||
|
* Permission to use, copy, modify, and distribute this software for any
|
||||||
|
* purpose with or without fee is hereby granted, provided that the above
|
||||||
|
* copyright notice and this permission notice appear in all copies.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||||
|
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||||
|
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||||
|
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||||
|
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||||
|
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||||
|
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
static GtkActionBar *
|
||||||
|
toGtkActionBar(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_ACTION_BAR(p));
|
||||||
|
}
|
@ -0,0 +1,378 @@
|
|||||||
|
package gtk
|
||||||
|
|
||||||
|
// #include <gtk/gtk.h>
|
||||||
|
// #include "gtk.go.h"
|
||||||
|
import "C"
|
||||||
|
import (
|
||||||
|
"unsafe"
|
||||||
|
|
||||||
|
"github.com/gotk3/gotk3/glib"
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
tm := []glib.TypeMarshaler{
|
||||||
|
{glib.Type(C.gtk_app_chooser_get_type()), marshalAppChooser},
|
||||||
|
{glib.Type(C.gtk_app_chooser_button_get_type()), marshalAppChooserButton},
|
||||||
|
{glib.Type(C.gtk_app_chooser_widget_get_type()), marshalAppChooserWidget},
|
||||||
|
{glib.Type(C.gtk_app_chooser_dialog_get_type()), marshalAppChooserDialog},
|
||||||
|
}
|
||||||
|
|
||||||
|
glib.RegisterGValueMarshalers(tm)
|
||||||
|
|
||||||
|
WrapMap["GtkAppChooser"] = wrapAppChooser
|
||||||
|
WrapMap["GtkAppChooserButton"] = wrapAppChooserButton
|
||||||
|
WrapMap["GtkAppChooserWidget"] = wrapAppChooserWidget
|
||||||
|
WrapMap["GtkAppChooserDialog"] = wrapAppChooserDialog
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GtkAppChooser
|
||||||
|
*/
|
||||||
|
|
||||||
|
// AppChooser is a representation of GTK's GtkAppChooser GInterface.
|
||||||
|
type AppChooser struct {
|
||||||
|
*glib.Object
|
||||||
|
}
|
||||||
|
|
||||||
|
// IAppChooser is an interface type implemented by all structs
|
||||||
|
// embedding an AppChooser. It is meant to be used as an argument type
|
||||||
|
// for wrapper functions that wrap around a C GTK function taking a
|
||||||
|
// GtkAppChooser.
|
||||||
|
type IAppChooser interface {
|
||||||
|
toAppChooser() *C.GtkAppChooser
|
||||||
|
}
|
||||||
|
|
||||||
|
// native returns a pointer to the underlying GtkAppChooser.
|
||||||
|
func (v *AppChooser) native() *C.GtkAppChooser {
|
||||||
|
if v == nil || v.GObject == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
p := unsafe.Pointer(v.GObject)
|
||||||
|
return C.toGtkAppChooser(p)
|
||||||
|
}
|
||||||
|
|
||||||
|
func marshalAppChooser(p uintptr) (interface{}, error) {
|
||||||
|
c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
|
||||||
|
obj := wrapObject(unsafe.Pointer(c))
|
||||||
|
return wrapAppChooser(obj), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func wrapAppChooser(obj *glib.Object) *AppChooser {
|
||||||
|
return &AppChooser{obj}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (v *AppChooser) toAppChooser() *C.GtkAppChooser {
|
||||||
|
if v == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return v.native()
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: Needs gio/GAppInfo implementation first
|
||||||
|
// gtk_app_chooser_get_app_info ()
|
||||||
|
|
||||||
|
// GetContentType is a wrapper around gtk_app_chooser_get_content_type().
|
||||||
|
func (v *AppChooser) GetContentType() string {
|
||||||
|
cstr := C.gtk_app_chooser_get_content_type(v.native())
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
return C.GoString((*C.char)(cstr))
|
||||||
|
}
|
||||||
|
|
||||||
|
// Refresh is a wrapper around gtk_app_chooser_refresh().
|
||||||
|
func (v *AppChooser) Refresh() {
|
||||||
|
C.gtk_app_chooser_refresh(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GtkAppChooserButton
|
||||||
|
*/
|
||||||
|
|
||||||
|
// AppChooserButton is a representation of GTK's GtkAppChooserButton.
|
||||||
|
type AppChooserButton struct {
|
||||||
|
ComboBox
|
||||||
|
|
||||||
|
// Interfaces
|
||||||
|
AppChooser
|
||||||
|
}
|
||||||
|
|
||||||
|
// native returns a pointer to the underlying GtkAppChooserButton.
|
||||||
|
func (v *AppChooserButton) native() *C.GtkAppChooserButton {
|
||||||
|
if v == nil || v.GObject == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
p := unsafe.Pointer(v.GObject)
|
||||||
|
return C.toGtkAppChooserButton(p)
|
||||||
|
}
|
||||||
|
|
||||||
|
func marshalAppChooserButton(p uintptr) (interface{}, error) {
|
||||||
|
c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
|
||||||
|
return wrapAppChooserButton(wrapObject(unsafe.Pointer(c))), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func wrapAppChooserButton(obj *glib.Object) *AppChooserButton {
|
||||||
|
cl := wrapCellLayout(obj)
|
||||||
|
ac := wrapAppChooser(obj)
|
||||||
|
return &AppChooserButton{ComboBox{Bin{Container{Widget{glib.InitiallyUnowned{obj}}}}, *cl}, *ac}
|
||||||
|
}
|
||||||
|
|
||||||
|
// AppChooserButtonNew() is a wrapper around gtk_app_chooser_button_new().
|
||||||
|
func AppChooserButtonNew(content_type string) (*AppChooserButton, error) {
|
||||||
|
cstr := C.CString(content_type)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
c := C.gtk_app_chooser_button_new((*C.gchar)(cstr))
|
||||||
|
if c == nil {
|
||||||
|
return nil, nilPtrErr
|
||||||
|
}
|
||||||
|
return wrapAppChooserButton(wrapObject(unsafe.Pointer(c))), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: Needs gio/GIcon implemented first
|
||||||
|
// gtk_app_chooser_button_append_custom_item ()
|
||||||
|
|
||||||
|
// AppendSeparator() is a wrapper around gtk_app_chooser_button_append_separator().
|
||||||
|
func (v *AppChooserButton) AppendSeparator() {
|
||||||
|
C.gtk_app_chooser_button_append_separator(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetActiveCustomItem() is a wrapper around gtk_app_chooser_button_set_active_custom_item().
|
||||||
|
func (v *AppChooserButton) SetActiveCustomItem(name string) {
|
||||||
|
cstr := C.CString(name)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
C.gtk_app_chooser_button_set_active_custom_item(v.native(), (*C.gchar)(cstr))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetShowDefaultItem() is a wrapper around gtk_app_chooser_button_get_show_default_item().
|
||||||
|
func (v *AppChooserButton) GetShowDefaultItem() bool {
|
||||||
|
return gobool(C.gtk_app_chooser_button_get_show_default_item(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetShowDefaultItem() is a wrapper around gtk_app_chooser_button_set_show_default_item().
|
||||||
|
func (v *AppChooserButton) SetShowDefaultItem(setting bool) {
|
||||||
|
C.gtk_app_chooser_button_set_show_default_item(v.native(), gbool(setting))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetShowDialogItem() is a wrapper around gtk_app_chooser_button_get_show_dialog_item().
|
||||||
|
func (v *AppChooserButton) GetShowDialogItem() bool {
|
||||||
|
return gobool(C.gtk_app_chooser_button_get_show_dialog_item(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetShowDialogItem() is a wrapper around gtk_app_chooser_button_set_show_dialog_item().
|
||||||
|
func (v *AppChooserButton) SetShowDialogItem(setting bool) {
|
||||||
|
C.gtk_app_chooser_button_set_show_dialog_item(v.native(), gbool(setting))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetHeading() is a wrapper around gtk_app_chooser_button_get_heading().
|
||||||
|
// In case when gtk_app_chooser_button_get_heading() returns a nil string,
|
||||||
|
// GetHeading() returns a non-nil error.
|
||||||
|
func (v *AppChooserButton) GetHeading() (string, error) {
|
||||||
|
cstr := C.gtk_app_chooser_button_get_heading(v.native())
|
||||||
|
if cstr == nil {
|
||||||
|
return "", nilPtrErr
|
||||||
|
}
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
return C.GoString((*C.char)(cstr)), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetHeading() is a wrapper around gtk_app_chooser_button_set_heading().
|
||||||
|
func (v *AppChooserButton) SetHeading(heading string) {
|
||||||
|
cstr := C.CString(heading)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
C.gtk_app_chooser_button_set_heading(v.native(), (*C.gchar)(cstr))
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GtkAppChooserWidget
|
||||||
|
*/
|
||||||
|
|
||||||
|
// AppChooserWidget is a representation of GTK's GtkAppChooserWidget.
|
||||||
|
type AppChooserWidget struct {
|
||||||
|
Box
|
||||||
|
|
||||||
|
// Interfaces
|
||||||
|
AppChooser
|
||||||
|
}
|
||||||
|
|
||||||
|
// native returns a pointer to the underlying GtkAppChooserWidget.
|
||||||
|
func (v *AppChooserWidget) native() *C.GtkAppChooserWidget {
|
||||||
|
if v == nil || v.GObject == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
p := unsafe.Pointer(v.GObject)
|
||||||
|
return C.toGtkAppChooserWidget(p)
|
||||||
|
}
|
||||||
|
|
||||||
|
func marshalAppChooserWidget(p uintptr) (interface{}, error) {
|
||||||
|
c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
|
||||||
|
return wrapAppChooserWidget(wrapObject(unsafe.Pointer(c))), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func wrapAppChooserWidget(obj *glib.Object) *AppChooserWidget {
|
||||||
|
box := wrapBox(obj)
|
||||||
|
ac := wrapAppChooser(obj)
|
||||||
|
return &AppChooserWidget{*box, *ac}
|
||||||
|
}
|
||||||
|
|
||||||
|
// AppChooserWidgetNew() is a wrapper around gtk_app_chooser_widget_new().
|
||||||
|
func AppChooserWidgetNew(content_type string) (*AppChooserWidget, error) {
|
||||||
|
cstr := C.CString(content_type)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
c := C.gtk_app_chooser_widget_new((*C.gchar)(cstr))
|
||||||
|
if c == nil {
|
||||||
|
return nil, nilPtrErr
|
||||||
|
}
|
||||||
|
return wrapAppChooserWidget(wrapObject(unsafe.Pointer(c))), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetShowDefault() is a wrapper around gtk_app_chooser_widget_get_show_default().
|
||||||
|
func (v *AppChooserWidget) GetShowDefault() bool {
|
||||||
|
return gobool(C.gtk_app_chooser_widget_get_show_default(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetShowDefault() is a wrapper around gtk_app_chooser_widget_set_show_default().
|
||||||
|
func (v *AppChooserWidget) SetShowDefault(setting bool) {
|
||||||
|
C.gtk_app_chooser_widget_set_show_default(v.native(), gbool(setting))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetShowRecommended() is a wrapper around gtk_app_chooser_widget_get_show_recommended().
|
||||||
|
func (v *AppChooserWidget) GetShowRecommended() bool {
|
||||||
|
return gobool(C.gtk_app_chooser_widget_get_show_recommended(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetShowRecommended() is a wrapper around gtk_app_chooser_widget_set_show_recommended().
|
||||||
|
func (v *AppChooserWidget) SetShowRecommended(setting bool) {
|
||||||
|
C.gtk_app_chooser_widget_set_show_recommended(v.native(), gbool(setting))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetShowFallback() is a wrapper around gtk_app_chooser_widget_get_show_fallback().
|
||||||
|
func (v *AppChooserWidget) GetShowFallback() bool {
|
||||||
|
return gobool(C.gtk_app_chooser_widget_get_show_fallback(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetShowFallback() is a wrapper around gtk_app_chooser_widget_set_show_fallback().
|
||||||
|
func (v *AppChooserWidget) SetShowFallback(setting bool) {
|
||||||
|
C.gtk_app_chooser_widget_set_show_fallback(v.native(), gbool(setting))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetShowOther() is a wrapper around gtk_app_chooser_widget_get_show_other().
|
||||||
|
func (v *AppChooserWidget) GetShowOther() bool {
|
||||||
|
return gobool(C.gtk_app_chooser_widget_get_show_other(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetShowOther() is a wrapper around gtk_app_chooser_widget_set_show_other().
|
||||||
|
func (v *AppChooserWidget) SetShowOther(setting bool) {
|
||||||
|
C.gtk_app_chooser_widget_set_show_other(v.native(), gbool(setting))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetShowAll() is a wrapper around gtk_app_chooser_widget_get_show_all().
|
||||||
|
func (v *AppChooserWidget) GetShowAll() bool {
|
||||||
|
return gobool(C.gtk_app_chooser_widget_get_show_all(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetShowAll() is a wrapper around gtk_app_chooser_widget_set_show_all().
|
||||||
|
func (v *AppChooserWidget) SetShowAll(setting bool) {
|
||||||
|
C.gtk_app_chooser_widget_set_show_all(v.native(), gbool(setting))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetDefaultText() is a wrapper around gtk_app_chooser_widget_get_default_text().
|
||||||
|
// In case when gtk_app_chooser_widget_get_default_text() returns a nil string,
|
||||||
|
// GetDefaultText() returns a non-nil error.
|
||||||
|
func (v *AppChooserWidget) GetDefaultText() (string, error) {
|
||||||
|
cstr := C.gtk_app_chooser_widget_get_default_text(v.native())
|
||||||
|
if cstr == nil {
|
||||||
|
return "", nilPtrErr
|
||||||
|
}
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
return C.GoString((*C.char)(cstr)), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetDefaultText() is a wrapper around gtk_app_chooser_widget_set_default_text().
|
||||||
|
func (v *AppChooserWidget) SetDefaultText(text string) {
|
||||||
|
cstr := C.CString(text)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
C.gtk_app_chooser_widget_set_default_text(v.native(), (*C.gchar)(cstr))
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GtkAppChooserDialog
|
||||||
|
*/
|
||||||
|
|
||||||
|
// AppChooserDialog is a representation of GTK's GtkAppChooserDialog.
|
||||||
|
type AppChooserDialog struct {
|
||||||
|
Dialog
|
||||||
|
|
||||||
|
// Interfaces
|
||||||
|
AppChooser
|
||||||
|
}
|
||||||
|
|
||||||
|
// native returns a pointer to the underlying GtkAppChooserButton.
|
||||||
|
func (v *AppChooserDialog) native() *C.GtkAppChooserDialog {
|
||||||
|
if v == nil || v.GObject == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
p := unsafe.Pointer(v.GObject)
|
||||||
|
return C.toGtkAppChooserDialog(p)
|
||||||
|
}
|
||||||
|
|
||||||
|
func marshalAppChooserDialog(p uintptr) (interface{}, error) {
|
||||||
|
c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
|
||||||
|
return wrapAppChooserDialog(wrapObject(unsafe.Pointer(c))), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func wrapAppChooserDialog(obj *glib.Object) *AppChooserDialog {
|
||||||
|
dialog := wrapDialog(obj)
|
||||||
|
ac := wrapAppChooser(obj)
|
||||||
|
return &AppChooserDialog{*dialog, *ac}
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: Uncomment when gio builds successfully
|
||||||
|
// AppChooserDialogNew() is a wrapper around gtk_app_chooser_dialog_new().
|
||||||
|
// func AppChooserDialogNew(parent *Window, flags DialogFlags, file *gio.File) (*AppChooserDialog, error) {
|
||||||
|
// var gfile *C.GFile
|
||||||
|
// if file != nil {
|
||||||
|
// gfile = (*C.GFile)(unsafe.Pointer(file.Native()))
|
||||||
|
// }
|
||||||
|
// c := C.gtk_app_chooser_dialog_new(parent.native(), C.GtkDialogFlags(flags), gfile)
|
||||||
|
// if c == nil {
|
||||||
|
// return nil, nilPtrErr
|
||||||
|
// }
|
||||||
|
// return wrapAppChooserDialog(wrapObject(unsafe.Pointer(c))), nil
|
||||||
|
// }
|
||||||
|
|
||||||
|
// AppChooserDialogNewForContentType() is a wrapper around gtk_app_chooser_dialog_new_for_content_type().
|
||||||
|
func AppChooserDialogNewForContentType(parent *Window, flags DialogFlags, content_type string) (*AppChooserDialog, error) {
|
||||||
|
cstr := C.CString(content_type)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
c := C.gtk_app_chooser_dialog_new_for_content_type(parent.native(), C.GtkDialogFlags(flags), (*C.gchar)(cstr))
|
||||||
|
if c == nil {
|
||||||
|
return nil, nilPtrErr
|
||||||
|
}
|
||||||
|
return wrapAppChooserDialog(wrapObject(unsafe.Pointer(c))), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetWidget() is a wrapper around gtk_app_chooser_dialog_get_widget().
|
||||||
|
func (v *AppChooserDialog) GetWidget() *AppChooserWidget {
|
||||||
|
c := C.gtk_app_chooser_dialog_get_widget(v.native())
|
||||||
|
return wrapAppChooserWidget(wrapObject(unsafe.Pointer(c)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetHeading() is a wrapper around gtk_app_chooser_dialog_get_heading().
|
||||||
|
// In case when gtk_app_chooser_dialog_get_heading() returns a nil string,
|
||||||
|
// GetHeading() returns a non-nil error.
|
||||||
|
func (v *AppChooserDialog) GetHeading() (string, error) {
|
||||||
|
cstr := C.gtk_app_chooser_dialog_get_heading(v.native())
|
||||||
|
if cstr == nil {
|
||||||
|
return "", nilPtrErr
|
||||||
|
}
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
return C.GoString((*C.char)(cstr)), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetHeading() is a wrapper around gtk_app_chooser_dialog_set_heading().
|
||||||
|
func (v *AppChooserDialog) SetHeading(heading string) {
|
||||||
|
cstr := C.CString(heading)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
C.gtk_app_chooser_dialog_set_heading(v.native(), (*C.gchar)(cstr))
|
||||||
|
}
|
@ -0,0 +1,156 @@
|
|||||||
|
// Same copyright and license as the rest of the files in this project
|
||||||
|
// This file contains style related functions and structures
|
||||||
|
|
||||||
|
package gtk
|
||||||
|
|
||||||
|
// #include <gtk/gtk.h>
|
||||||
|
// #include "gtk.go.h"
|
||||||
|
import "C"
|
||||||
|
import (
|
||||||
|
"runtime"
|
||||||
|
"unsafe"
|
||||||
|
|
||||||
|
"github.com/gotk3/gotk3/glib"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ApplicationInhibitFlags is a representation of GTK's GtkApplicationInhibitFlags.
|
||||||
|
type ApplicationInhibitFlags int
|
||||||
|
|
||||||
|
const (
|
||||||
|
APPLICATION_INHIBIT_LOGOUT ApplicationInhibitFlags = C.GTK_APPLICATION_INHIBIT_LOGOUT
|
||||||
|
APPLICATION_INHIBIT_SWITCH ApplicationInhibitFlags = C.GTK_APPLICATION_INHIBIT_SWITCH
|
||||||
|
APPLICATION_INHIBIT_SUSPEND ApplicationInhibitFlags = C.GTK_APPLICATION_INHIBIT_SUSPEND
|
||||||
|
APPLICATION_INHIBIT_IDLE ApplicationInhibitFlags = C.GTK_APPLICATION_INHIBIT_IDLE
|
||||||
|
)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GtkApplication
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Application is a representation of GTK's GtkApplication.
|
||||||
|
type Application struct {
|
||||||
|
glib.Application
|
||||||
|
}
|
||||||
|
|
||||||
|
// native returns a pointer to the underlying GtkApplication.
|
||||||
|
func (v *Application) native() *C.GtkApplication {
|
||||||
|
if v == nil || v.GObject == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return C.toGtkApplication(unsafe.Pointer(v.GObject))
|
||||||
|
}
|
||||||
|
|
||||||
|
func marshalApplication(p uintptr) (interface{}, error) {
|
||||||
|
c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
|
||||||
|
obj := wrapObject(unsafe.Pointer(c))
|
||||||
|
return wrapApplication(obj), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func wrapApplication(obj *glib.Object) *Application {
|
||||||
|
return &Application{glib.Application{obj}}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ApplicationNew is a wrapper around gtk_application_new().
|
||||||
|
func ApplicationNew(appId string, flags glib.ApplicationFlags) (*Application, error) {
|
||||||
|
cstr := (*C.gchar)(C.CString(appId))
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
|
||||||
|
c := C.gtk_application_new(cstr, C.GApplicationFlags(flags))
|
||||||
|
if c == nil {
|
||||||
|
return nil, nilPtrErr
|
||||||
|
}
|
||||||
|
return wrapApplication(wrapObject(unsafe.Pointer(c))), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// AddWindow is a wrapper around gtk_application_add_window().
|
||||||
|
func (v *Application) AddWindow(w *Window) {
|
||||||
|
C.gtk_application_add_window(v.native(), w.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// RemoveWindow is a wrapper around gtk_application_remove_window().
|
||||||
|
func (v *Application) RemoveWindow(w *Window) {
|
||||||
|
C.gtk_application_remove_window(v.native(), w.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetWindowByID is a wrapper around gtk_application_get_window_by_id().
|
||||||
|
func (v *Application) GetWindowByID(id uint) *Window {
|
||||||
|
c := C.gtk_application_get_window_by_id(v.native(), C.guint(id))
|
||||||
|
if c == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return wrapWindow(wrapObject(unsafe.Pointer(c)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetActiveWindow is a wrapper around gtk_application_get_active_window().
|
||||||
|
func (v *Application) GetActiveWindow() *Window {
|
||||||
|
c := C.gtk_application_get_active_window(v.native())
|
||||||
|
if c == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return wrapWindow(wrapObject(unsafe.Pointer(c)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// Uninhibit is a wrapper around gtk_application_uninhibit().
|
||||||
|
func (v *Application) Uninhibit(cookie uint) {
|
||||||
|
C.gtk_application_uninhibit(v.native(), C.guint(cookie))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetAppMenu is a wrapper around gtk_application_get_app_menu().
|
||||||
|
func (v *Application) GetAppMenu() *glib.MenuModel {
|
||||||
|
c := C.gtk_application_get_app_menu(v.native())
|
||||||
|
if c == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return &glib.MenuModel{wrapObject(unsafe.Pointer(c))}
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetAppMenu is a wrapper around gtk_application_set_app_menu().
|
||||||
|
func (v *Application) SetAppMenu(m *glib.MenuModel) {
|
||||||
|
mptr := (*C.GMenuModel)(unsafe.Pointer(m.Native()))
|
||||||
|
C.gtk_application_set_app_menu(v.native(), mptr)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetMenubar is a wrapper around gtk_application_get_menubar().
|
||||||
|
func (v *Application) GetMenubar() *glib.MenuModel {
|
||||||
|
c := C.gtk_application_get_menubar(v.native())
|
||||||
|
if c == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return &glib.MenuModel{wrapObject(unsafe.Pointer(c))}
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetMenubar is a wrapper around gtk_application_set_menubar().
|
||||||
|
func (v *Application) SetMenubar(m *glib.MenuModel) {
|
||||||
|
mptr := (*C.GMenuModel)(unsafe.Pointer(m.Native()))
|
||||||
|
C.gtk_application_set_menubar(v.native(), mptr)
|
||||||
|
}
|
||||||
|
|
||||||
|
// IsInhibited is a wrapper around gtk_application_is_inhibited().
|
||||||
|
func (v *Application) IsInhibited(flags ApplicationInhibitFlags) bool {
|
||||||
|
return gobool(C.gtk_application_is_inhibited(v.native(), C.GtkApplicationInhibitFlags(flags)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// Inhibited is a wrapper around gtk_application_inhibit().
|
||||||
|
func (v *Application) Inhibited(w *Window, flags ApplicationInhibitFlags, reason string) uint {
|
||||||
|
cstr1 := (*C.gchar)(C.CString(reason))
|
||||||
|
defer C.free(unsafe.Pointer(cstr1))
|
||||||
|
|
||||||
|
return uint(C.gtk_application_inhibit(v.native(), w.native(), C.GtkApplicationInhibitFlags(flags), cstr1))
|
||||||
|
}
|
||||||
|
|
||||||
|
// void gtk_application_add_accelerator () // deprecated and uses a gvariant paramater
|
||||||
|
// void gtk_application_remove_accelerator () // deprecated and uses a gvariant paramater
|
||||||
|
|
||||||
|
// GetWindows is a wrapper around gtk_application_get_windows().
|
||||||
|
// Returned list is wrapped to return *gtk.Window elements.
|
||||||
|
func (v *Application) GetWindows() *glib.List {
|
||||||
|
glist := C.gtk_application_get_windows(v.native())
|
||||||
|
list := glib.WrapList(uintptr(unsafe.Pointer(glist)))
|
||||||
|
list.DataWrapper(func(ptr unsafe.Pointer) interface{} {
|
||||||
|
return wrapWindow(wrapObject(ptr))
|
||||||
|
})
|
||||||
|
runtime.SetFinalizer(list, func(l *glib.List) {
|
||||||
|
l.Free()
|
||||||
|
})
|
||||||
|
return list
|
||||||
|
}
|
@ -0,0 +1,62 @@
|
|||||||
|
// +build !gtk_3_6,!gtk_3_8,!gtk_3_10
|
||||||
|
|
||||||
|
// See: https://developer.gnome.org/gtk3/3.12/api-index-3-12.html
|
||||||
|
|
||||||
|
package gtk
|
||||||
|
|
||||||
|
// #include <gtk/gtk.h>
|
||||||
|
// #include "gtk.go.h"
|
||||||
|
import "C"
|
||||||
|
import "unsafe"
|
||||||
|
|
||||||
|
// GetAccelsForAction is a wrapper around gtk_application_get_accels_for_action().
|
||||||
|
func (v *Application) GetAccelsForAction(act string) []string {
|
||||||
|
cstr1 := (*C.gchar)(C.CString(act))
|
||||||
|
defer C.free(unsafe.Pointer(cstr1))
|
||||||
|
|
||||||
|
var descs []string
|
||||||
|
c := C.gtk_application_get_accels_for_action(v.native(), cstr1)
|
||||||
|
originalc := c
|
||||||
|
defer C.g_strfreev(originalc)
|
||||||
|
|
||||||
|
for *c != nil {
|
||||||
|
descs = append(descs, C.GoString((*C.char)(*c)))
|
||||||
|
c = C.next_gcharptr(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
return descs
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetAccelsForAction is a wrapper around gtk_application_set_accels_for_action().
|
||||||
|
func (v *Application) SetAccelsForAction(act string, accels []string) {
|
||||||
|
cstr1 := (*C.gchar)(C.CString(act))
|
||||||
|
defer C.free(unsafe.Pointer(cstr1))
|
||||||
|
|
||||||
|
caccels := C.make_strings(C.int(len(accels) + 1))
|
||||||
|
defer C.destroy_strings(caccels)
|
||||||
|
|
||||||
|
for i, accel := range accels {
|
||||||
|
cstr := C.CString(accel)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
C.set_string(caccels, C.int(i), (*C.gchar)(cstr))
|
||||||
|
}
|
||||||
|
|
||||||
|
C.set_string(caccels, C.int(len(accels)), nil)
|
||||||
|
|
||||||
|
C.gtk_application_set_accels_for_action(v.native(), cstr1, caccels)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListActionDescriptions is a wrapper around gtk_application_list_action_descriptions().
|
||||||
|
func (v *Application) ListActionDescriptions() []string {
|
||||||
|
var descs []string
|
||||||
|
c := C.gtk_application_list_action_descriptions(v.native())
|
||||||
|
originalc := c
|
||||||
|
defer C.g_strfreev(originalc)
|
||||||
|
|
||||||
|
for *c != nil {
|
||||||
|
descs = append(descs, C.GoString((*C.char)(*c)))
|
||||||
|
c = C.next_gcharptr(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
return descs
|
||||||
|
}
|
@ -0,0 +1,49 @@
|
|||||||
|
// +build !gtk_3_6,!gtk_3_8,!gtk_3_10,!gtk_3_12
|
||||||
|
|
||||||
|
// See: https://developer.gnome.org/gtk3/3.14/api-index-3-14.html
|
||||||
|
|
||||||
|
package gtk
|
||||||
|
|
||||||
|
// #include <gtk/gtk.h>
|
||||||
|
// #include "gtk.go.h"
|
||||||
|
import "C"
|
||||||
|
import (
|
||||||
|
"unsafe"
|
||||||
|
|
||||||
|
"github.com/gotk3/gotk3/glib"
|
||||||
|
)
|
||||||
|
|
||||||
|
// PrefersAppMenu is a wrapper around gtk_application_prefers_app_menu().
|
||||||
|
func (v *Application) PrefersAppMenu() bool {
|
||||||
|
return gobool(C.gtk_application_prefers_app_menu(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetActionsForAccel is a wrapper around gtk_application_get_actions_for_accel().
|
||||||
|
func (v *Application) GetActionsForAccel(acc string) []string {
|
||||||
|
cstr1 := (*C.gchar)(C.CString(acc))
|
||||||
|
defer C.free(unsafe.Pointer(cstr1))
|
||||||
|
|
||||||
|
var acts []string
|
||||||
|
c := C.gtk_application_get_actions_for_accel(v.native(), cstr1)
|
||||||
|
originalc := c
|
||||||
|
defer C.g_strfreev(originalc)
|
||||||
|
|
||||||
|
for *c != nil {
|
||||||
|
acts = append(acts, C.GoString((*C.char)(*c)))
|
||||||
|
c = C.next_gcharptr(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
return acts
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetMenuByID is a wrapper around gtk_application_get_menu_by_id().
|
||||||
|
func (v *Application) GetMenuByID(id string) *glib.Menu {
|
||||||
|
cstr1 := (*C.gchar)(C.CString(id))
|
||||||
|
defer C.free(unsafe.Pointer(cstr1))
|
||||||
|
|
||||||
|
c := C.gtk_application_get_menu_by_id(v.native(), cstr1)
|
||||||
|
if c == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return &glib.Menu{glib.MenuModel{wrapObject(unsafe.Pointer(c))}}
|
||||||
|
}
|
@ -0,0 +1,65 @@
|
|||||||
|
// Same copyright and license as the rest of the files in this project
|
||||||
|
// This file contains style related functions and structures
|
||||||
|
|
||||||
|
package gtk
|
||||||
|
|
||||||
|
// #include <gtk/gtk.h>
|
||||||
|
// #include "gtk.go.h"
|
||||||
|
import "C"
|
||||||
|
import (
|
||||||
|
"unsafe"
|
||||||
|
|
||||||
|
"github.com/gotk3/gotk3/glib"
|
||||||
|
)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GtkApplicationWindow
|
||||||
|
*/
|
||||||
|
|
||||||
|
// ApplicationWindow is a representation of GTK's GtkApplicationWindow.
|
||||||
|
type ApplicationWindow struct {
|
||||||
|
Window
|
||||||
|
}
|
||||||
|
|
||||||
|
// native returns a pointer to the underlying GtkApplicationWindow.
|
||||||
|
func (v *ApplicationWindow) native() *C.GtkApplicationWindow {
|
||||||
|
if v == nil || v.GObject == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
p := unsafe.Pointer(v.GObject)
|
||||||
|
return C.toGtkApplicationWindow(p)
|
||||||
|
}
|
||||||
|
|
||||||
|
func marshalApplicationWindow(p uintptr) (interface{}, error) {
|
||||||
|
c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
|
||||||
|
obj := wrapObject(unsafe.Pointer(c))
|
||||||
|
return wrapApplicationWindow(obj), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func wrapApplicationWindow(obj *glib.Object) *ApplicationWindow {
|
||||||
|
return &ApplicationWindow{Window{Bin{Container{Widget{glib.InitiallyUnowned{obj}}}}}}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ApplicationWindowNew is a wrapper around gtk_application_window_new().
|
||||||
|
func ApplicationWindowNew(app *Application) (*ApplicationWindow, error) {
|
||||||
|
c := C.gtk_application_window_new(app.native())
|
||||||
|
if c == nil {
|
||||||
|
return nil, nilPtrErr
|
||||||
|
}
|
||||||
|
return wrapApplicationWindow(wrapObject(unsafe.Pointer(c))), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetShowMenubar is a wrapper around gtk_application_window_set_show_menubar().
|
||||||
|
func (v *ApplicationWindow) SetShowMenubar(b bool) {
|
||||||
|
C.gtk_application_window_set_show_menubar(v.native(), gbool(b))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetShowMenubar is a wrapper around gtk_application_window_get_show_menubar().
|
||||||
|
func (v *ApplicationWindow) GetShowMenubar() bool {
|
||||||
|
return gobool(C.gtk_application_window_get_show_menubar(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetID is a wrapper around gtk_application_window_get_id().
|
||||||
|
func (v *ApplicationWindow) GetID() uint {
|
||||||
|
return uint(C.gtk_application_window_get_id(v.native()))
|
||||||
|
}
|
@ -0,0 +1,148 @@
|
|||||||
|
package gtk
|
||||||
|
|
||||||
|
// #include <gtk/gtk.h>
|
||||||
|
// #include "gtk.go.h"
|
||||||
|
import "C"
|
||||||
|
import (
|
||||||
|
"unsafe"
|
||||||
|
|
||||||
|
"github.com/gotk3/gotk3/gdk"
|
||||||
|
"github.com/gotk3/gotk3/glib"
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
tm := []glib.TypeMarshaler{
|
||||||
|
{glib.Type(C.gtk_color_chooser_get_type()), marshalColorChooser},
|
||||||
|
{glib.Type(C.gtk_color_chooser_dialog_get_type()), marshalColorChooserDialog},
|
||||||
|
}
|
||||||
|
|
||||||
|
glib.RegisterGValueMarshalers(tm)
|
||||||
|
|
||||||
|
WrapMap["GtkColorChooser"] = wrapColorChooser
|
||||||
|
WrapMap["GtkColorChooserDialog"] = wrapColorChooserDialog
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GtkColorChooser
|
||||||
|
*/
|
||||||
|
|
||||||
|
// ColorChooser is a representation of GTK's GtkColorChooser GInterface.
|
||||||
|
type ColorChooser struct {
|
||||||
|
*glib.Object
|
||||||
|
}
|
||||||
|
|
||||||
|
// IColorChooser is an interface type implemented by all structs
|
||||||
|
// embedding an ColorChooser. It is meant to be used as an argument type
|
||||||
|
// for wrapper functions that wrap around a C GTK function taking a
|
||||||
|
// GtkColorChooser.
|
||||||
|
type IColorChooser interface {
|
||||||
|
toColorChooser() *C.GtkColorChooser
|
||||||
|
}
|
||||||
|
|
||||||
|
// native returns a pointer to the underlying GtkAppChooser.
|
||||||
|
func (v *ColorChooser) native() *C.GtkColorChooser {
|
||||||
|
if v == nil || v.GObject == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
p := unsafe.Pointer(v.GObject)
|
||||||
|
return C.toGtkColorChooser(p)
|
||||||
|
}
|
||||||
|
|
||||||
|
func marshalColorChooser(p uintptr) (interface{}, error) {
|
||||||
|
c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
|
||||||
|
obj := wrapObject(unsafe.Pointer(c))
|
||||||
|
return wrapColorChooser(obj), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func wrapColorChooser(obj *glib.Object) *ColorChooser {
|
||||||
|
return &ColorChooser{obj}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (v *ColorChooser) toColorChooser() *C.GtkColorChooser {
|
||||||
|
if v == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return v.native()
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetRGBA() is a wrapper around gtk_color_chooser_get_rgba().
|
||||||
|
func (v *ColorChooser) GetRGBA() *gdk.RGBA {
|
||||||
|
gdkColor := gdk.NewRGBA()
|
||||||
|
C.gtk_color_chooser_get_rgba(v.native(), (*C.GdkRGBA)(unsafe.Pointer(gdkColor.Native())))
|
||||||
|
return gdkColor
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetRGBA() is a wrapper around gtk_color_chooser_set_rgba().
|
||||||
|
func (v *ColorChooser) SetRGBA(gdkColor *gdk.RGBA) {
|
||||||
|
C.gtk_color_chooser_set_rgba(v.native(), (*C.GdkRGBA)(unsafe.Pointer(gdkColor.Native())))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetUseAlpha() is a wrapper around gtk_color_chooser_get_use_alpha().
|
||||||
|
func (v *ColorChooser) GetUseAlpha() bool {
|
||||||
|
return gobool(C.gtk_color_chooser_get_use_alpha(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetUseAlpha() is a wrapper around gtk_color_chooser_set_use_alpha().
|
||||||
|
func (v *ColorChooser) SetUseAlpha(use_alpha bool) {
|
||||||
|
C.gtk_color_chooser_set_use_alpha(v.native(), gbool(use_alpha))
|
||||||
|
}
|
||||||
|
|
||||||
|
// AddPalette() is a wrapper around gtk_color_chooser_add_palette().
|
||||||
|
func (v *ColorChooser) AddPalette(orientation Orientation, colors_per_line int, colors []*gdk.RGBA) {
|
||||||
|
n_colors := len(colors)
|
||||||
|
var c_colors []C.GdkRGBA
|
||||||
|
for _, c := range colors {
|
||||||
|
c_colors = append(c_colors, *(*C.GdkRGBA)(unsafe.Pointer(c.Native())))
|
||||||
|
}
|
||||||
|
C.gtk_color_chooser_add_palette(
|
||||||
|
v.native(),
|
||||||
|
C.GtkOrientation(orientation),
|
||||||
|
C.gint(colors_per_line),
|
||||||
|
C.gint(n_colors),
|
||||||
|
&c_colors[0],
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GtkColorChooserDialog
|
||||||
|
*/
|
||||||
|
|
||||||
|
// ColorChooserDialog is a representation of GTK's GtkColorChooserDialog.
|
||||||
|
type ColorChooserDialog struct {
|
||||||
|
Dialog
|
||||||
|
|
||||||
|
// Interfaces
|
||||||
|
ColorChooser
|
||||||
|
}
|
||||||
|
|
||||||
|
// native returns a pointer to the underlying GtkColorChooserButton.
|
||||||
|
func (v *ColorChooserDialog) native() *C.GtkColorChooserDialog {
|
||||||
|
if v == nil || v.GObject == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
p := unsafe.Pointer(v.GObject)
|
||||||
|
return C.toGtkColorChooserDialog(p)
|
||||||
|
}
|
||||||
|
|
||||||
|
func marshalColorChooserDialog(p uintptr) (interface{}, error) {
|
||||||
|
c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
|
||||||
|
return wrapColorChooserDialog(wrapObject(unsafe.Pointer(c))), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func wrapColorChooserDialog(obj *glib.Object) *ColorChooserDialog {
|
||||||
|
dialog := wrapDialog(obj)
|
||||||
|
cc := wrapColorChooser(obj)
|
||||||
|
return &ColorChooserDialog{*dialog, *cc}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ColorChooserDialogNew() is a wrapper around gtk_color_chooser_dialog_new().
|
||||||
|
func ColorChooserDialogNew(title string, parent *Window) (*ColorChooserDialog, error) {
|
||||||
|
cstr := C.CString(title)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
c := C.gtk_color_chooser_dialog_new((*C.gchar)(cstr), parent.native())
|
||||||
|
if c == nil {
|
||||||
|
return nil, nilPtrErr
|
||||||
|
}
|
||||||
|
return wrapColorChooserDialog(wrapObject(unsafe.Pointer(c))), nil
|
||||||
|
}
|
@ -0,0 +1,264 @@
|
|||||||
|
package gtk
|
||||||
|
|
||||||
|
// #include <gtk/gtk.h>
|
||||||
|
// #include "gtk.go.h"
|
||||||
|
import "C"
|
||||||
|
import (
|
||||||
|
"errors"
|
||||||
|
"unsafe"
|
||||||
|
|
||||||
|
"github.com/gotk3/gotk3/glib"
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
tm := []glib.TypeMarshaler{
|
||||||
|
{glib.Type(C.gtk_combo_box_get_type()), marshalComboBox},
|
||||||
|
{glib.Type(C.gtk_combo_box_text_get_type()), marshalComboBoxText},
|
||||||
|
}
|
||||||
|
|
||||||
|
glib.RegisterGValueMarshalers(tm)
|
||||||
|
|
||||||
|
WrapMap["GtkComboBox"] = wrapComboBox
|
||||||
|
WrapMap["GtkComboBoxText"] = wrapComboBoxText
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GtkComboBox
|
||||||
|
*/
|
||||||
|
|
||||||
|
// ComboBox is a representation of GTK's GtkComboBox.
|
||||||
|
type ComboBox struct {
|
||||||
|
Bin
|
||||||
|
|
||||||
|
// Interfaces
|
||||||
|
CellLayout
|
||||||
|
}
|
||||||
|
|
||||||
|
// native returns a pointer to the underlying GtkComboBox.
|
||||||
|
func (v *ComboBox) native() *C.GtkComboBox {
|
||||||
|
if v == nil || v.GObject == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
p := unsafe.Pointer(v.GObject)
|
||||||
|
return C.toGtkComboBox(p)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (v *ComboBox) toCellLayout() *C.GtkCellLayout {
|
||||||
|
if v == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return C.toGtkCellLayout(unsafe.Pointer(v.GObject))
|
||||||
|
}
|
||||||
|
|
||||||
|
func marshalComboBox(p uintptr) (interface{}, error) {
|
||||||
|
c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
|
||||||
|
obj := wrapObject(unsafe.Pointer(c))
|
||||||
|
return wrapComboBox(obj), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func wrapComboBox(obj *glib.Object) *ComboBox {
|
||||||
|
cl := wrapCellLayout(obj)
|
||||||
|
return &ComboBox{Bin{Container{Widget{glib.InitiallyUnowned{obj}}}}, *cl}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ComboBoxNew() is a wrapper around gtk_combo_box_new().
|
||||||
|
func ComboBoxNew() (*ComboBox, error) {
|
||||||
|
c := C.gtk_combo_box_new()
|
||||||
|
if c == nil {
|
||||||
|
return nil, nilPtrErr
|
||||||
|
}
|
||||||
|
obj := wrapObject(unsafe.Pointer(c))
|
||||||
|
return wrapComboBox(obj), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// ComboBoxNewWithEntry() is a wrapper around gtk_combo_box_new_with_entry().
|
||||||
|
func ComboBoxNewWithEntry() (*ComboBox, error) {
|
||||||
|
c := C.gtk_combo_box_new_with_entry()
|
||||||
|
if c == nil {
|
||||||
|
return nil, nilPtrErr
|
||||||
|
}
|
||||||
|
obj := wrapObject(unsafe.Pointer(c))
|
||||||
|
return wrapComboBox(obj), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// ComboBoxNewWithModel() is a wrapper around gtk_combo_box_new_with_model().
|
||||||
|
func ComboBoxNewWithModel(model ITreeModel) (*ComboBox, error) {
|
||||||
|
c := C.gtk_combo_box_new_with_model(model.toTreeModel())
|
||||||
|
if c == nil {
|
||||||
|
return nil, nilPtrErr
|
||||||
|
}
|
||||||
|
obj := wrapObject(unsafe.Pointer(c))
|
||||||
|
return wrapComboBox(obj), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetActive() is a wrapper around gtk_combo_box_get_active().
|
||||||
|
func (v *ComboBox) GetActive() int {
|
||||||
|
c := C.gtk_combo_box_get_active(v.native())
|
||||||
|
return int(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetActive() is a wrapper around gtk_combo_box_set_active().
|
||||||
|
func (v *ComboBox) SetActive(index int) {
|
||||||
|
C.gtk_combo_box_set_active(v.native(), C.gint(index))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetActiveIter is a wrapper around gtk_combo_box_get_active_iter().
|
||||||
|
func (v *ComboBox) GetActiveIter() (*TreeIter, error) {
|
||||||
|
var cIter C.GtkTreeIter
|
||||||
|
c := C.gtk_combo_box_get_active_iter(v.native(), &cIter)
|
||||||
|
if !gobool(c) {
|
||||||
|
return nil, errors.New("unable to get active iter")
|
||||||
|
}
|
||||||
|
return &TreeIter{cIter}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetActiveIter is a wrapper around gtk_combo_box_set_active_iter().
|
||||||
|
func (v *ComboBox) SetActiveIter(iter *TreeIter) {
|
||||||
|
var cIter *C.GtkTreeIter
|
||||||
|
if iter != nil {
|
||||||
|
cIter = &iter.GtkTreeIter
|
||||||
|
}
|
||||||
|
C.gtk_combo_box_set_active_iter(v.native(), cIter)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetActiveID is a wrapper around gtk_combo_box_get_active_id().
|
||||||
|
func (v *ComboBox) GetActiveID() string {
|
||||||
|
c := C.gtk_combo_box_get_active_id(v.native())
|
||||||
|
return C.GoString((*C.char)(c))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetActiveID is a wrapper around gtk_combo_box_set_active_id().
|
||||||
|
func (v *ComboBox) SetActiveID(id string) bool {
|
||||||
|
cid := C.CString(id)
|
||||||
|
defer C.free(unsafe.Pointer(cid))
|
||||||
|
c := C.gtk_combo_box_set_active_id(v.native(), (*C.gchar)(cid))
|
||||||
|
return gobool(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetModel is a wrapper around gtk_combo_box_get_model().
|
||||||
|
func (v *ComboBox) GetModel() (*TreeModel, error) {
|
||||||
|
c := C.gtk_combo_box_get_model(v.native())
|
||||||
|
if c == nil {
|
||||||
|
return nil, nilPtrErr
|
||||||
|
}
|
||||||
|
obj := wrapObject(unsafe.Pointer(c))
|
||||||
|
return wrapTreeModel(obj), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetModel is a wrapper around gtk_combo_box_set_model().
|
||||||
|
func (v *ComboBox) SetModel(model ITreeModel) {
|
||||||
|
C.gtk_combo_box_set_model(v.native(), model.toTreeModel())
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GtkComboBoxText
|
||||||
|
*/
|
||||||
|
|
||||||
|
// ComboBoxText is a representation of GTK's GtkComboBoxText.
|
||||||
|
type ComboBoxText struct {
|
||||||
|
ComboBox
|
||||||
|
}
|
||||||
|
|
||||||
|
// native returns a pointer to the underlying GtkComboBoxText.
|
||||||
|
func (v *ComboBoxText) native() *C.GtkComboBoxText {
|
||||||
|
if v == nil || v.GObject == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
p := unsafe.Pointer(v.GObject)
|
||||||
|
return C.toGtkComboBoxText(p)
|
||||||
|
}
|
||||||
|
|
||||||
|
func marshalComboBoxText(p uintptr) (interface{}, error) {
|
||||||
|
c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
|
||||||
|
obj := wrapObject(unsafe.Pointer(c))
|
||||||
|
return wrapComboBoxText(obj), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func wrapComboBoxText(obj *glib.Object) *ComboBoxText {
|
||||||
|
return &ComboBoxText{*wrapComboBox(obj)}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ComboBoxTextNew is a wrapper around gtk_combo_box_text_new().
|
||||||
|
func ComboBoxTextNew() (*ComboBoxText, error) {
|
||||||
|
c := C.gtk_combo_box_text_new()
|
||||||
|
if c == nil {
|
||||||
|
return nil, nilPtrErr
|
||||||
|
}
|
||||||
|
obj := wrapObject(unsafe.Pointer(c))
|
||||||
|
return wrapComboBoxText(obj), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// ComboBoxTextNewWithEntry is a wrapper around gtk_combo_box_text_new_with_entry().
|
||||||
|
func ComboBoxTextNewWithEntry() (*ComboBoxText, error) {
|
||||||
|
c := C.gtk_combo_box_text_new_with_entry()
|
||||||
|
if c == nil {
|
||||||
|
return nil, nilPtrErr
|
||||||
|
}
|
||||||
|
obj := wrapObject(unsafe.Pointer(c))
|
||||||
|
return wrapComboBoxText(obj), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Append is a wrapper around gtk_combo_box_text_append().
|
||||||
|
func (v *ComboBoxText) Append(id, text string) {
|
||||||
|
cid := C.CString(id)
|
||||||
|
ctext := C.CString(text)
|
||||||
|
defer C.free(unsafe.Pointer(cid))
|
||||||
|
defer C.free(unsafe.Pointer(ctext))
|
||||||
|
C.gtk_combo_box_text_append(v.native(), (*C.gchar)(cid), (*C.gchar)(ctext))
|
||||||
|
}
|
||||||
|
|
||||||
|
// Prepend is a wrapper around gtk_combo_box_text_prepend().
|
||||||
|
func (v *ComboBoxText) Prepend(id, text string) {
|
||||||
|
cid := C.CString(id)
|
||||||
|
ctext := C.CString(text)
|
||||||
|
defer C.free(unsafe.Pointer(cid))
|
||||||
|
defer C.free(unsafe.Pointer(ctext))
|
||||||
|
C.gtk_combo_box_text_prepend(v.native(), (*C.gchar)(cid), (*C.gchar)(ctext))
|
||||||
|
}
|
||||||
|
|
||||||
|
// Insert is a wrapper around gtk_combo_box_text_insert().
|
||||||
|
func (v *ComboBoxText) Insert(position int, id, text string) {
|
||||||
|
cid := C.CString(id)
|
||||||
|
ctext := C.CString(text)
|
||||||
|
defer C.free(unsafe.Pointer(cid))
|
||||||
|
defer C.free(unsafe.Pointer(ctext))
|
||||||
|
C.gtk_combo_box_text_insert(v.native(), C.gint(position), (*C.gchar)(cid), (*C.gchar)(ctext))
|
||||||
|
}
|
||||||
|
|
||||||
|
// AppendText is a wrapper around gtk_combo_box_text_append_text().
|
||||||
|
func (v *ComboBoxText) AppendText(text string) {
|
||||||
|
cstr := C.CString(text)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
C.gtk_combo_box_text_append_text(v.native(), (*C.gchar)(cstr))
|
||||||
|
}
|
||||||
|
|
||||||
|
// PrependText is a wrapper around gtk_combo_box_text_prepend_text().
|
||||||
|
func (v *ComboBoxText) PrependText(text string) {
|
||||||
|
cstr := C.CString(text)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
C.gtk_combo_box_text_prepend_text(v.native(), (*C.gchar)(cstr))
|
||||||
|
}
|
||||||
|
|
||||||
|
// InsertText is a wrapper around gtk_combo_box_text_insert_text().
|
||||||
|
func (v *ComboBoxText) InsertText(position int, text string) {
|
||||||
|
cstr := C.CString(text)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
C.gtk_combo_box_text_insert_text(v.native(), C.gint(position), (*C.gchar)(cstr))
|
||||||
|
}
|
||||||
|
|
||||||
|
// Remove is a wrapper around gtk_combo_box_text_remove().
|
||||||
|
func (v *ComboBoxText) Remove(position int) {
|
||||||
|
C.gtk_combo_box_text_remove(v.native(), C.gint(position))
|
||||||
|
}
|
||||||
|
|
||||||
|
// RemoveAll is a wrapper around gtk_combo_box_text_remove_all().
|
||||||
|
func (v *ComboBoxText) RemoveAll() {
|
||||||
|
C.gtk_combo_box_text_remove_all(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetActiveText is a wrapper around gtk_combo_box_text_get_active_text().
|
||||||
|
func (v *ComboBoxText) GetActiveText() string {
|
||||||
|
c := (*C.char)(C.gtk_combo_box_text_get_active_text(v.native()))
|
||||||
|
defer C.free(unsafe.Pointer(c))
|
||||||
|
return C.GoString(c)
|
||||||
|
}
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,813 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2013-2014 Conformal Systems <info@conformal.com>
|
||||||
|
*
|
||||||
|
* This file originated from: http://opensource.conformal.com/
|
||||||
|
*
|
||||||
|
* Permission to use, copy, modify, and distribute this software for any
|
||||||
|
* purpose with or without fee is hereby granted, provided that the above
|
||||||
|
* copyright notice and this permission notice appear in all copies.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||||
|
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||||
|
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||||
|
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||||
|
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||||
|
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||||
|
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __GTK_GO_H__
|
||||||
|
#define __GTK_GO_H__
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
static GtkAboutDialog *
|
||||||
|
toGtkAboutDialog(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_ABOUT_DIALOG(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkAppChooser *
|
||||||
|
toGtkAppChooser(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_APP_CHOOSER(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkAppChooserButton *
|
||||||
|
toGtkAppChooserButton(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_APP_CHOOSER_BUTTON(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkAppChooserDialog *
|
||||||
|
toGtkAppChooserDialog(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_APP_CHOOSER_DIALOG(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkAppChooserWidget *
|
||||||
|
toGtkAppChooserWidget(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_APP_CHOOSER_WIDGET(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkApplication *
|
||||||
|
toGtkApplication(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_APPLICATION(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkApplicationWindow *
|
||||||
|
toGtkApplicationWindow(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_APPLICATION_WINDOW(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkAssistant *
|
||||||
|
toGtkAssistant(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_ASSISTANT(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkCalendar *
|
||||||
|
toGtkCalendar(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_CALENDAR(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkColorChooserDialog *
|
||||||
|
toGtkColorChooserDialog(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_COLOR_CHOOSER_DIALOG(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkDrawingArea *
|
||||||
|
toGtkDrawingArea(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_DRAWING_AREA(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkCellRendererSpinner *
|
||||||
|
toGtkCellRendererSpinner(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_CELL_RENDERER_SPINNER(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkEventBox *
|
||||||
|
toGtkEventBox(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_EVENT_BOX(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkGrid *
|
||||||
|
toGtkGrid(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_GRID(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkWidget *
|
||||||
|
toGtkWidget(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_WIDGET(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkContainer *
|
||||||
|
toGtkContainer(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_CONTAINER(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkPaned *
|
||||||
|
toGtkPaned(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_PANED(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkProgressBar *
|
||||||
|
toGtkProgressBar(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_PROGRESS_BAR(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkLevelBar *
|
||||||
|
toGtkLevelBar(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_LEVEL_BAR(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkBin *
|
||||||
|
toGtkBin(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_BIN(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkWindow *
|
||||||
|
toGtkWindow(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_WINDOW(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkBox *
|
||||||
|
toGtkBox(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_BOX(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkStatusbar *
|
||||||
|
toGtkStatusbar(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_STATUSBAR(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkLabel *
|
||||||
|
toGtkLabel(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_LABEL(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkNotebook *
|
||||||
|
toGtkNotebook(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_NOTEBOOK(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkEntry *
|
||||||
|
toGtkEntry(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_ENTRY(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkEntryBuffer *
|
||||||
|
toGtkEntryBuffer(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_ENTRY_BUFFER(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkEntryCompletion *
|
||||||
|
toGtkEntryCompletion(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_ENTRY_COMPLETION(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkAdjustment *
|
||||||
|
toGtkAdjustment(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_ADJUSTMENT(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkAccelGroup *
|
||||||
|
toGtkAccelGroup(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_ACCEL_GROUP(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkAccelMap *
|
||||||
|
toGtkAccelMap(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_ACCEL_MAP(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkTextTag *
|
||||||
|
toGtkTextTag(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_TEXT_TAG(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkIconView *
|
||||||
|
toGtkIconView(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_ICON_VIEW(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkImage *
|
||||||
|
toGtkImage(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_IMAGE(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkButton *
|
||||||
|
toGtkButton(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_BUTTON(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkScaleButton *
|
||||||
|
toGtkScaleButton(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_SCALE_BUTTON(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkColorButton *
|
||||||
|
toGtkColorButton(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_COLOR_BUTTON(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkViewport *
|
||||||
|
toGtkViewport(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_VIEWPORT(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkVolumeButton *
|
||||||
|
toGtkVolumeButton(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_VOLUME_BUTTON(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkScrollable *
|
||||||
|
toGtkScrollable(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_SCROLLABLE(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkScrolledWindow *
|
||||||
|
toGtkScrolledWindow(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_SCROLLED_WINDOW(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkMenuItem *
|
||||||
|
toGtkMenuItem(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_MENU_ITEM(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkMenu *
|
||||||
|
toGtkMenu(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_MENU(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkMenuShell *
|
||||||
|
toGtkMenuShell(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_MENU_SHELL(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkMenuBar *
|
||||||
|
toGtkMenuBar(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_MENU_BAR(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkSizeGroup *
|
||||||
|
toGtkSizeGroup(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_SIZE_GROUP(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkSpinButton *
|
||||||
|
toGtkSpinButton(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_SPIN_BUTTON(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkSpinner *
|
||||||
|
toGtkSpinner(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_SPINNER(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkComboBox *
|
||||||
|
toGtkComboBox(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_COMBO_BOX(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkComboBoxText *
|
||||||
|
toGtkComboBoxText(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_COMBO_BOX_TEXT(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkLinkButton *
|
||||||
|
toGtkLinkButton(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_LINK_BUTTON(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkLayout *
|
||||||
|
toGtkLayout(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_LAYOUT(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkListStore *
|
||||||
|
toGtkListStore(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_LIST_STORE(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkSwitch *
|
||||||
|
toGtkSwitch(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_SWITCH(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkTextView *
|
||||||
|
toGtkTextView(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_TEXT_VIEW(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkTextTagTable *
|
||||||
|
toGtkTextTagTable(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_TEXT_TAG_TABLE(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkTextBuffer *
|
||||||
|
toGtkTextBuffer(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_TEXT_BUFFER(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkTreeModel *
|
||||||
|
toGtkTreeModel(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_TREE_MODEL(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkCellRenderer *
|
||||||
|
toGtkCellRenderer(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_CELL_RENDERER(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkCellRendererPixbuf *
|
||||||
|
toGtkCellRendererPixbuf(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_CELL_RENDERER_PIXBUF(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkCellRendererText *
|
||||||
|
toGtkCellRendererText(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_CELL_RENDERER_TEXT(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkCellRendererToggle *
|
||||||
|
toGtkCellRendererToggle(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_CELL_RENDERER_TOGGLE(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkCellLayout *
|
||||||
|
toGtkCellLayout(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_CELL_LAYOUT(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkOrientable *
|
||||||
|
toGtkOrientable(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_ORIENTABLE(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkTreeStore *
|
||||||
|
toGtkTreeStore (void *p)
|
||||||
|
{
|
||||||
|
return (GTK_TREE_STORE(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkTreeView *
|
||||||
|
toGtkTreeView(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_TREE_VIEW(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkTreeViewColumn *
|
||||||
|
toGtkTreeViewColumn(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_TREE_VIEW_COLUMN(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkTreeSelection *
|
||||||
|
toGtkTreeSelection(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_TREE_SELECTION(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkTreeSortable *
|
||||||
|
toGtkTreeSortable(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_TREE_SORTABLE(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkClipboard *
|
||||||
|
toGtkClipboard(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_CLIPBOARD(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkDialog *
|
||||||
|
toGtkDialog(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_DIALOG(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkMessageDialog *
|
||||||
|
toGtkMessageDialog(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_MESSAGE_DIALOG(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkBuilder *
|
||||||
|
toGtkBuilder(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_BUILDER(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkSeparatorMenuItem *
|
||||||
|
toGtkSeparatorMenuItem(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_SEPARATOR_MENU_ITEM(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkCheckButton *
|
||||||
|
toGtkCheckButton(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_CHECK_BUTTON(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkToggleButton *
|
||||||
|
toGtkToggleButton(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_TOGGLE_BUTTON(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkFontButton *
|
||||||
|
toGtkFontButton(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_FONT_BUTTON(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkFrame *
|
||||||
|
toGtkFrame(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_FRAME(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkSeparator *
|
||||||
|
toGtkSeparator(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_SEPARATOR(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkScale*
|
||||||
|
toGtkScale(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_SCALE(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkScrollbar *
|
||||||
|
toGtkScrollbar(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_SCROLLBAR(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkRange *
|
||||||
|
toGtkRange(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_RANGE(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkSearchEntry *
|
||||||
|
toGtkSearchEntry(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_SEARCH_ENTRY(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkOffscreenWindow *
|
||||||
|
toGtkOffscreenWindow(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_OFFSCREEN_WINDOW(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkExpander *
|
||||||
|
toGtkExpander(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_EXPANDER(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkFileChooser *
|
||||||
|
toGtkFileChooser(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_FILE_CHOOSER(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkFileChooserButton *
|
||||||
|
toGtkFileChooserButton(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_FILE_CHOOSER_BUTTON(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkFileChooserDialog *
|
||||||
|
toGtkFileChooserDialog(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_FILE_CHOOSER_DIALOG(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkFileChooserWidget *
|
||||||
|
toGtkFileChooserWidget(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_FILE_CHOOSER_WIDGET(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkFileFilter *
|
||||||
|
toGtkFileFilter(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_FILE_FILTER(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkMenuButton *
|
||||||
|
toGtkMenuButton(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_MENU_BUTTON(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkRadioButton *
|
||||||
|
toGtkRadioButton(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_RADIO_BUTTON(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkRecentChooser *
|
||||||
|
toGtkRecentChooser(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_RECENT_CHOOSER(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkRecentChooserMenu *
|
||||||
|
toGtkRecentChooserMenu(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_RECENT_CHOOSER_MENU(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkColorChooser *
|
||||||
|
toGtkColorChooser(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_COLOR_CHOOSER(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkRecentFilter *
|
||||||
|
toGtkRecentFilter(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_RECENT_FILTER(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkRecentManager *
|
||||||
|
toGtkRecentManager(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_RECENT_MANAGER(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkCheckMenuItem *
|
||||||
|
toGtkCheckMenuItem(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_CHECK_MENU_ITEM(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkRadioMenuItem *
|
||||||
|
toGtkRadioMenuItem(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_RADIO_MENU_ITEM(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkToolItem *
|
||||||
|
toGtkToolItem(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_TOOL_ITEM(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkToolbar *
|
||||||
|
toGtkToolbar(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_TOOLBAR(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkEditable *
|
||||||
|
toGtkEditable(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_EDITABLE(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkToolButton *
|
||||||
|
toGtkToolButton(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_TOOL_BUTTON(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkSeparatorToolItem *
|
||||||
|
toGtkSeparatorToolItem(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_SEPARATOR_TOOL_ITEM(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkCssProvider *
|
||||||
|
toGtkCssProvider(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_CSS_PROVIDER(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkStyleContext *
|
||||||
|
toGtkStyleContext(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_STYLE_CONTEXT(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkStyleProvider *
|
||||||
|
toGtkStyleProvider(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_STYLE_PROVIDER(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkInfoBar *
|
||||||
|
toGtkInfoBar(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_INFO_BAR(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GType *
|
||||||
|
alloc_types(int n) {
|
||||||
|
return ((GType *)g_new0(GType, n));
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
set_type(GType *types, int n, GType t)
|
||||||
|
{
|
||||||
|
types[n] = t;
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkTreeViewColumn *
|
||||||
|
_gtk_tree_view_column_new_with_attributes_one(const gchar *title,
|
||||||
|
GtkCellRenderer *renderer, const gchar *attribute, gint column)
|
||||||
|
{
|
||||||
|
GtkTreeViewColumn *tvc;
|
||||||
|
|
||||||
|
tvc = gtk_tree_view_column_new_with_attributes(title, renderer,
|
||||||
|
attribute, column, NULL);
|
||||||
|
return (tvc);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_gtk_list_store_set(GtkListStore *list_store, GtkTreeIter *iter, gint column,
|
||||||
|
void* value)
|
||||||
|
{
|
||||||
|
gtk_list_store_set(list_store, iter, column, value, -1);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_gtk_tree_store_set(GtkTreeStore *store, GtkTreeIter *iter, gint column,
|
||||||
|
void* value)
|
||||||
|
{
|
||||||
|
gtk_tree_store_set(store, iter, column, value, -1);
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkWidget *
|
||||||
|
_gtk_message_dialog_new(GtkWindow *parent, GtkDialogFlags flags,
|
||||||
|
GtkMessageType type, GtkButtonsType buttons, char *msg)
|
||||||
|
{
|
||||||
|
GtkWidget *w;
|
||||||
|
|
||||||
|
w = gtk_message_dialog_new(parent, flags, type, buttons, "%s", msg);
|
||||||
|
return (w);
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkWidget *
|
||||||
|
_gtk_message_dialog_new_with_markup(GtkWindow *parent, GtkDialogFlags flags,
|
||||||
|
GtkMessageType type, GtkButtonsType buttons, char *msg)
|
||||||
|
{
|
||||||
|
GtkWidget *w;
|
||||||
|
|
||||||
|
w = gtk_message_dialog_new_with_markup(parent, flags, type, buttons,
|
||||||
|
"%s", msg);
|
||||||
|
return (w);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_gtk_message_dialog_format_secondary_text(GtkMessageDialog *message_dialog,
|
||||||
|
const gchar *msg)
|
||||||
|
{
|
||||||
|
gtk_message_dialog_format_secondary_text(message_dialog, "%s", msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_gtk_message_dialog_format_secondary_markup(GtkMessageDialog *message_dialog,
|
||||||
|
const gchar *msg)
|
||||||
|
{
|
||||||
|
gtk_message_dialog_format_secondary_markup(message_dialog, "%s", msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
static const gchar *
|
||||||
|
object_get_class_name(GObject *object)
|
||||||
|
{
|
||||||
|
return G_OBJECT_CLASS_NAME(G_OBJECT_GET_CLASS(object));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkWidget *
|
||||||
|
gtk_file_chooser_dialog_new_1(
|
||||||
|
const gchar *title,
|
||||||
|
GtkWindow *parent,
|
||||||
|
GtkFileChooserAction action,
|
||||||
|
const gchar *first_button_text, int first_button_id
|
||||||
|
) {
|
||||||
|
return gtk_file_chooser_dialog_new(
|
||||||
|
title, parent, action,
|
||||||
|
first_button_text, first_button_id,
|
||||||
|
NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkWidget *
|
||||||
|
gtk_file_chooser_dialog_new_2(
|
||||||
|
const gchar *title,
|
||||||
|
GtkWindow *parent,
|
||||||
|
GtkFileChooserAction action,
|
||||||
|
const gchar *first_button_text, int first_button_id,
|
||||||
|
const gchar *second_button_text, int second_button_id
|
||||||
|
) {
|
||||||
|
return gtk_file_chooser_dialog_new(
|
||||||
|
title, parent, action,
|
||||||
|
first_button_text, first_button_id,
|
||||||
|
second_button_text, second_button_id,
|
||||||
|
NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void _gtk_widget_hide_on_delete(GtkWidget* w) {
|
||||||
|
g_signal_connect(GTK_WIDGET(w), "delete-event", G_CALLBACK(gtk_widget_hide_on_delete), NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline gchar** make_strings(int count) {
|
||||||
|
return (gchar**)malloc(sizeof(gchar*) * count);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void destroy_strings(gchar** strings) {
|
||||||
|
free(strings);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline gchar* get_string(gchar** strings, int n) {
|
||||||
|
return strings[n];
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void set_string(gchar** strings, int n, gchar* str) {
|
||||||
|
strings[n] = str;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline gchar** next_gcharptr(gchar** s) { return (s+1); }
|
||||||
|
|
||||||
|
extern void goBuilderConnect (GtkBuilder *builder,
|
||||||
|
GObject *object,
|
||||||
|
gchar *signal_name,
|
||||||
|
gchar *handler_name,
|
||||||
|
GObject *connect_object,
|
||||||
|
GConnectFlags flags,
|
||||||
|
gpointer user_data);
|
||||||
|
|
||||||
|
static inline void _gtk_builder_connect_signals_full(GtkBuilder *builder) {
|
||||||
|
gtk_builder_connect_signals_full(builder, (GtkBuilderConnectFunc)(goBuilderConnect), NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
@ -0,0 +1,210 @@
|
|||||||
|
// Copyright (c) 2013-2014 Conformal Systems <info@conformal.com>
|
||||||
|
//
|
||||||
|
// This file originated from: http://opensource.conformal.com/
|
||||||
|
//
|
||||||
|
// Permission to use, copy, modify, and distribute this software for any
|
||||||
|
// purpose with or without fee is hereby granted, provided that the above
|
||||||
|
// copyright notice and this permission notice appear in all copies.
|
||||||
|
//
|
||||||
|
// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||||
|
// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||||
|
// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||||
|
// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||||
|
// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||||
|
// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||||
|
// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
|
||||||
|
// This file includes wrapers for symbols deprecated beginning with GTK 3.10,
|
||||||
|
// and should only be included in a build targeted intended to target GTK
|
||||||
|
// 3.8 or earlier. To target an earlier build build, use the build tag
|
||||||
|
// gtk_MAJOR_MINOR. For example, to target GTK 3.8, run
|
||||||
|
// 'go build -tags gtk_3_8'.
|
||||||
|
// +build gtk_3_6 gtk_3_8
|
||||||
|
|
||||||
|
package gtk
|
||||||
|
|
||||||
|
// #cgo pkg-config: gtk+-3.0
|
||||||
|
// #include <stdlib.h>
|
||||||
|
// #include <gtk/gtk.h>
|
||||||
|
import "C"
|
||||||
|
import "unsafe"
|
||||||
|
|
||||||
|
// ButtonNewFromStock is a wrapper around gtk_button_new_from_stock().
|
||||||
|
func ButtonNewFromStock(stock Stock) (*Button, error) {
|
||||||
|
cstr := C.CString(string(stock))
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
c := C.gtk_button_new_from_stock((*C.gchar)(cstr))
|
||||||
|
if c == nil {
|
||||||
|
return nil, nilPtrErr
|
||||||
|
}
|
||||||
|
return wrapButton(wrapObject(unsafe.Pointer(c))), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetUseStock is a wrapper around gtk_button_set_use_stock().
|
||||||
|
func (v *Button) SetUseStock(useStock bool) {
|
||||||
|
C.gtk_button_set_use_stock(v.native(), gbool(useStock))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetUseStock is a wrapper around gtk_button_get_use_stock().
|
||||||
|
func (v *Button) GetUseStock() bool {
|
||||||
|
c := C.gtk_button_get_use_stock(v.native())
|
||||||
|
return gobool(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetIconStock is a wrapper around gtk_entry_get_icon_stock().
|
||||||
|
func (v *Entry) GetIconStock(iconPos EntryIconPosition) (string, error) {
|
||||||
|
c := C.gtk_entry_get_icon_stock(v.native(),
|
||||||
|
C.GtkEntryIconPosition(iconPos))
|
||||||
|
if c == nil {
|
||||||
|
return "", nilPtrErr
|
||||||
|
}
|
||||||
|
return C.GoString((*C.char)(c)), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetIconFromStock is a wrapper around gtk_entry_set_icon_from_stock().
|
||||||
|
func (v *Entry) SetIconFromStock(iconPos EntryIconPosition, stockID string) {
|
||||||
|
cstr := C.CString(stockID)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
C.gtk_entry_set_icon_from_stock(v.native(),
|
||||||
|
C.GtkEntryIconPosition(iconPos), (*C.gchar)(cstr))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ImageNewFromStock is a wrapper around gtk_image_new_from_stock().
|
||||||
|
func ImageNewFromStock(stock Stock, size IconSize) (*Image, error) {
|
||||||
|
cstr := C.CString(string(stock))
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
c := C.gtk_image_new_from_stock((*C.gchar)(cstr), C.GtkIconSize(size))
|
||||||
|
if c == nil {
|
||||||
|
return nil, nilPtrErr
|
||||||
|
}
|
||||||
|
return wrapImage(wrapObject(unsafe.Pointer(c))), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetFromStock is a wrapper around gtk_image_set_from_stock().
|
||||||
|
func (v *Image) SetFromStock(stock Stock, size IconSize) {
|
||||||
|
cstr := C.CString(string(stock))
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
C.gtk_image_set_from_stock(v.native(), (*C.gchar)(cstr),
|
||||||
|
C.GtkIconSize(size))
|
||||||
|
}
|
||||||
|
|
||||||
|
// Stock is a special type that does not have an equivalent type in
|
||||||
|
// GTK. It is the type used as a parameter anytime an identifier for
|
||||||
|
// stock icons are needed. A Stock must be type converted to string when
|
||||||
|
// function parameters may take a Stock, but when other string values are
|
||||||
|
// valid as well.
|
||||||
|
type Stock string
|
||||||
|
|
||||||
|
const (
|
||||||
|
STOCK_ABOUT Stock = C.GTK_STOCK_ABOUT
|
||||||
|
STOCK_ADD Stock = C.GTK_STOCK_ADD
|
||||||
|
STOCK_APPLY Stock = C.GTK_STOCK_APPLY
|
||||||
|
STOCK_BOLD Stock = C.GTK_STOCK_BOLD
|
||||||
|
STOCK_CANCEL Stock = C.GTK_STOCK_CANCEL
|
||||||
|
STOCK_CAPS_LOCK_WARNING Stock = C.GTK_STOCK_CAPS_LOCK_WARNING
|
||||||
|
STOCK_CDROM Stock = C.GTK_STOCK_CDROM
|
||||||
|
STOCK_CLEAR Stock = C.GTK_STOCK_CLEAR
|
||||||
|
STOCK_CLOSE Stock = C.GTK_STOCK_CLOSE
|
||||||
|
STOCK_COLOR_PICKER Stock = C.GTK_STOCK_COLOR_PICKER
|
||||||
|
STOCK_CONNECT Stock = C.GTK_STOCK_CONNECT
|
||||||
|
STOCK_CONVERT Stock = C.GTK_STOCK_CONVERT
|
||||||
|
STOCK_COPY Stock = C.GTK_STOCK_COPY
|
||||||
|
STOCK_CUT Stock = C.GTK_STOCK_CUT
|
||||||
|
STOCK_DELETE Stock = C.GTK_STOCK_DELETE
|
||||||
|
STOCK_DIALOG_AUTHENTICATION Stock = C.GTK_STOCK_DIALOG_AUTHENTICATION
|
||||||
|
STOCK_DIALOG_INFO Stock = C.GTK_STOCK_DIALOG_INFO
|
||||||
|
STOCK_DIALOG_WARNING Stock = C.GTK_STOCK_DIALOG_WARNING
|
||||||
|
STOCK_DIALOG_ERROR Stock = C.GTK_STOCK_DIALOG_ERROR
|
||||||
|
STOCK_DIALOG_QUESTION Stock = C.GTK_STOCK_DIALOG_QUESTION
|
||||||
|
STOCK_DIRECTORY Stock = C.GTK_STOCK_DIRECTORY
|
||||||
|
STOCK_DISCARD Stock = C.GTK_STOCK_DISCARD
|
||||||
|
STOCK_DISCONNECT Stock = C.GTK_STOCK_DISCONNECT
|
||||||
|
STOCK_DND Stock = C.GTK_STOCK_DND
|
||||||
|
STOCK_DND_MULTIPLE Stock = C.GTK_STOCK_DND_MULTIPLE
|
||||||
|
STOCK_EDIT Stock = C.GTK_STOCK_EDIT
|
||||||
|
STOCK_EXECUTE Stock = C.GTK_STOCK_EXECUTE
|
||||||
|
STOCK_FILE Stock = C.GTK_STOCK_FILE
|
||||||
|
STOCK_FIND Stock = C.GTK_STOCK_FIND
|
||||||
|
STOCK_FIND_AND_REPLACE Stock = C.GTK_STOCK_FIND_AND_REPLACE
|
||||||
|
STOCK_FLOPPY Stock = C.GTK_STOCK_FLOPPY
|
||||||
|
STOCK_FULLSCREEN Stock = C.GTK_STOCK_FULLSCREEN
|
||||||
|
STOCK_GOTO_BOTTOM Stock = C.GTK_STOCK_GOTO_BOTTOM
|
||||||
|
STOCK_GOTO_FIRST Stock = C.GTK_STOCK_GOTO_FIRST
|
||||||
|
STOCK_GOTO_LAST Stock = C.GTK_STOCK_GOTO_LAST
|
||||||
|
STOCK_GOTO_TOP Stock = C.GTK_STOCK_GOTO_TOP
|
||||||
|
STOCK_GO_BACK Stock = C.GTK_STOCK_GO_BACK
|
||||||
|
STOCK_GO_DOWN Stock = C.GTK_STOCK_GO_DOWN
|
||||||
|
STOCK_GO_FORWARD Stock = C.GTK_STOCK_GO_FORWARD
|
||||||
|
STOCK_GO_UP Stock = C.GTK_STOCK_GO_UP
|
||||||
|
STOCK_HARDDISK Stock = C.GTK_STOCK_HARDDISK
|
||||||
|
STOCK_HELP Stock = C.GTK_STOCK_HELP
|
||||||
|
STOCK_HOME Stock = C.GTK_STOCK_HOME
|
||||||
|
STOCK_INDEX Stock = C.GTK_STOCK_INDEX
|
||||||
|
STOCK_INDENT Stock = C.GTK_STOCK_INDENT
|
||||||
|
STOCK_INFO Stock = C.GTK_STOCK_INFO
|
||||||
|
STOCK_ITALIC Stock = C.GTK_STOCK_ITALIC
|
||||||
|
STOCK_JUMP_TO Stock = C.GTK_STOCK_JUMP_TO
|
||||||
|
STOCK_JUSTIFY_CENTER Stock = C.GTK_STOCK_JUSTIFY_CENTER
|
||||||
|
STOCK_JUSTIFY_FILL Stock = C.GTK_STOCK_JUSTIFY_FILL
|
||||||
|
STOCK_JUSTIFY_LEFT Stock = C.GTK_STOCK_JUSTIFY_LEFT
|
||||||
|
STOCK_JUSTIFY_RIGHT Stock = C.GTK_STOCK_JUSTIFY_RIGHT
|
||||||
|
STOCK_LEAVE_FULLSCREEN Stock = C.GTK_STOCK_LEAVE_FULLSCREEN
|
||||||
|
STOCK_MISSING_IMAGE Stock = C.GTK_STOCK_MISSING_IMAGE
|
||||||
|
STOCK_MEDIA_FORWARD Stock = C.GTK_STOCK_MEDIA_FORWARD
|
||||||
|
STOCK_MEDIA_NEXT Stock = C.GTK_STOCK_MEDIA_NEXT
|
||||||
|
STOCK_MEDIA_PAUSE Stock = C.GTK_STOCK_MEDIA_PAUSE
|
||||||
|
STOCK_MEDIA_PLAY Stock = C.GTK_STOCK_MEDIA_PLAY
|
||||||
|
STOCK_MEDIA_PREVIOUS Stock = C.GTK_STOCK_MEDIA_PREVIOUS
|
||||||
|
STOCK_MEDIA_RECORD Stock = C.GTK_STOCK_MEDIA_RECORD
|
||||||
|
STOCK_MEDIA_REWIND Stock = C.GTK_STOCK_MEDIA_REWIND
|
||||||
|
STOCK_MEDIA_STOP Stock = C.GTK_STOCK_MEDIA_STOP
|
||||||
|
STOCK_NETWORK Stock = C.GTK_STOCK_NETWORK
|
||||||
|
STOCK_NEW Stock = C.GTK_STOCK_NEW
|
||||||
|
STOCK_NO Stock = C.GTK_STOCK_NO
|
||||||
|
STOCK_OK Stock = C.GTK_STOCK_OK
|
||||||
|
STOCK_OPEN Stock = C.GTK_STOCK_OPEN
|
||||||
|
STOCK_ORIENTATION_PORTRAIT Stock = C.GTK_STOCK_ORIENTATION_PORTRAIT
|
||||||
|
STOCK_ORIENTATION_LANDSCAPE Stock = C.GTK_STOCK_ORIENTATION_LANDSCAPE
|
||||||
|
STOCK_ORIENTATION_REVERSE_LANDSCAPE Stock = C.GTK_STOCK_ORIENTATION_REVERSE_LANDSCAPE
|
||||||
|
STOCK_ORIENTATION_REVERSE_PORTRAIT Stock = C.GTK_STOCK_ORIENTATION_REVERSE_PORTRAIT
|
||||||
|
STOCK_PAGE_SETUP Stock = C.GTK_STOCK_PAGE_SETUP
|
||||||
|
STOCK_PASTE Stock = C.GTK_STOCK_PASTE
|
||||||
|
STOCK_PREFERENCES Stock = C.GTK_STOCK_PREFERENCES
|
||||||
|
STOCK_PRINT Stock = C.GTK_STOCK_PRINT
|
||||||
|
STOCK_PRINT_ERROR Stock = C.GTK_STOCK_PRINT_ERROR
|
||||||
|
STOCK_PRINT_PAUSED Stock = C.GTK_STOCK_PRINT_PAUSED
|
||||||
|
STOCK_PRINT_PREVIEW Stock = C.GTK_STOCK_PRINT_PREVIEW
|
||||||
|
STOCK_PRINT_REPORT Stock = C.GTK_STOCK_PRINT_REPORT
|
||||||
|
STOCK_PRINT_WARNING Stock = C.GTK_STOCK_PRINT_WARNING
|
||||||
|
STOCK_PROPERTIES Stock = C.GTK_STOCK_PROPERTIES
|
||||||
|
STOCK_QUIT Stock = C.GTK_STOCK_QUIT
|
||||||
|
STOCK_REDO Stock = C.GTK_STOCK_REDO
|
||||||
|
STOCK_REFRESH Stock = C.GTK_STOCK_REFRESH
|
||||||
|
STOCK_REMOVE Stock = C.GTK_STOCK_REMOVE
|
||||||
|
STOCK_REVERT_TO_SAVED Stock = C.GTK_STOCK_REVERT_TO_SAVED
|
||||||
|
STOCK_SAVE Stock = C.GTK_STOCK_SAVE
|
||||||
|
STOCK_SAVE_AS Stock = C.GTK_STOCK_SAVE_AS
|
||||||
|
STOCK_SELECT_ALL Stock = C.GTK_STOCK_SELECT_ALL
|
||||||
|
STOCK_SELECT_COLOR Stock = C.GTK_STOCK_SELECT_COLOR
|
||||||
|
STOCK_SELECT_FONT Stock = C.GTK_STOCK_SELECT_FONT
|
||||||
|
STOCK_SORT_ASCENDING Stock = C.GTK_STOCK_SORT_ASCENDING
|
||||||
|
STOCK_SORT_DESCENDING Stock = C.GTK_STOCK_SORT_DESCENDING
|
||||||
|
STOCK_SPELL_CHECK Stock = C.GTK_STOCK_SPELL_CHECK
|
||||||
|
STOCK_STOP Stock = C.GTK_STOCK_STOP
|
||||||
|
STOCK_STRIKETHROUGH Stock = C.GTK_STOCK_STRIKETHROUGH
|
||||||
|
STOCK_UNDELETE Stock = C.GTK_STOCK_UNDELETE
|
||||||
|
STOCK_UNDERLINE Stock = C.GTK_STOCK_UNDERLINE
|
||||||
|
STOCK_UNDO Stock = C.GTK_STOCK_UNDO
|
||||||
|
STOCK_UNINDENT Stock = C.GTK_STOCK_UNINDENT
|
||||||
|
STOCK_YES Stock = C.GTK_STOCK_YES
|
||||||
|
STOCK_ZOOM_100 Stock = C.GTK_STOCK_ZOOM_100
|
||||||
|
STOCK_ZOOM_FIT Stock = C.GTK_STOCK_ZOOM_FIT
|
||||||
|
STOCK_ZOOM_IN Stock = C.GTK_STOCK_ZOOM_IN
|
||||||
|
STOCK_ZOOM_OUT Stock = C.GTK_STOCK_ZOOM_OUT
|
||||||
|
)
|
||||||
|
|
||||||
|
// ReshowWithInitialSize is a wrapper around
|
||||||
|
// gtk_window_reshow_with_initial_size().
|
||||||
|
func (v *Window) ReshowWithInitialSize() {
|
||||||
|
C.gtk_window_reshow_with_initial_size(v.native())
|
||||||
|
}
|
@ -0,0 +1,86 @@
|
|||||||
|
// Copyright (c) 2013-2014 Conformal Systems <info@conformal.com>
|
||||||
|
//
|
||||||
|
// This file originated from: http://opensource.conformal.com/
|
||||||
|
//
|
||||||
|
// Permission to use, copy, modify, and distribute this software for any
|
||||||
|
// purpose with or without fee is hereby granted, provided that the above
|
||||||
|
// copyright notice and this permission notice appear in all copies.
|
||||||
|
//
|
||||||
|
// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||||
|
// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||||
|
// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||||
|
// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||||
|
// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||||
|
// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||||
|
// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
|
||||||
|
// This file includes wrapers for symbols deprecated beginning with GTK 3.12,
|
||||||
|
// and should only be included in a build targeted intended to target GTK
|
||||||
|
// 3.10 or earlier. To target an earlier build build, use the build tag
|
||||||
|
// gtk_MAJOR_MINOR. For example, to target GTK 3.8, run
|
||||||
|
// 'go build -tags gtk_3_8'.
|
||||||
|
// +build gtk_3_6 gtk_3_8 gtk_3_10
|
||||||
|
|
||||||
|
package gtk
|
||||||
|
|
||||||
|
// #cgo pkg-config: gtk+-3.0
|
||||||
|
// #include <gtk/gtk.h>
|
||||||
|
import "C"
|
||||||
|
import "unsafe"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GtkDialog
|
||||||
|
*/
|
||||||
|
|
||||||
|
// GetActionArea() is a wrapper around gtk_dialog_get_action_area().
|
||||||
|
func (v *Dialog) GetActionArea() (*Widget, error) {
|
||||||
|
c := C.gtk_dialog_get_action_area(v.native())
|
||||||
|
if c == nil {
|
||||||
|
return nil, nilPtrErr
|
||||||
|
}
|
||||||
|
return wrapWidget(wrapObject(unsafe.Pointer(c))), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GtkMessageDialog
|
||||||
|
*/
|
||||||
|
|
||||||
|
// GetImage is a wrapper around gtk_message_dialog_get_image().
|
||||||
|
func (v *MessageDialog) GetImage() (*Widget, error) {
|
||||||
|
c := C.gtk_message_dialog_get_image(v.native())
|
||||||
|
if c == nil {
|
||||||
|
return nil, nilPtrErr
|
||||||
|
}
|
||||||
|
return wrapWidget(wrapObject(unsafe.Pointer(c))), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetImage is a wrapper around gtk_message_dialog_set_image().
|
||||||
|
func (v *MessageDialog) SetImage(image IWidget) {
|
||||||
|
C.gtk_message_dialog_set_image(v.native(), image.toWidget())
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GtkWidget
|
||||||
|
*/
|
||||||
|
|
||||||
|
// GetMarginLeft is a wrapper around gtk_widget_get_margin_left().
|
||||||
|
func (v *Widget) GetMarginLeft() int {
|
||||||
|
c := C.gtk_widget_get_margin_left(v.native())
|
||||||
|
return int(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetMarginLeft is a wrapper around gtk_widget_set_margin_left().
|
||||||
|
func (v *Widget) SetMarginLeft(margin int) {
|
||||||
|
C.gtk_widget_set_margin_left(v.native(), C.gint(margin))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetMarginRight is a wrapper around gtk_widget_get_margin_right().
|
||||||
|
func (v *Widget) GetMarginRight() int {
|
||||||
|
c := C.gtk_widget_get_margin_right(v.native())
|
||||||
|
return int(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetMarginRight is a wrapper around gtk_widget_set_margin_right().
|
||||||
|
func (v *Widget) SetMarginRight(margin int) {
|
||||||
|
C.gtk_widget_set_margin_right(v.native(), C.gint(margin))
|
||||||
|
}
|
@ -0,0 +1,423 @@
|
|||||||
|
// +build gtk_3_6 gtk_3_8 gtk_3_10 gtk_3_12
|
||||||
|
|
||||||
|
package gtk
|
||||||
|
|
||||||
|
// #cgo pkg-config: gtk+-3.0
|
||||||
|
// #include <stdlib.h>
|
||||||
|
// #include <gtk/gtk.h>
|
||||||
|
// #include "gtk_deprecated_since_3_14.go.h"
|
||||||
|
import "C"
|
||||||
|
import (
|
||||||
|
"unsafe"
|
||||||
|
|
||||||
|
"github.com/gotk3/gotk3/glib"
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
tm := []glib.TypeMarshaler{
|
||||||
|
{glib.Type(C.gtk_alignment_get_type()), marshalAlignment},
|
||||||
|
{glib.Type(C.gtk_arrow_get_type()), marshalArrow},
|
||||||
|
{glib.Type(C.gtk_misc_get_type()), marshalMisc},
|
||||||
|
{glib.Type(C.gtk_status_icon_get_type()), marshalStatusIcon},
|
||||||
|
}
|
||||||
|
glib.RegisterGValueMarshalers(tm)
|
||||||
|
|
||||||
|
//Contribute to casting
|
||||||
|
for k, v := range map[string]WrapFn{
|
||||||
|
"GtkAlignment": wrapAlignment,
|
||||||
|
"GtkArrow": wrapArrow,
|
||||||
|
"GtkMisc": wrapMisc,
|
||||||
|
"GtkStatusIcon": wrapStatusIcon,
|
||||||
|
} {
|
||||||
|
WrapMap[k] = v
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* deprecated since version 3.14 and should not be used in newly-written code
|
||||||
|
*/
|
||||||
|
|
||||||
|
// ResizeGripIsVisible is a wrapper around
|
||||||
|
// gtk_window_resize_grip_is_visible().
|
||||||
|
func (v *Window) ResizeGripIsVisible() bool {
|
||||||
|
c := C.gtk_window_resize_grip_is_visible(v.native())
|
||||||
|
return gobool(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetHasResizeGrip is a wrapper around gtk_window_set_has_resize_grip().
|
||||||
|
func (v *Window) SetHasResizeGrip(setting bool) {
|
||||||
|
C.gtk_window_set_has_resize_grip(v.native(), gbool(setting))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetHasResizeGrip is a wrapper around gtk_window_get_has_resize_grip().
|
||||||
|
func (v *Window) GetHasResizeGrip() bool {
|
||||||
|
c := C.gtk_window_get_has_resize_grip(v.native())
|
||||||
|
return gobool(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Reparent() is a wrapper around gtk_widget_reparent().
|
||||||
|
func (v *Widget) Reparent(newParent IWidget) {
|
||||||
|
C.gtk_widget_reparent(v.native(), newParent.toWidget())
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetPadding is a wrapper around gtk_alignment_get_padding().
|
||||||
|
func (v *Alignment) GetPadding() (top, bottom, left, right uint) {
|
||||||
|
var ctop, cbottom, cleft, cright C.guint
|
||||||
|
C.gtk_alignment_get_padding(v.native(), &ctop, &cbottom, &cleft,
|
||||||
|
&cright)
|
||||||
|
return uint(ctop), uint(cbottom), uint(cleft), uint(cright)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetPadding is a wrapper around gtk_alignment_set_padding().
|
||||||
|
func (v *Alignment) SetPadding(top, bottom, left, right uint) {
|
||||||
|
C.gtk_alignment_set_padding(v.native(), C.guint(top), C.guint(bottom),
|
||||||
|
C.guint(left), C.guint(right))
|
||||||
|
}
|
||||||
|
|
||||||
|
// AlignmentNew is a wrapper around gtk_alignment_new().
|
||||||
|
func AlignmentNew(xalign, yalign, xscale, yscale float32) (*Alignment, error) {
|
||||||
|
c := C.gtk_alignment_new(C.gfloat(xalign), C.gfloat(yalign), C.gfloat(xscale),
|
||||||
|
C.gfloat(yscale))
|
||||||
|
if c == nil {
|
||||||
|
return nil, nilPtrErr
|
||||||
|
}
|
||||||
|
obj := wrapObject(unsafe.Pointer(c))
|
||||||
|
return wrapAlignment(obj), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set is a wrapper around gtk_alignment_set().
|
||||||
|
func (v *Alignment) Set(xalign, yalign, xscale, yscale float32) {
|
||||||
|
C.gtk_alignment_set(v.native(), C.gfloat(xalign), C.gfloat(yalign),
|
||||||
|
C.gfloat(xscale), C.gfloat(yscale))
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GtkArrow
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Arrow is a representation of GTK's GtkArrow.
|
||||||
|
type Arrow struct {
|
||||||
|
Misc
|
||||||
|
}
|
||||||
|
|
||||||
|
// ArrowNew is a wrapper around gtk_arrow_new().
|
||||||
|
func ArrowNew(arrowType ArrowType, shadowType ShadowType) (*Arrow, error) {
|
||||||
|
c := C.gtk_arrow_new(C.GtkArrowType(arrowType),
|
||||||
|
C.GtkShadowType(shadowType))
|
||||||
|
if c == nil {
|
||||||
|
return nil, nilPtrErr
|
||||||
|
}
|
||||||
|
obj := wrapObject(unsafe.Pointer(c))
|
||||||
|
return wrapArrow(obj), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set is a wrapper around gtk_arrow_set().
|
||||||
|
func (v *Arrow) Set(arrowType ArrowType, shadowType ShadowType) {
|
||||||
|
C.gtk_arrow_set(v.native(), C.GtkArrowType(arrowType), C.GtkShadowType(shadowType))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetAlignment() is a wrapper around gtk_button_set_alignment().
|
||||||
|
func (v *Button) SetAlignment(xalign, yalign float32) {
|
||||||
|
C.gtk_button_set_alignment(v.native(), (C.gfloat)(xalign),
|
||||||
|
(C.gfloat)(yalign))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetAlignment() is a wrapper around gtk_button_get_alignment().
|
||||||
|
func (v *Button) GetAlignment() (xalign, yalign float32) {
|
||||||
|
var x, y C.gfloat
|
||||||
|
C.gtk_button_get_alignment(v.native(), &x, &y)
|
||||||
|
return float32(x), float32(y)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetReallocateRedraws is a wrapper around
|
||||||
|
// gtk_container_set_reallocate_redraws().
|
||||||
|
func (v *Container) SetReallocateRedraws(needsRedraws bool) {
|
||||||
|
C.gtk_container_set_reallocate_redraws(v.native(), gbool(needsRedraws))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetAlignment is a wrapper around gtk_misc_get_alignment().
|
||||||
|
func (v *Misc) GetAlignment() (xAlign, yAlign float32) {
|
||||||
|
var x, y C.gfloat
|
||||||
|
C.gtk_misc_get_alignment(v.native(), &x, &y)
|
||||||
|
return float32(x), float32(y)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetAlignment is a wrapper around gtk_misc_set_alignment().
|
||||||
|
func (v *Misc) SetAlignment(xAlign, yAlign float32) {
|
||||||
|
C.gtk_misc_set_alignment(v.native(), C.gfloat(xAlign), C.gfloat(yAlign))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetPadding is a wrapper around gtk_misc_get_padding().
|
||||||
|
func (v *Misc) GetPadding() (xpad, ypad int) {
|
||||||
|
var x, y C.gint
|
||||||
|
C.gtk_misc_get_padding(v.native(), &x, &y)
|
||||||
|
return int(x), int(y)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetPadding is a wrapper around gtk_misc_set_padding().
|
||||||
|
func (v *Misc) SetPadding(xPad, yPad int) {
|
||||||
|
C.gtk_misc_set_padding(v.native(), C.gint(xPad), C.gint(yPad))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetDoubleBuffered is a wrapper around gtk_widget_set_double_buffered().
|
||||||
|
func (v *Widget) SetDoubleBuffered(doubleBuffered bool) {
|
||||||
|
C.gtk_widget_set_double_buffered(v.native(), gbool(doubleBuffered))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetDoubleBuffered is a wrapper around gtk_widget_get_double_buffered().
|
||||||
|
func (v *Widget) GetDoubleBuffered() bool {
|
||||||
|
c := C.gtk_widget_get_double_buffered(v.native())
|
||||||
|
return gobool(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GtkArrow
|
||||||
|
* deprecated since version 3.14
|
||||||
|
*/
|
||||||
|
// native returns a pointer to the underlying GtkButton.
|
||||||
|
func (v *Arrow) native() *C.GtkArrow {
|
||||||
|
if v == nil || v.GObject == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
p := unsafe.Pointer(v.GObject)
|
||||||
|
return C.toGtkArrow(p)
|
||||||
|
}
|
||||||
|
|
||||||
|
func marshalArrow(p uintptr) (interface{}, error) {
|
||||||
|
c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
|
||||||
|
obj := wrapObject(unsafe.Pointer(c))
|
||||||
|
return wrapArrow(obj), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func wrapArrow(obj *glib.Object) *Arrow {
|
||||||
|
return &Arrow{Misc{Widget{glib.InitiallyUnowned{obj}}}}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GtkAlignment
|
||||||
|
* deprecated since version 3.14
|
||||||
|
*/
|
||||||
|
|
||||||
|
type Alignment struct {
|
||||||
|
Bin
|
||||||
|
}
|
||||||
|
|
||||||
|
// native returns a pointer to the underlying GtkAlignment.
|
||||||
|
func (v *Alignment) native() *C.GtkAlignment {
|
||||||
|
if v == nil || v.GObject == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
p := unsafe.Pointer(v.GObject)
|
||||||
|
return C.toGtkAlignment(p)
|
||||||
|
}
|
||||||
|
|
||||||
|
func marshalAlignment(p uintptr) (interface{}, error) {
|
||||||
|
c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
|
||||||
|
obj := wrapObject(unsafe.Pointer(c))
|
||||||
|
return wrapAlignment(obj), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func wrapAlignment(obj *glib.Object) *Alignment {
|
||||||
|
return &Alignment{Bin{Container{Widget{glib.InitiallyUnowned{obj}}}}}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GtkStatusIcon
|
||||||
|
* deprecated since version 3.14
|
||||||
|
*/
|
||||||
|
|
||||||
|
// StatusIcon is a representation of GTK's GtkStatusIcon
|
||||||
|
type StatusIcon struct {
|
||||||
|
*glib.Object
|
||||||
|
}
|
||||||
|
|
||||||
|
func marshalStatusIcon(p uintptr) (interface{}, error) {
|
||||||
|
c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
|
||||||
|
obj := wrapObject(unsafe.Pointer(c))
|
||||||
|
return wrapStatusIcon(obj), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func wrapStatusIcon(obj *glib.Object) *StatusIcon {
|
||||||
|
return &StatusIcon{obj}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (v *StatusIcon) native() *C.GtkStatusIcon {
|
||||||
|
if v == nil || v.GObject == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
p := unsafe.Pointer(v.GObject)
|
||||||
|
return C.toGtkStatusIcon(p)
|
||||||
|
}
|
||||||
|
|
||||||
|
// StatusIconNew is a wrapper around gtk_status_icon_new()
|
||||||
|
func StatusIconNew() (*StatusIcon, error) {
|
||||||
|
c := C.gtk_status_icon_new()
|
||||||
|
if c == nil {
|
||||||
|
return nil, nilPtrErr
|
||||||
|
}
|
||||||
|
return wrapStatusIcon(wrapObject(unsafe.Pointer(c))), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// StatusIconNewFromFile is a wrapper around gtk_status_icon_new_from_file()
|
||||||
|
func StatusIconNewFromFile(filename string) (*StatusIcon, error) {
|
||||||
|
cstr := C.CString(filename)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
c := C.gtk_status_icon_new_from_file((*C.gchar)(cstr))
|
||||||
|
if c == nil {
|
||||||
|
return nil, nilPtrErr
|
||||||
|
}
|
||||||
|
return wrapStatusIcon(wrapObject(unsafe.Pointer(c))), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// StatusIconNewFromIconName is a wrapper around gtk_status_icon_new_from_name()
|
||||||
|
func StatusIconNewFromIconName(iconName string) (*StatusIcon, error) {
|
||||||
|
cstr := C.CString(iconName)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
c := C.gtk_status_icon_new_from_icon_name((*C.gchar)(cstr))
|
||||||
|
if c == nil {
|
||||||
|
return nil, nilPtrErr
|
||||||
|
}
|
||||||
|
return wrapStatusIcon(wrapObject(unsafe.Pointer(c))), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetFromFile is a wrapper around gtk_status_icon_set_from_file()
|
||||||
|
func (v *StatusIcon) SetFromFile(filename string) {
|
||||||
|
cstr := C.CString(filename)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
C.gtk_status_icon_set_from_file(v.native(), (*C.gchar)(cstr))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetFromIconName is a wrapper around gtk_status_icon_set_from_icon_name()
|
||||||
|
func (v *StatusIcon) SetFromIconName(iconName string) {
|
||||||
|
cstr := C.CString(iconName)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
C.gtk_status_icon_set_from_icon_name(v.native(), (*C.gchar)(cstr))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetStorageType is a wrapper around gtk_status_icon_get_storage_type()
|
||||||
|
func (v *StatusIcon) GetStorageType() ImageType {
|
||||||
|
return (ImageType)(C.gtk_status_icon_get_storage_type(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetTooltipText is a wrapper around gtk_status_icon_set_tooltip_text()
|
||||||
|
func (v *StatusIcon) SetTooltipText(text string) {
|
||||||
|
cstr := C.CString(text)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
C.gtk_status_icon_set_tooltip_text(v.native(), (*C.gchar)(cstr))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetTooltipText is a wrapper around gtk_status_icon_get_tooltip_text()
|
||||||
|
func (v *StatusIcon) GetTooltipText() string {
|
||||||
|
cstr := (*C.char)(C.gtk_status_icon_get_tooltip_text(v.native()))
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
return C.GoString(cstr)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetTooltipMarkup is a wrapper around gtk_status_icon_set_tooltip_markup()
|
||||||
|
func (v *StatusIcon) SetTooltipMarkup(markup string) {
|
||||||
|
cstr := (*C.gchar)(C.CString(markup))
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
C.gtk_status_icon_set_tooltip_markup(v.native(), cstr)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetTooltipMarkup is a wrapper around gtk_status_icon_get_tooltip_markup()
|
||||||
|
func (v *StatusIcon) GetTooltipMarkup() string {
|
||||||
|
cstr := (*C.char)(C.gtk_status_icon_get_tooltip_markup(v.native()))
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
return C.GoString(cstr)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetHasTooltip is a wrapper around gtk_status_icon_set_has_tooltip()
|
||||||
|
func (v *StatusIcon) SetHasTooltip(hasTooltip bool) {
|
||||||
|
C.gtk_status_icon_set_has_tooltip(v.native(), gbool(hasTooltip))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetTitle is a wrapper around gtk_status_icon_get_title()
|
||||||
|
func (v *StatusIcon) GetTitle() string {
|
||||||
|
cstr := (*C.char)(C.gtk_status_icon_get_title(v.native()))
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
return C.GoString(cstr)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetName is a wrapper around gtk_status_icon_set_name()
|
||||||
|
func (v *StatusIcon) SetName(name string) {
|
||||||
|
cstr := (*C.gchar)(C.CString(name))
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
C.gtk_status_icon_set_name(v.native(), cstr)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetVisible is a wrapper around gtk_status_icon_set_visible()
|
||||||
|
func (v *StatusIcon) SetVisible(visible bool) {
|
||||||
|
C.gtk_status_icon_set_visible(v.native(), gbool(visible))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetVisible is a wrapper around gtk_status_icon_get_visible()
|
||||||
|
func (v *StatusIcon) GetVisible() bool {
|
||||||
|
return gobool(C.gtk_status_icon_get_visible(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// IsEmbedded is a wrapper around gtk_status_icon_is_embedded()
|
||||||
|
func (v *StatusIcon) IsEmbedded() bool {
|
||||||
|
return gobool(C.gtk_status_icon_is_embedded(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetX11WindowID is a wrapper around gtk_status_icon_get_x11_window_id()
|
||||||
|
func (v *StatusIcon) GetX11WindowID() int {
|
||||||
|
return int(C.gtk_status_icon_get_x11_window_id(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetHasTooltip is a wrapper around gtk_status_icon_get_has_tooltip()
|
||||||
|
func (v *StatusIcon) GetHasTooltip() bool {
|
||||||
|
return gobool(C.gtk_status_icon_get_has_tooltip(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetTitle is a wrapper around gtk_status_icon_set_title()
|
||||||
|
func (v *StatusIcon) SetTitle(title string) {
|
||||||
|
cstr := (*C.gchar)(C.CString(title))
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
C.gtk_status_icon_set_title(v.native(), cstr)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetIconName is a wrapper around gtk_status_icon_get_icon_name()
|
||||||
|
func (v *StatusIcon) GetIconName() string {
|
||||||
|
cstr := (*C.char)(C.gtk_status_icon_get_icon_name(v.native()))
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
return C.GoString(cstr)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetSize is a wrapper around gtk_status_icon_get_size()
|
||||||
|
func (v *StatusIcon) GetSize() int {
|
||||||
|
return int(C.gtk_status_icon_get_size(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GtkMisc
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Misc is a representation of GTK's GtkMisc.
|
||||||
|
type Misc struct {
|
||||||
|
Widget
|
||||||
|
}
|
||||||
|
|
||||||
|
// native returns a pointer to the underlying GtkMisc.
|
||||||
|
func (v *Misc) native() *C.GtkMisc {
|
||||||
|
if v == nil || v.GObject == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
p := unsafe.Pointer(v.GObject)
|
||||||
|
return C.toGtkMisc(p)
|
||||||
|
}
|
||||||
|
|
||||||
|
func marshalMisc(p uintptr) (interface{}, error) {
|
||||||
|
c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
|
||||||
|
obj := wrapObject(unsafe.Pointer(c))
|
||||||
|
return wrapMisc(obj), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func wrapMisc(obj *glib.Object) *Misc {
|
||||||
|
return &Misc{Widget{glib.InitiallyUnowned{obj}}}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* End deprecated since version 3.14
|
||||||
|
*/
|
@ -0,0 +1,30 @@
|
|||||||
|
|
||||||
|
static GtkStatusIcon *
|
||||||
|
toGtkStatusIcon(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_STATUS_ICON(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* deprecated since version 3.14
|
||||||
|
*/
|
||||||
|
static GtkAlignment *
|
||||||
|
toGtkAlignment(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_ALIGNMENT(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkArrow *
|
||||||
|
toGtkArrow(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_ARROW(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkMisc *
|
||||||
|
toGtkMisc(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_MISC(p));
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
* End deprecated since version 3.14
|
||||||
|
*/
|
@ -0,0 +1,31 @@
|
|||||||
|
//+build gtk_3_6 gtk_3_8 gtk_3_10 gtk_3_12 gtk_3_14
|
||||||
|
|
||||||
|
package gtk
|
||||||
|
|
||||||
|
// #cgo pkg-config: gtk+-3.0
|
||||||
|
// #include <gtk/gtk.h>
|
||||||
|
// #include <stdlib.h>
|
||||||
|
import "C"
|
||||||
|
|
||||||
|
import (
|
||||||
|
"unsafe"
|
||||||
|
|
||||||
|
"github.com/gotk3/gotk3/gdk"
|
||||||
|
)
|
||||||
|
|
||||||
|
// OverrideColor is a wrapper around gtk_widget_override_color().
|
||||||
|
func (v *Widget) OverrideColor(state StateFlags, color *gdk.RGBA) {
|
||||||
|
var cColor *C.GdkRGBA
|
||||||
|
if color != nil {
|
||||||
|
cColor = (*C.GdkRGBA)(unsafe.Pointer(color.Native()))
|
||||||
|
}
|
||||||
|
C.gtk_widget_override_color(v.native(), C.GtkStateFlags(state), cColor)
|
||||||
|
}
|
||||||
|
|
||||||
|
// OverrideFont is a wrapper around gtk_widget_override_font().
|
||||||
|
func (v *Widget) OverrideFont(description string) {
|
||||||
|
cstr := C.CString(description)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
c := C.pango_font_description_from_string(cstr)
|
||||||
|
C.gtk_widget_override_font(v.native(), c)
|
||||||
|
}
|
@ -0,0 +1,44 @@
|
|||||||
|
package gtk
|
||||||
|
|
||||||
|
// #cgo pkg-config: gtk+-3.0
|
||||||
|
// #include <gtk/gtk.h>
|
||||||
|
import "C"
|
||||||
|
import (
|
||||||
|
"unsafe"
|
||||||
|
|
||||||
|
"github.com/gotk3/gotk3/glib"
|
||||||
|
)
|
||||||
|
|
||||||
|
//export goBuilderConnect
|
||||||
|
func goBuilderConnect(builder *C.GtkBuilder,
|
||||||
|
object *C.GObject,
|
||||||
|
signal_name *C.gchar,
|
||||||
|
handler_name *C.gchar,
|
||||||
|
connect_object *C.GObject,
|
||||||
|
flags C.GConnectFlags,
|
||||||
|
user_data C.gpointer) {
|
||||||
|
|
||||||
|
builderSignals.Lock()
|
||||||
|
signals, ok := builderSignals.m[builder]
|
||||||
|
builderSignals.Unlock()
|
||||||
|
|
||||||
|
if !ok {
|
||||||
|
panic("no signal mapping defined for this GtkBuilder")
|
||||||
|
}
|
||||||
|
|
||||||
|
h := C.GoString((*C.char)(handler_name))
|
||||||
|
s := C.GoString((*C.char)(signal_name))
|
||||||
|
|
||||||
|
handler, ok := signals[h]
|
||||||
|
if !ok {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if object == nil {
|
||||||
|
panic("unexpected nil object from builder")
|
||||||
|
}
|
||||||
|
|
||||||
|
//TODO: figure out a better way to get a glib.Object from a *C.GObject
|
||||||
|
gobj := glib.Object{glib.ToGObject(unsafe.Pointer(object))}
|
||||||
|
gobj.Connect(s, handler)
|
||||||
|
}
|
@ -0,0 +1,693 @@
|
|||||||
|
// Same copyright and license as the rest of the files in this project
|
||||||
|
// This file contains accelerator related functions and structures
|
||||||
|
|
||||||
|
// +build !gtk_3_6,!gtk_3_8
|
||||||
|
// not use this: go build -tags gtk_3_8'. Otherwise, if no build tags are used, GTK 3.10
|
||||||
|
|
||||||
|
package gtk
|
||||||
|
|
||||||
|
// #cgo pkg-config: gtk+-3.0
|
||||||
|
// #include <stdlib.h>
|
||||||
|
// #include <gtk/gtk.h>
|
||||||
|
// #include "gtk_since_3_10.go.h"
|
||||||
|
import "C"
|
||||||
|
import (
|
||||||
|
"unsafe"
|
||||||
|
|
||||||
|
"github.com/gotk3/gotk3/gdk"
|
||||||
|
"github.com/gotk3/gotk3/glib"
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
tm := []glib.TypeMarshaler{
|
||||||
|
// Enums
|
||||||
|
{glib.Type(C.gtk_revealer_transition_type_get_type()), marshalRevealerTransitionType},
|
||||||
|
{glib.Type(C.gtk_stack_transition_type_get_type()), marshalStackTransitionType},
|
||||||
|
|
||||||
|
// Objects/Interfaces
|
||||||
|
{glib.Type(C.gtk_header_bar_get_type()), marshalHeaderBar},
|
||||||
|
{glib.Type(C.gtk_list_box_get_type()), marshalListBox},
|
||||||
|
{glib.Type(C.gtk_list_box_row_get_type()), marshalListBoxRow},
|
||||||
|
{glib.Type(C.gtk_revealer_get_type()), marshalRevealer},
|
||||||
|
{glib.Type(C.gtk_search_bar_get_type()), marshalSearchBar},
|
||||||
|
{glib.Type(C.gtk_stack_get_type()), marshalStack},
|
||||||
|
{glib.Type(C.gtk_stack_switcher_get_type()), marshalStackSwitcher},
|
||||||
|
}
|
||||||
|
glib.RegisterGValueMarshalers(tm)
|
||||||
|
|
||||||
|
//Contribute to casting
|
||||||
|
for k, v := range map[string]WrapFn{
|
||||||
|
"GtkHeaderBar": wrapHeaderBar,
|
||||||
|
"GtkListBox": wrapListBox,
|
||||||
|
"GtkListBoxRow": wrapListBoxRow,
|
||||||
|
"GtkRevealer": wrapRevealer,
|
||||||
|
"GtkSearchBar": wrapSearchBar,
|
||||||
|
"GtkStack": wrapStack,
|
||||||
|
} {
|
||||||
|
WrapMap[k] = v
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Constants
|
||||||
|
*/
|
||||||
|
|
||||||
|
const (
|
||||||
|
ALIGN_BASELINE Align = C.GTK_ALIGN_BASELINE
|
||||||
|
)
|
||||||
|
|
||||||
|
// RevealerTransitionType is a representation of GTK's GtkRevealerTransitionType.
|
||||||
|
type RevealerTransitionType int
|
||||||
|
|
||||||
|
const (
|
||||||
|
REVEALER_TRANSITION_TYPE_NONE RevealerTransitionType = C.GTK_REVEALER_TRANSITION_TYPE_NONE
|
||||||
|
REVEALER_TRANSITION_TYPE_CROSSFADE RevealerTransitionType = C.GTK_REVEALER_TRANSITION_TYPE_CROSSFADE
|
||||||
|
REVEALER_TRANSITION_TYPE_SLIDE_RIGHT RevealerTransitionType = C.GTK_REVEALER_TRANSITION_TYPE_SLIDE_RIGHT
|
||||||
|
REVEALER_TRANSITION_TYPE_SLIDE_LEFT RevealerTransitionType = C.GTK_REVEALER_TRANSITION_TYPE_SLIDE_LEFT
|
||||||
|
REVEALER_TRANSITION_TYPE_SLIDE_UP RevealerTransitionType = C.GTK_REVEALER_TRANSITION_TYPE_SLIDE_UP
|
||||||
|
REVEALER_TRANSITION_TYPE_SLIDE_DOWN RevealerTransitionType = C.GTK_REVEALER_TRANSITION_TYPE_SLIDE_DOWN
|
||||||
|
)
|
||||||
|
|
||||||
|
func marshalRevealerTransitionType(p uintptr) (interface{}, error) {
|
||||||
|
c := C.g_value_get_enum((*C.GValue)(unsafe.Pointer(p)))
|
||||||
|
return RevealerTransitionType(c), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// StackTransitionType is a representation of GTK's GtkStackTransitionType.
|
||||||
|
type StackTransitionType int
|
||||||
|
|
||||||
|
const (
|
||||||
|
STACK_TRANSITION_TYPE_NONE StackTransitionType = C.GTK_STACK_TRANSITION_TYPE_NONE
|
||||||
|
STACK_TRANSITION_TYPE_CROSSFADE StackTransitionType = C.GTK_STACK_TRANSITION_TYPE_CROSSFADE
|
||||||
|
STACK_TRANSITION_TYPE_SLIDE_RIGHT StackTransitionType = C.GTK_STACK_TRANSITION_TYPE_SLIDE_RIGHT
|
||||||
|
STACK_TRANSITION_TYPE_SLIDE_LEFT StackTransitionType = C.GTK_STACK_TRANSITION_TYPE_SLIDE_LEFT
|
||||||
|
STACK_TRANSITION_TYPE_SLIDE_UP StackTransitionType = C.GTK_STACK_TRANSITION_TYPE_SLIDE_UP
|
||||||
|
STACK_TRANSITION_TYPE_SLIDE_DOWN StackTransitionType = C.GTK_STACK_TRANSITION_TYPE_SLIDE_DOWN
|
||||||
|
STACK_TRANSITION_TYPE_SLIDE_LEFT_RIGHT StackTransitionType = C.GTK_STACK_TRANSITION_TYPE_SLIDE_LEFT_RIGHT
|
||||||
|
STACK_TRANSITION_TYPE_SLIDE_UP_DOWN StackTransitionType = C.GTK_STACK_TRANSITION_TYPE_SLIDE_UP_DOWN
|
||||||
|
)
|
||||||
|
|
||||||
|
func marshalStackTransitionType(p uintptr) (interface{}, error) {
|
||||||
|
c := C.g_value_get_enum((*C.GValue)(unsafe.Pointer(p)))
|
||||||
|
return StackTransitionType(c), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GtkButton
|
||||||
|
*/
|
||||||
|
|
||||||
|
// ButtonNewFromIconName is a wrapper around gtk_button_new_from_icon_name().
|
||||||
|
func ButtonNewFromIconName(iconName string, size IconSize) (*Button, error) {
|
||||||
|
cstr := C.CString(iconName)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
c := C.gtk_button_new_from_icon_name((*C.gchar)(cstr),
|
||||||
|
C.GtkIconSize(size))
|
||||||
|
if c == nil {
|
||||||
|
return nil, nilPtrErr
|
||||||
|
}
|
||||||
|
return wrapButton(wrapObject(unsafe.Pointer(c))), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GtkHeaderBar
|
||||||
|
*/
|
||||||
|
|
||||||
|
type HeaderBar struct {
|
||||||
|
Container
|
||||||
|
}
|
||||||
|
|
||||||
|
// native returns a pointer to the underlying GtkHeaderBar.
|
||||||
|
func (v *HeaderBar) native() *C.GtkHeaderBar {
|
||||||
|
if v == nil || v.GObject == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
p := unsafe.Pointer(v.GObject)
|
||||||
|
return C.toGtkHeaderBar(p)
|
||||||
|
}
|
||||||
|
|
||||||
|
func marshalHeaderBar(p uintptr) (interface{}, error) {
|
||||||
|
c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
|
||||||
|
obj := wrapObject(unsafe.Pointer(c))
|
||||||
|
return wrapHeaderBar(obj), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func wrapHeaderBar(obj *glib.Object) *HeaderBar {
|
||||||
|
return &HeaderBar{Container{Widget{glib.InitiallyUnowned{obj}}}}
|
||||||
|
}
|
||||||
|
|
||||||
|
// HeaderBarNew is a wrapper around gtk_header_bar_new().
|
||||||
|
func HeaderBarNew() (*HeaderBar, error) {
|
||||||
|
c := C.gtk_header_bar_new()
|
||||||
|
if c == nil {
|
||||||
|
return nil, nilPtrErr
|
||||||
|
}
|
||||||
|
return wrapHeaderBar(wrapObject(unsafe.Pointer(c))), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetTitle is a wrapper around gtk_header_bar_set_title().
|
||||||
|
func (v *HeaderBar) SetTitle(title string) {
|
||||||
|
cstr := C.CString(title)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
C.gtk_header_bar_set_title(v.native(), (*C.gchar)(cstr))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetTitle is a wrapper around gtk_header_bar_get_title().
|
||||||
|
func (v *HeaderBar) GetTitle() string {
|
||||||
|
cstr := C.gtk_header_bar_get_title(v.native())
|
||||||
|
return C.GoString((*C.char)(cstr))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetSubtitle is a wrapper around gtk_header_bar_set_subtitle().
|
||||||
|
func (v *HeaderBar) SetSubtitle(subtitle string) {
|
||||||
|
cstr := C.CString(subtitle)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
C.gtk_header_bar_set_subtitle(v.native(), (*C.gchar)(cstr))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetSubtitle is a wrapper around gtk_header_bar_get_subtitle().
|
||||||
|
func (v *HeaderBar) GetSubtitle() string {
|
||||||
|
cstr := C.gtk_header_bar_get_subtitle(v.native())
|
||||||
|
return C.GoString((*C.char)(cstr))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetCustomTitle is a wrapper around gtk_header_bar_set_custom_title().
|
||||||
|
func (v *HeaderBar) SetCustomTitle(titleWidget IWidget) {
|
||||||
|
C.gtk_header_bar_set_custom_title(v.native(), titleWidget.toWidget())
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetCustomTitle is a wrapper around gtk_header_bar_get_custom_title().
|
||||||
|
func (v *HeaderBar) GetCustomTitle() (*Widget, error) {
|
||||||
|
c := C.gtk_header_bar_get_custom_title(v.native())
|
||||||
|
if c == nil {
|
||||||
|
return nil, nilPtrErr
|
||||||
|
}
|
||||||
|
return wrapWidget(wrapObject(unsafe.Pointer(c))), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// PackStart is a wrapper around gtk_header_bar_pack_start().
|
||||||
|
func (v *HeaderBar) PackStart(child IWidget) {
|
||||||
|
C.gtk_header_bar_pack_start(v.native(), child.toWidget())
|
||||||
|
}
|
||||||
|
|
||||||
|
// PackEnd is a wrapper around gtk_header_bar_pack_end().
|
||||||
|
func (v *HeaderBar) PackEnd(child IWidget) {
|
||||||
|
C.gtk_header_bar_pack_end(v.native(), child.toWidget())
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetShowCloseButton is a wrapper around gtk_header_bar_set_show_close_button().
|
||||||
|
func (v *HeaderBar) SetShowCloseButton(setting bool) {
|
||||||
|
C.gtk_header_bar_set_show_close_button(v.native(), gbool(setting))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetShowCloseButton is a wrapper around gtk_header_bar_get_show_close_button().
|
||||||
|
func (v *HeaderBar) GetShowCloseButton() bool {
|
||||||
|
c := C.gtk_header_bar_get_show_close_button(v.native())
|
||||||
|
return gobool(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GtkLabel
|
||||||
|
*/
|
||||||
|
|
||||||
|
// GetLines() is a wrapper around gtk_label_get_lines().
|
||||||
|
func (v *Label) GetLines() int {
|
||||||
|
c := C.gtk_label_get_lines(v.native())
|
||||||
|
return int(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetLines() is a wrapper around gtk_label_set_lines().
|
||||||
|
func (v *Label) SetLines(lines int) {
|
||||||
|
C.gtk_label_set_lines(v.native(), C.gint(lines))
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GtkListBox
|
||||||
|
*/
|
||||||
|
|
||||||
|
// ListBox is a representation of GTK's GtkListBox.
|
||||||
|
type ListBox struct {
|
||||||
|
Container
|
||||||
|
}
|
||||||
|
|
||||||
|
// native returns a pointer to the underlying GtkListBox.
|
||||||
|
func (v *ListBox) native() *C.GtkListBox {
|
||||||
|
if v == nil || v.GObject == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
p := unsafe.Pointer(v.GObject)
|
||||||
|
return C.toGtkListBox(p)
|
||||||
|
}
|
||||||
|
|
||||||
|
func marshalListBox(p uintptr) (interface{}, error) {
|
||||||
|
c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
|
||||||
|
obj := wrapObject(unsafe.Pointer(c))
|
||||||
|
return wrapListBox(obj), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func wrapListBox(obj *glib.Object) *ListBox {
|
||||||
|
return &ListBox{Container{Widget{glib.InitiallyUnowned{obj}}}}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListBoxNew is a wrapper around gtk_list_box_new().
|
||||||
|
func ListBoxNew() (*ListBox, error) {
|
||||||
|
c := C.gtk_list_box_new()
|
||||||
|
if c == nil {
|
||||||
|
return nil, nilPtrErr
|
||||||
|
}
|
||||||
|
return wrapListBox(wrapObject(unsafe.Pointer(c))), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Prepend is a wrapper around gtk_list_box_prepend().
|
||||||
|
func (v *ListBox) Prepend(child IWidget) {
|
||||||
|
C.gtk_list_box_prepend(v.native(), child.toWidget())
|
||||||
|
}
|
||||||
|
|
||||||
|
// Insert is a wrapper around gtk_list_box_insert().
|
||||||
|
func (v *ListBox) Insert(child IWidget, position int) {
|
||||||
|
C.gtk_list_box_insert(v.native(), child.toWidget(), C.gint(position))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SelectRow is a wrapper around gtk_list_box_select_row().
|
||||||
|
func (v *ListBox) SelectRow(row *ListBoxRow) {
|
||||||
|
C.gtk_list_box_select_row(v.native(), row.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetSelectedRow is a wrapper around gtk_list_box_get_selected_row().
|
||||||
|
func (v *ListBox) GetSelectedRow() *ListBoxRow {
|
||||||
|
c := C.gtk_list_box_get_selected_row(v.native())
|
||||||
|
if c == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return wrapListBoxRow(wrapObject(unsafe.Pointer(c)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetSelectionMode is a wrapper around gtk_list_box_set_selection_mode().
|
||||||
|
func (v *ListBox) SetSelectionMode(mode SelectionMode) {
|
||||||
|
C.gtk_list_box_set_selection_mode(v.native(), C.GtkSelectionMode(mode))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetSelectionMode is a wrapper around gtk_list_box_get_selection_mode()
|
||||||
|
func (v *ListBox) GetSelectionMode() SelectionMode {
|
||||||
|
c := C.gtk_list_box_get_selection_mode(v.native())
|
||||||
|
return SelectionMode(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetActivateOnSingleClick is a wrapper around gtk_list_box_set_activate_on_single_click().
|
||||||
|
func (v *ListBox) SetActivateOnSingleClick(single bool) {
|
||||||
|
C.gtk_list_box_set_activate_on_single_click(v.native(), gbool(single))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetActivateOnSingleClick is a wrapper around gtk_list_box_get_activate_on_single_click().
|
||||||
|
func (v *ListBox) GetActivateOnSingleClick() bool {
|
||||||
|
c := C.gtk_list_box_get_activate_on_single_click(v.native())
|
||||||
|
return gobool(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetAdjustment is a wrapper around gtk_list_box_get_adjustment().
|
||||||
|
func (v *ListBox) GetAdjustment() *Adjustment {
|
||||||
|
c := C.gtk_list_box_get_adjustment(v.native())
|
||||||
|
obj := wrapObject(unsafe.Pointer(c))
|
||||||
|
return &Adjustment{glib.InitiallyUnowned{obj}}
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetAdjustment is a wrapper around gtk_list_box_set_adjustment().
|
||||||
|
func (v *ListBox) SetAdjuctment(adjustment *Adjustment) {
|
||||||
|
C.gtk_list_box_set_adjustment(v.native(), adjustment.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetPlaceholder is a wrapper around gtk_list_box_set_placeholder().
|
||||||
|
func (v *ListBox) SetPlaceholder(placeholder IWidget) {
|
||||||
|
C.gtk_list_box_set_placeholder(v.native(), placeholder.toWidget())
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetRowAtIndex is a wrapper around gtk_list_box_get_row_at_index().
|
||||||
|
func (v *ListBox) GetRowAtIndex(index int) *ListBoxRow {
|
||||||
|
c := C.gtk_list_box_get_row_at_index(v.native(), C.gint(index))
|
||||||
|
if c == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return wrapListBoxRow(wrapObject(unsafe.Pointer(c)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetRowAtY is a wrapper around gtk_list_box_get_row_at_y().
|
||||||
|
func (v *ListBox) GetRowAtY(y int) *ListBoxRow {
|
||||||
|
c := C.gtk_list_box_get_row_at_y(v.native(), C.gint(y))
|
||||||
|
if c == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return wrapListBoxRow(wrapObject(unsafe.Pointer(c)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// InvalidateFilter is a wrapper around gtk_list_box_invalidate_filter().
|
||||||
|
func (v *ListBox) InvalidateFilter() {
|
||||||
|
C.gtk_list_box_invalidate_filter(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// InvalidateHeaders is a wrapper around gtk_list_box_invalidate_headers().
|
||||||
|
func (v *ListBox) InvalidateHeaders() {
|
||||||
|
C.gtk_list_box_invalidate_headers(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// InvalidateSort is a wrapper around gtk_list_box_invalidate_sort().
|
||||||
|
func (v *ListBox) InvalidateSort() {
|
||||||
|
C.gtk_list_box_invalidate_sort(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: SetFilterFunc
|
||||||
|
// TODO: SetHeaderFunc
|
||||||
|
// TODO: SetSortFunc
|
||||||
|
|
||||||
|
// DragHighlightRow is a wrapper around gtk_list_box_drag_highlight_row()
|
||||||
|
func (v *ListBox) DragHighlightRow(row *ListBoxRow) {
|
||||||
|
C.gtk_list_box_drag_highlight_row(v.native(), row.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GtkListBoxRow
|
||||||
|
*/
|
||||||
|
|
||||||
|
// ListBoxRow is a representation of GTK's GtkListBoxRow.
|
||||||
|
type ListBoxRow struct {
|
||||||
|
Bin
|
||||||
|
}
|
||||||
|
|
||||||
|
// native returns a pointer to the underlying GtkListBoxRow.
|
||||||
|
func (v *ListBoxRow) native() *C.GtkListBoxRow {
|
||||||
|
if v == nil || v.GObject == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
p := unsafe.Pointer(v.GObject)
|
||||||
|
return C.toGtkListBoxRow(p)
|
||||||
|
}
|
||||||
|
|
||||||
|
func marshalListBoxRow(p uintptr) (interface{}, error) {
|
||||||
|
c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
|
||||||
|
obj := wrapObject(unsafe.Pointer(c))
|
||||||
|
return wrapListBoxRow(obj), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func wrapListBoxRow(obj *glib.Object) *ListBoxRow {
|
||||||
|
return &ListBoxRow{Bin{Container{Widget{glib.InitiallyUnowned{obj}}}}}
|
||||||
|
}
|
||||||
|
|
||||||
|
func ListBoxRowNew() (*ListBoxRow, error) {
|
||||||
|
c := C.gtk_list_box_row_new()
|
||||||
|
if c == nil {
|
||||||
|
return nil, nilPtrErr
|
||||||
|
}
|
||||||
|
return wrapListBoxRow(wrapObject(unsafe.Pointer(c))), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Changed is a wrapper around gtk_list_box_row_changed().
|
||||||
|
func (v *ListBoxRow) Changed() {
|
||||||
|
C.gtk_list_box_row_changed(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetHeader is a wrapper around gtk_list_box_row_get_header().
|
||||||
|
func (v *ListBoxRow) GetHeader() *Widget {
|
||||||
|
c := C.gtk_list_box_row_get_header(v.native())
|
||||||
|
if c == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return wrapWidget(wrapObject(unsafe.Pointer(c)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetHeader is a wrapper around gtk_list_box_row_get_header().
|
||||||
|
func (v *ListBoxRow) SetHeader(header IWidget) {
|
||||||
|
C.gtk_list_box_row_set_header(v.native(), header.toWidget())
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetIndex is a wrapper around gtk_list_box_row_get_index()
|
||||||
|
func (v *ListBoxRow) GetIndex() int {
|
||||||
|
c := C.gtk_list_box_row_get_index(v.native())
|
||||||
|
return int(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GtkRevealer
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Revealer is a representation of GTK's GtkRevealer
|
||||||
|
type Revealer struct {
|
||||||
|
Bin
|
||||||
|
}
|
||||||
|
|
||||||
|
// native returns a pointer to the underlying GtkRevealer.
|
||||||
|
func (v *Revealer) native() *C.GtkRevealer {
|
||||||
|
if v == nil || v.GObject == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
p := unsafe.Pointer(v.GObject)
|
||||||
|
return C.toGtkRevealer(p)
|
||||||
|
}
|
||||||
|
|
||||||
|
func marshalRevealer(p uintptr) (interface{}, error) {
|
||||||
|
c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
|
||||||
|
obj := wrapObject(unsafe.Pointer(c))
|
||||||
|
return wrapRevealer(obj), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func wrapRevealer(obj *glib.Object) *Revealer {
|
||||||
|
return &Revealer{Bin{Container{Widget{glib.InitiallyUnowned{obj}}}}}
|
||||||
|
}
|
||||||
|
|
||||||
|
// RevealerNew is a wrapper around gtk_revealer_new()
|
||||||
|
func RevealerNew() (*Revealer, error) {
|
||||||
|
c := C.gtk_revealer_new()
|
||||||
|
if c == nil {
|
||||||
|
return nil, nilPtrErr
|
||||||
|
}
|
||||||
|
return wrapRevealer(wrapObject(unsafe.Pointer(c))), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetRevealChild is a wrapper around gtk_revealer_get_reveal_child().
|
||||||
|
func (v *Revealer) GetRevealChild() bool {
|
||||||
|
c := C.gtk_revealer_get_reveal_child(v.native())
|
||||||
|
return gobool(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetRevealChild is a wrapper around gtk_revealer_set_reveal_child().
|
||||||
|
func (v *Revealer) SetRevealChild(revealChild bool) {
|
||||||
|
C.gtk_revealer_set_reveal_child(v.native(), gbool(revealChild))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetChildRevealed is a wrapper around gtk_revealer_get_child_revealed().
|
||||||
|
func (v *Revealer) GetChildRevealed() bool {
|
||||||
|
c := C.gtk_revealer_get_child_revealed(v.native())
|
||||||
|
return gobool(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetTransitionDuration is a wrapper around gtk_revealer_get_transition_duration()
|
||||||
|
func (v *Revealer) GetTransitionDuration() uint {
|
||||||
|
c := C.gtk_revealer_get_transition_duration(v.native())
|
||||||
|
return uint(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetTransitionDuration is a wrapper around gtk_revealer_set_transition_duration().
|
||||||
|
func (v *Revealer) SetTransitionDuration(duration uint) {
|
||||||
|
C.gtk_revealer_set_transition_duration(v.native(), C.guint(duration))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetTransitionType is a wrapper around gtk_revealer_get_transition_type()
|
||||||
|
func (v *Revealer) GetTransitionType() RevealerTransitionType {
|
||||||
|
c := C.gtk_revealer_get_transition_type(v.native())
|
||||||
|
return RevealerTransitionType(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetTransitionType is a wrapper around gtk_revealer_set_transition_type()
|
||||||
|
func (v *Revealer) SetTransitionType(transition RevealerTransitionType) {
|
||||||
|
t := C.GtkRevealerTransitionType(transition)
|
||||||
|
C.gtk_revealer_set_transition_type(v.native(), t)
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GtkSearchBar
|
||||||
|
*/
|
||||||
|
|
||||||
|
// SearchBar is a representation of GTK's GtkSearchBar.
|
||||||
|
type SearchBar struct {
|
||||||
|
Bin
|
||||||
|
}
|
||||||
|
|
||||||
|
// native returns a pointer to the underlying GtkSearchBar.
|
||||||
|
func (v *SearchBar) native() *C.GtkSearchBar {
|
||||||
|
if v == nil || v.GObject == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
p := unsafe.Pointer(v.GObject)
|
||||||
|
return C.toGtkSearchBar(p)
|
||||||
|
}
|
||||||
|
|
||||||
|
func marshalSearchBar(p uintptr) (interface{}, error) {
|
||||||
|
c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
|
||||||
|
obj := wrapObject(unsafe.Pointer(c))
|
||||||
|
return wrapSearchBar(obj), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func wrapSearchBar(obj *glib.Object) *SearchBar {
|
||||||
|
return &SearchBar{Bin{Container{Widget{glib.InitiallyUnowned{obj}}}}}
|
||||||
|
}
|
||||||
|
|
||||||
|
// SearchBarNew is a wrapper around gtk_search_bar_new()
|
||||||
|
func SearchBarNew() (*SearchBar, error) {
|
||||||
|
c := C.gtk_search_bar_new()
|
||||||
|
if c == nil {
|
||||||
|
return nil, nilPtrErr
|
||||||
|
}
|
||||||
|
return wrapSearchBar(wrapObject(unsafe.Pointer(c))), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// ConnectEntry is a wrapper around gtk_search_bar_connect_entry().
|
||||||
|
func (v *SearchBar) ConnectEntry(entry IEntry) {
|
||||||
|
C.gtk_search_bar_connect_entry(v.native(), entry.toEntry())
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetSearchMode is a wrapper around gtk_search_bar_get_search_mode().
|
||||||
|
func (v *SearchBar) GetSearchMode() bool {
|
||||||
|
c := C.gtk_search_bar_get_search_mode(v.native())
|
||||||
|
return gobool(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetSearchMode is a wrapper around gtk_search_bar_set_search_mode().
|
||||||
|
func (v *SearchBar) SetSearchMode(searchMode bool) {
|
||||||
|
C.gtk_search_bar_set_search_mode(v.native(), gbool(searchMode))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetShowCloseButton is a wrapper arounb gtk_search_bar_get_show_close_button().
|
||||||
|
func (v *SearchBar) GetShowCloseButton() bool {
|
||||||
|
c := C.gtk_search_bar_get_show_close_button(v.native())
|
||||||
|
return gobool(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetShowCloseButton is a wrapper around gtk_search_bar_set_show_close_button()
|
||||||
|
func (v *SearchBar) SetShowCloseButton(visible bool) {
|
||||||
|
C.gtk_search_bar_set_show_close_button(v.native(), gbool(visible))
|
||||||
|
}
|
||||||
|
|
||||||
|
// HandleEvent is a wrapper around gtk_search_bar_handle_event()
|
||||||
|
func (v *SearchBar) HandleEvent(event *gdk.Event) {
|
||||||
|
e := (*C.GdkEvent)(unsafe.Pointer(event.Native()))
|
||||||
|
C.gtk_search_bar_handle_event(v.native(), e)
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GtkStack
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Stack is a representation of GTK's GtkStack.
|
||||||
|
type Stack struct {
|
||||||
|
Container
|
||||||
|
}
|
||||||
|
|
||||||
|
// native returns a pointer to the underlying GtkStack.
|
||||||
|
func (v *Stack) native() *C.GtkStack {
|
||||||
|
if v == nil || v.GObject == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
p := unsafe.Pointer(v.GObject)
|
||||||
|
return C.toGtkStack(p)
|
||||||
|
}
|
||||||
|
|
||||||
|
func marshalStack(p uintptr) (interface{}, error) {
|
||||||
|
c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
|
||||||
|
obj := wrapObject(unsafe.Pointer(c))
|
||||||
|
return wrapStack(obj), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func wrapStack(obj *glib.Object) *Stack {
|
||||||
|
return &Stack{Container{Widget{glib.InitiallyUnowned{obj}}}}
|
||||||
|
}
|
||||||
|
|
||||||
|
// StackNew is a wrapper around gtk_stack_new().
|
||||||
|
func StackNew() (*Stack, error) {
|
||||||
|
c := C.gtk_stack_new()
|
||||||
|
if c == nil {
|
||||||
|
return nil, nilPtrErr
|
||||||
|
}
|
||||||
|
return wrapStack(wrapObject(unsafe.Pointer(c))), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// AddNamed is a wrapper around gtk_stack_add_named().
|
||||||
|
func (v *Stack) AddNamed(child IWidget, name string) {
|
||||||
|
cstr := C.CString(name)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
C.gtk_stack_add_named(v.native(), child.toWidget(), (*C.gchar)(cstr))
|
||||||
|
}
|
||||||
|
|
||||||
|
// AddTitled is a wrapper around gtk_stack_add_titled().
|
||||||
|
func (v *Stack) AddTitled(child IWidget, name, title string) {
|
||||||
|
cName := C.CString(name)
|
||||||
|
defer C.free(unsafe.Pointer(cName))
|
||||||
|
cTitle := C.CString(title)
|
||||||
|
defer C.free(unsafe.Pointer(cTitle))
|
||||||
|
C.gtk_stack_add_titled(v.native(), child.toWidget(), (*C.gchar)(cName),
|
||||||
|
(*C.gchar)(cTitle))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetVisibleChild is a wrapper around gtk_stack_set_visible_child().
|
||||||
|
func (v *Stack) SetVisibleChild(child IWidget) {
|
||||||
|
C.gtk_stack_set_visible_child(v.native(), child.toWidget())
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetVisibleChild is a wrapper around gtk_stack_get_visible_child().
|
||||||
|
func (v *Stack) GetVisibleChild() *Widget {
|
||||||
|
c := C.gtk_stack_get_visible_child(v.native())
|
||||||
|
if c == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return wrapWidget(wrapObject(unsafe.Pointer(c)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetVisibleChildName is a wrapper around gtk_stack_set_visible_child_name().
|
||||||
|
func (v *Stack) SetVisibleChildName(name string) {
|
||||||
|
cstr := C.CString(name)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
C.gtk_stack_set_visible_child_name(v.native(), (*C.gchar)(cstr))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetVisibleChildName is a wrapper around gtk_stack_get_visible_child_name().
|
||||||
|
func (v *Stack) GetVisibleChildName() string {
|
||||||
|
c := C.gtk_stack_get_visible_child_name(v.native())
|
||||||
|
return C.GoString((*C.char)(c))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetVisibleChildFull is a wrapper around gtk_stack_set_visible_child_full().
|
||||||
|
func (v *Stack) SetVisibleChildFull(name string, transaction StackTransitionType) {
|
||||||
|
cstr := C.CString(name)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
C.gtk_stack_set_visible_child_full(v.native(), (*C.gchar)(cstr),
|
||||||
|
C.GtkStackTransitionType(transaction))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetHomogeneous is a wrapper around gtk_stack_set_homogeneous().
|
||||||
|
func (v *Stack) SetHomogeneous(homogeneous bool) {
|
||||||
|
C.gtk_stack_set_homogeneous(v.native(), gbool(homogeneous))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetHomogeneous is a wrapper around gtk_stack_get_homogeneous().
|
||||||
|
func (v *Stack) GetHomogeneous() bool {
|
||||||
|
c := C.gtk_stack_get_homogeneous(v.native())
|
||||||
|
return gobool(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetTransitionDuration is a wrapper around gtk_stack_set_transition_duration().
|
||||||
|
func (v *Stack) SetTransitionDuration(duration uint) {
|
||||||
|
C.gtk_stack_set_transition_duration(v.native(), C.guint(duration))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetTransitionDuration is a wrapper around gtk_stack_get_transition_duration().
|
||||||
|
func (v *Stack) GetTransitionDuration() uint {
|
||||||
|
c := C.gtk_stack_get_transition_duration(v.native())
|
||||||
|
return uint(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetTransitionType is a wrapper around gtk_stack_set_transition_type().
|
||||||
|
func (v *Stack) SetTransitionType(transition StackTransitionType) {
|
||||||
|
C.gtk_stack_set_transition_type(v.native(), C.GtkStackTransitionType(transition))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetTransitionType is a wrapper around gtk_stack_get_transition_type().
|
||||||
|
func (v *Stack) GetTransitionType() StackTransitionType {
|
||||||
|
c := C.gtk_stack_get_transition_type(v.native())
|
||||||
|
return StackTransitionType(c)
|
||||||
|
}
|
@ -0,0 +1,61 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2013-2014 Conformal Systems <info@conformal.com>
|
||||||
|
*
|
||||||
|
* This file originated from: http://opensource.conformal.com/
|
||||||
|
*
|
||||||
|
* Permission to use, copy, modify, and distribute this software for any
|
||||||
|
* purpose with or without fee is hereby granted, provided that the above
|
||||||
|
* copyright notice and this permission notice appear in all copies.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||||
|
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||||
|
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||||
|
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||||
|
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||||
|
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||||
|
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
static GtkHeaderBar *
|
||||||
|
toGtkHeaderBar(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_HEADER_BAR(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkListBox *
|
||||||
|
toGtkListBox(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_LIST_BOX(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkListBoxRow *
|
||||||
|
toGtkListBoxRow(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_LIST_BOX_ROW(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkRevealer *
|
||||||
|
toGtkRevealer(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_REVEALER(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkSearchBar *
|
||||||
|
toGtkSearchBar(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_SEARCH_BAR(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkStack *
|
||||||
|
toGtkStack(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_STACK(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkStackSwitcher *
|
||||||
|
toGtkStackSwitcher(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_STACK_SWITCHER(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
@ -0,0 +1,37 @@
|
|||||||
|
// Copyright (c) 2013-2014 Conformal Systems <info@conformal.com>
|
||||||
|
//
|
||||||
|
// This file originated from: http://opensource.conformal.com/
|
||||||
|
//
|
||||||
|
// Permission to use, copy, modify, and distribute this software for any
|
||||||
|
// purpose with or without fee is hereby granted, provided that the above
|
||||||
|
// copyright notice and this permission notice appear in all copies.
|
||||||
|
//
|
||||||
|
// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||||
|
// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||||
|
// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||||
|
// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||||
|
// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||||
|
// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||||
|
// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
|
||||||
|
// This file includes wrapers for symbols included since GTK 3.8, and
|
||||||
|
// and should not be included in a build intended to target any older GTK
|
||||||
|
// versions. To target an older build, such as 3.8, use
|
||||||
|
// 'go build -tags gtk_3_8'. Otherwise, if no build tags are used, GTK 3.18
|
||||||
|
// is assumed and this file is built.
|
||||||
|
// +build !gtk_3_6
|
||||||
|
|
||||||
|
package gtk
|
||||||
|
|
||||||
|
// #cgo pkg-config: gtk+-3.0
|
||||||
|
// #include <gtk/gtk.h>
|
||||||
|
import "C"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Constants
|
||||||
|
*/
|
||||||
|
|
||||||
|
const (
|
||||||
|
STATE_FLAG_DIR_LTR StateFlags = C.GTK_STATE_FLAG_DIR_LTR
|
||||||
|
STATE_FLAG_DIR_RTL StateFlags = C.GTK_STATE_FLAG_DIR_RTL
|
||||||
|
)
|
@ -0,0 +1,106 @@
|
|||||||
|
package gtk
|
||||||
|
|
||||||
|
// #include <gtk/gtk.h>
|
||||||
|
// #include "gtk.go.h"
|
||||||
|
import "C"
|
||||||
|
import (
|
||||||
|
"unsafe"
|
||||||
|
|
||||||
|
"github.com/gotk3/gotk3/glib"
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
tm := []glib.TypeMarshaler{
|
||||||
|
{glib.Type(C.gtk_info_bar_get_type()), marshalInfoBar},
|
||||||
|
}
|
||||||
|
|
||||||
|
glib.RegisterGValueMarshalers(tm)
|
||||||
|
|
||||||
|
WrapMap["GtkInfoBar"] = wrapInfoBar
|
||||||
|
}
|
||||||
|
|
||||||
|
type InfoBar struct {
|
||||||
|
Box
|
||||||
|
}
|
||||||
|
|
||||||
|
func (v *InfoBar) native() *C.GtkInfoBar {
|
||||||
|
if v == nil || v.GObject == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
p := unsafe.Pointer(v.GObject)
|
||||||
|
return C.toGtkInfoBar(p)
|
||||||
|
}
|
||||||
|
|
||||||
|
func marshalInfoBar(p uintptr) (interface{}, error) {
|
||||||
|
c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
|
||||||
|
return wrapInfoBar(wrapObject(unsafe.Pointer(c))), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func wrapInfoBar(obj *glib.Object) *InfoBar {
|
||||||
|
return &InfoBar{Box{Container{Widget{glib.InitiallyUnowned{obj}}}}}
|
||||||
|
}
|
||||||
|
|
||||||
|
func InfoBarNew() (*InfoBar, error) {
|
||||||
|
c := C.gtk_info_bar_new()
|
||||||
|
if c == nil {
|
||||||
|
return nil, nilPtrErr
|
||||||
|
}
|
||||||
|
|
||||||
|
return wrapInfoBar(wrapObject(unsafe.Pointer(c))), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (v *InfoBar) AddActionWidget(w IWidget, responseId ResponseType) {
|
||||||
|
C.gtk_info_bar_add_action_widget(v.native(), w.toWidget(), C.gint(responseId))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (v *InfoBar) AddButton(buttonText string, responseId ResponseType) {
|
||||||
|
cstr := C.CString(buttonText)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
|
||||||
|
C.gtk_info_bar_add_button(v.native(), (*C.gchar)(cstr), C.gint(responseId))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (v *InfoBar) SetResponseSensitive(responseId ResponseType, setting bool) {
|
||||||
|
C.gtk_info_bar_set_response_sensitive(v.native(), C.gint(responseId), gbool(setting))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (v *InfoBar) SetDefaultResponse(responseId ResponseType) {
|
||||||
|
C.gtk_info_bar_set_default_response(v.native(), C.gint(responseId))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (v *InfoBar) SetMessageType(messageType MessageType) {
|
||||||
|
C.gtk_info_bar_set_message_type(v.native(), C.GtkMessageType(messageType))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (v *InfoBar) GetMessageType() MessageType {
|
||||||
|
messageType := C.gtk_info_bar_get_message_type(v.native())
|
||||||
|
return MessageType(messageType)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (v *InfoBar) GetActionArea() (*Widget, error) {
|
||||||
|
c := C.gtk_info_bar_get_action_area(v.native())
|
||||||
|
if c == nil {
|
||||||
|
return nil, nilPtrErr
|
||||||
|
}
|
||||||
|
|
||||||
|
return wrapWidget(wrapObject(unsafe.Pointer(c))), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (v *InfoBar) GetContentArea() (*Box, error) {
|
||||||
|
c := C.gtk_info_bar_get_content_area(v.native())
|
||||||
|
if c == nil {
|
||||||
|
return nil, nilPtrErr
|
||||||
|
}
|
||||||
|
|
||||||
|
return wrapBox(wrapObject(unsafe.Pointer(c))), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (v *InfoBar) GetShowCloseButton() bool {
|
||||||
|
b := C.gtk_info_bar_get_show_close_button(v.native())
|
||||||
|
return gobool(b)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (v *InfoBar) SetShowCloseButton(setting bool) {
|
||||||
|
C.gtk_info_bar_set_show_close_button(v.native(), gbool(setting))
|
||||||
|
}
|
@ -0,0 +1,266 @@
|
|||||||
|
// Same copyright and license as the rest of the files in this project
|
||||||
|
// This file contains style related functions and structures
|
||||||
|
|
||||||
|
package gtk
|
||||||
|
|
||||||
|
// #include <gtk/gtk.h>
|
||||||
|
// #include "gtk.go.h"
|
||||||
|
import "C"
|
||||||
|
import (
|
||||||
|
"unsafe"
|
||||||
|
|
||||||
|
"github.com/gotk3/gotk3/pango"
|
||||||
|
|
||||||
|
"github.com/gotk3/gotk3/glib"
|
||||||
|
)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GtkLabel
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Label is a representation of GTK's GtkLabel.
|
||||||
|
type Label struct {
|
||||||
|
Widget
|
||||||
|
}
|
||||||
|
|
||||||
|
// native returns a pointer to the underlying GtkLabel.
|
||||||
|
func (v *Label) native() *C.GtkLabel {
|
||||||
|
if v == nil || v.GObject == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
p := unsafe.Pointer(v.GObject)
|
||||||
|
return C.toGtkLabel(p)
|
||||||
|
}
|
||||||
|
|
||||||
|
func marshalLabel(p uintptr) (interface{}, error) {
|
||||||
|
c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
|
||||||
|
obj := wrapObject(unsafe.Pointer(c))
|
||||||
|
return wrapLabel(obj), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func wrapLabel(obj *glib.Object) *Label {
|
||||||
|
return &Label{Widget{glib.InitiallyUnowned{obj}}}
|
||||||
|
}
|
||||||
|
|
||||||
|
// LabelNew is a wrapper around gtk_label_new().
|
||||||
|
func LabelNew(str string) (*Label, error) {
|
||||||
|
cstr := C.CString(str)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
c := C.gtk_label_new((*C.gchar)(cstr))
|
||||||
|
if c == nil {
|
||||||
|
return nil, nilPtrErr
|
||||||
|
}
|
||||||
|
obj := wrapObject(unsafe.Pointer(c))
|
||||||
|
return wrapLabel(obj), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetText is a wrapper around gtk_label_set_text().
|
||||||
|
func (v *Label) SetText(str string) {
|
||||||
|
cstr := C.CString(str)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
C.gtk_label_set_text(v.native(), (*C.gchar)(cstr))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetMarkup is a wrapper around gtk_label_set_markup().
|
||||||
|
func (v *Label) SetMarkup(str string) {
|
||||||
|
cstr := C.CString(str)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
C.gtk_label_set_markup(v.native(), (*C.gchar)(cstr))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetMarkupWithMnemonic is a wrapper around
|
||||||
|
// gtk_label_set_markup_with_mnemonic().
|
||||||
|
func (v *Label) SetMarkupWithMnemonic(str string) {
|
||||||
|
cstr := C.CString(str)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
C.gtk_label_set_markup_with_mnemonic(v.native(), (*C.gchar)(cstr))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetPattern is a wrapper around gtk_label_set_pattern().
|
||||||
|
func (v *Label) SetPattern(patern string) {
|
||||||
|
cstr := C.CString(patern)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
C.gtk_label_set_pattern(v.native(), (*C.gchar)(cstr))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetJustify is a wrapper around gtk_label_set_justify().
|
||||||
|
func (v *Label) SetJustify(jtype Justification) {
|
||||||
|
C.gtk_label_set_justify(v.native(), C.GtkJustification(jtype))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetEllipsize is a wrapper around gtk_label_set_ellipsize().
|
||||||
|
func (v *Label) SetEllipsize(mode pango.EllipsizeMode) {
|
||||||
|
C.gtk_label_set_ellipsize(v.native(), C.PangoEllipsizeMode(mode))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetWidthChars is a wrapper around gtk_label_get_width_chars().
|
||||||
|
func (v *Label) GetWidthChars() int {
|
||||||
|
c := C.gtk_label_get_width_chars(v.native())
|
||||||
|
return int(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetWidthChars is a wrapper around gtk_label_set_width_chars().
|
||||||
|
func (v *Label) SetWidthChars(nChars int) {
|
||||||
|
C.gtk_label_set_width_chars(v.native(), C.gint(nChars))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetMaxWidthChars is a wrapper around gtk_label_get_max_width_chars().
|
||||||
|
func (v *Label) GetMaxWidthChars() int {
|
||||||
|
c := C.gtk_label_get_max_width_chars(v.native())
|
||||||
|
return int(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetMaxWidthChars is a wrapper around gtk_label_set_max_width_chars().
|
||||||
|
func (v *Label) SetMaxWidthChars(nChars int) {
|
||||||
|
C.gtk_label_set_max_width_chars(v.native(), C.gint(nChars))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetLineWrap is a wrapper around gtk_label_get_line_wrap().
|
||||||
|
func (v *Label) GetLineWrap() bool {
|
||||||
|
c := C.gtk_label_get_line_wrap(v.native())
|
||||||
|
return gobool(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetLineWrap is a wrapper around gtk_label_set_line_wrap().
|
||||||
|
func (v *Label) SetLineWrap(wrap bool) {
|
||||||
|
C.gtk_label_set_line_wrap(v.native(), gbool(wrap))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetLineWrapMode is a wrapper around gtk_label_set_line_wrap_mode().
|
||||||
|
func (v *Label) SetLineWrapMode(wrapMode pango.WrapMode) {
|
||||||
|
C.gtk_label_set_line_wrap_mode(v.native(), C.PangoWrapMode(wrapMode))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetSelectable is a wrapper around gtk_label_get_selectable().
|
||||||
|
func (v *Label) GetSelectable() bool {
|
||||||
|
c := C.gtk_label_get_selectable(v.native())
|
||||||
|
return gobool(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetText is a wrapper around gtk_label_get_text().
|
||||||
|
func (v *Label) GetText() (string, error) {
|
||||||
|
c := C.gtk_label_get_text(v.native())
|
||||||
|
if c == nil {
|
||||||
|
return "", nilPtrErr
|
||||||
|
}
|
||||||
|
return C.GoString((*C.char)(c)), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetJustify is a wrapper around gtk_label_get_justify().
|
||||||
|
func (v *Label) GetJustify() Justification {
|
||||||
|
c := C.gtk_label_get_justify(v.native())
|
||||||
|
return Justification(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetEllipsize is a wrapper around gtk_label_get_ellipsize().
|
||||||
|
func (v *Label) GetEllipsize() pango.EllipsizeMode {
|
||||||
|
c := C.gtk_label_get_ellipsize(v.native())
|
||||||
|
return pango.EllipsizeMode(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetCurrentUri is a wrapper around gtk_label_get_current_uri().
|
||||||
|
func (v *Label) GetCurrentUri() string {
|
||||||
|
c := C.gtk_label_get_current_uri(v.native())
|
||||||
|
return C.GoString((*C.char)(c))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetTrackVisitedLinks is a wrapper around gtk_label_get_track_visited_links().
|
||||||
|
func (v *Label) GetTrackVisitedLinks() bool {
|
||||||
|
c := C.gtk_label_get_track_visited_links(v.native())
|
||||||
|
return gobool(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetTrackVisitedLinks is a wrapper around gtk_label_set_track_visited_links().
|
||||||
|
func (v *Label) SetTrackVisitedLinks(trackLinks bool) {
|
||||||
|
C.gtk_label_set_track_visited_links(v.native(), gbool(trackLinks))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetAngle is a wrapper around gtk_label_get_angle().
|
||||||
|
func (v *Label) GetAngle() float64 {
|
||||||
|
c := C.gtk_label_get_angle(v.native())
|
||||||
|
return float64(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetAngle is a wrapper around gtk_label_set_angle().
|
||||||
|
func (v *Label) SetAngle(angle float64) {
|
||||||
|
C.gtk_label_set_angle(v.native(), C.gdouble(angle))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetSelectionBounds is a wrapper around gtk_label_get_selection_bounds().
|
||||||
|
func (v *Label) GetSelectionBounds() (start, end int, nonEmpty bool) {
|
||||||
|
var cstart, cend C.gint
|
||||||
|
c := C.gtk_label_get_selection_bounds(v.native(), &cstart, &cend)
|
||||||
|
return int(cstart), int(cend), gobool(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetSingleLineMode is a wrapper around gtk_label_get_single_line_mode().
|
||||||
|
func (v *Label) GetSingleLineMode() bool {
|
||||||
|
c := C.gtk_label_get_single_line_mode(v.native())
|
||||||
|
return gobool(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetSingleLineMode is a wrapper around gtk_label_set_single_line_mode().
|
||||||
|
func (v *Label) SetSingleLineMode(mode bool) {
|
||||||
|
C.gtk_label_set_single_line_mode(v.native(), gbool(mode))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetUseMarkup is a wrapper around gtk_label_get_use_markup().
|
||||||
|
func (v *Label) GetUseMarkup() bool {
|
||||||
|
c := C.gtk_label_get_use_markup(v.native())
|
||||||
|
return gobool(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetUseMarkup is a wrapper around gtk_label_set_use_markup().
|
||||||
|
func (v *Label) SetUseMarkup(use bool) {
|
||||||
|
C.gtk_label_set_use_markup(v.native(), gbool(use))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetUseUnderline is a wrapper around gtk_label_get_use_underline().
|
||||||
|
func (v *Label) GetUseUnderline() bool {
|
||||||
|
c := C.gtk_label_get_use_underline(v.native())
|
||||||
|
return gobool(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetUseUnderline is a wrapper around gtk_label_set_use_underline().
|
||||||
|
func (v *Label) SetUseUnderline(use bool) {
|
||||||
|
C.gtk_label_set_use_underline(v.native(), gbool(use))
|
||||||
|
}
|
||||||
|
|
||||||
|
// LabelNewWithMnemonic is a wrapper around gtk_label_new_with_mnemonic().
|
||||||
|
func LabelNewWithMnemonic(str string) (*Label, error) {
|
||||||
|
cstr := C.CString(str)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
c := C.gtk_label_new_with_mnemonic((*C.gchar)(cstr))
|
||||||
|
if c == nil {
|
||||||
|
return nil, nilPtrErr
|
||||||
|
}
|
||||||
|
obj := wrapObject(unsafe.Pointer(c))
|
||||||
|
return wrapLabel(obj), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// SelectRegion is a wrapper around gtk_label_select_region().
|
||||||
|
func (v *Label) SelectRegion(startOffset, endOffset int) {
|
||||||
|
C.gtk_label_select_region(v.native(), C.gint(startOffset),
|
||||||
|
C.gint(endOffset))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetSelectable is a wrapper around gtk_label_set_selectable().
|
||||||
|
func (v *Label) SetSelectable(setting bool) {
|
||||||
|
C.gtk_label_set_selectable(v.native(), gbool(setting))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetLabel is a wrapper around gtk_label_set_label().
|
||||||
|
func (v *Label) SetLabel(str string) {
|
||||||
|
cstr := C.CString(str)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
C.gtk_label_set_label(v.native(), (*C.gchar)(cstr))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetLabel is a wrapper around gtk_label_get_label().
|
||||||
|
func (v *Label) GetLabel() string {
|
||||||
|
c := C.gtk_label_get_label(v.native())
|
||||||
|
if c == nil {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
return C.GoString((*C.char)(c))
|
||||||
|
}
|
@ -0,0 +1,151 @@
|
|||||||
|
package gtk
|
||||||
|
|
||||||
|
// #include <gtk/gtk.h>
|
||||||
|
// #include "gtk.go.h"
|
||||||
|
import "C"
|
||||||
|
import (
|
||||||
|
"unsafe"
|
||||||
|
|
||||||
|
"github.com/gotk3/gotk3/glib"
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
tm := []glib.TypeMarshaler{
|
||||||
|
{glib.Type(C.gtk_level_bar_mode_get_type()), marshalLevelBarMode},
|
||||||
|
|
||||||
|
{glib.Type(C.gtk_level_bar_get_type()), marshalLevelBar},
|
||||||
|
}
|
||||||
|
|
||||||
|
glib.RegisterGValueMarshalers(tm)
|
||||||
|
|
||||||
|
WrapMap["GtkLevelBar"] = wrapLevelBar
|
||||||
|
}
|
||||||
|
|
||||||
|
// LevelBarMode is a representation of GTK's GtkLevelBarMode.
|
||||||
|
type LevelBarMode int
|
||||||
|
|
||||||
|
const (
|
||||||
|
LEVEL_BAR_MODE_CONTINUOUS LevelBarMode = C.GTK_LEVEL_BAR_MODE_CONTINUOUS
|
||||||
|
LEVEL_BAR_MODE_DISCRETE LevelBarMode = C.GTK_LEVEL_BAR_MODE_DISCRETE
|
||||||
|
)
|
||||||
|
|
||||||
|
func marshalLevelBarMode(p uintptr) (interface{}, error) {
|
||||||
|
c := C.g_value_get_enum((*C.GValue)(unsafe.Pointer(p)))
|
||||||
|
return LevelBarMode(c), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GtkLevelBar
|
||||||
|
*/
|
||||||
|
|
||||||
|
type LevelBar struct {
|
||||||
|
Widget
|
||||||
|
}
|
||||||
|
|
||||||
|
// native returns a pointer to the underlying GtkLevelBar.
|
||||||
|
func (v *LevelBar) native() *C.GtkLevelBar {
|
||||||
|
if v == nil || v.GObject == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
p := unsafe.Pointer(v.GObject)
|
||||||
|
return C.toGtkLevelBar(p)
|
||||||
|
}
|
||||||
|
|
||||||
|
func marshalLevelBar(p uintptr) (interface{}, error) {
|
||||||
|
c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
|
||||||
|
obj := wrapObject(unsafe.Pointer(c))
|
||||||
|
return wrapLevelBar(obj), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func wrapLevelBar(obj *glib.Object) *LevelBar {
|
||||||
|
return &LevelBar{Widget{glib.InitiallyUnowned{obj}}}
|
||||||
|
}
|
||||||
|
|
||||||
|
// LevelBarNew() is a wrapper around gtk_level_bar_new().
|
||||||
|
func LevelBarNew() (*LevelBar, error) {
|
||||||
|
c := C.gtk_level_bar_new()
|
||||||
|
if c == nil {
|
||||||
|
return nil, nilPtrErr
|
||||||
|
}
|
||||||
|
return wrapLevelBar(wrapObject(unsafe.Pointer(c))), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// LevelBarNewForInterval() is a wrapper around gtk_level_bar_new_for_interval().
|
||||||
|
func LevelBarNewForInterval(min_value, max_value float64) (*LevelBar, error) {
|
||||||
|
c := C.gtk_level_bar_new_for_interval(C.gdouble(min_value), C.gdouble(max_value))
|
||||||
|
if c == nil {
|
||||||
|
return nil, nilPtrErr
|
||||||
|
}
|
||||||
|
return wrapLevelBar(wrapObject(unsafe.Pointer(c))), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetMode() is a wrapper around gtk_level_bar_set_mode().
|
||||||
|
func (v *LevelBar) SetMode(m LevelBarMode) {
|
||||||
|
C.gtk_level_bar_set_mode(v.native(), C.GtkLevelBarMode(m))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetMode() is a wrapper around gtk_level_bar_get_mode().
|
||||||
|
func (v *LevelBar) GetMode() LevelBarMode {
|
||||||
|
return LevelBarMode(C.gtk_level_bar_get_mode(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetValue() is a wrapper around gtk_level_bar_set_value().
|
||||||
|
func (v *LevelBar) SetValue(value float64) {
|
||||||
|
C.gtk_level_bar_set_value(v.native(), C.gdouble(value))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetValue() is a wrapper around gtk_level_bar_get_value().
|
||||||
|
func (v *LevelBar) GetValue() float64 {
|
||||||
|
c := C.gtk_level_bar_get_value(v.native())
|
||||||
|
return float64(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetMinValue() is a wrapper around gtk_level_bar_set_min_value().
|
||||||
|
func (v *LevelBar) SetMinValue(value float64) {
|
||||||
|
C.gtk_level_bar_set_min_value(v.native(), C.gdouble(value))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetMinValue() is a wrapper around gtk_level_bar_get_min_value().
|
||||||
|
func (v *LevelBar) GetMinValue() float64 {
|
||||||
|
c := C.gtk_level_bar_get_min_value(v.native())
|
||||||
|
return float64(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetMaxValue() is a wrapper around gtk_level_bar_set_max_value().
|
||||||
|
func (v *LevelBar) SetMaxValue(value float64) {
|
||||||
|
C.gtk_level_bar_set_max_value(v.native(), C.gdouble(value))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetMaxValue() is a wrapper around gtk_level_bar_get_max_value().
|
||||||
|
func (v *LevelBar) GetMaxValue() float64 {
|
||||||
|
c := C.gtk_level_bar_get_max_value(v.native())
|
||||||
|
return float64(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
const (
|
||||||
|
LEVEL_BAR_OFFSET_LOW string = C.GTK_LEVEL_BAR_OFFSET_LOW
|
||||||
|
LEVEL_BAR_OFFSET_HIGH string = C.GTK_LEVEL_BAR_OFFSET_HIGH
|
||||||
|
)
|
||||||
|
|
||||||
|
// AddOffsetValue() is a wrapper around gtk_level_bar_add_offset_value().
|
||||||
|
func (v *LevelBar) AddOffsetValue(name string, value float64) {
|
||||||
|
cstr := C.CString(name)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
C.gtk_level_bar_add_offset_value(v.native(), (*C.gchar)(cstr), C.gdouble(value))
|
||||||
|
}
|
||||||
|
|
||||||
|
// RemoveOffsetValue() is a wrapper around gtk_level_bar_remove_offset_value().
|
||||||
|
func (v *LevelBar) RemoveOffsetValue(name string) {
|
||||||
|
cstr := C.CString(name)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
C.gtk_level_bar_remove_offset_value(v.native(), (*C.gchar)(cstr))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetOffsetValue() is a wrapper around gtk_level_bar_get_offset_value().
|
||||||
|
func (v *LevelBar) GetOffsetValue(name string) (float64, bool) {
|
||||||
|
cstr := C.CString(name)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
var value C.gdouble
|
||||||
|
c := C.gtk_level_bar_get_offset_value(v.native(), (*C.gchar)(cstr), &value)
|
||||||
|
return float64(value), gobool(c)
|
||||||
|
}
|
@ -0,0 +1,18 @@
|
|||||||
|
// +build !gtk_3_6
|
||||||
|
|
||||||
|
package gtk
|
||||||
|
|
||||||
|
// #include <gtk/gtk.h>
|
||||||
|
// #include "gtk.go.h"
|
||||||
|
import "C"
|
||||||
|
|
||||||
|
// SetInverted() is a wrapper around gtk_level_bar_set_inverted().
|
||||||
|
func (v *LevelBar) SetInverted(inverted bool) {
|
||||||
|
C.gtk_level_bar_set_inverted(v.native(), gbool(inverted))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetInverted() is a wrapper around gtk_level_bar_get_inverted().
|
||||||
|
func (v *LevelBar) GetInverted() bool {
|
||||||
|
c := C.gtk_level_bar_get_inverted(v.native())
|
||||||
|
return gobool(c)
|
||||||
|
}
|
@ -0,0 +1,96 @@
|
|||||||
|
// Same copyright and license as the rest of the files in this project
|
||||||
|
// This file contains accelerator related functions and structures
|
||||||
|
|
||||||
|
package gtk
|
||||||
|
|
||||||
|
// #include <gtk/gtk.h>
|
||||||
|
// #include "gtk.go.h"
|
||||||
|
import "C"
|
||||||
|
import (
|
||||||
|
"unsafe"
|
||||||
|
|
||||||
|
"github.com/gotk3/gotk3/glib"
|
||||||
|
)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GtkMenuShell
|
||||||
|
*/
|
||||||
|
|
||||||
|
// MenuShell is a representation of GTK's GtkMenuShell.
|
||||||
|
type MenuShell struct {
|
||||||
|
Container
|
||||||
|
}
|
||||||
|
|
||||||
|
// native returns a pointer to the underlying GtkMenuShell.
|
||||||
|
func (v *MenuShell) native() *C.GtkMenuShell {
|
||||||
|
if v == nil || v.GObject == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
p := unsafe.Pointer(v.GObject)
|
||||||
|
return C.toGtkMenuShell(p)
|
||||||
|
}
|
||||||
|
|
||||||
|
func marshalMenuShell(p uintptr) (interface{}, error) {
|
||||||
|
c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
|
||||||
|
obj := wrapObject(unsafe.Pointer(c))
|
||||||
|
return wrapMenuShell(obj), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func wrapMenuShell(obj *glib.Object) *MenuShell {
|
||||||
|
return &MenuShell{Container{Widget{glib.InitiallyUnowned{obj}}}}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Append is a wrapper around gtk_menu_shell_append().
|
||||||
|
func (v *MenuShell) Append(child IMenuItem) {
|
||||||
|
C.gtk_menu_shell_append(v.native(), child.toWidget())
|
||||||
|
}
|
||||||
|
|
||||||
|
// Prepend is a wrapper around gtk_menu_shell_prepend().
|
||||||
|
func (v *MenuShell) Prepend(child IMenuItem) {
|
||||||
|
C.gtk_menu_shell_prepend(v.native(), child.toWidget())
|
||||||
|
}
|
||||||
|
|
||||||
|
// Insert is a wrapper around gtk_menu_shell_insert().
|
||||||
|
func (v *MenuShell) Insert(child IMenuItem, position int) {
|
||||||
|
C.gtk_menu_shell_insert(v.native(), child.toWidget(), C.gint(position))
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deactivate is a wrapper around gtk_menu_shell_deactivate().
|
||||||
|
func (v *MenuShell) Deactivate() {
|
||||||
|
C.gtk_menu_shell_deactivate(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// SelectItem is a wrapper around gtk_menu_shell_select_item().
|
||||||
|
func (v *MenuShell) SelectItem(child IMenuItem) {
|
||||||
|
C.gtk_menu_shell_select_item(v.native(), child.toWidget())
|
||||||
|
}
|
||||||
|
|
||||||
|
// SelectFirst is a wrapper around gtk_menu_shell_select_first().
|
||||||
|
func (v *MenuShell) SelectFirst(searchSensitive bool) {
|
||||||
|
C.gtk_menu_shell_select_first(v.native(), gbool(searchSensitive))
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deselect is a wrapper around gtk_menu_shell_deselect().
|
||||||
|
func (v *MenuShell) Deselect() {
|
||||||
|
C.gtk_menu_shell_deselect(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// ActivateItem is a wrapper around gtk_menu_shell_activate_item().
|
||||||
|
func (v *MenuShell) ActivateItem(child IMenuItem, forceDeactivate bool) {
|
||||||
|
C.gtk_menu_shell_activate_item(v.native(), child.toWidget(), gbool(forceDeactivate))
|
||||||
|
}
|
||||||
|
|
||||||
|
// Cancel is a wrapper around gtk_menu_shell_cancel().
|
||||||
|
func (v *MenuShell) Cancel() {
|
||||||
|
C.gtk_menu_shell_cancel(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetTakeFocus is a wrapper around gtk_menu_shell_set_take_focus().
|
||||||
|
func (v *MenuShell) SetTakeFocus(takeFocus bool) {
|
||||||
|
C.gtk_menu_shell_set_take_focus(v.native(), gbool(takeFocus))
|
||||||
|
}
|
||||||
|
|
||||||
|
// gboolean gtk_menu_shell_get_take_focus ()
|
||||||
|
// GtkWidget * gtk_menu_shell_get_selected_item ()
|
||||||
|
// GtkWidget * gtk_menu_shell_get_parent_shell ()
|
||||||
|
// void gtk_menu_shell_bind_model ()
|
@ -0,0 +1,83 @@
|
|||||||
|
// Copyright (c) 2013-2014 Conformal Systems <info@conformal.com>
|
||||||
|
//
|
||||||
|
// This file originated from: http://opensource.conformal.com/
|
||||||
|
//
|
||||||
|
// Permission to use, copy, modify, and distribute this software for any
|
||||||
|
// purpose with or without fee is hereby granted, provided that the above
|
||||||
|
// copyright notice and this permission notice appear in all copies.
|
||||||
|
//
|
||||||
|
// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||||
|
// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||||
|
// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||||
|
// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||||
|
// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||||
|
// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||||
|
// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
|
||||||
|
// This file includes wrapers for symbols included since GTK 3.12, and
|
||||||
|
// and should not be included in a build intended to target any older GTK
|
||||||
|
// versions. To target an older build, such as 3.10, use
|
||||||
|
// 'go build -tags gtk_3_10'. Otherwise, if no build tags are used, GTK 3.12
|
||||||
|
// is assumed and this file is built.
|
||||||
|
|
||||||
|
// +build !gtk_3_6,!gtk_3_8,!gtk_3_10
|
||||||
|
|
||||||
|
package gtk
|
||||||
|
|
||||||
|
// #cgo pkg-config: gtk+-3.0
|
||||||
|
// #include <gtk/gtk.h>
|
||||||
|
// #include "popover_since_3_12.go.h"
|
||||||
|
import "C"
|
||||||
|
import (
|
||||||
|
"unsafe"
|
||||||
|
|
||||||
|
"github.com/gotk3/gotk3/glib"
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
tm := []glib.TypeMarshaler{
|
||||||
|
{glib.Type(C.gtk_popover_get_type()), marshalPopover},
|
||||||
|
}
|
||||||
|
|
||||||
|
glib.RegisterGValueMarshalers(tm)
|
||||||
|
WrapMap["GtkPopover"] = wrapPopover
|
||||||
|
}
|
||||||
|
|
||||||
|
//TODO(sjon): Implement GtkPopover
|
||||||
|
//GtkPopover
|
||||||
|
type Popover struct {
|
||||||
|
Bin
|
||||||
|
}
|
||||||
|
|
||||||
|
func (v *Popover) native() *C.GtkPopover {
|
||||||
|
if v == nil || v.GObject == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
p := unsafe.Pointer(v.GObject)
|
||||||
|
return C.toGtkPopover(p)
|
||||||
|
}
|
||||||
|
|
||||||
|
func marshalPopover(p uintptr) (interface{}, error) {
|
||||||
|
c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
|
||||||
|
return wrapPopover(wrapObject(unsafe.Pointer(c))), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func wrapPopover(obj *glib.Object) *Popover {
|
||||||
|
return &Popover{Bin{Container{Widget{glib.InitiallyUnowned{obj}}}}}
|
||||||
|
}
|
||||||
|
|
||||||
|
//gtk_popover_new()
|
||||||
|
func PopoverNew(relative IWidget) (*Popover, error) {
|
||||||
|
//Takes relative to widget
|
||||||
|
var c *C.struct__GtkWidget
|
||||||
|
if relative == nil {
|
||||||
|
c = C.gtk_popover_new(nil)
|
||||||
|
} else {
|
||||||
|
c = C.gtk_popover_new(relative.toWidget())
|
||||||
|
}
|
||||||
|
if c == nil {
|
||||||
|
return nil, nilPtrErr
|
||||||
|
}
|
||||||
|
return wrapPopover(wrapObject(unsafe.Pointer(c))), nil
|
||||||
|
}
|
@ -0,0 +1,25 @@
|
|||||||
|
// +build !gtk_3_6,!gtk_3_8,!gtk_3_10,!gtk_3_12
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2013-2014 Conformal Systems <info@conformal.com>
|
||||||
|
*
|
||||||
|
* This file originated from: http://opensource.conformal.com/
|
||||||
|
*
|
||||||
|
* Permission to use, copy, modify, and distribute this software for any
|
||||||
|
* purpose with or without fee is hereby granted, provided that the above
|
||||||
|
* copyright notice and this permission notice appear in all copies.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||||
|
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||||
|
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||||
|
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||||
|
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||||
|
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||||
|
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
static GtkPopover *
|
||||||
|
toGtkPopover(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_POPOVER(p));
|
||||||
|
}
|
@ -0,0 +1,30 @@
|
|||||||
|
// +build !gtk_3_6,!gtk_3_8,!gtk_3_10,!gtk_3_12,!gtk_3_14,!gtk_3_16,gtk_3_18
|
||||||
|
|
||||||
|
// See: https://developer.gnome.org/gtk3/3.18/api-index-3-18.html
|
||||||
|
|
||||||
|
package gtk
|
||||||
|
|
||||||
|
// #cgo pkg-config: gtk+-3.0
|
||||||
|
// #include <gtk/gtk.h>
|
||||||
|
import "C"
|
||||||
|
import (
|
||||||
|
"unsafe"
|
||||||
|
|
||||||
|
"github.com/gotk3/gotk3/glib"
|
||||||
|
)
|
||||||
|
|
||||||
|
//void
|
||||||
|
//gtk_popover_set_default_widget (GtkPopover *popover, GtkWidget *widget);
|
||||||
|
func (p *Popover) SetDefaultWidget(widget IWidget) {
|
||||||
|
C.gtk_popover_set_default_widget(p.native(), widget.toWidget())
|
||||||
|
}
|
||||||
|
|
||||||
|
//GtkWidget *
|
||||||
|
//gtk_popover_get_default_widget (GtkPopover *popover);
|
||||||
|
func (p *Popover) GetDefaultWidget() *Widget {
|
||||||
|
w := C.gtk_popover_get_default_widget(p.native())
|
||||||
|
if w == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return &Widget{glib.InitiallyUnowned{wrapObject(unsafe.Pointer(w))}}
|
||||||
|
}
|
@ -0,0 +1,53 @@
|
|||||||
|
package gtk
|
||||||
|
|
||||||
|
// #include <gtk/gtk.h>
|
||||||
|
// #include "settings.go.h"
|
||||||
|
import "C"
|
||||||
|
import (
|
||||||
|
"unsafe"
|
||||||
|
|
||||||
|
"github.com/gotk3/gotk3/glib"
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
tm := []glib.TypeMarshaler{
|
||||||
|
{glib.Type(C.gtk_settings_get_type()), marshalSettings},
|
||||||
|
}
|
||||||
|
|
||||||
|
glib.RegisterGValueMarshalers(tm)
|
||||||
|
|
||||||
|
WrapMap["GtkSettings"] = wrapSettings
|
||||||
|
}
|
||||||
|
|
||||||
|
//GtkSettings
|
||||||
|
type Settings struct {
|
||||||
|
*glib.Object
|
||||||
|
}
|
||||||
|
|
||||||
|
func (v *Settings) native() *C.GtkSettings {
|
||||||
|
if v == nil || v.GObject == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
p := unsafe.Pointer(v.GObject)
|
||||||
|
return C.toGtkSettings(p)
|
||||||
|
}
|
||||||
|
|
||||||
|
func marshalSettings(p uintptr) (interface{}, error) {
|
||||||
|
c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
|
||||||
|
return wrapSettings(wrapObject(unsafe.Pointer(c))), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func wrapSettings(obj *glib.Object) *Settings {
|
||||||
|
return &Settings{obj}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Get the global non window specific settings
|
||||||
|
func SettingsGetDefault() (*Settings, error) {
|
||||||
|
c := C.gtk_settings_get_default()
|
||||||
|
if c == nil {
|
||||||
|
return nil, nilPtrErr
|
||||||
|
}
|
||||||
|
|
||||||
|
return wrapSettings(wrapObject(unsafe.Pointer(c))), nil
|
||||||
|
}
|
@ -0,0 +1,5 @@
|
|||||||
|
static GtkSettings *
|
||||||
|
toGtkSettings(void *p)
|
||||||
|
{
|
||||||
|
return (GTK_SETTINGS(p));
|
||||||
|
}
|
@ -0,0 +1,27 @@
|
|||||||
|
// Same copyright and license as the rest of the files in this project
|
||||||
|
// This file contains accelerator related functions and structures
|
||||||
|
|
||||||
|
// +build !gtk_3_6,!gtk_3_8,!gtk_3_10
|
||||||
|
// not use this: go build -tags gtk_3_8'. Otherwise, if no build tags are used, GTK 3.10
|
||||||
|
|
||||||
|
package gtk
|
||||||
|
|
||||||
|
// #cgo pkg-config: gtk+-3.0
|
||||||
|
// #include <stdlib.h>
|
||||||
|
// #include <gtk/gtk.h>
|
||||||
|
// #include "gtk_since_3_10.go.h"
|
||||||
|
import "C"
|
||||||
|
import (
|
||||||
|
"unsafe"
|
||||||
|
)
|
||||||
|
|
||||||
|
// GetChildByName is a wrapper around gtk_stack_get_child_by_name().
|
||||||
|
func (v *Stack) GetChildByName(name string) *Widget {
|
||||||
|
cstr := C.CString(name)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
c := C.gtk_stack_get_child_by_name(v.native(), (*C.gchar)(cstr))
|
||||||
|
if c == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return wrapWidget(wrapObject(unsafe.Pointer(c)))
|
||||||
|
}
|
@ -0,0 +1,78 @@
|
|||||||
|
// Same copyright and license as the rest of the files in this project
|
||||||
|
// This file contains accelerator related functions and structures
|
||||||
|
|
||||||
|
// +build !gtk_3_6,!gtk_3_8
|
||||||
|
// not use this: go build -tags gtk_3_8'. Otherwise, if no build tags are used, GTK 3.10
|
||||||
|
|
||||||
|
package gtk
|
||||||
|
|
||||||
|
// #cgo pkg-config: gtk+-3.0
|
||||||
|
// #include <stdlib.h>
|
||||||
|
// #include <gtk/gtk.h>
|
||||||
|
// #include "gtk_since_3_10.go.h"
|
||||||
|
import "C"
|
||||||
|
import (
|
||||||
|
"unsafe"
|
||||||
|
|
||||||
|
"github.com/gotk3/gotk3/glib"
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
//Contribute to casting
|
||||||
|
for k, v := range map[string]WrapFn{
|
||||||
|
"GtkStackSwitcher": wrapStackSwitcher,
|
||||||
|
} {
|
||||||
|
WrapMap[k] = v
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GtkStackSwitcher
|
||||||
|
*/
|
||||||
|
|
||||||
|
// StackSwitcher is a representation of GTK's GtkStackSwitcher
|
||||||
|
type StackSwitcher struct {
|
||||||
|
Box
|
||||||
|
}
|
||||||
|
|
||||||
|
// native returns a pointer to the underlying GtkStackSwitcher.
|
||||||
|
func (v *StackSwitcher) native() *C.GtkStackSwitcher {
|
||||||
|
if v == nil || v.GObject == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
p := unsafe.Pointer(v.GObject)
|
||||||
|
return C.toGtkStackSwitcher(p)
|
||||||
|
}
|
||||||
|
|
||||||
|
func marshalStackSwitcher(p uintptr) (interface{}, error) {
|
||||||
|
c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
|
||||||
|
obj := wrapObject(unsafe.Pointer(c))
|
||||||
|
return wrapStackSwitcher(obj), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func wrapStackSwitcher(obj *glib.Object) *StackSwitcher {
|
||||||
|
return &StackSwitcher{Box{Container{Widget{glib.InitiallyUnowned{obj}}}}}
|
||||||
|
}
|
||||||
|
|
||||||
|
// StackSwitcherNew is a wrapper around gtk_stack_switcher_new().
|
||||||
|
func StackSwitcherNew() (*StackSwitcher, error) {
|
||||||
|
c := C.gtk_stack_switcher_new()
|
||||||
|
if c == nil {
|
||||||
|
return nil, nilPtrErr
|
||||||
|
}
|
||||||
|
return wrapStackSwitcher(wrapObject(unsafe.Pointer(c))), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetStack is a wrapper around gtk_stack_switcher_set_stack().
|
||||||
|
func (v *StackSwitcher) SetStack(stack *Stack) {
|
||||||
|
C.gtk_stack_switcher_set_stack(v.native(), stack.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetStack is a wrapper around gtk_stack_switcher_get_stack().
|
||||||
|
func (v *StackSwitcher) GetStack() *Stack {
|
||||||
|
c := C.gtk_stack_switcher_get_stack(v.native())
|
||||||
|
if c == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return wrapStack(wrapObject(unsafe.Pointer(c)))
|
||||||
|
}
|
@ -0,0 +1,232 @@
|
|||||||
|
// Same copyright and license as the rest of the files in this project
|
||||||
|
// This file contains style related functions and structures
|
||||||
|
|
||||||
|
package gtk
|
||||||
|
|
||||||
|
// #include <gtk/gtk.h>
|
||||||
|
// #include "gtk.go.h"
|
||||||
|
import "C"
|
||||||
|
import (
|
||||||
|
"unsafe"
|
||||||
|
|
||||||
|
"github.com/gotk3/gotk3/gdk"
|
||||||
|
"github.com/gotk3/gotk3/glib"
|
||||||
|
)
|
||||||
|
|
||||||
|
type StyleProviderPriority int
|
||||||
|
|
||||||
|
const (
|
||||||
|
STYLE_PROVIDER_PRIORITY_FALLBACK StyleProviderPriority = C.GTK_STYLE_PROVIDER_PRIORITY_FALLBACK
|
||||||
|
STYLE_PROVIDER_PRIORITY_THEME = C.GTK_STYLE_PROVIDER_PRIORITY_THEME
|
||||||
|
STYLE_PROVIDER_PRIORITY_SETTINGS = C.GTK_STYLE_PROVIDER_PRIORITY_SETTINGS
|
||||||
|
STYLE_PROVIDER_PRIORITY_APPLICATION = C.GTK_STYLE_PROVIDER_PRIORITY_APPLICATION
|
||||||
|
STYLE_PROVIDER_PRIORITY_USER = C.GTK_STYLE_PROVIDER_PRIORITY_USER
|
||||||
|
)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GtkStyleContext
|
||||||
|
*/
|
||||||
|
|
||||||
|
// StyleContext is a representation of GTK's GtkStyleContext.
|
||||||
|
type StyleContext struct {
|
||||||
|
*glib.Object
|
||||||
|
}
|
||||||
|
|
||||||
|
// native returns a pointer to the underlying GtkStyleContext.
|
||||||
|
func (v *StyleContext) native() *C.GtkStyleContext {
|
||||||
|
if v == nil || v.Object == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
p := unsafe.Pointer(v.GObject)
|
||||||
|
return C.toGtkStyleContext(p)
|
||||||
|
}
|
||||||
|
|
||||||
|
func wrapStyleContext(obj *glib.Object) *StyleContext {
|
||||||
|
return &StyleContext{obj}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (v *StyleContext) AddClass(class_name string) {
|
||||||
|
cstr := C.CString(class_name)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
|
||||||
|
C.gtk_style_context_add_class(v.native(), (*C.gchar)(cstr))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (v *StyleContext) RemoveClass(class_name string) {
|
||||||
|
cstr := C.CString(class_name)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
|
||||||
|
C.gtk_style_context_remove_class(v.native(), (*C.gchar)(cstr))
|
||||||
|
}
|
||||||
|
|
||||||
|
func fromNativeStyleContext(c *C.GtkStyleContext) (*StyleContext, error) {
|
||||||
|
if c == nil {
|
||||||
|
return nil, nilPtrErr
|
||||||
|
}
|
||||||
|
|
||||||
|
obj := wrapObject(unsafe.Pointer(c))
|
||||||
|
return wrapStyleContext(obj), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetStyleContext is a wrapper around gtk_widget_get_style_context().
|
||||||
|
func (v *Widget) GetStyleContext() (*StyleContext, error) {
|
||||||
|
return fromNativeStyleContext(C.gtk_widget_get_style_context(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetParent is a wrapper around gtk_style_context_get_parent().
|
||||||
|
func (v *StyleContext) GetParent() (*StyleContext, error) {
|
||||||
|
return fromNativeStyleContext(C.gtk_style_context_get_parent(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetProperty is a wrapper around gtk_style_context_get_property().
|
||||||
|
func (v *StyleContext) GetProperty(property string, state StateFlags) (interface{}, error) {
|
||||||
|
cstr := (*C.gchar)(C.CString(property))
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
|
||||||
|
var gval C.GValue
|
||||||
|
C.gtk_style_context_get_property(v.native(), cstr, C.GtkStateFlags(state), &gval)
|
||||||
|
val := glib.ValueFromNative(unsafe.Pointer(&gval))
|
||||||
|
return val.GoValue()
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetStyleProperty is a wrapper around gtk_style_context_get_style_property().
|
||||||
|
func (v *StyleContext) GetStyleProperty(property string) (interface{}, error) {
|
||||||
|
cstr := (*C.gchar)(C.CString(property))
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
|
||||||
|
var gval C.GValue
|
||||||
|
C.gtk_style_context_get_style_property(v.native(), cstr, &gval)
|
||||||
|
val := glib.ValueFromNative(unsafe.Pointer(&gval))
|
||||||
|
return val.GoValue()
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetScreen is a wrapper around gtk_style_context_get_screen().
|
||||||
|
func (v *StyleContext) GetScreen() (*gdk.Screen, error) {
|
||||||
|
c := C.gtk_style_context_get_screen(v.native())
|
||||||
|
if c == nil {
|
||||||
|
return nil, nilPtrErr
|
||||||
|
}
|
||||||
|
|
||||||
|
d := &gdk.Screen{wrapObject(unsafe.Pointer(c))}
|
||||||
|
return d, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetState is a wrapper around gtk_style_context_get_state().
|
||||||
|
func (v *StyleContext) GetState() StateFlags {
|
||||||
|
return StateFlags(C.gtk_style_context_get_state(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetColor is a wrapper around gtk_style_context_get_color().
|
||||||
|
func (v *StyleContext) GetColor(state StateFlags) *gdk.RGBA {
|
||||||
|
gdkColor := gdk.NewRGBA()
|
||||||
|
C.gtk_style_context_get_color(v.native(), C.GtkStateFlags(state), (*C.GdkRGBA)(unsafe.Pointer(gdkColor.Native())))
|
||||||
|
return gdkColor
|
||||||
|
}
|
||||||
|
|
||||||
|
// LookupColor is a wrapper around gtk_style_context_lookup_color().
|
||||||
|
func (v *StyleContext) LookupColor(colorName string) (*gdk.RGBA, bool) {
|
||||||
|
cstr := (*C.gchar)(C.CString(colorName))
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
gdkColor := gdk.NewRGBA()
|
||||||
|
ret := C.gtk_style_context_lookup_color(v.native(), cstr, (*C.GdkRGBA)(unsafe.Pointer(gdkColor.Native())))
|
||||||
|
return gdkColor, gobool(ret)
|
||||||
|
}
|
||||||
|
|
||||||
|
// StyleContextResetWidgets is a wrapper around gtk_style_context_reset_widgets().
|
||||||
|
func StyleContextResetWidgets(v *gdk.Screen) {
|
||||||
|
C.gtk_style_context_reset_widgets((*C.GdkScreen)(unsafe.Pointer(v.Native())))
|
||||||
|
}
|
||||||
|
|
||||||
|
// Restore is a wrapper around gtk_style_context_restore().
|
||||||
|
func (v *StyleContext) Restore() {
|
||||||
|
C.gtk_style_context_restore(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// Save is a wrapper around gtk_style_context_save().
|
||||||
|
func (v *StyleContext) Save() {
|
||||||
|
C.gtk_style_context_save(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetParent is a wrapper around gtk_style_context_set_parent().
|
||||||
|
func (v *StyleContext) SetParent(p *StyleContext) {
|
||||||
|
C.gtk_style_context_set_parent(v.native(), p.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// HasClass is a wrapper around gtk_style_context_has_class().
|
||||||
|
func (v *StyleContext) HasClass(className string) bool {
|
||||||
|
cstr := C.CString(className)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
|
||||||
|
return gobool(C.gtk_style_context_has_class(v.native(), (*C.gchar)(cstr)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetScreen is a wrapper around gtk_style_context_set_screen().
|
||||||
|
func (v *StyleContext) SetScreen(s *gdk.Screen) {
|
||||||
|
C.gtk_style_context_set_screen(v.native(), (*C.GdkScreen)(unsafe.Pointer(s.Native())))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetState is a wrapper around gtk_style_context_set_state().
|
||||||
|
func (v *StyleContext) SetState(state StateFlags) {
|
||||||
|
C.gtk_style_context_set_state(v.native(), C.GtkStateFlags(state))
|
||||||
|
}
|
||||||
|
|
||||||
|
type IStyleProvider interface {
|
||||||
|
toStyleProvider() *C.GtkStyleProvider
|
||||||
|
}
|
||||||
|
|
||||||
|
// AddProvider is a wrapper around gtk_style_context_add_provider().
|
||||||
|
func (v *StyleContext) AddProvider(provider IStyleProvider, prio uint) {
|
||||||
|
C.gtk_style_context_add_provider(v.native(), provider.toStyleProvider(), C.guint(prio))
|
||||||
|
}
|
||||||
|
|
||||||
|
// AddProviderForScreen is a wrapper around gtk_style_context_add_provider_for_screen().
|
||||||
|
func AddProviderForScreen(s *gdk.Screen, provider IStyleProvider, prio uint) {
|
||||||
|
C.gtk_style_context_add_provider_for_screen((*C.GdkScreen)(unsafe.Pointer(s.Native())), provider.toStyleProvider(), C.guint(prio))
|
||||||
|
}
|
||||||
|
|
||||||
|
// RemoveProvider is a wrapper around gtk_style_context_remove_provider().
|
||||||
|
func (v *StyleContext) RemoveProvider(provider IStyleProvider) {
|
||||||
|
C.gtk_style_context_remove_provider(v.native(), provider.toStyleProvider())
|
||||||
|
}
|
||||||
|
|
||||||
|
// RemoveProviderForScreen is a wrapper around gtk_style_context_remove_provider_for_screen().
|
||||||
|
func RemoveProviderForScreen(s *gdk.Screen, provider IStyleProvider) {
|
||||||
|
C.gtk_style_context_remove_provider_for_screen((*C.GdkScreen)(unsafe.Pointer(s.Native())), provider.toStyleProvider())
|
||||||
|
}
|
||||||
|
|
||||||
|
// GtkStyleContext * gtk_style_context_new ()
|
||||||
|
// void gtk_style_context_get ()
|
||||||
|
// GtkTextDirection gtk_style_context_get_direction ()
|
||||||
|
// GtkJunctionSides gtk_style_context_get_junction_sides ()
|
||||||
|
// const GtkWidgetPath * gtk_style_context_get_path ()
|
||||||
|
// GdkFrameClock * gtk_style_context_get_frame_clock ()
|
||||||
|
// void gtk_style_context_get_style ()
|
||||||
|
// void gtk_style_context_get_style_valist ()
|
||||||
|
// void gtk_style_context_get_valist ()
|
||||||
|
// GtkCssSection * gtk_style_context_get_section ()
|
||||||
|
// void gtk_style_context_get_background_color ()
|
||||||
|
// void gtk_style_context_get_border_color ()
|
||||||
|
// void gtk_style_context_get_border ()
|
||||||
|
// void gtk_style_context_get_padding ()
|
||||||
|
// void gtk_style_context_get_margin ()
|
||||||
|
// const PangoFontDescription * gtk_style_context_get_font ()
|
||||||
|
// void gtk_style_context_invalidate ()
|
||||||
|
// gboolean gtk_style_context_state_is_running ()
|
||||||
|
// GtkIconSet * gtk_style_context_lookup_icon_set ()
|
||||||
|
// void gtk_style_context_cancel_animations ()
|
||||||
|
// void gtk_style_context_scroll_animations ()
|
||||||
|
// void gtk_style_context_notify_state_change ()
|
||||||
|
// void gtk_style_context_pop_animatable_region ()
|
||||||
|
// void gtk_style_context_push_animatable_region ()
|
||||||
|
// void gtk_style_context_set_background ()
|
||||||
|
// void gtk_style_context_set_direction ()
|
||||||
|
// void gtk_style_context_set_junction_sides ()
|
||||||
|
// void gtk_style_context_set_path ()
|
||||||
|
// void gtk_style_context_add_region ()
|
||||||
|
// void gtk_style_context_remove_region ()
|
||||||
|
// gboolean gtk_style_context_has_region ()
|
||||||
|
// GList * gtk_style_context_list_regions ()
|
||||||
|
// void gtk_style_context_set_frame_clock ()
|
||||||
|
// void gtk_style_context_set_scale ()
|
||||||
|
// gint gtk_style_context_get_scale ()
|
||||||
|
// GList * gtk_style_context_list_classes ()
|
@ -0,0 +1,404 @@
|
|||||||
|
// Same copyright and license as the rest of the files in this project
|
||||||
|
|
||||||
|
package gtk
|
||||||
|
|
||||||
|
// #include <gtk/gtk.h>
|
||||||
|
// #include "gtk.go.h"
|
||||||
|
import "C"
|
||||||
|
|
||||||
|
import "unsafe"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GtkTextIter
|
||||||
|
*/
|
||||||
|
|
||||||
|
// TextIter is a representation of GTK's GtkTextIter
|
||||||
|
type TextIter C.GtkTextIter
|
||||||
|
|
||||||
|
// native returns a pointer to the underlying GtkTextIter.
|
||||||
|
func (v *TextIter) native() *C.GtkTextIter {
|
||||||
|
if v == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return (*C.GtkTextIter)(v)
|
||||||
|
}
|
||||||
|
|
||||||
|
func marshalTextIter(p uintptr) (interface{}, error) {
|
||||||
|
c := C.g_value_get_boxed((*C.GValue)(unsafe.Pointer(p)))
|
||||||
|
return (*TextIter)(unsafe.Pointer(c)), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetBuffer is a wrapper around gtk_text_iter_get_buffer().
|
||||||
|
func (v *TextIter) GetBuffer() *TextBuffer {
|
||||||
|
c := C.gtk_text_iter_get_buffer(v.native())
|
||||||
|
if c == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return wrapTextBuffer(wrapObject(unsafe.Pointer(c)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetOffset is a wrapper around gtk_text_iter_get_offset().
|
||||||
|
func (v *TextIter) GetOffset() int {
|
||||||
|
return int(C.gtk_text_iter_get_offset(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetLine is a wrapper around gtk_text_iter_get_line().
|
||||||
|
func (v *TextIter) GetLine() int {
|
||||||
|
return int(C.gtk_text_iter_get_line(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetLineOffset is a wrapper around gtk_text_iter_get_line_offset().
|
||||||
|
func (v *TextIter) GetLineOffset() int {
|
||||||
|
return int(C.gtk_text_iter_get_line_offset(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetLineIndex is a wrapper around gtk_text_iter_get_line_index().
|
||||||
|
func (v *TextIter) GetLineIndex() int {
|
||||||
|
return int(C.gtk_text_iter_get_line_index(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetVisibleLineOffset is a wrapper around gtk_text_iter_get_visible_line_offset().
|
||||||
|
func (v *TextIter) GetVisibleLineOffset() int {
|
||||||
|
return int(C.gtk_text_iter_get_visible_line_offset(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetVisibleLineIndex is a wrapper around gtk_text_iter_get_visible_line_index().
|
||||||
|
func (v *TextIter) GetVisibleLineIndex() int {
|
||||||
|
return int(C.gtk_text_iter_get_visible_line_index(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetChar is a wrapper around gtk_text_iter_get_char().
|
||||||
|
func (v *TextIter) GetChar() rune {
|
||||||
|
return rune(C.gtk_text_iter_get_char(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetSlice is a wrapper around gtk_text_iter_get_slice().
|
||||||
|
func (v *TextIter) GetSlice(end *TextIter) string {
|
||||||
|
c := C.gtk_text_iter_get_slice(v.native(), end.native())
|
||||||
|
return C.GoString((*C.char)(c))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetText is a wrapper around gtk_text_iter_get_text().
|
||||||
|
func (v *TextIter) GetText(end *TextIter) string {
|
||||||
|
c := C.gtk_text_iter_get_text(v.native(), end.native())
|
||||||
|
return C.GoString((*C.char)(c))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetVisibleSlice is a wrapper around gtk_text_iter_get_visible_slice().
|
||||||
|
func (v *TextIter) GetVisibleSlice(end *TextIter) string {
|
||||||
|
c := C.gtk_text_iter_get_visible_slice(v.native(), end.native())
|
||||||
|
return C.GoString((*C.char)(c))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetVisibleText is a wrapper around gtk_text_iter_get_visible_text().
|
||||||
|
func (v *TextIter) GetVisibleText(end *TextIter) string {
|
||||||
|
c := C.gtk_text_iter_get_visible_text(v.native(), end.native())
|
||||||
|
return C.GoString((*C.char)(c))
|
||||||
|
}
|
||||||
|
|
||||||
|
// BeginsTag is a wrapper around gtk_text_iter_begins_tag().
|
||||||
|
func (v *TextIter) BeginsTag(v1 *TextTag) bool {
|
||||||
|
return gobool(C.gtk_text_iter_begins_tag(v.native(), v1.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// EndsTag is a wrapper around gtk_text_iter_ends_tag().
|
||||||
|
func (v *TextIter) EndsTag(v1 *TextTag) bool {
|
||||||
|
return gobool(C.gtk_text_iter_ends_tag(v.native(), v1.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// TogglesTag is a wrapper around gtk_text_iter_toggles_tag().
|
||||||
|
func (v *TextIter) TogglesTag(v1 *TextTag) bool {
|
||||||
|
return gobool(C.gtk_text_iter_toggles_tag(v.native(), v1.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// HasTag is a wrapper around gtk_text_iter_has_tag().
|
||||||
|
func (v *TextIter) HasTag(v1 *TextTag) bool {
|
||||||
|
return gobool(C.gtk_text_iter_has_tag(v.native(), v1.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// Editable is a wrapper around gtk_text_iter_editable().
|
||||||
|
func (v *TextIter) Editable(v1 bool) bool {
|
||||||
|
return gobool(C.gtk_text_iter_editable(v.native(), gbool(v1)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// CanInsert is a wrapper around gtk_text_iter_can_insert().
|
||||||
|
func (v *TextIter) CanInsert(v1 bool) bool {
|
||||||
|
return gobool(C.gtk_text_iter_can_insert(v.native(), gbool(v1)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// StartsWord is a wrapper around gtk_text_iter_starts_word().
|
||||||
|
func (v *TextIter) StartsWord() bool {
|
||||||
|
return gobool(C.gtk_text_iter_starts_word(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// EndsWord is a wrapper around gtk_text_iter_ends_word().
|
||||||
|
func (v *TextIter) EndsWord() bool {
|
||||||
|
return gobool(C.gtk_text_iter_ends_word(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// InsideWord is a wrapper around gtk_text_iter_inside_word().
|
||||||
|
func (v *TextIter) InsideWord() bool {
|
||||||
|
return gobool(C.gtk_text_iter_inside_word(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// StartsLine is a wrapper around gtk_text_iter_starts_line().
|
||||||
|
func (v *TextIter) StartsLine() bool {
|
||||||
|
return gobool(C.gtk_text_iter_starts_line(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// EndsLine is a wrapper around gtk_text_iter_ends_line().
|
||||||
|
func (v *TextIter) EndsLine() bool {
|
||||||
|
return gobool(C.gtk_text_iter_ends_line(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// StartsSentence is a wrapper around gtk_text_iter_starts_sentence().
|
||||||
|
func (v *TextIter) StartsSentence() bool {
|
||||||
|
return gobool(C.gtk_text_iter_starts_sentence(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// EndsSentence is a wrapper around gtk_text_iter_ends_sentence().
|
||||||
|
func (v *TextIter) EndsSentence() bool {
|
||||||
|
return gobool(C.gtk_text_iter_ends_sentence(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// InsideSentence is a wrapper around gtk_text_iter_inside_sentence().
|
||||||
|
func (v *TextIter) InsideSentence() bool {
|
||||||
|
return gobool(C.gtk_text_iter_inside_sentence(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// IsCursorPosition is a wrapper around gtk_text_iter_is_cursor_position().
|
||||||
|
func (v *TextIter) IsCursorPosition() bool {
|
||||||
|
return gobool(C.gtk_text_iter_is_cursor_position(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetCharsInLine is a wrapper around gtk_text_iter_get_chars_in_line().
|
||||||
|
func (v *TextIter) GetCharsInLine() int {
|
||||||
|
return int(C.gtk_text_iter_get_chars_in_line(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetBytesInLine is a wrapper around gtk_text_iter_get_bytes_in_line().
|
||||||
|
func (v *TextIter) GetBytesInLine() int {
|
||||||
|
return int(C.gtk_text_iter_get_bytes_in_line(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// IsEnd is a wrapper around gtk_text_iter_is_end().
|
||||||
|
func (v *TextIter) IsEnd() bool {
|
||||||
|
return gobool(C.gtk_text_iter_is_end(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// IsStart is a wrapper around gtk_text_iter_is_start().
|
||||||
|
func (v *TextIter) IsStart() bool {
|
||||||
|
return gobool(C.gtk_text_iter_is_start(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ForwardChar is a wrapper around gtk_text_iter_forward_char().
|
||||||
|
func (v *TextIter) ForwardChar() bool {
|
||||||
|
return gobool(C.gtk_text_iter_forward_char(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// BackwardChar is a wrapper around gtk_text_iter_backward_char().
|
||||||
|
func (v *TextIter) BackwardChar() bool {
|
||||||
|
return gobool(C.gtk_text_iter_backward_char(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ForwardChars is a wrapper around gtk_text_iter_forward_chars().
|
||||||
|
func (v *TextIter) ForwardChars(v1 int) bool {
|
||||||
|
return gobool(C.gtk_text_iter_forward_chars(v.native(), C.gint(v1)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// BackwardChars is a wrapper around gtk_text_iter_backward_chars().
|
||||||
|
func (v *TextIter) BackwardChars(v1 int) bool {
|
||||||
|
return gobool(C.gtk_text_iter_backward_chars(v.native(), C.gint(v1)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ForwardLine is a wrapper around gtk_text_iter_forward_line().
|
||||||
|
func (v *TextIter) ForwardLine() bool {
|
||||||
|
return gobool(C.gtk_text_iter_forward_line(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// BackwardLine is a wrapper around gtk_text_iter_backward_line().
|
||||||
|
func (v *TextIter) BackwardLine() bool {
|
||||||
|
return gobool(C.gtk_text_iter_backward_line(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ForwardLines is a wrapper around gtk_text_iter_forward_lines().
|
||||||
|
func (v *TextIter) ForwardLines(v1 int) bool {
|
||||||
|
return gobool(C.gtk_text_iter_forward_lines(v.native(), C.gint(v1)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// BackwardLines is a wrapper around gtk_text_iter_backward_lines().
|
||||||
|
func (v *TextIter) BackwardLines(v1 int) bool {
|
||||||
|
return gobool(C.gtk_text_iter_backward_lines(v.native(), C.gint(v1)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ForwardWordEnds is a wrapper around gtk_text_iter_forward_word_ends().
|
||||||
|
func (v *TextIter) ForwardWordEnds(v1 int) bool {
|
||||||
|
return gobool(C.gtk_text_iter_forward_word_ends(v.native(), C.gint(v1)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ForwardWordEnd is a wrapper around gtk_text_iter_forward_word_end().
|
||||||
|
func (v *TextIter) ForwardWordEnd() bool {
|
||||||
|
return gobool(C.gtk_text_iter_forward_word_end(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ForwardCursorPosition is a wrapper around gtk_text_iter_forward_cursor_position().
|
||||||
|
func (v *TextIter) ForwardCursorPosition() bool {
|
||||||
|
return gobool(C.gtk_text_iter_forward_cursor_position(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// BackwardCursorPosition is a wrapper around gtk_text_iter_backward_cursor_position().
|
||||||
|
func (v *TextIter) BackwardCursorPosition() bool {
|
||||||
|
return gobool(C.gtk_text_iter_backward_cursor_position(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ForwardCursorPositions is a wrapper around gtk_text_iter_forward_cursor_positions().
|
||||||
|
func (v *TextIter) ForwardCursorPositions(v1 int) bool {
|
||||||
|
return gobool(C.gtk_text_iter_forward_cursor_positions(v.native(), C.gint(v1)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// BackwardCursorPositions is a wrapper around gtk_text_iter_backward_cursor_positions().
|
||||||
|
func (v *TextIter) BackwardCursorPositions(v1 int) bool {
|
||||||
|
return gobool(C.gtk_text_iter_backward_cursor_positions(v.native(), C.gint(v1)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ForwardSentenceEnds is a wrapper around gtk_text_iter_forward_sentence_ends().
|
||||||
|
func (v *TextIter) ForwardSentenceEnds(v1 int) bool {
|
||||||
|
return gobool(C.gtk_text_iter_forward_sentence_ends(v.native(), C.gint(v1)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ForwardSentenceEnd is a wrapper around gtk_text_iter_forward_sentence_end().
|
||||||
|
func (v *TextIter) ForwardSentenceEnd() bool {
|
||||||
|
return gobool(C.gtk_text_iter_forward_sentence_end(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ForwardVisibleWordEnds is a wrapper around gtk_text_iter_forward_word_ends().
|
||||||
|
func (v *TextIter) ForwardVisibleWordEnds(v1 int) bool {
|
||||||
|
return gobool(C.gtk_text_iter_forward_word_ends(v.native(), C.gint(v1)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ForwardVisibleWordEnd is a wrapper around gtk_text_iter_forward_visible_word_end().
|
||||||
|
func (v *TextIter) ForwardVisibleWordEnd() bool {
|
||||||
|
return gobool(C.gtk_text_iter_forward_visible_word_end(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ForwardVisibleCursorPosition is a wrapper around gtk_text_iter_forward_visible_cursor_position().
|
||||||
|
func (v *TextIter) ForwardVisibleCursorPosition() bool {
|
||||||
|
return gobool(C.gtk_text_iter_forward_visible_cursor_position(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// BackwardVisibleCursorPosition is a wrapper around gtk_text_iter_backward_visible_cursor_position().
|
||||||
|
func (v *TextIter) BackwardVisibleCursorPosition() bool {
|
||||||
|
return gobool(C.gtk_text_iter_backward_visible_cursor_position(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ForwardVisibleCursorPositions is a wrapper around gtk_text_iter_forward_visible_cursor_positions().
|
||||||
|
func (v *TextIter) ForwardVisibleCursorPositions(v1 int) bool {
|
||||||
|
return gobool(C.gtk_text_iter_forward_visible_cursor_positions(v.native(), C.gint(v1)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// BackwardVisibleCursorPositions is a wrapper around gtk_text_iter_backward_visible_cursor_positions().
|
||||||
|
func (v *TextIter) BackwardVisibleCursorPositions(v1 int) bool {
|
||||||
|
return gobool(C.gtk_text_iter_backward_visible_cursor_positions(v.native(), C.gint(v1)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ForwardVisibleLine is a wrapper around gtk_text_iter_forward_visible_line().
|
||||||
|
func (v *TextIter) ForwardVisibleLine() bool {
|
||||||
|
return gobool(C.gtk_text_iter_forward_visible_line(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// BackwardVisibleLine is a wrapper around gtk_text_iter_backward_visible_line().
|
||||||
|
func (v *TextIter) BackwardVisibleLine() bool {
|
||||||
|
return gobool(C.gtk_text_iter_backward_visible_line(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ForwardVisibleLines is a wrapper around gtk_text_iter_forward_visible_lines().
|
||||||
|
func (v *TextIter) ForwardVisibleLines(v1 int) bool {
|
||||||
|
return gobool(C.gtk_text_iter_forward_visible_lines(v.native(), C.gint(v1)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// BackwardVisibleLines is a wrapper around gtk_text_iter_backward_visible_lines().
|
||||||
|
func (v *TextIter) BackwardVisibleLines(v1 int) bool {
|
||||||
|
return gobool(C.gtk_text_iter_backward_visible_lines(v.native(), C.gint(v1)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetOffset is a wrapper around gtk_text_iter_set_offset().
|
||||||
|
func (v *TextIter) SetOffset(v1 int) {
|
||||||
|
C.gtk_text_iter_set_offset(v.native(), C.gint(v1))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetLine is a wrapper around gtk_text_iter_set_line().
|
||||||
|
func (v *TextIter) SetLine(v1 int) {
|
||||||
|
C.gtk_text_iter_set_line(v.native(), C.gint(v1))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetLineOffset is a wrapper around gtk_text_iter_set_line_offset().
|
||||||
|
func (v *TextIter) SetLineOffset(v1 int) {
|
||||||
|
C.gtk_text_iter_set_line_offset(v.native(), C.gint(v1))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetLineIndex is a wrapper around gtk_text_iter_set_line_index().
|
||||||
|
func (v *TextIter) SetLineIndex(v1 int) {
|
||||||
|
C.gtk_text_iter_set_line_index(v.native(), C.gint(v1))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetVisibleLineOffset is a wrapper around gtk_text_iter_set_visible_line_offset().
|
||||||
|
func (v *TextIter) SetVisibleLineOffset(v1 int) {
|
||||||
|
C.gtk_text_iter_set_visible_line_offset(v.native(), C.gint(v1))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetVisibleLineIndex is a wrapper around gtk_text_iter_set_visible_line_index().
|
||||||
|
func (v *TextIter) SetVisibleLineIndex(v1 int) {
|
||||||
|
C.gtk_text_iter_set_visible_line_index(v.native(), C.gint(v1))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ForwardToEnd is a wrapper around gtk_text_iter_forward_to_end().
|
||||||
|
func (v *TextIter) ForwardToEnd() {
|
||||||
|
C.gtk_text_iter_forward_to_end(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// ForwardToLineEnd is a wrapper around gtk_text_iter_forward_to_line_end().
|
||||||
|
func (v *TextIter) ForwardToLineEnd() bool {
|
||||||
|
return gobool(C.gtk_text_iter_forward_to_line_end(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ForwardToTagToggle is a wrapper around gtk_text_iter_forward_to_tag_toggle().
|
||||||
|
func (v *TextIter) ForwardToTagToggle(v1 *TextTag) bool {
|
||||||
|
return gobool(C.gtk_text_iter_forward_to_tag_toggle(v.native(), v1.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// BackwardToTagToggle is a wrapper around gtk_text_iter_backward_to_tag_toggle().
|
||||||
|
func (v *TextIter) BackwardToTagToggle(v1 *TextTag) bool {
|
||||||
|
return gobool(C.gtk_text_iter_backward_to_tag_toggle(v.native(), v1.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// Equal is a wrapper around gtk_text_iter_equal().
|
||||||
|
func (v *TextIter) Equal(v1 *TextIter) bool {
|
||||||
|
return gobool(C.gtk_text_iter_equal(v.native(), v1.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// Compare is a wrapper around gtk_text_iter_compare().
|
||||||
|
func (v *TextIter) Compare(v1 *TextIter) int {
|
||||||
|
return int(C.gtk_text_iter_compare(v.native(), v1.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// InRange is a wrapper around gtk_text_iter_in_range().
|
||||||
|
func (v *TextIter) InRange(v1 *TextIter, v2 *TextIter) bool {
|
||||||
|
return gobool(C.gtk_text_iter_in_range(v.native(), v1.native(), v2.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// void gtk_text_iter_order ()
|
||||||
|
// gboolean (*GtkTextCharPredicate) ()
|
||||||
|
// gboolean gtk_text_iter_forward_find_char ()
|
||||||
|
// gboolean gtk_text_iter_backward_find_char ()
|
||||||
|
// gboolean gtk_text_iter_forward_search ()
|
||||||
|
// gboolean gtk_text_iter_backward_search ()
|
||||||
|
// gboolean gtk_text_iter_get_attributes ()
|
||||||
|
// GtkTextIter * gtk_text_iter_copy ()
|
||||||
|
// void gtk_text_iter_assign ()
|
||||||
|
// void gtk_text_iter_free ()
|
||||||
|
// GdkPixbuf * gtk_text_iter_get_pixbuf ()
|
||||||
|
// GSList * gtk_text_iter_get_marks ()
|
||||||
|
// GSList * gtk_text_iter_get_toggled_tags ()
|
||||||
|
// GtkTextChildAnchor * gtk_text_iter_get_child_anchor ()
|
||||||
|
// GSList * gtk_text_iter_get_tags ()
|
||||||
|
// PangoLanguage * gtk_text_iter_get_language ()
|
@ -0,0 +1,29 @@
|
|||||||
|
// Same copyright and license as the rest of the files in this project
|
||||||
|
|
||||||
|
package gtk
|
||||||
|
|
||||||
|
// #include <gtk/gtk.h>
|
||||||
|
// #include "gtk.go.h"
|
||||||
|
import "C"
|
||||||
|
|
||||||
|
import "unsafe"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GtkTextMark
|
||||||
|
*/
|
||||||
|
|
||||||
|
// TextMark is a representation of GTK's GtkTextMark
|
||||||
|
type TextMark C.GtkTextMark
|
||||||
|
|
||||||
|
// native returns a pointer to the underlying GtkTextMark.
|
||||||
|
func (v *TextMark) native() *C.GtkTextMark {
|
||||||
|
if v == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return (*C.GtkTextMark)(v)
|
||||||
|
}
|
||||||
|
|
||||||
|
func marshalTextMark(p uintptr) (interface{}, error) {
|
||||||
|
c := C.g_value_get_boxed((*C.GValue)(unsafe.Pointer(p)))
|
||||||
|
return (*TextMark)(unsafe.Pointer(c)), nil
|
||||||
|
}
|
@ -0,0 +1,420 @@
|
|||||||
|
// Same copyright and license as the rest of the files in this project
|
||||||
|
|
||||||
|
package gtk
|
||||||
|
|
||||||
|
// #include <gtk/gtk.h>
|
||||||
|
// #include "gtk.go.h"
|
||||||
|
import "C"
|
||||||
|
import (
|
||||||
|
"unsafe"
|
||||||
|
|
||||||
|
"github.com/gotk3/gotk3/gdk"
|
||||||
|
"github.com/gotk3/gotk3/glib"
|
||||||
|
)
|
||||||
|
|
||||||
|
// TextWindowType is a representation of GTK's GtkTextWindowType.
|
||||||
|
type TextWindowType int
|
||||||
|
|
||||||
|
const (
|
||||||
|
TEXT_WINDOW_WIDGET TextWindowType = C.GTK_TEXT_WINDOW_WIDGET
|
||||||
|
TEXT_WINDOW_TEXT TextWindowType = C.GTK_TEXT_WINDOW_TEXT
|
||||||
|
TEXT_WINDOW_LEFT TextWindowType = C.GTK_TEXT_WINDOW_LEFT
|
||||||
|
TEXT_WINDOW_RIGHT TextWindowType = C.GTK_TEXT_WINDOW_RIGHT
|
||||||
|
TEXT_WINDOW_TOP TextWindowType = C.GTK_TEXT_WINDOW_TOP
|
||||||
|
TEXT_WINDOW_BOTTOM TextWindowType = C.GTK_TEXT_WINDOW_BOTTOM
|
||||||
|
)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GtkTextView
|
||||||
|
*/
|
||||||
|
|
||||||
|
// TextView is a representation of GTK's GtkTextView
|
||||||
|
type TextView struct {
|
||||||
|
Container
|
||||||
|
}
|
||||||
|
|
||||||
|
// native returns a pointer to the underlying GtkTextView.
|
||||||
|
func (v *TextView) native() *C.GtkTextView {
|
||||||
|
if v == nil || v.GObject == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
p := unsafe.Pointer(v.GObject)
|
||||||
|
return C.toGtkTextView(p)
|
||||||
|
}
|
||||||
|
|
||||||
|
func marshalTextView(p uintptr) (interface{}, error) {
|
||||||
|
c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
|
||||||
|
obj := wrapObject(unsafe.Pointer(c))
|
||||||
|
return wrapTextView(obj), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func wrapTextView(obj *glib.Object) *TextView {
|
||||||
|
return &TextView{Container{Widget{glib.InitiallyUnowned{obj}}}}
|
||||||
|
}
|
||||||
|
|
||||||
|
// TextViewNew is a wrapper around gtk_text_view_new().
|
||||||
|
func TextViewNew() (*TextView, error) {
|
||||||
|
c := C.gtk_text_view_new()
|
||||||
|
if c == nil {
|
||||||
|
return nil, nilPtrErr
|
||||||
|
}
|
||||||
|
return wrapTextView(wrapObject(unsafe.Pointer(c))), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// TextViewNewWithBuffer is a wrapper around gtk_text_view_new_with_buffer().
|
||||||
|
func TextViewNewWithBuffer(buf *TextBuffer) (*TextView, error) {
|
||||||
|
cbuf := buf.native()
|
||||||
|
c := C.gtk_text_view_new_with_buffer(cbuf)
|
||||||
|
return wrapTextView(wrapObject(unsafe.Pointer(c))), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetBuffer is a wrapper around gtk_text_view_get_buffer().
|
||||||
|
func (v *TextView) GetBuffer() (*TextBuffer, error) {
|
||||||
|
c := C.gtk_text_view_get_buffer(v.native())
|
||||||
|
if c == nil {
|
||||||
|
return nil, nilPtrErr
|
||||||
|
}
|
||||||
|
return wrapTextBuffer(wrapObject(unsafe.Pointer(c))), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetBuffer is a wrapper around gtk_text_view_set_buffer().
|
||||||
|
func (v *TextView) SetBuffer(buffer *TextBuffer) {
|
||||||
|
C.gtk_text_view_set_buffer(v.native(), buffer.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetEditable is a wrapper around gtk_text_view_set_editable().
|
||||||
|
func (v *TextView) SetEditable(editable bool) {
|
||||||
|
C.gtk_text_view_set_editable(v.native(), gbool(editable))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetEditable is a wrapper around gtk_text_view_get_editable().
|
||||||
|
func (v *TextView) GetEditable() bool {
|
||||||
|
c := C.gtk_text_view_get_editable(v.native())
|
||||||
|
return gobool(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetWrapMode is a wrapper around gtk_text_view_set_wrap_mode().
|
||||||
|
func (v *TextView) SetWrapMode(wrapMode WrapMode) {
|
||||||
|
C.gtk_text_view_set_wrap_mode(v.native(), C.GtkWrapMode(wrapMode))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetWrapMode is a wrapper around gtk_text_view_get_wrap_mode().
|
||||||
|
func (v *TextView) GetWrapMode() WrapMode {
|
||||||
|
return WrapMode(C.gtk_text_view_get_wrap_mode(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetCursorVisible is a wrapper around gtk_text_view_set_cursor_visible().
|
||||||
|
func (v *TextView) SetCursorVisible(visible bool) {
|
||||||
|
C.gtk_text_view_set_cursor_visible(v.native(), gbool(visible))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetCursorVisible is a wrapper around gtk_text_view_get_cursor_visible().
|
||||||
|
func (v *TextView) GetCursorVisible() bool {
|
||||||
|
c := C.gtk_text_view_get_cursor_visible(v.native())
|
||||||
|
return gobool(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetOverwrite is a wrapper around gtk_text_view_set_overwrite().
|
||||||
|
func (v *TextView) SetOverwrite(overwrite bool) {
|
||||||
|
C.gtk_text_view_set_overwrite(v.native(), gbool(overwrite))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetOverwrite is a wrapper around gtk_text_view_get_overwrite().
|
||||||
|
func (v *TextView) GetOverwrite() bool {
|
||||||
|
c := C.gtk_text_view_get_overwrite(v.native())
|
||||||
|
return gobool(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetJustification is a wrapper around gtk_text_view_set_justification().
|
||||||
|
func (v *TextView) SetJustification(justify Justification) {
|
||||||
|
C.gtk_text_view_set_justification(v.native(), C.GtkJustification(justify))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetJustification is a wrapper around gtk_text_view_get_justification().
|
||||||
|
func (v *TextView) GetJustification() Justification {
|
||||||
|
c := C.gtk_text_view_get_justification(v.native())
|
||||||
|
return Justification(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetAcceptsTab is a wrapper around gtk_text_view_set_accepts_tab().
|
||||||
|
func (v *TextView) SetAcceptsTab(acceptsTab bool) {
|
||||||
|
C.gtk_text_view_set_accepts_tab(v.native(), gbool(acceptsTab))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetAcceptsTab is a wrapper around gtk_text_view_get_accepts_tab().
|
||||||
|
func (v *TextView) GetAcceptsTab() bool {
|
||||||
|
c := C.gtk_text_view_get_accepts_tab(v.native())
|
||||||
|
return gobool(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetPixelsAboveLines is a wrapper around gtk_text_view_set_pixels_above_lines().
|
||||||
|
func (v *TextView) SetPixelsAboveLines(px int) {
|
||||||
|
C.gtk_text_view_set_pixels_above_lines(v.native(), C.gint(px))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetPixelsAboveLines is a wrapper around gtk_text_view_get_pixels_above_lines().
|
||||||
|
func (v *TextView) GetPixelsAboveLines() int {
|
||||||
|
c := C.gtk_text_view_get_pixels_above_lines(v.native())
|
||||||
|
return int(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetPixelsBelowLines is a wrapper around gtk_text_view_set_pixels_below_lines().
|
||||||
|
func (v *TextView) SetPixelsBelowLines(px int) {
|
||||||
|
C.gtk_text_view_set_pixels_below_lines(v.native(), C.gint(px))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetPixelsBelowLines is a wrapper around gtk_text_view_get_pixels_below_lines().
|
||||||
|
func (v *TextView) GetPixelsBelowLines() int {
|
||||||
|
c := C.gtk_text_view_get_pixels_below_lines(v.native())
|
||||||
|
return int(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetPixelsInsideWrap is a wrapper around gtk_text_view_set_pixels_inside_wrap().
|
||||||
|
func (v *TextView) SetPixelsInsideWrap(px int) {
|
||||||
|
C.gtk_text_view_set_pixels_inside_wrap(v.native(), C.gint(px))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetPixelsInsideWrap is a wrapper around gtk_text_view_get_pixels_inside_wrap().
|
||||||
|
func (v *TextView) GetPixelsInsideWrap() int {
|
||||||
|
c := C.gtk_text_view_get_pixels_inside_wrap(v.native())
|
||||||
|
return int(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetLeftMargin is a wrapper around gtk_text_view_set_left_margin().
|
||||||
|
func (v *TextView) SetLeftMargin(margin int) {
|
||||||
|
C.gtk_text_view_set_left_margin(v.native(), C.gint(margin))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetLeftMargin is a wrapper around gtk_text_view_get_left_margin().
|
||||||
|
func (v *TextView) GetLeftMargin() int {
|
||||||
|
c := C.gtk_text_view_get_left_margin(v.native())
|
||||||
|
return int(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetRightMargin is a wrapper around gtk_text_view_set_right_margin().
|
||||||
|
func (v *TextView) SetRightMargin(margin int) {
|
||||||
|
C.gtk_text_view_set_right_margin(v.native(), C.gint(margin))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetRightMargin is a wrapper around gtk_text_view_get_right_margin().
|
||||||
|
func (v *TextView) GetRightMargin() int {
|
||||||
|
c := C.gtk_text_view_get_right_margin(v.native())
|
||||||
|
return int(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetIndent is a wrapper around gtk_text_view_set_indent().
|
||||||
|
func (v *TextView) SetIndent(indent int) {
|
||||||
|
C.gtk_text_view_set_indent(v.native(), C.gint(indent))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetIndent is a wrapper around gtk_text_view_get_indent().
|
||||||
|
func (v *TextView) GetIndent() int {
|
||||||
|
c := C.gtk_text_view_get_indent(v.native())
|
||||||
|
return int(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetInputHints is a wrapper around gtk_text_view_set_input_hints().
|
||||||
|
func (v *TextView) SetInputHints(hints InputHints) {
|
||||||
|
C.gtk_text_view_set_input_hints(v.native(), C.GtkInputHints(hints))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetInputHints is a wrapper around gtk_text_view_get_input_hints().
|
||||||
|
func (v *TextView) GetInputHints() InputHints {
|
||||||
|
c := C.gtk_text_view_get_input_hints(v.native())
|
||||||
|
return InputHints(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetInputPurpose is a wrapper around gtk_text_view_set_input_purpose().
|
||||||
|
func (v *TextView) SetInputPurpose(purpose InputPurpose) {
|
||||||
|
C.gtk_text_view_set_input_purpose(v.native(),
|
||||||
|
C.GtkInputPurpose(purpose))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetInputPurpose is a wrapper around gtk_text_view_get_input_purpose().
|
||||||
|
func (v *TextView) GetInputPurpose() InputPurpose {
|
||||||
|
c := C.gtk_text_view_get_input_purpose(v.native())
|
||||||
|
return InputPurpose(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ScrollToMark is a wrapper around gtk_text_view_scroll_to_mark().
|
||||||
|
func (v *TextView) ScrollToMark(mark *TextMark, within_margin float64, use_align bool, xalign, yalign float64) {
|
||||||
|
C.gtk_text_view_scroll_to_mark(v.native(), mark.native(), C.gdouble(within_margin), gbool(use_align), C.gdouble(xalign), C.gdouble(yalign))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ScrollToIter is a wrapper around gtk_text_view_scroll_to_iter().
|
||||||
|
func (v *TextView) ScrollToIter(iter *TextIter, within_margin float64, use_align bool, xalign, yalign float64) bool {
|
||||||
|
return gobool(C.gtk_text_view_scroll_to_iter(v.native(), iter.native(), C.gdouble(within_margin), gbool(use_align), C.gdouble(xalign), C.gdouble(yalign)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ScrollMarkOnscreen is a wrapper around gtk_text_view_scroll_mark_onscreen().
|
||||||
|
func (v *TextView) ScrollMarkOnscreen(mark *TextMark) {
|
||||||
|
C.gtk_text_view_scroll_mark_onscreen(v.native(), mark.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// MoveMarkOnscreen is a wrapper around gtk_text_view_move_mark_onscreen().
|
||||||
|
func (v *TextView) MoveMarkOnscreen(mark *TextMark) bool {
|
||||||
|
return gobool(C.gtk_text_view_move_mark_onscreen(v.native(), mark.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// PlaceCursorOnscreen is a wrapper around gtk_text_view_place_cursor_onscreen().
|
||||||
|
func (v *TextView) PlaceCursorOnscreen() bool {
|
||||||
|
return gobool(C.gtk_text_view_place_cursor_onscreen(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetVisibleRect is a wrapper around gtk_text_view_get_visible_rect().
|
||||||
|
func (v *TextView) GetVisibleRect() *gdk.Rectangle {
|
||||||
|
var rect C.GdkRectangle
|
||||||
|
C.gtk_text_view_get_visible_rect(v.native(), &rect)
|
||||||
|
return gdk.WrapRectangle(uintptr(unsafe.Pointer(&rect)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetIterLocation is a wrapper around gtk_text_view_get_iter_location().
|
||||||
|
func (v *TextView) GetIterLocation(iter *TextIter) *gdk.Rectangle {
|
||||||
|
var rect C.GdkRectangle
|
||||||
|
C.gtk_text_view_get_iter_location(v.native(), iter.native(), &rect)
|
||||||
|
return gdk.WrapRectangle(uintptr(unsafe.Pointer(&rect)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetCursorLocations is a wrapper around gtk_text_view_get_cursor_locations().
|
||||||
|
func (v *TextView) GetCursorLocations(iter *TextIter) (strong, weak *gdk.Rectangle) {
|
||||||
|
var strongRect, weakRect C.GdkRectangle
|
||||||
|
C.gtk_text_view_get_cursor_locations(v.native(), iter.native(), &strongRect, &weakRect)
|
||||||
|
return gdk.WrapRectangle(uintptr(unsafe.Pointer(&strongRect))), gdk.WrapRectangle(uintptr(unsafe.Pointer(&weakRect)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetLineAtY is a wrapper around gtk_text_view_get_line_at_y().
|
||||||
|
func (v *TextView) GetLineAtY(y int) (*TextIter, int) {
|
||||||
|
var iter TextIter
|
||||||
|
var line_top C.gint
|
||||||
|
iiter := (C.GtkTextIter)(iter)
|
||||||
|
C.gtk_text_view_get_line_at_y(v.native(), &iiter, C.gint(y), &line_top)
|
||||||
|
return &iter, int(line_top)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetLineYrange is a wrapper around gtk_text_view_get_line_yrange().
|
||||||
|
func (v *TextView) GetLineYrange(iter *TextIter) (y, height int) {
|
||||||
|
var yx, heightx C.gint
|
||||||
|
C.gtk_text_view_get_line_yrange(v.native(), iter.native(), &yx, &heightx)
|
||||||
|
return int(yx), int(heightx)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetIterAtLocation is a wrapper around gtk_text_view_get_iter_at_location().
|
||||||
|
func (v *TextView) GetIterAtLocation(x, y int) *TextIter {
|
||||||
|
var iter TextIter
|
||||||
|
iiter := (C.GtkTextIter)(iter)
|
||||||
|
C.gtk_text_view_get_iter_at_location(v.native(), &iiter, C.gint(x), C.gint(y))
|
||||||
|
return &iter
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetIterAtPosition is a wrapper around gtk_text_view_get_iter_at_position().
|
||||||
|
func (v *TextView) GetIterAtPosition(x, y int) (*TextIter, int) {
|
||||||
|
var iter TextIter
|
||||||
|
var trailing C.gint
|
||||||
|
iiter := (C.GtkTextIter)(iter)
|
||||||
|
C.gtk_text_view_get_iter_at_position(v.native(), &iiter, &trailing, C.gint(x), C.gint(y))
|
||||||
|
return &iter, int(trailing)
|
||||||
|
}
|
||||||
|
|
||||||
|
// BufferToWindowCoords is a wrapper around gtk_text_view_buffer_to_window_coords().
|
||||||
|
func (v *TextView) BufferToWindowCoords(win TextWindowType, buffer_x, buffer_y int) (window_x, window_y int) {
|
||||||
|
var wx, wy C.gint
|
||||||
|
C.gtk_text_view_buffer_to_window_coords(v.native(), C.GtkTextWindowType(win), C.gint(buffer_x), C.gint(buffer_y), &wx, &wy)
|
||||||
|
return int(wx), int(wy)
|
||||||
|
}
|
||||||
|
|
||||||
|
// WindowToBufferCoords is a wrapper around gtk_text_view_window_to_buffer_coords().
|
||||||
|
func (v *TextView) WindowToBufferCoords(win TextWindowType, window_x, window_y int) (buffer_x, buffer_y int) {
|
||||||
|
var bx, by C.gint
|
||||||
|
C.gtk_text_view_window_to_buffer_coords(v.native(), C.GtkTextWindowType(win), C.gint(window_x), C.gint(window_y), &bx, &by)
|
||||||
|
return int(bx), int(by)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetWindow is a wrapper around gtk_text_view_get_window().
|
||||||
|
func (v *TextView) GetWindow(win TextWindowType) *gdk.Window {
|
||||||
|
c := C.gtk_text_view_get_window(v.native(), C.GtkTextWindowType(win))
|
||||||
|
if c == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return &gdk.Window{wrapObject(unsafe.Pointer(c))}
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetWindowType is a wrapper around gtk_text_view_get_window_type().
|
||||||
|
func (v *TextView) GetWindowType(w *gdk.Window) TextWindowType {
|
||||||
|
return TextWindowType(C.gtk_text_view_get_window_type(v.native(), (*C.GdkWindow)(unsafe.Pointer(w.Native()))))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetBorderWindowSize is a wrapper around gtk_text_view_set_border_window_size().
|
||||||
|
func (v *TextView) SetBorderWindowSize(tp TextWindowType, size int) {
|
||||||
|
C.gtk_text_view_set_border_window_size(v.native(), C.GtkTextWindowType(tp), C.gint(size))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetBorderWindowSize is a wrapper around gtk_text_view_get_border_window_size().
|
||||||
|
func (v *TextView) GetBorderWindowSize(tp TextWindowType) int {
|
||||||
|
return int(C.gtk_text_view_get_border_window_size(v.native(), C.GtkTextWindowType(tp)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ForwardDisplayLine is a wrapper around gtk_text_view_forward_display_line().
|
||||||
|
func (v *TextView) ForwardDisplayLine(iter *TextIter) bool {
|
||||||
|
return gobool(C.gtk_text_view_forward_display_line(v.native(), iter.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// BackwardDisplayLine is a wrapper around gtk_text_view_backward_display_line().
|
||||||
|
func (v *TextView) BackwardDisplayLine(iter *TextIter) bool {
|
||||||
|
return gobool(C.gtk_text_view_backward_display_line(v.native(), iter.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ForwardDisplayLineEnd is a wrapper around gtk_text_view_forward_display_line_end().
|
||||||
|
func (v *TextView) ForwardDisplayLineEnd(iter *TextIter) bool {
|
||||||
|
return gobool(C.gtk_text_view_forward_display_line_end(v.native(), iter.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// BackwardDisplayLineStart is a wrapper around gtk_text_view_backward_display_line_start().
|
||||||
|
func (v *TextView) BackwardDisplayLineStart(iter *TextIter) bool {
|
||||||
|
return gobool(C.gtk_text_view_backward_display_line_start(v.native(), iter.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// StartsDisplayLine is a wrapper around gtk_text_view_starts_display_line().
|
||||||
|
func (v *TextView) StartsDisplayLine(iter *TextIter) bool {
|
||||||
|
return gobool(C.gtk_text_view_starts_display_line(v.native(), iter.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// MoveVisually is a wrapper around gtk_text_view_move_visually().
|
||||||
|
func (v *TextView) MoveVisually(iter *TextIter, count int) bool {
|
||||||
|
return gobool(C.gtk_text_view_move_visually(v.native(), iter.native(), C.gint(count)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// AddChildInWindow is a wrapper around gtk_text_view_add_child_in_window().
|
||||||
|
func (v *TextView) AddChildInWindow(child IWidget, tp TextWindowType, xpos, ypos int) {
|
||||||
|
C.gtk_text_view_add_child_in_window(v.native(), child.toWidget(), C.GtkTextWindowType(tp), C.gint(xpos), C.gint(ypos))
|
||||||
|
}
|
||||||
|
|
||||||
|
// MoveChild is a wrapper around gtk_text_view_move_child().
|
||||||
|
func (v *TextView) MoveChild(child IWidget, xpos, ypos int) {
|
||||||
|
C.gtk_text_view_move_child(v.native(), child.toWidget(), C.gint(xpos), C.gint(ypos))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ImContextFilterKeypress is a wrapper around gtk_text_view_im_context_filter_keypress().
|
||||||
|
func (v *TextView) ImContextFilterKeypress(event *gdk.EventKey) bool {
|
||||||
|
return gobool(C.gtk_text_view_im_context_filter_keypress(v.native(), (*C.GdkEventKey)(unsafe.Pointer(event.Native()))))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ResetImContext is a wrapper around gtk_text_view_reset_im_context().
|
||||||
|
func (v *TextView) ResetImContext() {
|
||||||
|
C.gtk_text_view_reset_im_context(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// GtkAdjustment * gtk_text_view_get_hadjustment () -- DEPRECATED
|
||||||
|
// GtkAdjustment * gtk_text_view_get_vadjustment () -- DEPRECATED
|
||||||
|
// void gtk_text_view_add_child_at_anchor ()
|
||||||
|
// GtkTextChildAnchor * gtk_text_child_anchor_new ()
|
||||||
|
// GList * gtk_text_child_anchor_get_widgets ()
|
||||||
|
// gboolean gtk_text_child_anchor_get_deleted ()
|
||||||
|
// void gtk_text_view_set_top_margin () -- SINCE 3.18
|
||||||
|
// gint gtk_text_view_get_top_margin () -- SINCE 3.18
|
||||||
|
// void gtk_text_view_set_bottom_margin () -- SINCE 3.18
|
||||||
|
// gint gtk_text_view_get_bottom_margin () -- SINCE 3.18
|
||||||
|
// void gtk_text_view_set_tabs () -- PangoTabArray
|
||||||
|
// PangoTabArray * gtk_text_view_get_tabs () -- PangoTabArray
|
||||||
|
// GtkTextAttributes * gtk_text_view_get_default_attributes () -- GtkTextAttributes
|
||||||
|
// void gtk_text_view_set_monospace () -- SINCE 3.16
|
||||||
|
// gboolean gtk_text_view_get_monospace () -- SINCE 3.16
|
@ -0,0 +1,445 @@
|
|||||||
|
// Same copyright and license as the rest of the files in this project
|
||||||
|
// This file contains accelerator related functions and structures
|
||||||
|
|
||||||
|
package gtk
|
||||||
|
|
||||||
|
// #include <gtk/gtk.h>
|
||||||
|
// #include "gtk.go.h"
|
||||||
|
import "C"
|
||||||
|
import (
|
||||||
|
"runtime"
|
||||||
|
"unsafe"
|
||||||
|
|
||||||
|
"github.com/gotk3/gotk3/gdk"
|
||||||
|
"github.com/gotk3/gotk3/glib"
|
||||||
|
)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GtkTreeView
|
||||||
|
*/
|
||||||
|
|
||||||
|
// TreeView is a representation of GTK's GtkTreeView.
|
||||||
|
type TreeView struct {
|
||||||
|
Container
|
||||||
|
}
|
||||||
|
|
||||||
|
// native returns a pointer to the underlying GtkTreeView.
|
||||||
|
func (v *TreeView) native() *C.GtkTreeView {
|
||||||
|
if v == nil || v.GObject == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
p := unsafe.Pointer(v.GObject)
|
||||||
|
return C.toGtkTreeView(p)
|
||||||
|
}
|
||||||
|
|
||||||
|
func marshalTreeView(p uintptr) (interface{}, error) {
|
||||||
|
c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
|
||||||
|
obj := wrapObject(unsafe.Pointer(c))
|
||||||
|
return wrapTreeView(obj), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func wrapTreeView(obj *glib.Object) *TreeView {
|
||||||
|
return &TreeView{Container{Widget{glib.InitiallyUnowned{obj}}}}
|
||||||
|
}
|
||||||
|
|
||||||
|
func setupTreeView(c unsafe.Pointer) (*TreeView, error) {
|
||||||
|
if c == nil {
|
||||||
|
return nil, nilPtrErr
|
||||||
|
}
|
||||||
|
|
||||||
|
return wrapTreeView(wrapObject(c)), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// TreeViewNew() is a wrapper around gtk_tree_view_new().
|
||||||
|
func TreeViewNew() (*TreeView, error) {
|
||||||
|
return setupTreeView(unsafe.Pointer(C.gtk_tree_view_new()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// TreeViewNewWithModel() is a wrapper around gtk_tree_view_new_with_model().
|
||||||
|
func TreeViewNewWithModel(model ITreeModel) (*TreeView, error) {
|
||||||
|
return setupTreeView(unsafe.Pointer(C.gtk_tree_view_new_with_model(model.toTreeModel())))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetModel() is a wrapper around gtk_tree_view_get_model().
|
||||||
|
func (v *TreeView) GetModel() (*TreeModel, error) {
|
||||||
|
c := C.gtk_tree_view_get_model(v.native())
|
||||||
|
if c == nil {
|
||||||
|
return nil, nilPtrErr
|
||||||
|
}
|
||||||
|
return wrapTreeModel(wrapObject(unsafe.Pointer(c))), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetModel() is a wrapper around gtk_tree_view_set_model().
|
||||||
|
func (v *TreeView) SetModel(model ITreeModel) {
|
||||||
|
C.gtk_tree_view_set_model(v.native(), model.toTreeModel())
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetSelection() is a wrapper around gtk_tree_view_get_selection().
|
||||||
|
func (v *TreeView) GetSelection() (*TreeSelection, error) {
|
||||||
|
c := C.gtk_tree_view_get_selection(v.native())
|
||||||
|
if c == nil {
|
||||||
|
return nil, nilPtrErr
|
||||||
|
}
|
||||||
|
return wrapTreeSelection(wrapObject(unsafe.Pointer(c))), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// AppendColumn() is a wrapper around gtk_tree_view_append_column().
|
||||||
|
func (v *TreeView) AppendColumn(column *TreeViewColumn) int {
|
||||||
|
c := C.gtk_tree_view_append_column(v.native(), column.native())
|
||||||
|
return int(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetPathAtPos() is a wrapper around gtk_tree_view_get_path_at_pos().
|
||||||
|
func (v *TreeView) GetPathAtPos(x, y int, path *TreePath, column *TreeViewColumn, cellX, cellY *int) bool {
|
||||||
|
var ctp **C.GtkTreePath
|
||||||
|
if path != nil {
|
||||||
|
ctp = (**C.GtkTreePath)(unsafe.Pointer(&path.GtkTreePath))
|
||||||
|
} else {
|
||||||
|
ctp = nil
|
||||||
|
}
|
||||||
|
|
||||||
|
var pctvcol **C.GtkTreeViewColumn
|
||||||
|
if column != nil {
|
||||||
|
ctvcol := column.native()
|
||||||
|
pctvcol = &ctvcol
|
||||||
|
} else {
|
||||||
|
pctvcol = nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0 != C.gtk_tree_view_get_path_at_pos(
|
||||||
|
v.native(),
|
||||||
|
(C.gint)(x),
|
||||||
|
(C.gint)(y),
|
||||||
|
ctp,
|
||||||
|
pctvcol,
|
||||||
|
(*C.gint)(unsafe.Pointer(cellX)),
|
||||||
|
(*C.gint)(unsafe.Pointer(cellY)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetLevelIndentation is a wrapper around gtk_tree_view_get_level_indentation().
|
||||||
|
func (v *TreeView) GetLevelIndentation() int {
|
||||||
|
return int(C.gtk_tree_view_get_level_indentation(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetShowExpanders is a wrapper around gtk_tree_view_get_show_expanders().
|
||||||
|
func (v *TreeView) GetShowExpanders() bool {
|
||||||
|
return gobool(C.gtk_tree_view_get_show_expanders(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetLevelIndentation is a wrapper around gtk_tree_view_set_level_indentation().
|
||||||
|
func (v *TreeView) SetLevelIndentation(indent int) {
|
||||||
|
C.gtk_tree_view_set_level_indentation(v.native(), C.gint(indent))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetShowExpanders is a wrapper around gtk_tree_view_set_show_expanders().
|
||||||
|
func (v *TreeView) SetShowExpanders(show bool) {
|
||||||
|
C.gtk_tree_view_set_show_expanders(v.native(), gbool(show))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetHeadersVisible is a wrapper around gtk_tree_view_get_headers_visible().
|
||||||
|
func (v *TreeView) GetHeadersVisible() bool {
|
||||||
|
return gobool(C.gtk_tree_view_get_headers_visible(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetHeadersVisible is a wrapper around gtk_tree_view_set_headers_visible().
|
||||||
|
func (v *TreeView) SetHeadersVisible(show bool) {
|
||||||
|
C.gtk_tree_view_set_headers_visible(v.native(), gbool(show))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ColumnsAutosize is a wrapper around gtk_tree_view_columns_autosize().
|
||||||
|
func (v *TreeView) ColumnsAutosize() {
|
||||||
|
C.gtk_tree_view_columns_autosize(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetHeadersClickable is a wrapper around gtk_tree_view_get_headers_clickable().
|
||||||
|
func (v *TreeView) GetHeadersClickable() bool {
|
||||||
|
return gobool(C.gtk_tree_view_get_headers_clickable(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetHeadersClickable is a wrapper around gtk_tree_view_set_headers_clickable().
|
||||||
|
func (v *TreeView) SetHeadersClickable(show bool) {
|
||||||
|
C.gtk_tree_view_set_headers_clickable(v.native(), gbool(show))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetActivateOnSingleClick is a wrapper around gtk_tree_view_get_activate_on_single_click().
|
||||||
|
func (v *TreeView) GetActivateOnSingleClick() bool {
|
||||||
|
return gobool(C.gtk_tree_view_get_activate_on_single_click(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetActivateOnSingleClick is a wrapper around gtk_tree_view_set_activate_on_single_click().
|
||||||
|
func (v *TreeView) SetActivateOnSingleClick(show bool) {
|
||||||
|
C.gtk_tree_view_set_activate_on_single_click(v.native(), gbool(show))
|
||||||
|
}
|
||||||
|
|
||||||
|
// RemoveColumn() is a wrapper around gtk_tree_view_remove_column().
|
||||||
|
func (v *TreeView) RemoveColumn(column *TreeViewColumn) int {
|
||||||
|
return int(C.gtk_tree_view_remove_column(v.native(), column.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// InsertColumn() is a wrapper around gtk_tree_view_insert_column().
|
||||||
|
func (v *TreeView) InsertColumn(column *TreeViewColumn, pos int) int {
|
||||||
|
return int(C.gtk_tree_view_insert_column(v.native(), column.native(), C.gint(pos)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetNColumns() is a wrapper around gtk_tree_view_get_n_columns().
|
||||||
|
func (v *TreeView) GetNColumns() uint {
|
||||||
|
return uint(C.gtk_tree_view_get_n_columns(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetColumn() is a wrapper around gtk_tree_view_get_column().
|
||||||
|
func (v *TreeView) GetColumn(n int) *TreeViewColumn {
|
||||||
|
c := C.gtk_tree_view_get_column(v.native(), C.gint(n))
|
||||||
|
if c == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return wrapTreeViewColumn(wrapObject(unsafe.Pointer(c)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// MoveColumnAfter() is a wrapper around gtk_tree_view_move_column_after().
|
||||||
|
func (v *TreeView) MoveColumnAfter(column *TreeViewColumn, baseColumn *TreeViewColumn) {
|
||||||
|
C.gtk_tree_view_move_column_after(v.native(), column.native(), baseColumn.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetExpanderColumn() is a wrapper around gtk_tree_view_set_expander_column().
|
||||||
|
func (v *TreeView) SetExpanderColumn(column *TreeViewColumn) {
|
||||||
|
C.gtk_tree_view_set_expander_column(v.native(), column.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetExpanderColumn() is a wrapper around gtk_tree_view_get_expander_column().
|
||||||
|
func (v *TreeView) GetExpanderColumn() *TreeViewColumn {
|
||||||
|
c := C.gtk_tree_view_get_expander_column(v.native())
|
||||||
|
if c == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return wrapTreeViewColumn(wrapObject(unsafe.Pointer(c)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ScrollToPoint() is a wrapper around gtk_tree_view_scroll_to_point().
|
||||||
|
func (v *TreeView) ScrollToPoint(treeX, treeY int) {
|
||||||
|
C.gtk_tree_view_scroll_to_point(v.native(), C.gint(treeX), C.gint(treeY))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetCursor() is a wrapper around gtk_tree_view_set_cursor().
|
||||||
|
func (v *TreeView) SetCursor(path *TreePath, focusColumn *TreeViewColumn, startEditing bool) {
|
||||||
|
C.gtk_tree_view_set_cursor(v.native(), path.native(), focusColumn.native(), gbool(startEditing))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetCursorOnCell() is a wrapper around gtk_tree_view_set_cursor_on_cell().
|
||||||
|
func (v *TreeView) SetCursorOnCell(path *TreePath, focusColumn *TreeViewColumn, focusCell *CellRenderer, startEditing bool) {
|
||||||
|
C.gtk_tree_view_set_cursor_on_cell(v.native(), path.native(), focusColumn.native(), focusCell.native(), gbool(startEditing))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetCursor() is a wrapper around gtk_tree_view_get_cursor().
|
||||||
|
func (v *TreeView) GetCursor() (p *TreePath, c *TreeViewColumn) {
|
||||||
|
var path *C.GtkTreePath
|
||||||
|
var col *C.GtkTreeViewColumn
|
||||||
|
|
||||||
|
C.gtk_tree_view_get_cursor(v.native(), &path, &col)
|
||||||
|
|
||||||
|
if path != nil {
|
||||||
|
p = &TreePath{path}
|
||||||
|
runtime.SetFinalizer(p, (*TreePath).free)
|
||||||
|
}
|
||||||
|
|
||||||
|
if col != nil {
|
||||||
|
c = wrapTreeViewColumn(wrapObject(unsafe.Pointer(col)))
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// RowActivated() is a wrapper around gtk_tree_view_row_activated().
|
||||||
|
func (v *TreeView) RowActivated(path *TreePath, column *TreeViewColumn) {
|
||||||
|
C.gtk_tree_view_row_activated(v.native(), path.native(), column.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// ExpandAll() is a wrapper around gtk_tree_view_expand_all().
|
||||||
|
func (v *TreeView) ExpandAll() {
|
||||||
|
C.gtk_tree_view_expand_all(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// CollapseAll() is a wrapper around gtk_tree_view_collapse_all().
|
||||||
|
func (v *TreeView) CollapseAll() {
|
||||||
|
C.gtk_tree_view_collapse_all(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// ExpandToPath() is a wrapper around gtk_tree_view_expand_to_path().
|
||||||
|
func (v *TreeView) ExpandToPath(path *TreePath) {
|
||||||
|
C.gtk_tree_view_expand_to_path(v.native(), path.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// ExpandRow() is a wrapper around gtk_tree_view_expand_row().
|
||||||
|
func (v *TreeView) ExpandRow(path *TreePath, openAll bool) bool {
|
||||||
|
return gobool(C.gtk_tree_view_expand_row(v.native(), path.native(), gbool(openAll)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// CollapseRow() is a wrapper around gtk_tree_view_collapse_row().
|
||||||
|
func (v *TreeView) CollapseRow(path *TreePath) bool {
|
||||||
|
return gobool(C.gtk_tree_view_collapse_row(v.native(), path.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// RowExpanded() is a wrapper around gtk_tree_view_row_expanded().
|
||||||
|
func (v *TreeView) RowExpanded(path *TreePath) bool {
|
||||||
|
return gobool(C.gtk_tree_view_row_expanded(v.native(), path.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetReorderable is a wrapper around gtk_tree_view_set_reorderable().
|
||||||
|
func (v *TreeView) SetReorderable(b bool) {
|
||||||
|
C.gtk_tree_view_set_reorderable(v.native(), gbool(b))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetReorderable() is a wrapper around gtk_tree_view_get_reorderable().
|
||||||
|
func (v *TreeView) GetReorderable() bool {
|
||||||
|
return gobool(C.gtk_tree_view_get_reorderable(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetBinWindow() is a wrapper around gtk_tree_view_get_bin_window().
|
||||||
|
func (v *TreeView) GetBinWindow() *gdk.Window {
|
||||||
|
c := C.gtk_tree_view_get_bin_window(v.native())
|
||||||
|
if c == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
w := &gdk.Window{wrapObject(unsafe.Pointer(c))}
|
||||||
|
return w
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetEnableSearch is a wrapper around gtk_tree_view_set_enable_search().
|
||||||
|
func (v *TreeView) SetEnableSearch(b bool) {
|
||||||
|
C.gtk_tree_view_set_enable_search(v.native(), gbool(b))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetEnableSearch() is a wrapper around gtk_tree_view_get_enable_search().
|
||||||
|
func (v *TreeView) GetEnableSearch() bool {
|
||||||
|
return gobool(C.gtk_tree_view_get_enable_search(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetSearchColumn is a wrapper around gtk_tree_view_set_search_column().
|
||||||
|
func (v *TreeView) SetSearchColumn(c int) {
|
||||||
|
C.gtk_tree_view_set_search_column(v.native(), C.gint(c))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetSearchColumn() is a wrapper around gtk_tree_view_get_search_column().
|
||||||
|
func (v *TreeView) GetSearchColumn() int {
|
||||||
|
return int(C.gtk_tree_view_get_search_column(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetSearchEntry() is a wrapper around gtk_tree_view_get_search_entry().
|
||||||
|
func (v *TreeView) GetSearchEntry() *Entry {
|
||||||
|
c := C.gtk_tree_view_get_search_entry(v.native())
|
||||||
|
if c == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return wrapEntry(wrapObject(unsafe.Pointer(c)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetSearchEntry() is a wrapper around gtk_tree_view_set_search_entry().
|
||||||
|
func (v *TreeView) SetSearchEntry(e *Entry) {
|
||||||
|
C.gtk_tree_view_set_search_entry(v.native(), e.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetFixedHeightMode is a wrapper around gtk_tree_view_set_fixed_height_mode().
|
||||||
|
func (v *TreeView) SetFixedHeightMode(b bool) {
|
||||||
|
C.gtk_tree_view_set_fixed_height_mode(v.native(), gbool(b))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetFixedHeightMode() is a wrapper around gtk_tree_view_get_fixed_height_mode().
|
||||||
|
func (v *TreeView) GetFixedHeightMode() bool {
|
||||||
|
return gobool(C.gtk_tree_view_get_fixed_height_mode(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetHoverSelection is a wrapper around gtk_tree_view_set_hover_selection().
|
||||||
|
func (v *TreeView) SetHoverSelection(b bool) {
|
||||||
|
C.gtk_tree_view_set_hover_selection(v.native(), gbool(b))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetHoverSelection() is a wrapper around gtk_tree_view_get_hover_selection().
|
||||||
|
func (v *TreeView) GetHoverSelection() bool {
|
||||||
|
return gobool(C.gtk_tree_view_get_hover_selection(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetHoverExpand is a wrapper around gtk_tree_view_set_hover_expand().
|
||||||
|
func (v *TreeView) SetHoverExpand(b bool) {
|
||||||
|
C.gtk_tree_view_set_hover_expand(v.native(), gbool(b))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetHoverExpand() is a wrapper around gtk_tree_view_get_hover_expand().
|
||||||
|
func (v *TreeView) GetHoverExpand() bool {
|
||||||
|
return gobool(C.gtk_tree_view_get_hover_expand(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetRubberBanding is a wrapper around gtk_tree_view_set_rubber_banding().
|
||||||
|
func (v *TreeView) SetRubberBanding(b bool) {
|
||||||
|
C.gtk_tree_view_set_rubber_banding(v.native(), gbool(b))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetRubberBanding() is a wrapper around gtk_tree_view_get_rubber_banding().
|
||||||
|
func (v *TreeView) GetRubberBanding() bool {
|
||||||
|
return gobool(C.gtk_tree_view_get_rubber_banding(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// IsRubberBandingActive() is a wrapper around gtk_tree_view_is_rubber_banding_active().
|
||||||
|
func (v *TreeView) IsRubberBandingActive() bool {
|
||||||
|
return gobool(C.gtk_tree_view_is_rubber_banding_active(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetEnableTreeLines is a wrapper around gtk_tree_view_set_enable_tree_lines().
|
||||||
|
func (v *TreeView) SetEnableTreeLines(b bool) {
|
||||||
|
C.gtk_tree_view_set_enable_tree_lines(v.native(), gbool(b))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetEnableTreeLines() is a wrapper around gtk_tree_view_get_enable_tree_lines().
|
||||||
|
func (v *TreeView) GetEnableTreeLines() bool {
|
||||||
|
return gobool(C.gtk_tree_view_get_enable_tree_lines(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetTooltipColumn() is a wrapper around gtk_tree_view_get_tooltip_column().
|
||||||
|
func (v *TreeView) GetTooltipColumn() int {
|
||||||
|
return int(C.gtk_tree_view_get_tooltip_column(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetTooltipColumn() is a wrapper around gtk_tree_view_set_tooltip_column().
|
||||||
|
func (v *TreeView) SetTooltipColumn(c int) {
|
||||||
|
C.gtk_tree_view_set_tooltip_column(v.native(), C.gint(c))
|
||||||
|
}
|
||||||
|
|
||||||
|
// void gtk_tree_view_set_tooltip_row ()
|
||||||
|
// void gtk_tree_view_set_tooltip_cell ()
|
||||||
|
// gboolean gtk_tree_view_get_tooltip_context ()
|
||||||
|
// void gtk_tree_view_set_grid_lines ()
|
||||||
|
// GtkTreeViewGridLines gtk_tree_view_get_grid_lines ()
|
||||||
|
// void (*GtkTreeDestroyCountFunc) ()
|
||||||
|
// void gtk_tree_view_set_destroy_count_func ()
|
||||||
|
// gboolean (*GtkTreeViewRowSeparatorFunc) ()
|
||||||
|
// GtkTreeViewRowSeparatorFunc gtk_tree_view_get_row_separator_func ()
|
||||||
|
// void gtk_tree_view_set_row_separator_func ()
|
||||||
|
// void (*GtkTreeViewSearchPositionFunc) ()
|
||||||
|
// GtkTreeViewSearchPositionFunc gtk_tree_view_get_search_position_func ()
|
||||||
|
// void gtk_tree_view_set_search_position_func ()
|
||||||
|
// void gtk_tree_view_set_search_equal_func ()
|
||||||
|
// GtkTreeViewSearchEqualFunc gtk_tree_view_get_search_equal_func ()
|
||||||
|
// void gtk_tree_view_map_expanded_rows ()
|
||||||
|
// GList * gtk_tree_view_get_columns ()
|
||||||
|
// gint gtk_tree_view_insert_column_with_attributes ()
|
||||||
|
// gint gtk_tree_view_insert_column_with_data_func ()
|
||||||
|
// void gtk_tree_view_set_column_drag_function ()
|
||||||
|
// void gtk_tree_view_scroll_to_cell ()
|
||||||
|
// gboolean gtk_tree_view_is_blank_at_pos ()
|
||||||
|
// void gtk_tree_view_get_cell_area ()
|
||||||
|
// void gtk_tree_view_get_background_area ()
|
||||||
|
// void gtk_tree_view_get_visible_rect ()
|
||||||
|
// gboolean gtk_tree_view_get_visible_range ()
|
||||||
|
// void gtk_tree_view_convert_bin_window_to_tree_coords ()
|
||||||
|
// void gtk_tree_view_convert_bin_window_to_widget_coords ()
|
||||||
|
// void gtk_tree_view_convert_tree_to_bin_window_coords ()
|
||||||
|
// void gtk_tree_view_convert_tree_to_widget_coords ()
|
||||||
|
// void gtk_tree_view_convert_widget_to_bin_window_coords ()
|
||||||
|
// void gtk_tree_view_convert_widget_to_tree_coords ()
|
||||||
|
// void gtk_tree_view_enable_model_drag_dest ()
|
||||||
|
// void gtk_tree_view_enable_model_drag_source ()
|
||||||
|
// void gtk_tree_view_unset_rows_drag_source ()
|
||||||
|
// void gtk_tree_view_unset_rows_drag_dest ()
|
||||||
|
// void gtk_tree_view_set_drag_dest_row ()
|
||||||
|
// void gtk_tree_view_get_drag_dest_row ()
|
||||||
|
// gboolean gtk_tree_view_get_dest_row_at_pos ()
|
||||||
|
// cairo_surface_t * gtk_tree_view_create_row_drag_icon ()
|
@ -0,0 +1,265 @@
|
|||||||
|
// Same copyright and license as the rest of the files in this project
|
||||||
|
// This file contains accelerator related functions and structures
|
||||||
|
|
||||||
|
package gtk
|
||||||
|
|
||||||
|
// #include <gtk/gtk.h>
|
||||||
|
// #include "gtk.go.h"
|
||||||
|
import "C"
|
||||||
|
import (
|
||||||
|
"unsafe"
|
||||||
|
|
||||||
|
"github.com/gotk3/gotk3/glib"
|
||||||
|
)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GtkTreeViewColumn
|
||||||
|
*/
|
||||||
|
|
||||||
|
// TreeViewColumns is a representation of GTK's GtkTreeViewColumn.
|
||||||
|
type TreeViewColumn struct {
|
||||||
|
glib.InitiallyUnowned
|
||||||
|
}
|
||||||
|
|
||||||
|
// native returns a pointer to the underlying GtkTreeViewColumn.
|
||||||
|
func (v *TreeViewColumn) native() *C.GtkTreeViewColumn {
|
||||||
|
if v == nil || v.GObject == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
p := unsafe.Pointer(v.GObject)
|
||||||
|
return C.toGtkTreeViewColumn(p)
|
||||||
|
}
|
||||||
|
|
||||||
|
func marshalTreeViewColumn(p uintptr) (interface{}, error) {
|
||||||
|
c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
|
||||||
|
obj := wrapObject(unsafe.Pointer(c))
|
||||||
|
return wrapTreeViewColumn(obj), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func wrapTreeViewColumn(obj *glib.Object) *TreeViewColumn {
|
||||||
|
return &TreeViewColumn{glib.InitiallyUnowned{obj}}
|
||||||
|
}
|
||||||
|
|
||||||
|
// TreeViewColumnNew() is a wrapper around gtk_tree_view_column_new().
|
||||||
|
func TreeViewColumnNew() (*TreeViewColumn, error) {
|
||||||
|
c := C.gtk_tree_view_column_new()
|
||||||
|
if c == nil {
|
||||||
|
return nil, nilPtrErr
|
||||||
|
}
|
||||||
|
return wrapTreeViewColumn(wrapObject(unsafe.Pointer(c))), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// TreeViewColumnNewWithAttribute() is a wrapper around
|
||||||
|
// gtk_tree_view_column_new_with_attributes() that only sets one
|
||||||
|
// attribute for one column.
|
||||||
|
func TreeViewColumnNewWithAttribute(title string, renderer ICellRenderer, attribute string, column int) (*TreeViewColumn, error) {
|
||||||
|
t_cstr := C.CString(title)
|
||||||
|
defer C.free(unsafe.Pointer(t_cstr))
|
||||||
|
a_cstr := C.CString(attribute)
|
||||||
|
defer C.free(unsafe.Pointer(a_cstr))
|
||||||
|
c := C._gtk_tree_view_column_new_with_attributes_one((*C.gchar)(t_cstr),
|
||||||
|
renderer.toCellRenderer(), (*C.gchar)(a_cstr), C.gint(column))
|
||||||
|
if c == nil {
|
||||||
|
return nil, nilPtrErr
|
||||||
|
}
|
||||||
|
return wrapTreeViewColumn(wrapObject(unsafe.Pointer(c))), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// AddAttribute() is a wrapper around gtk_tree_view_column_add_attribute().
|
||||||
|
func (v *TreeViewColumn) AddAttribute(renderer ICellRenderer, attribute string, column int) {
|
||||||
|
cstr := C.CString(attribute)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
C.gtk_tree_view_column_add_attribute(v.native(),
|
||||||
|
renderer.toCellRenderer(), (*C.gchar)(cstr), C.gint(column))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetExpand() is a wrapper around gtk_tree_view_column_set_expand().
|
||||||
|
func (v *TreeViewColumn) SetExpand(expand bool) {
|
||||||
|
C.gtk_tree_view_column_set_expand(v.native(), gbool(expand))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetExpand() is a wrapper around gtk_tree_view_column_get_expand().
|
||||||
|
func (v *TreeViewColumn) GetExpand() bool {
|
||||||
|
c := C.gtk_tree_view_column_get_expand(v.native())
|
||||||
|
return gobool(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetMinWidth() is a wrapper around gtk_tree_view_column_set_min_width().
|
||||||
|
func (v *TreeViewColumn) SetMinWidth(minWidth int) {
|
||||||
|
C.gtk_tree_view_column_set_min_width(v.native(), C.gint(minWidth))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetMinWidth() is a wrapper around gtk_tree_view_column_get_min_width().
|
||||||
|
func (v *TreeViewColumn) GetMinWidth() int {
|
||||||
|
c := C.gtk_tree_view_column_get_min_width(v.native())
|
||||||
|
return int(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// PackStart() is a wrapper around gtk_tree_view_column_pack_start().
|
||||||
|
func (v *TreeViewColumn) PackStart(cell *CellRenderer, expand bool) {
|
||||||
|
C.gtk_tree_view_column_pack_start(v.native(), cell.native(), gbool(expand))
|
||||||
|
}
|
||||||
|
|
||||||
|
// PackEnd() is a wrapper around gtk_tree_view_column_pack_end().
|
||||||
|
func (v *TreeViewColumn) PackEnd(cell *CellRenderer, expand bool) {
|
||||||
|
C.gtk_tree_view_column_pack_end(v.native(), cell.native(), gbool(expand))
|
||||||
|
}
|
||||||
|
|
||||||
|
// Clear() is a wrapper around gtk_tree_view_column_clear().
|
||||||
|
func (v *TreeViewColumn) Clear() {
|
||||||
|
C.gtk_tree_view_column_clear(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// ClearAttributes() is a wrapper around gtk_tree_view_column_clear_attributes().
|
||||||
|
func (v *TreeViewColumn) ClearAttributes(cell *CellRenderer) {
|
||||||
|
C.gtk_tree_view_column_clear_attributes(v.native(), cell.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetSpacing() is a wrapper around gtk_tree_view_column_set_spacing().
|
||||||
|
func (v *TreeViewColumn) SetSpacing(spacing int) {
|
||||||
|
C.gtk_tree_view_column_set_spacing(v.native(), C.gint(spacing))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetSpacing() is a wrapper around gtk_tree_view_column_get_spacing().
|
||||||
|
func (v *TreeViewColumn) GetSpacing() int {
|
||||||
|
return int(C.gtk_tree_view_column_get_spacing(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetVisible() is a wrapper around gtk_tree_view_column_set_visible().
|
||||||
|
func (v *TreeViewColumn) SetVisible(visible bool) {
|
||||||
|
C.gtk_tree_view_column_set_visible(v.native(), gbool(visible))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetVisible() is a wrapper around gtk_tree_view_column_get_visible().
|
||||||
|
func (v *TreeViewColumn) GetVisible() bool {
|
||||||
|
return gobool(C.gtk_tree_view_column_get_visible(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetResizable() is a wrapper around gtk_tree_view_column_set_resizable().
|
||||||
|
func (v *TreeViewColumn) SetResizable(resizable bool) {
|
||||||
|
C.gtk_tree_view_column_set_resizable(v.native(), gbool(resizable))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetResizable() is a wrapper around gtk_tree_view_column_get_resizable().
|
||||||
|
func (v *TreeViewColumn) GetResizable() bool {
|
||||||
|
return gobool(C.gtk_tree_view_column_get_resizable(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetWidth() is a wrapper around gtk_tree_view_column_get_width().
|
||||||
|
func (v *TreeViewColumn) GetWidth() int {
|
||||||
|
return int(C.gtk_tree_view_column_get_width(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetFixedWidth() is a wrapper around gtk_tree_view_column_set_fixed_width().
|
||||||
|
func (v *TreeViewColumn) SetFixedWidth(w int) {
|
||||||
|
C.gtk_tree_view_column_set_fixed_width(v.native(), C.gint(w))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetFixedWidth() is a wrapper around gtk_tree_view_column_get_fixed_width().
|
||||||
|
func (v *TreeViewColumn) GetFixedWidth() int {
|
||||||
|
return int(C.gtk_tree_view_column_get_fixed_width(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetMaxWidth() is a wrapper around gtk_tree_view_column_set_max_width().
|
||||||
|
func (v *TreeViewColumn) SetMaxWidth(w int) {
|
||||||
|
C.gtk_tree_view_column_set_max_width(v.native(), C.gint(w))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetMaxWidth() is a wrapper around gtk_tree_view_column_get_max_width().
|
||||||
|
func (v *TreeViewColumn) GetMaxWidth() int {
|
||||||
|
return int(C.gtk_tree_view_column_get_max_width(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// Clicked() is a wrapper around gtk_tree_view_column_clicked().
|
||||||
|
func (v *TreeViewColumn) Clicked() {
|
||||||
|
C.gtk_tree_view_column_clicked(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetTitle() is a wrapper around gtk_tree_view_column_set_title().
|
||||||
|
func (v *TreeViewColumn) SetTitle(t string) {
|
||||||
|
cstr := (*C.gchar)(C.CString(t))
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
C.gtk_tree_view_column_set_title(v.native(), cstr)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetTitle() is a wrapper around gtk_tree_view_column_get_title().
|
||||||
|
func (v *TreeViewColumn) GetTitle() string {
|
||||||
|
return C.GoString((*C.char)(C.gtk_tree_view_column_get_title(v.native())))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetClickable() is a wrapper around gtk_tree_view_column_set_clickable().
|
||||||
|
func (v *TreeViewColumn) SetClickable(clickable bool) {
|
||||||
|
C.gtk_tree_view_column_set_clickable(v.native(), gbool(clickable))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetClickable() is a wrapper around gtk_tree_view_column_get_clickable().
|
||||||
|
func (v *TreeViewColumn) GetClickable() bool {
|
||||||
|
return gobool(C.gtk_tree_view_column_get_clickable(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetReorderable() is a wrapper around gtk_tree_view_column_set_reorderable().
|
||||||
|
func (v *TreeViewColumn) SetReorderable(reorderable bool) {
|
||||||
|
C.gtk_tree_view_column_set_reorderable(v.native(), gbool(reorderable))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetReorderable() is a wrapper around gtk_tree_view_column_get_reorderable().
|
||||||
|
func (v *TreeViewColumn) GetReorderable() bool {
|
||||||
|
return gobool(C.gtk_tree_view_column_get_reorderable(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetSortIndicator() is a wrapper around gtk_tree_view_column_set_sort_indicator().
|
||||||
|
func (v *TreeViewColumn) SetSortIndicator(reorderable bool) {
|
||||||
|
C.gtk_tree_view_column_set_sort_indicator(v.native(), gbool(reorderable))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetSortIndicator() is a wrapper around gtk_tree_view_column_get_sort_indicator().
|
||||||
|
func (v *TreeViewColumn) GetSortIndicator() bool {
|
||||||
|
return gobool(C.gtk_tree_view_column_get_sort_indicator(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetSortColumnID() is a wrapper around gtk_tree_view_column_set_sort_column_id().
|
||||||
|
func (v *TreeViewColumn) SetSortColumnID(w int) {
|
||||||
|
C.gtk_tree_view_column_set_sort_column_id(v.native(), C.gint(w))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetSortColumnID() is a wrapper around gtk_tree_view_column_get_sort_column_id().
|
||||||
|
func (v *TreeViewColumn) GetSortColumnID() int {
|
||||||
|
return int(C.gtk_tree_view_column_get_sort_column_id(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// CellIsVisible() is a wrapper around gtk_tree_view_column_cell_is_visible().
|
||||||
|
func (v *TreeViewColumn) CellIsVisible() bool {
|
||||||
|
return gobool(C.gtk_tree_view_column_cell_is_visible(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// FocusCell() is a wrapper around gtk_tree_view_column_focus_cell().
|
||||||
|
func (v *TreeViewColumn) FocusCell(cell *CellRenderer) {
|
||||||
|
C.gtk_tree_view_column_focus_cell(v.native(), cell.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// QueueResize() is a wrapper around gtk_tree_view_column_queue_resize().
|
||||||
|
func (v *TreeViewColumn) QueueResize() {
|
||||||
|
C.gtk_tree_view_column_queue_resize(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetXOffset() is a wrapper around gtk_tree_view_column_get_x_offset().
|
||||||
|
func (v *TreeViewColumn) GetXOffset() int {
|
||||||
|
return int(C.gtk_tree_view_column_get_x_offset(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GtkTreeViewColumn * gtk_tree_view_column_new_with_area ()
|
||||||
|
// void gtk_tree_view_column_set_attributes ()
|
||||||
|
// void gtk_tree_view_column_set_cell_data_func ()
|
||||||
|
// void gtk_tree_view_column_set_sizing ()
|
||||||
|
// GtkTreeViewColumnSizing gtk_tree_view_column_get_sizing ()
|
||||||
|
// void gtk_tree_view_column_set_widget ()
|
||||||
|
// GtkWidget * gtk_tree_view_column_get_widget ()
|
||||||
|
// GtkWidget * gtk_tree_view_column_get_button ()
|
||||||
|
// void gtk_tree_view_column_set_alignment ()
|
||||||
|
// gfloat gtk_tree_view_column_get_alignment ()
|
||||||
|
// void gtk_tree_view_column_set_sort_order ()
|
||||||
|
// GtkSortType gtk_tree_view_column_get_sort_order ()
|
||||||
|
// void gtk_tree_view_column_cell_set_cell_data ()
|
||||||
|
// void gtk_tree_view_column_cell_get_size ()
|
||||||
|
// gboolean gtk_tree_view_column_cell_get_position ()
|
||||||
|
// GtkWidget * gtk_tree_view_column_get_tree_view ()
|
@ -0,0 +1,30 @@
|
|||||||
|
package gtk
|
||||||
|
|
||||||
|
// #cgo pkg-config: gtk+-3.0
|
||||||
|
// #include <gtk/gtk.h>
|
||||||
|
import "C"
|
||||||
|
import "errors"
|
||||||
|
|
||||||
|
func CheckVersion(major, minor, micro uint) error {
|
||||||
|
errChar := C.gtk_check_version(C.guint(major), C.guint(minor), C.guint(micro))
|
||||||
|
if errChar == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return errors.New(C.GoString((*C.char)(errChar)))
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetMajorVersion() uint {
|
||||||
|
v := C.gtk_get_major_version()
|
||||||
|
return uint(v)
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetMinorVersion() uint {
|
||||||
|
v := C.gtk_get_minor_version()
|
||||||
|
return uint(v)
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetMicroVersion() uint {
|
||||||
|
v := C.gtk_get_micro_version()
|
||||||
|
return uint(v)
|
||||||
|
}
|
@ -0,0 +1,612 @@
|
|||||||
|
// Same copyright and license as the rest of the files in this project
|
||||||
|
// This file contains accelerator related functions and structures
|
||||||
|
|
||||||
|
package gtk
|
||||||
|
|
||||||
|
// #include <gtk/gtk.h>
|
||||||
|
// #include "gtk.go.h"
|
||||||
|
import "C"
|
||||||
|
import (
|
||||||
|
"errors"
|
||||||
|
"unsafe"
|
||||||
|
|
||||||
|
"github.com/gotk3/gotk3/gdk"
|
||||||
|
"github.com/gotk3/gotk3/glib"
|
||||||
|
)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GtkWidget
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Widget is a representation of GTK's GtkWidget.
|
||||||
|
type Widget struct {
|
||||||
|
glib.InitiallyUnowned
|
||||||
|
}
|
||||||
|
|
||||||
|
// IWidget is an interface type implemented by all structs
|
||||||
|
// embedding a Widget. It is meant to be used as an argument type
|
||||||
|
// for wrapper functions that wrap around a C GTK function taking a
|
||||||
|
// GtkWidget.
|
||||||
|
type IWidget interface {
|
||||||
|
toWidget() *C.GtkWidget
|
||||||
|
Set(string, interface{}) error
|
||||||
|
}
|
||||||
|
|
||||||
|
type IWidgetable interface {
|
||||||
|
toWidget() *C.GtkWidget
|
||||||
|
}
|
||||||
|
|
||||||
|
func nullableWidget(v IWidgetable) *C.GtkWidget {
|
||||||
|
if v == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return v.toWidget()
|
||||||
|
}
|
||||||
|
|
||||||
|
// native returns a pointer to the underlying GtkWidget.
|
||||||
|
func (v *Widget) native() *C.GtkWidget {
|
||||||
|
if v == nil || v.GObject == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
p := unsafe.Pointer(v.GObject)
|
||||||
|
return C.toGtkWidget(p)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (v *Widget) toWidget() *C.GtkWidget {
|
||||||
|
if v == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return v.native()
|
||||||
|
}
|
||||||
|
|
||||||
|
func marshalWidget(p uintptr) (interface{}, error) {
|
||||||
|
c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
|
||||||
|
obj := wrapObject(unsafe.Pointer(c))
|
||||||
|
return wrapWidget(obj), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func wrapWidget(obj *glib.Object) *Widget {
|
||||||
|
return &Widget{glib.InitiallyUnowned{obj}}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Destroy is a wrapper around gtk_widget_destroy().
|
||||||
|
func (v *Widget) Destroy() {
|
||||||
|
C.gtk_widget_destroy(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
func (v *Widget) HideOnDelete() {
|
||||||
|
C._gtk_widget_hide_on_delete(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
/* TODO
|
||||||
|
func (v *Widget) DragDestSet(flags DestDefaults, targets []TargetEntry, actions gdk.DragAction) {
|
||||||
|
C.gtk_drag_dest_set(v.native(), C.GtkDestDefaults(flags), (*C.GtkTargetEntry)(&targets[0]),
|
||||||
|
C.gint(len(targets)), C.GdkDragAction(actions))
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
// ResetStyle is a wrapper around gtk_widget_reset_style().
|
||||||
|
func (v *Widget) ResetStyle() {
|
||||||
|
C.gtk_widget_reset_style(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// InDestruction is a wrapper around gtk_widget_in_destruction().
|
||||||
|
func (v *Widget) InDestruction() bool {
|
||||||
|
return gobool(C.gtk_widget_in_destruction(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO(jrick) this may require some rethinking
|
||||||
|
/*
|
||||||
|
func (v *Widget) Destroyed(widgetPointer **Widget) {
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Unparent is a wrapper around gtk_widget_unparent().
|
||||||
|
func (v *Widget) Unparent() {
|
||||||
|
C.gtk_widget_unparent(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// Show is a wrapper around gtk_widget_show().
|
||||||
|
func (v *Widget) Show() {
|
||||||
|
C.gtk_widget_show(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// Hide is a wrapper around gtk_widget_hide().
|
||||||
|
func (v *Widget) Hide() {
|
||||||
|
C.gtk_widget_hide(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetCanFocus is a wrapper around gtk_widget_get_can_focus().
|
||||||
|
func (v *Widget) GetCanFocus() bool {
|
||||||
|
c := C.gtk_widget_get_can_focus(v.native())
|
||||||
|
return gobool(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetCanFocus is a wrapper around gtk_widget_set_can_focus().
|
||||||
|
func (v *Widget) SetCanFocus(canFocus bool) {
|
||||||
|
C.gtk_widget_set_can_focus(v.native(), gbool(canFocus))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetCanDefault is a wrapper around gtk_widget_get_can_default().
|
||||||
|
func (v *Widget) GetCanDefault() bool {
|
||||||
|
c := C.gtk_widget_get_can_default(v.native())
|
||||||
|
return gobool(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetCanDefault is a wrapper around gtk_widget_set_can_default().
|
||||||
|
func (v *Widget) SetCanDefault(canDefault bool) {
|
||||||
|
C.gtk_widget_set_can_default(v.native(), gbool(canDefault))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetMapped is a wrapper around gtk_widget_get_mapped().
|
||||||
|
func (v *Widget) GetMapped() bool {
|
||||||
|
c := C.gtk_widget_get_mapped(v.native())
|
||||||
|
return gobool(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetMapped is a wrapper around gtk_widget_set_mapped().
|
||||||
|
func (v *Widget) SetMapped(mapped bool) {
|
||||||
|
C.gtk_widget_set_can_focus(v.native(), gbool(mapped))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetRealized is a wrapper around gtk_widget_get_realized().
|
||||||
|
func (v *Widget) GetRealized() bool {
|
||||||
|
c := C.gtk_widget_get_realized(v.native())
|
||||||
|
return gobool(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetRealized is a wrapper around gtk_widget_set_realized().
|
||||||
|
func (v *Widget) SetRealized(realized bool) {
|
||||||
|
C.gtk_widget_set_realized(v.native(), gbool(realized))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetHasWindow is a wrapper around gtk_widget_get_has_window().
|
||||||
|
func (v *Widget) GetHasWindow() bool {
|
||||||
|
c := C.gtk_widget_get_has_window(v.native())
|
||||||
|
return gobool(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetHasWindow is a wrapper around gtk_widget_set_has_window().
|
||||||
|
func (v *Widget) SetHasWindow(hasWindow bool) {
|
||||||
|
C.gtk_widget_set_has_window(v.native(), gbool(hasWindow))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ShowNow is a wrapper around gtk_widget_show_now().
|
||||||
|
func (v *Widget) ShowNow() {
|
||||||
|
C.gtk_widget_show_now(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// ShowAll is a wrapper around gtk_widget_show_all().
|
||||||
|
func (v *Widget) ShowAll() {
|
||||||
|
C.gtk_widget_show_all(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetNoShowAll is a wrapper around gtk_widget_set_no_show_all().
|
||||||
|
func (v *Widget) SetNoShowAll(noShowAll bool) {
|
||||||
|
C.gtk_widget_set_no_show_all(v.native(), gbool(noShowAll))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetNoShowAll is a wrapper around gtk_widget_get_no_show_all().
|
||||||
|
func (v *Widget) GetNoShowAll() bool {
|
||||||
|
c := C.gtk_widget_get_no_show_all(v.native())
|
||||||
|
return gobool(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Map is a wrapper around gtk_widget_map().
|
||||||
|
func (v *Widget) Map() {
|
||||||
|
C.gtk_widget_map(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// Unmap is a wrapper around gtk_widget_unmap().
|
||||||
|
func (v *Widget) Unmap() {
|
||||||
|
C.gtk_widget_unmap(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// QueueDrawArea is a wrapper aroung gtk_widget_queue_draw_area().
|
||||||
|
func (v *Widget) QueueDrawArea(x, y, w, h int) {
|
||||||
|
C.gtk_widget_queue_draw_area(v.native(), C.gint(x), C.gint(y), C.gint(w), C.gint(h))
|
||||||
|
}
|
||||||
|
|
||||||
|
//void gtk_widget_realize(GtkWidget *widget);
|
||||||
|
//void gtk_widget_unrealize(GtkWidget *widget);
|
||||||
|
//void gtk_widget_draw(GtkWidget *widget, cairo_t *cr);
|
||||||
|
//void gtk_widget_queue_resize(GtkWidget *widget);
|
||||||
|
//void gtk_widget_queue_resize_no_redraw(GtkWidget *widget);
|
||||||
|
//GdkFrameClock *gtk_widget_get_frame_clock(GtkWidget *widget);
|
||||||
|
//guint gtk_widget_add_tick_callback (GtkWidget *widget,
|
||||||
|
// GtkTickCallback callback,
|
||||||
|
// gpointer user_data,
|
||||||
|
// GDestroyNotify notify);
|
||||||
|
//void gtk_widget_remove_tick_callback(GtkWidget *widget, guint id);
|
||||||
|
|
||||||
|
// TODO(jrick) GtkAllocation
|
||||||
|
/*
|
||||||
|
func (v *Widget) SizeAllocate() {
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Allocation is a representation of GTK's GtkAllocation type.
|
||||||
|
type Allocation struct {
|
||||||
|
gdk.Rectangle
|
||||||
|
}
|
||||||
|
|
||||||
|
// Native returns a pointer to the underlying GtkAllocation.
|
||||||
|
func (v *Allocation) native() *C.GtkAllocation {
|
||||||
|
return (*C.GtkAllocation)(unsafe.Pointer(&v.GdkRectangle))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetAllocatedWidth() is a wrapper around gtk_widget_get_allocated_width().
|
||||||
|
func (v *Widget) GetAllocatedWidth() int {
|
||||||
|
return int(C.gtk_widget_get_allocated_width(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetAllocatedHeight() is a wrapper around gtk_widget_get_allocated_height().
|
||||||
|
func (v *Widget) GetAllocatedHeight() int {
|
||||||
|
return int(C.gtk_widget_get_allocated_height(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// Event() is a wrapper around gtk_widget_event().
|
||||||
|
func (v *Widget) Event(event *gdk.Event) bool {
|
||||||
|
c := C.gtk_widget_event(v.native(),
|
||||||
|
(*C.GdkEvent)(unsafe.Pointer(event.Native())))
|
||||||
|
return gobool(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Activate() is a wrapper around gtk_widget_activate().
|
||||||
|
func (v *Widget) Activate() bool {
|
||||||
|
return gobool(C.gtk_widget_activate(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO(jrick) GdkRectangle
|
||||||
|
/*
|
||||||
|
func (v *Widget) Intersect() {
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
// IsFocus() is a wrapper around gtk_widget_is_focus().
|
||||||
|
func (v *Widget) IsFocus() bool {
|
||||||
|
return gobool(C.gtk_widget_is_focus(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GrabFocus() is a wrapper around gtk_widget_grab_focus().
|
||||||
|
func (v *Widget) GrabFocus() {
|
||||||
|
C.gtk_widget_grab_focus(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// GrabDefault() is a wrapper around gtk_widget_grab_default().
|
||||||
|
func (v *Widget) GrabDefault() {
|
||||||
|
C.gtk_widget_grab_default(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetName() is a wrapper around gtk_widget_set_name().
|
||||||
|
func (v *Widget) SetName(name string) {
|
||||||
|
cstr := C.CString(name)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
C.gtk_widget_set_name(v.native(), (*C.gchar)(cstr))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetName() is a wrapper around gtk_widget_get_name(). A non-nil
|
||||||
|
// error is returned in the case that gtk_widget_get_name returns NULL to
|
||||||
|
// differentiate between NULL and an empty string.
|
||||||
|
func (v *Widget) GetName() (string, error) {
|
||||||
|
c := C.gtk_widget_get_name(v.native())
|
||||||
|
if c == nil {
|
||||||
|
return "", nilPtrErr
|
||||||
|
}
|
||||||
|
return C.GoString((*C.char)(c)), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetSensitive is a wrapper around gtk_widget_get_sensitive().
|
||||||
|
func (v *Widget) GetSensitive() bool {
|
||||||
|
c := C.gtk_widget_get_sensitive(v.native())
|
||||||
|
return gobool(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// IsSensitive is a wrapper around gtk_widget_is_sensitive().
|
||||||
|
func (v *Widget) IsSensitive() bool {
|
||||||
|
c := C.gtk_widget_is_sensitive(v.native())
|
||||||
|
return gobool(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetSensitive is a wrapper around gtk_widget_set_sensitive().
|
||||||
|
func (v *Widget) SetSensitive(sensitive bool) {
|
||||||
|
C.gtk_widget_set_sensitive(v.native(), gbool(sensitive))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetVisible is a wrapper around gtk_widget_get_visible().
|
||||||
|
func (v *Widget) GetVisible() bool {
|
||||||
|
c := C.gtk_widget_get_visible(v.native())
|
||||||
|
return gobool(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetVisible is a wrapper around gtk_widget_set_visible().
|
||||||
|
func (v *Widget) SetVisible(visible bool) {
|
||||||
|
C.gtk_widget_set_visible(v.native(), gbool(visible))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetParent is a wrapper around gtk_widget_set_parent().
|
||||||
|
func (v *Widget) SetParent(parent IWidget) {
|
||||||
|
C.gtk_widget_set_parent(v.native(), parent.toWidget())
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetParent is a wrapper around gtk_widget_get_parent().
|
||||||
|
func (v *Widget) GetParent() (*Widget, error) {
|
||||||
|
c := C.gtk_widget_get_parent(v.native())
|
||||||
|
if c == nil {
|
||||||
|
return nil, nilPtrErr
|
||||||
|
}
|
||||||
|
return wrapWidget(wrapObject(unsafe.Pointer(c))), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetSizeRequest is a wrapper around gtk_widget_set_size_request().
|
||||||
|
func (v *Widget) SetSizeRequest(width, height int) {
|
||||||
|
C.gtk_widget_set_size_request(v.native(), C.gint(width), C.gint(height))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetSizeRequest is a wrapper around gtk_widget_get_size_request().
|
||||||
|
func (v *Widget) GetSizeRequest() (width, height int) {
|
||||||
|
var w, h C.gint
|
||||||
|
C.gtk_widget_get_size_request(v.native(), &w, &h)
|
||||||
|
return int(w), int(h)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetParentWindow is a wrapper around gtk_widget_set_parent_window().
|
||||||
|
func (v *Widget) SetParentWindow(parentWindow *gdk.Window) {
|
||||||
|
C.gtk_widget_set_parent_window(v.native(),
|
||||||
|
(*C.GdkWindow)(unsafe.Pointer(parentWindow.Native())))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetParentWindow is a wrapper around gtk_widget_get_parent_window().
|
||||||
|
func (v *Widget) GetParentWindow() (*gdk.Window, error) {
|
||||||
|
c := C.gtk_widget_get_parent_window(v.native())
|
||||||
|
if v == nil {
|
||||||
|
return nil, nilPtrErr
|
||||||
|
}
|
||||||
|
|
||||||
|
w := &gdk.Window{wrapObject(unsafe.Pointer(c))}
|
||||||
|
return w, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetEvents is a wrapper around gtk_widget_set_events().
|
||||||
|
func (v *Widget) SetEvents(events int) {
|
||||||
|
C.gtk_widget_set_events(v.native(), C.gint(events))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetEvents is a wrapper around gtk_widget_get_events().
|
||||||
|
func (v *Widget) GetEvents() int {
|
||||||
|
return int(C.gtk_widget_get_events(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// AddEvents is a wrapper around gtk_widget_add_events().
|
||||||
|
func (v *Widget) AddEvents(events int) {
|
||||||
|
C.gtk_widget_add_events(v.native(), C.gint(events))
|
||||||
|
}
|
||||||
|
|
||||||
|
// HasDefault is a wrapper around gtk_widget_has_default().
|
||||||
|
func (v *Widget) HasDefault() bool {
|
||||||
|
c := C.gtk_widget_has_default(v.native())
|
||||||
|
return gobool(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// HasFocus is a wrapper around gtk_widget_has_focus().
|
||||||
|
func (v *Widget) HasFocus() bool {
|
||||||
|
c := C.gtk_widget_has_focus(v.native())
|
||||||
|
return gobool(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// HasVisibleFocus is a wrapper around gtk_widget_has_visible_focus().
|
||||||
|
func (v *Widget) HasVisibleFocus() bool {
|
||||||
|
c := C.gtk_widget_has_visible_focus(v.native())
|
||||||
|
return gobool(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// HasGrab is a wrapper around gtk_widget_has_grab().
|
||||||
|
func (v *Widget) HasGrab() bool {
|
||||||
|
c := C.gtk_widget_has_grab(v.native())
|
||||||
|
return gobool(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// IsDrawable is a wrapper around gtk_widget_is_drawable().
|
||||||
|
func (v *Widget) IsDrawable() bool {
|
||||||
|
c := C.gtk_widget_is_drawable(v.native())
|
||||||
|
return gobool(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// IsToplevel is a wrapper around gtk_widget_is_toplevel().
|
||||||
|
func (v *Widget) IsToplevel() bool {
|
||||||
|
c := C.gtk_widget_is_toplevel(v.native())
|
||||||
|
return gobool(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO(jrick) GdkEventMask
|
||||||
|
/*
|
||||||
|
func (v *Widget) SetDeviceEvents() {
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
// TODO(jrick) GdkEventMask
|
||||||
|
/*
|
||||||
|
func (v *Widget) GetDeviceEvents() {
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
// TODO(jrick) GdkEventMask
|
||||||
|
/*
|
||||||
|
func (v *Widget) AddDeviceEvents() {
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
// SetDeviceEnabled is a wrapper around gtk_widget_set_device_enabled().
|
||||||
|
func (v *Widget) SetDeviceEnabled(device *gdk.Device, enabled bool) {
|
||||||
|
C.gtk_widget_set_device_enabled(v.native(),
|
||||||
|
(*C.GdkDevice)(unsafe.Pointer(device.Native())), gbool(enabled))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetDeviceEnabled is a wrapper around gtk_widget_get_device_enabled().
|
||||||
|
func (v *Widget) GetDeviceEnabled(device *gdk.Device) bool {
|
||||||
|
c := C.gtk_widget_get_device_enabled(v.native(),
|
||||||
|
(*C.GdkDevice)(unsafe.Pointer(device.Native())))
|
||||||
|
return gobool(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetToplevel is a wrapper around gtk_widget_get_toplevel().
|
||||||
|
func (v *Widget) GetToplevel() (*Widget, error) {
|
||||||
|
c := C.gtk_widget_get_toplevel(v.native())
|
||||||
|
if c == nil {
|
||||||
|
return nil, nilPtrErr
|
||||||
|
}
|
||||||
|
return wrapWidget(wrapObject(unsafe.Pointer(c))), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetTooltipText is a wrapper around gtk_widget_get_tooltip_text().
|
||||||
|
// A non-nil error is returned in the case that
|
||||||
|
// gtk_widget_get_tooltip_text returns NULL to differentiate between NULL
|
||||||
|
// and an empty string.
|
||||||
|
func (v *Widget) GetTooltipText() (string, error) {
|
||||||
|
c := C.gtk_widget_get_tooltip_text(v.native())
|
||||||
|
if c == nil {
|
||||||
|
return "", nilPtrErr
|
||||||
|
}
|
||||||
|
return C.GoString((*C.char)(c)), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetTooltipText is a wrapper around gtk_widget_set_tooltip_text().
|
||||||
|
func (v *Widget) SetTooltipText(text string) {
|
||||||
|
cstr := C.CString(text)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
C.gtk_widget_set_tooltip_text(v.native(), (*C.gchar)(cstr))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetHAlign is a wrapper around gtk_widget_get_halign().
|
||||||
|
func (v *Widget) GetHAlign() Align {
|
||||||
|
c := C.gtk_widget_get_halign(v.native())
|
||||||
|
return Align(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetHAlign is a wrapper around gtk_widget_set_halign().
|
||||||
|
func (v *Widget) SetHAlign(align Align) {
|
||||||
|
C.gtk_widget_set_halign(v.native(), C.GtkAlign(align))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetVAlign is a wrapper around gtk_widget_get_valign().
|
||||||
|
func (v *Widget) GetVAlign() Align {
|
||||||
|
c := C.gtk_widget_get_valign(v.native())
|
||||||
|
return Align(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetVAlign is a wrapper around gtk_widget_set_valign().
|
||||||
|
func (v *Widget) SetVAlign(align Align) {
|
||||||
|
C.gtk_widget_set_valign(v.native(), C.GtkAlign(align))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetMarginTop is a wrapper around gtk_widget_get_margin_top().
|
||||||
|
func (v *Widget) GetMarginTop() int {
|
||||||
|
c := C.gtk_widget_get_margin_top(v.native())
|
||||||
|
return int(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetMarginTop is a wrapper around gtk_widget_set_margin_top().
|
||||||
|
func (v *Widget) SetMarginTop(margin int) {
|
||||||
|
C.gtk_widget_set_margin_top(v.native(), C.gint(margin))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetMarginBottom is a wrapper around gtk_widget_get_margin_bottom().
|
||||||
|
func (v *Widget) GetMarginBottom() int {
|
||||||
|
c := C.gtk_widget_get_margin_bottom(v.native())
|
||||||
|
return int(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetMarginBottom is a wrapper around gtk_widget_set_margin_bottom().
|
||||||
|
func (v *Widget) SetMarginBottom(margin int) {
|
||||||
|
C.gtk_widget_set_margin_bottom(v.native(), C.gint(margin))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetHExpand is a wrapper around gtk_widget_get_hexpand().
|
||||||
|
func (v *Widget) GetHExpand() bool {
|
||||||
|
c := C.gtk_widget_get_hexpand(v.native())
|
||||||
|
return gobool(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetHExpand is a wrapper around gtk_widget_set_hexpand().
|
||||||
|
func (v *Widget) SetHExpand(expand bool) {
|
||||||
|
C.gtk_widget_set_hexpand(v.native(), gbool(expand))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetVExpand is a wrapper around gtk_widget_get_vexpand().
|
||||||
|
func (v *Widget) GetVExpand() bool {
|
||||||
|
c := C.gtk_widget_get_vexpand(v.native())
|
||||||
|
return gobool(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetVExpand is a wrapper around gtk_widget_set_vexpand().
|
||||||
|
func (v *Widget) SetVExpand(expand bool) {
|
||||||
|
C.gtk_widget_set_vexpand(v.native(), gbool(expand))
|
||||||
|
}
|
||||||
|
|
||||||
|
// TranslateCoordinates is a wrapper around gtk_widget_translate_coordinates().
|
||||||
|
func (v *Widget) TranslateCoordinates(dest IWidget, srcX, srcY int) (destX, destY int, e error) {
|
||||||
|
cdest := nullableWidget(dest)
|
||||||
|
|
||||||
|
var cdestX, cdestY C.gint
|
||||||
|
c := C.gtk_widget_translate_coordinates(v.native(), cdest, C.gint(srcX), C.gint(srcY), &cdestX, &cdestY)
|
||||||
|
if !gobool(c) {
|
||||||
|
return 0, 0, errors.New("translate coordinates failed")
|
||||||
|
}
|
||||||
|
return int(cdestX), int(cdestY), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetVisual is a wrapper around gtk_widget_set_visual().
|
||||||
|
func (v *Widget) SetVisual(visual *gdk.Visual) {
|
||||||
|
C.gtk_widget_set_visual(v.native(),
|
||||||
|
(*C.GdkVisual)(unsafe.Pointer(visual.Native())))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetAppPaintable is a wrapper around gtk_widget_set_app_paintable().
|
||||||
|
func (v *Widget) SetAppPaintable(paintable bool) {
|
||||||
|
C.gtk_widget_set_app_paintable(v.native(), gbool(paintable))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetAppPaintable is a wrapper around gtk_widget_get_app_paintable().
|
||||||
|
func (v *Widget) GetAppPaintable() bool {
|
||||||
|
c := C.gtk_widget_get_app_paintable(v.native())
|
||||||
|
return gobool(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// QueueDraw is a wrapper around gtk_widget_queue_draw().
|
||||||
|
func (v *Widget) QueueDraw() {
|
||||||
|
C.gtk_widget_queue_draw(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetAllocation is a wrapper around gtk_widget_get_allocation().
|
||||||
|
func (v *Widget) GetAllocation() *Allocation {
|
||||||
|
var a Allocation
|
||||||
|
C.gtk_widget_get_allocation(v.native(), a.native())
|
||||||
|
return &a
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetAllocation is a wrapper around gtk_widget_set_allocation().
|
||||||
|
func (v *Widget) SetAllocation(allocation *Allocation) {
|
||||||
|
C.gtk_widget_set_allocation(v.native(), allocation.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// SizeAllocate is a wrapper around gtk_widget_size_allocate().
|
||||||
|
func (v *Widget) SizeAllocate(allocation *Allocation) {
|
||||||
|
C.gtk_widget_size_allocate(v.native(), allocation.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetStateFlags is a wrapper around gtk_widget_set_state_flags().
|
||||||
|
func (v *Widget) SetStateFlags(stateFlags StateFlags, clear bool) {
|
||||||
|
C.gtk_widget_set_state_flags(v.native(), C.GtkStateFlags(stateFlags), gbool(clear))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetWindow is a wrapper around gtk_widget_get_window().
|
||||||
|
func (v *Widget) GetWindow() (*gdk.Window, error) {
|
||||||
|
c := C.gtk_widget_get_window(v.native())
|
||||||
|
if c == nil {
|
||||||
|
return nil, nilPtrErr
|
||||||
|
}
|
||||||
|
|
||||||
|
w := &gdk.Window{wrapObject(unsafe.Pointer(c))}
|
||||||
|
return w, nil
|
||||||
|
}
|
@ -0,0 +1,46 @@
|
|||||||
|
// Copyright (c) 2013-2014 Conformal Systems <info@conformal.com>
|
||||||
|
//
|
||||||
|
// This file originated from: http://opensource.conformal.com/
|
||||||
|
//
|
||||||
|
// Permission to use, copy, modify, and distribute this software for any
|
||||||
|
// purpose with or without fee is hereby granted, provided that the above
|
||||||
|
// copyright notice and this permission notice appear in all copies.
|
||||||
|
//
|
||||||
|
// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||||
|
// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||||
|
// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||||
|
// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||||
|
// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||||
|
// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||||
|
// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
|
||||||
|
// This file includes wrapers for symbols included since GTK 3.12, and
|
||||||
|
// and should not be included in a build intended to target any older GTK
|
||||||
|
// versions. To target an older build, such as 3.10, use
|
||||||
|
// 'go build -tags gtk_3_10'. Otherwise, if no build tags are used, GTK 3.12
|
||||||
|
// is assumed and this file is built.
|
||||||
|
// +build !gtk_3_6,!gtk_3_8,!gtk_3_10
|
||||||
|
|
||||||
|
package gtk
|
||||||
|
|
||||||
|
// #cgo pkg-config: gtk+-3.0
|
||||||
|
// #include <gtk/gtk.h>
|
||||||
|
import "C"
|
||||||
|
|
||||||
|
func (v *Widget) SetMarginStart(margin int) {
|
||||||
|
C.gtk_widget_set_margin_start(v.native(), C.gint(margin))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (v *Widget) GetMarginStart() int {
|
||||||
|
c := C.gtk_widget_get_margin_start(v.native())
|
||||||
|
return int(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (v *Widget) SetMarginEnd(margin int) {
|
||||||
|
C.gtk_widget_set_margin_end(v.native(), C.gint(margin))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (v *Widget) GetMarginEnd() int {
|
||||||
|
c := C.gtk_widget_get_margin_end(v.native())
|
||||||
|
return int(c)
|
||||||
|
}
|
@ -0,0 +1,38 @@
|
|||||||
|
// Copyright (c) 2013-2014 Conformal Systems <info@conformal.com>
|
||||||
|
//
|
||||||
|
// This file originated from: http://opensource.conformal.com/
|
||||||
|
//
|
||||||
|
// Permission to use, copy, modify, and distribute this software for any
|
||||||
|
// purpose with or without fee is hereby granted, provided that the above
|
||||||
|
// copyright notice and this permission notice appear in all copies.
|
||||||
|
//
|
||||||
|
// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||||
|
// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||||
|
// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||||
|
// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||||
|
// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||||
|
// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||||
|
// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
|
||||||
|
// This file includes wrapers for symbols included since GTK 3.8, and
|
||||||
|
// and should not be included in a build intended to target any older GTK
|
||||||
|
// versions. To target an older build, such as 3.8, use
|
||||||
|
// 'go build -tags gtk_3_8'. Otherwise, if no build tags are used, GTK 3.18
|
||||||
|
// is assumed and this file is built.
|
||||||
|
// +build !gtk_3_6
|
||||||
|
|
||||||
|
package gtk
|
||||||
|
|
||||||
|
// #cgo pkg-config: gtk+-3.0
|
||||||
|
// #include <gtk/gtk.h>
|
||||||
|
import "C"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GtkWidget
|
||||||
|
*/
|
||||||
|
|
||||||
|
// IsVisible is a wrapper around gtk_widget_is_visible().
|
||||||
|
func (v *Widget) IsVisible() bool {
|
||||||
|
c := C.gtk_widget_is_visible(v.native())
|
||||||
|
return gobool(c)
|
||||||
|
}
|
@ -0,0 +1,609 @@
|
|||||||
|
// Same copyright and license as the rest of the files in this project
|
||||||
|
// This file contains accelerator related functions and structures
|
||||||
|
|
||||||
|
package gtk
|
||||||
|
|
||||||
|
// #include <gtk/gtk.h>
|
||||||
|
// #include "gtk.go.h"
|
||||||
|
import "C"
|
||||||
|
import (
|
||||||
|
"errors"
|
||||||
|
"unsafe"
|
||||||
|
|
||||||
|
"github.com/gotk3/gotk3/gdk"
|
||||||
|
"github.com/gotk3/gotk3/glib"
|
||||||
|
)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GtkWindow
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Window is a representation of GTK's GtkWindow.
|
||||||
|
type Window struct {
|
||||||
|
Bin
|
||||||
|
}
|
||||||
|
|
||||||
|
// IWindow is an interface type implemented by all structs embedding a
|
||||||
|
// Window. It is meant to be used as an argument type for wrapper
|
||||||
|
// functions that wrap around a C GTK function taking a GtkWindow.
|
||||||
|
type IWindow interface {
|
||||||
|
toWindow() *C.GtkWindow
|
||||||
|
}
|
||||||
|
|
||||||
|
// native returns a pointer to the underlying GtkWindow.
|
||||||
|
func (v *Window) native() *C.GtkWindow {
|
||||||
|
if v == nil || v.GObject == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
p := unsafe.Pointer(v.GObject)
|
||||||
|
return C.toGtkWindow(p)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (v *Window) toWindow() *C.GtkWindow {
|
||||||
|
if v == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return v.native()
|
||||||
|
}
|
||||||
|
|
||||||
|
func marshalWindow(p uintptr) (interface{}, error) {
|
||||||
|
c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
|
||||||
|
obj := wrapObject(unsafe.Pointer(c))
|
||||||
|
return wrapWindow(obj), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func wrapWindow(obj *glib.Object) *Window {
|
||||||
|
return &Window{Bin{Container{Widget{glib.InitiallyUnowned{obj}}}}}
|
||||||
|
}
|
||||||
|
|
||||||
|
// WindowNew is a wrapper around gtk_window_new().
|
||||||
|
func WindowNew(t WindowType) (*Window, error) {
|
||||||
|
c := C.gtk_window_new(C.GtkWindowType(t))
|
||||||
|
if c == nil {
|
||||||
|
return nil, nilPtrErr
|
||||||
|
}
|
||||||
|
return wrapWindow(wrapObject(unsafe.Pointer(c))), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetTitle is a wrapper around gtk_window_set_title().
|
||||||
|
func (v *Window) SetTitle(title string) {
|
||||||
|
cstr := C.CString(title)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
C.gtk_window_set_title(v.native(), (*C.gchar)(cstr))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetResizable is a wrapper around gtk_window_set_resizable().
|
||||||
|
func (v *Window) SetResizable(resizable bool) {
|
||||||
|
C.gtk_window_set_resizable(v.native(), gbool(resizable))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetResizable is a wrapper around gtk_window_get_resizable().
|
||||||
|
func (v *Window) GetResizable() bool {
|
||||||
|
c := C.gtk_window_get_resizable(v.native())
|
||||||
|
return gobool(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ActivateFocus is a wrapper around gtk_window_activate_focus().
|
||||||
|
func (v *Window) ActivateFocus() bool {
|
||||||
|
c := C.gtk_window_activate_focus(v.native())
|
||||||
|
return gobool(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ActivateDefault is a wrapper around gtk_window_activate_default().
|
||||||
|
func (v *Window) ActivateDefault() bool {
|
||||||
|
c := C.gtk_window_activate_default(v.native())
|
||||||
|
return gobool(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetModal is a wrapper around gtk_window_set_modal().
|
||||||
|
func (v *Window) SetModal(modal bool) {
|
||||||
|
C.gtk_window_set_modal(v.native(), gbool(modal))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetDefaultSize is a wrapper around gtk_window_set_default_size().
|
||||||
|
func (v *Window) SetDefaultSize(width, height int) {
|
||||||
|
C.gtk_window_set_default_size(v.native(), C.gint(width), C.gint(height))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetDefaultGeometry is a wrapper around gtk_window_set_default_geometry().
|
||||||
|
func (v *Window) SetDefaultGeometry(width, height int) {
|
||||||
|
C.gtk_window_set_default_geometry(v.native(), C.gint(width),
|
||||||
|
C.gint(height))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetScreen is a wrapper around gtk_window_get_screen().
|
||||||
|
func (v *Window) GetScreen() (*gdk.Screen, error) {
|
||||||
|
c := C.gtk_window_get_screen(v.native())
|
||||||
|
if c == nil {
|
||||||
|
return nil, nilPtrErr
|
||||||
|
}
|
||||||
|
|
||||||
|
s := &gdk.Screen{wrapObject(unsafe.Pointer(c))}
|
||||||
|
return s, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetIcon is a wrapper around gtk_window_set_icon().
|
||||||
|
func (v *Window) SetIcon(icon *gdk.Pixbuf) {
|
||||||
|
iconPtr := (*C.GdkPixbuf)(unsafe.Pointer(icon.Native()))
|
||||||
|
C.gtk_window_set_icon(v.native(), iconPtr)
|
||||||
|
}
|
||||||
|
|
||||||
|
// WindowSetDefaultIcon is a wrapper around gtk_window_set_default_icon().
|
||||||
|
func WindowSetDefaultIcon(icon *gdk.Pixbuf) {
|
||||||
|
iconPtr := (*C.GdkPixbuf)(unsafe.Pointer(icon.Native()))
|
||||||
|
C.gtk_window_set_default_icon(iconPtr)
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO(jrick) GdkGeometry GdkWindowHints.
|
||||||
|
/*
|
||||||
|
func (v *Window) SetGeometryHints() {
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
// SetGravity is a wrapper around gtk_window_set_gravity().
|
||||||
|
func (v *Window) SetGravity(gravity gdk.GdkGravity) {
|
||||||
|
C.gtk_window_set_gravity(v.native(), C.GdkGravity(gravity))
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO(jrick) GdkGravity.
|
||||||
|
/*
|
||||||
|
func (v *Window) GetGravity() {
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
// SetPosition is a wrapper around gtk_window_set_position().
|
||||||
|
func (v *Window) SetPosition(position WindowPosition) {
|
||||||
|
C.gtk_window_set_position(v.native(), C.GtkWindowPosition(position))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetTransientFor is a wrapper around gtk_window_set_transient_for().
|
||||||
|
func (v *Window) SetTransientFor(parent IWindow) {
|
||||||
|
var pw *C.GtkWindow = nil
|
||||||
|
if parent != nil {
|
||||||
|
pw = parent.toWindow()
|
||||||
|
}
|
||||||
|
C.gtk_window_set_transient_for(v.native(), pw)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetDestroyWithParent is a wrapper around
|
||||||
|
// gtk_window_set_destroy_with_parent().
|
||||||
|
func (v *Window) SetDestroyWithParent(setting bool) {
|
||||||
|
C.gtk_window_set_destroy_with_parent(v.native(), gbool(setting))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetHideTitlebarWhenMaximized is a wrapper around
|
||||||
|
// gtk_window_set_hide_titlebar_when_maximized().
|
||||||
|
func (v *Window) SetHideTitlebarWhenMaximized(setting bool) {
|
||||||
|
C.gtk_window_set_hide_titlebar_when_maximized(v.native(),
|
||||||
|
gbool(setting))
|
||||||
|
}
|
||||||
|
|
||||||
|
// IsActive is a wrapper around gtk_window_is_active().
|
||||||
|
func (v *Window) IsActive() bool {
|
||||||
|
c := C.gtk_window_is_active(v.native())
|
||||||
|
return gobool(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// HasToplevelFocus is a wrapper around gtk_window_has_toplevel_focus().
|
||||||
|
func (v *Window) HasToplevelFocus() bool {
|
||||||
|
c := C.gtk_window_has_toplevel_focus(v.native())
|
||||||
|
return gobool(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetFocus is a wrapper around gtk_window_get_focus().
|
||||||
|
func (v *Window) GetFocus() (*Widget, error) {
|
||||||
|
c := C.gtk_window_get_focus(v.native())
|
||||||
|
if c == nil {
|
||||||
|
return nil, nilPtrErr
|
||||||
|
}
|
||||||
|
return wrapWidget(wrapObject(unsafe.Pointer(c))), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetFocus is a wrapper around gtk_window_set_focus().
|
||||||
|
func (v *Window) SetFocus(w *Widget) {
|
||||||
|
C.gtk_window_set_focus(v.native(), w.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetDefaultWidget is a wrapper arround gtk_window_get_default_widget().
|
||||||
|
func (v *Window) GetDefaultWidget() *Widget {
|
||||||
|
c := C.gtk_window_get_default_widget(v.native())
|
||||||
|
if c == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
obj := wrapObject(unsafe.Pointer(c))
|
||||||
|
return wrapWidget(obj)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetDefault is a wrapper arround gtk_window_set_default().
|
||||||
|
func (v *Window) SetDefault(widget IWidget) {
|
||||||
|
C.gtk_window_set_default(v.native(), widget.toWidget())
|
||||||
|
}
|
||||||
|
|
||||||
|
// Present is a wrapper around gtk_window_present().
|
||||||
|
func (v *Window) Present() {
|
||||||
|
C.gtk_window_present(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// PresentWithTime is a wrapper around gtk_window_present_with_time().
|
||||||
|
func (v *Window) PresentWithTime(ts uint32) {
|
||||||
|
C.gtk_window_present_with_time(v.native(), C.guint32(ts))
|
||||||
|
}
|
||||||
|
|
||||||
|
// Iconify is a wrapper around gtk_window_iconify().
|
||||||
|
func (v *Window) Iconify() {
|
||||||
|
C.gtk_window_iconify(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deiconify is a wrapper around gtk_window_deiconify().
|
||||||
|
func (v *Window) Deiconify() {
|
||||||
|
C.gtk_window_deiconify(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// Stick is a wrapper around gtk_window_stick().
|
||||||
|
func (v *Window) Stick() {
|
||||||
|
C.gtk_window_stick(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// Unstick is a wrapper around gtk_window_unstick().
|
||||||
|
func (v *Window) Unstick() {
|
||||||
|
C.gtk_window_unstick(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// Maximize is a wrapper around gtk_window_maximize().
|
||||||
|
func (v *Window) Maximize() {
|
||||||
|
C.gtk_window_maximize(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// Unmaximize is a wrapper around gtk_window_unmaximize().
|
||||||
|
func (v *Window) Unmaximize() {
|
||||||
|
C.gtk_window_unmaximize(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fullscreen is a wrapper around gtk_window_fullscreen().
|
||||||
|
func (v *Window) Fullscreen() {
|
||||||
|
C.gtk_window_fullscreen(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// Unfullscreen is a wrapper around gtk_window_unfullscreen().
|
||||||
|
func (v *Window) Unfullscreen() {
|
||||||
|
C.gtk_window_unfullscreen(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetKeepAbove is a wrapper around gtk_window_set_keep_above().
|
||||||
|
func (v *Window) SetKeepAbove(setting bool) {
|
||||||
|
C.gtk_window_set_keep_above(v.native(), gbool(setting))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetKeepBelow is a wrapper around gtk_window_set_keep_below().
|
||||||
|
func (v *Window) SetKeepBelow(setting bool) {
|
||||||
|
C.gtk_window_set_keep_below(v.native(), gbool(setting))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetDecorated is a wrapper around gtk_window_set_decorated().
|
||||||
|
func (v *Window) SetDecorated(setting bool) {
|
||||||
|
C.gtk_window_set_decorated(v.native(), gbool(setting))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetDeletable is a wrapper around gtk_window_set_deletable().
|
||||||
|
func (v *Window) SetDeletable(setting bool) {
|
||||||
|
C.gtk_window_set_deletable(v.native(), gbool(setting))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetSkipTaskbarHint is a wrapper around gtk_window_set_skip_taskbar_hint().
|
||||||
|
func (v *Window) SetSkipTaskbarHint(setting bool) {
|
||||||
|
C.gtk_window_set_skip_taskbar_hint(v.native(), gbool(setting))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetSkipPagerHint is a wrapper around gtk_window_set_skip_pager_hint().
|
||||||
|
func (v *Window) SetSkipPagerHint(setting bool) {
|
||||||
|
C.gtk_window_set_skip_pager_hint(v.native(), gbool(setting))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetUrgencyHint is a wrapper around gtk_window_set_urgency_hint().
|
||||||
|
func (v *Window) SetUrgencyHint(setting bool) {
|
||||||
|
C.gtk_window_set_urgency_hint(v.native(), gbool(setting))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetAcceptFocus is a wrapper around gtk_window_set_accept_focus().
|
||||||
|
func (v *Window) SetAcceptFocus(setting bool) {
|
||||||
|
C.gtk_window_set_accept_focus(v.native(), gbool(setting))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetFocusOnMap is a wrapper around gtk_window_set_focus_on_map().
|
||||||
|
func (v *Window) SetFocusOnMap(setting bool) {
|
||||||
|
C.gtk_window_set_focus_on_map(v.native(), gbool(setting))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetStartupID is a wrapper around gtk_window_set_startup_id().
|
||||||
|
func (v *Window) SetStartupID(sid string) {
|
||||||
|
cstr := (*C.gchar)(C.CString(sid))
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
C.gtk_window_set_startup_id(v.native(), cstr)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetRole is a wrapper around gtk_window_set_role().
|
||||||
|
func (v *Window) SetRole(s string) {
|
||||||
|
cstr := (*C.gchar)(C.CString(s))
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
C.gtk_window_set_role(v.native(), cstr)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetWMClass is a wrapper around gtk_window_set_wmclass().
|
||||||
|
func (v *Window) SetWMClass(name, class string) {
|
||||||
|
cName := C.CString(name)
|
||||||
|
defer C.free(unsafe.Pointer(cName))
|
||||||
|
cClass := C.CString(class)
|
||||||
|
defer C.free(unsafe.Pointer(cClass))
|
||||||
|
C.gtk_window_set_wmclass(v.native(), (*C.gchar)(cName), (*C.gchar)(cClass))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetDecorated is a wrapper around gtk_window_get_decorated().
|
||||||
|
func (v *Window) GetDecorated() bool {
|
||||||
|
c := C.gtk_window_get_decorated(v.native())
|
||||||
|
return gobool(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetDeletable is a wrapper around gtk_window_get_deletable().
|
||||||
|
func (v *Window) GetDeletable() bool {
|
||||||
|
c := C.gtk_window_get_deletable(v.native())
|
||||||
|
return gobool(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// WindowGetDefaultIconName is a wrapper around gtk_window_get_default_icon_name().
|
||||||
|
func WindowGetDefaultIconName() (string, error) {
|
||||||
|
return stringReturn(C.gtk_window_get_default_icon_name())
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetDefaultSize is a wrapper around gtk_window_get_default_size().
|
||||||
|
func (v *Window) GetDefaultSize() (width, height int) {
|
||||||
|
var w, h C.gint
|
||||||
|
C.gtk_window_get_default_size(v.native(), &w, &h)
|
||||||
|
return int(w), int(h)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetDestroyWithParent is a wrapper around
|
||||||
|
// gtk_window_get_destroy_with_parent().
|
||||||
|
func (v *Window) GetDestroyWithParent() bool {
|
||||||
|
c := C.gtk_window_get_destroy_with_parent(v.native())
|
||||||
|
return gobool(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetHideTitlebarWhenMaximized is a wrapper around
|
||||||
|
// gtk_window_get_hide_titlebar_when_maximized().
|
||||||
|
func (v *Window) GetHideTitlebarWhenMaximized() bool {
|
||||||
|
c := C.gtk_window_get_hide_titlebar_when_maximized(v.native())
|
||||||
|
return gobool(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetIcon is a wrapper around gtk_window_get_icon().
|
||||||
|
func (v *Window) GetIcon() (*gdk.Pixbuf, error) {
|
||||||
|
c := C.gtk_window_get_icon(v.native())
|
||||||
|
if c == nil {
|
||||||
|
return nil, nilPtrErr
|
||||||
|
}
|
||||||
|
|
||||||
|
p := &gdk.Pixbuf{wrapObject(unsafe.Pointer(c))}
|
||||||
|
return p, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetIconName is a wrapper around gtk_window_get_icon_name().
|
||||||
|
func (v *Window) GetIconName() (string, error) {
|
||||||
|
return stringReturn(C.gtk_window_get_icon_name(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetModal is a wrapper around gtk_window_get_modal().
|
||||||
|
func (v *Window) GetModal() bool {
|
||||||
|
c := C.gtk_window_get_modal(v.native())
|
||||||
|
return gobool(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetPosition is a wrapper around gtk_window_get_position().
|
||||||
|
func (v *Window) GetPosition() (root_x, root_y int) {
|
||||||
|
var x, y C.gint
|
||||||
|
C.gtk_window_get_position(v.native(), &x, &y)
|
||||||
|
return int(x), int(y)
|
||||||
|
}
|
||||||
|
|
||||||
|
func stringReturn(c *C.gchar) (string, error) {
|
||||||
|
if c == nil {
|
||||||
|
return "", nilPtrErr
|
||||||
|
}
|
||||||
|
return C.GoString((*C.char)(c)), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetRole is a wrapper around gtk_window_get_role().
|
||||||
|
func (v *Window) GetRole() (string, error) {
|
||||||
|
return stringReturn(C.gtk_window_get_role(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetSize is a wrapper around gtk_window_get_size().
|
||||||
|
func (v *Window) GetSize() (width, height int) {
|
||||||
|
var w, h C.gint
|
||||||
|
C.gtk_window_get_size(v.native(), &w, &h)
|
||||||
|
return int(w), int(h)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetTitle is a wrapper around gtk_window_get_title().
|
||||||
|
func (v *Window) GetTitle() (string, error) {
|
||||||
|
return stringReturn(C.gtk_window_get_title(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetTransientFor is a wrapper around gtk_window_get_transient_for().
|
||||||
|
func (v *Window) GetTransientFor() (*Window, error) {
|
||||||
|
c := C.gtk_window_get_transient_for(v.native())
|
||||||
|
if c == nil {
|
||||||
|
return nil, nilPtrErr
|
||||||
|
}
|
||||||
|
return wrapWindow(wrapObject(unsafe.Pointer(c))), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetAttachedTo is a wrapper around gtk_window_get_attached_to().
|
||||||
|
func (v *Window) GetAttachedTo() (*Widget, error) {
|
||||||
|
c := C.gtk_window_get_attached_to(v.native())
|
||||||
|
if c == nil {
|
||||||
|
return nil, nilPtrErr
|
||||||
|
}
|
||||||
|
return wrapWidget(wrapObject(unsafe.Pointer(c))), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetSkipTaskbarHint is a wrapper around gtk_window_get_skip_taskbar_hint().
|
||||||
|
func (v *Window) GetSkipTaskbarHint() bool {
|
||||||
|
c := C.gtk_window_get_skip_taskbar_hint(v.native())
|
||||||
|
return gobool(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetSkipPagerHint is a wrapper around gtk_window_get_skip_pager_hint().
|
||||||
|
func (v *Window) GetSkipPagerHint() bool {
|
||||||
|
c := C.gtk_window_get_skip_taskbar_hint(v.native())
|
||||||
|
return gobool(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetUrgencyHint is a wrapper around gtk_window_get_urgency_hint().
|
||||||
|
func (v *Window) GetUrgencyHint() bool {
|
||||||
|
c := C.gtk_window_get_urgency_hint(v.native())
|
||||||
|
return gobool(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetAcceptFocus is a wrapper around gtk_window_get_accept_focus().
|
||||||
|
func (v *Window) GetAcceptFocus() bool {
|
||||||
|
c := C.gtk_window_get_accept_focus(v.native())
|
||||||
|
return gobool(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetFocusOnMap is a wrapper around gtk_window_get_focus_on_map().
|
||||||
|
func (v *Window) GetFocusOnMap() bool {
|
||||||
|
c := C.gtk_window_get_focus_on_map(v.native())
|
||||||
|
return gobool(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// HasGroup is a wrapper around gtk_window_has_group().
|
||||||
|
func (v *Window) HasGroup() bool {
|
||||||
|
c := C.gtk_window_has_group(v.native())
|
||||||
|
return gobool(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Move is a wrapper around gtk_window_move().
|
||||||
|
func (v *Window) Move(x, y int) {
|
||||||
|
C.gtk_window_move(v.native(), C.gint(x), C.gint(y))
|
||||||
|
}
|
||||||
|
|
||||||
|
// Resize is a wrapper around gtk_window_resize().
|
||||||
|
func (v *Window) Resize(width, height int) {
|
||||||
|
C.gtk_window_resize(v.native(), C.gint(width), C.gint(height))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ResizeToGeometry is a wrapper around gtk_window_resize_to_geometry().
|
||||||
|
func (v *Window) ResizeToGeometry(width, height int) {
|
||||||
|
C.gtk_window_resize_to_geometry(v.native(), C.gint(width), C.gint(height))
|
||||||
|
}
|
||||||
|
|
||||||
|
// WindowSetDefaultIconFromFile is a wrapper around gtk_window_set_default_icon_from_file().
|
||||||
|
func WindowSetDefaultIconFromFile(file string) error {
|
||||||
|
cstr := C.CString(file)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
var err *C.GError = nil
|
||||||
|
res := C.gtk_window_set_default_icon_from_file((*C.gchar)(cstr), &err)
|
||||||
|
if res == 0 {
|
||||||
|
defer C.g_error_free(err)
|
||||||
|
return errors.New(C.GoString((*C.char)(err.message)))
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// WindowSetDefaultIconName is a wrapper around gtk_window_set_default_icon_name().
|
||||||
|
func WindowSetDefaultIconName(s string) {
|
||||||
|
cstr := (*C.gchar)(C.CString(s))
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
C.gtk_window_set_default_icon_name(cstr)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetIconFromFile is a wrapper around gtk_window_set_icon_from_file().
|
||||||
|
func (v *Window) SetIconFromFile(file string) error {
|
||||||
|
cstr := C.CString(file)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
var err *C.GError = nil
|
||||||
|
res := C.gtk_window_set_icon_from_file(v.native(), (*C.gchar)(cstr), &err)
|
||||||
|
if res == 0 {
|
||||||
|
defer C.g_error_free(err)
|
||||||
|
return errors.New(C.GoString((*C.char)(err.message)))
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetIconName is a wrapper around gtk_window_set_icon_name().
|
||||||
|
func (v *Window) SetIconName(name string) {
|
||||||
|
cstr := C.CString(name)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
C.gtk_window_set_icon_name(v.native(), (*C.gchar)(cstr))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetAutoStartupNotification is a wrapper around
|
||||||
|
// gtk_window_set_auto_startup_notification().
|
||||||
|
// This doesn't seem write. Might need to rethink?
|
||||||
|
/*
|
||||||
|
func (v *Window) SetAutoStartupNotification(setting bool) {
|
||||||
|
C.gtk_window_set_auto_startup_notification(gbool(setting))
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
// GetMnemonicsVisible is a wrapper around
|
||||||
|
// gtk_window_get_mnemonics_visible().
|
||||||
|
func (v *Window) GetMnemonicsVisible() bool {
|
||||||
|
c := C.gtk_window_get_mnemonics_visible(v.native())
|
||||||
|
return gobool(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetMnemonicsVisible is a wrapper around
|
||||||
|
// gtk_window_get_mnemonics_visible().
|
||||||
|
func (v *Window) SetMnemonicsVisible(setting bool) {
|
||||||
|
C.gtk_window_set_mnemonics_visible(v.native(), gbool(setting))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetFocusVisible is a wrapper around gtk_window_get_focus_visible().
|
||||||
|
func (v *Window) GetFocusVisible() bool {
|
||||||
|
c := C.gtk_window_get_focus_visible(v.native())
|
||||||
|
return gobool(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetFocusVisible is a wrapper around gtk_window_set_focus_visible().
|
||||||
|
func (v *Window) SetFocusVisible(setting bool) {
|
||||||
|
C.gtk_window_set_focus_visible(v.native(), gbool(setting))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetApplication is a wrapper around gtk_window_get_application().
|
||||||
|
func (v *Window) GetApplication() (*Application, error) {
|
||||||
|
c := C.gtk_window_get_application(v.native())
|
||||||
|
if c == nil {
|
||||||
|
return nil, nilPtrErr
|
||||||
|
}
|
||||||
|
|
||||||
|
return wrapApplication(wrapObject(unsafe.Pointer(c))), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetApplication is a wrapper around gtk_window_set_application().
|
||||||
|
func (v *Window) SetApplication(a *Application) {
|
||||||
|
C.gtk_window_set_application(v.native(), a.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO gtk_window_activate_key().
|
||||||
|
// TODO gtk_window_add_mnemonic().
|
||||||
|
// TODO gtk_window_begin_move_drag().
|
||||||
|
// TODO gtk_window_begin_resize_drag().
|
||||||
|
// TODO gtk_window_get_default_icon_list().
|
||||||
|
// TODO gtk_window_get_group().
|
||||||
|
// TODO gtk_window_get_icon_list().
|
||||||
|
// TODO gtk_window_get_mnemonic_modifier().
|
||||||
|
// TODO gtk_window_get_type_hint().
|
||||||
|
// TODO gtk_window_get_window_type().
|
||||||
|
// TODO gtk_window_list_toplevels().
|
||||||
|
// TODO gtk_window_mnemonic_activate().
|
||||||
|
// TODO gtk_window_parse_geometry().
|
||||||
|
// TODO gtk_window_propogate_key_event().
|
||||||
|
// TODO gtk_window_remove_mnemonic().
|
||||||
|
// TODO gtk_window_set_attached_to().
|
||||||
|
// TODO gtk_window_set_default_icon_list().
|
||||||
|
// TODO gtk_window_set_icon_list().
|
||||||
|
// TODO gtk_window_set_mnemonic_modifier().
|
||||||
|
// TODO gtk_window_set_screen().
|
||||||
|
// TODO gtk_window_set_type_hint().
|
||||||
|
// TODO gtk_window_get_resize_grip_area().
|
@ -0,0 +1,27 @@
|
|||||||
|
// Same copyright and license as the rest of the files in this project
|
||||||
|
// This file contains accelerator related functions and structures
|
||||||
|
|
||||||
|
// +build !gtk_3_6,!gtk_3_8
|
||||||
|
// not use this: go build -tags gtk_3_8'. Otherwise, if no build tags are used, GTK 3.10
|
||||||
|
|
||||||
|
package gtk
|
||||||
|
|
||||||
|
// #cgo pkg-config: gtk+-3.0
|
||||||
|
// #include <stdlib.h>
|
||||||
|
// #include <gtk/gtk.h>
|
||||||
|
// #include "gtk_since_3_10.go.h"
|
||||||
|
import "C"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GtkWindow
|
||||||
|
*/
|
||||||
|
|
||||||
|
// SetTitlebar is a wrapper around gtk_window_set_titlebar().
|
||||||
|
func (v *Window) SetTitlebar(titlebar IWidget) {
|
||||||
|
C.gtk_window_set_titlebar(v.native(), titlebar.toWidget())
|
||||||
|
}
|
||||||
|
|
||||||
|
// Close is a wrapper around gtk_window_close().
|
||||||
|
func (v *Window) Close() {
|
||||||
|
C.gtk_window_close(v.native())
|
||||||
|
}
|
@ -0,0 +1,357 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2015- terrak <terrak1975@gmail.com>
|
||||||
|
*
|
||||||
|
* This file originated from: http://www.terrak.net/
|
||||||
|
*
|
||||||
|
* Permission to use, copy, modify, and distribute this software for any
|
||||||
|
* purpose with or without fee is hereby granted, provided that the above
|
||||||
|
* copyright notice and this permission notice appear in all copies.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||||
|
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||||
|
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||||
|
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||||
|
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||||
|
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||||
|
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package pango
|
||||||
|
|
||||||
|
// #cgo pkg-config: pango
|
||||||
|
// #include <pango/pango.h>
|
||||||
|
// #include "pango.go.h"
|
||||||
|
import "C"
|
||||||
|
import (
|
||||||
|
"unsafe"
|
||||||
|
|
||||||
|
"github.com/gotk3/gotk3/glib"
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
tm := []glib.TypeMarshaler{
|
||||||
|
// Enums
|
||||||
|
{glib.Type(C.pango_attr_type_get_type()), marshalAttrType},
|
||||||
|
{glib.Type(C.pango_underline_get_type()), marshalUnderline},
|
||||||
|
}
|
||||||
|
glib.RegisterGValueMarshalers(tm)
|
||||||
|
}
|
||||||
|
|
||||||
|
/* PangoColor */
|
||||||
|
|
||||||
|
// Color is a representation of PangoColor.
|
||||||
|
type Color struct {
|
||||||
|
pangoColor *C.PangoColor
|
||||||
|
}
|
||||||
|
|
||||||
|
// Native returns a pointer to the underlying PangoColor.
|
||||||
|
func (v *Color) Native() uintptr {
|
||||||
|
return uintptr(unsafe.Pointer(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (v *Color) native() *C.PangoColor {
|
||||||
|
return (*C.PangoColor)(unsafe.Pointer(v.pangoColor))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (v *Color) Set(red, green, blue uint16) {
|
||||||
|
v.native().red = C.guint16(red)
|
||||||
|
v.native().green = C.guint16(green)
|
||||||
|
v.native().blue = C.guint16(blue)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (v *Color) Get() (red, green, blue uint16) {
|
||||||
|
return uint16(v.native().red), uint16(v.native().green), uint16(v.native().blue)
|
||||||
|
}
|
||||||
|
|
||||||
|
//PangoColor *pango_color_copy (const PangoColor *src);
|
||||||
|
func (v *Color) Copy(c *Color) *Color {
|
||||||
|
w := new(Color)
|
||||||
|
w.pangoColor = C.pango_color_copy(v.native())
|
||||||
|
return w
|
||||||
|
}
|
||||||
|
|
||||||
|
//void pango_color_free (PangoColor *color);
|
||||||
|
func (v *Color) Free() {
|
||||||
|
C.pango_color_free(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
//gboolean pango_color_parse (PangoColor *color,
|
||||||
|
// const char *spec);
|
||||||
|
func (v *Color) Parse(spec string) bool {
|
||||||
|
cstr := C.CString(spec)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
c := C.pango_color_parse(v.native(), (*C.char)(cstr))
|
||||||
|
return gobool(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
//gchar *pango_color_to_string(const PangoColor *color);
|
||||||
|
func (v *Color) ToString() string {
|
||||||
|
c := C.pango_color_to_string(v.native())
|
||||||
|
return C.GoString((*C.char)(c))
|
||||||
|
}
|
||||||
|
|
||||||
|
/* --- --- --- Attributes --- --- --- */
|
||||||
|
|
||||||
|
// AttrList is a representation of PangoAttrList.
|
||||||
|
type AttrList struct {
|
||||||
|
pangoAttrList *C.PangoAttrList
|
||||||
|
}
|
||||||
|
|
||||||
|
// Native returns a pointer to the underlying PangoLayout.
|
||||||
|
func (v *AttrList) Native() uintptr {
|
||||||
|
return uintptr(unsafe.Pointer(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (v *AttrList) native() *C.PangoAttrList {
|
||||||
|
return (*C.PangoAttrList)(unsafe.Pointer(v.pangoAttrList))
|
||||||
|
}
|
||||||
|
|
||||||
|
// AttrType is a representation of Pango's PangoAttrType.
|
||||||
|
type AttrType int
|
||||||
|
|
||||||
|
const (
|
||||||
|
ATTR_INVALID AttrType = C.PANGO_ATTR_INVALID /* 0 is an invalid attribute type */
|
||||||
|
ATTR_LANGUAGE AttrType = C.PANGO_ATTR_LANGUAGE /* PangoAttrLanguage */
|
||||||
|
ATTR_FAMILY AttrType = C.PANGO_ATTR_FAMILY /* PangoAttrString */
|
||||||
|
ATTR_STYLE AttrType = C.PANGO_ATTR_STYLE /* PangoAttrInt */
|
||||||
|
ATTR_WEIGHT AttrType = C.PANGO_ATTR_WEIGHT /* PangoAttrInt */
|
||||||
|
ATTR_VARIANT AttrType = C.PANGO_ATTR_VARIANT /* PangoAttrInt */
|
||||||
|
ATTR_STRETCH AttrType = C.PANGO_ATTR_STRETCH /* PangoAttrInt */
|
||||||
|
ATTR_SIZE AttrType = C.PANGO_ATTR_SIZE /* PangoAttrSize */
|
||||||
|
ATTR_FONT_DESC AttrType = C.PANGO_ATTR_FONT_DESC /* PangoAttrFontDesc */
|
||||||
|
ATTR_FOREGROUND AttrType = C.PANGO_ATTR_FOREGROUND /* PangoAttrColor */
|
||||||
|
ATTR_BACKGROUND AttrType = C.PANGO_ATTR_BACKGROUND /* PangoAttrColor */
|
||||||
|
ATTR_UNDERLINE AttrType = C.PANGO_ATTR_UNDERLINE /* PangoAttrInt */
|
||||||
|
ATTR_STRIKETHROUGH AttrType = C.PANGO_ATTR_STRIKETHROUGH /* PangoAttrInt */
|
||||||
|
ATTR_RISE AttrType = C.PANGO_ATTR_RISE /* PangoAttrInt */
|
||||||
|
ATTR_SHAPE AttrType = C.PANGO_ATTR_SHAPE /* PangoAttrShape */
|
||||||
|
ATTR_SCALE AttrType = C.PANGO_ATTR_SCALE /* PangoAttrFloat */
|
||||||
|
ATTR_FALLBACK AttrType = C.PANGO_ATTR_FALLBACK /* PangoAttrInt */
|
||||||
|
ATTR_LETTER_SPACING AttrType = C.PANGO_ATTR_LETTER_SPACING /* PangoAttrInt */
|
||||||
|
ATTR_UNDERLINE_COLOR AttrType = C.PANGO_ATTR_UNDERLINE_COLOR /* PangoAttrColor */
|
||||||
|
ATTR_STRIKETHROUGH_COLOR AttrType = C.PANGO_ATTR_STRIKETHROUGH_COLOR /* PangoAttrColor */
|
||||||
|
ATTR_ABSOLUTE_SIZE AttrType = C.PANGO_ATTR_ABSOLUTE_SIZE /* PangoAttrSize */
|
||||||
|
ATTR_GRAVITY AttrType = C.PANGO_ATTR_GRAVITY /* PangoAttrInt */
|
||||||
|
ATTR_GRAVITY_HINT AttrType = C.PANGO_ATTR_GRAVITY_HINT /* PangoAttrInt */
|
||||||
|
|
||||||
|
)
|
||||||
|
|
||||||
|
func marshalAttrType(p uintptr) (interface{}, error) {
|
||||||
|
c := C.g_value_get_enum((*C.GValue)(unsafe.Pointer(p)))
|
||||||
|
return AttrType(c), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Underline is a representation of Pango's PangoUnderline.
|
||||||
|
type Underline int
|
||||||
|
|
||||||
|
const (
|
||||||
|
UNDERLINE_NONE Underline = C.PANGO_UNDERLINE_NONE
|
||||||
|
UNDERLINE_SINGLE Underline = C.PANGO_UNDERLINE_SINGLE
|
||||||
|
UNDERLINE_DOUBLE Underline = C.PANGO_UNDERLINE_DOUBLE
|
||||||
|
UNDERLINE_LOW Underline = C.PANGO_UNDERLINE_LOW
|
||||||
|
UNDERLINE_ERROR Underline = C.PANGO_UNDERLINE_ERROR
|
||||||
|
)
|
||||||
|
|
||||||
|
func marshalUnderline(p uintptr) (interface{}, error) {
|
||||||
|
c := C.g_value_get_enum((*C.GValue)(unsafe.Pointer(p)))
|
||||||
|
return Underline(c), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
const (
|
||||||
|
ATTR_INDEX_FROM_TEXT_BEGINNING uint = 0
|
||||||
|
ATTR_INDEX_TO_TEXT_END uint = C.G_MAXUINT
|
||||||
|
)
|
||||||
|
|
||||||
|
// Attribute is a representation of Pango's PangoAttribute.
|
||||||
|
type Attribute struct {
|
||||||
|
pangoAttribute *C.PangoAttribute
|
||||||
|
//start_index, end_index uint
|
||||||
|
}
|
||||||
|
|
||||||
|
// Native returns a pointer to the underlying PangoColor.
|
||||||
|
func (v *Attribute) Native() uintptr {
|
||||||
|
return uintptr(unsafe.Pointer(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (v *Attribute) native() *C.PangoAttribute {
|
||||||
|
return (*C.PangoAttribute)(unsafe.Pointer(v.pangoAttribute))
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
//typedef gboolean (*PangoAttrFilterFunc) (PangoAttribute *attribute,
|
||||||
|
// gpointer user_data);
|
||||||
|
func (v *Attribute) AttrFilterFunc(user_data uintptr) bool {
|
||||||
|
c := C.PangoAttrFilterFunc(Attribute.native(), C.gpointer(user_data))
|
||||||
|
return gobool(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
//typedef gpointer (*PangoAttrDataCopyFunc) (gconstpointer user_data);
|
||||||
|
func AttrDataCopyFunc(user_data uintptr) uintptr {
|
||||||
|
c := C.PangoAttrDataCopyFunc(C.gpointer(user_data))
|
||||||
|
return uintptr(c)
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
// AttrClass is a representation of Pango's PangoAttrClass.
|
||||||
|
type AttrClass struct {
|
||||||
|
//PangoAttrType type;
|
||||||
|
}
|
||||||
|
|
||||||
|
// AttrString is a representation of Pango's PangoAttrString.
|
||||||
|
type AttrString struct {
|
||||||
|
Attribute
|
||||||
|
//char *value;
|
||||||
|
}
|
||||||
|
|
||||||
|
// AttrLanguage is a representation of Pango's PangoAttrLanguage.
|
||||||
|
type AttrLanguage struct {
|
||||||
|
Attribute
|
||||||
|
//PangoLanguage *value;
|
||||||
|
}
|
||||||
|
|
||||||
|
// AttrInt is a representation of Pango's PangoAttrInt.
|
||||||
|
type AttrInt struct {
|
||||||
|
Attribute
|
||||||
|
//int value;
|
||||||
|
}
|
||||||
|
|
||||||
|
// AttrFloat is a representation of Pango's PangoAttrFloat.
|
||||||
|
type AttrFloat struct {
|
||||||
|
Attribute
|
||||||
|
//double value;
|
||||||
|
}
|
||||||
|
|
||||||
|
// AttrColor is a representation of Pango's AttrColor.
|
||||||
|
type AttrColor struct {
|
||||||
|
Attribute
|
||||||
|
Color
|
||||||
|
}
|
||||||
|
|
||||||
|
// AttrSize is a representation of Pango's PangoAttrSize.
|
||||||
|
type AttrSize struct {
|
||||||
|
Attribute
|
||||||
|
//int size;
|
||||||
|
//guint absolute : 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// AttrShape is a representation of Pango's PangoAttrShape.
|
||||||
|
type AttrShape struct {
|
||||||
|
Attribute
|
||||||
|
//PangoRectangle ink_rect;
|
||||||
|
//PangoRectangle logical_rect;
|
||||||
|
|
||||||
|
//gpointer data;
|
||||||
|
//PangoAttrDataCopyFunc copy_func;
|
||||||
|
//GDestroyNotify destroy_func;
|
||||||
|
}
|
||||||
|
|
||||||
|
// AttrFontDesc is a representation of Pango's PangoAttrFontDesc.
|
||||||
|
type AttrFontDesc struct {
|
||||||
|
Attribute
|
||||||
|
//PangoFontDescription *desc;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
PangoAttrType pango_attr_type_register (const gchar *name);
|
||||||
|
const char * pango_attr_type_get_name (PangoAttrType type) G_GNUC_CONST;
|
||||||
|
|
||||||
|
void pango_attribute_init (PangoAttribute *attr,
|
||||||
|
const PangoAttrClass *klass);
|
||||||
|
PangoAttribute * pango_attribute_copy (const PangoAttribute *attr);
|
||||||
|
void pango_attribute_destroy (PangoAttribute *attr);
|
||||||
|
gboolean pango_attribute_equal (const PangoAttribute *attr1,
|
||||||
|
const PangoAttribute *attr2) G_GNUC_PURE;
|
||||||
|
|
||||||
|
PangoAttribute *pango_attr_language_new (PangoLanguage *language);
|
||||||
|
PangoAttribute *pango_attr_family_new (const char *family);
|
||||||
|
PangoAttribute *pango_attr_foreground_new (guint16 red,
|
||||||
|
guint16 green,
|
||||||
|
guint16 blue);
|
||||||
|
PangoAttribute *pango_attr_background_new (guint16 red,
|
||||||
|
guint16 green,
|
||||||
|
guint16 blue);
|
||||||
|
PangoAttribute *pango_attr_size_new (int size);
|
||||||
|
PangoAttribute *pango_attr_size_new_absolute (int size);
|
||||||
|
PangoAttribute *pango_attr_style_new (PangoStyle style);
|
||||||
|
PangoAttribute *pango_attr_weight_new (PangoWeight weight);
|
||||||
|
PangoAttribute *pango_attr_variant_new (PangoVariant variant);
|
||||||
|
PangoAttribute *pango_attr_stretch_new (PangoStretch stretch);
|
||||||
|
PangoAttribute *pango_attr_font_desc_new (const PangoFontDescription *desc);
|
||||||
|
|
||||||
|
PangoAttribute *pango_attr_underline_new (PangoUnderline underline);
|
||||||
|
PangoAttribute *pango_attr_underline_color_new (guint16 red,
|
||||||
|
guint16 green,
|
||||||
|
guint16 blue);
|
||||||
|
PangoAttribute *pango_attr_strikethrough_new (gboolean strikethrough);
|
||||||
|
PangoAttribute *pango_attr_strikethrough_color_new (guint16 red,
|
||||||
|
guint16 green,
|
||||||
|
guint16 blue);
|
||||||
|
|
||||||
|
PangoAttribute *pango_attr_rise_new (int rise);
|
||||||
|
PangoAttribute *pango_attr_scale_new (double scale_factor);
|
||||||
|
PangoAttribute *pango_attr_fallback_new (gboolean enable_fallback);
|
||||||
|
PangoAttribute *pango_attr_letter_spacing_new (int letter_spacing);
|
||||||
|
|
||||||
|
PangoAttribute *pango_attr_shape_new (const PangoRectangle *ink_rect,
|
||||||
|
const PangoRectangle *logical_rect);
|
||||||
|
PangoAttribute *pango_attr_shape_new_with_data (const PangoRectangle *ink_rect,
|
||||||
|
const PangoRectangle *logical_rect,
|
||||||
|
gpointer data,
|
||||||
|
PangoAttrDataCopyFunc copy_func,
|
||||||
|
GDestroyNotify destroy_func);
|
||||||
|
|
||||||
|
PangoAttribute *pango_attr_gravity_new (PangoGravity gravity);
|
||||||
|
PangoAttribute *pango_attr_gravity_hint_new (PangoGravityHint hint);
|
||||||
|
|
||||||
|
GType pango_attr_list_get_type (void) G_GNUC_CONST;
|
||||||
|
PangoAttrList * pango_attr_list_new (void);
|
||||||
|
PangoAttrList * pango_attr_list_ref (PangoAttrList *list);
|
||||||
|
void pango_attr_list_unref (PangoAttrList *list);
|
||||||
|
PangoAttrList * pango_attr_list_copy (PangoAttrList *list);
|
||||||
|
void pango_attr_list_insert (PangoAttrList *list,
|
||||||
|
PangoAttribute *attr);
|
||||||
|
void pango_attr_list_insert_before (PangoAttrList *list,
|
||||||
|
PangoAttribute *attr);
|
||||||
|
void pango_attr_list_change (PangoAttrList *list,
|
||||||
|
PangoAttribute *attr);
|
||||||
|
void pango_attr_list_splice (PangoAttrList *list,
|
||||||
|
PangoAttrList *other,
|
||||||
|
gint pos,
|
||||||
|
gint len);
|
||||||
|
|
||||||
|
PangoAttrList *pango_attr_list_filter (PangoAttrList *list,
|
||||||
|
PangoAttrFilterFunc func,
|
||||||
|
gpointer data);
|
||||||
|
|
||||||
|
PangoAttrIterator *pango_attr_list_get_iterator (PangoAttrList *list);
|
||||||
|
|
||||||
|
void pango_attr_iterator_range (PangoAttrIterator *iterator,
|
||||||
|
gint *start,
|
||||||
|
gint *end);
|
||||||
|
gboolean pango_attr_iterator_next (PangoAttrIterator *iterator);
|
||||||
|
PangoAttrIterator *pango_attr_iterator_copy (PangoAttrIterator *iterator);
|
||||||
|
void pango_attr_iterator_destroy (PangoAttrIterator *iterator);
|
||||||
|
PangoAttribute * pango_attr_iterator_get (PangoAttrIterator *iterator,
|
||||||
|
PangoAttrType type);
|
||||||
|
void pango_attr_iterator_get_font (PangoAttrIterator *iterator,
|
||||||
|
PangoFontDescription *desc,
|
||||||
|
PangoLanguage **language,
|
||||||
|
GSList **extra_attrs);
|
||||||
|
GSList * pango_attr_iterator_get_attrs (PangoAttrIterator *iterator);
|
||||||
|
|
||||||
|
|
||||||
|
gboolean pango_parse_markup (const char *markup_text,
|
||||||
|
int length,
|
||||||
|
gunichar accel_marker,
|
||||||
|
PangoAttrList **attr_list,
|
||||||
|
char **text,
|
||||||
|
gunichar *accel_char,
|
||||||
|
GError **error);
|
||||||
|
|
||||||
|
GMarkupParseContext * pango_markup_parser_new (gunichar accel_marker);
|
||||||
|
gboolean pango_markup_parser_finish (GMarkupParseContext *context,
|
||||||
|
PangoAttrList **attr_list,
|
||||||
|
char **text,
|
||||||
|
gunichar *accel_char,
|
||||||
|
GError **error);
|
||||||
|
*/
|
@ -0,0 +1,27 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2015- terrak <terrak1975@gmail.com>
|
||||||
|
*
|
||||||
|
* This file originated from: http://www.terrak.net/
|
||||||
|
*
|
||||||
|
* Permission to use, copy, modify, and distribute this software for any
|
||||||
|
* purpose with or without fee is hereby granted, provided that the above
|
||||||
|
* copyright notice and this permission notice appear in all copies.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||||
|
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||||
|
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||||
|
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||||
|
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||||
|
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||||
|
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
static PangoColor* toPangoColor(void *p)
|
||||||
|
{
|
||||||
|
return ( (PangoColor*) (p) );
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,135 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2015- terrak <terrak1975@gmail.com>
|
||||||
|
*
|
||||||
|
* This file originated from: http://www.terrak.net/
|
||||||
|
*
|
||||||
|
* Permission to use, copy, modify, and distribute this software for any
|
||||||
|
* purpose with or without fee is hereby granted, provided that the above
|
||||||
|
* copyright notice and this permission notice appear in all copies.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||||
|
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||||
|
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||||
|
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||||
|
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||||
|
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||||
|
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package pango
|
||||||
|
|
||||||
|
// #cgo pkg-config: pango
|
||||||
|
// #include <pango/pango.h>
|
||||||
|
// #include "pango.go.h"
|
||||||
|
import "C"
|
||||||
|
import (
|
||||||
|
"unsafe"
|
||||||
|
|
||||||
|
"github.com/gotk3/gotk3/glib"
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
tm := []glib.TypeMarshaler{
|
||||||
|
// Enums
|
||||||
|
// {glib.Type(C.pango_alignment_get_type()), marshalAlignment},
|
||||||
|
// {glib.Type(C.pango_ellipsize_mode_get_type()), marshalEllipsizeMode},
|
||||||
|
// {glib.Type(C.pango_wrap_mode_get_type()), marshalWrapMode},
|
||||||
|
|
||||||
|
// Objects/Interfaces
|
||||||
|
// {glib.Type(C.pango_context_get_type()), marshalContext},
|
||||||
|
}
|
||||||
|
glib.RegisterGValueMarshalers(tm)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Context is a representation of PangoContext.
|
||||||
|
type Context struct {
|
||||||
|
pangoContext *C.PangoContext
|
||||||
|
}
|
||||||
|
|
||||||
|
// Native returns a pointer to the underlying PangoLayout.
|
||||||
|
func (v *Context) Native() uintptr {
|
||||||
|
return uintptr(unsafe.Pointer(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (v *Context) native() *C.PangoContext {
|
||||||
|
return (*C.PangoContext)(unsafe.Pointer(v.pangoContext))
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
func marshalContext(p uintptr) (interface{}, error) {
|
||||||
|
c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
|
||||||
|
obj := wrapObject(unsafe.Pointer(c))
|
||||||
|
return wrapContext(obj), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func wrapContext(obj *glib.Object) *Context {
|
||||||
|
return &Context{obj}
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
//PangoContext *pango_context_new (void);
|
||||||
|
func ContextNew() *Context {
|
||||||
|
c := C.pango_context_new()
|
||||||
|
|
||||||
|
context := new(Context)
|
||||||
|
context.pangoContext = (*C.PangoContext)(c)
|
||||||
|
|
||||||
|
return context
|
||||||
|
}
|
||||||
|
|
||||||
|
//void pango_context_changed (PangoContext *context);
|
||||||
|
//void pango_context_set_font_map (PangoContext *context,
|
||||||
|
// PangoFontMap *font_map);
|
||||||
|
//PangoFontMap *pango_context_get_font_map (PangoContext *context);
|
||||||
|
//guint pango_context_get_serial (PangoContext *context);
|
||||||
|
//void pango_context_list_families (PangoContext *context,
|
||||||
|
// PangoFontFamily ***families,
|
||||||
|
// int *n_families);
|
||||||
|
//PangoFont * pango_context_load_font (PangoContext *context,
|
||||||
|
// const PangoFontDescription *desc);
|
||||||
|
//PangoFontset *pango_context_load_fontset (PangoContext *context,
|
||||||
|
// const PangoFontDescription *desc,
|
||||||
|
// PangoLanguage *language);
|
||||||
|
//
|
||||||
|
//PangoFontMetrics *pango_context_get_metrics (PangoContext *context,
|
||||||
|
// const PangoFontDescription *desc,
|
||||||
|
// PangoLanguage *language);
|
||||||
|
//
|
||||||
|
//void pango_context_set_font_description (PangoContext *context,
|
||||||
|
// const PangoFontDescription *desc);
|
||||||
|
//PangoFontDescription * pango_context_get_font_description (PangoContext *context);
|
||||||
|
//PangoLanguage *pango_context_get_language (PangoContext *context);
|
||||||
|
//void pango_context_set_language (PangoContext *context,
|
||||||
|
// PangoLanguage *language);
|
||||||
|
//void pango_context_set_base_dir (PangoContext *context,
|
||||||
|
// PangoDirection direction);
|
||||||
|
//PangoDirection pango_context_get_base_dir (PangoContext *context);
|
||||||
|
//void pango_context_set_base_gravity (PangoContext *context,
|
||||||
|
// PangoGravity gravity);
|
||||||
|
//PangoGravity pango_context_get_base_gravity (PangoContext *context);
|
||||||
|
//PangoGravity pango_context_get_gravity (PangoContext *context);
|
||||||
|
//void pango_context_set_gravity_hint (PangoContext *context,
|
||||||
|
// PangoGravityHint hint);
|
||||||
|
//PangoGravityHint pango_context_get_gravity_hint (PangoContext *context);
|
||||||
|
//
|
||||||
|
//void pango_context_set_matrix (PangoContext *context,
|
||||||
|
// const PangoMatrix *matrix);
|
||||||
|
//const PangoMatrix * pango_context_get_matrix (PangoContext *context);
|
||||||
|
|
||||||
|
/* Break a string of Unicode characters into segments with
|
||||||
|
* consistent shaping/language engine and bidrectional level.
|
||||||
|
* Returns a #GList of #PangoItem's
|
||||||
|
*/
|
||||||
|
//GList *pango_itemize (PangoContext *context,
|
||||||
|
// const char *text,
|
||||||
|
// int start_index,
|
||||||
|
// int length,
|
||||||
|
// PangoAttrList *attrs,
|
||||||
|
// PangoAttrIterator *cached_iter);
|
||||||
|
//GList *pango_itemize_with_base_dir (PangoContext *context,
|
||||||
|
// PangoDirection base_dir,
|
||||||
|
// const char *text,
|
||||||
|
// int start_index,
|
||||||
|
// int length,
|
||||||
|
// PangoAttrList *attrs,
|
||||||
|
// PangoAttrIterator *cached_iter);
|
@ -0,0 +1,706 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2015- terrak <terrak1975@gmail.com>
|
||||||
|
*
|
||||||
|
* This file originated from: http://www.terrak.net/
|
||||||
|
*
|
||||||
|
* Permission to use, copy, modify, and distribute this software for any
|
||||||
|
* purpose with or without fee is hereby granted, provided that the above
|
||||||
|
* copyright notice and this permission notice appear in all copies.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||||
|
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||||
|
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||||
|
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||||
|
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||||
|
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||||
|
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package pango
|
||||||
|
|
||||||
|
// #cgo pkg-config: pango
|
||||||
|
// #include <pango/pango.h>
|
||||||
|
// #include "pango.go.h"
|
||||||
|
import "C"
|
||||||
|
import (
|
||||||
|
// "github.com/andre-hub/gotk3/glib"
|
||||||
|
// "github.com/andre-hub/gotk3/cairo"
|
||||||
|
"unsafe"
|
||||||
|
|
||||||
|
"github.com/gotk3/gotk3/glib"
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
tm := []glib.TypeMarshaler{
|
||||||
|
// Enums
|
||||||
|
// Objects/Interfaces
|
||||||
|
{glib.Type(C.pango_font_description_get_type()), marshalFontDescription},
|
||||||
|
}
|
||||||
|
glib.RegisterGValueMarshalers(tm)
|
||||||
|
}
|
||||||
|
|
||||||
|
// FontDescription is a representation of PangoFontDescription.
|
||||||
|
type FontDescription struct {
|
||||||
|
pangoFontDescription *C.PangoFontDescription
|
||||||
|
}
|
||||||
|
|
||||||
|
// Native returns a pointer to the underlying PangoLayout.
|
||||||
|
func (v *FontDescription) Native() uintptr {
|
||||||
|
return uintptr(unsafe.Pointer(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (v *FontDescription) native() *C.PangoFontDescription {
|
||||||
|
return (*C.PangoFontDescription)(unsafe.Pointer(v.pangoFontDescription))
|
||||||
|
}
|
||||||
|
|
||||||
|
// FontMetrics is a representation of PangoFontMetrics.
|
||||||
|
type FontMetrics struct {
|
||||||
|
pangoFontMetrics *C.PangoFontMetrics
|
||||||
|
}
|
||||||
|
|
||||||
|
// Native returns a pointer to the underlying PangoLayout.
|
||||||
|
func (v *FontMetrics) Native() uintptr {
|
||||||
|
return uintptr(unsafe.Pointer(v.native()))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (v *FontMetrics) native() *C.PangoFontMetrics {
|
||||||
|
return (*C.PangoFontMetrics)(unsafe.Pointer(v.pangoFontMetrics))
|
||||||
|
}
|
||||||
|
|
||||||
|
const (
|
||||||
|
PANGO_SCALE = C.PANGO_SCALE
|
||||||
|
)
|
||||||
|
|
||||||
|
type Style int
|
||||||
|
|
||||||
|
const (
|
||||||
|
STYLE_NORMAL Style = C.PANGO_STYLE_NORMAL
|
||||||
|
STYLE_OBLIQUE Style = C.PANGO_STYLE_OBLIQUE
|
||||||
|
STYLE_ITALIC Style = C.PANGO_STYLE_ITALIC
|
||||||
|
)
|
||||||
|
|
||||||
|
type Variant int
|
||||||
|
|
||||||
|
const (
|
||||||
|
VARIANT_NORMAL Variant = C.PANGO_VARIANT_NORMAL
|
||||||
|
VARIANT_SMALL_CAPS Variant = C.PANGO_VARIANT_SMALL_CAPS
|
||||||
|
)
|
||||||
|
|
||||||
|
type Weight int
|
||||||
|
|
||||||
|
const (
|
||||||
|
WEIGHT_THIN Weight = C.PANGO_WEIGHT_THIN /* 100 */
|
||||||
|
WEIGHT_ULTRALIGHT Weight = C.PANGO_WEIGHT_ULTRALIGHT /* 200 */
|
||||||
|
WEIGHT_LIGHT Weight = C.PANGO_WEIGHT_LIGHT /* 300 */
|
||||||
|
WEIGHT_SEMILIGHT Weight = 350 /* 350 */
|
||||||
|
WEIGHT_BOOK Weight = C.PANGO_WEIGHT_BOOK /* 380 */
|
||||||
|
WEIGHT_NORMAL Weight = C.PANGO_WEIGHT_NORMAL /* 400 */
|
||||||
|
WEIGHT_MEDIUM Weight = C.PANGO_WEIGHT_MEDIUM /* 500 */
|
||||||
|
WEIGHT_SEMIBOLD Weight = C.PANGO_WEIGHT_SEMIBOLD /* 600 */
|
||||||
|
WEIGHT_BOLD Weight = C.PANGO_WEIGHT_BOLD /* 700 */
|
||||||
|
WEIGHT_ULTRABOLD Weight = C.PANGO_WEIGHT_ULTRABOLD /* 800 */
|
||||||
|
WEIGHT_HEAVY Weight = C.PANGO_WEIGHT_HEAVY /* 900 */
|
||||||
|
WEIGHT_ULTRAHEAVY Weight = C.PANGO_WEIGHT_ULTRAHEAVY /* 1000 */
|
||||||
|
|
||||||
|
)
|
||||||
|
|
||||||
|
type Stretch int
|
||||||
|
|
||||||
|
const (
|
||||||
|
STRETCH_ULTRA_CONDENSED Stretch = C.PANGO_STRETCH_ULTRA_CONDENSED
|
||||||
|
STRETCH_EXTRA_CONDENSEDStretch Stretch = C.PANGO_STRETCH_EXTRA_CONDENSED
|
||||||
|
STRETCH_CONDENSEDStretch Stretch = C.PANGO_STRETCH_CONDENSED
|
||||||
|
STRETCH_SEMI_CONDENSEDStretch Stretch = C.PANGO_STRETCH_SEMI_CONDENSED
|
||||||
|
STRETCH_NORMALStretch Stretch = C.PANGO_STRETCH_NORMAL
|
||||||
|
STRETCH_SEMI_EXPANDEDStretch Stretch = C.PANGO_STRETCH_SEMI_EXPANDED
|
||||||
|
STRETCH_EXPANDEDStretch Stretch = C.PANGO_STRETCH_EXPANDED
|
||||||
|
STRETCH_EXTRA_EXPANDEDStretch Stretch = C.PANGO_STRETCH_EXTRA_EXPANDED
|
||||||
|
STRETCH_ULTRA_EXPANDEDStretch Stretch = C.PANGO_STRETCH_ULTRA_EXPANDED
|
||||||
|
)
|
||||||
|
|
||||||
|
type FontMask int
|
||||||
|
|
||||||
|
const (
|
||||||
|
FONT_MASK_FAMILY FontMask = C.PANGO_FONT_MASK_FAMILY /* 1 << 0 */
|
||||||
|
FONT_MASK_STYLEFontMask FontMask = C.PANGO_FONT_MASK_STYLE /* 1 << 1 */
|
||||||
|
FONT_MASK_VARIANTFontMask FontMask = C.PANGO_FONT_MASK_VARIANT /* 1 << 2 */
|
||||||
|
FONT_MASK_WEIGHTFontMask FontMask = C.PANGO_FONT_MASK_WEIGHT /* 1 << 3 */
|
||||||
|
FONT_MASK_STRETCHFontMask FontMask = C.PANGO_FONT_MASK_STRETCH /* 1 << 4 */
|
||||||
|
FONT_MASK_SIZEFontMask FontMask = C.PANGO_FONT_MASK_SIZE /* 1 << 5 */
|
||||||
|
FONT_MASK_GRAVITYFontMask FontMask = C.PANGO_FONT_MASK_GRAVITY /* 1 << 6 */
|
||||||
|
)
|
||||||
|
|
||||||
|
type Scale float64
|
||||||
|
|
||||||
|
const (
|
||||||
|
SCALE_XX_SMALL Scale = /* C.PANGO_SCALE_XX_SMALL */ 0.5787037037037
|
||||||
|
SCALE_X_SMALL Scale = /*C.PANGO_SCALE_X_SMALL */ 0.6444444444444
|
||||||
|
SCALE_SMALL Scale = /*C.PANGO_SCALE_SMALL */ 0.8333333333333
|
||||||
|
SCALE_MEDIUM Scale = /*C.PANGO_SCALE_MEDIUM */ 1.0
|
||||||
|
SCALE_LARGE Scale = /*C.PANGO_SCALE_LARGE */ 1.2
|
||||||
|
SCALE_X_LARGE Scale = /*C.PANGO_SCALE_X_LARGE */ 1.4399999999999
|
||||||
|
SCALE_XX_LARGE Scale = /*C.PANGO_SCALE_XX_LARGE */ 1.728
|
||||||
|
)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* PangoFontDescription
|
||||||
|
*/
|
||||||
|
|
||||||
|
func marshalFontDescription(p uintptr) (interface{}, error) {
|
||||||
|
c := C.g_value_get_boxed((*C.GValue)(unsafe.Pointer(p)))
|
||||||
|
c2 := (*C.PangoFontDescription)(unsafe.Pointer(c))
|
||||||
|
return wrapFontDescription(c2), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func wrapFontDescription(obj *C.PangoFontDescription) *FontDescription {
|
||||||
|
return &FontDescription{obj}
|
||||||
|
}
|
||||||
|
|
||||||
|
//PangoFontDescription *pango_font_description_new (void);
|
||||||
|
func FontDescriptionNew() *FontDescription {
|
||||||
|
c := C.pango_font_description_new()
|
||||||
|
v := new(FontDescription)
|
||||||
|
v.pangoFontDescription = c
|
||||||
|
return v
|
||||||
|
}
|
||||||
|
|
||||||
|
//PangoFontDescription *pango_font_description_copy (const PangoFontDescription *desc);
|
||||||
|
func (v *FontDescription) Copy() *FontDescription {
|
||||||
|
c := C.pango_font_description_copy(v.native())
|
||||||
|
v2 := new(FontDescription)
|
||||||
|
v2.pangoFontDescription = c
|
||||||
|
return v2
|
||||||
|
}
|
||||||
|
|
||||||
|
//PangoFontDescription *pango_font_description_copy_static (const PangoFontDescription *desc);
|
||||||
|
func (v *FontDescription) CopyStatic() *FontDescription {
|
||||||
|
c := C.pango_font_description_copy_static(v.native())
|
||||||
|
v2 := new(FontDescription)
|
||||||
|
v2.pangoFontDescription = c
|
||||||
|
return v2
|
||||||
|
}
|
||||||
|
|
||||||
|
//guint pango_font_description_hash (const PangoFontDescription *desc) G_GNUC_PURE;
|
||||||
|
func (v *FontDescription) Hash() uint {
|
||||||
|
c := C.pango_font_description_hash(v.native())
|
||||||
|
return uint(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
//gboolean pango_font_description_equal (const PangoFontDescription *desc1,
|
||||||
|
// const PangoFontDescription *desc2) G_GNUC_PURE;
|
||||||
|
func (v *FontDescription) Equal(v2 *FontDescription) bool {
|
||||||
|
c := C.pango_font_description_equal(v.native(), v2.native())
|
||||||
|
return gobool(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
//void pango_font_description_free (PangoFontDescription *desc);
|
||||||
|
func (v *FontDescription) Free() {
|
||||||
|
C.pango_font_description_free(v.native())
|
||||||
|
}
|
||||||
|
|
||||||
|
//void pango_font_descriptions_free (PangoFontDescription **descs,
|
||||||
|
// int n_descs);
|
||||||
|
//func (v *FontDescription) FontDescriptionsFree(n_descs int) {
|
||||||
|
// C.pango_font_descriptions_free(v.native(), C.int(n_descs))
|
||||||
|
//}
|
||||||
|
|
||||||
|
//void pango_font_description_set_family (PangoFontDescription *desc,
|
||||||
|
// const char *family);
|
||||||
|
func (v *FontDescription) SetFamily(family string) {
|
||||||
|
cstr := C.CString(family)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
C.pango_font_description_set_family(v.native(), (*C.char)(cstr))
|
||||||
|
}
|
||||||
|
|
||||||
|
//void pango_font_description_set_family_static (PangoFontDescription *desc,
|
||||||
|
// const char *family);
|
||||||
|
func (v *FontDescription) SetFamilyStatic(family string) {
|
||||||
|
cstr := C.CString(family)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
C.pango_font_description_set_family_static(v.native(), (*C.char)(cstr))
|
||||||
|
}
|
||||||
|
|
||||||
|
//const char *pango_font_description_get_family (const PangoFontDescription *desc) G_GNUC_PURE;
|
||||||
|
func (v *FontDescription) GetFamily() string {
|
||||||
|
c := C.pango_font_description_get_family(v.native())
|
||||||
|
return C.GoString((*C.char)(c))
|
||||||
|
}
|
||||||
|
|
||||||
|
//void pango_font_description_set_style (PangoFontDescription *desc,
|
||||||
|
// PangoStyle style);
|
||||||
|
func (v *FontDescription) SetStyle(style Style) {
|
||||||
|
C.pango_font_description_set_style(v.native(), (C.PangoStyle)(style))
|
||||||
|
}
|
||||||
|
|
||||||
|
//PangoStyle pango_font_description_get_style (const PangoFontDescription *desc) G_GNUC_PURE;
|
||||||
|
func (v *FontDescription) GetStyle() Style {
|
||||||
|
c := C.pango_font_description_get_style(v.native())
|
||||||
|
return Style(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
//void pango_font_description_set_variant (PangoFontDescription *desc,
|
||||||
|
// PangoVariant variant);
|
||||||
|
//PangoVariant pango_font_description_get_variant (const PangoFontDescription *desc) G_GNUC_PURE;
|
||||||
|
|
||||||
|
//void pango_font_description_set_weight (PangoFontDescription *desc,
|
||||||
|
// PangoWeight weight);
|
||||||
|
func (v *FontDescription) SetWeight(weight Weight) {
|
||||||
|
C.pango_font_description_set_weight(v.native(), (C.PangoWeight)(weight))
|
||||||
|
}
|
||||||
|
|
||||||
|
//PangoWeight pango_font_description_get_weight (const PangoFontDescription *desc) G_GNUC_PURE;
|
||||||
|
func (v *FontDescription) GetWeight() Weight {
|
||||||
|
c := C.pango_font_description_get_weight(v.native())
|
||||||
|
return Weight(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
//void pango_font_description_set_stretch (PangoFontDescription *desc,
|
||||||
|
// PangoStretch stretch);
|
||||||
|
func (v *FontDescription) SetStretch(stretch Stretch) {
|
||||||
|
C.pango_font_description_set_stretch(v.native(), (C.PangoStretch)(stretch))
|
||||||
|
}
|
||||||
|
|
||||||
|
//PangoStretch pango_font_description_get_stretch (const PangoFontDescription *desc) G_GNUC_PURE;
|
||||||
|
func (v *FontDescription) GetStretch() Stretch {
|
||||||
|
c := C.pango_font_description_get_stretch(v.native())
|
||||||
|
return Stretch(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
//void pango_font_description_set_size (PangoFontDescription *desc,
|
||||||
|
// gint size);
|
||||||
|
func (v *FontDescription) SetSize(size int) {
|
||||||
|
C.pango_font_description_set_size(v.native(), (C.gint)(size))
|
||||||
|
}
|
||||||
|
|
||||||
|
//gint pango_font_description_get_size (const PangoFontDescription *desc) G_GNUC_PURE;
|
||||||
|
func (v *FontDescription) GetSize() int {
|
||||||
|
c := C.pango_font_description_get_size(v.native())
|
||||||
|
return int(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
//void pango_font_description_set_absolute_size (PangoFontDescription *desc,
|
||||||
|
// double size);
|
||||||
|
func (v *FontDescription) SetAbsoluteSize(size float64) {
|
||||||
|
C.pango_font_description_set_absolute_size(v.native(), (C.double)(size))
|
||||||
|
}
|
||||||
|
|
||||||
|
//gboolean pango_font_description_get_size_is_absolute (const PangoFontDescription *desc) G_GNUC_PURE;
|
||||||
|
func (v *FontDescription) GetSizeIsAbsolute() bool {
|
||||||
|
c := C.pango_font_description_get_size_is_absolute(v.native())
|
||||||
|
return gobool(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
//void pango_font_description_set_gravity (PangoFontDescription *desc,
|
||||||
|
// PangoGravity gravity);
|
||||||
|
func (v *FontDescription) SetGravity(gravity Gravity) {
|
||||||
|
C.pango_font_description_set_gravity(v.native(), (C.PangoGravity)(gravity))
|
||||||
|
}
|
||||||
|
|
||||||
|
//PangoGravity pango_font_description_get_gravity (const PangoFontDescription *desc) G_GNUC_PURE;
|
||||||
|
func (v *FontDescription) GetGravity() Gravity {
|
||||||
|
c := C.pango_font_description_get_gravity(v.native())
|
||||||
|
return Gravity(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
//PangoFontMask pango_font_description_get_set_fields (const PangoFontDescription *desc) G_GNUC_PURE;
|
||||||
|
func (v *FontDescription) GetSetFields() FontMask {
|
||||||
|
c := C.pango_font_description_get_set_fields(v.native())
|
||||||
|
return FontMask(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
//void pango_font_description_unset_fields (PangoFontDescription *desc,
|
||||||
|
// PangoFontMask to_unset);
|
||||||
|
func (v *FontDescription) GetUnsetFields(to_unset FontMask) {
|
||||||
|
C.pango_font_description_unset_fields(v.native(), (C.PangoFontMask)(to_unset))
|
||||||
|
}
|
||||||
|
|
||||||
|
//void pango_font_description_merge (PangoFontDescription *desc,
|
||||||
|
// const PangoFontDescription *desc_to_merge,
|
||||||
|
// gboolean replace_existing);
|
||||||
|
func (v *FontDescription) Merge(desc_to_merge *FontDescription, replace_existing bool) {
|
||||||
|
C.pango_font_description_merge(v.native(), desc_to_merge.native(), gbool(replace_existing))
|
||||||
|
}
|
||||||
|
|
||||||
|
//void pango_font_description_merge_static (PangoFontDescription *desc,
|
||||||
|
// const PangoFontDescription *desc_to_merge,
|
||||||
|
// gboolean replace_existing);
|
||||||
|
func (v *FontDescription) MergeStatic(desc_to_merge *FontDescription, replace_existing bool) {
|
||||||
|
C.pango_font_description_merge_static(v.native(), desc_to_merge.native(), gbool(replace_existing))
|
||||||
|
}
|
||||||
|
|
||||||
|
//gboolean pango_font_description_better_match (const PangoFontDescription *desc,
|
||||||
|
// const PangoFontDescription *old_match,
|
||||||
|
// const PangoFontDescription *new_match) G_GNUC_PURE;
|
||||||
|
func (v *FontDescription) BetterMatch(old_match, new_match *FontDescription) bool {
|
||||||
|
c := C.pango_font_description_better_match(v.native(), old_match.native(), new_match.native())
|
||||||
|
return gobool(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
//PangoFontDescription *pango_font_description_from_string (const char *str);
|
||||||
|
func FontDescriptionFromString(str string) *FontDescription {
|
||||||
|
cstr := C.CString(str)
|
||||||
|
defer C.free(unsafe.Pointer(cstr))
|
||||||
|
c := C.pango_font_description_from_string((*C.char)(cstr))
|
||||||
|
v := new(FontDescription)
|
||||||
|
v.pangoFontDescription = c
|
||||||
|
return v
|
||||||
|
}
|
||||||
|
|
||||||
|
//char * pango_font_description_to_string (const PangoFontDescription *desc);
|
||||||
|
func (v *FontDescription) ToString() string {
|
||||||
|
c := C.pango_font_description_to_string(v.native())
|
||||||
|
return C.GoString((*C.char)(c))
|
||||||
|
}
|
||||||
|
|
||||||
|
//char * pango_font_description_to_filename (const PangoFontDescription *desc);
|
||||||
|
func (v *FontDescription) ToFilename() string {
|
||||||
|
c := C.pango_font_description_to_filename(v.native())
|
||||||
|
return C.GoString((*C.char)(c))
|
||||||
|
}
|
||||||
|
|
||||||
|
///*
|
||||||
|
// * PangoFontMetrics
|
||||||
|
// */
|
||||||
|
//
|
||||||
|
///**
|
||||||
|
// * PANGO_TYPE_FONT_METRICS:
|
||||||
|
// *
|
||||||
|
// * The #GObject type for #PangoFontMetrics.
|
||||||
|
// */
|
||||||
|
//#define PANGO_TYPE_FONT_METRICS (pango_font_metrics_get_type ())
|
||||||
|
//GType pango_font_metrics_get_type (void) G_GNUC_CONST;
|
||||||
|
//PangoFontMetrics *pango_font_metrics_ref (PangoFontMetrics *metrics);
|
||||||
|
//void pango_font_metrics_unref (PangoFontMetrics *metrics);
|
||||||
|
//int pango_font_metrics_get_ascent (PangoFontMetrics *metrics) G_GNUC_PURE;
|
||||||
|
//int pango_font_metrics_get_descent (PangoFontMetrics *metrics) G_GNUC_PURE;
|
||||||
|
//int pango_font_metrics_get_approximate_char_width (PangoFontMetrics *metrics) G_GNUC_PURE;
|
||||||
|
//int pango_font_metrics_get_approximate_digit_width (PangoFontMetrics *metrics) G_GNUC_PURE;
|
||||||
|
//int pango_font_metrics_get_underline_position (PangoFontMetrics *metrics) G_GNUC_PURE;
|
||||||
|
//int pango_font_metrics_get_underline_thickness (PangoFontMetrics *metrics) G_GNUC_PURE;
|
||||||
|
//int pango_font_metrics_get_strikethrough_position (PangoFontMetrics *metrics) G_GNUC_PURE;
|
||||||
|
//int pango_font_metrics_get_strikethrough_thickness (PangoFontMetrics *metrics) G_GNUC_PURE;
|
||||||
|
//
|
||||||
|
//#ifdef PANGO_ENABLE_BACKEND
|
||||||
|
//
|
||||||
|
//PangoFontMetrics *pango_font_metrics_new (void);
|
||||||
|
//
|
||||||
|
//struct _PangoFontMetrics
|
||||||
|
//{
|
||||||
|
// guint ref_count;
|
||||||
|
//
|
||||||
|
// int ascent;
|
||||||
|
// int descent;
|
||||||
|
// int approximate_char_width;
|
||||||
|
// int approximate_digit_width;
|
||||||
|
// int underline_position;
|
||||||
|
// int underline_thickness;
|
||||||
|
// int strikethrough_position;
|
||||||
|
// int strikethrough_thickness;
|
||||||
|
//};
|
||||||
|
//
|
||||||
|
//#endif /* PANGO_ENABLE_BACKEND */
|
||||||
|
//
|
||||||
|
///*
|
||||||
|
// * PangoFontFamily
|
||||||
|
// */
|
||||||
|
//
|
||||||
|
///**
|
||||||
|
// * PANGO_TYPE_FONT_FAMILY:
|
||||||
|
// *
|
||||||
|
// * The #GObject type for #PangoFontFamily.
|
||||||
|
// */
|
||||||
|
///**
|
||||||
|
// * PANGO_FONT_FAMILY:
|
||||||
|
// * @object: a #GObject.
|
||||||
|
// *
|
||||||
|
// * Casts a #GObject to a #PangoFontFamily.
|
||||||
|
// */
|
||||||
|
///**
|
||||||
|
// * PANGO_IS_FONT_FAMILY:
|
||||||
|
// * @object: a #GObject.
|
||||||
|
// *
|
||||||
|
// * Returns: %TRUE if @object is a #PangoFontFamily.
|
||||||
|
// */
|
||||||
|
//#define PANGO_TYPE_FONT_FAMILY (pango_font_family_get_type ())
|
||||||
|
//#define PANGO_FONT_FAMILY(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), PANGO_TYPE_FONT_FAMILY, PangoFontFamily))
|
||||||
|
//#define PANGO_IS_FONT_FAMILY(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), PANGO_TYPE_FONT_FAMILY))
|
||||||
|
//
|
||||||
|
//typedef struct _PangoFontFamily PangoFontFamily;
|
||||||
|
//typedef struct _PangoFontFace PangoFontFace;
|
||||||
|
//
|
||||||
|
//GType pango_font_family_get_type (void) G_GNUC_CONST;
|
||||||
|
//
|
||||||
|
//void pango_font_family_list_faces (PangoFontFamily *family,
|
||||||
|
// PangoFontFace ***faces,
|
||||||
|
// int *n_faces);
|
||||||
|
//const char *pango_font_family_get_name (PangoFontFamily *family) G_GNUC_PURE;
|
||||||
|
//gboolean pango_font_family_is_monospace (PangoFontFamily *family) G_GNUC_PURE;
|
||||||
|
//
|
||||||
|
//#ifdef PANGO_ENABLE_BACKEND
|
||||||
|
//
|
||||||
|
//#define PANGO_FONT_FAMILY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PANGO_TYPE_FONT_FAMILY, PangoFontFamilyClass))
|
||||||
|
//#define PANGO_IS_FONT_FAMILY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PANGO_TYPE_FONT_FAMILY))
|
||||||
|
//#define PANGO_FONT_FAMILY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PANGO_TYPE_FONT_FAMILY, PangoFontFamilyClass))
|
||||||
|
//
|
||||||
|
//typedef struct _PangoFontFamilyClass PangoFontFamilyClass;
|
||||||
|
//
|
||||||
|
//
|
||||||
|
///**
|
||||||
|
// * PangoFontFamily:
|
||||||
|
// *
|
||||||
|
// * The #PangoFontFamily structure is used to represent a family of related
|
||||||
|
// * font faces. The faces in a family share a common design, but differ in
|
||||||
|
// * slant, weight, width and other aspects.
|
||||||
|
// */
|
||||||
|
//struct _PangoFontFamily
|
||||||
|
//{
|
||||||
|
// GObject parent_instance;
|
||||||
|
//};
|
||||||
|
//
|
||||||
|
//struct _PangoFontFamilyClass
|
||||||
|
//{
|
||||||
|
// GObjectClass parent_class;
|
||||||
|
//
|
||||||
|
// /*< public >*/
|
||||||
|
//
|
||||||
|
// void (*list_faces) (PangoFontFamily *family,
|
||||||
|
// PangoFontFace ***faces,
|
||||||
|
// int *n_faces);
|
||||||
|
// const char * (*get_name) (PangoFontFamily *family);
|
||||||
|
// gboolean (*is_monospace) (PangoFontFamily *family);
|
||||||
|
//
|
||||||
|
// /*< private >*/
|
||||||
|
//
|
||||||
|
// /* Padding for future expansion */
|
||||||
|
// void (*_pango_reserved2) (void);
|
||||||
|
// void (*_pango_reserved3) (void);
|
||||||
|
// void (*_pango_reserved4) (void);
|
||||||
|
//};
|
||||||
|
//
|
||||||
|
//#endif /* PANGO_ENABLE_BACKEND */
|
||||||
|
//
|
||||||
|
///*
|
||||||
|
// * PangoFontFace
|
||||||
|
// */
|
||||||
|
//
|
||||||
|
///**
|
||||||
|
// * PANGO_TYPE_FONT_FACE:
|
||||||
|
// *
|
||||||
|
// * The #GObject type for #PangoFontFace.
|
||||||
|
// */
|
||||||
|
///**
|
||||||
|
// * PANGO_FONT_FACE:
|
||||||
|
// * @object: a #GObject.
|
||||||
|
// *
|
||||||
|
// * Casts a #GObject to a #PangoFontFace.
|
||||||
|
// */
|
||||||
|
///**
|
||||||
|
// * PANGO_IS_FONT_FACE:
|
||||||
|
// * @object: a #GObject.
|
||||||
|
// *
|
||||||
|
// * Returns: %TRUE if @object is a #PangoFontFace.
|
||||||
|
// */
|
||||||
|
//#define PANGO_TYPE_FONT_FACE (pango_font_face_get_type ())
|
||||||
|
//#define PANGO_FONT_FACE(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), PANGO_TYPE_FONT_FACE, PangoFontFace))
|
||||||
|
//#define PANGO_IS_FONT_FACE(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), PANGO_TYPE_FONT_FACE))
|
||||||
|
//
|
||||||
|
//GType pango_font_face_get_type (void) G_GNUC_CONST;
|
||||||
|
//
|
||||||
|
//PangoFontDescription *pango_font_face_describe (PangoFontFace *face);
|
||||||
|
//const char *pango_font_face_get_face_name (PangoFontFace *face) G_GNUC_PURE;
|
||||||
|
//void pango_font_face_list_sizes (PangoFontFace *face,
|
||||||
|
// int **sizes,
|
||||||
|
// int *n_sizes);
|
||||||
|
//gboolean pango_font_face_is_synthesized (PangoFontFace *face) G_GNUC_PURE;
|
||||||
|
//
|
||||||
|
//#ifdef PANGO_ENABLE_BACKEND
|
||||||
|
//
|
||||||
|
//#define PANGO_FONT_FACE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PANGO_TYPE_FONT_FACE, PangoFontFaceClass))
|
||||||
|
//#define PANGO_IS_FONT_FACE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PANGO_TYPE_FONT_FACE))
|
||||||
|
//#define PANGO_FONT_FACE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PANGO_TYPE_FONT_FACE, PangoFontFaceClass))
|
||||||
|
//
|
||||||
|
//typedef struct _PangoFontFaceClass PangoFontFaceClass;
|
||||||
|
//
|
||||||
|
///**
|
||||||
|
// * PangoFontFace:
|
||||||
|
// *
|
||||||
|
// * The #PangoFontFace structure is used to represent a group of fonts with
|
||||||
|
// * the same family, slant, weight, width, but varying sizes.
|
||||||
|
// */
|
||||||
|
//struct _PangoFontFace
|
||||||
|
//{
|
||||||
|
// GObject parent_instance;
|
||||||
|
//};
|
||||||
|
//
|
||||||
|
//struct _PangoFontFaceClass
|
||||||
|
//{
|
||||||
|
// GObjectClass parent_class;
|
||||||
|
//
|
||||||
|
// /*< public >*/
|
||||||
|
//
|
||||||
|
// const char * (*get_face_name) (PangoFontFace *face);
|
||||||
|
// PangoFontDescription * (*describe) (PangoFontFace *face);
|
||||||
|
// void (*list_sizes) (PangoFontFace *face,
|
||||||
|
// int **sizes,
|
||||||
|
// int *n_sizes);
|
||||||
|
// gboolean (*is_synthesized) (PangoFontFace *face);
|
||||||
|
//
|
||||||
|
// /*< private >*/
|
||||||
|
//
|
||||||
|
// /* Padding for future expansion */
|
||||||
|
// void (*_pango_reserved3) (void);
|
||||||
|
// void (*_pango_reserved4) (void);
|
||||||
|
//};
|
||||||
|
//
|
||||||
|
//#endif /* PANGO_ENABLE_BACKEND */
|
||||||
|
//
|
||||||
|
///*
|
||||||
|
// * PangoFont
|
||||||
|
// */
|
||||||
|
//
|
||||||
|
///**
|
||||||
|
// * PANGO_TYPE_FONT:
|
||||||
|
// *
|
||||||
|
// * The #GObject type for #PangoFont.
|
||||||
|
// */
|
||||||
|
///**
|
||||||
|
// * PANGO_FONT:
|
||||||
|
// * @object: a #GObject.
|
||||||
|
// *
|
||||||
|
// * Casts a #GObject to a #PangoFont.
|
||||||
|
// */
|
||||||
|
///**
|
||||||
|
// * PANGO_IS_FONT:
|
||||||
|
// * @object: a #GObject.
|
||||||
|
// *
|
||||||
|
// * Returns: %TRUE if @object is a #PangoFont.
|
||||||
|
// */
|
||||||
|
//#define PANGO_TYPE_FONT (pango_font_get_type ())
|
||||||
|
//#define PANGO_FONT(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), PANGO_TYPE_FONT, PangoFont))
|
||||||
|
//#define PANGO_IS_FONT(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), PANGO_TYPE_FONT))
|
||||||
|
//
|
||||||
|
//GType pango_font_get_type (void) G_GNUC_CONST;
|
||||||
|
//
|
||||||
|
//PangoFontDescription *pango_font_describe (PangoFont *font);
|
||||||
|
//PangoFontDescription *pango_font_describe_with_absolute_size (PangoFont *font);
|
||||||
|
//PangoCoverage * pango_font_get_coverage (PangoFont *font,
|
||||||
|
// PangoLanguage *language);
|
||||||
|
//PangoEngineShape * pango_font_find_shaper (PangoFont *font,
|
||||||
|
// PangoLanguage *language,
|
||||||
|
// guint32 ch);
|
||||||
|
//PangoFontMetrics * pango_font_get_metrics (PangoFont *font,
|
||||||
|
// PangoLanguage *language);
|
||||||
|
//void pango_font_get_glyph_extents (PangoFont *font,
|
||||||
|
// PangoGlyph glyph,
|
||||||
|
// PangoRectangle *ink_rect,
|
||||||
|
// PangoRectangle *logical_rect);
|
||||||
|
//PangoFontMap *pango_font_get_font_map (PangoFont *font);
|
||||||
|
//
|
||||||
|
//#ifdef PANGO_ENABLE_BACKEND
|
||||||
|
//
|
||||||
|
//#define PANGO_FONT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PANGO_TYPE_FONT, PangoFontClass))
|
||||||
|
//#define PANGO_IS_FONT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PANGO_TYPE_FONT))
|
||||||
|
//#define PANGO_FONT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PANGO_TYPE_FONT, PangoFontClass))
|
||||||
|
//
|
||||||
|
//typedef struct _PangoFontClass PangoFontClass;
|
||||||
|
//
|
||||||
|
///**
|
||||||
|
// * PangoFont:
|
||||||
|
// *
|
||||||
|
// * The #PangoFont structure is used to represent
|
||||||
|
// * a font in a rendering-system-independent matter.
|
||||||
|
// * To create an implementation of a #PangoFont,
|
||||||
|
// * the rendering-system specific code should allocate
|
||||||
|
// * a larger structure that contains a nested
|
||||||
|
// * #PangoFont, fill in the <structfield>klass</structfield> member of
|
||||||
|
// * the nested #PangoFont with a pointer to
|
||||||
|
// * a appropriate #PangoFontClass, then call
|
||||||
|
// * pango_font_init() on the structure.
|
||||||
|
// *
|
||||||
|
// * The #PangoFont structure contains one member
|
||||||
|
// * which the implementation fills in.
|
||||||
|
// */
|
||||||
|
//struct _PangoFont
|
||||||
|
//{
|
||||||
|
// GObject parent_instance;
|
||||||
|
//};
|
||||||
|
//
|
||||||
|
//struct _PangoFontClass
|
||||||
|
//{
|
||||||
|
// GObjectClass parent_class;
|
||||||
|
//
|
||||||
|
// /*< public >*/
|
||||||
|
//
|
||||||
|
// PangoFontDescription *(*describe) (PangoFont *font);
|
||||||
|
// PangoCoverage * (*get_coverage) (PangoFont *font,
|
||||||
|
// PangoLanguage *lang);
|
||||||
|
// PangoEngineShape * (*find_shaper) (PangoFont *font,
|
||||||
|
// PangoLanguage *lang,
|
||||||
|
// guint32 ch);
|
||||||
|
// void (*get_glyph_extents) (PangoFont *font,
|
||||||
|
// PangoGlyph glyph,
|
||||||
|
// PangoRectangle *ink_rect,
|
||||||
|
// PangoRectangle *logical_rect);
|
||||||
|
// PangoFontMetrics * (*get_metrics) (PangoFont *font,
|
||||||
|
// PangoLanguage *language);
|
||||||
|
// PangoFontMap * (*get_font_map) (PangoFont *font);
|
||||||
|
// PangoFontDescription *(*describe_absolute) (PangoFont *font);
|
||||||
|
// /*< private >*/
|
||||||
|
//
|
||||||
|
// /* Padding for future expansion */
|
||||||
|
// void (*_pango_reserved1) (void);
|
||||||
|
// void (*_pango_reserved2) (void);
|
||||||
|
//};
|
||||||
|
//
|
||||||
|
///* used for very rare and miserable situtations that we cannot even
|
||||||
|
// * draw a hexbox
|
||||||
|
// */
|
||||||
|
//#define PANGO_UNKNOWN_GLYPH_WIDTH 10
|
||||||
|
//#define PANGO_UNKNOWN_GLYPH_HEIGHT 14
|
||||||
|
//
|
||||||
|
//#endif /* PANGO_ENABLE_BACKEND */
|
||||||
|
//
|
||||||
|
///**
|
||||||
|
// * PANGO_GLYPH_EMPTY:
|
||||||
|
// *
|
||||||
|
// * The %PANGO_GLYPH_EMPTY macro represents a #PangoGlyph value that has a
|
||||||
|
// * special meaning, which is a zero-width empty glyph. This is useful for
|
||||||
|
// * example in shaper modules, to use as the glyph for various zero-width
|
||||||
|
// * Unicode characters (those passing pango_is_zero_width()).
|
||||||
|
// */
|
||||||
|
///**
|
||||||
|
// * PANGO_GLYPH_INVALID_INPUT:
|
||||||
|
// *
|
||||||
|
// * The %PANGO_GLYPH_INVALID_INPUT macro represents a #PangoGlyph value that has a
|
||||||
|
// * special meaning of invalid input. #PangoLayout produces one such glyph
|
||||||
|
// * per invalid input UTF-8 byte and such a glyph is rendered as a crossed
|
||||||
|
// * box.
|
||||||
|
// *
|
||||||
|
// * Note that this value is defined such that it has the %PANGO_GLYPH_UNKNOWN_FLAG
|
||||||
|
// * on.
|
||||||
|
// *
|
||||||
|
// * Since: 1.20
|
||||||
|
// */
|
||||||
|
///**
|
||||||
|
// * PANGO_GLYPH_UNKNOWN_FLAG:
|
||||||
|
// *
|
||||||
|
// * The %PANGO_GLYPH_UNKNOWN_FLAG macro is a flag value that can be added to
|
||||||
|
// * a #gunichar value of a valid Unicode character, to produce a #PangoGlyph
|
||||||
|
// * value, representing an unknown-character glyph for the respective #gunichar.
|
||||||
|
// */
|
||||||
|
///**
|
||||||
|
// * PANGO_GET_UNKNOWN_GLYPH:
|
||||||
|
// * @wc: a Unicode character
|
||||||
|
// *
|
||||||
|
// * The way this unknown glyphs are rendered is backend specific. For example,
|
||||||
|
// * a box with the hexadecimal Unicode code-point of the character written in it
|
||||||
|
// * is what is done in the most common backends.
|
||||||
|
// *
|
||||||
|
// * Returns: a #PangoGlyph value that means no glyph was found for @wc.
|
||||||
|
// */
|
||||||
|
//#define PANGO_GLYPH_EMPTY ((PangoGlyph)0x0FFFFFFF)
|
||||||
|
//#define PANGO_GLYPH_INVALID_INPUT ((PangoGlyph)0xFFFFFFFF)
|
||||||
|
//#define PANGO_GLYPH_UNKNOWN_FLAG ((PangoGlyph)0x10000000)
|
||||||
|
//#define PANGO_GET_UNKNOWN_GLYPH(wc) ((PangoGlyph)(wc)|PANGO_GLYPH_UNKNOWN_FLAG)
|
||||||
|
//
|
||||||
|
//
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue