|
| 1 | +package glib |
| 2 | + |
| 3 | +// #cgo pkg-config: glib-2.0 gobject-2.0 |
| 4 | +// #include <gio/gio.h> |
| 5 | +// #include <glib.h> |
| 6 | +// #include <glib-object.h> |
| 7 | +// #include "glib.go.h" |
| 8 | +import "C" |
| 9 | +import "unsafe" |
| 10 | + |
| 11 | +// MenuModel is a representation of GMenuModel. |
| 12 | +type MenuModel struct { |
| 13 | + *Object |
| 14 | +} |
| 15 | + |
| 16 | +// native() returns a pointer to the underlying GMenuModel. |
| 17 | +func (v *MenuModel) native() *C.GMenuModel { |
| 18 | + if v == nil || v.GObject == nil { |
| 19 | + return nil |
| 20 | + } |
| 21 | + return C.toGMenuModel(unsafe.Pointer(v.GObject)) |
| 22 | +} |
| 23 | + |
| 24 | +func marshalMenuModel(p uintptr) (interface{}, error) { |
| 25 | + c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p))) |
| 26 | + return wrapMenuModel(wrapObject(unsafe.Pointer(c))), nil |
| 27 | +} |
| 28 | + |
| 29 | +func wrapMenuModel(obj *Object) *MenuModel { |
| 30 | + return &MenuModel{obj} |
| 31 | +} |
| 32 | + |
| 33 | +// IsMutable is a wrapper around g_menu_model_is_mutable(). |
| 34 | +func (v *MenuModel) IsMutable() bool { |
| 35 | + return gobool(C.g_menu_model_is_mutable(v.native())) |
| 36 | +} |
| 37 | + |
| 38 | +// GetNItems is a wrapper around g_menu_model_get_n_items(). |
| 39 | +func (v *MenuModel) GetNItems() int { |
| 40 | + return int(C.g_menu_model_get_n_items(v.native())) |
| 41 | +} |
| 42 | + |
| 43 | +// GetItemLink is a wrapper around g_menu_model_get_item_link(). |
| 44 | +func (v *MenuModel) GetItemLink(index int, link string) *MenuModel { |
| 45 | + cstr := (*C.gchar)(C.CString(link)) |
| 46 | + defer C.free(unsafe.Pointer(cstr)) |
| 47 | + c := C.g_menu_model_get_item_link(v.native(), C.gint(index), cstr) |
| 48 | + if c == nil { |
| 49 | + return nil |
| 50 | + } |
| 51 | + return wrapMenuModel(wrapObject(unsafe.Pointer(c))) |
| 52 | +} |
| 53 | + |
| 54 | +// ItemsChanged is a wrapper around g_menu_model_items_changed(). |
| 55 | +func (v *MenuModel) ItemsChanged(position, removed, added int) { |
| 56 | + C.g_menu_model_items_changed(v.native(), C.gint(position), C.gint(removed), C.gint(added)) |
| 57 | +} |
| 58 | + |
| 59 | +// GVariant * g_menu_model_get_item_attribute_value () |
| 60 | +// gboolean g_menu_model_get_item_attribute () |
| 61 | +// GMenuAttributeIter * g_menu_model_iterate_item_attributes () |
| 62 | +// GMenuLinkIter * g_menu_model_iterate_item_links () |
| 63 | + |
| 64 | +// Menu is a representation of GMenu. |
| 65 | +type Menu struct { |
| 66 | + MenuModel |
| 67 | +} |
| 68 | + |
| 69 | +// native() returns a pointer to the underlying GMenu. |
| 70 | +func (m *Menu) native() *C.GMenu { |
| 71 | + if m == nil || m.GObject == nil { |
| 72 | + return nil |
| 73 | + } |
| 74 | + p := unsafe.Pointer(m.GObject) |
| 75 | + return C.toGMenu(p) |
| 76 | +} |
| 77 | + |
| 78 | +func marshalMenu(p uintptr) (interface{}, error) { |
| 79 | + c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p))) |
| 80 | + return wrapMenu(wrapObject(unsafe.Pointer(c))), nil |
| 81 | +} |
| 82 | + |
| 83 | +func wrapMenu(obj *Object) *Menu { |
| 84 | + return &Menu{MenuModel{obj}} |
| 85 | +} |
| 86 | + |
| 87 | +// MenuNew is a wrapper around g_menu_new(). |
| 88 | +func MenuNew() *Menu { |
| 89 | + c := C.g_menu_new() |
| 90 | + if c == nil { |
| 91 | + return nil |
| 92 | + } |
| 93 | + return wrapMenu(wrapObject(unsafe.Pointer(c))) |
| 94 | +} |
| 95 | + |
| 96 | +// Freeze is a wrapper around g_menu_freeze(). |
| 97 | +func (v *Menu) Freeze() { |
| 98 | + C.g_menu_freeze(v.native()) |
| 99 | +} |
| 100 | + |
| 101 | +// Insert is a wrapper around g_menu_insert(). |
| 102 | +func (v *Menu) Insert(position int, label, detailed_action string) { |
| 103 | + cstr1 := (*C.gchar)(C.CString(label)) |
| 104 | + defer C.free(unsafe.Pointer(cstr1)) |
| 105 | + |
| 106 | + cstr2 := (*C.gchar)(C.CString(detailed_action)) |
| 107 | + defer C.free(unsafe.Pointer(cstr2)) |
| 108 | + |
| 109 | + C.g_menu_insert(v.native(), C.gint(position), cstr1, cstr2) |
| 110 | +} |
| 111 | + |
| 112 | +// Prepend is a wrapper around g_menu_prepend(). |
| 113 | +func (v *Menu) Prepend(label, detailed_action string) { |
| 114 | + cstr1 := (*C.gchar)(C.CString(label)) |
| 115 | + defer C.free(unsafe.Pointer(cstr1)) |
| 116 | + |
| 117 | + cstr2 := (*C.gchar)(C.CString(detailed_action)) |
| 118 | + defer C.free(unsafe.Pointer(cstr2)) |
| 119 | + |
| 120 | + C.g_menu_prepend(v.native(), cstr1, cstr2) |
| 121 | +} |
| 122 | + |
| 123 | +// Append is a wrapper around g_menu_append(). |
| 124 | +func (v *Menu) Append(label, detailed_action string) { |
| 125 | + cstr1 := (*C.gchar)(C.CString(label)) |
| 126 | + defer C.free(unsafe.Pointer(cstr1)) |
| 127 | + |
| 128 | + cstr2 := (*C.gchar)(C.CString(detailed_action)) |
| 129 | + defer C.free(unsafe.Pointer(cstr2)) |
| 130 | + |
| 131 | + C.g_menu_append(v.native(), cstr1, cstr2) |
| 132 | +} |
| 133 | + |
| 134 | +// InsertItem is a wrapper around g_menu_insert_item(). |
| 135 | +func (v *Menu) InsertItem(position int, item *MenuItem) { |
| 136 | + C.g_menu_insert_item(v.native(), C.gint(position), item.native()) |
| 137 | +} |
| 138 | + |
| 139 | +// AppendItem is a wrapper around g_menu_append_item(). |
| 140 | +func (v *Menu) AppendItem(item *MenuItem) { |
| 141 | + C.g_menu_append_item(v.native(), item.native()) |
| 142 | +} |
| 143 | + |
| 144 | +// PrependItem is a wrapper around g_menu_prepend_item(). |
| 145 | +func (v *Menu) PrependItem(item *MenuItem) { |
| 146 | + C.g_menu_prepend_item(v.native(), item.native()) |
| 147 | +} |
| 148 | + |
| 149 | +// InsertSection is a wrapper around g_menu_insert_section(). |
| 150 | +func (v *Menu) InsertSection(position int, label string, section *MenuModel) { |
| 151 | + cstr1 := (*C.gchar)(C.CString(label)) |
| 152 | + defer C.free(unsafe.Pointer(cstr1)) |
| 153 | + |
| 154 | + C.g_menu_insert_section(v.native(), C.gint(position), cstr1, section.native()) |
| 155 | +} |
| 156 | + |
| 157 | +// PrependSection is a wrapper around g_menu_prepend_section(). |
| 158 | +func (v *Menu) PrependSection(label string, section *MenuModel) { |
| 159 | + cstr1 := (*C.gchar)(C.CString(label)) |
| 160 | + defer C.free(unsafe.Pointer(cstr1)) |
| 161 | + |
| 162 | + C.g_menu_prepend_section(v.native(), cstr1, section.native()) |
| 163 | +} |
| 164 | + |
| 165 | +// AppendSection is a wrapper around g_menu_append_section(). |
| 166 | +func (v *Menu) AppendSection(label string, section *MenuModel) { |
| 167 | + cstr1 := (*C.gchar)(C.CString(label)) |
| 168 | + defer C.free(unsafe.Pointer(cstr1)) |
| 169 | + |
| 170 | + C.g_menu_append_section(v.native(), cstr1, section.native()) |
| 171 | +} |
| 172 | + |
| 173 | +// InsertSubmenu is a wrapper around g_menu_insert_submenu(). |
| 174 | +func (v *Menu) InsertSubmenu(position int, label string, submenu *MenuModel) { |
| 175 | + cstr1 := (*C.gchar)(C.CString(label)) |
| 176 | + defer C.free(unsafe.Pointer(cstr1)) |
| 177 | + |
| 178 | + C.g_menu_insert_submenu(v.native(), C.gint(position), cstr1, submenu.native()) |
| 179 | +} |
| 180 | + |
| 181 | +// PrependSubmenu is a wrapper around g_menu_prepend_submenu(). |
| 182 | +func (v *Menu) PrependSubmenu(label string, submenu *MenuModel) { |
| 183 | + cstr1 := (*C.gchar)(C.CString(label)) |
| 184 | + defer C.free(unsafe.Pointer(cstr1)) |
| 185 | + |
| 186 | + C.g_menu_prepend_submenu(v.native(), cstr1, submenu.native()) |
| 187 | +} |
| 188 | + |
| 189 | +// AppendSubmenu is a wrapper around g_menu_append_submenu(). |
| 190 | +func (v *Menu) AppendSubmenu(label string, submenu *MenuModel) { |
| 191 | + cstr1 := (*C.gchar)(C.CString(label)) |
| 192 | + defer C.free(unsafe.Pointer(cstr1)) |
| 193 | + |
| 194 | + C.g_menu_append_submenu(v.native(), cstr1, submenu.native()) |
| 195 | +} |
| 196 | + |
| 197 | +// Remove is a wrapper around g_menu_remove(). |
| 198 | +func (v *Menu) Remove(position int) { |
| 199 | + C.g_menu_remove(v.native(), C.gint(position)) |
| 200 | +} |
| 201 | + |
| 202 | +// RemoveAll is a wrapper around g_menu_remove_all(). |
| 203 | +func (v *Menu) RemoveAll() { |
| 204 | + C.g_menu_remove_all(v.native()) |
| 205 | +} |
| 206 | + |
| 207 | +// MenuItem is a representation of GMenuItem. |
| 208 | +type MenuItem struct { |
| 209 | + *Object |
| 210 | +} |
| 211 | + |
| 212 | +// native() returns a pointer to the underlying GMenuItem. |
| 213 | +func (m *MenuItem) native() *C.GMenuItem { |
| 214 | + if m == nil || m.GObject == nil { |
| 215 | + return nil |
| 216 | + } |
| 217 | + p := unsafe.Pointer(m.GObject) |
| 218 | + return C.toGMenuItem(p) |
| 219 | +} |
| 220 | + |
| 221 | +func marshalMenuItem(p uintptr) (interface{}, error) { |
| 222 | + c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p))) |
| 223 | + return wrapMenuItem(wrapObject(unsafe.Pointer(c))), nil |
| 224 | +} |
| 225 | + |
| 226 | +func wrapMenuItem(obj *Object) *MenuItem { |
| 227 | + return &MenuItem{obj} |
| 228 | +} |
| 229 | + |
| 230 | +// MenuItemNew is a wrapper around g_menu_item_new(). |
| 231 | +func MenuItemNew(label, detailed_action string) *MenuItem { |
| 232 | + cstr1 := (*C.gchar)(C.CString(label)) |
| 233 | + defer C.free(unsafe.Pointer(cstr1)) |
| 234 | + |
| 235 | + cstr2 := (*C.gchar)(C.CString(detailed_action)) |
| 236 | + defer C.free(unsafe.Pointer(cstr2)) |
| 237 | + |
| 238 | + c := C.g_menu_item_new(cstr1, cstr2) |
| 239 | + if c == nil { |
| 240 | + return nil |
| 241 | + } |
| 242 | + return wrapMenuItem(wrapObject(unsafe.Pointer(c))) |
| 243 | +} |
| 244 | + |
| 245 | +// MenuItemNewSection is a wrapper around g_menu_item_new_section(). |
| 246 | +func MenuItemNewSection(label string, section *MenuModel) *MenuItem { |
| 247 | + cstr1 := (*C.gchar)(C.CString(label)) |
| 248 | + defer C.free(unsafe.Pointer(cstr1)) |
| 249 | + |
| 250 | + c := C.g_menu_item_new_section(cstr1, section.native()) |
| 251 | + if c == nil { |
| 252 | + return nil |
| 253 | + } |
| 254 | + return wrapMenuItem(wrapObject(unsafe.Pointer(c))) |
| 255 | +} |
| 256 | + |
| 257 | +// MenuItemNewSubmenu is a wrapper around g_menu_item_new_submenu(). |
| 258 | +func MenuItemNewSubmenu(label string, submenu *MenuModel) *MenuItem { |
| 259 | + cstr1 := (*C.gchar)(C.CString(label)) |
| 260 | + defer C.free(unsafe.Pointer(cstr1)) |
| 261 | + |
| 262 | + c := C.g_menu_item_new_submenu(cstr1, submenu.native()) |
| 263 | + if c == nil { |
| 264 | + return nil |
| 265 | + } |
| 266 | + return wrapMenuItem(wrapObject(unsafe.Pointer(c))) |
| 267 | +} |
| 268 | + |
| 269 | +// MenuItemNewFromModel is a wrapper around g_menu_item_new_from_model(). |
| 270 | +func MenuItemNewFromModel(model *MenuModel, index int) *MenuItem { |
| 271 | + c := C.g_menu_item_new_from_model(model.native(), C.gint(index)) |
| 272 | + if c == nil { |
| 273 | + return nil |
| 274 | + } |
| 275 | + return wrapMenuItem(wrapObject(unsafe.Pointer(c))) |
| 276 | +} |
| 277 | + |
| 278 | +//SetLabel is a wrapper around g_menu_item_set_label(). |
| 279 | +func (v *MenuItem) SetLabel(label string) { |
| 280 | + cstr1 := (*C.gchar)(C.CString(label)) |
| 281 | + defer C.free(unsafe.Pointer(cstr1)) |
| 282 | + |
| 283 | + C.g_menu_item_set_label(v.native(), cstr1) |
| 284 | +} |
| 285 | + |
| 286 | +//SetDetailedAction is a wrapper around g_menu_item_set_detailed_action(). |
| 287 | +func (v *MenuItem) SetDetailedAction(act string) { |
| 288 | + cstr1 := (*C.gchar)(C.CString(act)) |
| 289 | + defer C.free(unsafe.Pointer(cstr1)) |
| 290 | + |
| 291 | + C.g_menu_item_set_detailed_action(v.native(), cstr1) |
| 292 | +} |
| 293 | + |
| 294 | +//SetSection is a wrapper around g_menu_item_set_section(). |
| 295 | +func (v *MenuItem) SetSection(section *MenuModel) { |
| 296 | + C.g_menu_item_set_section(v.native(), section.native()) |
| 297 | +} |
| 298 | + |
| 299 | +//SetSubmenu is a wrapper around g_menu_item_set_submenu(). |
| 300 | +func (v *MenuItem) SetSubmenu(submenu *MenuModel) { |
| 301 | + C.g_menu_item_set_submenu(v.native(), submenu.native()) |
| 302 | +} |
| 303 | + |
| 304 | +//GetLink is a wrapper around g_menu_item_get_link(). |
| 305 | +func (v *MenuItem) GetLink(link string) *MenuModel { |
| 306 | + cstr1 := (*C.gchar)(C.CString(link)) |
| 307 | + defer C.free(unsafe.Pointer(cstr1)) |
| 308 | + |
| 309 | + c := C.g_menu_item_get_link(v.native(), cstr1) |
| 310 | + if c == nil { |
| 311 | + return nil |
| 312 | + } |
| 313 | + return wrapMenuModel(wrapObject(unsafe.Pointer(c))) |
| 314 | +} |
| 315 | + |
| 316 | +//SetLink is a wrapper around g_menu_item_Set_link(). |
| 317 | +func (v *MenuItem) SetLink(link string, model *MenuModel) { |
| 318 | + cstr1 := (*C.gchar)(C.CString(link)) |
| 319 | + defer C.free(unsafe.Pointer(cstr1)) |
| 320 | + |
| 321 | + C.g_menu_item_set_link(v.native(), cstr1, model.native()) |
| 322 | +} |
| 323 | + |
| 324 | +// void g_menu_item_set_action_and_target_value () |
| 325 | +// void g_menu_item_set_action_and_target () |
| 326 | +// GVariant * g_menu_item_get_attribute_value () |
| 327 | +// gboolean g_menu_item_get_attribute () |
| 328 | +// void g_menu_item_set_attribute_value () |
| 329 | +// void g_menu_item_set_attribute () |
0 commit comments